OpenClaw обробляє групові чати узгоджено на всіх поверхнях: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo.Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Вступ для початківців (2 хвилини)
OpenClaw “живе” у ваших власних облікових записах месенджерів. Окремого користувача-бота WhatsApp немає. Якщо ви є в групі, OpenClaw може бачити цю групу й відповідати в ній. Типова поведінка:- Групи обмежені (
groupPolicy: "allowlist"). - Відповіді потребують згадки, якщо ви явно не вимкнули перевірку згадки.
- Звичайні фінальні відповіді в групах/каналах за замовчуванням приватні. Видимий вивід у кімнату використовує інструмент
message.
Коротко
- Доступ до DM керується
*.allowFrom. - Доступ до груп керується
*.groupPolicy+ списками дозволів (*.groups,*.groupAllowFrom). - Запуск відповіді керується перевіркою згадки (
requireMention,/activation).
Видимі відповіді
Для групових/канальних кімнат OpenClaw за замовчуванням використовуєmessages.groupChat.visibleReplies: "message_tool".
openclaw doctor --fix записує це типове значення в конфігурації налаштованих каналів, де його пропущено.
Це означає, що агент усе ще обробляє хід і може оновлювати стан пам’яті/сесії, але його звичайна фінальна відповідь не публікується автоматично назад у кімнату. Щоб говорити видимо, агент використовує message(action=send).
Це типове значення залежить від моделі/середовища виконання, які надійно викликають інструменти. Якщо журнали показують текст асистента, але didSendViaMessagingTool: false, модель відповіла приватно замість того, щоб викликати інструмент повідомлень. Це не збій надсилання Discord/Slack/Telegram. Використовуйте модель із надійними викликами інструментів для групових/канальних сесій або встановіть messages.groupChat.visibleReplies: "automatic", щоб відновити застарілі видимі фінальні відповіді.
Якщо інструмент повідомлень недоступний за активною політикою інструментів, OpenClaw повертається до автоматичних видимих відповідей замість того, щоб мовчки пригнічувати відповідь.
openclaw doctor попереджає про цю невідповідність.
Для прямих чатів і будь-якого іншого джерела ходу використовуйте messages.visibleReplies: "message_tool", щоб застосувати таку саму поведінку видимих відповідей лише через інструмент глобально. Середовища також можуть вибрати це як своє типове значення, якщо воно не задане; середовище Codex робить це для прямих чатів у режимі Codex. messages.groupChat.visibleReplies залишається конкретнішим перевизначенням для групових/канальних кімнат.
Це замінює старий шаблон примусового налаштування моделі відповідати NO_REPLY для більшості ходів у режимі спостереження. У режимі лише через інструмент відсутність видимої дії просто означає, що інструмент повідомлень не викликається.
Індикатори набору тексту все ще надсилаються, поки агент працює в режимі лише через інструмент. Типовий режим набору тексту для груп підвищується з “message” до “instant” для цих ходів, бо звичайного тексту повідомлення асистента може взагалі не бути до того, як агент вирішить, чи викликати інструмент повідомлень. Явна конфігурація режиму набору тексту все одно має пріоритет.
Щоб відновити застарілі автоматичні фінальні відповіді для групових/канальних кімнат:
messages після збереження файла. Перезапускайте лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнене в розгортанні.
Щоб вимагати, аби видимий вивід для кожного вихідного чату проходив через інструмент повідомлень:
visibleReplies: "message_tool" і завжди відповідають видимо, щоб канал-рідний інтерфейс команд отримував очікувану відповідь. Це застосовується лише до перевірених нативних ходів команд; набрані текстом команди /... і звичайні ходи чату й надалі дотримуються налаштованого типового значення для груп.
Видимість контексту та списки дозволів
У безпеці груп беруть участь два різні елементи керування:- Авторизація запуску: хто може запускати агента (
groupPolicy,groups,groupAllowFrom, списки дозволів для конкретних каналів). - Видимість контексту: який додатковий контекст вставляється в модель (текст відповіді, цитати, історія треду, метадані пересилання).
Поточна поведінка залежить від каналу
Поточна поведінка залежить від каналу
- Деякі канали вже застосовують фільтрацію на основі відправника для додаткового контексту в конкретних шляхах (наприклад, заповнення тредів Slack, пошуки відповідей/тредів Matrix).
- Інші канали все ще передають контекст цитат/відповідей/пересилань таким, яким його отримано.
Напрям посилення захисту (заплановано)
Напрям посилення захисту (заплановано)
contextVisibility: "all"(типово) зберігає поточну поведінку «як отримано».contextVisibility: "allowlist"фільтрує додатковий контекст до дозволених відправників.contextVisibility: "allowlist_quote"— цеallowlistплюс один явний виняток для цитати/відповіді.
| Мета | Що встановити |
|---|---|
| Дозволити всі групи, але відповідати лише на @згадки | groups: { "*": { requireMention: true } } |
| Вимкнути всі групові відповіді | groupPolicy: "disabled" |
| Лише конкретні групи | groups: { "<group-id>": { ... } } (без ключа "*") |
| Лише ви можете запускати в групах | groupPolicy: "allowlist", groupAllowFrom: ["+1555..."] |
| Повторно використовувати один набір довірених відправників у різних каналах | groupAllowFrom: ["accessGroup:operators"] |
Ключі сесій
- Групові сесії використовують ключі сесій
agent:<agentId>:<channel>:group:<id>(кімнати/канали використовуютьagent:<agentId>:<channel>:channel:<id>). - Теми форуму Telegram додають
:topic:<threadId>до ідентифікатора групи, щоб кожна тема мала власну сесію. - Прямі чати використовують основну сесію (або окрему для кожного відправника, якщо налаштовано).
- Heartbeat пропускаються для групових сесій.
Шаблон: особисті DM + публічні групи (один агент)
Так — це добре працює, якщо ваш “особистий” трафік — це DM, а ваш “публічний” трафік — це групи. Чому: у режимі одного агента DM зазвичай потрапляють в основний ключ сесії (agent:main:main), тоді як групи завжди використовують неосновні ключі сесій (agent:main:<channel>:group:<id>). Якщо ви вмикаєте ізоляцію з mode: "non-main", ці групові сесії запускаються в налаштованому бекенді пісочниці, тоді як ваша основна DM-сесія залишається на хості. Docker є типовим бекендом, якщо ви не вибрали інший.
Це дає вам один “мозок” агента (спільний робочий простір + пам’ять), але два режими виконання:
- DM: повні інструменти (хост)
- Групи: пісочниця + обмежені інструменти
Якщо вам потрібні справді окремі робочі простори/персони (“особисте” і “публічне” ніколи не мають змішуватися), використовуйте другого агента + прив’язки. Дивіться Маршрутизація кількох агентів.
- DM на хості, групи в пісочниці
- Групи бачать лише теку зі списку дозволів
- Ключі конфігурації та типові значення: Конфігурація Gateway
- Налагодження, чому інструмент заблоковано: Пісочниця проти політики інструментів проти підвищених прав
- Деталі монтування прив’язок: Ізоляція в пісочниці
Відображувані мітки
- Мітки UI використовують
displayName, коли він доступний, у форматі<channel>:<token>. #roomзарезервовано для кімнат/каналів; групові чати використовуютьg-<slug>(нижній регістр, пробіли ->-, зберігати#@+._-).
Політика груп
Керуйте тим, як обробляються групові повідомлення/повідомлення кімнат для кожного каналу:| Політика | Поведінка |
|---|---|
"open" | Групи обходять списки дозволів; перевірка згадки все одно застосовується. |
"disabled" | Повністю блокувати всі групові повідомлення. |
"allowlist" | Дозволяти лише групи/кімнати, які відповідають налаштованому списку дозволів. |
Примітки для окремих каналів
Примітки для окремих каналів
groupPolicyвідокремлено від фільтрації за згадками (яка потребує @mentions).- WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: використовуйте
groupAllowFrom(резервний варіант: явнийallowFrom). - Signal:
groupAllowFromможе збігатися або з вхідним ідентифікатором групи Signal, або з телефоном/UUID відправника. - Схвалення прив’язування DM (записи сховища
*-allowFrom) застосовуються лише до доступу DM; авторизація відправника в групі залишається явно заданою через списки дозволених груп. - Discord: список дозволених використовує
channels.discord.guilds.<id>.channels. - Slack: список дозволених використовує
channels.slack.channels. - Matrix: список дозволених використовує
channels.matrix.groups. Надавайте перевагу ідентифікаторам або псевдонімам кімнат; пошук назв приєднаних кімнат виконується за найкращою спробою, а нерозпізнані назви ігноруються під час виконання. Використовуйтеchannels.matrix.groupAllowFrom, щоб обмежити відправників; також підтримуються покімнатні списки дозволенихusers. - Групові DM керуються окремо (
channels.discord.dm.*,channels.slack.dm.*). - Список дозволених Telegram може збігатися з ідентифікаторами користувачів (
"123456789","telegram:123456789","tg:123456789") або іменами користувачів ("@alice"чи"alice"); префікси не чутливі до регістру. - Типове значення —
groupPolicy: "allowlist"; якщо ваш список дозволених груп порожній, групові повідомлення блокуються. - Безпека під час виконання: коли блок провайдера повністю відсутній (
channels.<provider>відсутній), політика груп повертається до режиму із закриттям у разі помилки (зазвичайallowlist) замість успадкуванняchannels.defaults.groupPolicy.
Списки дозволених груп
Списки дозволених груп (
*.groups, *.groupAllowFrom, список дозволених для конкретного каналу).Фільтрація за згадками (типово)
Групові повідомлення потребують згадки, якщо це не перевизначено для групи. Типові значення зберігаються для кожної підсистеми в*.groups."*".
Відповідь на повідомлення бота рахується як неявна згадка, коли канал підтримує метадані відповіді. Цитування повідомлення бота також може рахуватися як неявна згадка в каналах, які надають метадані цитати. Поточні вбудовані випадки включають Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser.
Примітки щодо фільтрації за згадками
Примітки щодо фільтрації за згадками
mentionPatterns— це безпечні regex-шаблони без чутливості до регістру; недійсні шаблони та небезпечні форми вкладених повторень ігноруються.- Поверхні, які надають явні згадки, усе одно проходять; шаблони є резервним варіантом.
- Перевизначення для агента:
agents.list[].groupChat.mentionPatterns(корисно, коли кілька агентів спільно використовують групу). - Фільтрація за згадками застосовується лише тоді, коли можливе виявлення згадок (налаштовані нативні згадки або
mentionPatterns). - Додавання групи чи відправника до списку дозволених не вимикає фільтрацію за згадками; встановіть для цієї групи
requireMentionуfalse, коли всі повідомлення мають запускати обробку. - Контекст підказки групового чату передає розв’язану інструкцію тихої відповіді в кожному ході; файли робочого простору не повинні дублювати механіку
NO_REPLY. - Групи, у яких дозволені тихі відповіді, трактують чисті порожні або лише reasoning-ходи моделі як тихі, еквівалентні
NO_REPLY. Прямі чати роблять те саме лише тоді, коли прямі тихі відповіді явно дозволені; інакше порожні відповіді залишаються невдалими ходами агента. - Типові значення Discord зберігаються в
channels.discord.guilds."*"(можна перевизначити для гільдії/каналу). - Контекст історії груп однаково обгортається в усіх каналах. Групи з фільтрацією за згадками зберігають очікувані пропущені повідомлення; групи, що завжди активні, також можуть зберігати нещодавні оброблені повідомлення кімнати, коли канал це підтримує. Використовуйте
messages.groupChat.historyLimitдля глобального типового значення таchannels.<channel>.historyLimit(абоchannels.<channel>.accounts.*.historyLimit) для перевизначень. Встановіть0, щоб вимкнути.
Обмеження інструментів для груп/каналів (необов’язково)
Деякі конфігурації каналів підтримують обмеження того, які інструменти доступні всередині конкретної групи/кімнати/каналу.tools: дозволити/заборонити інструменти для всієї групи.toolsBySender: перевизначення для окремих відправників у межах групи. Використовуйте явні префікси ключів:channel:<channelId>:<senderId>,id:<senderId>,e164:<phone>,username:<handle>,name:<displayName>і шаблон"*". Ідентифікатори каналів використовують канонічні ідентифікатори каналів OpenClaw; псевдоніми на кшталтteamsнормалізуються доmsteams. Застарілі ключі без префікса все ще приймаються та зіставляються лише якid:.
Приклад (Telegram):
Обмеження інструментів для груп/каналів застосовуються додатково до глобальної політики інструментів/політики інструментів агента (заборона все одно перемагає). Деякі канали використовують іншу вкладеність для кімнат/каналів (наприклад, Discord
guilds.*.channels.*, Slack channels.*, Microsoft Teams teams.*.channels.*).Списки дозволених груп
Коли налаштованоchannels.whatsapp.groups, channels.telegram.groups або channels.imessage.groups, ключі діють як список дозволених груп. Використовуйте "*", щоб дозволити всі групи й водночас задати типову поведінку згадок.
Поширені наміри (скопіюйте/вставте):
- Вимкнути всі групові відповіді
- Дозволити лише конкретні групи (WhatsApp)
- Дозволити всі групи, але вимагати згадку
- Запуски лише власником (WhatsApp)
Активація (лише власник)
Власники груп можуть перемикати активацію для окремої групи:/activation mention/activation always
channels.whatsapp.allowFrom (або за власним E.164 бота, якщо не задано). Надсилайте команду як окреме повідомлення. Інші поверхні наразі ігнорують /activation.
Поля контексту
Вхідні групові корисні навантаження задають:ChatType=groupGroupSubject(якщо відомо)GroupMembers(якщо відомо)WasMentioned(результат фільтрації за згадками)- Теми форуму Telegram також включають
MessageThreadIdіIsForum.
\n. Назви груп і мітки учасників, отримані з каналів, відображаються як огороджені недовірені метадані, а не як вбудовані системні інструкції.
Особливості iMessage
- Надавайте перевагу
chat_id:<id>під час маршрутизації або додавання до списку дозволених. - Перелік чатів:
imsg chats --limit 20. - Групові відповіді завжди повертаються до того самого
chat_id.