From 797e39eae2496c5d3141f1fcbebef8be34e68442 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sun, 3 May 2026 18:13:18 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/channels/discord.md | 540 ++++++++++++++--------------- docs/uk/gateway/config-channels.md | 356 ++++++++++--------- docs/uk/tools/slash-commands.md | 344 +++++++++--------- 3 files changed, 619 insertions(+), 621 deletions(-) diff --git a/docs/uk/channels/discord.md b/docs/uk/channels/discord.md index 8702b9c9d..cfc78eb27 100644 --- a/docs/uk/channels/discord.md +++ b/docs/uk/channels/discord.md @@ -1,49 +1,49 @@ --- read_when: - Робота над функціями каналу Discord -summary: Стан підтримки, можливості та конфігурація бота Discord +summary: Стан підтримки бота Discord, можливості та конфігурація title: Discord x-i18n: - generated_at: "2026-05-02T09:29:18Z" + generated_at: "2026-05-03T18:10:20Z" model: gpt-5.5 provider: openai - source_hash: 42223982a8bfd288d29a1f402b37141557718a407537011956b878b91b894e62 + source_hash: 7a323cd9035265d43aaf60252503a4712264e316b7da175a063bff4ec51f777d source_path: channels/discord.md workflow: 16 --- -Готово для особистих повідомлень і каналів гільдій через офіційний Discord Gateway. +Готово до приватних повідомлень і каналів гільдій через офіційний Discord gateway. - - Особисті повідомлення Discord за замовчуванням працюють у режимі спарювання. + + Приватні повідомлення Discord типово запускаються в режимі сполучення. - + Нативна поведінка команд і каталог команд. - Міжканальна діагностика та процес відновлення. + Міжканальна діагностика та процедура відновлення. ## Швидке налаштування -Вам потрібно створити нову програму з ботом, додати бота на свій сервер і спарувати його з OpenClaw. Рекомендуємо додати бота на власний приватний сервер. Якщо у вас його ще немає, [спочатку створіть його](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (виберіть **Create My Own > For me and my friends**). +Вам потрібно створити новий застосунок із ботом, додати бота на свій сервер і сполучити його з OpenClaw. Рекомендуємо додати бота на власний приватний сервер. Якщо у вас його ще немає, [спочатку створіть його](https://support.discord.com/hc/en-us/articles/204849977-How-do-I-create-a-server) (виберіть **Create My Own > For me and my friends**). - - Перейдіть до [Discord Developer Portal](https://discord.com/developers/applications) і натисніть **New Application**. Назвіть її, наприклад, "OpenClaw". + + Перейдіть до [Discord Developer Portal](https://discord.com/developers/applications) і натисніть **New Application**. Назвіть його, наприклад, "OpenClaw". - Натисніть **Bot** на бічній панелі. Установіть **Username** на ім’я, яким ви називаєте свого агента OpenClaw. + Натисніть **Bot** на бічній панелі. Установіть **Username** на ім'я, яким ви називаєте свого агента OpenClaw. - - Залишаючись на сторінці **Bot**, прокрутіть вниз до **Privileged Gateway Intents** і ввімкніть: + + Залишаючись на сторінці **Bot**, прокрутіть униз до **Privileged Gateway Intents** і увімкніть: - - **Message Content Intent** (обов’язково) - - **Server Members Intent** (рекомендовано; обов’язково для списків дозволених ролей і зіставлення імен з ID) - - **Presence Intent** (необов’язково; потрібно лише для оновлень присутності) + - **Message Content Intent** (обов'язково) + - **Server Members Intent** (рекомендовано; потрібно для списків дозволених ролей і зіставлення імен з ID) + - **Presence Intent** (необов'язково; потрібно лише для оновлень присутності) @@ -51,22 +51,22 @@ x-i18n: Прокрутіть назад угору на сторінці **Bot** і натисніть **Reset Token**. - Попри назву, це створює ваш перший токен — нічого не "скидається". + Попри назву, це створює ваш перший токен — нічого не "скидається." Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він знадобиться вам незабаром. - - Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL запрошення з потрібними дозволами, щоб додати бота на свій сервер. + + Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL запрошення з правильними дозволами, щоб додати бота на свій сервер. - Прокрутіть вниз до **OAuth2 URL Generator** і ввімкніть: + Прокрутіть униз до **OAuth2 URL Generator** і увімкніть: - `bot` - `applications.commands` - Нижче з’явиться розділ **Bot Permissions**. Увімкніть щонайменше: + Нижче з'явиться розділ **Bot Permissions**. Увімкніть щонайменше: **General Permissions** - View Channels @@ -75,33 +75,33 @@ x-i18n: - Read Message History - Embed Links - Attach Files - - Add Reactions (необов’язково) + - Add Reactions (необов'язково) - Це базовий набір для звичайних текстових каналів. Якщо ви плануєте писати в тредах Discord, зокрема у сценаріях форумів або медіаканалів, які створюють або продовжують тред, також увімкніть **Send Messages in Threads**. - Скопіюйте згенерований URL унизу, вставте його в браузер, виберіть свій сервер і натисніть **Continue**, щоб підключити. Тепер ви маєте бачити свого бота на сервері Discord. + Це базовий набір для звичайних текстових каналів. Якщо ви плануєте публікувати в гілках Discord, зокрема у workflows форумних або медіаканалів, які створюють або продовжують гілку, також увімкніть **Send Messages in Threads**. + Скопіюйте згенерований URL унизу, вставте його у браузер, виберіть свій сервер і натисніть **Continue**, щоб під'єднати. Тепер ви маєте бачити свого бота на сервері Discord. - Повернувшись у програму Discord, потрібно ввімкнути Developer Mode, щоб копіювати внутрішні ID. + Повернувшись у застосунок Discord, потрібно увімкнути Developer Mode, щоб копіювати внутрішні ID. - 1. Натисніть **User Settings** (іконка шестерні поруч із вашим аватаром) → **Advanced** → увімкніть **Developer Mode** - 2. Клацніть правою кнопкою миші **іконку сервера** на бічній панелі → **Copy Server ID** - 3. Клацніть правою кнопкою миші **власний аватар** → **Copy User ID** + 1. Натисніть **User Settings** (значок шестерні поруч із вашим аватаром) → **Advanced** → увімкніть **Developer Mode** + 2. Клацніть правою кнопкою вашу **іконку сервера** на бічній панелі → **Copy Server ID** + 3. Клацніть правою кнопкою ваш **власний аватар** → **Copy User ID** Збережіть свої **Server ID** і **User ID** поруч із Bot Token — на наступному кроці ви надішлете всі три до OpenClaw. - - Щоб спарювання працювало, Discord має дозволити вашому боту надсилати вам особисті повідомлення. Клацніть правою кнопкою миші **іконку сервера** → **Privacy Settings** → увімкніть **Direct Messages**. + + Щоб сполучення працювало, Discord має дозволяти вашому боту надсилати вам приватні повідомлення. Клацніть правою кнопкою вашу **іконку сервера** → **Privacy Settings** → увімкніть **Direct Messages**. - Це дозволяє учасникам сервера (зокрема ботам) надсилати вам особисті повідомлення. Залиште це ввімкненим, якщо хочете використовувати особисті повідомлення Discord з OpenClaw. Якщо ви плануєте використовувати лише канали гільдії, можете вимкнути особисті повідомлення після спарювання. + Це дає змогу учасникам сервера (включно з ботами) надсилати вам приватні повідомлення. Тримайте це увімкненим, якщо хочете використовувати приватні повідомлення Discord з OpenClaw. Якщо ви плануєте використовувати лише канали гільдій, можете вимкнути приватні повідомлення після сполучення. - - Токен вашого бота Discord є секретом (як пароль). Задайте його на машині, де працює OpenClaw, перш ніж писати своєму агенту. + + Ваш токен бота Discord є секретом (як пароль). Задайте його на машині, де працює OpenClaw, перш ніж писати своєму агенту. ```bash export DISCORD_BOT_TOKEN="YOUR_BOT_TOKEN" @@ -120,22 +120,22 @@ openclaw config patch --file ./discord.patch.json5 openclaw gateway ``` - Якщо OpenClaw уже працює як фоновий сервіс, перезапустіть його через програму OpenClaw для Mac або зупинивши й повторно запустивши процес `openclaw gateway run`. - Для встановлень як керованого сервісу запустіть `openclaw gateway install` з shell, де присутній `DISCORD_BOT_TOKEN`, або збережіть змінну в `~/.openclaw/.env`, щоб сервіс міг розв’язати env SecretRef після перезапуску. - Якщо ваш хост заблокований або обмежений за частотою запитів під час стартового пошуку програми Discord, задайте ID програми/клієнта Discord з Developer Portal, щоб запуск міг пропустити цей REST-виклик. Використовуйте `channels.discord.applicationId` для типового облікового запису або `channels.discord.accounts..applicationId`, коли запускаєте кількох ботів Discord. + Якщо OpenClaw уже працює як фонова служба, перезапустіть його через Mac-застосунок OpenClaw або зупинивши й повторно запустивши процес `openclaw gateway run`. + Для встановлень як керованої служби запустіть `openclaw gateway install` з оболонки, де присутній `DISCORD_BOT_TOKEN`, або збережіть змінну в `~/.openclaw/.env`, щоб служба могла розв'язати env SecretRef після перезапуску. + Якщо ваш хост заблоковано або обмежено за частотою запитів під час стартового пошуку застосунку Discord, задайте ID застосунку/клієнта Discord з Developer Portal, щоб під час запуску можна було пропустити цей REST-виклик. Використовуйте `channels.discord.applicationId` для типового облікового запису або `channels.discord.accounts..applicationId`, коли запускаєте кількох ботів Discord. - + - Поспілкуйтеся зі своїм агентом OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і повідомте йому. Якщо Discord є вашим першим каналом, натомість скористайтеся вкладкою CLI / config. + Поспілкуйтеся зі своїм агентом OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і повідомте йому це. Якщо Discord — ваш перший канал, натомість скористайтеся вкладкою CLI / config. > "I already set my Discord bot token in config. Please finish Discord setup with User ID `` and Server ID ``." - Якщо ви надаєте перевагу файловій конфігурації, задайте: + Якщо ви віддаєте перевагу файловій конфігурації, задайте: ```json5 { @@ -158,9 +158,9 @@ openclaw gateway DISCORD_BOT_TOKEN=... ``` - Для сценарного або віддаленого налаштування запишіть той самий блок JSON5 за допомогою `openclaw config patch --file ./discord.patch.json5 --dry-run`, а потім повторно запустіть без `--dry-run`. Значення `token` у відкритому тексті підтримуються. Значення SecretRef також підтримуються для `channels.discord.token` у провайдерах env/file/exec. Див. [Керування секретами](/uk/gateway/secrets). + Для скриптового або віддаленого налаштування запишіть той самий блок JSON5 за допомогою `openclaw config patch --file ./discord.patch.json5 --dry-run`, а потім повторно запустіть без `--dry-run`. Відкриті значення `token` підтримуються. Значення SecretRef також підтримуються для `channels.discord.token` через провайдери env/file/exec. Див. [Керування секретами](/uk/gateway/secrets). - Для кількох ботів Discord тримайте токен і ID програми кожного бота в його обліковому записі. Верхньорівневий `channels.discord.applicationId` успадковується обліковими записами, тому задавайте його там лише тоді, коли кожен обліковий запис має використовувати той самий ID програми. + Для кількох ботів Discord зберігайте кожен токен бота та ID застосунку в межах його облікового запису. Верхньорівневий `channels.discord.applicationId` успадковується обліковими записами, тому задавайте його там лише тоді, коли кожен обліковий запис має використовувати той самий ID застосунку. ```json5 { @@ -187,12 +187,12 @@ DISCORD_BOT_TOKEN=... - - Дочекайтеся, доки Gateway запрацює, а потім напишіть своєму боту в особисті повідомлення Discord. Він відповість кодом спарювання. + + Дочекайтеся, доки gateway запрацює, а потім надішліть приватне повідомлення своєму боту в Discord. Він відповість кодом сполучення. - Надішліть код спарювання своєму агенту у вашому наявному каналі: + Надішліть код сполучення своєму агенту у вашому наявному каналі: > "Approve this Discord pairing code: ``" @@ -206,26 +206,26 @@ openclaw pairing approve discord - Коди спарювання спливають через 1 годину. + Коди сполучення спливають через 1 годину. - Тепер ви маєте змогу спілкуватися зі своїм агентом у Discord через особисті повідомлення. + Тепер ви маєте змогу спілкуватися зі своїм агентом у Discord через приватні повідомлення. -Розв’язання токенів враховує обліковий запис. Значення токена в конфігурації мають пріоритет над env fallback. `DISCORD_BOT_TOKEN` використовується лише для типового облікового запису. -Якщо два ввімкнені облікові записи Discord розв’язуються в той самий токен бота, OpenClaw запускає лише один монітор Gateway для цього токена. Токен із конфігурації має пріоритет над типовим env fallback; інакше перемагає перший увімкнений обліковий запис, а дубльований обліковий запис повідомляється як вимкнений. -Для розширених вихідних викликів (дії інструмента повідомлень/каналу) явний `token` для кожного виклику використовується для цього виклику. Це стосується дій надсилання та дій стилю читання/перевірки (наприклад read/search/fetch/thread/pins/permissions). Політика облікового запису та налаштування повторних спроб усе ще беруться з вибраного облікового запису в активному runtime-знімку. +Розв'язання токена враховує обліковий запис. Значення токена з конфігурації мають пріоритет над env fallback. `DISCORD_BOT_TOKEN` використовується лише для типового облікового запису. +Якщо два увімкнені облікові записи Discord розв'язуються до того самого токена бота, OpenClaw запускає лише один монітор gateway для цього токена. Токен із конфігурації має пріоритет над типовим env fallback; інакше перший увімкнений обліковий запис перемагає, а дубльований обліковий запис повідомляється як вимкнений. +Для розширених вихідних викликів (інструмент повідомлень/дії каналу) явний `token` для кожного виклику використовується для цього виклику. Це стосується дій надсилання й дій стилю читання/перевірки (наприклад read/search/fetch/thread/pins/permissions). Політика облікового запису й налаштування повторних спроб усе ще беруться з вибраного облікового запису в активному runtime snapshot. ## Рекомендовано: налаштуйте робочий простір гільдії -Коли особисті повідомлення запрацюють, ви можете налаштувати свій сервер Discord як повний робочий простір, де кожен канал отримує власну сесію агента зі своїм контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот. +Коли приватні повідомлення запрацюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал отримує власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот. - Це дає вашому агенту змогу відповідати в будь-якому каналі на вашому сервері, а не лише в особистих повідомленнях. + Це дає вашому агенту змогу відповідати в будь-якому каналі на вашому сервері, а не лише в приватних повідомленнях. @@ -255,9 +255,9 @@ openclaw pairing approve discord - За замовчуванням ваш агент відповідає в каналах гільдії лише коли його @mentioned. Для приватного сервера ви, ймовірно, хочете, щоб він відповідав на кожне повідомлення. + Типово ваш агент відповідає в каналах гільдії лише коли його згадують через @mention. Для приватного сервера ви, ймовірно, хочете, щоб він відповідав на кожне повідомлення. - У каналах гільдії звичайні фінальні відповіді асистента за замовчуванням залишаються приватними. Видимий вивід Discord потрібно надсилати явно за допомогою інструмента `message`, щоб агент міг за замовчуванням лишатися непомітним і писати лише тоді, коли вирішить, що відповідь у каналі корисна. + У каналах гільдій звичайні фінальні відповіді асистента типово залишаються приватними. Видимий вивід у Discord потрібно надсилати явно за допомогою інструмента `message`, тож агент може типово лишатися спостерігачем і публікувати лише тоді, коли вирішить, що відповідь у каналі корисна. @@ -287,65 +287,65 @@ openclaw pairing approve discord - - За замовчуванням довготривала пам’ять (MEMORY.md) завантажується лише в сесіях особистих повідомлень. Канали гільдії не завантажують MEMORY.md автоматично. + + Типово довготривала пам'ять (MEMORY.md) завантажується лише в сесіях приватних повідомлень. Канали гільдій не завантажують MEMORY.md автоматично. > "When I ask questions in Discord channels, use memory_search or memory_get if you need long-term context from MEMORY.md." - Якщо вам потрібен спільний контекст у кожному каналі, помістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони ін’єктуються в кожну сесію). Тримайте довготривалі нотатки в `MEMORY.md` і звертайтеся до них за потреби через інструменти пам’яті. + Якщо вам потрібен спільний контекст у кожному каналі, помістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони ін'єктуються в кожну сесію). Тримайте довготривалі нотатки в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам'яті. -Тепер створіть кілька каналів на своєму сервері Discord і починайте спілкуватися. Ваш агент може бачити назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що пасує вашому робочому процесу. +Тепер створіть кілька каналів на своєму сервері Discord і почніть спілкуватися. Ваш агент бачить назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що відповідає вашому workflow. ## Модель виконання -- Gateway володіє з’єднанням Discord. -- Маршрутизація відповідей детермінована: вхідні відповіді Discord повертаються до Discord. -- Метадані guild/каналу Discord додаються до запиту моделі як недовірений - контекст, а не як видимий користувачеві префікс відповіді. Якщо модель скопіює цей конверт - назад, OpenClaw вилучить скопійовані метадані з вихідних відповідей і з - майбутнього контексту відтворення. -- За замовчуванням (`session.dmScope=main`) прямі чати спільно використовують головну сесію агента (`agent:main:main`). -- Канали guild ізольовані ключами сесій (`agent::discord:channel:`). -- Group DM за замовчуванням ігноруються (`channels.discord.dm.groupEnabled=false`). -- Нативні slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), водночас передаючи `CommandTargetSessionKey` до маршрутизованої сесії розмови. -- Доставка текстових оголошень cron/heartbeat до Discord використовує остаточну - видиму для асистента відповідь один раз. Медіа та структуровані payload компонентів залишаються - багатоповідомленнєвими, коли агент емiтує кілька deliverable payloads. +- Gateway володіє підключенням Discord. +- Маршрутизація відповідей детермінована: вхідні відповіді Discord повертаються в Discord. +- Метадані гільдії/каналу Discord додаються до підказки моделі як ненадійний + контекст, а не як видимий користувачу префікс відповіді. Якщо модель копіює цю оболонку + назад, OpenClaw прибирає скопійовані метадані з вихідних відповідей і з + майбутнього контексту повторного відтворення. +- За замовчуванням (`session.dmScope=main`) прямі чати спільно використовують основну сесію агента (`agent:main:main`). +- Канали гільдій мають ізольовані ключі сесій (`agent::discord:channel:`). +- Групові DM за замовчуванням ігноруються (`channels.discord.dm.groupEnabled=false`). +- Нативні slash-команди виконуються в ізольованих командних сесіях (`agent::discord:slash:`), водночас зберігаючи `CommandTargetSessionKey` для спрямованої розмовної сесії. +- Доставка текстових оголошень cron/heartbeat до Discord використовує фінальну + видиму асистенту відповідь один раз. Медіа та структуровані payload-и компонентів залишаються + багатоповідомними, коли агент видає кілька payload-ів, придатних до доставки. -## Forum-канали +## Канали форумів -Forum-канали та медіаканали Discord приймають лише дописи в thread. OpenClaw підтримує два способи їх створення: +Форуми та медіаканали Discord приймають лише дописи в тредах. OpenClaw підтримує два способи їх створення: -- Надішліть повідомлення до батьківського forum (`channel:`), щоб автоматично створити thread. Назва thread використовує перший непорожній рядок вашого повідомлення. -- Використайте `openclaw message thread create`, щоб створити thread напряму. Не передавайте `--message-id` для forum-каналів. +- Надішліть повідомлення батьківському форуму (`channel:`), щоб автоматично створити тред. Назва треду використовує перший непорожній рядок вашого повідомлення. +- Використайте `openclaw message thread create`, щоб створити тред напряму. Не передавайте `--message-id` для каналів форумів. -Приклад: надіслати до батьківського forum, щоб створити thread +Приклад: надіслати до батьківського форуму, щоб створити тред ```bash openclaw message send --channel discord --target channel: \ --message "Topic title\nBody of the post" ``` -Приклад: явно створити forum thread +Приклад: явно створити тред форуму ```bash openclaw message thread create --channel discord --target channel: \ --thread-name "Topic title" --message "Body of the post" ``` -Батьківські forum не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самого thread (`channel:`). +Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте до самого треду (`channel:`). ## Інтерактивні компоненти -OpenClaw підтримує контейнери Discord components v2 для повідомлень агента. Використовуйте інструмент повідомлень із payload `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення та дотримуються наявних налаштувань Discord `replyToMode`. +OpenClaw підтримує контейнери компонентів Discord v2 для повідомлень агента. Використовуйте інструмент повідомлень із payload-ом `components`. Результати взаємодії маршрутизуються назад до агента як звичайні вхідні повідомлення та дотримуються наявних налаштувань Discord `replyToMode`. Підтримувані блоки: @@ -353,21 +353,21 @@ OpenClaw підтримує контейнери Discord components v2 для п - Рядки дій дозволяють до 5 кнопок або одне меню вибору - Типи вибору: `string`, `user`, `role`, `mentionable`, `channel` -За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, списків вибору та форм до завершення їхнього строку дії. +За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, списків вибору та форм до закінчення їхнього строку дії. -Щоб обмежити, хто може натиснути кнопку, установіть `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Коли це налаштовано, користувачі без збігу отримують ефемерну відмову. +Щоб обмежити, хто може натиснути кнопку, установіть `allowedUsers` для цієї кнопки (ідентифікатори користувачів Discord, теги або `*`). Коли це налаштовано, користувачі без збігу отримують ефемерну відмову. -Slash-команди `/model` і `/models` відкривають інтерактивний вибір моделі з випадаючими списками провайдера, моделі та сумісного runtime, а також кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарілість замість реєстрації моделей із чату. Відповідь вибору є ефемерною, і використовувати її може лише користувач, який її викликав. +Slash-команди `/model` і `/models` відкривають інтерактивний вибір моделі з випадаючими списками провайдера, моделі та сумісного runtime, а також кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарілість замість реєстрації моделей із чату. Відповідь вибору ефемерна, і використовувати її може лише користувач, який її викликав. -Вкладення файлів: +Файлові вкладення: -- Блоки `file` мають вказувати на посилання вкладення (`attachment://`) +- Блоки `file` мають указувати на посилання вкладення (`attachment://`) - Надайте вкладення через `media`/`path`/`filePath` (один файл); використовуйте `media-gallery` для кількох файлів -- Використовуйте `filename`, щоб перевизначити назву завантаження, коли вона має відповідати посиланню вкладення +- Використовуйте `filename`, щоб перевизначити назву завантаження, коли вона має збігатися з посиланням вкладення Модальні форми: -- Додайте `components.modal` із до 5 полями +- Додайте `components.modal` з до 5 полями - Типи полів: `text`, `checkbox`, `radio`, `select`, `role-select`, `user-select` - OpenClaw автоматично додає кнопку запуску @@ -428,8 +428,8 @@ Slash-команди `/model` і `/models` відкривають інтерак ## Контроль доступу та маршрутизація - - `channels.discord.dmPolicy` керує доступом DM. `channels.discord.allowFrom` є канонічним allowlist для DM. + + `channels.discord.dmPolicy` керує доступом DM. `channels.discord.allowFrom` є канонічним списком дозволених DM. - `pairing` (за замовчуванням) - `allowlist` @@ -445,21 +445,21 @@ Slash-команди `/model` і `/models` відкривають інтерак - Іменовані облікові записи успадковують `channels.discord.allowFrom`, коли їхні власні `allowFrom` і застарілий `dm.allowFrom` не задані. - Іменовані облікові записи не успадковують `channels.discord.accounts.default.allowFrom`. - Застарілі `channels.discord.dm.policy` і `channels.discord.dm.allowFrom` усе ще зчитуються для сумісності. `openclaw doctor --fix` мігрує їх до `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу. + Застарілі `channels.discord.dm.policy` і `channels.discord.dm.allowFrom` досі читаються для сумісності. `openclaw doctor --fix` переносить їх у `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу. Формат цілі DM для доставки: - `user:` - згадка `<@id>` - Голі числові ID зазвичай розв’язуються як ID каналів, коли активний стандартний канал, але ID, перелічені в ефективному DM `allowFrom` облікового запису, для сумісності трактуються як цілі user DM. + Голі числові ідентифікатори зазвичай розпізнаються як ідентифікатори каналів, коли активне значення каналу за замовчуванням, але ідентифікатори, перелічені в ефективному DM `allowFrom` облікового запису, трактуються як цілі користувацьких DM для сумісності. - + DM Discord можуть використовувати динамічні записи `accessGroup:` у `channels.discord.allowFrom`. - Імена груп доступу спільні для каналів повідомлень. Використовуйте `type: "message.senders"` для статичної групи, учасники якої виражені у звичайному синтаксисі `allowFrom` кожного каналу, або `type: "discord.channelAudience"`, коли поточна аудиторія `ViewChannel` каналу Discord має динамічно визначати членство. Спільну поведінку груп доступу задокументовано тут: [Групи доступу](/uk/channels/access-groups). + Назви груп доступу спільні для каналів повідомлень. Використовуйте `type: "message.senders"` для статичної групи, члени якої виражаються в нормальному синтаксисі `allowFrom` кожного каналу, або `type: "discord.channelAudience"`, коли поточна аудиторія `ViewChannel` каналу Discord має динамічно визначати членство. Спільну поведінку груп доступу задокументовано тут: [Групи доступу](/uk/channels/access-groups). ```json5 { @@ -482,7 +482,7 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Текстовий канал Discord не має окремого списку учасників. `type: "discord.channelAudience"` моделює членство так: відправник DM є учасником налаштованої guild і наразі має ефективний дозвіл `ViewChannel` на налаштованому каналі після застосування ролей і перевизначень каналу. + Текстовий канал Discord не має окремого списку учасників. `type: "discord.channelAudience"` моделює членство так: відправник DM є членом налаштованої гільдії та наразі має ефективний дозвіл `ViewChannel` на налаштованому каналі після застосування ролей і перевизначень каналу. Приклад: дозволити будь-кому, хто бачить `#maintainers`, надсилати DM боту, водночас залишаючи DM закритими для всіх інших. @@ -525,29 +525,29 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Пошуки закривають доступ у разі помилки. Якщо Discord повертає `Missing Access`, пошук учасника завершується невдало або канал належить іншій guild, відправник DM вважається неавторизованим. + Пошуки закривають доступ у разі помилки. Якщо Discord повертає `Missing Access`, пошук учасника завершується невдало або канал належить іншій гільдії, відправник DM вважається неавторизованим. - Увімкніть **Server Members Intent** у Discord Developer Portal для бота, коли використовуєте групи доступу на основі аудиторії каналу. DM не містять стану учасника guild, тому OpenClaw розв’язує учасника через Discord REST під час авторизації. + Увімкніть **Server Members Intent** у Discord Developer Portal для бота, коли використовуєте групи доступу аудиторії каналу. DM не містять стану учасника гільдії, тому OpenClaw визначає учасника через Discord REST під час авторизації. - - Обробка guild керується `channels.discord.groupPolicy`: + + Обробкою гільдій керує `channels.discord.groupPolicy`: - `open` - `allowlist` - `disabled` - Безпечна базова конфігурація, коли `channels.discord` існує, — це `allowlist`. + Безпечне базове значення, коли існує `channels.discord`, — `allowlist`. Поведінка `allowlist`: - - guild має відповідати `channels.discord.guilds` (переважно `id`, slug приймається) - - необов’язкові allowlist відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволені, коли вони збігаються з `users` АБО `roles` - - прямий збіг імен/тегів вимкнено за замовчуванням; увімкніть `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності - - імена/теги підтримуються для `users`, але ID безпечніші; `openclaw security audit` попереджає, коли використовуються записи імен/тегів - - якщо guild має налаштовані `channels`, канали поза списком відхиляються - - якщо guild не має блока `channels`, дозволені всі канали в цій allowlisted guild + - гільдія має відповідати `channels.discord.guilds` (переважно `id`, slug приймається) + - необов’язкові списки дозволених відправників: `users` (рекомендовано стабільні ідентифікатори) і `roles` (лише ідентифікатори ролей); якщо налаштовано будь-який із них, відправники дозволені, коли вони збігаються з `users` АБО `roles` + - прямий збіг за іменем/тегом вимкнений за замовчуванням; вмикайте `channels.discord.dangerouslyAllowNameMatching: true` лише як режим сумісності на крайній випадок + - імена/теги підтримуються для `users`, але ідентифікатори безпечніші; `openclaw security audit` попереджає, коли використовуються записи з іменами/тегами + - якщо для гільдії налаштовано `channels`, канали не зі списку відхиляються + - якщо гільдія не має блока `channels`, дозволені всі канали в цій гільдії зі списку дозволених Приклад: @@ -573,12 +573,12 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Якщо ви лише встановили `DISCORD_BOT_TOKEN` і не створили блок `channels.discord`, runtime fallback — `groupPolicy="allowlist"` (із попередженням у логах), навіть якщо `channels.defaults.groupPolicy` дорівнює `open`. + Якщо ви лише задаєте `DISCORD_BOT_TOKEN` і не створюєте блок `channels.discord`, runtime fallback — `groupPolicy="allowlist"` (із попередженням у логах), навіть якщо `channels.defaults.groupPolicy` має значення `open`. - - Повідомлення guild за замовчуванням проходять через перевірку згадки. + + Повідомлення гільдій за замовчуванням обмежені згадками. Виявлення згадок включає: @@ -586,22 +586,22 @@ Slash-команди `/model` і `/models` відкривають інтерак - налаштовані шаблони згадок (`agents.list[].groupChat.mentionPatterns`, fallback `messages.groupChat.mentionPatterns`) - неявну поведінку reply-to-bot у підтримуваних випадках - Під час написання вихідних повідомлень Discord використовуйте канонічний синтаксис згадок: `<@USER_ID>` для користувачів, `<#CHANNEL_ID>` для каналів і `<@&ROLE_ID>` для ролей. Не використовуйте застарілу форму згадки nickname `<@!USER_ID>`. + Під час написання вихідних повідомлень Discord використовуйте канонічний синтаксис згадок: `<@USER_ID>` для користувачів, `<#CHANNEL_ID>` для каналів і `<@&ROLE_ID>` для ролей. Не використовуйте застарілу форму згадки псевдоніма `<@!USER_ID>`. - `requireMention` налаштовується для кожної guild/каналу (`channels.discord.guilds...`). - `ignoreOtherMentions` необов’язково відкидає повідомлення, які згадують іншого користувача/роль, але не бота (крім @everyone/@here). + `requireMention` налаштовується для кожної гільдії/каналу (`channels.discord.guilds...`). + `ignoreOtherMentions` необов’язково відкидає повідомлення, що згадують іншого користувача/роль, але не бота (за винятком @everyone/@here). - Group DM: + Групові DM: - за замовчуванням: ігноруються (`dm.groupEnabled=false`) - - необов’язковий allowlist через `dm.groupChannels` (ID каналів або slugs) + - необов’язковий список дозволених через `dm.groupChannels` (ідентифікатори каналів або slug-и) ### Маршрутизація агентів на основі ролей -Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників guild Discord до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише guild. Якщо прив’язка також задає інші поля match (наприклад `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися. +Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників гільдії Discord до різних агентів за ідентифікатором ролі. Прив’язки на основі ролей приймають лише ідентифікатори ролей і оцінюються після прив’язок peer або parent-peer та перед прив’язками лише гільдії. Якщо прив’язка також задає інші поля відповідності (наприклад, `peer` + `guildId` + `roles`), мають збігатися всі налаштовані поля. ```json5 { @@ -625,51 +625,51 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` -## Нативні команди та авторизація команд +## Нативні команди та автентифікація команд - `commands.native` за замовчуванням має значення `"auto"` і ввімкнено для Discord. - Перевизначення для окремого каналу: `channels.discord.commands.native`. -- `commands.native=false` явно очищає раніше зареєстровані нативні команди Discord. -- Автентифікація нативних команд використовує ті самі списки дозволених користувачів і політики Discord, що й звичайна обробка повідомлень. -- Команди все ще можуть бути видимими в UI Discord для користувачів без авторизації; виконання все одно застосовує автентифікацію OpenClaw і повертає "not authorized". +- `commands.native=false` пропускає реєстрацію команд зі скісною рискою Discord і очищення під час запуску. Раніше зареєстровані команди можуть залишатися видимими в Discord, доки ви не видалите їх із застосунку Discord. +- Автентифікація нативних команд використовує ті самі списки дозволених і політики Discord, що й звичайна обробка повідомлень. +- Команди все ще можуть бути видимими в інтерфейсі Discord для користувачів без авторизації; виконання все одно застосовує автентифікацію OpenClaw і повертає "not authorized". -Див. [слеш-команди](/uk/tools/slash-commands), щоб переглянути каталог команд і їхню поведінку. +Див. [Команди зі скісною рискою](/uk/tools/slash-commands) для каталогу команд і їхньої поведінки. -Стандартні налаштування слеш-команд: +Налаштування команд зі скісною рискою за замовчуванням: - `ephemeral: true` -## Деталі функції +## Відомості про функції - - Discord підтримує теги відповіді у виводі агента: + + Discord підтримує теги відповідей у виводі агента: - `[[reply_to_current]]` - `[[reply_to:]]` - Керується через `channels.discord.replyToMode`: + Керується параметром `channels.discord.replyToMode`: - `off` (за замовчуванням) - `first` - `all` - `batched` - Примітка: `off` вимикає неявне створення гілок відповідей. Явні теги `[[reply_to_*]]` все одно враховуються. - `first` завжди додає неявне посилання нативної відповіді до першого вихідного повідомлення Discord за хід. - `batched` додає неявне посилання нативної відповіді Discord лише тоді, коли - вхідний хід був відкладеною групою з кількох повідомлень. Це корисно, - коли потрібні нативні відповіді переважно для неоднозначних активних чатів, а не для кожного - ходу з одним повідомленням. + Примітка: `off` вимикає неявне створення гілок відповідей. Явні теги `[[reply_to_*]]` усе одно враховуються. + `first` завжди додає неявне посилання на нативну відповідь до першого вихідного повідомлення Discord у ході цього звернення. + `batched` додає неявне посилання Discord на нативну відповідь лише тоді, коли + вхідне звернення було відкладеним пакетом із кількох повідомлень. Це корисно, + коли нативні відповіді потрібні переважно для неоднозначних швидких чатів, а не для кожного + звернення з одним повідомленням. - ID повідомлень відображаються в контексті/історії, щоб агенти могли націлюватися на конкретні повідомлення. + Ідентифікатори повідомлень доступні в контексті/історії, щоб агенти могли націлюватися на конкретні повідомлення. - + OpenClaw може транслювати чернетки відповідей, надсилаючи тимчасове повідомлення й редагуючи його в міру надходження тексту. `channels.discord.streaming` приймає `off` (за замовчуванням) | `partial` | `block` | `progress`. `progress` зіставляється з `partial` у Discord; `streamMode` є застарілим псевдонімом і мігрується автоматично. - За замовчуванням лишається `off`, оскільки редагування попереднього перегляду Discord швидко впираються в обмеження частоти, коли кілька ботів або Gateway використовують один обліковий запис. + За замовчуванням залишається `off`, бо редагування попереднього перегляду в Discord швидко впираються в обмеження частоти, коли кілька ботів або Gateway спільно використовують один обліковий запис. ```json5 { @@ -687,47 +687,47 @@ Slash-команди `/model` і `/models` відкривають інтерак ``` - `partial` редагує одне повідомлення попереднього перегляду в міру надходження токенів. - - `block` надсилає фрагменти розміру чернетки (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені `textChunkLimit`). - - Медіа, помилки й фінальні повідомлення з явною відповіддю скасовують очікувані редагування попереднього перегляду. - - `streaming.preview.toolProgress` (за замовчуванням `true`) керує тим, чи повторно використовують оновлення інструментів/прогресу повідомлення попереднього перегляду. + - `block` надсилає фрагменти розміром із чернетку (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені `textChunkLimit`). + - Медіа, помилки та фінальні відповіді з явною відповіддю скасовують очікувані редагування попереднього перегляду. + - `streaming.preview.toolProgress` (за замовчуванням `true`) керує тим, чи оновлення інструментів/прогресу повторно використовують повідомлення попереднього перегляду. - Трансляція попереднього перегляду підтримує лише текст; відповіді з медіа повертаються до звичайної доставки. Коли трансляцію `block` явно ввімкнено, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійної трансляції. + Потоковий попередній перегляд підтримує лише текст; відповіді з медіа повертаються до звичайної доставки. Коли потоковий режим `block` явно ввімкнено, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійного потокового передавання. - Контекст історії гільдії: + Контекст історії сервера: - `channels.discord.historyLimit` за замовчуванням `20` - - резервне значення: `messages.groupChat.historyLimit` + - резервний варіант: `messages.groupChat.historyLimit` - `0` вимикає - Елементи керування історією DM: + Керування історією приватних повідомлень: - `channels.discord.dmHistoryLimit` - `channels.discord.dms[""].historyLimit` Поведінка гілок: - - Гілки Discord маршрутизуються як сесії каналів і успадковують конфігурацію батьківського каналу, якщо її не перевизначено. - - Сесії гілок успадковують вибір `/model` на рівні сесії батьківського каналу як резервне значення лише для моделі; локальні для гілки вибори `/model` все одно мають пріоритет, а історія транскрипта батьківського каналу не копіюється, якщо успадкування транскрипта не ввімкнено. - - `channels.discord.thread.inheritParent` (за замовчуванням `false`) вмикає для нових автоматичних гілок початкове заповнення з батьківського транскрипта. Перевизначення для окремих облікових записів розташовані в `channels.discord.accounts..thread.inheritParent`. + - Гілки Discord маршрутизуються як сеанси каналів і успадковують конфігурацію батьківського каналу, якщо її не перевизначено. + - Сеанси гілок успадковують вибір `/model` на рівні сеансу батьківського каналу як резервний варіант лише для моделі; локальні для гілки вибори `/model` усе одно мають пріоритет, а історія батьківської транскрипції не копіюється, якщо не ввімкнено успадкування транскрипції. + - `channels.discord.thread.inheritParent` (за замовчуванням `false`) вмикає для нових автогілок початкове наповнення з батьківської транскрипції. Перевизначення для окремих облікових записів розміщуються в `channels.discord.accounts..thread.inheritParent`. - Реакції інструмента повідомлень можуть розв’язувати цілі DM `user:`. - `guilds..channels..requireMention: false` зберігається під час резервної активації на етапі відповіді. - Теми каналів вставляються як **ненадійний** контекст. Списки дозволених користувачів контролюють, хто може запускати агента, але не є повною межею редагування додаткового контексту. + Теми каналів додаються як **ненадійний** контекст. Списки дозволених обмежують, хто може запускати агента, але не є повною межею редагування додаткового контексту. - - Discord може прив’язати гілку до цілі сесії, щоб подальші повідомлення в цій гілці продовжували маршрутизуватися до тієї самої сесії (зокрема сесій субагентів). + + Discord може прив’язати гілку до цільового сеансу, щоб подальші повідомлення в цій гілці й далі маршрутизувалися до того самого сеансу (зокрема сеансів субагентів). Команди: - - `/focus ` прив’язати поточну/нову гілку до цілі субагента/сесії - - `/unfocus` видалити прив’язку поточної гілки + - `/focus ` прив’язати поточну/нову гілку до цілі субагента/сеансу + - `/unfocus` прибрати прив’язку поточної гілки - `/agents` показати активні запуски та стан прив’язки - - `/session idle ` переглянути/оновити автоматичне зняття фокуса через неактивність для сфокусованих прив’язок + - `/session idle ` переглянути/оновити автоматичне скасування фокуса через неактивність для сфокусованих прив’язок - `/session max-age ` переглянути/оновити жорсткий максимальний вік для сфокусованих прив’язок Конфігурація: @@ -759,17 +759,17 @@ Slash-команди `/model` і `/models` відкривають інтерак - `session.threadBindings.*` задає глобальні значення за замовчуванням. - `channels.discord.threadBindings.*` перевизначає поведінку Discord. - - `spawnSessions` керує автоматичним створенням/прив’язуванням гілок для `sessions_spawn({ thread: true })` і створенням гілок ACP. За замовчуванням: `true`. - - `defaultSpawnContext` керує нативним контекстом субагента для створень, прив’язаних до гілок. За замовчуванням: `"fork"`. + - `spawnSessions` керує автоматичним створенням/прив’язкою гілок для `sessions_spawn({ thread: true })` і створень гілок ACP. За замовчуванням: `true`. + - `defaultSpawnContext` керує нативним контекстом субагента для створень, прив’язаних до гілки. За замовчуванням: `"fork"`. - Застарілі ключі `spawnSubagentSessions`/`spawnAcpSessions` мігруються командою `openclaw doctor --fix`. - - Якщо прив’язки гілок вимкнено для облікового запису, `/focus` і пов’язані операції прив’язування гілок недоступні. + - Якщо прив’язки гілок вимкнено для облікового запису, `/focus` і пов’язані операції прив’язки гілок недоступні. - Див. [субагенти](/uk/tools/subagents), [агенти ACP](/uk/tools/acp-agents) і [довідник із конфігурації](/uk/gateway/configuration-reference). + Див. [Субагенти](/uk/tools/subagents), [Агенти ACP](/uk/tools/acp-agents) і [Довідник конфігурації](/uk/gateway/configuration-reference). - Для стабільних "always-on" робочих просторів ACP налаштуйте типізовані прив’язки ACP верхнього рівня, націлені на розмови Discord. + Для стабільних «завжди ввімкнених» робочих просторів ACP налаштуйте типізовані прив’язки ACP верхнього рівня, що націлюються на розмови Discord. Шлях конфігурації: @@ -825,23 +825,23 @@ Slash-команди `/model` і `/models` відкривають інтерак Примітки: - - `/acp spawn codex --bind here` прив’язує поточний канал або гілку на місці й лишає майбутні повідомлення в тій самій сесії ACP. Повідомлення гілки успадковують прив’язку батьківського каналу. - - У прив’язаному каналі або гілці `/new` і `/reset` скидають ту саму сесію ACP на місці. Тимчасові прив’язки гілок можуть перевизначати розв’язання цілі, поки активні. - - `spawnSessions` контролює створення/прив’язування дочірніх гілок через `--thread auto|here`. + - `/acp spawn codex --bind here` прив’язує поточний канал або гілку на місці й утримує майбутні повідомлення в тому самому сеансі ACP. Повідомлення гілки успадковують прив’язку батьківського каналу. + - У прив’язаному каналі або гілці `/new` і `/reset` скидають той самий сеанс ACP на місці. Тимчасові прив’язки гілок можуть перевизначати розв’язання цілі, доки вони активні. + - `spawnSessions` обмежує створення/прив’язку дочірніх гілок через `--thread auto|here`. - Див. [агенти ACP](/uk/tools/acp-agents), щоб дізнатися більше про поведінку прив’язування. + Див. [Агенти ACP](/uk/tools/acp-agents), щоб дізнатися подробиці поведінки прив’язок. - Режим сповіщень про реакції для окремої гільдії: + Режим сповіщень про реакції для кожного сервера: - `off` - `own` (за замовчуванням) - `all` - `allowlist` (використовує `guilds..users`) - Події реакцій перетворюються на системні події та додаються до маршрутизованої сесії Discord. + Події реакцій перетворюються на системні події та додаються до маршрутизованого сеансу Discord. @@ -857,7 +857,7 @@ Slash-команди `/model` і `/models` відкривають інтерак Примітки: - - Discord приймає unicode-емодзі або власні назви емодзі. + - Discord приймає Unicode-емодзі або назви користувацьких емодзі. - Використовуйте `""`, щоб вимкнути реакцію для каналу або облікового запису. @@ -882,7 +882,7 @@ Slash-команди `/model` і `/models` відкривають інтерак - Маршрутизуйте WebSocket-трафік Gateway Discord і стартові REST-запити (ID застосунку + розв’язання списку дозволених користувачів) через HTTP(S)-проксі з `channels.discord.proxy`. + Маршрутизуйте WebSocket-трафік Gateway Discord і стартові REST-запити (ідентифікатор застосунку + розв’язання списку дозволених) через HTTP(S)-проксі за допомогою `channels.discord.proxy`. ```json5 { @@ -930,15 +930,15 @@ Slash-команди `/model` і `/models` відкривають інтерак Примітки: - - списки дозволених користувачів можуть використовувати `pk:` - - відображувані імена учасників зіставляються за назвою/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true` - - пошуки використовують ID оригінального повідомлення й обмежені часовим вікном - - якщо пошук завершується невдало, проксійовані повідомлення вважаються повідомленнями бота й відкидаються, якщо `allowBots=true` не встановлено + - списки дозволених можуть використовувати `pk:` + - відображувані імена учасників зіставляються за іменем/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true` + - пошуки використовують ідентифікатор оригінального повідомлення й обмежені часовим вікном + - якщо пошук завершується невдало, проксійовані повідомлення вважаються повідомленнями ботів і відкидаються, якщо не встановлено `allowBots=true` - Використовуйте `mentionAliases`, коли агентам потрібні детерміновані вихідні згадки відомих користувачів Discord. Ключі — це handles без початкового `@`; значення — ID користувачів Discord. Невідомі handles, `@everyone`, `@here` і згадки всередині Markdown code spans лишаються без змін. + Використовуйте `mentionAliases`, коли агентам потрібні детерміновані вихідні згадки відомих користувачів Discord. Ключі є іменами користувачів без початкового `@`; значення є ідентифікаторами користувачів Discord. Невідомі імена, `@everyone`, `@here` і згадки всередині Markdown code spans залишаються без змін. ```json5 { @@ -962,7 +962,7 @@ Slash-команди `/model` і `/models` відкривають інтерак - Оновлення присутності застосовуються, коли ви задаєте поле статусу або активності, або коли вмикаєте автоматичну присутність. + Оновлення присутності застосовуються, коли ви задаєте поле статусу або активності, або коли вмикаєте автоприсутність. Приклад лише зі статусом: @@ -976,7 +976,7 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Приклад активності (кастомний статус є типом активності за замовчуванням): + Приклад активності (користувацький статус є типом активності за замовчуванням): ```json5 { @@ -989,7 +989,7 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Приклад трансляції: + Приклад потокової трансляції: ```json5 { @@ -1009,10 +1009,10 @@ Slash-команди `/model` і `/models` відкривають інтерак - 1: Транслює (потребує `activityUrl`) - 2: Слухає - 3: Дивиться - - 4: Кастомний (використовує текст активності як стан статусу; емодзі необов’язковий) + - 4: Користувацька (використовує текст активності як стан статусу; емодзі необов’язковий) - 5: Змагається - Приклад автоматичної присутності (сигнал стану runtime): + Приклад автоприсутності (сигнал стану середовища виконання): ```json5 { @@ -1029,7 +1029,7 @@ Slash-команди `/model` і `/models` відкривають інтерак } ``` - Автоматична присутність зіставляє доступність runtime зі статусом Discord: здоровий => online, погіршений або невідомий => idle, вичерпаний або недоступний => dnd. Необов’язкові перевизначення тексту: + Автоприсутність зіставляє доступність середовища виконання зі статусом Discord: healthy => online, degraded чи unknown => idle, exhausted чи unavailable => dnd. Необов’язкові перевизначення тексту: - `autoPresence.healthyText` - `autoPresence.degradedText` @@ -1037,35 +1037,35 @@ Slash-команди `/model` і `/models` відкривають інтерак - - Discord підтримує обробку схвалень на основі кнопок у DM і може необов’язково публікувати запити на схвалення в початковому каналі. + + Discord підтримує обробку затверджень за допомогою кнопок у DM і може за бажанням публікувати запити на затвердження у вихідному каналі. Шлях конфігурації: - `channels.discord.execApprovals.enabled` - `channels.discord.execApprovals.approvers` (необов’язково; за можливості повертається до `commands.ownerAllowFrom`) - - `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, за замовчуванням: `dm`) + - `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`) - `agentFilter`, `sessionFilter`, `cleanupAfterResolve` - Discord автоматично вмикає власні схвалення виконання, коли `enabled` не задано або має значення `"auto"` і можна визначити принаймні одного схвалювача з `execApprovals.approvers` або `commands.ownerAllowFrom`. Discord не виводить схвалювачів виконання з канального `allowFrom`, застарілого `dm.allowFrom` або `defaultTo` для особистих повідомлень. Установіть `enabled: false`, щоб явно вимкнути Discord як власний клієнт схвалення. + Discord автоматично вмикає нативні затвердження виконання, коли `enabled` не задано або має значення `"auto"` і можна визначити принаймні одного затверджувача: або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не виводить затверджувачів виконання з `allowFrom` каналу, застарілого `dm.allowFrom` чи `defaultTo` для особистих повідомлень. Установіть `enabled: false`, щоб явно вимкнути Discord як нативний клієнт затвердження. - Для чутливих групових команд лише для власника, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на схвалення та фінальні результати приватно. Спершу він пробує Discord DM, якщо власник, який викликав команду, має маршрут власника Discord; якщо він недоступний, OpenClaw повертається до першого доступного маршруту власника з `commands.ownerAllowFrom`, наприклад Telegram. + Для чутливих групових команд лише для власника, як-от `/diagnostics` і `/export-trajectory`, OpenClaw надсилає запити на затвердження та фінальні результати приватно. Спочатку він пробує Discord DM, коли власник, що викликав команду, має маршрут власника Discord; якщо він недоступний, використовується перший доступний маршрут власника з `commands.ownerAllowFrom`, наприклад Telegram. - Коли `target` має значення `channel` або `both`, запит на схвалення видно в каналі. Кнопками можуть користуватися лише визначені схвалювачі; інші користувачі отримують ефемерну відмову. Запити на схвалення містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ID каналу не можна вивести з ключа сеансу, OpenClaw повертається до доставки через DM. + Коли `target` має значення `channel` або `both`, запит на затвердження видно в каналі. Кнопки можуть використовувати лише визначені затверджувачі; інші користувачі отримують ефемерну відмову. Запити на затвердження містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ID каналу неможливо отримати з ключа сесії, OpenClaw повертається до доставки через DM. - Discord також відображає спільні кнопки схвалення, які використовують інші чат-канали. Власний адаптер Discord переважно додає маршрутизацію DM для схвалювачів і розсилання в канали. - Коли ці кнопки присутні, вони є основним UX схвалення; OpenClaw - має включати ручну команду `/approve` лише тоді, коли результат інструмента каже, - що схвалення в чаті недоступні або ручне схвалення є єдиним шляхом. - Якщо власне середовище виконання схвалення Discord не активне, OpenClaw залишає - локальну детерміновану підказку `/approve ` видимою. Якщо - середовище виконання активне, але власну картку не можна доставити жодній цілі, + Discord також рендерить спільні кнопки затвердження, які використовують інші чат-канали. Нативний адаптер Discord здебільшого додає маршрутизацію DM для затверджувачів і розсилання в канал. + Коли ці кнопки присутні, вони є основним UX затвердження; OpenClaw + має включати ручну команду `/approve` лише тоді, коли результат інструмента повідомляє, + що чат-затвердження недоступні або ручне затвердження є єдиним шляхом. + Якщо нативне середовище затвердження Discord не активне, OpenClaw залишає + локальний детермінований запит `/approve ` видимим. Якщо + середовище активне, але нативну картку неможливо доставити жодній цілі, OpenClaw надсилає резервне сповіщення в той самий чат із точною командою `/approve` - з очікуваного схвалення. + з очікуваного затвердження. - Автентифікація Gateway і визначення схвалень дотримуються спільного контракту клієнта Gateway (`plugin:` ID визначаються через `plugin.approval.resolve`; інші ID — через `exec.approval.resolve`). За замовчуванням схвалення спливають через 30 хвилин. + Автентифікація Gateway і визначення затвердження дотримуються спільного контракту клієнта Gateway (ID `plugin:` визначаються через `plugin.approval.resolve`; інші ID через `exec.approval.resolve`). Типово затвердження спливають через 30 хвилин. - Див. [схвалення виконання](/uk/tools/exec-approvals). + Див. [Затвердження виконання](/uk/tools/exec-approvals). @@ -1081,26 +1081,26 @@ Slash-команди `/model` і `/models` відкривають інтерак - модерація: `timeout`, `kick`, `ban` - присутність: `setPresence` -Дія `event-create` приймає необов’язковий параметр `image` (URL або локальний шлях до файлу), щоб установити обкладинку запланованої події. +Дія `event-create` приймає необов’язковий параметр `image` (URL або локальний шлях до файлу), щоб установити зображення обкладинки запланованої події. Шлюзи дій розташовані в `channels.discord.actions.*`. -Поведінка шлюзів за замовчуванням: +Типова поведінка шлюзів: -| Група дій | За замовчуванням | -| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------- | -| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | увімкнено | -| roles | вимкнено | -| moderation | вимкнено | -| presence | вимкнено | +| Група дій | Типово | +| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------- | +| reactions, messages, threads, pins, polls, search, memberInfo, roleInfo, channelInfo, channels, voiceStatus, events, stickers, emojiUploads, stickerUploads, permissions | увімкнено | +| roles | вимкнено | +| moderation | вимкнено | +| presence | вимкнено | -## Інтерфейс Components v2 +## UI компонентів v2 -OpenClaw використовує Discord components v2 для схвалень виконання та маркерів між контекстами. Дії повідомлень Discord також можуть приймати `components` для власного інтерфейсу (розширено; потребує створення компонентного payload через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані. +OpenClaw використовує компоненти Discord v2 для затверджень виконання та маркерів між контекстами. Дії повідомлень Discord також можуть приймати `components` для кастомного UI (розширений режим; потребує створення payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендовані. - `channels.discord.ui.components.accentColor` задає акцентний колір, який використовують контейнери компонентів Discord (hex). -- Задайте для кожного облікового запису через `channels.discord.accounts..ui.components.accentColor`. -- `embeds` ігноруються, коли присутні components v2. +- Налаштовуйте для кожного акаунта за допомогою `channels.discord.accounts..ui.components.accentColor`. +- `embeds` ігноруються, коли присутні компоненти v2. Приклад: @@ -1120,7 +1120,7 @@ OpenClaw використовує Discord components v2 для схвалень ## Голос -Discord має дві окремі голосові поверхні: голосові канали в реальному часі (безперервні розмови) та вкладення голосових повідомлень (формат попереднього перегляду хвильової форми). Gateway підтримує обидві. +Discord має дві окремі голосові поверхні: realtime **голосові канали** (безперервні розмови) і **вкладення голосових повідомлень** (формат попереднього перегляду хвилі). Gateway підтримує обидві. ### Голосові канали @@ -1128,12 +1128,12 @@ Discord має дві окремі голосові поверхні: голос 1. Увімкніть Message Content Intent у Discord Developer Portal. 2. Увімкніть Server Members Intent, коли використовуються списки дозволених ролей/користувачів. -3. Запросіть бота зі scopes `bot` і `applications.commands`. +3. Запросіть бота зі scope `bot` і `applications.commands`. 4. Надайте Connect, Speak, Send Messages і Read Message History у цільовому голосовому каналі. -5. Увімкніть власні команди (`commands.native` або `channels.discord.commands.native`). +5. Увімкніть нативні команди (`commands.native` або `channels.discord.commands.native`). 6. Налаштуйте `channels.discord.voice`. -Використовуйте `/vc join|leave|status`, щоб керувати сеансами. Команда використовує агент за замовчуванням облікового запису та дотримується тих самих правил списків дозволених і групової політики, що й інші команди Discord. +Використовуйте `/vc join|leave|status` для керування сесіями. Команда використовує типового агента акаунта й дотримується тих самих правил списків дозволених і групової політики, що й інші команди Discord. ```bash /vc join channel: @@ -1173,35 +1173,35 @@ Discord має дві окремі голосові поверхні: голос Примітки: - `voice.tts` перевизначає `messages.tts` лише для голосового відтворення. -- `voice.model` перевизначає LLM, який використовується лише для відповідей голосового каналу Discord. Залиште його незаданим, щоб успадкувати модель маршрутизованого агента. +- `voice.model` перевизначає LLM, що використовується лише для відповідей голосового каналу Discord. Залиште незаданим, щоб успадкувати модель маршрутизованого агента. - STT використовує `tools.media.audio`; `voice.model` не впливає на транскрипцію. -- Перевизначення Discord `systemPrompt` для окремого каналу застосовуються до ходів голосового transcript для цього голосового каналу. -- Ходи голосового transcript виводять статус власника з Discord `allowFrom` (або `dm.allowFrom`); спікери, які не є власниками, не можуть отримати доступ до інструментів лише для власника (наприклад, `gateway` і `cron`). -- Голос Discord є opt-in для конфігурацій лише з текстом; установіть `channels.discord.voice.enabled=true` (або залиште наявний блок `channels.discord.voice`), щоб увімкнути команди `/vc`, голосове середовище виконання та Gateway intent `GuildVoiceStates`. -- `channels.discord.intents.voiceStates` може явно перевизначити підписку на voice-state intent. Залиште незаданим, щоб intent слідував ефективному ввімкненню голосу. -- `voice.daveEncryption` і `voice.decryptionFailureTolerance` передаються в параметри приєднання `@discordjs/voice`. -- Значення за замовчуванням `@discordjs/voice` — `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо їх не задано. -- `voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для `/vc join` і спроб автоматичного приєднання. За замовчуванням: `30000`. -- `voice.reconnectGraceMs` керує тим, як довго OpenClaw очікує, доки від’єднаний голосовий сеанс почне повторно підключатися, перш ніж знищити його. За замовчуванням: `15000`. -- OpenClaw також відстежує помилки розшифрування отримання та автоматично відновлюється, виходячи з голосового каналу й повторно приєднуючись після повторюваних помилок у короткому вікні. -- Якщо після оновлення журнали отримання повторно показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, зберіть звіт про залежності та журнали. Вбудована лінійка `@discordjs/voice` містить upstream-виправлення padding з discord.js PR #11449, яке закрило issue discord.js #11419. +- Перевизначення `systemPrompt` для окремого каналу Discord застосовуються до ходів голосової транскрипції для цього голосового каналу. +- Ходи голосової транскрипції визначають статус власника з Discord `allowFrom` (або `dm.allowFrom`); мовці, які не є власниками, не можуть отримати доступ до інструментів лише для власника (наприклад `gateway` і `cron`). +- Голос Discord є opt-in для конфігурацій лише з текстом; установіть `channels.discord.voice.enabled=true` (або залиште наявний блок `channels.discord.voice`), щоб увімкнути команди `/vc`, голосове середовище та Gateway intent `GuildVoiceStates`. +- `channels.discord.intents.voiceStates` може явно перевизначити підписку на voice-state intent. Залиште незаданим, щоб intent відповідав ефективному ввімкненню голосу. +- `voice.daveEncryption` і `voice.decryptionFailureTolerance` передаються до параметрів приєднання `@discordjs/voice`. +- Типові значення `@discordjs/voice` — `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо їх не задано. +- `voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для `/vc join` і спроб автоматичного приєднання. Типово: `30000`. +- `voice.reconnectGraceMs` керує тим, як довго OpenClaw чекає, доки від’єднана голосова сесія почне повторне підключення, перш ніж знищити її. Типово: `15000`. +- OpenClaw також відстежує помилки розшифрування прийому й автоматично відновлюється, виходячи з голосового каналу та повторно приєднуючись після повторних помилок у короткому вікні. +- Якщо після оновлення журнали прийому повторно показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, зберіть звіт про залежності та журнали. Вбудована лінійка `@discordjs/voice` містить upstream-виправлення padding з discord.js PR #11449, яке закрило issue discord.js #11419. Конвеєр голосового каналу: - PCM-захоплення Discord перетворюється на тимчасовий WAV-файл. - `tools.media.audio` обробляє STT, наприклад `openai/gpt-4o-mini-transcribe`. -- Transcript надсилається через ingress і маршрутизацію Discord, тоді як LLM відповіді працює з політикою голосового виводу, яка приховує агентський інструмент `tts` і просить повернути текст, оскільки голос Discord відповідає за фінальне відтворення TTS. +- Транскрипт надсилається через вхідний потік і маршрутизацію Discord, тоді як LLM відповіді працює з політикою голосового виводу, яка приховує інструмент агента `tts` і просить повернений текст, оскільки Discord voice відповідає за фінальне відтворення TTS. - `voice.model`, якщо задано, перевизначає лише LLM відповіді для цього ходу голосового каналу. -- `voice.tts` об’єднується поверх `messages.tts`; отримане аудіо відтворюється у приєднаному каналі. +- `voice.tts` зливається поверх `messages.tts`; отримане аудіо відтворюється в приєднаному каналі. Облікові дані визначаються для кожного компонента: автентифікація маршруту LLM для `voice.model`, автентифікація STT для `tools.media.audio` і автентифікація TTS для `messages.tts`/`voice.tts`. ### Голосові повідомлення -Голосові повідомлення Discord показують попередній перегляд хвильової форми та потребують аудіо OGG/Opus. OpenClaw генерує хвильову форму автоматично, але потребує `ffmpeg` і `ffprobe` на хості Gateway для перевірки та конвертації. +Голосові повідомлення Discord показують попередній перегляд хвилі й потребують аудіо OGG/Opus. OpenClaw автоматично генерує хвилю, але потребує `ffmpeg` і `ffprobe` на хості gateway для перевірки та конвертації. - Надайте **локальний шлях до файлу** (URL відхиляються). -- Пропустіть текстовий вміст (Discord відхиляє текст + голосове повідомлення в одному payload). +- Не додавайте текстовий вміст (Discord відхиляє текст + голосове повідомлення в одному payload). - Приймається будь-який аудіоформат; OpenClaw за потреби конвертує в OGG/Opus. ```bash @@ -1211,7 +1211,7 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a ## Усунення несправностей - + - увімкніть Message Content Intent - увімкніть Server Members Intent, коли ви залежите від визначення користувача/учасника @@ -1219,12 +1219,12 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a - + - перевірте `groupPolicy` - перевірте список дозволених guild у `channels.discord.guilds` - якщо існує мапа `channels` guild, дозволені лише перелічені канали - - перевірте поведінку `requireMention` і шаблони згадок + - перевірте поведінку `requireMention` і патерни згадок Корисні перевірки: @@ -1236,29 +1236,29 @@ openclaw logs --follow - + Поширені причини: - `groupPolicy="allowlist"` без відповідного списку дозволених guild/каналу - - `requireMention` налаштовано не в тому місці (має бути під `channels.discord.guilds` або записом каналу) + - `requireMention` налаштовано в неправильному місці (має бути в `channels.discord.guilds` або записі каналу) - відправника заблоковано списком дозволених `users` guild/каналу - + Типові журнали: - `Slow listener detected ...` - `stuck session: sessionKey=agent:...:discord:... state=processing ...` - Налаштування черги Gateway Discord: + Налаштування черги Discord gateway: - - один обліковий запис: `channels.discord.eventQueue.listenerTimeout` - - кілька облікових записів: `channels.discord.accounts..eventQueue.listenerTimeout` - - це керує лише роботою слухача Gateway Discord, а не тривалістю ходу агента + - один акаунт: `channels.discord.eventQueue.listenerTimeout` + - кілька акаунтів: `channels.discord.accounts..eventQueue.listenerTimeout` + - це керує лише роботою слухача Discord gateway, а не тривалістю ходу агента - Discord не застосовує timeout, що належить каналу, до поставлених у чергу ходів агента. Слухачі повідомлень негайно передають роботу далі, а поставлені в чергу запуски Discord зберігають порядок у межах сеансу, доки життєвий цикл сеансу/інструмента/середовища виконання не завершиться або не перерве роботу. + Discord не застосовує timeout, що належить каналу, до поставлених у чергу ходів агента. Слухачі повідомлень передають роботу негайно, а поставлені в чергу запуски Discord зберігають порядок у межах сесії, доки життєвий цикл сесії/інструмента/середовища не завершить або не перерве роботу. ```json5 { @@ -1279,37 +1279,37 @@ openclaw logs --follow - OpenClaw отримує метадані Discord `/gateway/bot` перед підключенням. Тимчасові збої повертаються до стандартного URL Gateway Discord і обмежуються за частотою в журналах. + OpenClaw отримує метадані Discord `/gateway/bot` перед підключенням. Тимчасові збої повертаються до типового URL gateway Discord і обмежуються за частотою в журналах. Налаштування timeout метаданих: - - один обліковий запис: `channels.discord.gatewayInfoTimeoutMs` - - кілька облікових записів: `channels.discord.accounts..gatewayInfoTimeoutMs` - - резервне значення env, коли конфігурацію не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS` - - за замовчуванням: `30000` (30 секунд), максимум: `120000` + - один акаунт: `channels.discord.gatewayInfoTimeoutMs` + - кілька акаунтів: `channels.discord.accounts..gatewayInfoTimeoutMs` + - резерв env, коли конфігурацію не задано: `OPENCLAW_DISCORD_GATEWAY_INFO_TIMEOUT_MS` + - типово: `30000` (30 секунд), максимум: `120000` - - OpenClaw очікує подію `READY` Discord Gateway під час запуску та після повторних підключень під час виконання. Налаштування з кількома обліковими записами та поетапним запуском можуть потребувати довшого вікна READY під час запуску, ніж стандартне. + + OpenClaw очікує події `READY` Gateway Discord під час запуску та після повторних підключень у runtime. Налаштування з кількома обліковими записами та рознесенням запуску в часі можуть потребувати довшого стартового вікна READY, ніж типове. Параметри тайм-ауту READY: - - запуск одного облікового запису: `channels.discord.gatewayReadyTimeoutMs` - - запуск кількох облікових записів: `channels.discord.accounts..gatewayReadyTimeoutMs` - - резервне значення env для запуску, коли конфігурацію не задано: `OPENCLAW_DISCORD_READY_TIMEOUT_MS` - - стандартне значення для запуску: `15000` (15 секунд), максимум: `120000` - - виконання для одного облікового запису: `channels.discord.gatewayRuntimeReadyTimeoutMs` - - виконання для кількох облікових записів: `channels.discord.accounts..gatewayRuntimeReadyTimeoutMs` - - резервне значення env для виконання, коли конфігурацію не задано: `OPENCLAW_DISCORD_RUNTIME_READY_TIMEOUT_MS` - - стандартне значення для виконання: `30000` (30 секунд), максимум: `120000` + - запуск для одного облікового запису: `channels.discord.gatewayReadyTimeoutMs` + - запуск для кількох облікових записів: `channels.discord.accounts..gatewayReadyTimeoutMs` + - fallback через env під час запуску, коли config не задано: `OPENCLAW_DISCORD_READY_TIMEOUT_MS` + - типове значення запуску: `15000` (15 секунд), максимум: `120000` + - runtime для одного облікового запису: `channels.discord.gatewayRuntimeReadyTimeoutMs` + - runtime для кількох облікових записів: `channels.discord.accounts..gatewayRuntimeReadyTimeoutMs` + - fallback через env у runtime, коли config не задано: `OPENCLAW_DISCORD_RUNTIME_READY_TIMEOUT_MS` + - типове значення runtime: `30000` (30 секунд), максимум: `120000` - Перевірки дозволів `channels status --probe` працюють лише для числових ID каналів. + Перевірки дозволів `channels status --probe` працюють лише для числових ідентифікаторів каналів. - Якщо ви використовуєте ключі-slug, зіставлення під час виконання все ще може працювати, але probe не може повністю перевірити дозволи. + Якщо ви використовуєте ключі-slug, зіставлення в runtime все ще може працювати, але probe не може повністю перевірити дозволи. @@ -1317,27 +1317,27 @@ openclaw logs --follow - DM вимкнено: `channels.discord.dm.enabled=false` - політику DM вимкнено: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`) - - очікування схвалення сполучення в режимі `pairing` + - очікується схвалення сполучення в режимі `pairing` - - За замовчуванням повідомлення, створені ботами, ігноруються. + + Типово повідомлення, створені ботами, ігноруються. - Якщо ви задаєте `channels.discord.allowBots=true`, використовуйте суворі правила згадок і allowlist, щоб уникнути циклічної поведінки. - Надавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота. + Якщо ви встановлюєте `channels.discord.allowBots=true`, використовуйте суворі правила згадування та allowlist, щоб уникнути циклічної поведінки. + Віддавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота. - + - - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була наявна логіка відновлення приймання голосу Discord - - підтвердьте `channels.discord.voice.daveEncryption=true` (стандартне значення) - - почніть із `channels.discord.voice.decryptionFailureTolerance=24` (стандартне значення upstream) і налаштовуйте лише за потреби - - стежте за журналами на наявність: + - підтримуйте OpenClaw актуальним (`openclaw update`), щоб була наявна логіка відновлення отримання голосу Discord + - підтвердьте `channels.discord.voice.daveEncryption=true` (типово) + - починайте з `channels.discord.voice.decryptionFailureTolerance=24` (типове значення upstream) і налаштовуйте лише за потреби + - відстежуйте в журналах: - `discord voice: DAVE decrypt failures detected` - `discord voice: repeated decrypt failures; attempting rejoin` - - якщо збої тривають після автоматичного повторного приєднання, зберіть журнали та порівняйте з upstream-історією приймання DAVE у [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) і [discord.js #11449](https://github.com/discordjs/discord.js/pull/11449) + - якщо помилки тривають після автоматичного повторного приєднання, зберіть журнали та порівняйте з історією отримання DAVE в upstream у [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419) і [discord.js #11449](https://github.com/discordjs/discord.js/pull/11449) @@ -1346,17 +1346,17 @@ openclaw logs --follow Основний довідник: [Довідник конфігурації - Discord](/uk/gateway/config-channels#discord). - + - запуск/auth: `enabled`, `token`, `accounts.*`, `allowBots` - політика: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*` - команда: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*` -- черга подій: `eventQueue.listenerTimeout` (бюджет слухача), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency` -- gateway: `gatewayInfoTimeoutMs`, `gatewayReadyTimeoutMs`, `gatewayRuntimeReadyTimeoutMs` +- черга подій: `eventQueue.listenerTimeout` (бюджет listener), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency` +- Gateway: `gatewayInfoTimeoutMs`, `gatewayReadyTimeoutMs`, `gatewayRuntimeReadyTimeoutMs` - відповідь/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit` - доставка: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage` - потокове передавання: `streaming` (застарілий псевдонім: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce` -- медіа/повтор: `mediaMaxMb` (обмежує вихідні завантаження Discord, стандартно `100MB`), `retry` +- медіа/повторна спроба: `mediaMaxMb` (обмежує вихідні завантаження Discord, типово `100MB`), `retry` - дії: `actions.*` - присутність: `activity`, `status`, `activityType`, `activityUrl` - UI: `ui.components.accentColor` @@ -1364,11 +1364,11 @@ openclaw logs --follow -## Безпека та експлуатація +## Безпека й експлуатація -- Розглядайте токени ботів як секрети (`DISCORD_BOT_TOKEN` бажано використовувати в керованих середовищах). -- Надавайте мінімально необхідні дозволи Discord. -- Якщо deploy/state команд застарілий, перезапустіть Gateway і повторно перевірте за допомогою `openclaw channels status --probe`. +- Обробляйте токени ботів як секрети (`DISCORD_BOT_TOKEN` бажано в контрольованих середовищах). +- Надавайте Discord дозволи за принципом найменших привілеїв. +- Якщо розгортання/стан команд застаріли, перезапустіть Gateway і повторно перевірте за допомогою `openclaw channels status --probe`. ## Пов’язане @@ -1377,10 +1377,10 @@ openclaw logs --follow Сполучіть користувача Discord із Gateway. - Поведінка групового чату та allowlist. + Груповий чат і поведінка allowlist. - Маршрутизуйте вхідні повідомлення до агентів. + Спрямовуйте вхідні повідомлення до агентів. Модель загроз і посилення захисту. @@ -1388,7 +1388,7 @@ openclaw logs --follow Зіставляйте guilds і канали з агентами. - - Поведінка нативних команд. + + Нативна поведінка команд. diff --git a/docs/uk/gateway/config-channels.md b/docs/uk/gateway/config-channels.md index 50b819829..7e72214cb 100644 --- a/docs/uk/gateway/config-channels.md +++ b/docs/uk/gateway/config-channels.md @@ -1,29 +1,29 @@ --- read_when: - Налаштування Plugin каналу (автентифікація, контроль доступу, кілька облікових записів) - - Усунення неполадок із ключами конфігурації для окремих каналів + - Усунення несправностей із ключами конфігурації для кожного каналу - Аудит політики особистих повідомлень, групової політики або контролю згадок -summary: 'Налаштування каналів: контроль доступу, сполучення, поканальні ключі для Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо' +summary: 'Конфігурація каналів: контроль доступу, парування, ключі для кожного каналу в Slack, Discord, Telegram, WhatsApp, Matrix, iMessage тощо' title: Конфігурація — канали x-i18n: - generated_at: "2026-05-03T01:35:01Z" + generated_at: "2026-05-03T18:10:44Z" model: gpt-5.5 provider: openai - source_hash: 5ec4aad94a844f6e2f936b2e0d208343ea264c9a4c74f7fc610c516e0353b53b + source_hash: 7deb5358980d58a917eb564d8f65a43d6b61b8bc53b80349f404353db50bbb98 source_path: gateway/config-channels.md workflow: 16 --- -Ключі конфігурації окремих каналів у `channels.*`. Охоплює доступ до DM і груп, -налаштування кількох облікових записів, фільтрацію за згадками та поканальні ключі для Slack, Discord, -Telegram, WhatsApp, Matrix, iMessage та інших вбудованих плагінів каналів. +Ключі конфігурації для окремих каналів у `channels.*`. Охоплює доступ до DM і груп, +налаштування кількох облікових записів, обмеження за згадками та ключі окремих каналів для Slack, Discord, +Telegram, WhatsApp, Matrix, iMessage та інших вбудованих channel plugins. Для агентів, інструментів, середовища виконання Gateway та інших ключів верхнього рівня див. -[Довідник конфігурації](/uk/gateway/configuration-reference). +[Довідник із конфігурації](/uk/gateway/configuration-reference). ## Канали -Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не задано `enabled: false`). +Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`). ### Доступ до DM і груп @@ -31,26 +31,26 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих пла | Політика DM | Поведінка | | ------------------- | --------------------------------------------------------------- | -| `pairing` (default) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити | +| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити | | `allowlist` | Лише відправники в `allowFrom` (або у сховищі дозволених після сполучення) | -| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) | +| `open` | Дозволити всі вхідні DM (потребує `allowFrom: ["*"]`) | | `disabled` | Ігнорувати всі вхідні DM | -| Групова політика | Поведінка | +| Групова політика | Поведінка | | --------------------- | ------------------------------------------------------ | -| `allowlist` (default) | Лише групи, що відповідають налаштованому списку дозволених | -| `open` | Обійти списки дозволених груп (фільтрація за згадками все одно застосовується) | +| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволених | +| `open` | Обходити списки дозволених груп (обмеження за згадками все ще застосовується) | | `disabled` | Блокувати всі повідомлення груп/кімнат | `channels.defaults.groupPolicy` задає типове значення, коли `groupPolicy` провайдера не встановлено. Коди сполучення спливають через 1 годину. Очікувані запити на сполучення DM обмежені **3 на канал**. -Якщо блок провайдера повністю відсутній (`channels.` відсутній), групова політика під час виконання повертається до `allowlist` (закрито в разі помилки) із попередженням під час запуску. +Якщо блок провайдера повністю відсутній (`channels.` відсутній), групова політика під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску. ### Перевизначення моделі каналу -Використовуйте `channels.modelByChannel`, щоб закріпити певні ідентифікатори каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналів застосовується, коли сеанс ще не має перевизначення моделі (наприклад, заданого через `/model`). +Використовуйте `channels.modelByChannel`, щоб закріпити певні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Зіставлення каналу застосовується, коли сеанс ще не має перевизначення моделі (наприклад, заданого через `/model`). ```json5 { @@ -71,9 +71,9 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих пла } ``` -### Типові значення каналів і Heartbeat +### Типові налаштування каналів і Heartbeat -Використовуйте `channels.defaults` для спільної поведінки групової політики та Heartbeat між провайдерами: +Використовуйте `channels.defaults` для спільної групової політики та поведінки Heartbeat між провайдерами: ```json5 { @@ -92,14 +92,14 @@ Telegram, WhatsApp, Matrix, iMessage та інших вбудованих пла ``` - `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.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включати весь контекст цитат/тредів/історії), `allowlist` (включати контекст лише від відправників зі списку дозволених), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`. +- `channels.defaults.heartbeat.showOk`: включати справні статуси каналів у вивід Heartbeat. +- `channels.defaults.heartbeat.showAlerts`: включати статуси погіршення/помилок у вивід Heartbeat. +- `channels.defaults.heartbeat.useIndicator`: відтворювати компактний вивід Heartbeat у стилі індикатора. ### WhatsApp -WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує зв’язаний сеанс. +WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує пов’язаний сеанс. ```json5 { @@ -139,7 +139,7 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` - + ```json5 { @@ -157,8 +157,8 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Вихідні команди типово використовують обліковий запис `default`, якщо він є; інакше перший налаштований ідентифікатор облікового запису (у відсортованому порядку). -- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає вибір резервного типового облікового запису, коли він відповідає налаштованому ідентифікатору облікового запису. +- Вихідні команди типово використовують обліковий запис `default`, якщо він існує; інакше перший налаштований ID облікового запису (відсортований). +- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, коли він відповідає налаштованому ID облікового запису. - Застарілий каталог автентифікації Baileys для одного облікового запису мігрується командою `openclaw doctor` у `whatsapp/default`. - Перевизначення для облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`. @@ -219,13 +219,13 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символічні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для типового облікового запису. -- `apiRoot` — це лише корінь Telegram Bot API. Використовуйте `https://api.telegram.org` або власний самостійно розміщений/проксі-корінь, а не `https://api.telegram.org/bot`; `openclaw doctor --fix` видаляє випадковий кінцевий суфікс `/bot`. -- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому ідентифікатору облікового запису. -- У налаштуваннях із кількома обліковими записами (2+ ідентифікатори облікових записів) задайте явний типовий обліковий запис (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли він відсутній або недійсний. +- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символьні посилання відхиляються), із `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#persistent-channel-bindings). -- Попередній перегляд потоків Telegram використовує `sendMessage` + `editMessageText` (працює в прямих і групових чатах). +- Записи верхнього рівня `bindings[]` із `type: "acp"` налаштовують постійні прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна з [агентами ACP](/uk/tools/acp-agents#persistent-channel-bindings). +- Попередні перегляди потоків Telegram використовують `sendMessage` + `editMessageText` (працює в прямих і групових чатах). - Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry). ### Discord @@ -331,41 +331,41 @@ 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.guilds..ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (крім @everyone/@here). -- `channels.discord.mentionAliases` зіставляє стабільний вихідний текст `@handle` з ID користувачів Discord перед надсиланням, щоб відомих колег можна було згадувати детерміновано, навіть коли тимчасовий кеш каталогу порожній. Перевизначення для окремих облікових записів розміщуються в `channels.discord.accounts..mentionAliases`. -- `maxLinesPerMessage` (за замовчуванням 17) розбиває високі повідомлення, навіть якщо вони мають менше ніж 2000 символів. -- `channels.discord.threadBindings` керує маршрутизацією Discord, прив’язаною до потоків: - - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до потоків (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація) +- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для типового облікового запису. +- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; параметри повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку середовища виконання. +- Необов'язковий `channels.discord.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. +- Використовуйте `user:` (DM) або `channel:` (канал гільдії) для цілей доставлення; прості числові ID відхиляються. +- Слаги гільдій нижнього регістру, а пробіли замінено на `-`; ключі каналів використовують ім'я зі слагом (без `#`). Надавайте перевагу ID гільдій. +- Повідомлення, створені ботами, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, у яких згадано бота (власні повідомлення все одно фільтруються). +- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, у яких згадано іншого користувача або роль, але не бота (крім @everyone/@here). +- `channels.discord.mentionAliases` зіставляє стабільний вихідний текст `@handle` з Discord ID користувачів перед надсиланням, щоб відомих колег можна було згадувати детерміновано, навіть коли тимчасовий кеш каталогу порожній. Перевизначення для окремих облікових записів розташовані в `channels.discord.accounts..mentionAliases`. +- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення, навіть якщо вони менші за 2000 символів. +- `channels.discord.threadBindings` керує маршрутизацією Discord, прив'язаною до гілок: + - `enabled`: перевизначення Discord для функцій сеансу, прив'язаних до гілки (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також прив'язаного доставлення/маршрутизації) - `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає) - `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає) - - `spawnSessions`: перемикач для `sessions_spawn({ thread: true })` і автоматичного створення/прив’язування потоків під час thread-spawn ACP (за замовчуванням: `true`) - - `defaultSpawnContext`: нативний контекст субагента для спавнів, прив’язаних до потоків (за замовчуванням `"fork"`) -- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і потоків (використовуйте ID каналу/потоку в `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#persistent-channel-bindings). -- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів компонентів Discord v2. -- `channels.discord.voice` вмикає розмови у голосових каналах Discord і необов’язкові перевизначення auto-join + LLM + TTS. Текстові конфігурації Discord за замовчуванням залишають голос вимкненим; задайте `channels.discord.voice.enabled=true`, щоб увімкнути. -- `channels.discord.voice.model` необов’язково перевизначає модель LLM, що використовується для відповідей у голосових каналах Discord. -- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються в параметри DAVE `@discordjs/voice` (за замовчуванням `true` і `24`). -- `channels.discord.voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для `/vc join` і спроб auto-join (за замовчуванням `30000`). -- `channels.discord.voice.reconnectGraceMs` керує тим, скільки часу від’єднана голосова сесія може входити в сигналізацію повторного підключення, перш ніж OpenClaw її знищить (за замовчуванням `15000`). -- OpenClaw додатково намагається відновити приймання голосу, виходячи з голосової сесії та повторно приєднуючись після повторюваних помилок розшифрування. -- `channels.discord.streaming` — канонічний ключ режиму потоку. Застарілі значення `streamMode` і булеві `streaming` автоматично мігруються. -- `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`. - - `agentFilter`: необов’язковий allowlist ID агентів. Не вказуйте, щоб пересилати підтвердження для всіх агентів. - - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex). - - `target`: куди надсилати запити підтвердження. `"dm"` (за замовчуванням) надсилає в DM тих, хто підтверджує, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва. Коли target містить `"channel"`, кнопки можуть використовувати лише визначені користувачі, що підтверджують. - - `cleanupAfterResolve`: коли `true`, видаляє DM підтвердження після схвалення, відхилення або тайм-ауту. + - `spawnSessions`: перемикач для `sessions_spawn({ thread: true })` і автоматичного створення/прив'язування гілок під час породження гілок ACP (типово: `true`) + - `defaultSpawnContext`: нативний контекст субагента для породжень, прив'язаних до гілки (типово `"fork"`) +- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують сталі прив'язки ACP для каналів і гілок (використовуйте ID каналу/гілки в `match.peer.id`). Семантика полів спільна в [Агенти ACP](/uk/tools/acp-agents#persistent-channel-bindings). +- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів Discord components v2. +- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов'язкові перевизначення авто-приєднання + LLM + TTS. Текстові конфігурації Discord типово залишають голос вимкненим; задайте `channels.discord.voice.enabled=true`, щоб увімкнути. +- `channels.discord.voice.model` необов'язково перевизначає модель LLM, яка використовується для відповідей у голосових каналах Discord. +- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` передаються до параметрів DAVE `@discordjs/voice` (типово `true` і `24`). +- `channels.discord.voice.connectTimeoutMs` керує початковим очікуванням Ready `@discordjs/voice` для спроб `/vc join` і авто-приєднання (типово `30000`). +- `channels.discord.voice.reconnectGraceMs` керує тим, скільки часу від'єднаний голосовий сеанс може мати для входу в сигналізацію повторного підключення, перш ніж OpenClaw знищить його (типово `15000`). +- OpenClaw додатково намагається відновити приймання голосу, виходячи з голосового сеансу й повторно приєднуючись до нього після повторюваних помилок розшифрування. +- `channels.discord.streaming` є канонічним ключем режиму потоку. Застарілі значення `streamMode` і булеві `streaming` автоматично мігруються. +- `channels.discord.autoPresence` зіставляє доступність середовища виконання зі станом присутності бота (healthy => online, degraded => idle, exhausted => dnd) і дає змогу необов'язково перевизначати текст статусу. +- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає зіставлення змінних імен/тегів (режим сумісності для аварійного випадку). +- `channels.discord.execApprovals`: нативне для Discord доставлення підтверджень exec і авторизація затверджувачів. + - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі підтвердження exec активуються, коли затверджувачів можна розв'язати з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: Discord ID користувачів, яким дозволено затверджувати exec-запити. Якщо пропущено, використовує `commands.ownerAllowFrom`. + - `agentFilter`: необов'язковий список дозволених ID агентів. Пропустіть, щоб пересилати підтвердження для всіх агентів. + - `sessionFilter`: необов'язкові шаблони ключів сеансів (підрядок або regex). + - `target`: куди надсилати запити підтвердження. `"dm"` (типово) надсилає в DM затверджувачів, `"channel"` надсилає в початковий канал, `"both"` надсилає в обидва місця. Коли ціль містить `"channel"`, кнопки можуть використовувати лише розв'язані затверджувачі. + - `cleanupAfterResolve`: коли `true`, видаляє DM підтвердження після затвердження, відхилення або тайм-ауту. -**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, за замовчуванням), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень). +**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень). ### Google Chat @@ -396,11 +396,11 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- JSON сервісного облікового запису: inline (`serviceAccount`) або на основі файлу (`serviceAccountFile`). +- JSON сервісного облікового запису: вбудований (`serviceAccount`) або файловий (`serviceAccountFile`). - SecretRef сервісного облікового запису також підтримується (`serviceAccountRef`). -- Резерви env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. -- Використовуйте `spaces/` або `users/` для цілей доставки. -- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінним email principal (режим сумісності break-glass). +- Резервні значення середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`. +- Використовуйте `spaces/` або `users/` для цілей доставлення. +- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення змінних email principal (режим сумісності для аварійного випадку). ### Slack @@ -472,44 +472,44 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він } ``` -- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резерву env облікового запису за замовчуванням). +- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного значення середовища типового облікового запису). - **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для окремого облікового запису). -- `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API receiver Bolt. Використовуйте це лише під час дослідження ping/pong timeout або застарілої поведінки websocket. -- `botToken`, `appToken`, `signingSecret` і `userToken` приймають plaintext - рядки або об’єкти SecretRef. -- Знімки облікових записів Slack надають поля джерела/статусу для окремих credential, як-от - `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, в HTTP mode, +- `socketMode` передає налаштування транспорту Slack SDK Socket Mode до публічного API отримувача Bolt. Використовуйте його лише під час розслідування тайм-аутів ping/pong або поведінки застарілого websocket. +- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті текстові + рядки або об'єкти SecretRef. +- Знімки облікових записів Slack надають поля джерела/статусу для окремих облікових даних, як-от + `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode - `signingSecretStatus`. `configured_unavailable` означає, що обліковий запис - налаштовано через SecretRef, але поточна команда/шлях runtime не змогли - визначити значення secret. -- `configWrites: false` блокує записи конфігурації, ініційовані Slack. -- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він збігається з налаштованим ID облікового запису. -- `channels.slack.streaming.mode` — канонічний ключ режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним транспортом потокової передачі Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються. -- Використовуйте `user:` (DM) або `channel:` для цілей доставки. + налаштовано через SecretRef, але поточний шлях команди/середовища виконання не зміг + розв'язати значення секрету. +- `configWrites: false` блокує ініційовані Slack записи конфігурації. +- Необов'язковий `channels.slack.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. +- `channels.slack.streaming.mode` є канонічним ключем режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним потоковим транспортом 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` копіює транскрипт батьківського каналу в нові гілки. -- Нативна потокова передача Slack разом зі статусом потоку в стилі асистента Slack "is typing..." потребують цілі у вигляді потоку відповіді. DM верхнього рівня за замовчуванням залишаються поза потоком, тому вони все одно можуть передаватися через Slack draft post-and-edit previews замість показу нативного потоку/попереднього перегляду статусу у стилі потоку. -- `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"`). +- Нативний streaming Slack разом зі статусом гілки в стилі асистента Slack "is typing..." потребують цілі гілки відповіді. DM верхнього рівня типово залишаються поза гілками, тому вони все ще можуть транслюватися через попередні перегляди чернеток Slack з публікацією та редагуванням замість показу нативного потоку/статусу в стилі гілки. +- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, доки виконується відповідь, а потім видаляє її після завершення. Використовуйте короткий код емодзі Slack, наприклад `"hourglass_flowing_sand"`. +- `channels.slack.execApprovals`: нативне для Slack доставлення підтверджень exec і авторизація затверджувачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (Slack ID користувачів), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`). -| Група дій | За замовчуванням | Примітки | +| Група дій | Типово | Примітки | | ------------ | ------- | ---------------------- | -| reactions | увімкнено | Реагування + список реакцій | -| messages | увімкнено | Читання/надсилання/редагування/видалення | -| pins | увімкнено | Закріплення/відкріплення/список | +| reactions | увімкнено | Реагувати + показувати список реакцій | +| messages | увімкнено | Читати/надсилати/редагувати/видаляти | +| pins | увімкнено | Закріпити/відкріпити/показати список | | memberInfo | увімкнено | Інформація про учасника | -| emojiList | увімкнено | Список користувацьких emoji | +| emojiList | увімкнено | Список власних емодзі | ### Mattermost -Mattermost постачається як bundled plugin у поточних релізах OpenClaw. Старіші або -кастомні збірки можуть встановити поточний пакет npm за допомогою +Mattermost постачається як вбудований Plugin у поточних релізах OpenClaw. Старіші або +користувацькі збірки можуть установити поточний npm-пакет за допомогою `openclaw plugins install @openclaw/mattermost`. Перевірте [npmjs.com/package/@openclaw/mattermost](https://www.npmjs.com/package/@openclaw/mattermost) -для поточних dist-tags перед фіксацією версії. +щодо поточних dist-tags перед фіксацією версії. ```json5 { @@ -539,23 +539,21 @@ Mattermost постачається як bundled plugin у поточних ре } ``` -Режими чату: `oncall` (відповідати на @-згадку, за замовчуванням), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера). +Режими чату: `oncall` (відповідати на @-згадку, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса тригера). Коли нативні команди Mattermost увімкнено: - `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повним URL. -- `commands.callbackUrl` має вказувати на кінцеву точку OpenClaw Gateway і бути доступним із сервера Mattermost. -- Нативні callback-и slash-команд автентифікуються токенами для кожної команди, які повертає - Mattermost під час реєстрації slash-команди. Якщо реєстрація не вдалася або жодні - команди не активовано, OpenClaw відхиляє callback-и з +- `commands.callbackUrl` має вказувати на кінцеву точку OpenClaw gateway і бути доступним із сервера Mattermost. +- Нативні slash callbacks автентифікуються токенами для кожної команди, які повертає Mattermost під час реєстрації slash-команди. Якщо реєстрація не вдається або жодні команди не активовано, OpenClaw відхиляє callbacks з `Unauthorized: invalid command token.` -- Для приватних/tailnet/внутрішніх хостів callback-ів Mattermost може вимагати, - щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив callback-хост/домен. +- Для приватних/tailnet/внутрішніх хостів callback Mattermost може вимагати, щоб + `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен callback. Використовуйте значення хоста/домену, а не повні URL. -- `channels.mattermost.configWrites`: дозволити або заборонити ініційовані Mattermost записи конфігурації. +- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost. - `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах. -- `channels.mattermost.groups..requireMention`: поканальне перевизначення шлюзування за згадкою (`"*"` для типового значення). -- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому id облікового запису. +- `channels.mattermost.groups..requireMention`: перевизначення mention-gating для окремого каналу (`"*"` для типового значення). +- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим id облікового запису. ### Signal @@ -576,15 +574,15 @@ Mattermost постачається як bundled plugin у поточних ре } ``` -**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`). +**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`). -- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal. -- `channels.signal.configWrites`: дозволити або заборонити ініційовані Signal записи конфігурації. -- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому id облікового запису. +- `channels.signal.account`: прив’язати запуск каналу до певної ідентичності облікового запису Signal. +- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Signal. +- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим id облікового запису. ### BlueBubbles -BlueBubbles є рекомендованим шляхом iMessage (на основі Plugin, налаштовується в `channels.bluebubbles`). +BlueBubbles — рекомендований шлях для iMessage (на базі Plugin, налаштовується в `channels.bluebubbles`). ```json5 { @@ -599,14 +597,14 @@ BlueBubbles є рекомендованим шляхом iMessage (на осно } ``` -- Основні ключові шляхи, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. -- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому id облікового запису. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до сталих сеансів ACP. Використовуйте handle BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [ACP Agents](/uk/tools/acp-agents#persistent-channel-bindings). -- Повна конфігурація каналу BlueBubbles задокументована в [BlueBubbles](/uk/channels/bluebubbles). +- Основні ключові шляхи, розглянуті тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`. +- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим id облікового запису. +- Записи `bindings[]` верхнього рівня з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте handle BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [агенти ACP](/uk/tools/acp-agents#persistent-channel-bindings). +- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles). ### iMessage -OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Daemon або порт не потрібні. +OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон або порт не потрібні. ```json5 { @@ -630,15 +628,15 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Daemon або } ``` -- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому id облікового запису. +- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим id облікового запису. -- Потрібен Full Disk Access до Messages DB. -- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб перелічити чати. +- Потребує Full Disk Access до Messages DB. +- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів. - `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP. - `attachmentRoots` і `remoteAttachmentRoots` обмежують вхідні шляхи вкладень (типово: `/Users/*/Library/Messages/Attachments`). -- SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ relay-хоста вже існує в `~/.ssh/known_hosts`. -- `channels.imessage.configWrites`: дозволити або заборонити ініційовані iMessage записи конфігурації. -- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до сталих сеансів ACP. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Семантика спільних полів: [ACP Agents](/uk/tools/acp-agents#persistent-channel-bindings). +- SCP використовує сувору перевірку ключа хоста, тож переконайтеся, що ключ relay-хоста вже є в `~/.ssh/known_hosts`. +- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage. +- Записи `bindings[]` верхнього рівня з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [агенти ACP](/uk/tools/acp-agents#persistent-channel-bindings). @@ -651,7 +649,7 @@ exec ssh -T gateway-host imsg "$@" ### Matrix -Matrix працює на основі Plugin і налаштовується в `channels.matrix`. +Matrix працює на базі Plugin і налаштовується в `channels.matrix`. ```json5 { @@ -683,23 +681,23 @@ Matrix працює на основі Plugin і налаштовується в - Автентифікація за токеном використовує `accessToken`; автентифікація за паролем використовує `userId` + `password`. - `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити його через `channels.matrix.accounts..proxy`. -- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver-и. `proxy` і це мережеве opt-in налаштування є незалежними елементами керування. -- `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`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати exec-запити. - - `agentFilter`: необов’язковий allowlist ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів. +- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver. `proxy` і ця мережева згода — незалежні елементи керування. +- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у налаштуваннях із кількома обліковими записами. +- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не задасте `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`. +- `channels.matrix.execApprovals`: Matrix-native доставка схвалень exec і авторизація approver. + - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі схвалення exec активуються, коли approvers можна визначити з `approvers` або `commands.ownerAllowFrom`. + - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати запити exec. + - `agentFilter`: необов’язковий allowlist ID агентів. Опустіть, щоб пересилати схвалення для всіх агентів. - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex). - - `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (початкова кімната) або `"both"`. - - Перевизначення для кожного облікового запису: `channels.matrix.accounts..execApprovals`. -- `channels.matrix.dm.sessionScope` керує тим, як DM-и Matrix групуються в сеанси: `per-user` (типово) спільно використовується за маршрутизованим peer, а `per-room` ізолює кожну DM-кімнату. -- Проби статусу Matrix і live-пошуки в каталозі використовують ту саму політику проксі, що й трафік під час виконання. -- Повна конфігурація Matrix, правила націлювання та приклади налаштування задокументовані в [Matrix](/uk/channels/matrix). + - `target`: куди надсилати prompts на схвалення. `"dm"` (типово), `"channel"` (кімната походження) або `"both"`. + - Перевизначення для окремих облікових записів: `channels.matrix.accounts..execApprovals`. +- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільно використовує сеанс за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату. +- Перевірки стану Matrix і live-пошуки в каталозі використовують ту саму політику proxy, що й runtime-трафік. +- Повну конфігурацію Matrix, правила націлювання та приклади налаштування задокументовано в [Matrix](/uk/channels/matrix). ### Microsoft Teams -Microsoft Teams працює на основі Plugin і налаштовується в `channels.msteams`. +Microsoft Teams працює на базі Plugin і налаштовується в `channels.msteams`. ```json5 { @@ -714,12 +712,12 @@ Microsoft Teams працює на основі Plugin і налаштовуєт } ``` -- Основні ключові шляхи, описані тут: `channels.msteams`, `channels.msteams.configWrites`. -- Повна конфігурація Teams (облікові дані, Webhook, політика DM/груп, перевизначення для кожної команди/каналу) задокументована в [Microsoft Teams](/uk/channels/msteams). +- Основні ключові шляхи, розглянуті тут: `channels.msteams`, `channels.msteams.configWrites`. +- Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для окремих teams/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams). ### IRC -IRC працює на основі Plugin і налаштовується в `channels.irc`. +IRC працює на базі Plugin і налаштовується в `channels.irc`. ```json5 { @@ -740,13 +738,13 @@ IRC працює на основі Plugin і налаштовується в `ch } ``` -- Основні ключові шляхи, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. -- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він відповідає налаштованому id облікового запису. -- Повна конфігурація каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументована в [IRC](/uk/channels/irc). +- Основні ключові шляхи, розглянуті тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`. +- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, коли він збігається з налаштованим id облікового запису. +- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc). ### Кілька облікових записів (усі канали) -Запускайте кілька облікових записів на канал (кожен із власним `accountId`): +Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`): ```json5 { @@ -767,34 +765,34 @@ IRC працює на основі Plugin і налаштовується в `ch } ``` -- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація). -- Env-токени застосовуються лише до **типового** облікового запису. +- `default` використовується, коли `accountId` опущено (CLI + маршрутизація). +- Токени Env застосовуються лише до **типового** облікового запису. - Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремого облікового запису. - Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента. -- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або onboarding каналу), поки ще використовуєте конфігурацію каналу верхнього рівня з одним обліковим записом, OpenClaw спершу переносить значення верхнього рівня для одного облікового запису з областю облікового запису в мапу облікових записів каналу, щоб початковий обліковий запис продовжував працювати. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. -- Наявні прив’язки лише до каналу (без `accountId`) і надалі відповідають типовому обліковому запису; прив’язки з областю облікового запису залишаються необов’язковими. -- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису з областю облікового запису в підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовує `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. +- Якщо ви додаєте нетиповий обліковий запис через `openclaw channels add` (або onboarding каналу), залишаючись на конфігурації каналу верхнього рівня з одним обліковим записом, OpenClaw спочатку переносить значення верхнього рівня з областю дії облікового запису в мапу облікових записів каналу, щоб початковий обліковий запис і далі працював. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. +- Наявні прив’язки лише до каналу (без `accountId`) і далі відповідають типовому обліковому запису; прив’язки з областю дії облікового запису залишаються необов’язковими. +- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня з областю дії облікового запису в підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль. -### Інші Plugin-канали +### Інші канали Plugin -Багато Plugin-каналів налаштовуються як `channels.` і задокументовані на власних сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). +Багато каналів Plugin налаштовуються як `channels.` і задокументовані на своїх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch). Дивіться повний індекс каналів: [Канали](/uk/channels). -### Шлюзування згадок у груповому чаті +### Mention gating у груповому чаті -Групові повідомлення типово **вимагають згадки** (metadata-згадка або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. +Групові повідомлення типово **вимагають mention** (metadata mention або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage. -Видимі відповіді керуються окремо. Групові/канальні кімнати типово мають `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw усе ще обробляє хід, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату вимагає `message(action=send)`. Задавайте `"automatic"` лише тоді, коли потрібна legacy-поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати ту саму поведінку видимих відповідей лише через інструмент також до прямих чатів, задайте `messages.visibleReplies: "message_tool"`; Codex harness також використовує цю поведінку лише через інструмент як своє типове значення для прямих чатів, коли його не задано. +Видимі відповіді керуються окремо. Для групових/канальних кімнат типове значення `messages.groupChat.visibleReplies: "message_tool"`: OpenClaw все одно обробляє turn, але звичайні фінальні відповіді залишаються приватними, а видимий вивід у кімнату потребує `message(action=send)`. Задавайте `"automatic"` лише тоді, коли потрібна застаріла поведінка, за якої звичайні відповіді публікуються назад у кімнату. Щоб застосувати таку саму поведінку видимих відповідей тільки через інструмент і до прямих чатів, задайте `messages.visibleReplies: "message_tool"`; harness Codex також використовує цю поведінку тільки через інструмент як своє незадане типове значення для прямого чату. Якщо інструмент повідомлень недоступний за активною політикою інструментів, OpenClaw повертається до автоматичних видимих відповідей замість мовчазного пригнічення відповіді. `openclaw doctor` попереджає про цю невідповідність. -Gateway гаряче перезавантажує конфігурацію `messages` після збереження файла. Перезапуск потрібен лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнено в розгортанні. +Gateway гаряче перезавантажує конфігурацію `messages` після збереження файлу. Перезапускайте лише тоді, коли спостереження за файлами або перезавантаження конфігурації вимкнено в deployment. -**Типи згадок:** +**Типи mention:** -- **Metadata-згадки**: Нативні платформні @-згадки. Ігноруються в режимі self-chat WhatsApp. -- **Текстові шаблони**: Безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечне вкладене повторення ігноруються. -- Шлюзування згадок застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон). +- **Metadata mentions**: Нативні @-mentions платформи. Ігноруються в режимі self-chat WhatsApp. +- **Текстові шаблони**: Безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Некоректні шаблони та небезпечне вкладене повторення ігноруються. +- Mention gating застосовується лише тоді, коли виявлення можливе (нативні mentions або принаймні один шаблон). ```json5 { @@ -811,9 +809,9 @@ Gateway гаряче перезавантажує конфігурацію `mess } ``` -`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або для окремого облікового запису). Задайте `0`, щоб вимкнути. +`messages.groupChat.historyLimit` задає глобальне типове значення. Канали можуть перевизначати його через `channels..historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути. -`messages.visibleReplies` — це глобальне значення за замовчуванням для вихідного ходу; `messages.groupChat.visibleReplies` перевизначає його для вихідних ходів групи/каналу. Коли `messages.visibleReplies` не задано, обв’язка може надати власне значення за замовчуванням для прямих/вихідних чатів; обв’язка Codex за замовчуванням використовує `message_tool`. Дозволені списки каналів і фільтрація за згадками все одно визначають, чи буде хід оброблено. +`messages.visibleReplies` — це глобальне типове значення для source-turn; `messages.groupChat.visibleReplies` перевизначає його для source-turn у групах/каналах. Коли `messages.visibleReplies` не задано, harness може надати власне типове значення для direct/source; Codex harness типово використовує `message_tool`. Allowlist каналів і mention gating усе ще визначають, чи буде turn оброблено. #### Обмеження історії DM @@ -830,13 +828,13 @@ Gateway гаряче перезавантажує конфігурацію `mess } ``` -Визначення: перевизначення для окремого DM → значення за замовчуванням провайдера → без обмеження (зберігається все). +Вирішення: перевизначення для окремого DM → типове значення provider → без обмеження (зберігається все). Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`. #### Режим чату із собою -Додайте власний номер до `allowFrom`, щоб увімкнути режим чату із собою (ігнорує нативні @-згадки, відповідає лише на текстові шаблони): +Додайте власний номер до `allowFrom`, щоб увімкнути режим чату із собою (ігнорує нативні @-mentions, відповідає лише на текстові шаблони): ```json5 { @@ -886,32 +884,32 @@ Gateway гаряче перезавантажує конфігурацію `mess -- Цей блок налаштовує поверхні команд. Поточний вбудований і комплектний каталог команд див. у [слеш-командах](/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, а також у [слеш-командах](/uk/tools/slash-commands). +- Цей блок налаштовує поверхні команд. Поточний вбудований і bundled каталог команд див. у [Slash Commands](/uk/tools/slash-commands). +- Ця сторінка є **довідником config-key**, а не повним каталогом команд. Команди, що належать каналам/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` очищає раніше зареєстровані команди. -- Перевизначайте нативну реєстрацію 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` залишається доступним звичайним операторським клієнтам з областю доступу на запис. +- `native: "auto"` вмикає нативні команди для Discord/Telegram, Slack лишає вимкненим. +- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, Slack лишає вимкненим. +- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). Для Discord значення `false` пропускає реєстрацію й очищення нативних команд під час запуску. +- Перевизначайте реєстрацію нативних Skills для окремого каналу за допомогою `channels..commands.nativeSkills`. +- `channels.telegram.customCommands` додає додаткові записи меню бота Telegram. +- `bash: true` вмикає `! ` для shell хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.`. +- `config: true` вмикає `/config` (читає/записує `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; read-only `/config show` лишається доступним для звичайних operator-клієнтів з областю запису. - `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, керованого OpenClaw, у `mcp.servers`. - `plugins: true` вмикає `/plugins` для виявлення, встановлення та керування ввімкненням/вимкненням Plugin. -- `channels..configWrites` обмежує мутації конфігурації для окремого каналу (за замовчуванням: true). +- `channels..configWrites` обмежує мутації конфігурації для окремого каналу (типово: true). - Для каналів із кількома обліковими записами `channels..accounts..configWrites` також обмежує записи, націлені на цей обліковий запис (наприклад, `/allowlist --config --account ` або `/config set channels..accounts....`). -- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. За замовчуванням: `true`. -- `ownerAllowFrom` — це явний дозволений список власників для команд/інструментів лише для власника. Він окремий від `allowFrom`. -- `ownerDisplay: "hash"` хешує ідентифікатори власників у системному prompt. Задайте `ownerDisplaySecret`, щоб керувати хешуванням. -- `allowFrom` задається для кожного провайдера. Коли його задано, це **єдине** джерело авторизації (дозволені списки/спарювання каналів і `useAccessGroups` ігноруються). -- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не задано. -- Мапа документації команд: - - вбудований і комплектний каталог: [слеш-команди](/uk/tools/slash-commands) +- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. Типово: `true`. +- `ownerAllowFrom` — це явний owner allowlist для команд/інструментів лише для власника. Він окремий від `allowFrom`. +- `ownerDisplay: "hash"` хешує owner id у системному prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням. +- `allowFrom` задається для кожного provider. Коли встановлено, це **єдине** джерело авторизації (allowlist/сполучення каналів і `useAccessGroups` ігноруються). +- `useAccessGroups: false` дозволяє командам обходити політики access-group, коли `allowFrom` не встановлено. +- Карта документації команд: + - вбудований і bundled каталог: [Slash Commands](/uk/tools/slash-commands) - поверхні команд для окремих каналів: [Канали](/uk/channels) - команди QQ Bot: [QQ Bot](/uk/channels/qqbot) - - команди спарювання: [Спарювання](/uk/channels/pairing) + - команди сполучення: [Сполучення](/uk/channels/pairing) - команда картки LINE: [LINE](/uk/channels/line) - - memory dreaming: [Dreaming](/uk/concepts/dreaming) + - memory Dreaming: [Dreaming](/uk/concepts/dreaming) @@ -920,5 +918,5 @@ Gateway гаряче перезавантажує конфігурацію `mess ## Пов’язане - [Довідник конфігурації](/uk/gateway/configuration-reference) — ключі верхнього рівня -- [Конфігурація — агенти](/uk/gateway/config-agents) +- [Конфігурація — agents](/uk/gateway/config-agents) - [Огляд каналів](/uk/channels) diff --git a/docs/uk/tools/slash-commands.md b/docs/uk/tools/slash-commands.md index 22f1d561d..57dc1edd9 100644 --- a/docs/uk/tools/slash-commands.md +++ b/docs/uk/tools/slash-commands.md @@ -1,40 +1,40 @@ --- read_when: - - Використання або налаштування чат-команд - - Налагодження маршрутизації команд або прав доступу + - Використання або налаштування команд чату + - Налагодження маршрутизації команд або дозволів sidebarTitle: Slash commands -summary: 'Слеш-команди: текстові й нативні, конфігурація та підтримувані команди' -title: Команди зі скісною рискою +summary: 'Слеш-команди: текстові та нативні, конфігурація й підтримувані команди' +title: Слеш-команди x-i18n: - generated_at: "2026-05-03T17:33:07Z" + generated_at: "2026-05-03T18:10:30Z" model: gpt-5.5 provider: openai - source_hash: 02b7c1f3daa9598515085fd94570172f82779ce61a2af34edac02a36ccc87543 + source_hash: 9fbdd76ccd43159cabfbc3f15f7bddd2a7ada07fcd6eea2e169d2d88df18f28c source_path: tools/slash-commands.md workflow: 16 --- -Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. Команда bash-чату лише для хоста використовує `! ` (з `/bash ` як псевдонімом). +Команди обробляє Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. Команда bash-чату лише для хоста використовує `! ` (з `/bash ` як псевдонімом). -Коли розмова або thread прив’язана до сеансу ACP, звичайний подальший текст спрямовується до цього ACP harness. Команди керування Gateway все одно залишаються локальними: `/acp ...` завжди потрапляє до обробника команд OpenClaw ACP, а `/status` плюс `/unfocus` залишаються локальними щоразу, коли обробку команд увімкнено для цієї поверхні. +Коли розмову або тред прив’язано до ACP-сесії, звичайний подальший текст спрямовується до цього ACP harness. Команди керування Gateway все одно залишаються локальними: `/acp ...` завжди потрапляє до обробника команд OpenClaw ACP, а `/status` плюс `/unfocus` залишаються локальними щоразу, коли обробку команд увімкнено для поверхні. -Існують дві пов’язані системи: +Є дві пов’язані системи: - + Окремі повідомлення `/...`. - + `/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`. - Директиви вилучаються з повідомлення до того, як модель його побачить. - - У звичайних чат-повідомленнях (не лише з директивами) вони розглядаються як «inline hints» і **не** зберігають налаштування сеансу. - - У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сеансі й відповідають підтвердженням. - - Директиви застосовуються лише для **авторизованих відправників**. Якщо встановлено `commands.allowFrom`, використовується лише цей allowlist; інакше авторизація береться з allowlists/спарювання каналу плюс `commands.useAccessGroups`. Неавторизовані відправники бачать, що директиви обробляються як звичайний текст. + - У звичайних повідомленнях чату (не лише з директивами) вони трактуються як "inline hints" і **не** зберігають налаштування сесії. + - У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сесії та відповідають підтвердженням. + - Директиви застосовуються лише для **авторизованих відправників**. Якщо встановлено `commands.allowFrom`, використовується лише цей список дозволених; інакше авторизація надходить зі списків дозволених/спарювання каналу плюс `commands.useAccessGroups`. Неавторизовані відправники бачать директиви як звичайний текст. - - Лише allowlisted/авторизовані відправники: `/help`, `/commands`, `/status`, `/whoami` (`/id`). + + Лише відправники зі списку дозволених/авторизовані: `/help`, `/commands`, `/status`, `/whoami` (`/id`). Вони виконуються негайно, вилучаються до того, як модель побачить повідомлення, а решта тексту продовжує проходити звичайним потоком. @@ -69,169 +69,169 @@ x-i18n: ``` - Умикає розбір `/...` у чат-повідомленнях. На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення в `false`. + Вмикає розбір `/...` у повідомленнях чату. На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення на `false`. - Реєструє нативні команди. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash commands); ігнорується для провайдерів без нативної підтримки. Встановіть `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити для окремого провайдера (bool або `"auto"`). `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і не видаляються автоматично. + Реєструє нативні команди. Auto: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash-команди); ігнорується для провайдерів без нативної підтримки. Встановіть `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити для окремого провайдера (bool або `"auto"`). У Discord значення `false` пропускає реєстрацію slash-команд і очищення під час запуску; раніше зареєстровані команди можуть залишатися видимими, доки ви не видалите їх із застосунку Discord. Команди Slack керуються в застосунку Slack і не видаляються автоматично. -У Discord специфікації нативних команд можуть містити `descriptionLocalizations`, які OpenClaw публікує як Discord `description_localizations` і включає в порівняння узгодження. +У Discord специфікації нативних команд можуть містити `descriptionLocalizations`, які OpenClaw публікує як Discord `description_localizations` і включає до порівнянь узгодження. - Реєструє команди **skill** нативно, коли це підтримується. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створення slash command для кожного skill). Встановіть `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити для окремого провайдера (bool або `"auto"`). + Реєструє команди **skill** нативно, коли це підтримується. Auto: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створити slash-команду для кожного skill). Встановіть `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити для окремого провайдера (bool або `"auto"`). - Умикає `! ` для запуску shell-команд хоста (`/bash ` є псевдонімом; потребує allowlists `tools.elevated`). + Вмикає `! ` для запуску команд shell хоста (`/bash ` є псевдонімом; потребує списків дозволених `tools.elevated`). - Керує тим, як довго bash чекає перед перемиканням у фоновий режим (`0` переводить у фон негайно). + Керує тим, як довго bash чекає перед перемиканням у фоновий режим (`0` одразу переводить у фон). - Умикає `/config` (читає/записує `openclaw.json`). + Вмикає `/config` (читає/записує `openclaw.json`). - Умикає `/mcp` (читає/записує керовану OpenClaw конфігурацію MCP у `mcp.servers`). + Вмикає `/mcp` (читає/записує керовану OpenClaw MCP-конфігурацію в `mcp.servers`). - Умикає `/plugins` (виявлення/статус plugins плюс елементи керування встановленням і ввімкненням/вимкненням). + Вмикає `/plugins` (виявлення/статус plugin плюс елементи керування встановленням і ввімкненням/вимкненням). - Умикає `/debug` (лише runtime-перевизначення). + Вмикає `/debug` (перевизначення лише під час виконання). - Умикає `/restart` плюс дії інструментів перезапуску gateway. + Вмикає `/restart` плюс дії інструментів перезапуску gateway. - Встановлює явний owner allowlist для командних/інструментальних поверхонь лише для owner. Це обліковий запис людського оператора, який може схвалювати небезпечні дії та виконувати команди, як-от `/diagnostics`, `/export-trajectory` і `/config`. Він окремий від `commands.allowFrom` і від доступу через DM-спарювання. + Встановлює явний список дозволених власників для командних/інструментальних поверхонь лише для власника. Це обліковий запис людини-оператора, який може схвалювати небезпечні дії та виконувати команди на кшталт `/diagnostics`, `/export-trajectory` і `/config`. Він окремий від `commands.allowFrom` і від доступу через спарювання DM. - Для кожного каналу: змушує команди лише для owner вимагати **ідентичність owner** для запуску на цій поверхні. Коли `true`, відправник має або збігатися з розв’язаним кандидатом owner (наприклад, записом у `commands.ownerAllowFrom` або нативними метаданими owner провайдера), або мати внутрішній scope `operator.admin` у внутрішньому каналі повідомлень. Запис wildcard у channel `allowFrom` або порожній/нерозв’язаний список кандидатів owner **не** є достатнім — команди лише для owner на цьому каналі відмовляють закрито. Залиште це вимкненим, якщо хочете, щоб команди лише для owner обмежувалися тільки `ownerAllowFrom` і стандартними command allowlists. + Для кожного каналу: змушує команди лише для власника вимагати **ідентичність власника** для запуску на цій поверхні. Коли `true`, відправник має або збігатися з розв’язаним кандидатом власника (наприклад записом у `commands.ownerAllowFrom` або нативними метаданими власника провайдера), або мати внутрішню область `operator.admin` на внутрішньому каналі повідомлень. Запис із wildcard у `allowFrom` каналу або порожній/нерозв’язаний список кандидатів власника **не** є достатнім — команди лише для власника на цьому каналі відхиляються за замовчуванням. Залиште це вимкненим, якщо хочете, щоб команди лише для власника обмежувалися тільки `ownerAllowFrom` і стандартними списками дозволених команд. - Керує тим, як ids owner відображаються в системному prompt. + Керує тим, як ідентифікатори власника з’являються в системному prompt. - Необов’язково встановлює HMAC secret, що використовується, коли `commands.ownerDisplay="hash"`. + Необов’язково встановлює секрет HMAC, який використовується, коли `commands.ownerDisplay="hash"`. - Allowlist для авторизації команд за провайдерами. Коли налаштовано, це єдине джерело авторизації для команд і директив (channel allowlists/спарювання та `commands.useAccessGroups` ігноруються). Використовуйте `"*"` для глобального типового значення; ключі окремих провайдерів його перевизначають. + Список дозволених для авторизації команд за провайдерами. Коли налаштовано, це єдине джерело авторизації для команд і директив (списки дозволених/спарювання каналу та `commands.useAccessGroups` ігноруються). Використовуйте `"*"` для глобального значення за замовчуванням; ключі конкретних провайдерів перевизначають його. - Застосовує allowlists/policies для команд, коли `commands.allowFrom` не встановлено. + Застосовує списки дозволених/політики для команд, коли `commands.allowFrom` не встановлено. ## Список команд Поточне джерело істини: -- core built-ins беруться з `src/auto-reply/commands-registry.shared.ts` -- згенеровані dock commands беруться з `src/auto-reply/commands-registry.data.ts` -- команди plugins беруться з викликів plugin `registerCommand()` +- вбудовані core-команди надходять із `src/auto-reply/commands-registry.shared.ts` +- згенеровані dock-команди надходять із `src/auto-reply/commands-registry.data.ts` +- plugin-команди надходять із викликів plugin `registerCommand()` - фактична доступність на вашому gateway все одно залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених plugins -### Вбудовані команди core +### Вбудовані core-команди - - - `/new [model]` запускає новий сеанс; `/reset` є псевдонімом скидання. - - Control UI перехоплює введений `/new`, щоб створити та перемкнутися на свіжий сеанс dashboard; введений `/reset` все одно виконує in-place reset Gateway. - - `/reset soft [message]` зберігає поточний transcript, відкидає повторно використані ids сеансів CLI backend і повторно запускає startup/system-prompt loading in-place. - - `/compact [instructions]` ущільнює контекст сеансу. Див. [Compaction](/uk/concepts/compaction). + + - `/new [model]` запускає нову сесію; `/reset` є псевдонімом скидання. + - Control UI перехоплює введене `/new`, щоб створити й перемкнутися на нову сесію панелі; введене `/reset` все одно виконує скидання Gateway на місці. + - `/reset soft [message]` зберігає поточний транскрипт, відкидає повторно використані ідентифікатори сесій CLI backend і повторно запускає завантаження startup/system-prompt на місці. + - `/compact [instructions]` стискає контекст сесії. Див. [Compaction](/uk/concepts/compaction). - `/stop` перериває поточний запуск. - - `/session idle ` і `/session max-age ` керують строком дії прив’язки thread. - - `/export-session [path]` експортує поточний сеанс у HTML. Псевдонім: `/export`. - - `/export-trajectory [path]` запитує схвалення exec, а потім експортує JSONL [trajectory bundle](/uk/tools/trajectory) для поточного сеансу. Використовуйте це, коли вам потрібна хронологія prompt, tool і transcript для одного сеансу OpenClaw. У групових чатах prompt схвалення та результат експорту надсилаються owner приватно. Псевдонім: `/trajectory`. + - `/session idle ` і `/session max-age ` керують завершенням прив’язки треду. + - `/export-session [path]` експортує поточну сесію в HTML. Псевдонім: `/export`. + - `/export-trajectory [path]` запитує схвалення exec, а потім експортує JSONL [trajectory bundle](/uk/tools/trajectory) для поточної сесії. Використовуйте це, коли вам потрібна часова шкала prompt, інструментів і транскрипту для однієї сесії OpenClaw. У групових чатах prompt схвалення та результат експорту надсилаються власнику приватно. Псевдонім: `/trajectory`. - - - `/think ` встановлює рівень thinking. Варіанти беруться з профілю провайдера активної моделі; поширені рівні: `off`, `minimal`, `low`, `medium` і `high`, а власні рівні, як-от `xhigh`, `adaptive`, `max`, або двійковий `on`, доступні лише там, де підтримуються. Псевдоніми: `/thinking`, `/t`. - - `/verbose on|off|full` перемикає verbose output. Псевдонім: `/v`. - - `/trace on|off` перемикає plugin trace output для поточного сеансу. - - `/fast [status|on|off]` показує або встановлює fast mode. + + - `/think ` встановлює рівень мислення. Опції надходять із профілю провайдера активної моделі; поширені рівні: `off`, `minimal`, `low`, `medium` і `high`, а користувацькі рівні, як-от `xhigh`, `adaptive`, `max`, або бінарний `on`, доступні лише там, де підтримуються. Псевдоніми: `/thinking`, `/t`. + - `/verbose on|off|full` перемикає докладний вивід. Псевдонім: `/v`. + - `/trace on|off` перемикає трасувальний вивід plugin для поточної сесії. + - `/fast [status|on|off]` показує або встановлює швидкий режим. - `/reasoning [on|off|stream]` перемикає видимість reasoning. Псевдонім: `/reason`. - - `/elevated [on|off|ask|full]` перемикає elevated mode. Псевдонім: `/elev`. + - `/elevated [on|off|ask|full]` перемикає підвищений режим. Псевдонім: `/elev`. - `/exec host= security= ask= node=` показує або встановлює типові значення exec. - `/model [name|#|status]` показує або встановлює модель. - - `/models [provider] [page] [limit=|size=|all]` перелічує налаштованих/доступних за автентифікацією провайдерів або моделі для провайдера; додайте `all`, щоб переглянути повний catalog цього провайдера. - - `/queue ` керує поведінкою черги (`steer`, legacy `queue`, `followup`, `collect`, `steer-backlog`, `interrupt`) плюс параметри на кшталт `debounce:0.5s cap:25 drop:summarize`; `/queue default` або `/queue reset` очищає перевизначення сеансу. Див. [Command queue](/uk/concepts/queue) і [Steering queue](/uk/concepts/queue-steering). + - `/models [provider] [page] [limit=|size=|all]` перелічує налаштованих/доступних через автентифікацію провайдерів або моделі для провайдера; додайте `all`, щоб переглянути повний каталог цього провайдера. + - `/queue ` керує поведінкою черги (`steer`, застаріле `queue`, `followup`, `collect`, `steer-backlog`, `interrupt`) плюс опціями на кшталт `debounce:0.5s cap:25 drop:summarize`; `/queue default` або `/queue reset` очищає перевизначення сесії. Див. [Command queue](/uk/concepts/queue) і [Steering queue](/uk/concepts/queue-steering). - - - `/help` показує короткий довідковий підсумок. - - `/commands` показує згенерований catalog команд. - - `/tools [compact|verbose]` показує, що поточний агент може використовувати просто зараз. - - `/status` показує execution/runtime status, включно з мітками `Execution`/`Runtime` і usage/quota провайдера, коли доступно. - - `/diagnostics [note]` — це owner-only support-report flow для помилок Gateway і запусків Codex harness. Він щоразу запитує явне схвалення exec перед запуском `openclaw gateway diagnostics export --json`; не схвалюйте diagnostics правилом allow-all. Після схвалення він надсилає звіт, придатний для вставлення, з локальним шляхом bundle, підсумком manifest, privacy notes і релевантними ids сеансів. У групових чатах prompt схвалення та звіт надсилаються owner приватно. Коли активний сеанс використовує OpenAI Codex harness, те саме схвалення також надсилає релевантний Codex feedback на сервери OpenAI, а завершена відповідь перелічує ids сеансів OpenClaw, ids threads Codex і команди `codex resume `. Див. [Diagnostics Export](/uk/gateway/diagnostics). - - `/crestodian ` запускає helper налаштування та ремонту Crestodian з DM owner. - - `/tasks` перелічує активні/нещодавні фонові завдання для поточного сеансу. + + - `/help` показує короткий підсумок довідки. + - `/commands` показує згенерований каталог команд. + - `/tools [compact|verbose]` показує, що поточний агент може використовувати прямо зараз. + - `/status` показує статус виконання/runtime, включно з мітками `Execution`/`Runtime` і використанням/квотою провайдера, коли доступно. + - `/diagnostics [note]` — це потік звіту підтримки лише для власника для помилок Gateway і запусків Codex harness. Він щоразу запитує явне схвалення exec перед запуском `openclaw gateway diagnostics export --json`; не схвалюйте діагностику правилом allow-all. Після схвалення він надсилає звіт, який можна вставити, з локальним шляхом bundle, підсумком manifest, примітками про приватність і релевантними ідентифікаторами сесій. У групових чатах prompt схвалення та звіт надсилаються власнику приватно. Коли активна сесія використовує OpenAI Codex harness, те саме схвалення також надсилає релевантний відгук Codex на сервери OpenAI, а завершена відповідь перелічує ідентифікатори сесій OpenClaw, ідентифікатори тредів Codex і команди `codex resume `. Див. [Експорт діагностики](/uk/gateway/diagnostics). + - `/crestodian ` запускає помічник налаштування та ремонту Crestodian з DM власника. + - `/tasks` перелічує активні/недавні фонові завдання для поточної сесії. - `/context [list|detail|json]` пояснює, як збирається контекст. - - `/whoami` показує ваш sender id. Псевдонім: `/id`. - - `/usage off|tokens|full|cost` керує per-response usage footer або друкує local cost summary. + - `/whoami` показує ваш ідентифікатор відправника. Псевдонім: `/id`. + - `/usage off|tokens|full|cost` керує футером використання для кожної відповіді або друкує локальний підсумок вартості. - + - `/skill [input]` запускає skill за назвою. - - `/allowlist [list|add|remove] ...` керує записами allowlist. Лише текст. + - `/allowlist [list|add|remove] ...` керує записами списку дозволених. Лише текст. - `/approve ` розв’язує prompts схвалення exec. - - `/btw ` ставить side question без зміни майбутнього контексту сеансу. Псевдонім: `/side`. Див. [BTW](/uk/tools/btw). + - `/btw ` ставить побічне запитання без зміни майбутнього контексту сесії. Псевдонім: `/side`. Див. [BTW](/uk/tools/btw). - - - `/subagents list|kill|log|info|send|steer|spawn` керує запусками субагентів для поточного сеансу. - - `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сеансами ACP та параметрами середовища виконання. - - `/focus ` прив’язує поточний потік Discord або тему/розмову Telegram до цілі сеансу. - - `/unfocus` вилучає поточну прив’язку. - - `/agents` показує агентів, прив’язаних до потоку, для поточного сеансу. - - `/kill ` перериває одного або всіх запущених субагентів. - - `/steer ` надсилає керування запущеному субагенту. Псевдонім: `/tell`. + + - `/subagents list|kill|log|info|send|steer|spawn` керує запусками під-агентів для поточного сеансу. + - `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сеансами ACP і параметрами runtime. + - `/focus ` прив’язує поточну гілку Discord або тему/розмову Telegram до цілі сеансу. + - `/unfocus` видаляє поточну прив’язку. + - `/agents` показує агентів, прив’язаних до гілки, для поточного сеансу. + - `/kill ` перериває одного або всіх запущених під-агентів. + - `/steer ` надсилає керування запущеному під-агенту. Псевдонім: `/tell`. - + - `/config show|get|set|unset` читає або записує `openclaw.json`. Лише для власника. Потребує `commands.config: true`. - `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, керовану OpenClaw, у `mcp.servers`. Лише для власника. Потребує `commands.mcp: true`. - - `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан plugin. `/plugin` є псевдонімом. Записи лише для власника. Потребує `commands.plugins: true`. - - `/debug show|set|unset|reset` керує перевизначеннями конфігурації лише для середовища виконання. Лише для власника. Потребує `commands.debug: true`. - - `/restart` перезапускає OpenClaw, коли це ввімкнено. Типово: ввімкнено; задайте `commands.restart: false`, щоб вимкнути. - - `/send on|off|inherit` задає політику надсилання. Лише для власника. + - `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан плагінів. `/plugin` є псевдонімом. Запис лише для власника. Потребує `commands.plugins: true`. + - `/debug show|set|unset|reset` керує runtime-перевизначеннями конфігурації. Лише для власника. Потребує `commands.debug: true`. + - `/restart` перезапускає OpenClaw, якщо ввімкнено. За замовчуванням: увімкнено; установіть `commands.restart: false`, щоб вимкнути це. + - `/send on|off|inherit` установлює політику надсилання. Лише для власника. - + - `/tts on|off|status|chat|latest|provider|limit|summary|audio|help` керує TTS. Див. [TTS](/uk/tools/tts). - - `/activation mention|always` задає режим активації в групі. - - `/bash ` запускає команду оболонки хоста. Лише текст. Псевдонім: `! `. Потребує `commands.bash: true` плюс списки дозволів `tools.elevated`. + - `/activation mention|always` установлює режим активації групи. + - `/bash ` запускає команду оболонки хоста. Лише текст. Псевдонім: `! `. Потребує `commands.bash: true` плюс списків дозволів `tools.elevated`. - `!poll [sessionId]` перевіряє фонове завдання bash. - `!stop [sessionId]` зупиняє фонове завдання bash. -### Згенеровані команди стикування +### Згенеровані команди докування -Команди стикування перемикають маршрут відповіді поточного сеансу на інший пов’язаний -канал. Див. [Стикування каналів](/uk/concepts/channel-docking) щодо налаштування, -прикладів і усунення неполадок. +Команди докування перемикають маршрут відповіді поточного сеансу на інший пов’язаний +канал. Див. [Докування каналів](/uk/concepts/channel-docking), щоб налаштувати, +переглянути приклади й усунути несправності. -Команди стикування генеруються з channel plugins із підтримкою нативних команд. Поточний вбудований набір: +Команди докування генеруються з плагінів каналів із підтримкою нативних команд. Поточний вбудований набір: - `/dock-discord` (псевдонім: `/dock_discord`) - `/dock-mattermost` (псевдонім: `/dock_mattermost`) - `/dock-slack` (псевдонім: `/dock_slack`) - `/dock-telegram` (псевдонім: `/dock_telegram`) -Використовуйте команди стикування з прямого чату, щоб перемкнути маршрут відповіді поточного сеансу на інший пов’язаний канал. Агент зберігає той самий контекст сеансу, але майбутні відповіді для цього сеансу доставляються вибраному співрозмовнику каналу. +Використовуйте команди докування з прямого чату, щоб перемкнути маршрут відповіді поточного сеансу на інший пов’язаний канал. Агент зберігає той самий контекст сеансу, але майбутні відповіді для цього сеансу доставляються вибраному співрозмовнику каналу. -Команди стикування потребують `session.identityLinks`. Відправник-джерело й цільовий співрозмовник мають бути в одній групі ідентичностей, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активному сеансі. Якщо відправник не пов’язаний зі співрозмовником Discord, команда відповідає підказкою з налаштування замість переходу до звичайного чату. +Команди докування потребують `session.identityLinks`. Відправник-джерело й цільовий співрозмовник мають бути в одній групі ідентичності, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активному сеансі. Якщо відправника не пов’язано зі співрозмовником Discord, команда відповідає підказкою з налаштування замість переходу до звичайного чату. -Стикування змінює лише маршрут активного сеансу. Воно не створює облікові записи каналів, не надає доступ, не обходить списки дозволів каналів і не переносить історію транскрипта до іншого сеансу. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану команду стикування, щоб знову перемкнути маршрут. +Докування змінює лише маршрут активного сеансу. Воно не створює облікові записи каналів, не надає доступ, не обходить списки дозволів каналу й не переносить історію стенограми до іншого сеансу. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану команду докування, щоб знову перемкнути маршрут. -### Команди вбудованих plugins +### Команди вбудованих плагінів -Вбудовані plugins можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії: +Вбудовані плагіни можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії: -- `/dreaming [on|off|status|help]` перемикає memory dreaming. Див. [Dreaming](/uk/concepts/dreaming). +- `/dreaming [on|off|status|help]` перемикає Dreaming пам’яті. Див. [Dreaming](/uk/concepts/dreaming). - `/pair [qr|status|pending|approve|cleanup|notify]` керує потоком сполучення/налаштування пристрою. Див. [Сполучення](/uk/channels/pairing). -- `/phone status|arm [duration]|disarm` тимчасово активує високоризикові команди телефонного вузла. -- `/voice status|list [limit]|set ` керує конфігурацією голосу Talk. У Discord назва нативної команди: `/talkvoice`. -- `/card ...` надсилає пресети багатих карток LINE. Див. [LINE](/uk/channels/line). -- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє та керує вбудованим серверним каркасом застосунку Codex. Див. [Каркас Codex](/uk/plugins/codex-harness). +- `/phone status|arm [duration]|disarm` тимчасово озброює високоризикові команди телефонного вузла. +- `/voice status|list [limit]|set ` керує конфігурацією голосу Talk. У Discord назва нативної команди — `/talkvoice`. +- `/card ...` надсилає пресети rich card LINE. Див. [LINE](/uk/channels/line). +- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє й керує вбудованим harness app-server Codex. Див. [Harness Codex](/uk/plugins/codex-harness). - Команди лише для QQBot: - `/bot-ping` - `/bot-version` @@ -241,88 +241,88 @@ x-i18n: ### Динамічні команди Skills -Skills, які може викликати користувач, також доступні як slash-команди: +Skills, доступні для виклику користувачем, також відкриваються як slash-команди: -- `/skill [input]` завжди працює як універсальна точка входу. +- `/skill [input]` завжди працює як загальна точка входу. - Skills також можуть з’являтися як прямі команди, наприклад `/prose`, коли skill/plugin їх реєструє. -- реєстрація нативних команд Skills контролюється `commands.nativeSkills` і `channels..commands.nativeSkills`. +- реєстрація нативних команд Skills керується `commands.nativeSkills` і `channels..commands.nativeSkills`. - специфікації команд можуть надавати `descriptionLocalizations` для нативних поверхонь, які підтримують локалізовані описи, зокрема Discord. - - - Команди приймають необов’язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`). - - `/new ` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст вважається тілом повідомлення. - - Для повної розбивки використання провайдерів використовуйте `openclaw status --usage`. + + - Команди приймають необов’язковий `:` між командою й аргументами (наприклад, `/think: high`, `/send: on`, `/help:`). + - `/new ` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст розглядається як тіло повідомлення. + - Для повного розподілу використання за провайдерами використовуйте `openclaw status --usage`. - `/allowlist add|remove` потребує `commands.config=true` і враховує `configWrites` каналу. - - У багатокористувацьких каналах `/allowlist --account `, націлений на конфігурацію, і `/config set channels..accounts....` також враховують `configWrites` цільового облікового запису. - - `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` друкує локальний підсумок вартості з журналів сеансів OpenClaw. - - `/restart` увімкнено типово; задайте `commands.restart: false`, щоб вимкнути. - - `/plugins install ` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет, `git:` або `clawhub:`, а потім запитує перезапуск Gateway, оскільки вихідні модулі plugin змінилися. - - `/plugins enable|disable` оновлює конфігурацію plugin і запускає перезавантаження plugins Gateway для нових ходів агента. + - У багатокористувацьких каналах `/allowlist --account ` із ціллю конфігурації та `/config set channels..accounts....` також враховують `configWrites` цільового облікового запису. + - `/usage` керує футером використання для кожної відповіді; `/usage cost` друкує локальний підсумок вартості з журналів сеансів OpenClaw. + - `/restart` увімкнено за замовчуванням; установіть `commands.restart: false`, щоб вимкнути це. + - `/plugins install ` приймає ті самі специфікації плагінів, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет, `git:` або `clawhub:`, а потім запитує перезапуск Gateway, бо вихідні модулі плагіна змінилися. + - `/plugins enable|disable` оновлює конфігурацію плагінів і запускає перезавантаження плагінів Gateway для нових ходів агента. - - - Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступна як текст). `join` потребує гільдії та вибраного голосового/сценічного каналу. Потребує `channels.discord.voice` і нативних команд. - - Команди прив’язки потоків Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують увімкнених ефективних прив’язок потоків (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`). - - Довідник команд ACP і поведінка середовища виконання: [Агенти ACP](/uk/tools/acp-agents). + + - Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступна як текст). `join` потребує guild і вибраного voice/stage-каналу. Потребує `channels.discord.voice` і нативних команд. + - Команди прив’язки гілок Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують увімкнених ефективних прив’язок гілок (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`). + - Довідник команд ACP і runtime-поведінка: [Агенти ACP](/uk/tools/acp-agents). - - - `/verbose` призначено для налагодження та додаткової видимості; тримайте його **вимкненим** під час звичайного використання. - - `/trace` вужчий за `/verbose`: він показує лише рядки трасування/налагодження, що належать plugin, і не вмикає звичайний детальний шум інструментів. - - `/fast on|off` зберігає перевизначення сеансу. Використовуйте опцію `inherit` в інтерфейсі Sessions UI, щоб очистити його й повернутися до типових значень конфігурації. - - `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних кінцевих точках Responses, тоді як прямі публічні запити Anthropic, зокрема трафік з OAuth-автентифікацією, надісланий до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic). + + - `/verbose` призначено для налагодження й додаткової видимості; тримайте його **вимкненим** під час звичайного використання. + - `/trace` вужчий за `/verbose`: він показує лише trace/debug-рядки, якими володіє плагін, і залишає звичайний докладний шум інструментів вимкненим. + - `/fast on|off` зберігає перевизначення сеансу. Використовуйте параметр `inherit` в UI Sessions, щоб очистити його й повернутися до стандартних значень конфігурації. + - `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних кінцевих точках Responses, тоді як прямі публічні запити Anthropic, зокрема OAuth-автентифікований трафік, надісланий до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic). - Підсумки збоїв інструментів усе ще показуються, коли це доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`. - - `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє reasoning, вивід інструментів або діагностику plugin, які ви не мали наміру показувати. Краще залишати їх вимкненими, особливо в групових чатах. + - `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє міркування, вивід інструментів або діагностику плагінів, які ви не планували показувати. Краще залишати їх вимкненими, особливо в групових чатах. - + - `/model` негайно зберігає нову модель сеансу. - Якщо агент простоює, наступний запуск одразу її використовує. - - Якщо запуск уже активний, OpenClaw позначає живе перемикання як очікуване й перезапускається в нову модель лише в чистій точці повторної спроби. - - Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої нагоди повторної спроби або наступного ходу користувача. - - У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від rescue mode каналу повідомлень і не надає віддалених повноважень конфігурації. + - Якщо запуск уже активний, OpenClaw позначає live-перемикання як очікуване й перезапускається в нову модель лише в чистій точці повторної спроби. + - Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або наступного ходу користувача. + - У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від rescue mode каналу повідомлень і не надає віддалених прав на конфігурацію. - - - **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволів обробляються негайно (обхід черги + моделі). - - **Обмеження групових згадок:** повідомлення лише з командами від відправників зі списку дозволів обходять вимоги згадки. + + - **Швидкий шлях:** повідомлення, що містять лише команди, від відправників зі списку дозволів обробляються негайно (обхід черги + моделі). + - **Обмеження згадок у групі:** повідомлення, що містять лише команди, від відправників зі списку дозволів обходять вимоги до згадок. - **Вбудовані скорочення (лише відправники зі списку дозволів):** певні команди також працюють, коли вбудовані у звичайне повідомлення, і вилучаються перед тим, як модель побачить решту тексту. - Приклад: `hey /status` запускає відповідь зі статусом, а решта тексту продовжує проходити звичайним потоком. - Наразі: `/help`, `/commands`, `/status`, `/whoami` (`/id`). - - Несанкціоновані повідомлення лише з командами мовчки ігноруються, а вбудовані токени `/...` трактуються як звичайний текст. + - Несанкціоновані повідомлення, що містять лише команди, мовчки ігноруються, а вбудовані токени `/...` розглядаються як звичайний текст. - - - **Команди Skills:** Skills `user-invocable` доступні як slash-команди. Назви очищаються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`). - - `/skill [input]` запускає skill за назвою (корисно, коли обмеження нативних команд не дають створити окремі команди для кожного skill). - - Типово команди Skills пересилаються моделі як звичайний запит. + + - **Команди Skills:** Skills із `user-invocable` відкриваються як slash-команди. Назви нормалізуються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`). + - `/skill [input]` запускає Skills за назвою (корисно, коли обмеження нативних команд не дозволяють команди для кожного skill). + - За замовчуванням команди Skills пересилаються до моделі як звичайний запит. - Skills можуть необов’язково оголосити `command-dispatch: tool`, щоб спрямувати команду безпосередньо до інструмента (детерміновано, без моделі). - - Приклад: `/prose` (OpenProse plugin) — див. [OpenProse](/uk/prose). - - **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти, а ви пропускаєте аргумент. Динамічні варіанти визначаються відносно моделі цільового сеансу, тому параметри, специфічні для моделі, наприклад рівні `/think`, дотримуються перевизначення `/model` цього сеансу. + - Приклад: `/prose` (плагін OpenProse) — див. [OpenProse](/uk/prose). + - **Аргументи нативних команд:** Discord використовує автозаповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти, а ви пропускаєте аргумент. Динамічні варіанти розв’язуються відносно моделі цільового сеансу, тому специфічні для моделі параметри, як-от рівні `/think`, наслідують перевизначення `/model` цього сеансу. ## `/tools` -`/tools` відповідає на запитання про середовище виконання, а не про конфігурацію: **що цей агент може використовувати прямо зараз у цій розмові**. +`/tools` відповідає на runtime-запитання, а не на запитання конфігурації: **що цей агент може використовувати прямо зараз у цій розмові**. - Типовий `/tools` компактний і оптимізований для швидкого перегляду. - `/tools verbose` додає короткі описи. -- Поверхні нативних команд, які підтримують аргументи, надають той самий перемикач режиму `compact|verbose`. -- Результати мають область дії сеансу, тому зміна агента, каналу, потоку, авторизації відправника або моделі може змінити вивід. -- `/tools` включає інструменти, які справді доступні в середовищі виконання, зокрема базові інструменти, підключені інструменти plugin та інструменти, що належать каналу. +- Поверхні нативних команд, які підтримують аргументи, відкривають той самий перемикач режиму `compact|verbose`. +- Результати мають область дії сеансу, тому зміна агента, каналу, гілки, авторизації відправника або моделі може змінити вивід. +- `/tools` включає інструменти, які фактично доступні під час runtime, зокрема основні інструменти, підключені інструменти плагінів та інструменти, якими володіє канал. -Для редагування профілю та перевизначень використовуйте панель Tools в Control UI або поверхні конфігурації/каталогу, а не трактуйте `/tools` як статичний каталог. +Для редагування профілів і перевизначень використовуйте панель Tools у Control UI або поверхні config/catalog замість того, щоб сприймати `/tools` як статичний каталог. ## Поверхні використання (що де показується) -- **Використання/квота провайдера** (приклад: "Claude 80% left") відображається в `/status` для поточного провайдера моделі, коли ввімкнено відстеження використання. OpenClaw нормалізує вікна провайдера до `% left`; для MiniMax поля відсотків лише із залишком інвертуються перед показом, а відповіді `model_remains` надають перевагу запису чат-моделі плюс позначці плану з тегом моделі. -- **Рядки токенів/кешу** в `/status` можуть повертатися до останнього запису використання з транскрипту, коли знімок живої сесії розріджений. Наявні ненульові живі значення все одно мають пріоритет, а fallback із транскрипту також може відновити мітку активної runtime-моделі плюс більшу prompt-орієнтовану суму, коли збережені підсумки відсутні або менші. -- **Виконання проти runtime:** `/status` повідомляє `Execution` для ефективного шляху sandbox і `Runtime` для того, хто фактично запускає сесію: `OpenClaw Pi Default`, `OpenAI Codex`, CLI-бекенд або ACP-бекенд. -- **Токени/вартість на відповідь** контролюється через `/usage off|tokens|full` (додається до звичайних відповідей). -- `/model status` стосується **моделей/автентифікації/endpoint-ів**, а не використання. +- **Використання/квота провайдера** (приклад: "Claude 80% left") відображається в `/status` для поточного провайдера моделей, коли відстеження використання ввімкнене. OpenClaw нормалізує вікна провайдера до `% left`; для MiniMax поля відсотків лише із залишком інвертуються перед показом, а відповіді `model_remains` надають перевагу запису чат-моделі разом із міткою плану з тегом моделі. +- **Рядки токенів/кешу** у `/status` можуть повертатися до останнього запису використання з транскрипту, коли знімок живої сесії розріджений. Наявні ненульові живі значення все ще мають пріоритет, а fallback із транскрипту також може відновити мітку активної runtime-моделі плюс більший prompt-орієнтований підсумок, коли збережені підсумки відсутні або менші. +- **Виконання vs runtime:** `/status` повідомляє `Execution` для ефективного шляху sandbox і `Runtime` для того, хто фактично запускає сесію: `OpenClaw Pi Default`, `OpenAI Codex`, CLI backend або ACP backend. +- **Токени/вартість за відповідь** керуються `/usage off|tokens|full` (додається до звичайних відповідей). +- `/model status` стосується **моделей/auth/endpoints**, а не використання. ## Вибір моделі (`/model`) @@ -341,14 +341,14 @@ Skills, які може викликати користувач, також до Примітки: -- `/model` і `/model list` показують компактний нумерований вибірник (сімейство моделей + доступні провайдери). -- У Discord `/model` і `/models` відкривають інтерактивний вибірник із випадаючими списками провайдера та моделі плюс кроком Submit. -- `/model <#>` вибирає з цього вибірника (і, коли можливо, надає перевагу поточному провайдеру). -- `/model status` показує детальний вигляд, зокрема налаштований endpoint провайдера (`baseUrl`) і режим API (`api`), коли вони доступні. +- `/model` і `/model list` показують компактний нумерований вибір (сімейство моделей + доступні провайдери). +- У Discord `/model` і `/models` відкривають інтерактивний вибір із dropdown-полями провайдера й моделі та кроком Submit. +- `/model <#>` вибирає з цього списку (і за можливості надає перевагу поточному провайдеру). +- `/model status` показує детальний вигляд, включно з налаштованим endpoint провайдера (`baseUrl`) і API-режимом (`api`), коли вони доступні. ## Debug-перевизначення -`/debug` дає змогу задавати **лише runtime** перевизначення конфігурації (у пам'яті, не на диску). Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.debug: true`. +`/debug` дає змогу задавати **лише runtime** перевизначення конфігурації (у пам’яті, не на диску). Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.debug: true`. Приклади: @@ -361,12 +361,12 @@ Skills, які може викликати користувач, також до ``` -Перевизначення негайно застосовуються до нових читань конфігурації, але **не** записуються в `openclaw.json`. Використайте `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску. +Перевизначення негайно застосовуються до нових читань конфігурації, але **не** записуються в `openclaw.json`. Використовуйте `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску. ## Вивід трасування Plugin -`/trace` дає змогу перемикати **сесійні рядки трасування/debug Plugin** без увімкнення повного verbose-режиму. +`/trace` дає змогу перемикати **рядки трасування/debug плагіна в межах сесії** без увімкнення повного verbose-режиму. Приклади: @@ -379,11 +379,11 @@ Skills, які може викликати користувач, також до Примітки: - `/trace` без аргументу показує поточний стан трасування сесії. -- `/trace on` вмикає рядки трасування Plugin для поточної сесії. -- `/trace off` знову їх вимикає. -- Рядки трасування Plugin можуть з'являтися в `/status` і як наступне діагностичне повідомлення після звичайної відповіді асистента. -- `/trace` не замінює `/debug`; `/debug` усе ще керує лише runtime-перевизначеннями конфігурації. -- `/trace` не замінює `/verbose`; звичайний verbose-вивід інструментів/статусу все ще належить до `/verbose`. +- `/trace on` вмикає рядки трасування плагіна для поточної сесії. +- `/trace off` знову вимикає їх. +- Рядки трасування плагіна можуть з’являтися в `/status` і як подальше діагностичне повідомлення після звичайної відповіді асистента. +- `/trace` не замінює `/debug`; `/debug` і далі керує лише runtime перевизначеннями конфігурації. +- `/trace` не замінює `/verbose`; звичайний verbose-вивід інструментів/status і далі належить до `/verbose`. ## Оновлення конфігурації @@ -400,7 +400,7 @@ Skills, які може викликати користувач, також до ``` -Конфігурацію перевіряють перед записом; недійсні зміни відхиляються. Оновлення `/config` зберігаються після перезапусків. +Конфігурація перевіряється перед записом; недійсні зміни відхиляються. Оновлення `/config` зберігаються між перезапусками. ## Оновлення MCP @@ -417,12 +417,12 @@ Skills, які може викликати користувач, також до ``` -`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi. Runtime-адаптери вирішують, які транспорти фактично можна виконувати. +`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi. Runtime-адаптери вирішують, які транспорти фактично виконувані. ## Оновлення Plugin -`/plugins` дає операторам змогу переглядати виявлені Plugin і перемикати ввімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як alias. За замовчуванням вимкнено; увімкніть через `commands.plugins: true`. +`/plugins` дає операторам змогу переглядати виявлені плагіни й перемикати ввімкнення в конфігурації. Read-only потоки можуть використовувати `/plugin` як alias. За замовчуванням вимкнено; увімкніть через `commands.plugins: true`. Приклади: @@ -435,17 +435,17 @@ Skills, які може викликати користувач, також до ``` -- `/plugins list` і `/plugins show` використовують справжнє виявлення Plugin у поточному workspace плюс конфігурацію на диску. +- `/plugins list` і `/plugins show` використовують справжнє виявлення плагінів у поточному workspace разом із конфігурацією на диску. - `/plugins install` встановлює з ClawHub, npm, git, локальних каталогів і архівів. -- `/plugins enable|disable` оновлює лише конфігурацію Plugin; це не встановлює й не видаляє Plugin. -- Зміни ввімкнення й вимкнення hot-reload runtime-поверхні Plugin у Gateway для нових ходів агента; install запитує перезапуск Gateway, бо вихідні модулі Plugin змінилися. +- `/plugins enable|disable` оновлює лише конфігурацію плагіна; це не встановлює й не видаляє плагіни. +- Зміни ввімкнення й вимкнення hot-reload runtime-поверхні плагінів Gateway для нових ходів агента; встановлення запитує перезапуск Gateway, бо змінилися source-модулі плагіна. ## Примітки щодо поверхонь - + - **Текстові команди** виконуються у звичайній чат-сесії (DM спільно використовують `main`, групи мають власну сесію). - **Нативні команди** використовують ізольовані сесії: - Discord: `agent::discord:slash:` @@ -454,17 +454,17 @@ Skills, які може викликати користувач, також до - **`/stop`** цілиться в активну чат-сесію, щоб вона могла перервати поточний запуск. - - `channels.slack.slashCommand` усе ще підтримується для однієї команди стилю `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну slash-команду Slack для кожної вбудованої команди (ті самі назви, що й у `/help`). Меню аргументів команд для Slack доставляються як ephemeral-кнопки Block Kit. + + `channels.slack.slashCommand` і далі підтримується для однієї команди у стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну Slack slash command для кожної вбудованої команди (ті самі назви, що й у `/help`). Меню аргументів команд для Slack доставляються як ephemeral кнопки Block Kit. - Виняток для нативних команд Slack: зареєструйте `/agentstatus` (не `/status`), бо Slack резервує `/status`. Текстова `/status` усе ще працює в повідомленнях Slack. + Виняток для нативних Slack-команд: зареєструйте `/agentstatus` (не `/status`), бо Slack резервує `/status`. Текстова `/status` і далі працює в повідомленнях Slack. -## Побічні запитання BTW +## Побічні питання BTW -`/btw` — це швидке **побічне запитання** про поточну сесію. `/side` є alias. +`/btw` — це швидке **побічне питання** щодо поточної сесії. `/side` є alias. На відміну від звичайного чату: @@ -472,9 +472,9 @@ Skills, які може викликати користувач, також до - воно виконується як окремий одноразовий виклик **без інструментів**, - воно не змінює майбутній контекст сесії, - воно не записується в історію транскрипту, -- воно доставляється як живий побічний результат замість звичайного повідомлення асистента. +- воно доставляється як live побічний результат замість звичайного повідомлення асистента. -Це робить `/btw` корисним, коли вам потрібне тимчасове уточнення, поки основне завдання продовжує виконуватися. +Це робить `/btw` корисним, коли потрібне тимчасове уточнення, поки основне завдання продовжується. Приклад: @@ -483,10 +483,10 @@ Skills, які може викликати користувач, також до /side what changed while the main run continued? ``` -Див. [Побічні запитання BTW](/uk/tools/btw), щоб отримати повну поведінку та деталі UX клієнта. +Див. [Побічні питання BTW](/uk/tools/btw), щоб отримати повну поведінку й деталі UX клієнта. -## Пов'язане +## Пов’язане -- [Створення skills](/uk/tools/creating-skills) +- [Створення Skills](/uk/tools/creating-skills) - [Skills](/uk/tools/skills) - [Конфігурація Skills](/uk/tools/skills-config)