@openclaw/matrix), созданный на основе официального matrix-js-sdk. Он поддерживает личные сообщения, комнаты, ветки, медиафайлы, реакции, опросы, геолокацию и сквозное шифрование.
Установка
openclaw plugins install clawhub:@openclaw/matrix или npm:@openclaw/matrix. Из локальной рабочей копии: openclaw plugins install ./path/to/local/matrix-plugin.
plugins install регистрирует и включает плагин; отдельный шаг enable не требуется. Канал всё равно не будет работать, пока не будет настроен, как описано ниже. Общие правила установки см. в разделе Плагины.
Настройка
- Создайте учётную запись Matrix на своём домашнем сервере.
- Настройте
channels.matrixс помощьюhomeserver+accessTokenилиhomeserver+userId+password. - Перезапустите Gateway.
- Начните переписку с ботом в личных сообщениях или пригласите его в комнату. Новые приглашения принимаются, только если это разрешено параметром
autoJoin.
Интерактивная настройка
MATRIX_* уже существуют, а для учётной записи не сохранены данные аутентификации, мастер предлагает использовать переменные среды. Перед сохранением списка разрешённых значений разрешите имена комнат с помощью openclaw channels resolve --channel matrix "Project Room". При включении сквозного шифрования мастер выполняет ту же начальную настройку, что и openclaw matrix encryption setup.
Минимальная конфигурация
На основе токена:Автоматическое присоединение
Значениеchannels.matrix.autoJoin по умолчанию — "off": бот не появится в новых комнатах или личных переписках по новым приглашениям, пока вы не присоединитесь вручную. В момент приглашения OpenClaw не может определить, является ли оно приглашением в личную переписку или группу, поэтому каждое приглашение сначала обрабатывается параметром autoJoin; параметр dm.policy применяется только позднее, после присоединения бота и определения типа комнаты.
Форматы целей списка разрешённых значений
- Личные сообщения (
dm.allowFrom,groupAllowFrom,groups.<room>.users): используйте@user:server. По умолчанию отображаемые имена игнорируются, поскольку они изменяемы; задавайтеdangerouslyAllowNameMatching: trueтолько для явной совместимости с отображаемыми именами. - Ключи списка разрешённых комнат (
groups, устаревший псевдонимrooms): используйте!room:serverили#alias:server. Простые имена игнорируются, если не заданоdangerouslyAllowNameMatching: true. - Списки разрешённых приглашений (
autoJoinAllowlist): используйте!room:server,#alias:serverили*. Простые имена отклоняются всегда.
Нормализация идентификатора учётной записи
Мастер преобразует удобочитаемое имя в нормализованный идентификатор учётной записи (Ops Bot -> ops-bot). В именах переменных среды с областью действия знаки пунктуации экранируются шестнадцатеричными кодами, чтобы исключить коллизии учётных записей: - (0x2D) преобразуется в _X2D_, поэтому ops-prod соответствует префиксу переменных среды MATRIX_OPS_X2D_PROD_.
Кэшированные учётные данные
Matrix кэширует учётные данные в~/.openclaw/credentials/matrix/: credentials.json для учётной записи по умолчанию и credentials-<account>.json для именованных учётных записей. При наличии кэшированных учётных данных OpenClaw считает Matrix настроенным даже без accessToken в файле конфигурации — это относится к настройке, openclaw doctor и проверкам состояния канала.
Переменные среды
Переменные среды, соответствующие ключам конфигурации, используются, если эквивалентный ключ конфигурации не задан. Для учётной записи по умолчанию используются имена без префикса; для именованных учётных записей перед суффиксом вставляется токен учётной записи (см. нормализацию).
Для учётной записи
ops имена принимают вид MATRIX_OPS_HOMESERVER, MATRIX_OPS_ACCESS_TOKEN и т. д. MATRIX_HOMESERVER (и любой вариант *_HOMESERVER с областью действия) нельзя задать из файла .env рабочей области; см. раздел Файлы .env рабочей области.
Ключ восстановления не является переменной среды, соответствующей конфигурации: OpenClaw никогда не считывает его непосредственно из среды. В подсказке CLI предлагается передать его через конвейер из переменной оболочки с именем
MATRIX_RECOVERY_KEY для учётной записи по умолчанию или MATRIX_RECOVERY_KEY_<ID> (обычный идентификатор учётной записи в верхнем регистре без шестнадцатеричного экранирования) для именованной учётной записи — см. раздел Проверка этого устройства с помощью ключа восстановления.Пример конфигурации
Практичная базовая конфигурация с сопряжением личных сообщений, списком разрешённых комнат и сквозным шифрованием:Потоковые предпросмотры
Потоковая передача ответов в Matrix включается явно.streaming.mode определяет, как OpenClaw доставляет формируемый ответ ассистента; streaming.block.enabled определяет, сохраняется ли каждый завершённый блок как отдельное сообщение Matrix.
{ mode, chunkMode, block, preview, progress }:
progress.label: пользовательская метка;"auto"/не задано — выбрать настроенную или встроенную метку;false— скрыть её.progress.labels: варианты, используемые только тогда, когдаlabelимеет значение"auto"или не задано.progress.maxLines: максимальное число прокручиваемых строк хода выполнения, сохраняемых в черновике; более старые строки сверх этого числа удаляются.progress.maxLineChars: максимальное число символов в компактной строке хода выполнения до усечения.progress.toolProgress: при значенииtrue(по умолчанию) текущая работа инструментов и ход выполнения отображаются в черновике.
streaming.block.enabled (по умолчанию false) не зависит от streaming.mode:
Примечания:
- Если предпросмотр превышает ограничение Matrix на размер одного события, OpenClaw прекращает потоковую передачу предпросмотра и переходит к отправке только окончательного результата.
- В ответах с медиафайлами вложения всегда отправляются обычным способом; если устаревший предпросмотр нельзя безопасно использовать повторно, OpenClaw удаляет его перед отправкой окончательного ответа с медиафайлом.
- При активной потоковой передаче предпросмотра обновления хода выполнения инструментов включены по умолчанию. Задайте
streaming.preview.toolProgress: false, чтобы сохранить редактирование предпросмотра для текста ответа, но оставить ход выполнения инструментов в обычном канале доставки. - Редактирование предпросмотра требует дополнительных вызовов API Matrix. Оставьте
streaming.mode: "off"для наиболее консервативного профиля ограничений частоты запросов. - Устаревшие скалярные и логические значения
streaming, а также плоские ключиblockStreaming/chunkModeпреобразуются в эту вложенную структуру командойopenclaw doctor --fix.
Голосовые сообщения
Входящие голосовые сообщения Matrix расшифровываются до проверки упоминания в комнате, поэтому голосовое сообщение с именем бота может активировать агента в комнатеrequireMention: true, а агент получает расшифровку вместо одного лишь заполнителя аудиовложения.
Matrix использует общий поставщик обработки аудиофайлов в tools.media.audio, например OpenAI gpt-4o-mini-transcribe. Настройку поставщика и ограничения см. в разделе Обзор инструментов для работы с медиафайлами.
- События
m.audioи событияm.fileс MIME-типомaudio/*подходят для обработки. - В зашифрованных комнатах OpenClaw расшифровывает вложение через существующий путь обработки медиафайлов Matrix перед транскрибированием.
- В промпте агента транскрипция помечается как созданная машиной и недоверенная.
- Вложение помечается как уже транскрибированное, чтобы последующие инструменты обработки медиафайлов не транскрибировали его повторно.
- Установите
tools.media.audio.enabled: false, чтобы глобально отключить транскрибирование аудио.
Метаданные подтверждений
Нативные запросы подтверждения Matrix представляют собой обычные событияm.room.message со специфичным для OpenClaw содержимым в ключе com.openclaw.approval. Стандартные клиенты по-прежнему отображают текстовое тело; клиенты с поддержкой OpenClaw могут считывать структурированные идентификатор, тип и состояние подтверждения, варианты решения, а также сведения о выполнении и плагине.
Если запрос слишком длинный для одного события Matrix, OpenClaw разбивает видимый текст на части и добавляет com.openclaw.approval только к первой части. Реакции разрешения и отклонения привязываются к этому первому событию, поэтому для длинных запросов сохраняется та же цель подтверждения, что и для запросов из одного события.
Правила push-уведомлений для тихих финализированных предпросмотров при самостоятельном размещении
streaming.mode: "quiet" уведомляет получателей только после финализации блока или хода — правило push-уведомлений для каждого пользователя должно соответствовать маркеру финализированного предпросмотра. Полную настройку см. в разделе Правила push-уведомлений Matrix для тихих предпросмотров.
Комнаты для взаимодействия ботов
По умолчанию сообщения Matrix от других настроенных учётных записей OpenClaw Matrix игнорируются. ИспользуйтеallowBots, чтобы намеренно разрешить обмен данными между агентами:
allowBots: trueпринимает сообщения от других настроенных учётных записей ботов Matrix в разрешённых комнатах и личных сообщениях.allowBots: "mentions"принимает такие сообщения в комнатах, только если в них явно упоминается этот бот; личные сообщения разрешены в любом случае.groups.<room>.allowBotsпереопределяет настройку уровня учётной записи для одной комнаты.- Принятые сообщения от настроенных ботов используют общую защиту от циклов ботов. Настройте
channels.defaults.botLoopProtection, а затем переопределите значение для отдельной учётной записи с помощьюchannels.matrix.botLoopProtectionили для отдельной комнаты с помощьюchannels.matrix.groups.<room>.botLoopProtection. - OpenClaw по-прежнему игнорирует сообщения от того же идентификатора пользователя Matrix, чтобы избежать циклов ответов самому себе.
- В Matrix нет нативного признака бота; OpenClaw считает сообщение «созданным ботом», если оно отправлено другой настроенной учётной записью Matrix на этом Gateway OpenClaw.
Шифрование и верификация
В зашифрованных комнатах (E2EE) исходящие события с изображениями используютthumbnail_file, поэтому предпросмотры изображений шифруются вместе с полным вложением; в незашифрованных комнатах используется обычный thumbnail_url. Настройка не требуется — плагин автоматически определяет состояние E2EE.
Все команды openclaw matrix поддерживают --verbose (полная диагностика), --json (машиночитаемый вывод) и --account <id> (конфигурации с несколькими учётными записями). По умолчанию вывод краткий.
Включение шифрования
--recovery-key-stdinсчитывает ключ восстановления из стандартного ввода, не раскрывая его в аргументах процесса;--recovery-key <key>остаётся доступным для совместимости--force-reset-cross-signingудаляет текущую идентичность перекрёстной подписи и создаёт новую (только для намеренного использования)
--encryption — псевдоним для --enable-e2ee. Эквивалентная ручная конфигурация:
Состояние и сигналы доверия
verify status сообщает о трёх независимых сигналах доверия (--verbose показывает их все):
Locally trusted: доверие установлено только этим клиентомCross-signing verified: SDK сообщает о верификации посредством перекрёстной подписиSigned by owner: подписано собственным ключом самоподписи пользователя (только для диагностики)
Verified by owner имеет значение yes, только когда Cross-signing verified имеет значение yes; одного локального доверия или подписи владельца недостаточно.
--allow-degraded-local-state возвращает диагностические данные по мере возможности, не подготавливая предварительно учётную запись Matrix; это полезно для автономных или частично настроенных проверок.
Верификация этого устройства с помощью ключа восстановления
Передавайте ключ восстановления через стандартный ввод, а не в командной строке:Recovery key accepted: Matrix принял ключ для хранилища секретов или установления доверия к устройству.Backup usable: резервную копию ключей комнат можно загрузить с использованием доверенного материала восстановления.Device verified by owner: это устройство пользуется полным доверием идентичности перекрёстной подписи Matrix.
verify self перед успешным завершением ожидает Cross-signing verified: yes. Используйте --timeout-ms <ms>, чтобы настроить время ожидания.
Форма с ключом в явном виде openclaw matrix verify device "<recovery-key>" также работает, но ключ сохраняется в истории оболочки.
Инициализация или восстановление перекрёстной подписи
- инициализирует хранилище секретов, по возможности повторно используя существующий ключ восстановления
- инициализирует перекрёстную подпись и отправляет отсутствующие открытые ключи
- помечает и подписывает перекрёстной подписью текущее устройство
- создаёт серверную резервную копию ключей комнат, если она ещё не существует
m.login.dummy, а затем с m.login.password (требуется channels.matrix.password).
Полезные флаги:
--recovery-key-stdin(используйте вместе сprintf '%s\n' "$MATRIX_RECOVERY_KEY" | ...) или--recovery-key <key>--force-reset-cross-signingдля удаления текущей идентичности перекрёстной подписи (только намеренно; требуется активный ключ восстановления, сохранённый или переданный с помощью--recovery-key-stdin)
Резервная копия ключей комнат
backup status показывает, существует ли серверная резервная копия и может ли это устройство её расшифровать. backup restore импортирует сохранённые в резервной копии ключи комнат в локальное криптографическое хранилище; опустите --recovery-key-stdin, если ключ восстановления уже сохранён на диске.
Чтобы заменить повреждённую резервную копию новой базовой версией (с согласием на потерю невосстановимой старой истории; при невозможности загрузить текущий секрет резервной копии также может быть заново создано хранилище секретов):
--rotate-recovery-key, только если предыдущий ключ восстановления должен намеренно перестать разблокировать новую базовую резервную копию.
Просмотр, отправка и обработка запросов верификации
--own-user запрашивает самоверификацию (примите запрос в другом клиенте Matrix того же пользователя); --user-id/--device-id/--room-id предназначены для другого пользователя. --own-user нельзя сочетать с другими флагами выбора цели.
Для низкоуровневого управления жизненным циклом — обычно при отслеживании входящих запросов из другого клиента — следующие команды применяются к конкретному запросу <id> (выводится командами verify list и verify request):
accept, start, sas, confirm-sas, mismatch-sas и cancel поддерживают --user-id и --room-id как подсказки для последующих действий в личных сообщениях, когда верификация привязана к определённой комнате личных сообщений.
Примечания о нескольких учётных записях
Без--account <id> команды CLI Matrix используют неявную учётную запись по умолчанию. Если настроено несколько именованных учётных записей и параметр channels.matrix.defaultAccount не указан, команды не пытаются угадать выбор и предлагают выбрать учётную запись. Если E2EE отключено или недоступно для именованной учётной записи, ошибка указывает на ключ конфигурации этой учётной записи, например channels.matrix.accounts.assistant.encryption.
Поведение при запуске
Поведение при запуске
При
encryption: true значение startupVerification по умолчанию равно "if-unverified". При запуске неверифицированное устройство запрашивает самоверификацию в другом клиенте Matrix, пропуская дубликаты и применяя период ожидания (по умолчанию 24 часа). Настройте его с помощью startupVerificationCooldownHours или отключите с помощью startupVerification: "off".При запуске также выполняется консервативная инициализация криптографической системы с повторным использованием текущего хранилища секретов и идентичности перекрёстной подписи. Если состояние инициализации нарушено, OpenClaw пытается выполнить контролируемое восстановление даже без channels.matrix.password; если домашний сервер требует UIA с паролем, при запуске записывается предупреждение, но ошибка не становится критической. Устройства, уже подписанные владельцем, сохраняются.Полный процесс обновления см. в разделе Миграция Matrix.Уведомления о верификации
Уведомления о верификации
Matrix публикует уведомления о жизненном цикле верификации в строгой комнате личных сообщений для верификации в виде сообщений
m.notice: запрос, готовность (с указанием “Verify by emoji”), начало и завершение, а также сведения SAS (эмодзи или десятичные числа), если они доступны.Входящие запросы из другого клиента Matrix отслеживаются и принимаются автоматически. Для самоверификации OpenClaw автоматически запускает процесс SAS и подтверждает свою сторону, как только становится доступна верификация по эмодзи — при этом необходимо сравнить значения и подтвердить “They match” в клиенте Matrix.Системные уведомления о верификации не передаются в конвейер чата агента.Удалённое или недействительное устройство Matrix
Удалённое или недействительное устройство Matrix
Если Для аутентификации по токену создайте новый токен доступа в клиенте Matrix или интерфейсе администратора, затем обновите OpenClaw:Замените
verify status сообщает, что текущее устройство больше не числится на домашнем сервере, создайте новое устройство OpenClaw Matrix. Для входа по паролю:assistant на идентификатор учётной записи из завершившейся с ошибкой команды или опустите --account, чтобы использовать учётную запись по умолчанию.Гигиена устройств
Гигиена устройств
Старые устройства, управляемые OpenClaw, могут накапливаться. Просмотрите список и удалите устаревшие:
Хранилище криптографических данных
Хранилище криптографических данных
Сквозное шифрование Matrix использует официальный путь криптографии Rust
matrix-js-sdk с fake-indexeddb в качестве прослойки IndexedDB. Криптографическое состояние сохраняется в crypto-idb-snapshot.json (с ограничительными разрешениями файлов).Зашифрованное состояние среды выполнения находится в ~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/ и включает хранилище синхронизации, хранилище криптографических данных, ключ восстановления, снимок IDB, привязки веток и состояние проверки при запуске. Когда токен изменяется, но идентификатор учётной записи остаётся прежним, OpenClaw повторно использует наиболее подходящий существующий корень, поэтому предыдущее состояние остаётся доступным.Единственный старый корень с хешем токена может быть нормальным путём сохранения непрерывности при ротации токена. Если OpenClaw регистрирует matrix: multiple populated token-hash storage roots detected, проверьте каталог учётной записи и архивируйте устаревшие соседние корни только после подтверждения работоспособности выбранного активного корня. Вместо немедленного удаления устаревших корней предпочтительно переместить их в каталог _archive/.Управление профилем
mxc:// напрямую; передача http:///https:// сначала загружает файл, а затем сохраняет разрешённый URL mxc:// в channels.matrix.avatarUrl (или в переопределение для отдельной учётной записи).
Ветки
Matrix поддерживает собственные ветки как для автоматических ответов, так и для отправки сообщений инструментом сообщений. Поведение контролируют два независимых параметра:Маршрутизация сеансов (sessionScope)
dm.sessionScope определяет, как комнаты личных сообщений Matrix сопоставляются с сеансами OpenClaw:
"per-user"(по умолчанию): все комнаты личных сообщений с одним и тем же маршрутизируемым собеседником используют общий сеанс."per-room": каждая комната личных сообщений Matrix получает собственный ключ сеанса, даже для одного и того же собеседника.
sessionScope; привязанные комнаты и ветки сохраняют выбранный целевой сеанс.
Ответы в ветках (threadReplies)
threadReplies определяет, где бот публикует ответ:
"off": ответы публикуются на верхнем уровне. Входящие сообщения из веток остаются в родительском сеансе."inbound": отвечать внутри ветки, только если входящее сообщение уже находилось в этой ветке."always": отвечать внутри ветки, корнем которой является инициировавшее сообщение; начиная с первого инициирующего сообщения эта беседа маршрутизируется через соответствующий сеанс, ограниченный веткой.
dm.threadReplies переопределяет это только для личных сообщений — например, позволяет изолировать ветки комнат, сохраняя личные сообщения без ветвления.
Наследование веток и команды с косой чертой
- Входящие сообщения из веток включают корневое сообщение ветки как дополнительный контекст агента.
- Отправки инструментом сообщений автоматически наследуют текущую ветку Matrix при нацеливании на ту же комнату (или на того же пользователя личных сообщений), если явно не указан
threadId. - Повторное использование цели-пользователя личных сообщений применяется только тогда, когда метаданные текущего сеанса подтверждают того же собеседника личных сообщений в той же учётной записи Matrix; иначе OpenClaw возвращается к обычной маршрутизации, ограниченной пользователем.
/focus,/unfocus,/agents,/session idle,/session max-ageи привязанный к ветке/acp spawnработают в комнатах и личных сообщениях Matrix.- Верхнеуровневый
/focusсоздаёт новую ветку Matrix и привязывает её к целевому сеансу, если включёнthreadBindings.spawnSessions. - Запуск
/focusили/acp spawn --thread hereвнутри существующей ветки Matrix привязывает эту ветку на месте.
m.notice со ссылкой на обходной путь /focus и предложением изменить dm.sessionScope. Уведомление появляется только при включённых привязках веток.
Привязки бесед ACP
Комнаты, личные сообщения и существующие ветки Matrix могут становиться постоянными рабочими пространствами ACP без изменения интерфейса чата. Быстрый процесс для оператора:- Запустите
/acp spawn codex --bind hereвнутри личных сообщений, комнаты или существующей ветки Matrix, чтобы продолжить использование. - В верхнеуровневых личных сообщениях или комнате текущие личные сообщения или комната остаются интерфейсом чата, а будущие сообщения маршрутизируются в созданный сеанс ACP.
- Внутри существующей ветки
--bind hereпривязывает текущую ветку на месте. /newи/resetсбрасывают тот же привязанный сеанс ACP на месте./acp closeзакрывает сеанс ACP и удаляет привязку.
--bind here не создаёт дочернюю ветку Matrix. threadBindings.spawnSessions управляет доступностью /acp spawn --thread auto|here, где OpenClaw требуется создать или привязать дочернюю ветку.
Конфигурация привязки веток
Matrix наследует глобальные значения по умолчанию изsession.threadBindings и поддерживает переопределения для отдельных каналов:
threadBindings.enabledthreadBindings.idleHoursthreadBindings.maxAgeHoursthreadBindings.spawnSessions: управляет созданием веток как субагентами, так и ACP.threadBindings.spawnSubagentSessions/threadBindings.spawnAcpSessions: более узкие переопределения для создания веток только субагентами или только ACP.threadBindings.defaultSpawnContext
threadBindings.spawnSessions: false, чтобы запретить верхнеуровневым /focus и /acp spawn --thread auto|here создавать или привязывать ветки Matrix. Установите threadBindings.defaultSpawnContext: "isolated", если при создании собственных веток субагентов не следует разветвлять расшифровку родительского сеанса.
Реакции
Matrix поддерживает исходящие реакции, уведомления о входящих реакциях и реакции-подтверждения. Доступность инструментов исходящих реакций управляетсяchannels.matrix.actions.reactions:
reactдобавляет реакцию к событию Matrix.reactionsвыводит текущую сводку реакций для события Matrix.emoji=""удаляет собственные реакции бота на это событие.remove: trueудаляет у бота только указанную реакцию-эмодзи.
reactionNotifications: "own" пересылает добавленные события m.reaction, когда они относятся к сообщениям Matrix, созданным ботом; "off" отключает системные события реакций. Удаления реакций не преобразуются в системные события — Matrix представляет их как редактирования, а не как отдельные удаления m.reaction.
Контекст истории
channels.matrix.historyLimitопределяет, сколько последних сообщений комнаты включается какInboundHistory, когда сообщение комнаты инициирует агента. Резервно используетсяmessages.groupChat.historyLimit; если оба значения не заданы, фактическое значение по умолчанию —0(отключено).- История комнат Matrix ограничена комнатой; личные сообщения продолжают использовать обычную историю сеанса.
- История комнаты содержит только ожидающие сообщения: OpenClaw буферизует сообщения комнаты, которые ещё не инициировали ответ, а затем создаёт снимок этого окна при поступлении упоминания или другого инициирующего события.
- Текущее инициирующее сообщение не включается в
InboundHistory; для этого хода оно остаётся в основном теле входящего сообщения. - Повторные попытки обработки одного и того же события Matrix используют исходный снимок истории, а не смещаются вперёд к более новым сообщениям комнаты.
Видимость контекста
Matrix поддерживает общий параметрcontextVisibility для дополнительного контекста комнаты, такого как полученный текст ответа, корни веток и ожидающая история.
contextVisibility: "all"используется по умолчанию. Дополнительный контекст сохраняется в полученном виде.contextVisibility: "allowlist"фильтрует дополнительный контекст, оставляя отправителей, разрешённых активными проверками списков разрешённых комнат и пользователей.contextVisibility: "allowlist_quote"работает подобноallowlist, но сохраняет одну явно указанную цитату ответа.
groupPolicy, groups, groupAllowFrom и настройками политики личных сообщений.
Политика личных сообщений и комнат
dm.enabled: false:
Восстановление комнаты личных сообщений
Если состояние личных сообщений рассинхронизируется, у OpenClaw могут остаться устаревшие сопоставленияm.direct, указывающие на старые одиночные комнаты вместо активных личных сообщений. Проверьте текущее сопоставление для собеседника:
--account <id> для конфигураций с несколькими учётными записями. Процесс восстановления:
- предпочитает строгие личные сообщения 1:1, уже сопоставленные в
m.direct - резервно использует любые строгие личные сообщения 1:1 с этим пользователем, к которым выполнено текущее подключение
- создаёт новую комнату личных сообщений и перезаписывает
m.direct, если работоспособных личных сообщений не существует
Одобрения выполнения
Matrix может выступать собственным клиентом одобрений. Настройте это вchannels.matrix.execApprovals (или в channels.matrix.accounts.<account>.execApprovals для переопределения отдельной учётной записи):
enabled: доставлять запросы на одобрение через собственные запросы Matrix. Неустановленное значение или"auto"автоматически включает доставку, когда удаётся определить хотя бы одного одобряющего; установитеfalse, чтобы явно отключить её.approvers: идентификаторы пользователей Matrix (@owner:example.org), которым разрешено одобрять запросы выполнения. Резервно используетсяchannels.matrix.dm.allowFrom.target: куда отправлять запросы."dm"(по умолчанию) отправляет их в личные сообщения одобряющих;"channel"отправляет в исходную комнату или личные сообщения;"both"отправляет в оба места.agentFilter/sessionFilter: необязательные списки разрешённых агентов и сеансов, которые инициируют доставку через Matrix.
- Одобрения выполнения используют
execApprovals.approvers, резервно обращаясь кdm.allowFrom. - Одобрения плагинов авторизуются только через
dm.allowFrom.
- ✅ разрешить один раз
- ❌ отклонить
- ♾️ разрешать всегда (если это допускает действующая политика выполнения)
/approve <id> allow-once, /approve <id> allow-always, /approve <id> deny.
Утверждать или отклонять могут только распознанные утверждающие. Доставка запросов на утверждение выполнения в канал включает текст команды — включайте channel или both только в доверенных комнатах.
См. также: Утверждения выполнения.
Слеш-команды
Слеш-команды (/new, /reset, /model, /focus, /unfocus, /agents, /session, /acp, /approve и т. д.) работают непосредственно в личных сообщениях. В комнатах OpenClaw также распознаёт команды с предшествующим упоминанием собственного бота в Matrix, поэтому @bot:server /new запускает обработку команды без специального регулярного выражения для упоминаний — благодаря этому бот реагирует на характерные для комнат сообщения @mention /command, которые отправляют Element и аналогичные клиенты, когда пользователь дополняет имя бота клавишей Tab перед вводом команды.
Правила авторизации продолжают действовать: отправители команд должны соответствовать тем же политикам списка разрешённых пользователей или владельцев для личных сообщений либо комнат, что и отправители обычных сообщений.
Несколько учётных записей
- Значения
channels.matrixверхнего уровня используются как значения по умолчанию для именованных учётных записей, если они не переопределены в учётной записи. - Чтобы ограничить унаследованную запись комнаты определённой учётной записью, используйте
groups.<room>.account. Записи безaccountявляются общими для всех учётных записей;account: "default"продолжает работать, когда учётная запись по умолчанию настроена на верхнем уровне.
- Задайте
defaultAccount, чтобы выбрать именованную учётную запись, которой отдают предпочтение неявная маршрутизация, проверки и команды CLI. - Если имеется несколько учётных записей и одна из них буквально называется
default, OpenClaw неявно использует её, даже еслиdefaultAccountне задан. - Если имеется несколько именованных учётных записей, но учётная запись по умолчанию не выбрана, команды CLI не пытаются её угадать — задайте
defaultAccountили передайте--account <id>. - Блок
channels.matrix.*верхнего уровня считается неявной учётной записьюdefaultтолько при полной настройке аутентификации (homeserver+accessTokenилиhomeserver+userId+password). Именованные учётные записи остаются доступными для обнаружения поhomeserver+userId, если сохранённых учётных данных достаточно для аутентификации.
- Когда OpenClaw во время исправления или настройки преобразует конфигурацию с одной учётной записью в конфигурацию с несколькими, он сохраняет существующую именованную учётную запись, если она имеется или на неё уже указывает
defaultAccount. В преобразованную учётную запись перемещаются только ключи аутентификации и начальной настройки Matrix; общие ключи политики доставки остаются на верхнем уровне.
Частные и локальные домашние серверы
По умолчанию OpenClaw блокирует частные и внутренние домашние серверы Matrix для защиты от SSRF, если они не разрешены отдельно для учётной записи. Если домашний сервер работает на localhost, IP-адресе локальной сети или Tailscale либо внутреннем имени хоста, включитеnetwork.dangerouslyAllowPrivateNetwork для этой учётной записи:
http://matrix.example.org:8008, по-прежнему блокируются. По возможности используйте https://.
Проксирование трафика Matrix
Если развёртыванию Matrix требуется явный исходящий прокси-сервер HTTP(S), задайтеchannels.matrix.proxy:
channels.matrix.accounts.<id>.proxy. OpenClaw использует одну и ту же настройку прокси-сервера для рабочего трафика Matrix и проверок состояния учётной записи.
Разрешение адресатов
Matrix принимает следующие формы адресатов везде, где OpenClaw запрашивает комнату или пользователя:- Пользователи:
@user:server,user:@user:serverилиmatrix:user:@user:server - Комнаты:
!room:server,room:!room:serverилиmatrix:room:!room:server - Псевдонимы:
#alias:server,channel:#alias:serverилиmatrix:channel:#alias:server
- При поиске пользователей запрашивается каталог пользователей Matrix на соответствующем домашнем сервере.
- При поиске комнат явные идентификаторы и псевдонимы комнат принимаются напрямую. Поиск по именам комнат, в которые выполнено присоединение, выполняется по возможности и применяется только к рабочим спискам разрешённых комнат, когда задан
dangerouslyAllowNameMatching: true. - Если имя комнаты невозможно разрешить в идентификатор или псевдоним, оно игнорируется при разрешении рабочего списка разрешённых комнат.
Справочник по конфигурации
Поля пользователей со списками разрешений (groupAllowFrom, dm.allowFrom, groups.<room>.users) принимают полные идентификаторы пользователей Matrix — это самый безопасный вариант. По умолчанию записи, не являющиеся идентификаторами, игнорируются. Если задан dangerouslyAllowNameMatching: true, точные совпадения с отображаемыми именами в каталоге Matrix разрешаются при запуске и при каждом изменении списка разрешений во время работы монитора; неразрешимые записи игнорируются во время выполнения.
Ключами списка разрешённых комнат (groups, устаревший rooms) должны быть идентификаторы или псевдонимы комнат. По умолчанию ключи, содержащие простые имена комнат, игнорируются; dangerouslyAllowNameMatching: true восстанавливает поиск по возможности среди имён комнат, в которые выполнено присоединение.
Учётная запись и подключение
enabled: включение или отключение канала.name: необязательная отображаемая метка учётной записи.defaultAccount: предпочтительный идентификатор учётной записи, когда настроено несколько учётных записей Matrix.accounts: именованные переопределения для отдельных учётных записей. Значенияchannels.matrixверхнего уровня наследуются как значения по умолчанию.homeserver: URL домашнего сервера, напримерhttps://matrix.example.org.network.dangerouslyAllowPrivateNetwork: разрешает этой учётной записи подключаться кlocalhost, IP-адресам локальной сети или Tailscale либо внутренним именам хостов.proxy: необязательный URL прокси-сервера HTTP(S) для трафика Matrix. Поддерживается переопределение для отдельной учётной записи.userId: полный идентификатор пользователя Matrix (@bot:example.org).accessToken: токен доступа для аутентификации по токену. Поддерживаются значения в виде обычного текста и SecretRef от поставщиков переменных окружения, файлов и выполнения команд (управление секретами).password: пароль для входа с аутентификацией по паролю. Поддерживаются значения в виде обычного текста и SecretRef.deviceId: явно заданный идентификатор устройства Matrix.deviceName: отображаемое имя устройства, используемое при входе по паролю.avatarUrl: сохранённый URL собственного аватара для синхронизации профиля и обновленийprofile set.initialSyncLimit: максимальное количество событий, получаемых при синхронизации во время запуска.
Шифрование
encryption: включение E2EE. По умолчанию:false.startupVerification:"if-unverified"(по умолчанию при включённом E2EE) или"off". При запуске автоматически запрашивает самопроверку, если это устройство не проверено.startupVerificationCooldownHours: интервал ожидания перед следующим автоматическим запросом при запуске. По умолчанию:24.
Доступ и политики
groupPolicy:"open","allowlist"или"disabled". По умолчанию:"allowlist".groupAllowFrom: список разрешённых идентификаторов пользователей для трафика комнат.mentionPatterns: ограниченные по области регулярные выражения для упоминаний в комнатах. Объект с{ mode: "allow"|"deny", allowIn: [roomId, ...], denyIn: [roomId, ...] }. Определяет, применяются ли настроенныеagents.list[].groupChat.mentionPatternsотдельно для каждой комнаты.dm.enabled: если установлено значениеfalse, игнорировать все личные сообщения. По умолчанию:true.dm.policy:"pairing"(по умолчанию),"allowlist","open"или"disabled". Применяется после того, как бот присоединился к комнате и классифицировал её как личный диалог; не влияет на обработку приглашений.dm.allowFrom: список разрешённых идентификаторов пользователей для трафика личных сообщений.dm.sessionScope:"per-user"(по умолчанию) или"per-room".dm.threadReplies: переопределение цепочек ответов только для личных сообщений ("off","inbound","always").allowBots: принимать сообщения от других настроенных учётных записей ботов Matrix (trueили"mentions").allowlistOnly: если установлено значениеtrue, принудительно устанавливает для всех активных политик личных сообщений (кроме"disabled") и групповых политик"open"значение"allowlist". Не изменяет политики"disabled".dangerouslyAllowNameMatching: если установлено значениеtrue, разрешает поиск отображаемых имён в каталоге Matrix для записей списка разрешённых пользователей и поиск имён комнат, в которые выполнено присоединение, для ключей списка разрешённых комнат. Предпочтительно использовать полные идентификаторы@user:server, а также идентификаторы или псевдонимы комнат.autoJoin:"always","allowlist"или"off". По умолчанию:"off". Применяется ко всем приглашениям Matrix, включая приглашения в личные диалоги.autoJoinAllowlist: комнаты и псевдонимы, разрешённые, когдаautoJoinимеет значение"allowlist". Записи псевдонимов разрешаются через домашний сервер, а не через состояние, заявленное приглашающей комнатой.contextVisibility: видимость дополнительного контекста ("all"по умолчанию,"allowlist","allowlist_quote").
Поведение ответов
replyToMode:"off"(по умолчанию),"first","all"или"batched".threadReplies:"off"(значение по умолчанию верхнего уровня разрешается в"inbound", если не задано явно),"inbound"или"always".threadBindings: переопределения для отдельных каналов, управляющие маршрутизацией и жизненным циклом сеансов, привязанных к веткам.streaming: вложенный объект{ mode, chunkMode, block: { enabled, coalesce }, preview: { toolProgress }, progress: { label, labels, maxLines, maxLineChars, toolProgress } }.modeпринимает значение"off"(по умолчанию),"partial","quiet"или"progress". Устаревшие скалярные и логические варианты записи мигрируют с помощьюopenclaw doctor --fix.streaming.block.enabled: если задано значениеtrue, завершённые блоки ассистента сохраняются как отдельные сообщения о ходе выполнения. По умолчанию:false.markdown: необязательная конфигурация отображения Markdown для исходящего текста.responsePrefix: необязательная строка, добавляемая в начало исходящих ответов.textChunkLimit: размер исходящего фрагмента в символах при значенииstreaming.chunkMode: "length". По умолчанию:4000.streaming.chunkMode:"length"(по умолчанию, разделение по количеству символов) или"newline"(разделение по границам строк).historyLimit: количество последних сообщений комнаты, включаемых какInboundHistory, когда сообщение в комнате запускает агента. При отсутствии значения используетсяmessages.groupChat.historyLimit; фактическое значение по умолчанию —0(отключено).mediaMaxMb: ограничение размера медиафайлов в МБ для исходящей отправки и обработки входящих данных. По умолчанию:20.
Настройки реакций
ackReaction: переопределение реакции подтверждения для этого канала или аккаунта.ackReactionScope: переопределение области действия ("group-mentions"по умолчанию,"group-all","direct","all","none","off").reactionNotifications: режим уведомлений о входящих реакциях ("own"по умолчанию,"off").
Инструменты и переопределения для отдельных комнат
actions: управление доступом к инструментам для отдельных действий (messages,reactions,pins,profile,memberInfo,channelInfo,verification).groups: карта политик для отдельных комнат. После разрешения для идентификации сеанса используется стабильный идентификатор комнаты. (rooms— устаревший псевдоним.)groups.<room>.account: ограничивает одну унаследованную запись комнаты указанным аккаунтом.groups.<room>.enabled: переключатель для отдельной комнаты. При значенииfalseкомната игнорируется так, как если бы её не было в карте.groups.<room>.requireMention: переопределение требования упоминания на уровне канала для отдельной комнаты.groups.<room>.allowBots: переопределение настройки уровня канала для отдельной комнаты (trueили"mentions").groups.<room>.botLoopProtection: переопределение лимита защиты от циклов взаимодействия между ботами для отдельной комнаты.groups.<room>.users: список разрешённых отправителей для отдельной комнаты.groups.<room>.tools: переопределения разрешений и запретов инструментов для отдельной комнаты.groups.<room>.autoReply: переопределение проверки упоминаний для отдельной комнаты.trueотключает требования упоминания для этой комнаты;falseснова принудительно включает их.groups.<room>.skills: фильтр навыков для отдельной комнаты.groups.<room>.systemPrompt: фрагмент системного запроса для отдельной комнаты.
Настройки подтверждения выполнения
execApprovals.enabled: доставляет запросы на подтверждение выполнения через встроенные запросы Matrix.execApprovals.approvers: идентификаторы пользователей Matrix, которым разрешено подтверждение. При отсутствии значения используетсяdm.allowFrom.execApprovals.target:"dm"(по умолчанию),"channel"или"both".execApprovals.agentFilter/execApprovals.sessionFilter: необязательные списки разрешённых агентов или сеансов для доставки.
Связанные материалы
- Обзор каналов — все поддерживаемые каналы
- Сопряжение — аутентификация в личных сообщениях и процесс сопряжения
- Группы — поведение групповых чатов и проверка упоминаний
- Маршрутизация каналов — маршрутизация сообщений по сеансам
- Безопасность — модель доступа и усиление защиты