diff --git a/docs/uk/channels/groups.md b/docs/uk/channels/groups.md index a60d6338f..72c02df31 100644 --- a/docs/uk/channels/groups.md +++ b/docs/uk/channels/groups.md @@ -2,37 +2,37 @@ read_when: - Зміна поведінки групового чату або обмеження за згадками sidebarTitle: Groups -summary: Поведінка групового чату на різних платформах (Discord/iMessage/Matrix/Microsoft Teams/Signal/Slack/Telegram/WhatsApp/Zalo) +summary: Поведінка групового чату на різних поверхнях (Discord/iMessage/Matrix/Microsoft Teams/Signal/Slack/Telegram/WhatsApp/Zalo) title: Групи x-i18n: - generated_at: "2026-04-29T19:06:31Z" + generated_at: "2026-04-30T13:59:18Z" model: gpt-5.5 provider: openai - source_hash: 743dc1ce1a0e5dc5c6d66091854cdcbb8d2b8f7e06b5c1d13c272142265fc998 + source_hash: 5a675d14c0c9b236c960b8401e2771af355735ef23c7cf3697e273d452ecdf8d source_path: channels/groups.md workflow: 16 --- -OpenClaw однаково обробляє групові чати на всіх поверхнях: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo. +OpenClaw обробляє групові чати узгоджено на всіх поверхнях: Discord, iMessage, Matrix, Microsoft Teams, Signal, Slack, Telegram, WhatsApp, Zalo. ## Вступ для початківців (2 хвилини) -OpenClaw "живе" у ваших власних облікових записах месенджерів. Окремого користувача-бота WhatsApp немає. Якщо **ви** перебуваєте в групі, OpenClaw може бачити цю групу й відповідати в ній. +OpenClaw «живе» у ваших власних облікових записах месенджерів. Окремого користувача-бота WhatsApp немає. Якщо **ви** перебуваєте в групі, OpenClaw може бачити цю групу й відповідати в ній. -Типова поведінка: +Поведінка за замовчуванням: - Групи обмежені (`groupPolicy: "allowlist"`). -- Відповіді потребують згадки, якщо ви явно не вимкнете шлюзування за згадкою. -- Звичайні фінальні відповіді в групах/каналах типово приватні. Видимий вивід у кімнату використовує інструмент `message`. +- Відповіді вимагають згадки, якщо ви явно не вимкнете перевірку згадки. +- Звичайні фінальні відповіді в групах/каналах за замовчуванням приватні. Видимий вивід у кімнату використовує інструмент `message`. -Пояснення: відправники з allowlist можуть запускати OpenClaw, згадуючи його. +Інакше кажучи: відправники зі списку дозволених можуть запускати OpenClaw, згадавши його. **Коротко** -- **Доступ до DM** керується `*.allowFrom`. -- **Доступ до груп** керується `*.groupPolicy` + allowlist (`*.groups`, `*.groupAllowFrom`). -- **Запуск відповіді** керується шлюзуванням за згадкою (`requireMention`, `/activation`). +- **Доступ до приватних повідомлень** контролюється `*.allowFrom`. +- **Доступ до груп** контролюється `*.groupPolicy` + списками дозволених (`*.groups`, `*.groupAllowFrom`). +- **Запуск відповіді** контролюється перевіркою згадки (`requireMention`, `/activation`). @@ -47,14 +47,14 @@ otherwise -> reply ## Видимі відповіді -Для групових/канальних кімнат OpenClaw типово використовує `messages.groupChat.visibleReplies: "message_tool"`. -Це означає, що агент усе одно обробляє хід і може оновлювати пам’ять/стан сесії, але його звичайна фінальна відповідь не публікується автоматично назад у кімнату. Щоб говорити видимо, агент використовує `message(action=send)`. +Для групових/канальних кімнат OpenClaw за замовчуванням використовує `messages.groupChat.visibleReplies: "message_tool"`. +Це означає, що агент усе одно обробляє хід і може оновлювати стан пам’яті/сесії, але його звичайна фінальна відповідь не публікується автоматично назад у кімнату. Щоб говорити видимо, агент використовує `message(action=send)`. -Для прямих чатів і будь-якого іншого вихідного ходу використовуйте `messages.visibleReplies: "message_tool"`, щоб застосувати таку саму поведінку видимої відповіді лише через інструмент глобально. `messages.groupChat.visibleReplies` залишається більш специфічним перевизначенням для групових/канальних кімнат. +Для прямих чатів і будь-якого іншого ходу джерела використовуйте `messages.visibleReplies: "message_tool"`, щоб застосувати таку саму поведінку видимих відповідей лише через інструмент глобально. `messages.groupChat.visibleReplies` залишається конкретнішим перевизначенням для групових/канальних кімнат. -Це замінює старий шаблон примушування моделі відповідати `NO_REPLY` для більшості ходів у режимі спостереження. У режимі лише через інструмент відсутність видимої дії просто означає, що інструмент повідомлень не викликається. +Це замінює старий шаблон, коли модель примушували відповідати `NO_REPLY` для більшості ходів у режимі пасивного спостереження. У режимі лише через інструмент нічого не робити видимо просто означає не викликати інструмент повідомлень. -Індикатори набору все ще надсилаються, поки агент працює в режимі лише через інструмент. Типовий режим набору для груп оновлюється з "message" до "instant" для цих ходів, тому що звичайного тексту повідомлення асистента може ніколи не бути до того, як агент вирішить, чи викликати інструмент повідомлень. Явна конфігурація режиму набору все ще має пріоритет. +Індикатори набору все одно надсилаються, поки агент працює в режимі лише через інструмент. Стандартний груповий режим набору для цих ходів підвищено з "message" до "instant", оскільки звичайного тексту повідомлення асистента може взагалі не бути до того, як агент вирішить, чи викликати інструмент повідомлень. Явна конфігурація режиму набору все одно має пріоритет. Щоб відновити застарілі автоматичні фінальні відповіді для групових/канальних кімнат: @@ -68,7 +68,10 @@ otherwise -> reply } ``` -Щоб вимагати, аби видимий вивід проходив через інструмент повідомлень для кожного вихідного чату: +Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапускайте лише тоді, +коли у розгортанні вимкнено відстеження файлів або перезавантаження конфігурації. + +Щоб вимагати, аби видимий вивід для кожного чату джерела проходив через інструмент повідомлень: ```json5 { @@ -78,70 +81,70 @@ otherwise -> reply } ``` -Нативні slash-команди (Discord, Telegram та інші поверхні з підтримкою нативних команд) обходять `visibleReplies: "message_tool"` і завжди відповідають видимо, щоб нативний для каналу інтерфейс команд отримав очікувану відповідь. Це застосовується лише до перевірених нативних командних ходів; команди `/...`, набрані текстом, і звичайні ходи чату все ще дотримуються налаштованої типової поведінки групи. +Нативні слеш-команди (Discord, Telegram та інші поверхні з нативною підтримкою команд) обходять `visibleReplies: "message_tool"` і завжди відповідають видимо, щоб нативний для каналу інтерфейс команд отримав очікувану відповідь. Це стосується лише перевірених ходів нативних команд; команди `/...`, набрані як текст, і звичайні ходи чату все одно дотримуються налаштованого групового значення за замовчуванням. -## Видимість контексту та allowlist +## Видимість контексту та списки дозволених -У безпеці груп задіяні два різні елементи керування: +У груповій безпеці задіяні два різні механізми керування: -- **Авторизація запуску**: хто може запускати агента (`groupPolicy`, `groups`, `groupAllowFrom`, allowlist, специфічні для каналу). -- **Видимість контексту**: який додатковий контекст вводиться в модель (текст відповіді, цитати, історія треду, переслані метадані). +- **Авторизація запуску**: хто може запускати агента (`groupPolicy`, `groups`, `groupAllowFrom`, списки дозволених для окремих каналів). +- **Видимість контексту**: який додатковий контекст вставляється в модель (текст відповіді, цитати, історія треду, метадані пересилання). -Типово OpenClaw надає пріоритет звичайній поведінці чату й здебільшого зберігає контекст таким, яким його отримано. Це означає, що allowlist переважно вирішують, хто може запускати дії, а не є універсальною межею редагування для кожного цитованого чи історичного фрагмента. +За замовчуванням OpenClaw надає пріоритет звичайній поведінці чату й здебільшого зберігає контекст у тому вигляді, як його отримано. Це означає, що списки дозволених передусім визначають, хто може запускати дії, а не є універсальною межею приховування для кожної процитованої чи історичної вставки. - Деякі канали вже застосовують фільтрацію за відправником для додаткового контексту в конкретних шляхах (наприклад, початкове наповнення тредів Slack, пошуки відповідей/тредів Matrix). - - Інші канали все ще передають контекст цитат/відповідей/пересилань таким, яким його отримано. + - Інші канали все ще передають контекст цитат/відповідей/пересилань у тому вигляді, як його отримано. - - `contextVisibility: "all"` (типово) зберігає поточну поведінку "як отримано". - - `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників з allowlist. + - `contextVisibility: "all"` (за замовчуванням) зберігає поточну поведінку «як отримано». + - `contextVisibility: "allowlist"` фільтрує додатковий контекст до відправників зі списку дозволених. - `contextVisibility: "allowlist_quote"` — це `allowlist` плюс один явний виняток для цитати/відповіді. - Доки ця модель посилення захисту не буде реалізована послідовно в усіх каналах, очікуйте відмінностей між поверхнями. + Поки цю модель посилення захисту не буде узгоджено реалізовано в усіх каналах, очікуйте відмінностей залежно від поверхні. -![Потік групових повідомлень](/images/groups-flow.svg) +![Потік групового повідомлення](/images/groups-flow.svg) Якщо ви хочете... -| Мета | Що налаштувати | +| Ціль | Що встановити | | -------------------------------------------- | ---------------------------------------------------------- | | Дозволити всі групи, але відповідати лише на @згадки | `groups: { "*": { requireMention: true } }` | | Вимкнути всі групові відповіді | `groupPolicy: "disabled"` | -| Лише конкретні групи | `groups: { "": { ... } }` (без ключа `"*"`) | +| Лише конкретні групи | `groups: { "": { ... } }` (без ключа `"*"` ) | | Лише ви можете запускати в групах | `groupPolicy: "allowlist"`, `groupAllowFrom: ["+1555..."]` | ## Ключі сесій - Групові сесії використовують ключі сесій `agent:::group:` (кімнати/канали використовують `agent:::channel:`). - Теми форумів Telegram додають `:topic:` до ідентифікатора групи, щоб кожна тема мала власну сесію. -- Прямі чати використовують основну сесію (або окрему для кожного відправника, якщо налаштовано). -- Heartbeats пропускаються для групових сесій. +- Прямі чати використовують основну сесію (або сесію для кожного відправника, якщо налаштовано). +- Heartbeat пропускаються для групових сесій. -## Шаблон: особисті DM + публічні групи (один агент) +## Патерн: особисті приватні повідомлення + публічні групи (один агент) -Так — це добре працює, якщо ваш "особистий" трафік — це **DM**, а ваш "публічний" трафік — це **групи**. +Так — це добре працює, якщо ваш «особистий» трафік — це **приватні повідомлення**, а ваш «публічний» трафік — це **групи**. -Чому: у режимі одного агента DM зазвичай потрапляють в **основний** ключ сесії (`agent:main:main`), тоді як групи завжди використовують **неосновні** ключі сесій (`agent:main::group:`). Якщо ви вмикаєте sandboxing з `mode: "non-main"`, ці групові сесії запускаються в налаштованому sandbox-бекенді, тоді як ваша основна DM-сесія залишається на хості. Docker є типовим бекендом, якщо ви не виберете інший. +Чому: у режимі одного агента приватні повідомлення зазвичай потрапляють в **основний** ключ сесії (`agent:main:main`), тоді як групи завжди використовують **неосновні** ключі сесій (`agent:main::group:`). Якщо ввімкнути пісочницю з `mode: "non-main"`, ці групові сесії працюватимуть у налаштованому бекенді пісочниці, а ваша основна сесія приватних повідомлень залишатиметься на хості. Docker є стандартним бекендом, якщо ви не виберете інший. -Це дає вам один "мозок" агента (спільний робочий простір + пам’ять), але дві позиції виконання: +Це дає один «мозок» агента (спільний робочий простір + пам’ять), але два режими виконання: -- **DM**: повні інструменти (хост) -- **Групи**: sandbox + обмежені інструменти +- **Приватні повідомлення**: повний набір інструментів (хост) +- **Групи**: пісочниця + обмежені інструменти -Якщо вам потрібні справді окремі робочі простори/персони ("особисте" і "публічне" ніколи не мають змішуватися), використовуйте другого агента + прив’язки. Див. [Маршрутизація між кількома агентами](/uk/concepts/multi-agent). +Якщо вам потрібні справді окремі робочі простори/персони («особисте» і «публічне» ніколи не мають змішуватися), використовуйте другого агента + прив’язки. Див. [Маршрутизація кількох агентів](/uk/concepts/multi-agent). - + ```json5 { agents: { @@ -165,8 +168,8 @@ otherwise -> reply } ``` - - Хочете "групи можуть бачити лише папку X" замість "немає доступу до хоста"? Залиште `workspaceAccess: "none"` і монтуйте в sandbox лише шляхи з allowlist: + + Хочете, щоб «групи могли бачити лише папку X» замість «жодного доступу до хоста»? Залиште `workspaceAccess: "none"` і монтуйте в пісочницю лише шляхи зі списку дозволених: ```json5 { @@ -193,18 +196,18 @@ otherwise -> reply Пов’язано: -- Ключі конфігурації та типові значення: [Конфігурація Gateway](/uk/gateway/config-agents#agentsdefaultssandbox) -- Налагодження, чому інструмент заблоковано: [Sandbox проти політики інструментів проти підвищених прав](/uk/gateway/sandbox-vs-tool-policy-vs-elevated) -- Докладно про bind mounts: [Sandboxing](/uk/gateway/sandboxing#custom-bind-mounts) +- Ключі конфігурації та значення за замовчуванням: [Конфігурація Gateway](/uk/gateway/config-agents#agentsdefaultssandbox) +- Налагодження причини блокування інструмента: [Пісочниця проти політики інструментів проти підвищених прав](/uk/gateway/sandbox-vs-tool-policy-vs-elevated) +- Подробиці монтування прив’язок: [Пісочниця](/uk/gateway/sandboxing#custom-bind-mounts) -## Мітки відображення +## Відображувані мітки -- Мітки UI використовують `displayName`, коли доступно, у форматі `:`. -- `#room` зарезервовано для кімнат/каналів; групові чати використовують `g-` (нижній регістр, пробіли -> `-`, зберігати `#@+._-`). +- Мітки UI використовують `displayName`, коли він доступний, у форматі `:`. +- `#room` зарезервовано для кімнат/каналів; групові чати використовують `g-` (нижній регістр, пробіли -> `-`, залишати `#@+._-`). -## Політика груп +## Групова політика -Керуйте тим, як групові/кімнатні повідомлення обробляються для кожного каналу: +Керуйте тим, як обробляються групові повідомлення та повідомлення кімнат для кожного каналу: ```json5 { @@ -251,47 +254,47 @@ otherwise -> reply } ``` -| Політика | Поведінка | +| Політика | Поведінка | | ------------- | ------------------------------------------------------------ | -| `"open"` | Групи обходять allowlist; шлюзування за згадкою все ще застосовується. | -| `"disabled"` | Повністю блокувати всі групові повідомлення. | -| `"allowlist"` | Дозволяти лише групи/кімнати, які відповідають налаштованому allowlist. | +| `"open"` | Групи обходять списки дозволених; вимога згадки все одно застосовується. | +| `"disabled"` | Повністю блокує всі групові повідомлення. | +| `"allowlist"` | Дозволяє лише групи/кімнати, що відповідають налаштованому списку дозволених. | - - - `groupPolicy` окремий від шлюзування за згадкою (яке вимагає @згадок). - - WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: використовуйте `groupAllowFrom` (fallback: явний `allowFrom`). - - Схвалення поєднання DM (записи сховища `*-allowFrom`) застосовуються лише до доступу DM; авторизація відправника в групі залишається явно прив’язаною до групових allowlist. - - Discord: allowlist використовує `channels.discord.guilds..channels`. - - Slack: allowlist використовує `channels.slack.channels`. - - Matrix: allowlist використовує `channels.matrix.groups`. Надавайте перевагу ідентифікаторам кімнат або псевдонімам; пошук назви приєднаної кімнати виконується за найкращою спробою, а нерозв’язані назви ігноруються під час виконання. Використовуйте `channels.matrix.groupAllowFrom`, щоб обмежити відправників; allowlist `users` для окремих кімнат також підтримуються. - - Групові DM керуються окремо (`channels.discord.dm.*`, `channels.slack.dm.*`). - - Allowlist Telegram може зіставляти ідентифікатори користувачів (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) або імена користувачів (`"@alice"` чи `"alice"`); префікси не чутливі до регістру. - - Типово `groupPolicy: "allowlist"`; якщо ваш груповий allowlist порожній, групові повідомлення блокуються. - - Безпека під час виконання: коли блок провайдера повністю відсутній (`channels.` відсутній), політика груп повертається до режиму fail-closed (зазвичай `allowlist`) замість успадкування `channels.defaults.groupPolicy`. + + - `groupPolicy` окремий від перевірки згадки (яка вимагає @згадки). + - WhatsApp/Telegram/Signal/iMessage/Microsoft Teams/Zalo: використовуйте `groupAllowFrom` (резервний варіант: явний `allowFrom`). + - Схвалення сполучення приватних повідомлень (записи сховища `*-allowFrom`) застосовуються лише до доступу до приватних повідомлень; авторизація відправника в групі залишається явно прив’язаною до групових списків дозволених. + - Discord: список дозволених використовує `channels.discord.guilds..channels`. + - Slack: список дозволених використовує `channels.slack.channels`. + - Matrix: список дозволених використовує `channels.matrix.groups`. Віддавайте перевагу ідентифікаторам або псевдонімам кімнат; пошук назви приєднаної кімнати виконується за принципом найкращої спроби, а нерозв’язані назви ігноруються під час виконання. Використовуйте `channels.matrix.groupAllowFrom`, щоб обмежити відправників; також підтримуються списки дозволених `users` для окремих кімнат. + - Групові приватні повідомлення керуються окремо (`channels.discord.dm.*`, `channels.slack.dm.*`). + - Список дозволених Telegram може збігатися з ідентифікаторами користувачів (`"123456789"`, `"telegram:123456789"`, `"tg:123456789"`) або іменами користувачів (`"@alice"` чи `"alice"`); префікси не чутливі до регістру. + - Значення за замовчуванням — `groupPolicy: "allowlist"`; якщо ваш груповий список дозволених порожній, групові повідомлення блокуються. + - Безпека під час виконання: коли блок провайдера повністю відсутній (`channels.` відсутній), групова політика повертається до режиму закриття в разі невизначеності (зазвичай `allowlist`) замість успадкування `channels.defaults.groupPolicy`. -Коротка ментальна модель (порядок оцінювання групових повідомлень): +Коротка модель для розуміння (порядок оцінювання групових повідомлень): `groupPolicy` (open/disabled/allowlist). - - Allowlist груп (`*.groups`, `*.groupAllowFrom`, allowlist, специфічний для каналу). + + Групові списки дозволених (`*.groups`, `*.groupAllowFrom`, список дозволених для конкретного каналу). - - Шлюзування за згадкою (`requireMention`, `/activation`). + + Перевірка згадки (`requireMention`, `/activation`). -## Шлюзування за згадкою (типово) +## Вимога згадки (за замовчуванням) -Групові повідомлення потребують згадки, якщо це не перевизначено для окремої групи. Типові значення зберігаються для кожної підсистеми в `*.groups."*"`. +Групові повідомлення вимагають згадки, якщо це не перевизначено для окремої групи. Значення за замовчуванням задаються для кожної підсистеми в `*.groups."*"`. -Відповідь на повідомлення бота вважається неявною згадкою, коли канал підтримує метадані відповіді. Цитування повідомлення бота також може вважатися неявною згадкою в каналах, які надають метадані цитати. Поточні вбудовані випадки включають Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser. +Відповідь на повідомлення бота вважається неявною згадкою, коли канал підтримує метадані відповіді. Цитування повідомлення бота також може вважатися неявною згадкою в каналах, які надають метадані цитування. Поточні вбудовані випадки включають Telegram, WhatsApp, Slack, Discord, Microsoft Teams і ZaloUser. ```json5 { @@ -330,40 +333,40 @@ otherwise -> reply ``` - - - `mentionPatterns` — це безпечні regex-шаблони без урахування регістру; недійсні шаблони та небезпечні форми з вкладеним повторенням ігноруються. - - Поверхні, які надають явні згадки, усе одно проходять; шаблони є резервним варіантом. + + - `mentionPatterns` — безпечні regex-шаблони без урахування регістру; недійсні шаблони та небезпечні форми вкладеного повторення ігноруються. + - Поверхні, які надають явні згадки, усе одно проходять; шаблони є запасним варіантом. - Перевизначення для окремого агента: `agents.list[].groupChat.mentionPatterns` (корисно, коли кілька агентів спільно використовують групу). - - Шлюз згадок застосовується лише тоді, коли виявлення згадок можливе (налаштовано нативні згадки або `mentionPatterns`). - - Контекст промпта групового чату переносить розв’язану інструкцію тихої відповіді в кожному ході; файли робочої області не мають дублювати механіку `NO_REPLY`. + - Відсікання за згадкою застосовується лише тоді, коли виявлення згадки можливе (налаштовані нативні згадки або `mentionPatterns`). + - Контекст групового чату в промпті переносить розв’язану інструкцію тихої відповіді на кожному ході; файли робочого простору не мають дублювати механіку `NO_REPLY`. - Групи, де дозволені тихі відповіді, трактують чисті порожні або лише reasoning-ходи моделі як тихі, еквівалентні `NO_REPLY`. Прямі чати роблять те саме лише тоді, коли прямі тихі відповіді явно дозволені; інакше порожні відповіді залишаються невдалими ходами агента. - Типові значення Discord містяться в `channels.discord.guilds."*"` (можна перевизначити для окремої гільдії/каналу). - - Контекст історії групи обгортається однаково для всіх каналів і є **лише pending** (повідомлення, пропущені через шлюз згадок); використовуйте `messages.groupChat.historyLimit` для глобального типового значення та `channels..historyLimit` (або `channels..accounts.*.historyLimit`) для перевизначень. Установіть `0`, щоб вимкнути. + - Контекст історії групи уніфіковано обгортається в усіх каналах і є **лише pending** (повідомлення, пропущені через відсікання за згадкою); використовуйте `messages.groupChat.historyLimit` для глобального типового значення та `channels..historyLimit` (або `channels..accounts.*.historyLimit`) для перевизначень. Установіть `0`, щоб вимкнути. -## Обмеження інструментів для групи/каналу (необов’язково) +## Обмеження інструментів для груп/каналів (необов’язково) Деякі конфігурації каналів підтримують обмеження того, які інструменти доступні **всередині конкретної групи/кімнати/каналу**. - `tools`: дозволити/заборонити інструменти для всієї групи. -- `toolsBySender`: перевизначення за відправником у межах групи. Використовуйте явні префікси ключів: `id:`, `e164:`, `username:`, `name:` і wildcard `"*"`. Застарілі ключі без префікса все ще приймаються й зіставляються лише як `id:`. +- `toolsBySender`: перевизначення для окремих відправників у межах групи. Використовуйте явні префікси ключів: `id:`, `e164:`, `username:`, `name:` і wildcard `"*"`. Застарілі ключі без префікса досі приймаються й зіставляються лише як `id:`. -Порядок розв’язання (найконкретніше перемагає): +Порядок розв’язання (найспецифічніше перемагає): - Збіг `toolsBySender` групи/каналу. + Збіг групового/канального `toolsBySender`. - `tools` групи/каналу. + Груповий/канальний `tools`. - Збіг типового (`"*"`) `toolsBySender`. + Типовий (`"*"`) збіг `toolsBySender`. - Типові (`"*"`) `tools`. + Типовий (`"*"`) `tools`. @@ -388,18 +391,18 @@ otherwise -> reply ``` -Обмеження інструментів для групи/каналу застосовуються на додачу до глобальної політики інструментів або політики інструментів агента (заборона все одно перемагає). Деякі канали використовують інше вкладення для кімнат/каналів (наприклад, Discord `guilds.*.channels.*`, Slack `channels.*`, Microsoft Teams `teams.*.channels.*`). +Обмеження інструментів для груп/каналів застосовуються на додачу до глобальної політики інструментів або політики інструментів агента (заборона все одно переважає). Деякі канали використовують іншу вкладеність для кімнат/каналів (наприклад, Discord `guilds.*.channels.*`, Slack `channels.*`, Microsoft Teams `teams.*.channels.*`). ## Списки дозволених груп -Коли налаштовано `channels.whatsapp.groups`, `channels.telegram.groups` або `channels.imessage.groups`, ключі діють як список дозволених груп. Використовуйте `"*"`, щоб дозволити всі групи, водночас установивши типову поведінку згадок. +Коли налаштовано `channels.whatsapp.groups`, `channels.telegram.groups` або `channels.imessage.groups`, ключі діють як список дозволених груп. Використовуйте `"*"`, щоб дозволити всі групи й водночас установити типову поведінку згадок. -Поширена плутанина: схвалення спарювання DM — це не те саме, що авторизація групи. Для каналів, які підтримують спарювання DM, сховище спарювань розблоковує лише DM. Групові команди все ще потребують явної авторизації відправника групи з конфігураційних списків дозволених, таких як `groupAllowFrom`, або задокументованого резервного варіанта конфігурації для цього каналу. +Поширена плутанина: схвалення сполучення в DM — це не те саме, що авторизація групи. Для каналів, які підтримують сполучення DM, сховище сполучень розблоковує лише DM. Групові команди все одно потребують явної авторизації відправника групи зі списків дозволених у конфігурації, таких як `groupAllowFrom`, або задокументованого запасного варіанта конфігурації для цього каналу. -Поширені наміри (копіюйте/вставляйте): +Поширені наміри (копіювати/вставити): @@ -460,37 +463,37 @@ otherwise -> reply ## Поля контексту -Вхідні payload-и групи задають: +Вхідні payload-и груп установлюють: - `ChatType=group` - `GroupSubject` (якщо відомо) - `GroupMembers` (якщо відомо) -- `WasMentioned` (результат шлюзу згадок) -- Теми форуму Telegram також включають `MessageThreadId` і `IsForum`. +- `WasMentioned` (результат відсікання за згадкою) +- Теми форуму Telegram також включають `MessageThreadId` та `IsForum`. Нотатки для окремих каналів: -- BlueBubbles може необов’язково збагачувати безіменних учасників групи macOS з локальної бази даних Contacts перед заповненням `GroupMembers`. Це вимкнено за замовчуванням і запускається лише після проходження звичайного групового шлюзу. +- BlueBubbles може необов’язково збагачувати неназваних учасників груп macOS із локальної бази даних Контактів перед заповненням `GroupMembers`. Це вимкнено за замовчуванням і запускається лише після проходження звичайного відсікання групи. -Системний промпт агента включає вступ для групи на першому ході нової групової сесії. Він нагадує моделі відповідати як людина, уникати Markdown-таблиць, мінімізувати порожні рядки й дотримуватися звичайних інтервалів чату, а також не вводити буквальні послідовності `\n`. Назви груп і мітки учасників із каналів відображаються як огороджені ненадійні метадані, а не як вбудовані системні інструкції. +Системний промпт агента містить вступ про групу на першому ході нової групової сесії. Він нагадує моделі відповідати як людина, уникати Markdown-таблиць, мінімізувати порожні рядки та дотримуватися звичайних інтервалів чату, а також уникати введення буквальних послідовностей `\n`. Назви груп і мітки учасників, отримані з каналу, відображаються як fenced недовірені метадані, а не як вбудовані системні інструкції. ## Особливості iMessage -- Надавайте перевагу `chat_id:` під час маршрутизації або внесення до списку дозволених. -- Перелічити чати: `imsg chats --limit 20`. +- Віддавайте перевагу `chat_id:` під час маршрутизації або внесення до списку дозволених. +- Список чатів: `imsg chats --limit 20`. - Відповіді групи завжди повертаються до того самого `chat_id`. ## Системні промпти WhatsApp -Див. [WhatsApp](/uk/channels/whatsapp#system-prompts) щодо канонічних правил системних промптів WhatsApp, включно з розв’язанням групових і прямих промптів, поведінкою wildcard та семантикою перевизначення облікового запису. +Див. [WhatsApp](/uk/channels/whatsapp#system-prompts) для канонічних правил системних промптів WhatsApp, зокрема розв’язання групових і прямих промптів, поведінки wildcard і семантики перевизначення акаунта. ## Особливості WhatsApp -Див. [Групові повідомлення](/uk/channels/group-messages) щодо поведінки, специфічної лише для WhatsApp (вставлення історії, подробиці обробки згадок). +Див. [Групові повідомлення](/uk/channels/group-messages) щодо поведінки, специфічної лише для WhatsApp (вставлення історії, деталі обробки згадок). ## Пов’язане -- [Групи трансляції](/uk/channels/broadcast-groups) +- [Групи розсилки](/uk/channels/broadcast-groups) - [Маршрутизація каналів](/uk/channels/channel-routing) - [Групові повідомлення](/uk/channels/group-messages) -- [Спарювання](/uk/channels/pairing) +- [Сполучення](/uk/channels/pairing) diff --git a/docs/uk/gateway/config-channels.md b/docs/uk/gateway/config-channels.md index 54d0ea6a7..8bf4cbb79 100644 --- a/docs/uk/gateway/config-channels.md +++ b/docs/uk/gateway/config-channels.md @@ -1,53 +1,56 @@ --- read_when: - - Налаштування Plugin для каналу (автентифікація, контроль доступу, кілька облікових записів) - - Усунення неполадок із ключами конфігурації для окремих каналів - - Аудит політики приватних повідомлень, політики груп або керування доступом за згадками + - Налаштування Plugin каналу (автентифікація, контроль доступу, кілька облікових записів) + - Усунення проблем із ключами конфігурації для кожного каналу + - Аудит політики прямих повідомлень, політики груп або доступу за згадками summary: 'Конфігурація каналів: контроль доступу, сполучення, ключі для кожного каналу в Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо' title: Конфігурація — канали x-i18n: - generated_at: "2026-04-29T10:10:45Z" + generated_at: "2026-04-30T13:59:33Z" model: gpt-5.5 provider: openai - source_hash: e16ab50020711aac8e06cd234739ac7b566420cf7ce8621c0aca12c22484f07f + source_hash: aba14cb43e1fe914cc7c03f41bed1b5915cc6b2ad8e0f1d47f58b7e98c1b3915 source_path: gateway/config-channels.md workflow: 16 --- -Ключі конфігурації окремих каналів у `channels.*`. Охоплює доступ до DM і груп, налаштування кількох облікових записів, mention gating і ключі окремих каналів для Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших вбудованих Plugin каналів. +Ключі конфігурації для кожного каналу в `channels.*`. Охоплює доступ до DM і груп, +налаштування кількох облікових записів, шлюзування згадок і ключі для кожного каналу Slack, Discord, +Telegram, WhatsApp, Matrix, iMessage та інших вбудованих Plugin каналів. -Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див. [Довідник конфігурації](/uk/gateway/configuration-reference). +Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див. +[Довідник конфігурації](/uk/gateway/configuration-reference). ## Канали -Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`). +Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не задано `enabled: false`). ### Доступ до DM і груп -Усі канали підтримують політики DM і групові політики: +Усі канали підтримують політики DM і політики груп: | Політика DM | Поведінка | | ------------------- | --------------------------------------------------------------- | -| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити | -| `allowlist` | Лише відправники в `allowFrom` (або у сховищі дозволених сполучень) | -| `open` | Дозволити всі вхідні DM (потребує `allowFrom: ["*"]`) | -| `disabled` | Ігнорувати всі вхідні DM | +| `pairing` (default) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити | +| `allowlist` | Лише відправники в `allowFrom` (або в paired allow store) | +| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) | +| `disabled` | Ігнорувати всі вхідні DM | -| Групова політика | Поведінка | -| ---------------------- | ----------------------------------------------------- | -| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволених | -| `open` | Обійти групові списки дозволених (mention-gating все одно застосовується) | -| `disabled` | Блокувати всі повідомлення груп/кімнат | +| Політика групи | Поведінка | +| --------------------- | ----------------------------------------------------- | +| `allowlist` (default) | Лише групи, що відповідають налаштованому списку дозволених | +| `open` | Обійти списки дозволених груп (шлюзування згадок усе ще застосовується) | +| `disabled` | Блокувати всі повідомлення груп/кімнат | -`channels.defaults.groupPolicy` задає типове значення, коли `groupPolicy` провайдера не встановлено. -Коди сполучення спливають через 1 годину. Очікувані запити на сполучення DM обмежені **3 на канал**. -Якщо блок провайдера повністю відсутній (`channels.` відсутній), групова політика під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску. +`channels.defaults.groupPolicy` задає стандартне значення, коли `groupPolicy` провайдера не встановлено. +Коди сполучення закінчують дію через 1 годину. Очікувані запити на сполучення DM обмежено **3 на канал**. +Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску. ### Перевизначення моделі каналу -Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналу застосовується, коли сесія ще не має перевизначення моделі (наприклад, встановленого через `/model`). +Використовуйте `channels.modelByChannel`, щоб закріпити певні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналів застосовується, коли сесія ще не має перевизначення моделі (наприклад, заданого через `/model`). ```json5 { @@ -70,7 +73,7 @@ x-i18n: ### Типові значення каналів і Heartbeat -Використовуйте `channels.defaults` для спільної поведінки групової політики та Heartbeat між провайдерами: +Використовуйте `channels.defaults` для спільної поведінки політики груп і Heartbeat між провайдерами: ```json5 { @@ -88,11 +91,11 @@ x-i18n: } ``` -- `channels.defaults.groupPolicy`: резервна групова політика, коли `groupPolicy` на рівні провайдера не встановлено. -- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включати весь цитований контекст/контекст гілки/історії), `allowlist` (включати лише контекст від відправників зі списку дозволених), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для окремого каналу: `channels..contextVisibility`. +- `channels.defaults.groupPolicy`: резервна політика групи, коли `groupPolicy` на рівні провайдера не встановлено. +- `channels.defaults.contextVisibility`: стандартний режим видимості додаткового контексту для всіх каналів. Значення: `all` (стандартно, включати весь контекст цитат/тредів/історії), `allowlist` (включати лише контекст від відправників зі списку дозволених), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`. - `channels.defaults.heartbeat.showOk`: включати справні статуси каналів у вивід Heartbeat. - `channels.defaults.heartbeat.showAlerts`: включати погіршені/помилкові статуси у вивід Heartbeat. -- `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикатора. +- `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикаторів. ### WhatsApp @@ -154,10 +157,10 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Вихідні команди типово використовують обліковий запис `default`, якщо він існує; інакше перший налаштований ID облікового запису (відсортований). -- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, коли він відповідає налаштованому ID облікового запису. -- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`. -- Перевизначення для окремого облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. +- Вихідні команди стандартно використовують обліковий запис `default`, якщо він існує; інакше перший налаштований id облікового запису (відсортований). +- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір стандартного облікового запису, коли він збігається з налаштованим id облікового запису. +- Застарілий auth dir Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`. +- Перевизначення для облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -216,11 +219,11 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символьні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервом для типового облікового запису. -- `apiRoot` є лише коренем Telegram Bot API. Використовуйте `https://api.telegram.org` або власний self-hosted/proxy корінь, а не `https://api.telegram.org/bot`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot`. -- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому ID облікового запису. -- У налаштуваннях із кількома обліковими записами (2+ ID облікових записів) задайте явний типовий (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний. -- `configWrites: false` блокує ініційовані Telegram записи конфігурації (міграції ID супергруп, `/config set|unset`). +- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; symlinks відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для стандартного облікового запису. +- `apiRoot` є лише коренем Telegram Bot API. Використовуйте `https://api.telegram.org` або власний self-hosted/proxy root, а не `https://api.telegram.org/bot`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot`. +- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір стандартного облікового запису, коли він збігається з налаштованим id облікового запису. +- У налаштуваннях із кількома обліковими записами (2+ id облікових записів) задайте явний стандартний (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний. +- `configWrites: false` блокує записи конфігурації, ініційовані Telegram (міграції ID супергруп, `/config set|unset`). - Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). - Попередні перегляди потоків Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах). - Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry). @@ -325,37 +328,37 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервом для облікового запису за замовчуванням. -- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; параметри повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime. -- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ID облікового запису. -- Використовуйте `user:` (DM) або `channel:` (канал guild) для цілей доставки; голі числові ID відхиляються. -- Слаги guild пишуться нижнім регістром із заміною пробілів на `-`; ключі каналів використовують назву зі слагом (без `#`). Віддавайте перевагу ID guild. -- Повідомлення, створені ботами, за замовчуванням ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються). +- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням. +- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime. +- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим id облікового запису. +- Використовуйте `user:` (DM) або `channel:` (канал гільдії) для цілей доставки; голі числові ID відхиляються. +- Слаги гільдій мають нижній регістр із пробілами, заміненими на `-`; ключі каналів використовують назву у вигляді слага (без `#`). Надавайте перевагу ID гільдій. +- Повідомлення, створені ботами, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються). - `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here). -- `maxLinesPerMessage` (за замовчуванням 17) розбиває високі повідомлення, навіть якщо вони менші за 2000 символів. -- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до потоків Discord: - - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до потоків (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація) - - `idleHours`: перевизначення Discord для автоматичного inactivity auto-unfocus у годинах (`0` вимикає) +- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення, навіть якщо вони менші за 2000 символів. +- `channels.discord.threadBindings` керує маршрутизацією Discord, прив’язаною до тредів: + - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до тредів (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також прив’язана доставка/маршрутизація) + - `idleHours`: перевизначення Discord для автоматичного unfocus через неактивність у годинах (`0` вимикає) - `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає) - - `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив’язки потоку `sessions_spawn({ thread: true })` -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і потоків (використовуйте ID каналу/потоку в `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). -- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів Discord components v2. -- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов’язкові перевизначення auto-join + LLM + TTS. + - `spawnSubagentSessions`: opt-in перемикач для автоматичного створення/прив’язування тредів `sessions_spawn({ thread: true })` +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і тредів (використовуйте id каналу/треду в `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings). +- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів компонентів Discord v2. +- `channels.discord.voice` вмикає розмови голосових каналів Discord і необов’язкові перевизначення auto-join + LLM + TTS. - `channels.discord.voice.model` необов’язково перевизначає модель LLM, що використовується для відповідей у голосових каналах Discord. -- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються до параметрів DAVE `@discordjs/voice` (за замовчуванням `true` і `24`). -- OpenClaw додатково намагається відновити приймання голосу, виходячи з голосової сесії та повторно приєднуючись після повторних помилок дешифрування. +- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються напряму до опцій DAVE `@discordjs/voice` (типово `true` і `24`). +- OpenClaw додатково намагається відновлювати приймання голосу, виходячи з голосової сесії та повторно приєднуючись після повторних помилок дешифрування. - `channels.discord.streaming` є канонічним ключем режиму stream. Застарілі значення `streamMode` і булеві `streaming` автоматично мігруються. -- `channels.discord.autoPresence` зіставляє доступність runtime з присутністю бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. -- `channels.discord.dangerouslyAllowNameMatching` знову вмикає змінне зіставлення імен/тегів (режим сумісності break-glass). +- `channels.discord.autoPresence` відображає доступність runtime на присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу. +- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає змінне зіставлення імен/тегів (режим сумісності break-glass). - `channels.discord.execApprovals`: нативна для Discord доставка схвалень exec і авторизація схвалювачів. - - `enabled`: `true`, `false` або `"auto"` (за замовчуванням). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо пропущено, використовується `commands.ownerAllowFrom`. + - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Discord, яким дозволено схвалювати exec-запити. Якщо пропущено, використовується резервний варіант `commands.ownerAllowFrom`. - `agentFilter`: необов’язковий allowlist ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів. - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex). - - `target`: куди надсилати запити схвалення. `"dm"` (за замовчуванням) надсилає в DM схвалювачам, `"channel"` надсилає у вихідний канал, `"both"` надсилає в обидва. Коли ціль містить `"channel"`, кнопки можуть використовувати лише визначені схвалювачі. - - `cleanupAfterResolve`: коли `true`, видаляє DM зі схваленнями після схвалення, відхилення або timeout. + - `target`: куди надсилати запити схвалення. `"dm"` (типово) надсилає в DM схвалювачам, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва місця. Коли target включає `"channel"`, кнопки можуть використовувати лише визначені схвалювачі. + - `cleanupAfterResolve`: коли `true`, видаляє DM зі схваленнями після схвалення, відмови або timeout. -**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, за замовчуванням), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень). +**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень). ### Google Chat @@ -386,11 +389,11 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- JSON сервісного облікового запису: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`). -- SecretRef сервісного облікового запису також підтримується (`serviceAccountRef`). -- Резерви env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. +- JSON облікового запису служби: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`). +- SecretRef облікового запису служби також підтримується (`serviceAccountRef`). +- Резервні env-варіанти: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. - Використовуйте `spaces/` або `users/` для цілей доставки. -- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає змінне зіставлення email principal (режим сумісності break-glass). +- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає змінне зіставлення email principal (режим сумісності break-glass). ### Slack @@ -462,44 +465,44 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резерву env облікового запису за замовчуванням). -- **HTTP mode** потребує `botToken` плюс `signingSecret` (на root або для кожного облікового запису). -- `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API приймача Bolt. Використовуйте його лише під час розслідування timeout ping/pong або поведінки застарілого websocket. +- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного env-варіанта облікового запису за замовчуванням). +- **HTTP-режим** потребує `botToken` плюс `signingSecret` (на корені або для окремого облікового запису). +- `socketMode` передає налаштування транспорту Socket Mode Slack SDK до публічного API отримувача Bolt. Використовуйте це лише під час розслідування timeout ping/pong або застарілої поведінки websocket. - `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext рядки або об’єкти SecretRef. -- Знімки облікових записів Slack показують поля джерела/статусу для кожного credential, такі як - `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode — +- Знімки облікових записів Slack відкривають поля source/status для кожних облікових даних, як-от + `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP-режимі `signingSecretStatus`. `configured_unavailable` означає, що обліковий запис - налаштований через SecretRef, але поточний шлях команди/runtime не зміг - визначити значення секрету. -- `configWrites: false` блокує записи конфігурації, ініційовані Slack. -- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ID облікового запису. -- `channels.slack.streaming.mode` є канонічним ключем режиму stream Slack. `channels.slack.streaming.nativeTransport` керує нативним streaming-транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються. + налаштовано через SecretRef, але поточний шлях команди/runtime не зміг + отримати значення секрету. +- `configWrites: false` блокує ініційовані Slack записи конфігурації. +- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим id облікового запису. +- `channels.slack.streaming.mode` є канонічним ключем режиму Slack stream. `channels.slack.streaming.nativeTransport` керує нативним streaming-транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються. - Використовуйте `user:` (DM) або `channel:` для цілей доставки. -**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `all`, `allowlist` (з `reactionAllowlist`). +**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`). -**Ізоляція сесій потоків:** `thread.historyScope` є окремою для кожного потоку (за замовчуванням) або спільною для каналу. `thread.inheritParent` копіює transcript батьківського каналу до нових потоків. +**Ізоляція тредових сесій:** `thread.historyScope` є потредовим (типово) або спільним у межах каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові треди. -- Нативний streaming Slack разом зі Slack assistant-style статусом потоку "is typing..." потребують цільового потоку відповіді. DM верхнього рівня за замовчуванням залишаються поза потоком, тому вони використовують `typingReaction` або звичайну доставку замість preview у стилі потоку. -- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode емодзі Slack, наприклад `"hourglass_flowing_sand"`. +- Нативний streaming Slack разом зі статусом треду "is typing..." у стилі асистента Slack потребують цільового треду для відповіді. DM верхнього рівня типово лишаються поза тредами, тому вони використовують `typingReaction` або звичайну доставку замість тредового попереднього перегляду. +- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode emoji Slack, як-от `"hourglass_flowing_sand"`. - `channels.slack.execApprovals`: нативна для Slack доставка схвалень exec і авторизація схвалювачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). -| Група дій | За замовчуванням | Примітки | -| ------------ | ---------------- | ------------------------------ | -| reactions | увімкнено | React + список реакцій | -| messages | увімкнено | Читати/надсилати/редагувати/видаляти | -| pins | увімкнено | Закріпити/відкріпити/список | -| memberInfo | увімкнено | Інформація про учасника | -| emojiList | увімкнено | Список власних емодзі | +| Група дій | Типово | Примітки | +| ------------ | ------- | ---------------------- | +| reactions | увімкнено | Реагувати + показувати реакції | +| messages | увімкнено | Читати/надсилати/редагувати/видаляти | +| pins | увімкнено | Закріпити/відкріпити/показати | +| memberInfo | увімкнено | Інформація про учасника | +| emojiList | увімкнено | Список користувацьких emoji | ### Mattermost -Mattermost постачається як bundled plugin у поточних релізах OpenClaw. Старіші або -custom builds можуть встановити поточний npm package за допомогою +Mattermost постачається як вбудований plugin у поточних релізах OpenClaw. Старіші або +custom-збірки можуть встановити поточний npm-пакет за допомогою `openclaw plugins install @openclaw/mattermost`; якщо npm повідомляє, що -пакет, який належить OpenClaw, deprecated, використовуйте bundled plugin або локальний checkout, -доки не буде опубліковано новіший npm package. +пакет, яким володіє OpenClaw, deprecated, використовуйте вбудований plugin або локальний checkout +доки не буде опубліковано новіший npm-пакет. ```json5 { @@ -529,23 +532,23 @@ custom builds можуть встановити поточний npm package з } ``` -Режими чату: `oncall` (відповідати на @-згадку, за замовчуванням), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з trigger prefix). +Режими чату: `oncall` (відповідати на @-mention, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера). -Коли нативні команди Mattermost увімкнено: +Коли ввімкнено нативні команди Mattermost: -- `commands.callbackPath` має бути path (наприклад `/api/channels/mattermost/command`), а не повним URL. -- `commands.callbackUrl` має вказувати на endpoint OpenClaw Gateway і бути доступним із сервера Mattermost. -- Нативні slash callback автентифікуються за допомогою токенів кожної команди, повернутих - Mattermost під час реєстрації slash command. Якщо реєстрація не вдається або жодні - команди не активовано, OpenClaw відхиляє callback з +- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL-адресою. +- `commands.callbackUrl` має резолвитися до endpoint Gateway OpenClaw і бути доступним із сервера Mattermost. +- Нативні slash callbacks автентифікуються токенами для кожної команди, які повертає + Mattermost під час реєстрації slash command. Якщо реєстрація завершується невдало або жодні + команди не активовано, OpenClaw відхиляє callbacks із `Unauthorized: invalid command token.` -- Для приватних/tailnet/internal callback-хостів Mattermost може вимагати, щоб - `ServiceSettings.AllowedUntrustedInternalConnections` містив callback host/domain. - Використовуйте значення host/domain, а не повні URL. -- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost. +- Для приватних/tailnet/внутрішніх callback-хостів Mattermost може вимагати, + щоб `ServiceSettings.AllowedUntrustedInternalConnections` включав callback-хост/домен. + Використовуйте значення хоста/домену, а не повні URL-адреси. +- `channels.mattermost.configWrites`: дозволити або заборонити ініційовані Mattermost записи конфігурації. - `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах. -- `channels.mattermost.groups..requireMention`: перевизначення mention-gating для кожного каналу (`"*"` для default). -- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ID облікового запису. +- `channels.mattermost.groups..requireMention`: перевизначення mention-gating для окремого каналу (`"*"` для типового значення). +- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим id облікового запису. ### Signal @@ -566,15 +569,15 @@ custom builds можуть встановити поточний npm package з } ``` -**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`). +**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`). - `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal. - `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Signal. -- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. +- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису. ### BlueBubbles -BlueBubbles — рекомендований шлях iMessage (на базі Plugin, налаштовується в `channels.bluebubbles`). +BlueBubbles — рекомендований шлях iMessage (на основі Plugin, налаштовується в `channels.bluebubbles`). ```json5 { @@ -590,8 +593,8 @@ BlueBubbles — рекомендований шлях iMessage (на базі Pl ``` - Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте дескриптор BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). +- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису. +- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до сталих сеансів ACP. Використовуйте дескриптор BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). - Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles). ### iMessage @@ -620,15 +623,15 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а } ``` -- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. +- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису. -- Потребує Full Disk Access до БД Messages. -- Віддавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів. +- Потрібен Full Disk Access до бази даних Messages. +- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб перелічити чати. - `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP. -- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`). -- SCP використовує сувору перевірку ключа хоста, тож переконайтеся, що ключ хоста ретранслятора вже є в `~/.ssh/known_hosts`. +- `attachmentRoots` і `remoteAttachmentRoots` обмежують вхідні шляхи вкладень (типово: `/Users/*/Library/Messages/Attachments`). +- SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ хоста ретранслятора вже існує в `~/.ssh/known_hosts`. - `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований дескриптор або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). +- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до сталих сеансів ACP. Використовуйте нормалізований дескриптор або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [Агенти ACP](/uk/tools/acp-agents#channel-specific-settings). @@ -641,7 +644,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix працює на базі Plugin і налаштовується в `channels.matrix`. +Matrix працює на основі Plugin і налаштовується в `channels.matrix`. ```json5 { @@ -672,24 +675,24 @@ Matrix працює на базі Plugin і налаштовується в `cha ``` - Автентифікація токеном використовує `accessToken`; автентифікація паролем використовує `userId` + `password`. -- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити це за допомогою `channels.matrix.accounts..proxy`. -- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver. `proxy` і ця мережева згода є незалежними засобами керування. +- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити його за допомогою `channels.matrix.accounts..proxy`. +- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver. `proxy` і ця мережева згода є незалежними елементами керування. - `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у конфігураціях із кількома обліковими записами. -- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати й нові запрошення у стилі DM ігноруються, доки ви не задасте `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`. -- `channels.matrix.execApprovals`: нативна для Matrix доставка схвалень exec і авторизація схвалювачів. - - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. - - `approvers`: ідентифікатори користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено схвалювати запити exec. - - `agentFilter`: необов’язковий список дозволених ідентифікаторів агентів. Опустіть, щоб пересилати схвалення для всіх агентів. - - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex). - - `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (початкова кімната) або `"both"`. - - Перевизначення для окремого облікового запису: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільно використовує сеанс за маршрутизованим співрозмовником, тоді як `per-room` ізолює кожну DM-кімнату. -- Перевірки стану Matrix і живі пошуки в каталозі використовують ту саму політику проксі, що й трафік під час виконання. -- Повну конфігурацію Matrix, правила таргетингу й приклади налаштування задокументовано в [Matrix](/uk/channels/matrix). +- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати й нові запрошення у стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`. +- `channels.matrix.execApprovals`: доставка схвалень виконання, нативна для Matrix, і авторизація схвалювачів. + - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення виконання активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено схвалювати запити виконання. + - `agentFilter`: необов’язковий список дозволених ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів. + - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або регулярний вираз). + - `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (вихідна кімната) або `"both"`. + - Перевизначення для окремих облікових записів: `channels.matrix.accounts..execApprovals`. +- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільно використовує сеанс за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату. +- Перевірки стану Matrix і живі пошуки каталогу використовують ту саму політику проксі, що й трафік під час виконання. +- Повну конфігурацію Matrix, правила націлювання та приклади налаштування задокументовано в [Matrix](/uk/channels/matrix). ### Microsoft Teams -Microsoft Teams працює на базі Plugin і налаштовується в `channels.msteams`. +Microsoft Teams працює на основі Plugin і налаштовується в `channels.msteams`. ```json5 { @@ -705,11 +708,11 @@ Microsoft Teams працює на базі Plugin і налаштовуєтьс ``` - Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`. -- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для окремих команд/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams). +- Повну конфігурацію Microsoft Teams (облікові дані, Webhook, політику DM/груп, перевизначення для окремих команд/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams). ### IRC -IRC працює на базі Plugin і налаштовується в `channels.irc`. +IRC працює на основі Plugin і налаштовується в `channels.irc`. ```json5 { @@ -731,12 +734,12 @@ IRC працює на базі Plugin і налаштовується в `channe ``` - Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. -- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc). +- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ID облікового запису. +- Повну конфігурацію каналу IRC (хост/порт/TLS/канали/списки дозволених/фільтрацію за згадками) задокументовано в [IRC](/uk/channels/irc). ### Кілька облікових записів (усі канали) -Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`): +Запускайте кілька облікових записів на канал (кожен із власним `accountId`): ```json5 { @@ -757,29 +760,31 @@ IRC працює на базі Plugin і налаштовується в `channe } ``` -- `default` використовується, коли `accountId` опущено (CLI + маршрутизація). +- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація). - Env-токени застосовуються лише до **типового** облікового запису. - Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремого облікового запису. -- Використовуйте `bindings[].match.accountId`, щоб спрямовувати кожен обліковий запис до іншого агента. -- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або onboarding каналу), залишаючись на однообліковій конфігурації каналу верхнього рівня, OpenClaw спочатку переносить однооблікові значення верхнього рівня, прив’язані до облікового запису, у мапу облікових записів каналу, щоб початковий обліковий запис продовжив працювати. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. -- Наявні прив’язки лише каналу (без `accountId`) і далі збігаються з типовим обліковим записом; прив’язки з областю облікового запису залишаються необов’язковими. -- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи однооблікові значення верхнього рівня, прив’язані до облікового запису, у просунутий обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. +- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента. +- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або onboarding каналу), залишаючись на конфігурації каналу верхнього рівня з одним обліковим записом, OpenClaw спершу переносить значення верхнього рівня для одного облікового запису, що належать до області облікового запису, у мапу облікових записів каналу, щоб початковий обліковий запис продовжив працювати. Більшість каналів переносять їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. +- Наявні прив’язки лише до каналу (без `accountId`) продовжують відповідати типовому обліковому запису; прив’язки в області облікового запису залишаються необов’язковими. +- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, що належать до області облікового запису, у підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. ### Інші канали Plugin Багато каналів Plugin налаштовуються як `channels.` і задокументовані на своїх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). Дивіться повний індекс каналів: [Канали](/uk/channels). -### Фільтрація згадок у групових чатах +### Фільтрація згадок у груповому чаті -Для групових повідомлень типово **потрібна згадка** (згадка в метаданих або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. +Групові повідомлення типово **вимагають згадки** (згадка в метаданих або безпечні шаблони регулярних виразів). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage. -Видимі відповіді керуються окремо. Для групових/канальних кімнат типовим є `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw все одно обробляє хід, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату потребує `message(action=send)`. Задавайте `"automatic"` лише тоді, коли вам потрібна застаріла поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимих відповідей лише через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`. +Видимі відповіді керуються окремо. Групові/канальні кімнати типово мають `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw усе одно обробляє хід, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнаті потребує `message(action=send)`. Установлюйте `"automatic"` лише тоді, коли хочете застарілу поведінку, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимої відповіді лише через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`. + +Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапускайте лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнено в розгортанні. **Типи згадок:** -- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі self-chat WhatsApp. -- **Текстові шаблони**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони й небезпечні вкладені повторення ігноруються. +- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі самочату WhatsApp. +- **Текстові шаблони**: безпечні шаблони регулярних виразів у `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечні вкладені повторення ігноруються. - Фільтрація згадок застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон). ```json5 @@ -797,9 +802,9 @@ IRC працює на базі Plugin і налаштовується в `channe } ``` -`messages.groupChat.historyLimit` задає глобальне типове значення. Канали можуть перевизначати його за допомогою `channels..historyLimit` (або для окремого облікового запису). Задайте `0`, щоб вимкнути. +`messages.groupChat.historyLimit` задає глобальне типове значення. Канали можуть перевизначати його за допомогою `channels..historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути. -`messages.visibleReplies` — це глобальне типове значення для source-turn; `messages.groupChat.visibleReplies` перевизначає його для групових/канальних source-turn. Списки дозволів каналів і фільтрація згадок усе одно визначають, чи буде оброблено хід. +`messages.visibleReplies` — це глобальне типове значення для source-turn; `messages.groupChat.visibleReplies` перевизначає його для групових/канальних source-turn. Списки дозволених каналів і фільтрація згадок усе ще визначають, чи обробляється хід. #### Ліміти історії DM @@ -816,13 +821,13 @@ IRC працює на базі Plugin і налаштовується в `channe } ``` -Порядок визначення: перевизначення для окремого DM → типове значення провайдера → без ліміту (усе зберігається). +Розв’язання: перевизначення для окремого DM → типове значення провайдера → без ліміту (усе зберігається). Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. -#### Режим self-chat +#### Режим самочату -Додайте власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові шаблони): +Додайте власний номер у `allowFrom`, щоб увімкнути режим самочату (ігнорує нативні @-згадки, відповідає лише на текстові шаблони): ```json5 { @@ -870,34 +875,34 @@ IRC працює на базі Plugin і налаштовується в `channe } ``` - + - Цей блок налаштовує поверхні команд. Поточний вбудований і комплектний каталог команд див. у [Slash Commands](/uk/tools/slash-commands). -- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналам/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовані на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands). +- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналам/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовано на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands). - Текстові команди мають бути **окремими** повідомленнями з початковим `/`. -- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим. -- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, залишає Slack вимкненим. -- Перевизначення для окремого каналу: `channels.discord.commands.native` (логічне значення або `"auto"`). `false` очищає раніше зареєстровані команди. +- `native: "auto"` вмикає нативні команди для Discord/Telegram і залишає Slack вимкненим. +- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram і залишає Slack вимкненим. +- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди. - Перевизначайте реєстрацію нативних Skills для окремого каналу за допомогою `channels..commands.nativeSkills`. -- `channels.telegram.customCommands` додає додаткові пункти меню бота Telegram. -- `bash: true` вмикає `! ` для оболонки хоста. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`. -- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; `/config show` лише для читання залишається доступним звичайним клієнтам оператора з областю запису. -- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, керованого OpenClaw, у `mcp.servers`. -- `plugins: true` вмикає `/plugins` для виявлення, встановлення й керування ввімкненням/вимкненням Plugin. -- `channels..configWrites` обмежує мутації конфігурації для окремого каналу (за замовчуванням: true). -- Для багаторахункових каналів `channels..accounts..configWrites` також обмежує записи, що націлені на цей обліковий запис (наприклад, `/allowlist --config --account ` або `/config set channels..accounts....`). -- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. За замовчуванням: `true`. -- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він окремий від `allowFrom`. -- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному промпті. Задайте `ownerDisplaySecret`, щоб керувати хешуванням. -- `allowFrom` задається для кожного провайдера. Якщо встановлено, це **єдине** джерело авторизації (списки дозволених каналів/сполучення та `useAccessGroups` ігноруються). -- `useAccessGroups: false` дає командам змогу обходити політики груп доступу, коли `allowFrom` не задано. +- `channels.telegram.customCommands` додає додаткові пункти меню Telegram-бота. +- `bash: true` вмикає `! ` для оболонки хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.`. +- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступний лише для читання `/config show` залишається доступним звичайним операторським клієнтам із правом запису. +- `mcp: true` вмикає `/mcp` для конфігурації керованого OpenClaw сервера MCP у `mcp.servers`. +- `plugins: true` вмикає `/plugins` для пошуку Plugin, встановлення та елементів керування ввімкненням/вимкненням. +- `channels..configWrites` обмежує зміни конфігурації для окремого каналу (типово: true). +- Для каналів із кількома обліковими записами `channels..accounts..configWrites` також обмежує записи, спрямовані на цей обліковий запис (наприклад, `/allowlist --config --account ` або `/config set channels..accounts....`). +- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. Типово: `true`. +- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів, доступних лише власнику. Він окремий від `allowFrom`. +- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному промпті. Установіть `ownerDisplaySecret`, щоб керувати хешуванням. +- `allowFrom` задається для кожного провайдера. Коли його задано, він є **єдиним** джерелом авторизації (списки дозволених каналів/сполучення та `useAccessGroups` ігноруються). +- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не задано. - Мапа документації команд: - вбудований і комплектний каталог: [Slash Commands](/uk/tools/slash-commands) - - поверхні команд для окремих каналів: [Channels](/uk/channels) + - поверхні команд, специфічні для каналів: [Channels](/uk/channels) - команди QQ Bot: [QQ Bot](/uk/channels/qqbot) - команди сполучення: [Pairing](/uk/channels/pairing) - команда картки LINE: [LINE](/uk/channels/line) - - dreaming пам’яті: [Dreaming](/uk/concepts/dreaming) + - memory dreaming: [Dreaming](/uk/concepts/dreaming)