Matrix (плагин)
Matrix — это открытый децентрализованный протокол обмена сообщениями. OpenClaw подключается как пользователь Matrix на любом домашнем сервере (homeserver), поэтому для бота требуется учётная запись Matrix. После входа в систему вы можете писать боту в личные сообщения или приглашать его в комнаты (Matrix «группы»). Beeper также является допустимым клиентом, но требует включения E2EE. Статус: поддерживается через плагин (@vector-im/matrix-bot-sdk). Личные сообщения, комнаты, треды, медиа, реакции, опросы (отправка + poll-start как текст), геолокация и E2EE (с криптоподдержкой).Требуется плагин
Matrix поставляется как плагин и не входит в базовую установку. Установка через CLI (реестр npm):Настройка
-
Установите плагин Matrix:
- Из npm:
openclaw plugins install @openclaw/matrix - Из локального checkout:
openclaw plugins install ./extensions/matrix
- Из npm:
-
Создайте учётную запись Matrix на homeserver:
- Посмотрите варианты хостинга на https://matrix.org/ecosystem/hosting/
- Или разверните свой собственный.
-
Получите access token для учётной записи бота:
- Используйте API входа Matrix с
curlна вашем домашнем сервере:
- Замените
matrix.example.orgна URL вашего homeserver. - Либо задайте
channels.matrix.userId+channels.matrix.password: OpenClaw вызывает тот же эндпоинт входа, сохраняет access token в~/.openclaw/credentials/matrix/credentials.json, и повторно использует его при следующем запуске.
- Используйте API входа Matrix с
-
Настройте учётные данные:
- Env:
MATRIX_HOMESERVER,MATRIX_ACCESS_TOKEN(илиMATRIX_USER_ID+MATRIX_PASSWORD) - Или в конфиге:
channels.matrix.* - Если заданы оба варианта, приоритет у конфига.
- При использовании access token идентификатор пользователя извлекается автоматически через
/whoami. - Если задано,
channels.matrix.userIdдолжен быть полным Matrix ID (пример:@bot:example.org).
- Env:
- Перезапустите Gateway (шлюз) (или завершите онбординг).
-
Начните личный диалог с ботом или пригласите его в комнату из любого клиента Matrix
(Element, Beeper и т. п.; см. https://matrix.org/ecosystem/clients/). Beeper требует E2EE,
поэтому установите
channels.matrix.encryption: trueи подтвердите устройство.
Шифрование (E2EE)
Сквозное шифрование поддерживается через Rust crypto SDK. Включается с помощьюchannels.matrix.encryption: true:
- Если криптомодуль загружается, зашифрованные комнаты автоматически расшифровываются.
- Исходящие медиа шифруются при отправке в зашифрованные комнаты.
- При первом подключении OpenClaw запрашивает подтверждение устройства у ваших других сессий.
- Подтвердите устройство в другом клиенте Matrix (Element и т. п.) для включения обмена ключами.
- Если криптомодуль не удаётся загрузить, E2EE отключается, а зашифрованные комнаты не будут расшифровываться; OpenClaw записывает предупреждение в лог.
- Если вы видите ошибки отсутствия криптомодуля (например,
@matrix-org/matrix-sdk-crypto-nodejs-*), разрешите скрипты сборки для@matrix-org/matrix-sdk-crypto-nodejsи выполнитеpnpm rebuild @matrix-org/matrix-sdk-crypto-nodejsлибо загрузите бинарник с помощьюnode node_modules/@matrix-org/matrix-sdk-crypto-nodejs/download-lib.js.
~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/crypto/
(база данных SQLite). Состояние синхронизации находится рядом в bot-storage.json.
Если access token (устройство) меняется, создаётся новое хранилище, и бота необходимо
повторно подтвердить для зашифрованных комнат.
Подтверждение устройства:
Когда E2EE включено, бот при запуске запрашивает подтверждение у ваших других сессий.
Откройте Element (или другой клиент) и одобрите запрос подтверждения, чтобы установить доверие.
После подтверждения бот сможет расшифровывать сообщения в зашифрованных комнатах.
Мультиаккаунтность
Поддержка нескольких аккаунтов: используйтеchannels.matrix.accounts с учётными данными для каждого аккаунта и необязательным name. См. gateway/configuration для общего шаблона.
Каждый аккаунт запускается как отдельный пользователь Matrix на любом homeserver. Конфигурация на уровне аккаунта
наследуется от настроек верхнего уровня channels.matrix и может переопределять любые параметры
(политика DM, группы, шифрование и т. д.).
- Запуск аккаунтов выполняется последовательно, чтобы избежать состояний гонки при одновременном импорте модулей.
- Env variables (
MATRIX_HOMESERVER,MATRIX_ACCESS_TOKEN, etc.) применяются только к аккаунту по умолчанию. - Базовые настройки канала (политика DM, политика групп, ограничение по упоминаниям и т. д.) применяются ко всем аккаунтам, если не переопределены для конкретного аккаунта.
- Используйте
bindings[].match.accountId, чтобы направить каждый аккаунт к разному агенту. - Состояние криптографии хранится отдельно для каждого аккаунта + access token (отдельные хранилища ключей для каждого аккаунта).
Модель маршрутизации
- Ответы всегда возвращаются в Matrix.
- Личные сообщения используют основной сеанс агента; комнаты сопоставляются с групповыми сеансами.
Контроль доступа (личные сообщения)
- По умолчанию:
channels.matrix.dm.policy = "pairing". Неизвестные отправители получают код сопряжения. - Подтверждение через:
openclaw pairing list matrixopenclaw pairing approve matrix <CODE>
- Публичные личные сообщения:
channels.matrix.dm.policy="open"плюсchannels.matrix.dm.allowFrom=["*"]. channels.matrix.dm.allowFromпринимает полные Matrix user ID (пример:@user:server). Мастер настройки разрешает отображаемые имена в user ID, когда поиск в каталоге находит единственное точное совпадение.- Не используйте отображаемые имена или только локальную часть (пример:
"Alice"или"alice"). Они неоднозначны и игнорируются при сопоставлении со списком разрешённых. Используйте полные идентификаторы вида@user:server.
Комнаты (группы)
- По умолчанию:
channels.matrix.groupPolicy = "allowlist"(ограничение по упоминанию). Используйтеchannels.defaults.groupPolicy, чтобы переопределить значение по умолчанию, если оно не задано. - Разрешите комнаты через список разрешённых с помощью
channels.matrix.groups(ID комнат или алиасы; имена разрешаются в ID, когда поиск в каталоге находит единственное точное совпадение):
requireMention: falseвключает автоответ в этой комнате.groups."*"позволяет задать значения по умолчанию для ограничений по упоминаниям в комнатах.groupAllowFromограничивает, какие отправители могут триггерить бота в комнатах (полные Matrix user ID).- Списки разрешённых
usersна уровне комнаты могут дополнительно ограничивать отправителей внутри конкретной комнаты (используйте полные Matrix user ID). - Мастер настройки запрашивает allowlist комнат (ID, алиасы или имена) и разрешает имена только при точном уникальном совпадении.
- При запуске OpenClaw разрешает имена комнат/пользователей в списках разрешённых в ID и логирует соответствие; неразрешённые записи игнорируются при сопоставлении allowlist.
- Приглашения по умолчанию принимаются автоматически; управление через
channels.matrix.autoJoinиchannels.matrix.autoJoinAllowlist. - Чтобы запретить все комнаты, установите
channels.matrix.groupPolicy: "disabled"(или оставьте allowlist пустым). - Устаревший ключ:
channels.matrix.rooms(та же форма, что иgroups).
Потоки
- Поддерживаются ответы в тредах.
channels.matrix.threadRepliesуправляет тем, остаются ли ответы в тредах:off,inbound(по умолчанию),always
channels.matrix.replyToModeуправляет метаданными «reply-to», когда ответ не в треде:off(по умолчанию),first,all
Возможности
| Функция | Статус |
|---|---|
| Прямые сообщения | ✅ Поддерживается |
| Комнаты | ✅ Поддерживается |
| Потоки | ✅ Поддерживается |
| Медиа | ✅ Поддерживается |
| E2EE | ✅ Поддерживается (требуется криптомодуль) |
| Реакции | ✅ Поддерживается (отправка/чтение через инструменты) |
| Опросы | ✅ Поддерживается отправка; входящие старты опросов преобразуются в текст (ответы/завершения игнорируются) |
| Геолокация | ✅ Поддерживается (geo URI; высота игнорируется) |
| Родные команды | ✅ Поддерживается |
Устранение неполадок
Сначала запустите лестницу:- Вход выполнен, но сообщения в комнатах игнорируются: комната заблокирована
groupPolicyили списком разрешённых комнат. - Личные сообщения игнорируются: отправитель ожидает подтверждения при
channels.matrix.dm.policy="pairing". - Сбой в зашифрованных комнатах: отсутствует криптоподдержка или несоответствие настроек шифрования.
Справочник конфигурации (Matrix)
Полная конфигурация: Configuration Параметры провайдера:channels.matrix.enabled: включение/отключение запуска канала.channels.matrix.homeserver: URL homeserver.channels.matrix.userId: Matrix user ID (необязательно при наличии access token).channels.matrix.accessToken: access token.channels.matrix.password: пароль для входа (токен сохраняется).channels.matrix.deviceName: отображаемое имя устройства.channels.matrix.encryption: включение E2EE (по умолчанию: false).channels.matrix.initialSyncLimit: лимит начальной синхронизации.channels.matrix.threadReplies:off | inbound | always(по умолчанию: inbound).channels.matrix.textChunkLimit: размер чанка исходящего текста (символы).channels.matrix.chunkMode:length(по умолчанию) илиnewlineдля разбиения по пустым строкам (границы абзацев) перед разбиением по длине.channels.matrix.dm.policy:pairing | allowlist | open | disabled(по умолчанию: pairing).channels.matrix.dm.allowFrom: allowlist личных сообщений (полные Matrix user ID).openтребует"*". Мастер настройки разрешает имена в ID, когда это возможно.channels.matrix.groupPolicy:allowlist | open | disabled(по умолчанию: allowlist).channels.matrix.groupAllowFrom: разрешённые отправители для групповых сообщений (полные Matrix user ID).channels.matrix.allowlistOnly: принудительное применение правил allowlist для личных сообщений и комнат.channels.matrix.groups: allowlist групп + карта настроек по комнатам.channels.matrix.rooms: устаревший allowlist/конфиг групп.channels.matrix.replyToMode: режим «reply-to» для тредов/тегов.channels.matrix.mediaMaxMb: лимит медиа на вход/выход (МБ).channels.matrix.autoJoin: обработка приглашений (always | allowlist | off, по умолчанию: always).channels.matrix.autoJoinAllowlist: разрешённые ID/алиасы комнат для авто-вступления.channels.matrix.accounts: конфигурация мультиаккаунтности с ключами по ID аккаунта (каждый аккаунт наследует настройки верхнего уровня).channels.matrix.actions: ограничение инструментов по действиям (reactions/messages/pins/memberInfo/channelInfo).