Matrix
Matrix — це вбудований плагін каналу Matrix для OpenClaw. Він використовує офіційнийmatrix-js-sdk і підтримує DM, кімнати, треди, медіа, реакції, опитування, геолокацію та E2EE.
Вбудований плагін
Matrix постачається як вбудований плагін у поточних релізах OpenClaw, тому звичайним зібраним пакетам не потрібне окреме встановлення. Якщо ви використовуєте старішу збірку або власне встановлення без Matrix, установіть його вручну: Установлення з npm:Налаштування
- Переконайтеся, що плагін Matrix доступний.
- У поточних пакетних релізах OpenClaw він уже вбудований.
- У старіших/кастомних встановленнях його можна додати вручну наведеними вище командами.
- Створіть обліковий запис Matrix на своєму homeserver.
- Налаштуйте
channels.matrix, використовуючи один із варіантів:homeserver+accessToken, абоhomeserver+userId+password.
- Перезапустіть gateway.
- Почніть DM із ботом або запросіть його до кімнати.
- URL homeserver
- метод автентифікації: токен доступу або пароль
- user ID лише якщо ви вибрали автентифікацію паролем
- необов’язкова назва пристрою
- чи вмикати E2EE
- чи налаштувати доступ до кімнат Matrix зараз
- Якщо для вибраного облікового запису вже існують змінні середовища автентифікації Matrix, і цей обліковий запис ще не має збереженої автентифікації в конфігурації, майстер запропонує скорочений варіант через env і запише для цього облікового запису лише
enabled: true. - Коли ви інтерактивно додаєте ще один обліковий запис Matrix, введена назва облікового запису нормалізується до ID облікового запису, що використовується в конфігурації та env vars. Наприклад,
Ops Botстаєops-bot. - Підказки allowlist для DM одразу приймають повні значення
@user:server. Відображувані імена працюють лише тоді, коли живий пошук у директорії знаходить один точний збіг; інакше майстер попросить повторити спробу з повним Matrix ID. - Підказки allowlist для кімнат напряму приймають ID кімнат і аліаси. Вони також можуть у реальному часі розпізнавати назви приєднаних кімнат, але нерозпізнані назви під час налаштування зберігаються лише як введені та пізніше ігноруються під час виконання allowlist. Надавайте перевагу
!room:serverабо#alias:server. - Ідентичність кімнати/сесії під час виконання використовує стабільний Matrix room ID. Аліаси, оголошені кімнатою, використовуються лише як вхідні дані для пошуку, а не як довгостроковий ключ сесії чи стабільна ідентичність групи.
- Щоб розпізнати назви кімнат перед збереженням, використовуйте
openclaw channels resolve --channel matrix "Project Room".
~/.openclaw/credentials/matrix/.
Обліковий запис за замовчуванням використовує credentials.json; іменовані облікові записи використовують credentials-<account>.json.
Еквіваленти змінних середовища (використовуються, коли ключ конфігурації не задано):
MATRIX_HOMESERVERMATRIX_ACCESS_TOKENMATRIX_USER_IDMATRIX_PASSWORDMATRIX_DEVICE_IDMATRIX_DEVICE_NAME
MATRIX_<ACCOUNT_ID>_HOMESERVERMATRIX_<ACCOUNT_ID>_ACCESS_TOKENMATRIX_<ACCOUNT_ID>_USER_IDMATRIX_<ACCOUNT_ID>_PASSWORDMATRIX_<ACCOUNT_ID>_DEVICE_IDMATRIX_<ACCOUNT_ID>_DEVICE_NAME
ops:
MATRIX_OPS_HOMESERVERMATRIX_OPS_ACCESS_TOKEN
ops-bot використовуйте:
MATRIX_OPS_X2D_BOT_HOMESERVERMATRIX_OPS_X2D_BOT_ACCESS_TOKEN
- стає _X2D_, тому ops-prod перетворюється на MATRIX_OPS_X2D_PROD_*.
Інтерактивний майстер пропонує скорочений варіант через env vars лише тоді, коли ці змінні середовища автентифікації вже присутні, а для вибраного облікового запису ще не збережено автентифікацію Matrix у конфігурації.
Приклад конфігурації
Це практична базова конфігурація з pairing для DM, allowlist кімнат і ввімкненим E2EE:Попередній перегляд потокової відповіді
Потокові відповіді Matrix вмикаються за бажанням. Установітьchannels.matrix.streaming у "partial", якщо хочете, щоб OpenClaw надсилав одну чернетку відповіді,
редагував цю чернетку на місці під час генерування тексту моделлю, а потім завершував її, коли відповідь
буде готова:
streaming: "off"— це значення за замовчуванням. OpenClaw чекає на фінальну відповідь і надсилає її один раз.streaming: "partial"створює одне редаговане повідомлення попереднього перегляду для поточного блоку відповіді помічника замість надсилання кількох часткових повідомлень.blockStreaming: trueвмикає окремі повідомлення прогресу Matrix. Якщоstreaming: "partial", Matrix зберігає живу чернетку для поточного блоку та залишає завершені блоки окремими повідомленнями.- Коли
streaming: "partial"іblockStreamingвимкнено, Matrix лише редагує живу чернетку й надсилає завершену відповідь, коли цей блок або хід завершується. - Якщо попередній перегляд більше не вміщується в одну подію Matrix, OpenClaw припиняє потоковий попередній перегляд і повертається до звичайного фінального доставлення.
- Відповіді з медіа, як і раніше, надсилають вкладення звичайним способом. Якщо застарілий попередній перегляд більше не можна безпечно використати повторно, OpenClaw виконує його redaction перед надсиланням фінальної медіавідповіді.
- Редагування попереднього перегляду створює додаткові виклики Matrix API. Залишайте streaming вимкненим, якщо хочете найобережнішу поведінку щодо обмежень частоти.
blockStreaming сам по собі не вмикає чернетки попереднього перегляду.
Використовуйте streaming: "partial" для редагування попереднього перегляду; потім додайте blockStreaming: true, лише якщо також хочете, щоб завершені блоки помічника залишалися видимими як окремі повідомлення прогресу.
Шифрування та верифікація
У зашифрованих (E2EE) кімнатах вихідні події зображень використовуютьthumbnail_file, тож попередні перегляди зображень шифруються разом із повним вкладенням. Незашифровані кімнати, як і раніше, використовують звичайний thumbnail_url. Жодна конфігурація не потрібна — плагін автоматично визначає стан E2EE.
Кімнати bot-to-bot
За замовчуванням повідомлення Matrix від інших налаштованих облікових записів Matrix OpenClaw ігноруються. ВикористовуйтеallowBots, якщо ви навмисно хочете дозволити міжагентний трафік Matrix:
allowBots: trueприймає повідомлення від інших налаштованих облікових записів ботів Matrix у дозволених кімнатах і DM.allowBots: "mentions"приймає ці повідомлення лише тоді, коли вони явно згадують цього бота в кімнатах. DM усе одно дозволені.groups.<room>.allowBotsперевизначає налаштування рівня облікового запису для однієї кімнати.- OpenClaw все одно ігнорує повідомлення від того самого Matrix user ID, щоб уникнути циклів самовідповіді.
- Matrix тут не надає нативного прапорця бота; OpenClaw трактує “bot-authored” як “надіслане іншим налаштованим обліковим записом Matrix на цьому gateway OpenClaw”.
channels.matrix.accounts з обліковими даними для кожного облікового запису та необов’язковим name. Див. Configuration reference щодо спільного шаблону.
Докладна діагностика bootstrap:
verify за замовчуванням є лаконічними (включно з тихим внутрішнім логуванням SDK) і показують детальну діагностику лише з --verbose.
Для повного машиночитного виводу в сценаріях використовуйте --json.
У конфігураціях із кількома обліковими записами команди Matrix CLI використовують неявний обліковий запис Matrix за замовчуванням, якщо ви не передасте --account <id>.
Якщо ви налаштували кілька іменованих облікових записів, спочатку встановіть channels.matrix.defaultAccount, інакше такі неявні операції CLI зупиняться й попросять вас явно вибрати обліковий запис.
Використовуйте --account, коли хочете, щоб операції верифікації або роботи з пристроями явно націлювалися на іменований обліковий запис:
channels.matrix.accounts.assistant.encryption.
Що означає “verified”
OpenClaw вважає цей пристрій Matrix верифікованим лише тоді, коли його верифікує ваша власна ідентичність cross-signing. На практиціopenclaw matrix verify status --verbose показує три сигнали довіри:
Locally trusted: цьому пристрою довіряє лише поточний клієнтCross-signing verified: SDK повідомляє, що пристрій верифіковано через cross-signingSigned by owner: пристрій підписано вашим власним self-signing key
Verified by owner стає yes лише тоді, коли є верифікація cross-signing або підпис власника.
Самої локальної довіри недостатньо, щоб OpenClaw вважав пристрій повністю верифікованим.
Що робить bootstrap
openclaw matrix verify bootstrap — це команда відновлення та налаштування для зашифрованих облікових записів Matrix.
Вона послідовно виконує все наведене нижче:
- ініціалізує secret storage, повторно використовуючи наявний recovery key, коли це можливо
- ініціалізує cross-signing і завантажує відсутні публічні ключі cross-signing
- намагається позначити й підписати поточний пристрій через cross-signing
- створює нову серверну резервну копію ключів кімнат, якщо її ще не існує
m.login.dummy, а потім із m.login.password, якщо налаштовано channels.matrix.password.
Використовуйте --force-reset-cross-signing лише тоді, коли навмисно хочете відкинути поточну ідентичність cross-signing і створити нову.
Якщо ви навмисно хочете відкинути поточну резервну копію ключів кімнат і почати нову
базову лінію резервного копіювання для майбутніх повідомлень, використовуйте openclaw matrix verify backup reset --yes.
Робіть це лише тоді, коли погоджуєтеся, що невідновлювана стара зашифрована історія залишиться
недоступною і що OpenClaw може відтворити secret storage, якщо поточний секрет резервної копії не вдається безпечно завантажити.
Нова базова резервна копія
Якщо ви хочете зберегти працездатність майбутніх зашифрованих повідомлень і погоджуєтеся на втрату невідновлюваної старої історії, виконайте ці команди в такому порядку:--account <id> до кожної команди, якщо хочете явно націлитися на іменований обліковий запис Matrix.
Поведінка під час запуску
Колиencryption: true, Matrix за замовчуванням встановлює startupVerification у "if-unverified".
Під час запуску, якщо цей пристрій усе ще не верифікований, Matrix запитує self-verification в іншому клієнті Matrix,
пропускає дубльовані запити, якщо один уже очікує, і застосовує локальний cooldown перед повторною спробою після перезапусків.
За замовчуванням після невдалих спроб запиту повтор виконується швидше, ніж після успішного створення запиту.
Установіть startupVerification: "off", щоб вимкнути автоматичні запити під час запуску, або налаштуйте startupVerificationCooldownHours,
якщо вам потрібне коротше або довше вікно повторних спроб.
Під час запуску також автоматично виконується консервативний прохід bootstrap для crypto.
Цей прохід спочатку намагається повторно використати поточні secret storage та ідентичність cross-signing і уникає скидання cross-signing, якщо ви не запускаєте явний сценарій відновлення bootstrap.
Якщо під час запуску виявлено зламаний стан bootstrap і налаштовано channels.matrix.password, OpenClaw може спробувати суворіший шлях відновлення.
Якщо поточний пристрій уже підписаний власником, OpenClaw зберігає цю ідентичність замість автоматичного скидання.
Оновлення з попереднього публічного плагіна Matrix:
- OpenClaw автоматично повторно використовує той самий обліковий запис Matrix, токен доступу та ідентичність пристрою, коли це можливо.
- Перш ніж виконуються будь-які дієві зміни міграції Matrix, OpenClaw створює або повторно використовує recovery snapshot у
~/Backups/openclaw-migrations/. - Якщо ви використовуєте кілька облікових записів Matrix, установіть
channels.matrix.defaultAccountперед оновленням зі старого плоского сховища, щоб OpenClaw знав, який обліковий запис має отримати цей спільний застарілий стан. - Якщо попередній плагін зберігав локально ключ розшифрування резервної копії ключів кімнат Matrix, запуск або
openclaw doctor --fixавтоматично імпортує його в новий потік recovery key. - Якщо токен доступу Matrix змінився після підготовки міграції, під час запуску тепер виконується сканування сусідніх коренів сховища хеша токена на наявність очікуваного стану відновлення старих даних, перш ніж автоматичне відновлення резервної копії буде припинено.
- Якщо токен доступу зміниться пізніше для того самого облікового запису, homeserver і користувача, OpenClaw тепер надає перевагу повторному використанню найповнішого наявного кореня сховища хеша токена, замість початку з порожнього каталогу стану Matrix.
- Під час наступного запуску gateway резервні ключі кімнат автоматично відновлюються в нове crypto store.
- Якщо старий плагін мав лише локальні ключі кімнат, які ніколи не резервувалися, OpenClaw чітко попередить про це. Ці ключі не можна автоматично експортувати з попереднього rust crypto store, тому частина старої зашифрованої історії може залишатися недоступною, доки її не буде відновлено вручну.
- Повний процес оновлення, обмеження, команди відновлення та типові повідомлення міграції див. у Matrix migration.
~/.openclaw/matrix/accounts/<account>/<homeserver>__<user>/<token-hash>/.
Цей каталог містить sync store (bot-storage.json), crypto store (crypto/),
файл recovery key (recovery-key.json), snapshot IndexedDB (crypto-idb-snapshot.json),
прив’язки тредів (thread-bindings.json) і стан верифікації під час запуску (startup-verification.json),
коли ці можливості використовуються.
Коли токен змінюється, але ідентичність облікового запису залишається тією самою, OpenClaw повторно використовує найкращий наявний
корінь для цього кортежу обліковий запис/homeserver/користувач, щоб попередній sync state, crypto state, прив’язки тредів
і стан верифікації під час запуску залишалися видимими.
Модель Node crypto store
Matrix E2EE у цьому плагіні використовує офіційний шлях Rust crypto зmatrix-js-sdk у Node.
Цей шлях очікує persistence на основі IndexedDB, якщо ви хочете, щоб crypto state зберігався після перезапусків.
Наразі OpenClaw забезпечує це в Node так:
- використовуючи
fake-indexeddbяк API shim IndexedDB, який очікує SDK - відновлюючи вміст Rust crypto IndexedDB з
crypto-idb-snapshot.jsonпередinitRustCrypto - зберігаючи оновлений вміст IndexedDB назад у
crypto-idb-snapshot.jsonпісля ініціалізації та під час runtime - серіалізуючи відновлення та збереження snapshot відносно
crypto-idb-snapshot.jsonза допомогою advisory file lock, щоб persistence під час виконання gateway і обслуговування CLI не змагалися за той самий файл snapshot
- додати підтримку SecretRef для постійного матеріалу ключів Matrix, щоб recovery keys і пов’язані секрети шифрування сховища можна було брати з постачальників секретів OpenClaw, а не лише з локальних файлів
Керування профілем
Оновіть self-profile Matrix для вибраного облікового запису за допомогою:--account <id>, якщо хочете явно націлитися на іменований обліковий запис Matrix.
Matrix напряму приймає URL аватара mxc://. Якщо ви передаєте URL аватара http:// або https://, OpenClaw спочатку завантажує його в Matrix, а потім зберігає розпізнаний URL mxc:// назад у channels.matrix.avatarUrl (або в перевизначення вибраного облікового запису).
Автоматичні сповіщення про верифікацію
Тепер Matrix публікує сповіщення про життєвий цикл верифікації безпосередньо в суворій DM-кімнаті верифікації як повідомленняm.notice.
Це включає:
- сповіщення про запит верифікації
- сповіщення про готовність до верифікації (з явною підказкою “Verify by emoji”)
- сповіщення про початок і завершення верифікації
- дані SAS (emoji і десяткові значення), коли вони доступні
NO_REPLY.
Гігієна пристроїв
Старі пристрої Matrix, якими керував OpenClaw, можуть накопичуватися в обліковому записі й ускладнювати розуміння довіри в зашифрованих кімнатах. Переглянути їх можна так:Відновлення Direct Room
Якщо стан direct-message виходить із синхронізації, OpenClaw може отримати застарілі зіставленняm.direct, які вказують на старі окремі кімнати замість активного DM. Перегляньте поточне зіставлення для співрозмовника за допомогою:
- воно надає перевагу суворому 1:1 DM, який уже відображено в
m.direct - інакше воно переходить до будь-якого поточного приєднаного суворого 1:1 DM із цим користувачем
- якщо здорового DM не існує, воно створює нову direct room і переписує
m.direct, щоб вона вказувала на неї
Треди
Matrix підтримує нативні треди Matrix як для автоматичних відповідей, так і для надсилань інструментом повідомлень.dm.sessionScope: "per-user"(за замовчуванням) зберігає маршрутизацію Matrix DM на рівні відправника, тож кілька DM-кімнат можуть спільно використовувати одну сесію, якщо вони відповідають тому самому співрозмовнику.dm.sessionScope: "per-room"ізолює кожну Matrix DM-кімнату у власний ключ сесії, водночас використовуючи звичайні перевірки автентифікації та allowlist для DM.- Явні прив’язки розмов Matrix усе одно мають пріоритет над
dm.sessionScope, тож прив’язані кімнати й треди зберігають свою вибрану цільову сесію. threadReplies: "off"залишає відповіді верхнього рівня й зберігає вхідні тредові повідомлення в батьківській сесії.threadReplies: "inbound"відповідає всередині треду лише тоді, коли вхідне повідомлення вже було в цьому треді.threadReplies: "always"зберігає відповіді в кімнаті в треді, коренем якого є повідомлення-тригер, і маршрутизує цю розмову через відповідну сесію з областю треду від першого тригерного повідомлення.dm.threadRepliesперевизначає параметр верхнього рівня лише для DM. Наприклад, ви можете зберегти ізоляцію тредів у кімнатах, залишивши DM пласкими.- Вхідні повідомлення в тредах включають кореневе повідомлення треду як додатковий контекст агента.
- Надсилання інструментом повідомлень тепер автоматично успадковують поточний тред Matrix, коли ціль — та сама кімната або та сама ціль користувача DM, якщо не вказано явний
threadId. - Повторне використання цілі користувача DM в межах тієї ж сесії спрацьовує лише тоді, коли поточні метадані сесії доводять, що це той самий співрозмовник DM у тому самому обліковому записі Matrix; інакше OpenClaw повертається до звичайної маршрутизації на рівні користувача.
- Коли OpenClaw бачить, що Matrix DM-кімната конфліктує з іншою DM-кімнатою в межах тієї самої спільної Matrix DM-сесії, він публікує одноразове
m.noticeу цій кімнаті з резервним варіантом/focus, коли прив’язки тредів увімкнено, і підказкоюdm.sessionScope. - Підтримуються runtime-прив’язки тредів для Matrix.
/focus,/unfocus,/agents,/session idle,/session max-ageі прив’язаний до треду/acp spawnтепер працюють у кімнатах і DM Matrix. - Верхньорівневий
/focusу кімнаті/DM Matrix створює новий тред Matrix і прив’язує його до цільової сесії, колиthreadBindings.spawnSubagentSessions=true. - Виконання
/focusабо/acp spawn --thread hereусередині наявного треду Matrix натомість прив’язує цей поточний тред.
Прив’язки розмов ACP
Кімнати Matrix, DM та наявні треди Matrix можна перетворювати на довговічні робочі простори ACP без зміни поверхні чату. Швидкий робочий потік оператора:- Виконайте
/acp spawn codex --bind hereу DM Matrix, кімнаті або наявному треді, який ви хочете й надалі використовувати. - У верхньорівневому DM Matrix або кімнаті поточний DM/кімната залишається поверхнею чату, а майбутні повідомлення маршрутизуються до створеної ACP-сесії.
- Усередині наявного треду Matrix
--bind hereприв’язує цей поточний тред на місці. /newі/resetскидають ту саму прив’язану ACP-сесію на місці./acp closeзакриває ACP-сесію та видаляє прив’язку.
--bind hereне створює дочірній тред Matrix.threadBindings.spawnAcpSessionsпотрібен лише для/acp spawn --thread auto|here, коли OpenClaw має створити або прив’язати дочірній тред Matrix.
Конфігурація прив’язки тредів
Matrix успадковує глобальні значення за замовчуванням ізsession.threadBindings, а також підтримує перевизначення для конкретного каналу:
threadBindings.enabledthreadBindings.idleHoursthreadBindings.maxAgeHoursthreadBindings.spawnSubagentSessionsthreadBindings.spawnAcpSessions
- Установіть
threadBindings.spawnSubagentSessions: true, щоб дозволити верхньорівневому/focusстворювати й прив’язувати нові треди Matrix. - Установіть
threadBindings.spawnAcpSessions: true, щоб дозволити/acp spawn --thread auto|hereприв’язувати ACP-сесії до тредів Matrix.
Реакції
Matrix підтримує вихідні дії реакцій, вхідні сповіщення про реакції та вхідні реакції-підтвердження.- Інструменти вихідних реакцій контролюються через
channels["matrix"].actions.reactions. reactдодає реакцію до конкретної події Matrix.reactionsпоказує поточне зведення реакцій для конкретної події Matrix.emoji=""видаляє власні реакції облікового запису бота на цій події.remove: trueвидаляє лише вказану реакцію emoji з облікового запису бота.
channels["matrix"].accounts.<accountId>.ackReactionchannels["matrix"].ackReactionmessages.ackReaction- резервне emoji ідентичності агента
channels["matrix"].accounts.<accountId>.ackReactionScopechannels["matrix"].ackReactionScopemessages.ackReactionScope
channels["matrix"].accounts.<accountId>.reactionNotificationschannels["matrix"].reactionNotifications- значення за замовчуванням:
own
reactionNotifications: "own"пересилає додані подіїm.reaction, коли вони націлені на повідомлення Matrix, створені ботом.reactionNotifications: "off"вимикає системні події реакцій.- Видалення реакцій усе ще не синтезуються в системні події, тому що Matrix показує їх як redaction, а не як окремі видалення
m.reaction.
Контекст історії
channels.matrix.historyLimitкерує тим, скільки нещодавніх повідомлень кімнати включаються якInboundHistory, коли повідомлення Matrix у кімнаті запускає агента.- Використовується fallback на
messages.groupChat.historyLimit. Установіть0, щоб вимкнути. - Історія кімнати Matrix стосується лише кімнати. DM і далі використовують звичайну історію сесії.
- Історія кімнати Matrix є лише відкладеною: OpenClaw буферизує повідомлення кімнати, які ще не викликали відповіді, а потім фіксує це вікно, коли надходить згадка або інший тригер.
- Поточне тригерне повідомлення не включається в
InboundHistory; воно залишається в основному вхідному тілі для цього ходу. - Повторні спроби для тієї самої події Matrix повторно використовують початковий snapshot історії замість зсуву вперед до новіших повідомлень кімнати.
Видимість контексту
Matrix підтримує спільний елемент керуванняcontextVisibility для додаткового контексту кімнати, такого як отриманий текст відповіді, корені тредів і відкладена історія.
contextVisibility: "all"— значення за замовчуванням. Додатковий контекст зберігається як отримано.contextVisibility: "allowlist"фільтрує додатковий контекст до відправників, дозволених активними перевірками allowlist кімнати/користувача.contextVisibility: "allowlist_quote"працює якallowlist, але все одно зберігає одну явну процитовану відповідь.
groupPolicy, groups, groupAllowFrom і параметри політики DM.
Приклад політики для DM і кімнат
Підтвердження exec
Matrix може виступати клієнтом підтвердження exec для облікового запису Matrix.channels.matrix.execApprovals.enabledchannels.matrix.execApprovals.approvers(необов’язково; використовується fallback наchannels.matrix.dm.allowFrom)channels.matrix.execApprovals.target(dm|channel|both, за замовчуванням:dm)channels.matrix.execApprovals.agentFilterchannels.matrix.execApprovals.sessionFilter
@owner:example.org. Matrix автоматично вмикає нативні підтвердження exec, коли enabled не задано або дорівнює "auto", і принаймні одного approver можна визначити або з execApprovals.approvers, або з channels.matrix.dm.allowFrom. Установіть enabled: false, щоб явно вимкнути Matrix як нативний клієнт підтвердження. Інакше запити на підтвердження використовують fallback на інші налаштовані маршрути підтвердження або політику fallback для підтверджень exec.
Нативна маршрутизація Matrix наразі стосується лише exec:
channels.matrix.execApprovals.*керує нативною маршрутизацією DM/каналу лише для підтверджень exec.- Підтвердження плагінів і далі використовують спільний
/approveу тому самому чаті плюс будь-яке налаштоване пересиланняapprovals.plugin. - Matrix усе ще може повторно використовувати
channels.matrix.dm.allowFromдля авторизації підтвердження плагінів, коли може безпечно визначити approvers, але не надає окремий нативний шлях fanout DM/каналу для підтверджень плагінів.
target: "dm"надсилає запити на підтвердження в DM approver’івtarget: "channel"надсилає запит назад у вихідну кімнату або DM Matrixtarget: "both"надсилає в DM approver’ів і у вихідну кімнату або DM Matrix
✅= дозволити один раз❌= відхилити♾️= дозволити завжди, коли таке рішення дозволено ефективною політикою exec
/approve <id> allow-once, /approve <id> allow-always або /approve <id> deny.
Лише визначені approver’и можуть підтверджувати або відхиляти. Доставлення в канал включає текст команди, тому вмикайте channel або both лише в довірених кімнатах.
Підказки підтвердження Matrix повторно використовують спільний core approval planner. Нативна поверхня, специфічна для Matrix, є лише транспортом для підтверджень exec: маршрутизація кімната/DM і поведінка надсилання/оновлення/видалення повідомлень.
Перевизначення для облікового запису:
channels.matrix.accounts.<account>.execApprovals
Приклад кількох облікових записів
channels.matrix діють як значення за замовчуванням для іменованих облікових записів, якщо обліковий запис не перевизначає їх.
Ви можете обмежити успадкований запис кімнати одним обліковим записом Matrix за допомогою groups.<room>.account (або застарілого rooms.<room>.account).
Записи без account залишаються спільними для всіх облікових записів Matrix, а записи з account: "default" усе ще працюють, коли обліковий запис за замовчуванням налаштовано безпосередньо на верхньому рівні channels.matrix.*.
Часткові спільні значення автентифікації за замовчуванням самі по собі не створюють окремий неявний обліковий запис за замовчуванням. OpenClaw синтезує верхньорівневий обліковий запис default лише тоді, коли цей обліковий запис за замовчуванням має актуальну автентифікацію (homeserver плюс accessToken або homeserver плюс userId і password); іменовані облікові записи все ще можуть залишатися виявлюваними через homeserver плюс userId, якщо кешовані облікові дані пізніше задовольнять автентифікацію.
Якщо в Matrix уже є рівно один іменований обліковий запис або defaultAccount вказує на наявний ключ іменованого облікового запису, відновлення/налаштування з переходом від одного облікового запису до кількох зберігає цей обліковий запис замість створення нового запису accounts.default. Лише ключі автентифікації/bootstrap Matrix переносяться до цього підвищеного облікового запису; спільні ключі політики доставлення залишаються на верхньому рівні.
Установіть defaultAccount, якщо хочете, щоб OpenClaw надавав перевагу одному іменованому обліковому запису Matrix для неявної маршрутизації, probe і операцій CLI.
Якщо ви налаштували кілька іменованих облікових записів, установіть defaultAccount або передавайте --account <id> для команд CLI, які покладаються на неявний вибір облікового запису.
Передавайте --account <id> до openclaw matrix verify ... і openclaw matrix devices ..., якщо хочете перевизначити цей неявний вибір для однієї команди.
Приватні/LAN homeserver
За замовчуванням OpenClaw блокує приватні/внутрішні homeserver Matrix для захисту від SSRF, якщо ви явно не дозволите це для кожного облікового запису. Якщо ваш homeserver працює на localhost, LAN/Tailscale IP або внутрішньому hostname, увімкнітьallowPrivateNetwork для цього облікового запису Matrix:
http://matrix.example.org:8008, і далі блокуються. За можливості надавайте перевагу https://.
Проксіювання трафіку Matrix
Якщо ваше розгортання Matrix потребує явного вихідного HTTP(S) proxy, установітьchannels.matrix.proxy:
channels.matrix.accounts.<id>.proxy.
OpenClaw використовує те саме налаштування proxy і для runtime-трафіку Matrix, і для probes стану облікового запису.
Визначення цілі
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 на цьому homeserver.
- Пошук кімнат напряму приймає явні ID кімнат і аліаси, а потім використовує fallback до пошуку назв приєднаних кімнат для цього облікового запису.
- Пошук за назвою приєднаної кімнати виконується за принципом best-effort. Якщо назву кімнати не вдається зіставити з ID або аліасом, під час виконання її буде проігноровано в allowlist.
Довідка з конфігурації
enabled: увімкнути або вимкнути канал.name: необов’язкова мітка для облікового запису.defaultAccount: бажаний ID облікового запису, коли налаштовано кілька облікових записів Matrix.homeserver: URL homeserver, наприкладhttps://matrix.example.org.allowPrivateNetwork: дозволити цьому обліковому запису Matrix підключатися до приватних/внутрішніх homeserver. Увімкніть це, якщо homeserver визначається якlocalhost, LAN/Tailscale IP або внутрішній хост, наприкладmatrix-synapse.proxy: необов’язковий URL HTTP(S) proxy для трафіку Matrix. Іменовані облікові записи можуть перевизначити значення верхнього рівня за замовчуванням власнимproxy.userId: повний Matrix user ID, наприклад@bot:example.org.accessToken: токен доступу для автентифікації на основі токена. Дляchannels.matrix.accessTokenіchannels.matrix.accounts.<id>.accessTokenпідтримуються як відкриті значення, так і значення SecretRef у постачальниках env/file/exec. Див. Secrets Management.password: пароль для входу на основі пароля. Підтримуються відкриті значення та значення SecretRef.deviceId: явний Matrix device ID.deviceName: відображувана назва пристрою для входу за паролем.avatarUrl: збережений self-avatar URL для синхронізації профілю та оновленьset-profile.initialSyncLimit: ліміт подій синхронізації під час запуску.encryption: увімкнути E2EE.allowlistOnly: примусово використовувати лише поведінку allowlist для DM і кімнат.allowBots: дозволити повідомлення від інших налаштованих облікових записів Matrix OpenClaw (trueабо"mentions").groupPolicy:open,allowlistабоdisabled.contextVisibility: режим видимості додаткового контексту кімнати (all,allowlist,allowlist_quote).groupAllowFrom: allowlist user ID для трафіку кімнат.- Записи
groupAllowFromмають бути повними Matrix user ID. Нерозпізнані імена ігноруються під час виконання. historyLimit: максимальна кількість повідомлень кімнати, що включаються як контекст історії групи. Використовує fallback наmessages.groupChat.historyLimit. Установіть0, щоб вимкнути.replyToMode:off,firstабоall.markdown: необов’язкова конфігурація рендерингу Markdown для вихідного тексту Matrix.streaming:off(за замовчуванням),partial,trueабоfalse.partialіtrueвмикають попередній перегляд чернетки одним повідомленням з оновленнями редагування на місці.blockStreaming:trueвмикає окремі повідомлення прогресу для завершених блоків помічника, поки активне потокове передавання чернетки попереднього перегляду.threadReplies:off,inboundабоalways.threadBindings: перевизначення для конкретного каналу для маршрутизації та життєвого циклу сесій, прив’язаних до тредів.startupVerification: режим автоматичного запиту self-verification під час запуску (if-unverified,off).startupVerificationCooldownHours: cooldown перед повторними спробами автоматичних запитів верифікації під час запуску.textChunkLimit: розмір фрагмента вихідного повідомлення.chunkMode:lengthабоnewline.responsePrefix: необов’язковий префікс повідомлення для вихідних відповідей.ackReaction: необов’язкове перевизначення реакції-підтвердження для цього каналу/облікового запису.ackReactionScope: необов’язкове перевизначення області реакції-підтвердження (group-mentions,group-all,direct,all,none,off).reactionNotifications: режим вхідних сповіщень про реакції (own,off).mediaMaxMb: обмеження розміру медіа в MB для обробки медіа Matrix. Застосовується до вихідного надсилання та обробки вхідних медіа.autoJoin: політика автоматичного приєднання за запрошенням (always,allowlist,off). За замовчуванням:off.autoJoinAllowlist: кімнати/аліаси, дозволені, колиautoJoinмає значенняallowlist. Записи аліасів під час обробки запрошення перетворюються на ID кімнат; OpenClaw не довіряє стану аліаса, заявленому запрошеною кімнатою.dm: блок політики DM (enabled,policy,allowFrom,sessionScope,threadReplies).- Записи
dm.allowFromмають бути повними Matrix user ID, якщо тільки ви вже не розпізнали їх через живий пошук у директорії. dm.sessionScope:per-user(за замовчуванням) абоper-room. Використовуйтеper-room, якщо хочете, щоб кожна Matrix DM-кімната зберігала окремий контекст, навіть якщо співрозмовник той самий.dm.threadReplies: перевизначення політики тредів лише для DM (off,inbound,always). Воно перевизначає параметр верхнього рівняthreadRepliesяк для розміщення відповіді, так і для ізоляції сесії в DM.execApprovals: нативне доставлення підтверджень exec для Matrix (enabled,approvers,target,agentFilter,sessionFilter).execApprovals.approvers: Matrix user ID, яким дозволено підтверджувати exec-запити. Необов’язково, якщо approver’ів уже визначаєdm.allowFrom.execApprovals.target:dm | channel | both(за замовчуванням:dm).accounts: іменовані перевизначення для кожного облікового запису. Значення верхнього рівняchannels.matrixдіють як значення за замовчуванням для цих записів.groups: карта політик для кожної кімнати. Надавайте перевагу ID кімнат або аліасам; нерозпізнані назви кімнат під час виконання ігноруються. Ідентичність сесії/групи після розпізнавання використовує стабільний ID кімнати, тоді як людиночитані мітки й надалі походять із назв кімнат.groups.<room>.account: обмежити один успадкований запис кімнати конкретним обліковим записом Matrix у конфігураціях із кількома обліковими записами.groups.<room>.allowBots: перевизначення на рівні кімнати для відправників із налаштованих ботів (trueабо"mentions").groups.<room>.users: allowlist відправників для конкретної кімнати.groups.<room>.tools: перевизначення allow/deny інструментів для конкретної кімнати.groups.<room>.autoReply: перевизначення вимоги згадки на рівні кімнати.trueвимикає вимоги щодо згадки для цієї кімнати;falseзнову примусово вмикає їх.groups.<room>.skills: необов’язковий фільтр Skills на рівні кімнати.groups.<room>.systemPrompt: необов’язковий фрагмент system prompt на рівні кімнати.rooms: застарілий аліас дляgroups.actions: керування інструментами для конкретних дій (messages,reactions,pins,profile,memberInfo,channelInfo,verification).
Пов’язане
- Channels Overview — усі підтримувані канали
- Pairing — автентифікація DM і потік pairing
- Groups — поведінка групового чату та керування згадками
- Channel Routing — маршрутизація сесій для повідомлень
- Security — модель доступу та посилення безпеки