diff --git a/docs/uk/channels/discord.md b/docs/uk/channels/discord.md
index 08f70917c..15b27194d 100644
--- a/docs/uk/channels/discord.md
+++ b/docs/uk/channels/discord.md
@@ -1,65 +1,65 @@
---
read_when:
- Робота над функціями каналу Discord
-summary: Статус підтримки бота Discord, можливості та конфігурація
+summary: Статус підтримки бота Discord, можливості та налаштування
title: Discord
x-i18n:
- generated_at: "2026-04-24T03:41:28Z"
+ generated_at: "2026-04-24T17:24:52Z"
model: gpt-5.4
provider: openai
- source_hash: ce73e0e6995702f3b2453b2e5ab4e55b02190e64fdf5805f53b4002be63140a2
+ source_hash: df5d215c6a6c43e1b3f60837752f60eafc6e34c1ffd4aaceb2f60d4dd3c130be
source_path: channels/discord.md
workflow: 15
---
-Готово для приватних повідомлень і каналів гільдій через офіційний Gateway Discord.
+Готово для приватних повідомлень і каналів серверів через офіційний Gateway Discord.
-
- Приватні повідомлення 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".
- Натисніть **Bot** на бічній панелі. Установіть **Username** на ту назву, якою ви називаєте свого агента OpenClaw.
+ На бічній панелі натисніть **Bot**. Установіть **Username** на ту назву, якою ви називаєте свого агента OpenClaw.
-
- Усе ще на сторінці **Bot**, прокрутіть до **Privileged Gateway Intents** і увімкніть:
+
+ Усе ще на сторінці **Bot** прокрутіть до **Privileged Gateway Intents** і увімкніть:
- **Message Content Intent** (обов’язково)
- **Server Members Intent** (рекомендовано; обов’язково для allowlist ролей і зіставлення імені з ID)
- - **Presence Intent** (необов’язково; потрібно лише для оновлень присутності)
+ - **Presence Intent** (необов’язково; потрібне лише для оновлень присутності)
-
+
Прокрутіть угору на сторінці **Bot** і натисніть **Reset Token**.
Попри назву, це генерує ваш перший токен — нічого не «скидається».
- Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він вам незабаром знадобиться.
+ Скопіюйте токен і збережіть його десь. Це ваш **Bot Token**, і він незабаром знадобиться.
- Натисніть **OAuth2** на бічній панелі. Ви згенеруєте URL-запрошення з потрібними дозволами, щоб додати бота на свій сервер.
+ На бічній панелі натисніть **OAuth2**. Ви згенеруєте URL-запрошення з правильними дозволами, щоб додати бота на свій сервер.
Прокрутіть до **OAuth2 URL Generator** і увімкніть:
@@ -77,31 +77,31 @@ x-i18n:
- Attach Files
- Add Reactions (необов’язково)
- Це базовий набір для звичайних текстових каналів. Якщо ви плануєте публікувати в Discord threads, зокрема у сценаріях форумів або медіаканалів, де створюється або продовжується thread, також увімкніть **Send Messages in Threads**.
- Скопіюйте згенерований URL унизу, вставте його у браузер, виберіть свій сервер і натисніть **Continue**, щоб підключити. Тепер ви маєте побачити свого бота на сервері Discord.
+ Це базовий набір для звичайних текстових каналів. Якщо ви плануєте публікувати в тредах Discord, зокрема в процесах форумних або медіаканалів, які створюють або продовжують тред, також увімкніть **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**
+ 2. Клацніть правою кнопкою миші **значок сервера** на бічній панелі → **Copy Server ID**
+ 3. Клацніть правою кнопкою миші свій **аватар** → **Copy User ID**
- Збережіть свій **Server ID** і **User ID** разом із Bot Token — на наступному кроці ви передасте всі три значення до OpenClaw.
+ Збережіть свої **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"
@@ -115,16 +115,16 @@ openclaw gateway
-
+
-
- Напишіть своєму агенту OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і повідомте йому про це. Якщо Discord — ваш перший канал, скористайтеся вкладкою CLI / config.
+
+ Напишіть своєму агенту OpenClaw у будь-якому наявному каналі (наприклад, Telegram) і скажіть йому це. Якщо Discord — ваш перший канал, натомість використайте вкладку CLI / config.
- > "Я вже задав токен мого бота Discord у config. Будь ласка, заверши налаштування Discord з User ID `` і Server ID ``."
+ > "Я вже встановив токен свого Discord-бота в config. Будь ласка, заверши налаштування Discord з User ID `` і Server ID ``."
- Якщо ви надаєте перевагу файловій конфігурації, задайте:
+ Якщо ви віддаєте перевагу файловій конфігурації, установіть:
```json5
{
@@ -141,27 +141,27 @@ openclaw gateway
}
```
- Резервне значення env для облікового запису за замовчуванням:
+ Резервне env-значення для стандартного облікового запису:
```bash
DISCORD_BOT_TOKEN=...
```
- Підтримуються текстові значення `token`. Для `channels.discord.token` також підтримуються значення SecretRef через провайдери env/file/exec. Див. [Керування секретами](/uk/gateway/secrets).
+ Підтримуються plaintext-значення `token`. Значення SecretRef також підтримуються для `channels.discord.token` у провайдерах env/file/exec. Див. [Керування секретами](/uk/gateway/secrets).
-
- Дочекайтеся, поки Gateway запуститься, а потім надішліть своєму боту приватне повідомлення в Discord. Він відповість кодом підключення.
+
+ Дочекайтеся, поки Gateway запуститься, а потім напишіть боту в приватні повідомлення в Discord. У відповідь він надішле код сполучення.
-
- Надішліть код підключення своєму агенту в наявному каналі:
+
+ Надішліть код сполучення своєму агенту в наявному каналі:
- > "Підтвердь цей код підключення Discord: ``"
+ > "Схвали цей код сполучення Discord: ``"
@@ -173,29 +173,29 @@ openclaw pairing approve discord
- Термін дії кодів підключення спливає через 1 годину.
+ Термін дії кодів сполучення закінчується через 1 годину.
- Тепер ви маєте мати змогу спілкуватися зі своїм агентом у Discord через приватні повідомлення.
+ Тепер ви маєте змогу спілкуватися зі своїм агентом у Discord через приватні повідомлення.
-Визначення токена залежить від облікового запису. Значення токена в config мають пріоритет над резервним env. `DISCORD_BOT_TOKEN` використовується лише для облікового запису за замовчуванням.
-Для розширених вихідних викликів (інструмент повідомлень/дії каналу) явний `token` використовується для цього конкретного виклику. Це стосується дій надсилання та читання/перевірки (наприклад, read/search/fetch/thread/pins/permissions). Налаштування політики облікового запису/повторних спроб усе одно беруться з вибраного облікового запису в активному runtime snapshot.
+Визначення токена враховує обліковий запис. Значення токена в config мають пріоритет над резервним env-значенням. `DISCORD_BOT_TOKEN` використовується лише для стандартного облікового запису.
+Для розширених вихідних викликів (дії інструмента повідомлень/каналу) явний `token` використовується для цього конкретного виклику. Це стосується дій надсилання та читання/перевірки (наприклад, read/search/fetch/thread/pins/permissions). Політика облікового запису/повторних спроб усе ще надходить із вибраного облікового запису в активному runtime snapshot.
-## Рекомендовано: налаштуйте робочий простір гільдії
+## Рекомендовано: налаштуйте робочий простір сервера
-Після того як приватні повідомлення запрацюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал матиме власну сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот.
+Коли приватні повідомлення вже працюють, ви можете налаштувати свій сервер Discord як повноцінний робочий простір, де кожен канал отримує окрему сесію агента з власним контекстом. Це рекомендовано для приватних серверів, де є лише ви та ваш бот.
-
- Це дає змогу вашому агенту відповідати в будь-якому каналі на вашому сервері, а не лише в приватних повідомленнях.
+
+ Це дозволяє вашому агенту відповідати в будь-якому каналі вашого сервера, а не лише в приватних повідомленнях.
-
- > "Додай мій Server ID Discord `` до allowlist гільдій"
+
+ > "Додай мій Server ID Discord `` до allowlist серверів"
@@ -221,14 +221,14 @@ openclaw pairing approve discord
- За замовчуванням ваш агент відповідає в каналах гільдії лише коли його згадують через @mention. Для приватного сервера ви, ймовірно, захочете, щоб він відповідав на кожне повідомлення.
+ За замовчуванням ваш агент відповідає в каналах сервера лише тоді, коли його згадують через @mention. Для приватного сервера вам, імовірно, потрібно, щоб він відповідав на кожне повідомлення.
-
- > "Дозволь моєму агенту відповідати на цьому сервері без потреби в @mention"
+
+ > "Дозволь моєму агенту відповідати на цьому сервері без потреби в @mentioned"
- Установіть `requireMention: false` у конфігурації вашої гільдії:
+ Установіть `requireMention: false` у конфігурації сервера:
```json5
{
@@ -249,54 +249,54 @@ openclaw pairing approve discord
-
- За замовчуванням довготривала пам’ять (`MEMORY.md`) завантажується лише в сесіях приватних повідомлень. У каналах гільдії `MEMORY.md` не завантажується автоматично.
+
+ За замовчуванням довготривала пам’ять (`MEMORY.md`) завантажується лише в сесіях приватних повідомлень. У каналах сервера `MEMORY.md` не завантажується автоматично.
-
+
> "Коли я ставлю запитання в каналах Discord, використовуй memory_search або memory_get, якщо тобі потрібен довготривалий контекст із MEMORY.md."
- Якщо вам потрібен спільний контекст у кожному каналі, помістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони впроваджуються в кожну сесію). Довготривалі нотатки зберігайте в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам’яті.
+ Якщо вам потрібен спільний контекст у кожному каналі, розмістіть стабільні інструкції в `AGENTS.md` або `USER.md` (вони додаються до кожної сесії). Довготривалі нотатки зберігайте в `MEMORY.md` і звертайтеся до них за потреби за допомогою інструментів пам’яті.
-Тепер створіть кілька каналів на своєму сервері Discord і починайте спілкування. Ваш агент бачить назву каналу, а кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що, що відповідає вашому робочому процесу.
+Тепер створіть кілька каналів на своєму сервері Discord і починайте спілкуватися. Ваш агент може бачити назву каналу, і кожен канал отримує власну ізольовану сесію — тож ви можете налаштувати `#coding`, `#home`, `#research` або будь-що інше, що відповідає вашому робочому процесу.
## Модель runtime
- Gateway керує підключенням до Discord.
-- Маршрутизація відповідей детермінована: вхідні повідомлення з Discord повертаються в Discord.
-- За замовчуванням (`session.dmScope=main`) прямі чати використовують спільну основну сесію агента (`agent:main:main`).
-- Канали гільдій мають ізольовані ключі сесій (`agent::discord:channel:`).
-- Group DMs за замовчуванням ігноруються (`channels.discord.dm.groupEnabled=false`).
-- Нативні слеш-команди виконуються в ізольованих сесіях команд (`agent::discord:slash:`), водночас несучи `CommandTargetSessionKey` до сесії розмови, куди виконується маршрутизація.
+- Маршрутизація відповідей детермінована: вхідні повідомлення Discord отримують відповіді назад у Discord.
+- За замовчуванням (`session.dmScope=main`) прямі чати використовують спільну головну сесію агента (`agent:main:main`).
+- Канали сервера мають ізольовані ключі сесій (`agent::discord:channel:`).
+- Групові приватні повідомлення за замовчуванням ігноруються (`channels.discord.dm.groupEnabled=false`).
+- Нативні слеш-команди виконуються в ізольованих сесіях команд (`agent::discord:slash:`), водночас зберігаючи `CommandTargetSessionKey` для маршрутизованої сесії розмови.
-## Канали форумів
+## Форумні канали
-Форуми Discord і медіаканали приймають лише дописи в threads. OpenClaw підтримує два способи їх створення:
+Форумні та медіаканали Discord приймають лише публікації в тредах. OpenClaw підтримує два способи їх створення:
-- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити thread. Заголовок thread використовує перший непорожній рядок вашого повідомлення.
-- Використайте `openclaw message thread create`, щоб створити thread безпосередньо. Не передавайте `--message-id` для каналів форумів.
+- Надішліть повідомлення до батьківського форуму (`channel:`), щоб автоматично створити тред. Заголовок треду використовує перший непорожній рядок вашого повідомлення.
+- Використайте `openclaw message thread create`, щоб створити тред безпосередньо. Не передавайте `--message-id` для форумних каналів.
-Приклад: надсилання до батьківського форуму для створення 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"
```
-Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте в сам thread (`channel:`).
+Батьківські форуми не приймають компоненти Discord. Якщо вам потрібні компоненти, надсилайте повідомлення в сам тред (`channel:`).
## Інтерактивні компоненти
@@ -308,17 +308,17 @@ OpenClaw підтримує контейнери компонентів Discord
- Рядки дій дозволяють до 5 кнопок або одне меню вибору
- Типи вибору: `string`, `user`, `role`, `mentionable`, `channel`
-За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, виборів і форм, доки не сплине їхній термін дії.
+За замовчуванням компоненти одноразові. Установіть `components.reusable=true`, щоб дозволити багаторазове використання кнопок, списків вибору та форм до закінчення строку їх дії.
-Щоб обмежити, хто може натиснути кнопку, задайте `allowedUsers` для цієї кнопки (Discord user ID, теги або `*`). Якщо це налаштовано, користувачі, які не збігаються, отримають ефемерну відмову.
+Щоб обмежити, хто може натискати кнопку, установіть `allowedUsers` для цієї кнопки (ID користувачів Discord, теги або `*`). Якщо це налаштовано, користувачі, які не відповідають умові, отримають ефемерну відмову.
-Слеш-команди `/model` і `/models` відкривають інтерактивний вибір моделі з випадними списками провайдера та моделі, а також кроком Submit. Якщо не задано `commands.modelsWrite=false`, `/models add` також підтримує додавання нового запису провайдера/моделі з чату, а щойно додані моделі з’являються без перезапуску Gateway. Відповідь засобу вибору є ефемерною, і лише користувач, який його викликав, може ним користуватися.
+Слеш-команди `/model` і `/models` відкривають інтерактивний вибір моделі зі списками провайдера й моделі та кроком Submit. `/models add` застаріла й тепер повертає повідомлення про застарілість замість реєстрації моделей із чату. Відповідь засобу вибору є ефемерною, і лише користувач, який викликав команду, може нею користуватися.
Вкладення файлів:
- Блоки `file` мають вказувати на посилання вкладення (`attachment://`)
- Надайте вкладення через `media`/`path`/`filePath` (один файл); для кількох файлів використовуйте `media-gallery`
-- Використовуйте `filename`, щоб перевизначити ім’я завантаження, коли воно має збігатися з посиланням вкладення
+- Використовуйте `filename`, щоб перевизначити назву завантаження, коли вона має відповідати посиланню вкладення
Модальні форми:
@@ -342,7 +342,7 @@ OpenClaw підтримує контейнери компонентів Discord
type: "actions",
buttons: [
{
- label: "Підтвердити",
+ label: "Схвалити",
style: "success",
allowedUsers: ["123456789012345678"],
},
@@ -365,7 +365,7 @@ OpenClaw підтримує контейнери компонентів Discord
title: "Деталі",
triggerLabel: "Відкрити форму",
fields: [
- { type: "text", label: "Ініціатор" },
+ { type: "text", label: "Запитувач" },
{
type: "select",
label: "Пріоритет",
@@ -388,10 +388,10 @@ OpenClaw підтримує контейнери компонентів Discord
- `pairing` (за замовчуванням)
- `allowlist`
- - `open` (потребує, щоб `channels.discord.allowFrom` містив `"*"`; застаріле: `channels.discord.dm.allowFrom`)
+ - `open` (потрібно, щоб `channels.discord.allowFrom` містив `"*"`; застаріле: `channels.discord.dm.allowFrom`)
- `disabled`
- Якщо політика приватних повідомлень не є open, невідомі користувачі блокуються (або отримують запит на підключення в режимі `pairing`).
+ Якщо політика приватних повідомлень не є open, невідомі користувачі блокуються (або отримують запит на сполучення в режимі `pairing`).
Пріоритет для кількох облікових записів:
@@ -399,17 +399,17 @@ OpenClaw підтримує контейнери компонентів Discord
- Іменовані облікові записи успадковують `channels.discord.allowFrom`, якщо їхній власний `allowFrom` не задано.
- Іменовані облікові записи не успадковують `channels.discord.accounts.default.allowFrom`.
- Формат DM target для доставки:
+ Формат DM-цілі для доставки:
- `user:`
- згадка `<@id>`
- Числові ID без префікса неоднозначні та відхиляються, якщо явно не вказано тип цілі user/channel.
+ Числові ID без префікса є неоднозначними й відхиляються, якщо явно не вказано тип цілі user/channel.
-
- Обробка гільдій контролюється через `channels.discord.groupPolicy`:
+
+ Обробка серверів керується `channels.discord.groupPolicy`:
- `open`
- `allowlist`
@@ -419,12 +419,12 @@ OpenClaw підтримує контейнери компонентів Discord
Поведінка `allowlist`:
- - гільдія має відповідати `channels.discord.guilds` (бажано `id`, slug також приймається)
- - необов’язкові allowlist відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволяються, коли вони відповідають `users` АБО `roles`
- - пряме зіставлення за іменем/тегом за замовчуванням вимкнено; увімкніть `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності
+ - сервер має відповідати `channels.discord.guilds` (перевага надається `id`, slug приймається)
+ - необов’язкові allowlist відправників: `users` (рекомендовано стабільні ID) і `roles` (лише ID ролей); якщо налаштовано будь-який із них, відправники дозволяються, коли вони збігаються з `users` АБО `roles`
+ - пряме зіставлення за іменем/тегом вимкнене за замовчуванням; увімкніть `channels.discord.dangerouslyAllowNameMatching: true` лише як аварійний режим сумісності
- імена/теги підтримуються для `users`, але ID безпечніші; `openclaw security audit` попереджає, коли використовуються записи з іменами/тегами
- - якщо для гільдії налаштовано `channels`, канали поза списком забороняються
- - якщо гільдія не має блоку `channels`, дозволяються всі канали в цій allowlist-гілдії
+ - якщо для сервера налаштовано `channels`, канали поза списком відхиляються
+ - якщо для сервера немає блока `channels`, дозволяються всі канали в цьому сервері з allowlist
Приклад:
@@ -450,23 +450,23 @@ OpenClaw підтримує контейнери компонентів Discord
}
```
- Якщо ви лише задали `DISCORD_BOT_TOKEN` і не створили блок `channels.discord`, резервне значення runtime буде `groupPolicy="allowlist"` (із попередженням у журналах), навіть якщо `channels.defaults.groupPolicy` має значення `open`.
+ Якщо ви лише встановили `DISCORD_BOT_TOKEN` і не створили блок `channels.discord`, резервне значення runtime буде `groupPolicy="allowlist"` (із попередженням у журналах), навіть якщо `channels.defaults.groupPolicy` має значення `open`.
-
- Повідомлення гільдій за замовчуванням вимагають згадки.
+
+ Повідомлення на сервері за замовчуванням вимагають згадки.
Визначення згадки включає:
- явну згадку бота
- налаштовані шаблони згадки (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
- - неявну поведінку reply-to-bot у підтримуваних випадках
+ - неявну поведінку відповіді боту в підтримуваних випадках
- `requireMention` налаштовується окремо для кожної гільдії/каналу (`channels.discord.guilds...`).
+ `requireMention` налаштовується для кожного сервера/каналу (`channels.discord.guilds...`).
`ignoreOtherMentions` за потреби відкидає повідомлення, які згадують іншого користувача/роль, але не бота (крім @everyone/@here).
- Group DMs:
+ Групові приватні повідомлення:
- за замовчуванням: ігноруються (`dm.groupEnabled=false`)
- необов’язковий allowlist через `dm.groupChannels` (ID каналів або slug)
@@ -474,9 +474,9 @@ OpenClaw підтримує контейнери компонентів Discord
-### Маршрутизація агентів за ролями
+### Маршрутизація агентів на основі ролей
-Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників гільдії Discord до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і обчислюються після прив’язок peer або parent-peer та перед прив’язками лише на рівні гільдії. Якщо прив’язка також задає інші поля match (наприклад, `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися.
+Використовуйте `bindings[].match.roles`, щоб маршрутизувати учасників сервера Discord до різних агентів за ID ролі. Прив’язки на основі ролей приймають лише ID ролей і обчислюються після прив’язок peer або parent-peer та перед прив’язками лише для сервера. Якщо прив’язка також задає інші поля match (наприклад, `peer` + `guildId` + `roles`), усі налаштовані поля мають збігатися.
```json5
{
@@ -502,49 +502,49 @@ OpenClaw підтримує контейнери компонентів Discord
## Нативні команди та авторизація команд
-- `commands.native` за замовчуванням має значення `"auto"` і ввімкнено для Discord.
+- `commands.native` за замовчуванням має значення `"auto"` і увімкнено для Discord.
- Перевизначення для каналу: `channels.discord.commands.native`.
- `commands.native=false` явно очищає раніше зареєстровані нативні команди Discord.
- Авторизація нативних команд використовує ті самі allowlist/політики Discord, що й звичайна обробка повідомлень.
- Команди все ще можуть бути видимими в інтерфейсі Discord для користувачів, які не авторизовані; виконання все одно застосовує авторизацію OpenClaw і повертає "не авторизовано".
-Див. [Слеш-команди](/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 повідомлень додаються до контексту/історії, щоб агенти могли націлюватися на конкретні повідомлення.
+ ID повідомлень додаються до context/history, щоб агенти могли орієнтуватися на конкретні повідомлення.
-
- OpenClaw може транслювати чернетки відповідей, надсилаючи тимчасове повідомлення та редагуючи його в міру надходження тексту. `channels.discord.streaming` приймає `off` (за замовчуванням) | `partial` | `block` | `progress`. `progress` у Discord відображається як `partial`; `streamMode` — застарілий псевдонім, який мігрується автоматично.
+
+ OpenClaw може потоково передавати чернетки відповідей, надсилаючи тимчасове повідомлення та редагуючи його в міру надходження тексту. `channels.discord.streaming` приймає `off` (за замовчуванням) | `partial` | `block` | `progress`. `progress` у Discord відображається як `partial`; `streamMode` є застарілим псевдонімом і автоматично мігрується.
- Типове значення залишається `off`, оскільки редагування попереднього перегляду в Discord швидко впираються в обмеження частоти, коли кілька ботів або Gateway спільно використовують один обліковий запис.
+ За замовчуванням лишається `off`, тому що редагування попереднього перегляду в Discord швидко впирається в обмеження частоти, коли кілька ботів або Gateway спільно використовують один обліковий запис.
```json5
{
@@ -562,16 +562,16 @@ OpenClaw підтримує контейнери компонентів Discord
```
- `partial` редагує одне повідомлення попереднього перегляду в міру надходження токенів.
- - `block` надсилає фрагменти розміру чернетки (використовуйте `draftChunk` для налаштування розміру та точок розриву, обмежених `textChunkLimit`).
- - Остаточні повідомлення з медіа, помилками та явними відповідями скасовують очікувані редагування попереднього перегляду.
+ - `block` надсилає фрагменти розміру чернетки (використовуйте `draftChunk`, щоб налаштувати розмір і точки розриву, обмежені до `textChunkLimit`).
+ - Підсумкові повідомлення з медіа, помилками та явними відповідями скасовують усі очікувані редагування попереднього перегляду.
- `streaming.preview.toolProgress` (за замовчуванням `true`) керує тим, чи оновлення інструментів/прогресу повторно використовують повідомлення попереднього перегляду.
- Потоковий попередній перегляд підтримує лише текст; відповіді з медіа повертаються до звичайної доставки. Коли явно ввімкнено потоковий режим `block`, OpenClaw пропускає попередній потік, щоб уникнути подвійного потокового виводу.
+ Потоковий попередній перегляд підтримує лише текст; відповіді з медіа повертаються до звичайної доставки. Коли явно ввімкнено потоковий режим `block`, OpenClaw пропускає потік попереднього перегляду, щоб уникнути подвійного потокового передавання.
-
- Контекст історії гільдії:
+
+ Контекст історії сервера:
- `channels.discord.historyLimit` за замовчуванням `20`
- резервне значення: `messages.groupChat.historyLimit`
@@ -582,27 +582,27 @@ OpenClaw підтримує контейнери компонентів Discord
- `channels.discord.dmHistoryLimit`
- `channels.discord.dms[""].historyLimit`
- Поведінка thread:
+ Поведінка тредів:
- - Discord threads маршрутизуються як сесії каналів і успадковують конфігурацію батьківського каналу, якщо не перевизначено інше.
- - `channels.discord.thread.inheritParent` (за замовчуванням `false`) дає новим auto-threads змогу починати з батьківського транскрипту. Перевизначення для окремих облікових записів розміщуються в `channels.discord.accounts..thread.inheritParent`.
- - Реакції інструмента повідомлень можуть визначати DM target `user:`.
- - `guilds..channels..requireMention: false` зберігається під час резервного активування на етапі відповіді.
+ - Треди Discord маршрутизуються як сесії каналів і успадковують конфігурацію батьківського каналу, якщо не перевизначено інше.
+ - `channels.discord.thread.inheritParent` (за замовчуванням `false`) дозволяє новим автотредам ініціалізуватися з батьківського транскрипту. Перевизначення для окремих облікових записів містяться в `channels.discord.accounts..thread.inheritParent`.
+ - Реакції інструмента повідомлень можуть визначати DM-цілі `user:`.
+ - `guilds..channels..requireMention: false` зберігається під час резервної активації на етапі відповіді.
- Теми каналів впроваджуються як **ненадійний** контекст. Allowlist контролюють, хто може запускати агента, але не є повноцінною межею редагування додаткового контексту.
+ Теми каналів додаються як **ненадійний** контекст. Allowlist визначають, хто може запускати агента, але не є повноцінною межею редагування додаткового контексту.
-
- Discord може прив’язати thread до цілі сесії, щоб наступні повідомлення в цьому thread і далі маршрутизувалися до тієї самої сесії (включно із сесіями субагентів).
+
+ Discord може прив’язувати тред до цілі сесії, щоб подальші повідомлення в цьому треді й надалі маршрутизувалися до тієї самої сесії (зокрема до сесій субагентів).
Команди:
- - `/focus ` прив’язати поточний/новий thread до цілі субагента/сесії
- - `/unfocus` прибрати поточну прив’язку thread
+ - `/focus ` прив’язати поточний/новий тред до цілі субагента/сесії
+ - `/unfocus` видалити поточну прив’язку треду
- `/agents` показати активні запуски та стан прив’язки
- - `/session idle ` переглянути/оновити автоматичне зняття фокусу через неактивність для прив’язок із фокусом
- - `/session max-age ` переглянути/оновити жорсткий максимальний вік для прив’язок із фокусом
+ - `/session idle ` переглянути/оновити автоматичне зняття фокусу через неактивність для сфокусованих прив’язок
+ - `/session max-age ` переглянути/оновити жорсткий максимальний вік для сфокусованих прив’язок
Конфігурація:
@@ -621,7 +621,7 @@ OpenClaw підтримує контейнери компонентів Discord
enabled: true,
idleHours: 24,
maxAgeHours: 0,
- spawnSubagentSessions: false, // opt-in
+ spawnSubagentSessions: false, // увімкнення за бажанням
},
},
},
@@ -632,16 +632,16 @@ OpenClaw підтримує контейнери компонентів Discord
- `session.threadBindings.*` задає глобальні значення за замовчуванням.
- `channels.discord.threadBindings.*` перевизначає поведінку Discord.
- - `spawnSubagentSessions` має бути true, щоб автоматично створювати/прив’язувати threads для `sessions_spawn({ thread: true })`.
- - `spawnAcpSessions` має бути true, щоб автоматично створювати/прив’язувати threads для ACP (`/acp spawn ... --thread ...` або `sessions_spawn({ runtime: "acp", thread: true })`).
- - Якщо прив’язки thread вимкнено для облікового запису, `/focus` і пов’язані операції прив’язки thread недоступні.
+ - `spawnSubagentSessions` має бути true, щоб автоматично створювати/прив’язувати треди для `sessions_spawn({ thread: true })`.
+ - `spawnAcpSessions` має бути true, щоб автоматично створювати/прив’язувати треди для ACP (`/acp spawn ... --thread ...` або `sessions_spawn({ runtime: "acp", thread: true })`).
+ - Якщо прив’язки тредів вимкнено для облікового запису, `/focus` та пов’язані операції прив’язки тредів недоступні.
- Див. [Субагенти](/uk/tools/subagents), [ACP Agents](/uk/tools/acp-agents) і [Довідник з конфігурації](/uk/gateway/configuration-reference).
+ Див. [Субагенти](/uk/tools/subagents), [ACP Agents](/uk/tools/acp-agents) і [Configuration Reference](/uk/gateway/configuration-reference).
- Для стабільних ACP-робочих просторів "always-on" налаштуйте типізовані прив’язки ACP верхнього рівня, націлені на розмови Discord.
+ Для стабільних ACP-робочих просторів «always-on» налаштуйте типізовані ACP-прив’язки верхнього рівня, націлені на розмови Discord.
Шлях конфігурації:
@@ -697,47 +697,47 @@ OpenClaw підтримує контейнери компонентів Discord
Примітки:
- - `/acp spawn codex --bind here` прив’язує поточний канал або thread на місці й зберігає майбутні повідомлення в тій самій ACP-сесії. Повідомлення thread успадковують прив’язку батьківського каналу.
- - У прив’язаному каналі або thread команди `/new` і `/reset` скидають ту саму ACP-сесію на місці. Тимчасові прив’язки thread можуть перевизначати визначення цілі, поки вони активні.
- - `spawnAcpSessions` потрібен лише тоді, коли OpenClaw має створити/прив’язати дочірній thread через `--thread auto|here`.
+ - `/acp spawn codex --bind here` прив’язує поточний канал або тред на місці й зберігає майбутні повідомлення в тій самій ACP-сесії. Повідомлення в треді успадковують прив’язку батьківського каналу.
+ - У прив’язаному каналі або треді `/new` і `/reset` скидають ту саму ACP-сесію на місці. Тимчасові прив’язки тредів можуть перевизначати визначення цілі, поки вони активні.
+ - `spawnAcpSessions` потрібен лише тоді, коли OpenClaw має створити/прив’язати дочірній тред через `--thread auto|here`.
- Див. [ACP Agents](/uk/tools/acp-agents) для деталей поведінки прив’язок.
+ Див. [ACP Agents](/uk/tools/acp-agents), щоб ознайомитися з деталями поведінки прив’язок.
- Режим сповіщень про реакції для кожної гільдії:
+ Режим сповіщень про реакції для кожного сервера:
- `off`
- `own` (за замовчуванням)
- `all`
- `allowlist` (використовує `guilds..users`)
- Події реакцій перетворюються на системні події та додаються до маршрутизованої сесії Discord.
+ Події реакцій перетворюються на системні події й додаються до маршрутизованої Discord-сесії.
- `ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення.
+ `ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок визначення:
- `channels.discord.accounts..ackReaction`
- `channels.discord.ackReaction`
- `messages.ackReaction`
- - резервне значення emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
+ - резервне значення емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
- - Discord приймає unicode emoji або назви власних emoji.
+ - Discord приймає Unicode-емодзі або назви користувацьких емодзі.
- Використовуйте `""`, щоб вимкнути реакцію для каналу або облікового запису.
- Ініційовані з каналу записи в config увімкнені за замовчуванням.
+ Записи в config, ініційовані з каналу, увімкнені за замовчуванням.
- Це впливає на сценарії `/config set|unset` (коли функції команд увімкнені).
+ Це впливає на потоки `/config set|unset` (коли функції команд увімкнені).
Вимкнення:
@@ -753,8 +753,8 @@ OpenClaw підтримує контейнери компонентів Discord
-
- Маршрутизуйте WebSocket-трафік Gateway Discord і стартові REST-запити (ID застосунку + визначення allowlist) через HTTP(S) proxy за допомогою `channels.discord.proxy`.
+
+ Маршрутизуйте WebSocket-трафік Gateway Discord і стартові REST-запити (ID застосунку + визначення allowlist) через HTTP(S)-проксі за допомогою `channels.discord.proxy`.
```json5
{
@@ -804,13 +804,13 @@ OpenClaw підтримує контейнери компонентів Discord
- allowlist можуть використовувати `pk:`
- відображувані імена учасників зіставляються за іменем/slug лише коли `channels.discord.dangerouslyAllowNameMatching: true`
- - пошук використовує ID початкового повідомлення й обмежується часовим вікном
- - якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями бота й відкидаються, якщо тільки не `allowBots=true`
+ - пошук використовує ID оригінального повідомлення й обмежується часовим вікном
+ - якщо пошук не вдається, проксійовані повідомлення вважаються повідомленнями бота й відкидаються, якщо тільки `allowBots=true`
-
- Оновлення присутності застосовуються, коли ви задаєте статус або поле активності, або коли вмикаєте auto presence.
+
+ Оновлення статусу присутності застосовуються, коли ви задаєте поле статусу або активності, або коли вмикаєте автоматичний статус присутності.
Приклад лише зі статусом:
@@ -824,20 +824,20 @@ OpenClaw підтримує контейнери компонентів Discord
}
```
- Приклад активності (custom status — тип активності за замовчуванням):
+ Приклад активності (користувацький статус — тип активності за замовчуванням):
```json5
{
channels: {
discord: {
- activity: "Час зосередженої роботи",
+ activity: "Час фокусування",
activityType: 4,
},
},
}
```
- Приклад streaming:
+ Приклад трансляції:
```json5
{
@@ -857,10 +857,10 @@ OpenClaw підтримує контейнери компонентів Discord
- 1: Streaming (потрібен `activityUrl`)
- 2: Listening
- 3: Watching
- - 4: Custom (використовує текст активності як стан статусу; emoji необов’язковий)
+ - 4: Custom (використовує текст активності як стан статусу; емодзі необов’язкове)
- 5: Competing
- Приклад auto presence (сигнал стану runtime):
+ Приклад автоматичного статусу присутності (сигнал стану runtime):
```json5
{
@@ -877,7 +877,7 @@ OpenClaw підтримує контейнери компонентів Discord
}
```
- Auto presence відображає доступність runtime у статус Discord: healthy => online, degraded або unknown => idle, exhausted або unavailable => dnd. Необов’язкові перевизначення тексту:
+ Автоматичний статус присутності зіставляє доступність runtime зі статусом Discord: healthy => online, degraded або unknown => idle, exhausted або unavailable => dnd. Необов’язкові перевизначення тексту:
- `autoPresence.healthyText`
- `autoPresence.degradedText`
@@ -885,26 +885,26 @@ OpenClaw підтримує контейнери компонентів Discord
-
- Discord підтримує обробку підтверджень за допомогою кнопок у DM і може за потреби публікувати запити на підтвердження у вихідному каналі.
+
+ Discord підтримує обробку погоджень за допомогою кнопок у приватних повідомленнях і за бажанням може публікувати запити на погодження в каналі походження.
Шлях конфігурації:
- `channels.discord.execApprovals.enabled`
- - `channels.discord.execApprovals.approvers` (необов’язково; за можливості використовує резервне значення `commands.ownerAllowFrom`)
+ - `channels.discord.execApprovals.approvers` (необов’язково; за можливості використовується резервне значення `commands.ownerAllowFrom`)
- `channels.discord.execApprovals.target` (`dm` | `channel` | `both`, за замовчуванням: `dm`)
- `agentFilter`, `sessionFilter`, `cleanupAfterResolve`
- Discord автоматично вмикає нативні exec approvals, коли `enabled` не задано або має значення `"auto"` і можна визначити щонайменше одного approving-користувача — або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не визначає exec approvers з `allowFrom` каналу, застарілого `dm.allowFrom` або `defaultTo` для прямих повідомлень. Задайте `enabled: false`, щоб явно вимкнути Discord як нативний клієнт підтверджень.
+ Discord автоматично вмикає нативні exec-погодження, коли `enabled` не задано або має значення `"auto"` і принаймні одного погоджувача можна визначити або з `execApprovals.approvers`, або з `commands.ownerAllowFrom`. Discord не визначає exec-погоджувачів із `allowFrom` каналу, застарілого `dm.allowFrom` або `defaultTo` для прямих повідомлень. Установіть `enabled: false`, щоб явно вимкнути Discord як нативний клієнт погодження.
- Коли `target` має значення `channel` або `both`, запит на підтвердження видно в каналі. Лише визначені approvers можуть використовувати кнопки; інші користувачі отримують ефемерну відмову. Запити на підтвердження містять текст команди, тому доставку в канал слід вмикати лише в довірених каналах. Якщо ID каналу неможливо визначити з ключа сесії, OpenClaw повертається до доставки через DM.
+ Коли `target` має значення `channel` або `both`, запит на погодження видно в каналі. Лише визначені погоджувачі можуть використовувати кнопки; інші користувачі отримують ефемерну відмову. Запити на погодження містять текст команди, тому вмикайте доставку в канал лише в довірених каналах. Якщо ID каналу неможливо вивести з ключа сесії, OpenClaw використовує резервну доставку через DM.
- Discord також відображає спільні кнопки підтвердження, які використовуються іншими чат-каналами. Нативний адаптер Discord головним чином додає DM-маршрутизацію approver-користувачів і fanout у канали.
- Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw
+ Discord також відображає спільні кнопки погодження, які використовуються іншими чат-каналами. Нативний адаптер Discord головним чином додає маршрутизацію DM для погоджувачів і fanout у канали.
+ Коли ці кнопки присутні, вони є основним UX погодження; OpenClaw
має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує,
- що чат-підтвердження недоступні або ручне підтвердження — єдиний шлях.
+ що погодження через чат недоступні або ручне погодження — єдиний шлях.
- Авторизація Gateway і визначення підтвердження дотримуються спільного контракту клієнта Gateway (`plugin:` ID визначаються через `plugin.approval.resolve`; інші ID — через `exec.approval.resolve`). Термін дії підтверджень за замовчуванням спливає через 30 хвилин.
+ Авторизація Gateway і визначення погодження відповідають спільному клієнтському контракту Gateway (`plugin:` ID визначаються через `plugin.approval.resolve`; інші ID — через `exec.approval.resolve`). За замовчуванням термін дії погоджень спливає через 30 хвилин.
Див. [Exec approvals](/uk/tools/exec-approvals).
@@ -913,35 +913,35 @@ OpenClaw підтримує контейнери компонентів Discord
## Інструменти та обмеження дій
-Дії повідомлень Discord включають надсилання повідомлень, адміністрування каналів, модерацію, присутність і дії з метаданими.
+Дії з повідомленнями Discord включають обмін повідомленнями, адміністрування каналів, модерацію, статус присутності та дії з метаданими.
Основні приклади:
-- повідомлення: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply`
+- обмін повідомленнями: `sendMessage`, `readMessages`, `editMessage`, `deleteMessage`, `threadReply`
- реакції: `react`, `reactions`, `emojiList`
- модерація: `timeout`, `kick`, `ban`
-- присутність: `setPresence`
+- статус присутності: `setPresence`
-Дія `event-create` приймає необов’язковий параметр `image` (URL або шлях до локального файла), щоб задати обкладинку запланованої події.
+Дія `event-create` приймає необов’язковий параметр `image` (URL або шлях до локального файла) для встановлення обкладинки запланованої події.
-Обмеження дій розміщуються в `channels.discord.actions.*`.
+Обмеження дій розташовані в `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 | вимкнено |
-## UI компонентів v2
+## Інтерфейс Components v2
-OpenClaw використовує компоненти Discord v2 для exec approvals і маркерів між контекстами. Дії повідомлень Discord також можуть приймати `components` для власного UI (розширено; вимагає побудови payload компонента через інструмент discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендуються.
+OpenClaw використовує Discord components v2 для exec-погоджень і маркерів між контекстами. Дії з повідомленнями Discord також можуть приймати `components` для користувацького інтерфейсу (розширено; потребує побудови payload компонентів через інструмент Discord), тоді як застарілі `embeds` залишаються доступними, але не рекомендуються.
-- `channels.discord.ui.components.accentColor` задає accent color, що використовується контейнерами компонентів Discord (hex).
-- Задавайте для окремого облікового запису через `channels.discord.accounts..ui.components.accentColor`.
-- `embeds` ігноруються, коли присутні компоненти v2.
+- `channels.discord.ui.components.accentColor` задає акцентний колір, який використовується контейнерами компонентів Discord (hex).
+- Для окремого облікового запису задається через `channels.discord.accounts..ui.components.accentColor`.
+- `embeds` ігноруються, коли присутні components v2.
Приклад:
@@ -961,7 +961,7 @@ OpenClaw використовує компоненти Discord v2 для exec ap
## Голос
-Discord має дві окремі голосові поверхні: **голосові канали** реального часу (безперервні розмови) і **вкладення голосових повідомлень** (формат попереднього перегляду waveform). Gateway підтримує обидві.
+У Discord є дві окремі голосові поверхні: голосові канали realtime (**voice channels**) (безперервні розмови) і вкладення голосових повідомлень (**voice message attachments**) (формат із попереднім переглядом waveform). Gateway підтримує обидва варіанти.
### Голосові канали
@@ -969,11 +969,11 @@ Discord має дві окремі голосові поверхні: **голо
- Увімкніть нативні команди (`commands.native` або `channels.discord.commands.native`).
- Налаштуйте `channels.discord.voice`.
-- Боту потрібні дозволи Connect + Speak у цільовому голосовому каналі.
+- Бот потребує дозволів Connect + Speak у цільовому голосовому каналі.
-Використовуйте `/vc join|leave|status` для керування сесіями. Команда використовує агента облікового запису за замовчуванням і дотримується тих самих правил allowlist та group policy, що й інші команди Discord.
+Використовуйте `/vc join|leave|status` для керування сесіями. Команда використовує стандартного агента облікового запису й дотримується тих самих правил allowlist і group policy, що й інші команди Discord.
-Приклад auto-join:
+Приклад автоматичного підключення:
```json5
{
@@ -1002,20 +1002,20 @@ Discord має дві окремі голосові поверхні: **голо
Примітки:
- `voice.tts` перевизначає `messages.tts` лише для голосового відтворення.
-- Ходи транскрипції голосу визначають статус власника з `allowFrom` Discord (або `dm.allowFrom`); мовці, які не є власниками, не можуть використовувати інструменти лише для власника (наприклад, `gateway` і `cron`).
-- Голос увімкнено за замовчуванням; задайте `channels.discord.voice.enabled=false`, щоб вимкнути його.
-- `voice.daveEncryption` і `voice.decryptionFailureTolerance` напряму передаються до параметрів приєднання `@discordjs/voice`.
-- Значення за замовчуванням `@discordjs/voice` — `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо вони не задані.
-- OpenClaw також відстежує збої дешифрування під час отримання і автоматично відновлюється, виходячи та повторно приєднуючись до голосового каналу після повторних збоїв у короткому часовому вікні.
-- Якщо журнали отримання постійно показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, це може бути upstream-помилка отримання `@discordjs/voice`, описана в [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
+- Для ходів транскрипції голосу статус власника визначається з Discord `allowFrom` (або `dm.allowFrom`); користувачі без статусу власника не можуть отримувати доступ до інструментів лише для власника (наприклад `gateway` і `cron`).
+- Голос увімкнено за замовчуванням; установіть `channels.discord.voice.enabled=false`, щоб вимкнути його.
+- `voice.daveEncryption` і `voice.decryptionFailureTolerance` передаються до параметрів підключення `@discordjs/voice`.
+- Значення за замовчуванням `@discordjs/voice` — `daveEncryption=true` і `decryptionFailureTolerance=24`, якщо їх не задано.
+- OpenClaw також відстежує помилки дешифрування під час прийому й автоматично відновлюється, виходячи з голосового каналу та повторно приєднуючись після повторних помилок у короткому часовому вікні.
+- Якщо журнали прийому неодноразово показують `DecryptionFailed(UnencryptedWhenPassthroughDisabled)`, це може бути помилка прийому upstream `@discordjs/voice`, описана в [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419).
### Голосові повідомлення
-Голосові повідомлення Discord показують попередній перегляд waveform і вимагають аудіо у форматі OGG/Opus. OpenClaw генерує waveform автоматично, але потребує `ffmpeg` і `ffprobe` на хості Gateway для аналізу й конвертації.
+Голосові повідомлення Discord показують попередній перегляд waveform і вимагають аудіо OGG/Opus. OpenClaw генерує waveform автоматично, але потребує `ffmpeg` і `ffprobe` на хості Gateway для аналізу та конвертації.
- Надайте **шлях до локального файла** (URL відхиляються).
- Не додавайте текстовий вміст (Discord відхиляє текст + голосове повідомлення в одному payload).
-- Приймається будь-який аудіоформат; OpenClaw за потреби конвертує його в OGG/Opus.
+- Підтримується будь-який аудіоформат; OpenClaw за потреби конвертує в OGG/Opus.
```bash
message(action="send", channel="discord", target="channel:123", path="/path/to/audio.mp3", asVoice=true)
@@ -1024,19 +1024,19 @@ message(action="send", channel="discord", target="channel:123", path="/path/to/a
## Усунення проблем
-
+
- увімкніть Message Content Intent
- - увімкніть Server Members Intent, якщо ви залежите від визначення користувача/учасника
- - перезапустіть gateway після зміни intents
+ - увімкніть Server Members Intent, якщо ви покладаєтеся на визначення користувача/учасника
+ - перезапустіть Gateway після зміни intents
-
+
- перевірте `groupPolicy`
- - перевірте allowlist гільдії в `channels.discord.guilds`
- - якщо існує мапа `channels` гільдії, дозволені лише канали зі списку
+ - перевірте allowlist серверів у `channels.discord.guilds`
+ - якщо існує мапа `channels` сервера, дозволяються лише канали зі списку
- перевірте поведінку `requireMention` і шаблони згадок
Корисні перевірки:
@@ -1049,16 +1049,16 @@ openclaw logs --follow
-
+
Поширені причини:
- - `groupPolicy="allowlist"` без відповідного allowlist гільдії/каналу
- - `requireMention` налаштовано не в тому місці (має бути в `channels.discord.guilds` або в записі каналу)
- - відправника заблоковано allowlist `users` гільдії/каналу
+ - `groupPolicy="allowlist"` без відповідного allowlist сервера/каналу
+ - `requireMention` налаштовано в неправильному місці (має бути в `channels.discord.guilds` або в записі каналу)
+ - відправника заблоковано allowlist `users` сервера/каналу
-
+
Типові журнали:
@@ -1075,9 +1075,9 @@ openclaw logs --follow
- один обліковий запис: `channels.discord.inboundWorker.runTimeoutMs`
- кілька облікових записів: `channels.discord.accounts..inboundWorker.runTimeoutMs`
- - за замовчуванням: `1800000` (30 хвилин); задайте `0`, щоб вимкнути
+ - за замовчуванням: `1800000` (30 хвилин); установіть `0`, щоб вимкнути
- Рекомендоване базове значення:
+ Рекомендоване базове налаштування:
```json5
{
@@ -1098,23 +1098,23 @@ openclaw logs --follow
}
```
- Використовуйте `eventQueue.listenerTimeout` для повільного налаштування listener і `inboundWorker.runTimeoutMs`
- лише якщо вам потрібен окремий запобіжник для поставлених у чергу ходів агента.
+ Використовуйте `eventQueue.listenerTimeout` для повільного налаштування listener, а `inboundWorker.runTimeoutMs`
+ лише якщо вам потрібен окремий запобіжник для агентських ходів у черзі.
- Перевірки дозволів у `channels status --probe` працюють лише для числових ID каналів.
+ Перевірки дозволів `channels status --probe` працюють лише для числових ID каналів.
- Якщо ви використовуєте ключі slug, зіставлення runtime все одно може працювати, але probe не зможе повністю перевірити дозволи.
+ Якщо ви використовуєте ключі slug, зіставлення в runtime все одно може працювати, але probe не може повністю перевірити дозволи.
-
+
- - DM вимкнено: `channels.discord.dm.enabled=false`
- - політику DM вимкнено: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`)
- - у режимі `pairing` очікується підтвердження підключення
+ - приватні повідомлення вимкнено: `channels.discord.dm.enabled=false`
+ - політику приватних повідомлень вимкнено: `channels.discord.dmPolicy="disabled"` (застаріле: `channels.discord.dm.policy`)
+ - очікується схвалення сполучення в режимі `pairing`
@@ -1122,59 +1122,59 @@ openclaw logs --follow
За замовчуванням повідомлення, створені ботами, ігноруються.
Якщо ви встановлюєте `channels.discord.allowBots=true`, використовуйте суворі правила згадок і allowlist, щоб уникнути циклічної поведінки.
- Віддавайте перевагу `channels.discord.allowBots="mentions"`, щоб приймати лише повідомлення ботів, які згадують бота.
+ Надавайте перевагу `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`
- - якщо збої тривають після автоматичного повторного приєднання, зберіть журнали та порівняйте з [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
+ - якщо помилки тривають після автоматичного повторного підключення, зберіть журнали й порівняйте з [discord.js #11419](https://github.com/discordjs/discord.js/issues/11419)
-## Довідник з конфігурації
+## Довідник конфігурації
-Основний довідник: [Довідник з конфігурації - Discord](/uk/gateway/config-channels#discord).
+Основний довідник: [Configuration reference - Discord](/uk/gateway/config-channels#discord).
-- запуск/авторизація: `enabled`, `token`, `accounts.*`, `allowBots`
+- запуск/автентифікація: `enabled`, `token`, `accounts.*`, `allowBots`
- політика: `groupPolicy`, `dm.*`, `guilds.*`, `guilds.*.channels.*`
- команди: `commands.native`, `commands.useAccessGroups`, `configWrites`, `slashCommand.*`
- черга подій: `eventQueue.listenerTimeout` (бюджет listener), `eventQueue.maxQueueSize`, `eventQueue.maxConcurrency`
-- inbound worker: `inboundWorker.runTimeoutMs`
-- відповіді/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
+- вхідний worker: `inboundWorker.runTimeoutMs`
+- відповідь/історія: `replyToMode`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- доставка: `textChunkLimit`, `chunkMode`, `maxLinesPerMessage`
-- streaming: `streaming` (застарілий псевдонім: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
+- потокове передавання: `streaming` (застарілий псевдонім: `streamMode`), `streaming.preview.toolProgress`, `draftChunk`, `blockStreaming`, `blockStreamingCoalesce`
- медіа/повторні спроби: `mediaMaxMb` (обмежує вихідні завантаження Discord, за замовчуванням `100MB`), `retry`
- дії: `actions.*`
-- присутність: `activity`, `status`, `activityType`, `activityUrl`
+- статус присутності: `activity`, `status`, `activityType`, `activityUrl`
- UI: `ui.components.accentColor`
-- функції: `threadBindings`, верхньорівневі `bindings[]` (`type: "acp"`), `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix`
+- функції: `threadBindings`, верхньорівневий `bindings[]` (`type: "acp"`), `pluralkit`, `execApprovals`, `intents`, `agentComponents`, `heartbeat`, `responsePrefix`
## Безпека та експлуатація
-- Розглядайте токени ботів як секрети (`DISCORD_BOT_TOKEN` бажано використовувати в керованих середовищах).
-- Надавайте Discord лише мінімально необхідні дозволи.
-- Якщо стан розгортання/стан команд застарілий, перезапустіть gateway і повторно перевірте через `openclaw channels status --probe`.
+- Розглядайте токени ботів як секрети (у контрольованих середовищах бажано використовувати `DISCORD_BOT_TOKEN`).
+- Надавайте дозволи Discord за принципом найменших привілеїв.
+- Якщо розгортання/стан команд застарів, перезапустіть Gateway і повторно перевірте за допомогою `openclaw channels status --probe`.
## Пов’язане
-
- Підключіть користувача Discord до gateway.
+
+ Сполучіть користувача Discord із Gateway.
- Поведінка групових чатів і allowlist.
+ Поведінка групового чату та allowlist.
Маршрутизуйте вхідні повідомлення до агентів.
@@ -1182,8 +1182,8 @@ openclaw logs --follow
Модель загроз і посилення захисту.
-
- Зіставляйте гільдії та канали з агентами.
+
+ Зіставляйте сервери та канали з агентами.
Поведінка нативних команд.
diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md
index 795fce5e4..72d7eaa82 100644
--- a/docs/uk/channels/slack.md
+++ b/docs/uk/channels/slack.md
@@ -1,28 +1,28 @@
---
read_when:
- - Налаштування Slack або налагодження режиму сокета/HTTP у Slack
-summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів)
+ - Налаштування Slack або налагодження режиму socket/HTTP Slack
+summary: Налаштування Slack і поведінка під час виконання (Socket Mode + HTTP Request URLs)
title: Slack
x-i18n:
- generated_at: "2026-04-24T03:41:27Z"
+ generated_at: "2026-04-24T17:24:52Z"
model: gpt-5.4
provider: openai
- source_hash: 906a4fcf00a51f4a9b8410f982abe1f068687b5aa9847a4894f489e57fa9e4dd
+ source_hash: 830fe844f1f278062de3c186f2b7865684962c10dfb2740a42bf7b47e342b534
source_path: channels/slack.md
workflow: 15
---
-Готово до використання в продакшені для особистих повідомлень і каналів через інтеграції застосунку Slack. Режимом за замовчуванням є Socket Mode; URL-адреси HTTP-запитів також підтримуються.
+Готово до продакшену для особистих повідомлень і каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
Особисті повідомлення Slack за замовчуванням працюють у режимі сполучення.
-
+
Нативна поведінка команд і каталог команд.
-
- Міжканальна діагностика та сценарії відновлення.
+
+ Міжканальна діагностика та інструкції з відновлення.
@@ -34,10 +34,10 @@ x-i18n:
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- - виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
+ - виберіть **from a manifest** і оберіть робочий простір для вашого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче та продовжуйте створення
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
- - встановіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
+ - установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
@@ -55,7 +55,7 @@ x-i18n:
}
```
- Резервний варіант через змінні середовища (лише для облікового запису за замовчуванням):
+ Резервний варіант через env (лише для облікового запису за замовчуванням):
```bash
SLACK_APP_TOKEN=xapp-...
@@ -75,15 +75,15 @@ openclaw gateway
-
+
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- - виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
+ - виберіть **from a manifest** і оберіть робочий простір для вашого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
- збережіть **Signing Secret** для перевірки запитів
- - встановіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
+ - установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
@@ -106,7 +106,7 @@ openclaw gateway
Використовуйте унікальні шляхи webhook для багатьох облікових записів HTTP
- Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
+ Призначте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
@@ -125,7 +125,7 @@ openclaw gateway
## Контрольний список маніфесту та scope
-Базовий маніфест застосунку Slack однаковий для Socket Mode і URL-адрес HTTP-запитів. Відрізняється лише блок `settings` (і `url` у слеш-команді).
+Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` для slash-команди).
Базовий маніфест (Socket Mode за замовчуванням):
@@ -199,7 +199,7 @@ openclaw gateway
}
```
-Для **режиму URL-адрес HTTP-запитів** замініть `settings` на HTTP-варіант і додайте `url` до кожної слеш-команди. Потрібна публічна URL-адреса:
+Для **режиму HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash-команди. Потрібна публічна URL-адреса:
```json
{
@@ -229,19 +229,19 @@ openclaw gateway
}
```
-### Додаткові параметри маніфесту
+### Додаткові налаштування маніфесту
-Показують різні можливості, що розширюють наведені вище значення за замовчуванням.
+Покривають різні функції, що розширюють наведені вище типові значення.
-
+
- Кілька [нативних слеш-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з певними нюансами:
+ Можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior) замість однієї налаштованої команди з певними нюансами:
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
- - Одночасно можна зробити доступними не більше 25 слеш-команд.
+ - Одночасно можна зробити доступними не більше 25 slash-команд.
- Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
+ Замініть наявний розділ `features.slash_commands` на підмножину [доступних команд](/uk/tools/slash-commands#command-list):
@@ -308,8 +308,8 @@ openclaw gateway
},
{
"command": "/models",
- "description": "List providers/models or add a model",
- "usage_hint": "[provider] [page] [limit=|size=|all] | add "
+ "description": "List providers/models",
+ "usage_hint": "[provider] [page] [limit=|size=|all]"
},
{
"command": "/help",
@@ -360,8 +360,8 @@ openclaw gateway
```
-
- Використовуйте той самий список `slash_commands`, що й вище для Socket Mode, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
+
+ Використовуйте той самий список `slash_commands`, що й для Socket Mode вище, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
```json
"slash_commands": [
@@ -385,12 +385,12 @@ openclaw gateway
- Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власне ім’я користувача та піктограму) замість типової ідентичності застосунку Slack.
+ Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власні ім’я користувача та значок) замість типової ідентичності застосунку Slack.
- Якщо ви використовуєте піктограму-емодзі, Slack очікує синтаксис `:emoji_name:`.
+ Якщо ви використовуєте emoji-значок, Slack очікує синтаксис `:emoji_name:`.
-
- Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope для читання є:
+
+ Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope читання є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@@ -398,70 +398,70 @@ openclaw gateway
- `reactions:read`
- `pins:read`
- `emoji:read`
- - `search:read` (якщо ви залежите від читання пошуку Slack)
+ - `search:read` (якщо ви покладаєтеся на читання пошуку Slack)
## Модель токенів
-- Для Socket Mode потрібні `botToken` + `appToken`.
-- Для HTTP mode потрібні `botToken` + `signingSecret`.
-- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
+- `botToken` + `appToken` потрібні для Socket Mode.
+- Для режиму HTTP потрібні `botToken` + `signingSecret`.
+- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні
рядки або об’єкти SecretRef.
-- Токени в конфігурації мають пріоритет над резервними значеннями зі змінних середовища.
-- Резервний варіант через змінні середовища `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням.
-- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного варіанту через змінні середовища) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
+- Токени в конфігурації мають пріоритет над резервним варіантом через env.
+- Резервний варіант через env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням.
+- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного варіанту через env) і за замовчуванням працює в режимі лише для читання (`userTokenReadOnly: true`).
Поведінка знімка стану:
-- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
+- Інспекція облікового запису Slack відстежує поля `*Source` і `*Status`
для кожного облікового запису (`botToken`, `appToken`, `signingSecret`, `userToken`).
-- Стан може бути `available`, `configured_unavailable` або `missing`.
+- Статус може бути `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
- або інше неявне джерело секрету, але поточна команда/шлях виконання
- не змогли визначити фактичне значення.
-- У HTTP mode включається `signingSecretStatus`; у Socket Mode
+ або інше не inline-джерело секрету, але поточний шлях команди/виконання
+ не зміг визначити фактичне значення.
+- У режимі HTTP включається `signingSecretStatus`; у Socket Mode
потрібною парою є `botTokenStatus` + `appTokenStatus`.
-Для дій/читання каталогу за наявності налаштування може надаватися перевага токену користувача. Для запису перевага зберігається за bot token; записи через токен користувача дозволені лише коли `userTokenReadOnly: false` і bot token недоступний.
+Для дій/читання каталогу перевага може надаватися user token, якщо його налаштовано. Для запису перевага залишається за bot token; запис через user token дозволяється лише коли `userTokenReadOnly: false` і bot token недоступний.
## Дії та обмеження
-Діями Slack керує `channels.slack.actions.*`.
+Дії Slack керуються через `channels.slack.actions.*`.
-Доступні групи дій у поточному наборі інструментів Slack:
+Доступні групи дій у поточному інструментарії Slack:
-| Група | Типово |
-| ---------- | ------- |
-| messages | увімкнено |
-| reactions | увімкнено |
-| pins | увімкнено |
-| memberInfo | увімкнено |
-| emojiList | увімкнено |
+| Група | За замовчуванням |
+| ---------- | ---------------- |
+| messages | увімкнено |
+| reactions | увімкнено |
+| pins | увімкнено |
+| memberInfo | увімкнено |
+| emojiList | увімкнено |
-Поточні дії для повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`.
+Поточні дії для повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` та `emoji-list`.
## Керування доступом і маршрутизація
-
- `channels.slack.dmPolicy` керує доступом до DM (застаріле: `channels.slack.dm.policy`):
+
+ `channels.slack.dmPolicy` керує доступом до особистих повідомлень (застаріле: `channels.slack.dm.policy`):
- - `pairing` (типово)
+ - `pairing` (за замовчуванням)
- `allowlist`
- `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`; застаріле: `channels.slack.dm.allowFrom`)
- `disabled`
- Прапорці DM:
+ Прапорці особистих повідомлень:
- - `dm.enabled` (типово true)
+ - `dm.enabled` (за замовчуванням true)
- `channels.slack.allowFrom` (рекомендовано)
- `dm.allowFrom` (застаріле)
- - `dm.groupEnabled` (групові DM типово false)
- - `dm.groupChannels` (необов’язковий allowlist для MPIM)
+ - `dm.groupEnabled` (групові особисті повідомлення за замовчуванням false)
+ - `dm.groupChannels` (необов’язковий allowlist MPIM)
Пріоритет для багатьох облікових записів:
@@ -469,7 +469,7 @@ openclaw gateway
- Іменовані облікові записи успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не задано.
- Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`.
- Сполучення в DM використовує `openclaw pairing approve slack `.
+ Сполучення в особистих повідомленнях використовує `openclaw pairing approve slack `.
@@ -482,26 +482,26 @@ openclaw gateway
Allowlist каналів розміщується в `channels.slack.channels` і має використовувати стабільні ID каналів.
- Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime використовує резервне значення `groupPolicy="allowlist"` і записує попередження в лог (навіть якщо задано `channels.defaults.groupPolicy`).
+ Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime використовує резервне значення `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`).
- Визначення імен/ID:
+ Визначення імені/ID:
- - записи allowlist каналів і записи allowlist DM визначаються під час запуску, якщо доступ токена це дозволяє
- - записи назв каналів, які не вдалося визначити, зберігаються як налаштовані, але типово ігноруються під час маршрутизації
- - вхідна авторизація й маршрутизація каналів типово працюють за принципом ID-first; пряме зіставлення username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
+ - записи allowlist каналів і allowlist особистих повідомлень визначаються під час запуску, коли доступ токена це дозволяє
+ - записи з іменами каналів, які не вдалося визначити, зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації
+ - вхідна авторизація та маршрутизація каналів за замовчуванням працюють за ID; пряме зіставлення імен користувачів/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
- Повідомлення в каналах типово обмежуються згадками.
+ Повідомлення в каналах за замовчуванням обмежуються згадками.
Джерела згадок:
- явна згадка застосунку (`<@botId>`)
- шаблони регулярних виразів для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
- - неявна поведінка reply-to-bot у треді (вимикається, коли `thread.requireExplicitMention` має значення `true`)
+ - неявна поведінка відповіді в треді на бота (вимикається, якщо `thread.requireExplicitMention` має значення `true`)
- Керування для кожного каналу (`channels.slack.channels.`; імена — лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
+ Керування на рівні каналу (`channels.slack.channels.`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
@@ -509,45 +509,45 @@ openclaw gateway
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
- (застарілі ключі без префікса, як і раніше, зіставляються лише з `id:`)
+ - формат ключів `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
+ (застарілі ключі без префікса все ще зіставляються лише з `id:`)
-## Треди, сесії та теги відповіді
+## Треди, сесії та теги відповідей
-- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
-- Із типовим `session.dmScope=main` DM у Slack згортаються до головної сесії агента.
+- Особисті повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
+- Із типовим `session.dmScope=main` особисті повідомлення Slack згортаються в основну сесію агента.
- Сесії каналів: `agent::slack:channel:`.
- Відповіді в тредах можуть створювати суфікси сесій тредів (`:thread:`), коли це застосовно.
-- Типове значення `channels.slack.thread.historyScope` — `thread`; типове значення `thread.inheritParent` — `false`.
-- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень треду буде отримано, коли починається нова сесія треду (типово `20`; установіть `0`, щоб вимкнути).
-- `channels.slack.thread.requireExplicitMention` (типово `false`): якщо встановлено `true`, неявні згадки в тредах пригнічуються, тому бот відповідає лише на явні згадки `@bot` усередині тредів, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді, де брав участь бот, оминають обмеження `requireMention`.
+- Значення за замовчуванням для `channels.slack.thread.historyScope` — `thread`; для `thread.inheritParent` — `false`.
+- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень треду буде отримано під час старту нової сесії треду (за замовчуванням `20`; встановіть `0`, щоб вимкнути).
+- `channels.slack.thread.requireExplicitMention` (за замовчуванням `false`): коли має значення `true`, пригнічує неявні згадки в треді, тож бот відповідає лише на явні згадки `@bot` усередині тредів, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді, де брав участь бот, обходять обмеження `requireMention`.
Керування тредами відповідей:
-- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
-- `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel`
-- застаріле резервне значення для прямих чатів: `channels.slack.dm.replyToMode`
+- `channels.slack.replyToMode`: `off|first|all|batched` (за замовчуванням `off`)
+- `channels.slack.replyToModeByChatType`: для `direct|group|channel`
+- застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode`
-Підтримуються ручні теги відповіді:
+Підтримуються ручні теги відповідей:
- `[[reply_to_current]]`
- `[[reply_to:]]`
-Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"` — у Slack треди приховують повідомлення з каналу, тоді як у Telegram відповіді залишаються видимими вбудовано.
+Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"` — у Slack треди приховують повідомлення з каналу, тоді як у Telegram відповіді лишаються видимими вбудовано.
## Реакції підтвердження
-`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
+`ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок визначення:
- `channels.slack.accounts..ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
-- резервне значення emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
+- резервне emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
@@ -556,24 +556,24 @@ openclaw gateway
## Потокове передавання тексту
-`channels.slack.streaming` керує поведінкою попереднього перегляду наживо:
+`channels.slack.streaming` керує поведінкою попереднього перегляду в реальному часі:
-- `off`: вимкнути потоковий попередній перегляд наживо.
-- `partial` (типово): замінювати текст попереднього перегляду останнім частковим виводом.
-- `block`: додавати оновлення попереднього перегляду частинами.
+- `off`: вимкнути потоковий попередній перегляд у реальному часі.
+- `partial` (за замовчуванням): замінювати текст попереднього перегляду останнім частковим виводом.
+- `block`: додавати оновлення попереднього перегляду фрагментами.
- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати фінальний текст.
-- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, спрямовувати оновлення інструментів/прогресу до того самого редагованого повідомлення попереднього перегляду (типово: `true`). Установіть `false`, щоб залишити окремі повідомлення інструментів/прогресу.
+- `streaming.preview.toolProgress`: коли активний чорновий попередній перегляд, спрямовувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (за замовчуванням: `true`). Встановіть `false`, щоб зберегти окремі повідомлення інструментів/прогресу.
-`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
+`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (за замовчуванням: `true`).
-- Для нативного потокового передавання тексту та появи стану треду асистента Slack має бути доступний тред відповіді. Вибір треду все одно відбувається за `replyToMode`.
-- Кореневі повідомлення в каналах і групових чатах все ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне.
-- DM верхнього рівня в Slack типово залишаються поза тредами, тому не показують попередній перегляд у стилі треду; використовуйте відповіді в тредах або `typingReaction`, якщо хочете видимий прогрес там.
-- Медіа та нетекстові payload повертаються до звичайної доставки.
-- Фінальні медіа/помилки скасовують відкладені редагування попереднього перегляду; придатні текстові/block фінали скидаються лише тоді, коли можуть відредагувати попередній перегляд на місці.
-- Якщо потокове передавання переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload.
+- Щоб з’явилося нативне потокове передавання тексту та статус треду Slack assistant, має бути доступний тред відповіді. Вибір треду, як і раніше, підпорядковується `replyToMode`.
+- Кореневі повідомлення каналів і групових чатів усе ще можуть використовувати звичайний чорновий попередній перегляд, коли нативне потокове передавання недоступне.
+- Особисті повідомлення Slack верхнього рівня за замовчуванням лишаються поза тредами, тому не показують попередній перегляд у стилі треду; використовуйте відповіді в треді або `typingReaction`, якщо хочете видимий прогрес там.
+- Медіа та нетекстові корисні навантаження використовують резервну звичайну доставку.
+- Фінальні повідомлення з медіа/помилками скасовують відкладені редагування попереднього перегляду; придатні фінальні текстові/блокові повідомлення скидаються лише тоді, коли можуть відредагувати попередній перегляд на місці.
+- Якщо потокове передавання зривається посеред відповіді, OpenClaw переходить на звичайну доставку для решти корисних навантажень.
-Використовуйте чернетковий попередній перегляд замість нативного потокового передавання тексту Slack:
+Використовуйте чорновий попередній перегляд замість нативного потокового передавання тексту Slack:
```json5
{
@@ -592,11 +592,11 @@ openclaw gateway
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`.
- булеве `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
-- застаріле `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`.
+- застарілий `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`.
-## Резервна реакція друку
+## Резервна реакція набору тексту
-`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це найкорисніше поза відповідями в тредах, де використовується типовий індикатор стану "is typing...".
+`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли виконання завершується. Це особливо корисно поза відповідями в тредах, які використовують типовий індикатор стану "is typing...".
Порядок визначення:
@@ -606,39 +606,39 @@ openclaw gateway
Примітки:
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
-- Реакція є best-effort, і після завершення відповіді або шляху помилки автоматично виконується спроба очищення.
+- Реакція виконується за можливості, а очищення автоматично намагається виконатися після завершення відповіді або шляху помилки.
## Медіа, розбиття на частини та доставка
- Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та це дозволяють обмеження розміру.
+ Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру.
- Типове обмеження розміру для вхідних даних у runtime становить `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
+ Обмеження розміру вхідних даних у runtime за замовчуванням становить `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
- - текстові частини використовують `channels.slack.textChunkLimit` (типово 4000)
+ - текстові частини використовують `channels.slack.textChunkLimit` (за замовчуванням 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття спочатку за абзацами
- надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`)
- - обмеження вихідних медіа дотримується `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канали використовує типові значення MIME-kind з медіапайплайна
+ - обмеження вихідних медіа використовує `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання каналами використовує типові значення MIME-kind з медіа-конвеєра
- Рекомендовані явні цілі:
+ Бажані явні цілі:
- - `user:` для DM
+ - `user:` для особистих повідомлень
- `channel:` для каналів
- DM у Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
+ Особисті повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
-## Команди та поведінка слеш-команд
+## Команди та поведінка slash-команд
-Слеш-команди з’являються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди:
+Slash-команди з’являються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди:
- `enabled: false`
- `name: "openclaw"`
@@ -649,7 +649,7 @@ openclaw gateway
/openclaw /help
```
-Нативні команди потребують [додаткових параметрів маніфесту](#additional-manifest-settings) у вашому застосунку Slack і вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
+Нативні команди потребують [додаткових налаштувань маніфесту](#additional-manifest-settings) у вашому застосунку Slack і вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях натомість.
- Автоматичний режим нативних команд **вимкнено** для Slack, тому `commands.native: "auto"` не вмикає нативні команди Slack.
@@ -657,24 +657,24 @@ openclaw gateway
/help
```
-Нативні меню аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед надсиланням вибраного значення параметра:
+Нативні меню аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед відправленням вибраного значення параметра:
-- до 5 параметрів: блоки кнопок
-- 6-100 параметрів: статичне меню вибору
-- понад 100 параметрів: зовнішній вибір з асинхронною фільтрацією параметрів, якщо доступні обробники параметрів interactivity
-- перевищення обмежень Slack: закодовані значення параметрів повертаються до кнопок
+- до 5 варіантів: блоки кнопок
+- 6-100 варіантів: статичне меню вибору
+- понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, коли доступні обробники параметрів interactivity
+- перевищено обмеження Slack: закодовані значення варіантів повертаються до кнопок
```txt
/think
```
-Сесії слеш-команд використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно маршрутизують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
+Сесії slash-команд використовують ізольовані ключі на кшталт `agent::slack:slash:` і все одно маршрутизують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
## Інтерактивні відповіді
-Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але ця можливість типово вимкнена.
+Slack може відтворювати інтерактивні елементи відповіді, створені агентом, але цю функцію за замовчуванням вимкнено.
-Увімкнути глобально:
+Увімкніть її глобально:
```json5
{
@@ -688,7 +688,7 @@ Slack може відображати інтерактивні елементи
}
```
-Або увімкнути лише для одного облікового запису Slack:
+Або увімкніть її лише для одного облікового запису Slack:
```json5
{
@@ -706,44 +706,43 @@ Slack може відображати інтерактивні елементи
}
```
-Коли це ввімкнено, агенти можуть створювати директиви відповіді лише для Slack:
+Коли функцію ввімкнено, агенти можуть генерувати директиви відповідей лише для Slack:
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
-Ці директиви компілюються в Slack Block Kit і спрямовують кліки або вибір назад через наявний шлях подій взаємодії Slack.
+Ці директиви компілюються в Slack Block Kit і маршрутизують натискання або вибори назад через наявний шлях подій взаємодії Slack.
Примітки:
-- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
-- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
-- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw повертається до вихідної текстової відповіді замість надсилання невалідного payload блоків.
+- Це специфічний для Slack інтерфейс. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
+- Значення інтерактивних зворотних викликів — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
+- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw використовує резервну оригінальну текстову відповідь замість надсилання недійсного payload blocks.
-## Підтвердження exec у Slack
+## Погодження exec у Slack
-Slack може діяти як нативний клієнт підтвердження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала.
+Slack може працювати як нативний клієнт погодження з інтерактивними кнопками та взаємодіями замість резервного переходу до Web UI або термінала.
-- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналів.
-- Підтвердження Plugin також можуть визначатися через ту саму нативну поверхню кнопок Slack, коли запит уже надходить у Slack і тип id підтвердження має вигляд `plugin:`.
-- Авторизація тих, хто підтверджує, як і раніше, примусово застосовується: лише користувачі, визначені як ті, хто підтверджує, можуть схвалювати або відхиляти запити через Slack.
+- Погодження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації до особистих повідомлень/каналів.
+- Погодження Plugin також можуть визначатися через ту саму Slack-native поверхню кнопок, коли запит уже потрапляє в Slack і тип id погодження — `plugin:`.
+- Авторизація затверджувача все одно примусово виконується: лише користувачі, визначені як затверджувачі, можуть підтверджувати або відхиляти запити через Slack.
-Це використовує ту саму спільну поверхню кнопок підтвердження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові.
-Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw
-має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує, що
-підтвердження в чаті недоступні або ручне підтвердження є єдиним шляхом.
+Це використовує ту саму спільну поверхню кнопок погодження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на погодження відображаються як кнопки Block Kit безпосередньо в розмові.
+Коли ці кнопки присутні, вони є основним UX погодження; OpenClaw
+має включати ручну команду `/approve` лише тоді, коли результат інструмента повідомляє, що погодження в чаті недоступні або ручне погодження — єдиний шлях.
Шлях конфігурації:
- `channels.slack.execApprovals.enabled`
-- `channels.slack.execApprovals.approvers` (необов’язково; за можливості використовується резервне значення `commands.ownerAllowFrom`)
-- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
+- `channels.slack.execApprovals.approvers` (необов’язково; використовує резервне значення з `commands.ownerAllowFrom`, коли це можливо)
+- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, за замовчуванням: `dm`)
- `agentFilter`, `sessionFilter`
-Slack автоматично вмикає нативні підтвердження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
-approver. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтвердження.
-Установіть `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли approver-и визначаються.
+Slack автоматично вмикає нативні погодження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
+затверджувач. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт погодження.
+Установіть `enabled: true`, щоб примусово ввімкнути нативні погодження, коли визначаються затверджувачі.
-Типова поведінка без явної конфігурації підтверджень exec для Slack:
+Типова поведінка без явної конфігурації погоджень exec для Slack:
```json5
{
@@ -753,8 +752,8 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
-Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити approver-ів, додати фільтри або
-вибрати доставку в чат-джерело:
+Явна Slack-native конфігурація потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або
+вибрати доставку в чат походження:
```json5
{
@@ -770,42 +769,42 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
-Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на підтвердження exec також мають
-маршрутизуватися до інших чатів або явних цілей поза поточним каналом. Спільне переспрямування `approvals.plugin` також
-налаштовується окремо; нативні кнопки Slack усе ще можуть обробляти підтвердження Plugin, коли такі запити вже надходять
+Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на погодження exec також мають
+маршрутизуватися до інших чатів або явно визначених позасмугових цілей. Спільне переспрямування `approvals.plugin` також
+налаштовується окремо; Slack-native кнопки все одно можуть визначати погодження Plugin, коли ці запити вже надходять
у Slack.
-`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Підтвердження exec](/uk/tools/exec-approvals) для повної моделі переспрямування підтверджень.
+`/approve` у тому самому чаті також працює в каналах і особистих повідомленнях Slack, які вже підтримують команди. Див. [Погодження exec](/uk/tools/exec-approvals) для повної моделі переспрямування погоджень.
## Події та операційна поведінка
-- Редагування/видалення повідомлень і трансляції тредів зіставляються із системними подіями.
+- Редагування/видалення повідомлень і широкомовні повідомлення тредів зіставляються із системними подіями.
- Події додавання/видалення реакцій зіставляються із системними подіями.
- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень зіставляються із системними подіями.
-- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`.
-- Метадані topic/purpose каналу вважаються недовіреним контекстом і можуть бути вставлені в контекст маршрутизації.
-- Ініціатор треду та початкове заповнення контексту історії треду фільтруються за налаштованими allowlist відправників, коли це застосовно.
-- Дії блоків і взаємодії з модальними вікнами створюють структуровані системні події `Slack interaction: ...` з розширеними полями payload:
- - дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- - події модальних вікон `view_submission` і `view_closed` з маршрутизованими метаданими каналів і введенням форми
+- `channel_id_changed` може переносити ключі конфігурації каналу, коли ввімкнено `configWrites`.
+- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть бути впроваджені в контекст маршрутизації.
+- Автор треду та початкове заповнення контексту історії треду фільтруються відповідно до налаштованих allowlist відправників, коли це застосовно.
+- Дії блоків і взаємодії з модальними вікнами генерують структуровані системні події `Slack interaction: ...` із розширеними полями payload:
+ - дії блоків: вибрані значення, мітки, значення вибору та метадані `workflow_*`
+ - події модальних вікон `view_submission` і `view_closed` із маршрутизованими метаданими каналу та введенням форми
## Довідник конфігурації
Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack).
-
+
- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
-- доступ DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
-- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; тримайте вимкненим, якщо немає потреби)
+- доступ до особистих повідомлень: `dm.enabled`, `dmPolicy`, `allowFrom` (застарілі: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
+- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; не вмикайте без потреби)
- доступ до каналів: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
-- операції/можливості: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
+- операції/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
-## Усунення несправностей
+## Усунення проблем
@@ -814,7 +813,7 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
- `groupPolicy`
- allowlist каналів (`channels.slack.channels`)
- `requireMention`
- - allowlist `users` для кожного каналу
+ - allowlist `users` на рівні каналу
Корисні команди:
@@ -826,12 +825,12 @@ openclaw doctor
-
+
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- - підтвердження pairing / записи allowlist
+ - погодження сполучення / записи allowlist
```bash
openclaw pairing list slack
@@ -845,7 +844,7 @@ openclaw pairing list slack
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштовано, але поточний runtime не зміг визначити значення,
- що надається через SecretRef.
+ що підтримується SecretRef.
@@ -854,20 +853,20 @@ openclaw pairing list slack
- signing secret
- шлях webhook
- - URL-адреси запитів Slack (Events + Interactivity + Slash Commands)
+ - Slack Request URLs (Events + Interactivity + Slash Commands)
- унікальний `webhookPath` для кожного HTTP-облікового запису
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
облікового запису, HTTP-обліковий запис налаштовано, але поточний runtime не зміг
- визначити signing secret, що надається через SecretRef.
+ визначити signing secret, що підтримується SecretRef.
- Переконайтеся, що ви мали на увазі:
+ Перевірте, який саме режим ви мали на увазі:
- - режим нативних команд (`channels.slack.commands.native: true`) з відповідними слеш-командами, зареєстрованими в Slack
- - або режим однієї слеш-команди (`channels.slack.slashCommand.enabled: true`)
+ - режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
+ - або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
@@ -881,7 +880,7 @@ openclaw pairing list slack
Зв’яжіть користувача Slack із Gateway.
- Поведінка каналів і групових DM.
+ Поведінка каналів і групових особистих повідомлень.
Маршрутизуйте вхідні повідомлення до агентів.
@@ -892,7 +891,7 @@ openclaw pairing list slack
Структура конфігурації та пріоритетність.
-
+
Каталог команд і поведінка.
diff --git a/docs/uk/concepts/models.md b/docs/uk/concepts/models.md
index 42865af9b..b8c7f88d6 100644
--- a/docs/uk/concepts/models.md
+++ b/docs/uk/concepts/models.md
@@ -1,21 +1,20 @@
---
read_when:
- - Додавання або зміна CLI моделей (models list/set/scan/aliases/fallbacks)
- - Зміна поведінки fallbacks моделі або UX вибору
- - Оновлення probes сканування моделей (tools/images)
-summary: 'CLI моделей: list, set, aliases, fallbacks, scan, status'
+ - Додавання або змінення CLI моделей (`models list/set/scan/aliases/fallbacks`)
+ - Зміна поведінки резервних варіантів моделі або UX вибору
+ - Оновлення перевірок сканування моделей (інструменти/зображення)
+summary: 'CLI моделей: список, встановлення, псевдоніми, резервні варіанти, сканування, стан'
title: CLI моделей
x-i18n:
- generated_at: "2026-04-24T03:44:01Z"
+ generated_at: "2026-04-24T17:24:56Z"
model: gpt-5.4
provider: openai
- source_hash: 12f784984c87b33e645ec296f7f93ec3acc2a91efa3b63d3a912a6b09b90e048
+ source_hash: 5c036097a5093f0ce304fd08b7ae22ccf5102eb6f511a9a2018a8d4712e43648
source_path: concepts/models.md
workflow: 15
---
-Див. [/concepts/model-failover](/uk/concepts/model-failover) щодо ротації профілів авторизації,
-cooldowns і того, як це взаємодіє з fallbacks.
+Див. [/concepts/model-failover](/uk/concepts/model-failover) щодо ротації профілів автентифікації, періодів охолодження та того, як це взаємодіє з резервними варіантами.
Короткий огляд провайдерів + приклади: [/concepts/model-providers](/uk/concepts/model-providers).
## Як працює вибір моделі
@@ -23,84 +22,83 @@ cooldowns і того, як це взаємодіє з fallbacks.
OpenClaw вибирає моделі в такому порядку:
1. **Основна** модель (`agents.defaults.model.primary` або `agents.defaults.model`).
-2. **Fallbacks** у `agents.defaults.model.fallbacks` (у порядку).
-3. **Provider auth failover** відбувається всередині провайдера перед переходом до
- наступної моделі.
+2. **Резервні варіанти** у `agents.defaults.model.fallbacks` (по порядку).
+3. **Резервне перемикання автентифікації провайдера** відбувається всередині провайдера перед переходом до наступної моделі.
Пов’язане:
-- `agents.defaults.models` — це allowlist/каталог моделей, які може використовувати OpenClaw (разом з aliases).
-- `agents.defaults.imageModel` використовується **лише тоді, коли** основна модель не може приймати зображення.
-- `agents.defaults.pdfModel` використовується інструментом `pdf`. Якщо його не задано, інструмент
- переходить до `agents.defaults.imageModel`, а потім до визначеної моделі сесії/за замовчуванням.
-- `agents.defaults.imageGenerationModel` використовується спільною можливістю генерації зображень. Якщо його не задано, `image_generate` усе одно може визначити значення за замовчуванням провайдера з авторизацією. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id. Якщо ви задаєте конкретний provider/model, також налаштуйте авторизацію/API key цього провайдера.
-- `agents.defaults.musicGenerationModel` використовується спільною можливістю генерації музики. Якщо його не задано, `music_generate` усе одно може визначити значення за замовчуванням провайдера з авторизацією. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації музики у порядку provider-id. Якщо ви задаєте конкретний provider/model, також налаштуйте авторизацію/API key цього провайдера.
-- `agents.defaults.videoGenerationModel` використовується спільною можливістю генерації відео. Якщо його не задано, `video_generate` усе одно може визначити значення за замовчуванням провайдера з авторизацією. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації відео у порядку provider-id. Якщо ви задаєте конкретний provider/model, також налаштуйте авторизацію/API key цього провайдера.
-- Значення за замовчуванням для окремого агента можуть перевизначати `agents.defaults.model` через `agents.list[].model` разом із bindings (див. [/concepts/multi-agent](/uk/concepts/multi-agent)).
+- `agents.defaults.models` — це allowlist/каталог моделей, які OpenClaw може використовувати (плюс псевдоніми).
+- `agents.defaults.imageModel` використовується **лише тоді**, коли основна модель не може приймати зображення.
+- `agents.defaults.pdfModel` використовується інструментом `pdf`. Якщо його не вказано, інструмент
+ переходить до `agents.defaults.imageModel`, а потім до визначеної моделі сеансу/типової моделі.
+- `agents.defaults.imageGenerationModel` використовується спільною можливістю генерації зображень. Якщо його не вказано, `image_generate` усе одно може визначити типове значення провайдера з підтримкою автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id. Якщо ви задаєте конкретний провайдер/модель, також налаштуйте автентифікацію/API key цього провайдера.
+- `agents.defaults.musicGenerationModel` використовується спільною можливістю генерації музики. Якщо його не вказано, `music_generate` усе одно може визначити типове значення провайдера з підтримкою автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації музики у порядку provider-id. Якщо ви задаєте конкретний провайдер/модель, також налаштуйте автентифікацію/API key цього провайдера.
+- `agents.defaults.videoGenerationModel` використовується спільною можливістю генерації відео. Якщо його не вказано, `video_generate` усе одно може визначити типове значення провайдера з підтримкою автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації відео у порядку provider-id. Якщо ви задаєте конкретний провайдер/модель, також налаштуйте автентифікацію/API key цього провайдера.
+- Типові значення для окремих агентів можуть перевизначати `agents.defaults.model` через `agents.list[].model` разом із прив’язками (див. [/concepts/multi-agent](/uk/concepts/multi-agent)).
-## Швидка політика моделей
+## Коротка політика вибору моделі
-- Установіть як основну найсильнішу модель останнього покоління, доступну вам.
-- Використовуйте fallbacks для завдань, чутливих до вартості/затримки, і менш критичних чатів.
-- Для агентів з увімкненими інструментами або недовірених входів уникайте старіших/слабших рівнів моделей.
+- Встановіть як основну найсильнішу модель останнього покоління, яка вам доступна.
+- Використовуйте резервні варіанти для завдань, чутливих до вартості/затримки, і для менш критичного чату.
+- Для агентів з увімкненими інструментами або недовірених вхідних даних уникайте старіших/слабших рівнів моделей.
## Онбординг (рекомендовано)
-Якщо ви не хочете вручну редагувати config, запустіть онбординг:
+Якщо ви не хочете редагувати конфігурацію вручну, запустіть онбординг:
```bash
openclaw onboard
```
-Він може налаштувати модель + авторизацію для поширених провайдерів, включно з **OpenAI Code (Codex)
-subscription** (OAuth) і **Anthropic** (API key або Claude CLI).
+Він може налаштувати модель + автентифікацію для поширених провайдерів, зокрема **OpenAI Code (Codex)
+subscription** (OAuth) та **Anthropic** (API key або Claude CLI).
-## Ключі config (огляд)
+## Ключі конфігурації (огляд)
- `agents.defaults.model.primary` і `agents.defaults.model.fallbacks`
- `agents.defaults.imageModel.primary` і `agents.defaults.imageModel.fallbacks`
- `agents.defaults.pdfModel.primary` і `agents.defaults.pdfModel.fallbacks`
- `agents.defaults.imageGenerationModel.primary` і `agents.defaults.imageGenerationModel.fallbacks`
- `agents.defaults.videoGenerationModel.primary` і `agents.defaults.videoGenerationModel.fallbacks`
-- `agents.defaults.models` (allowlist + aliases + параметри провайдера)
-- `models.providers` (власні провайдери, записані в `models.json`)
+- `agents.defaults.models` (allowlist + псевдоніми + параметри провайдера)
+- `models.providers` (користувацькі провайдери, записані в `models.json`)
-Посилання на моделі нормалізуються до нижнього регістру. Aliases провайдерів, як-от `z.ai/*`, нормалізуються
+Посилання на моделі нормалізуються до нижнього регістру. Псевдоніми провайдерів, як-от `z.ai/*`, нормалізуються
до `zai/*`.
-Приклади конфігурації провайдерів (включно з OpenCode) наведено в
+Приклади конфігурації провайдерів (зокрема OpenCode) наведені в
[/providers/opencode](/uk/providers/opencode).
### Безпечне редагування allowlist
-Використовуйте адитивні записи під час ручного оновлення `agents.defaults.models`:
+Під час ручного оновлення `agents.defaults.models` використовуйте додавальні записи:
```bash
openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --merge
```
-`openclaw config set` захищає мапи моделей/провайдерів від випадкового перезапису. Звичайне
+`openclaw config set` захищає мапи моделей/провайдерів від випадкового перезапису. Просте
присвоєння об’єкта для `agents.defaults.models`, `models.providers` або
-`models.providers..models` відхиляється, якщо воно видалить наявні
-записи. Використовуйте `--merge` для адитивних змін; використовуйте `--replace` лише тоді, коли
-надане значення має стати повним цільовим значенням.
+`models.providers..models` відхиляється, якщо воно призведе до видалення наявних
+записів. Для додавальних змін використовуйте `--merge`; `--replace` використовуйте лише тоді, коли
+передане значення має стати повним цільовим значенням.
-Інтерактивне налаштування провайдера і `openclaw configure --section model` також об’єднують
-вибір у межах провайдера з наявним allowlist, тож додавання Codex,
-Ollama або іншого провайдера не видаляє незв’язані записи моделей.
+Інтерактивне налаштування провайдера та `openclaw configure --section model` також об’єднують
+вибрані значення в межах провайдера з наявним allowlist, тож додавання Codex,
+Ollama або іншого провайдера не видаляє не пов’язані записи моделей.
-## «Model is not allowed» (і чому відповіді зупиняються)
+## "Model is not allowed" (і чому відповіді зупиняються)
-Якщо задано `agents.defaults.models`, воно стає **allowlist** для `/model` і для
-перевизначень сесії. Коли користувач вибирає модель, якої немає в цьому allowlist,
+Якщо задано `agents.defaults.models`, він стає **allowlist** для `/model` і для
+перевизначень сеансу. Коли користувач вибирає модель, якої немає в цьому allowlist,
OpenClaw повертає:
```
Model "provider/model" is not allowed. Use /model to list available models.
```
-Це відбувається **до** генерації звичайної відповіді, тому повідомлення може виглядати
-так, ніби «відповіді не було». Виправлення:
+Це відбувається **до** генерації звичайної відповіді, тому повідомлення може створювати
+враження, ніби система «не відповіла». Виправити це можна так:
- Додати модель до `agents.defaults.models`, або
- Очистити allowlist (видалити `agents.defaults.models`), або
@@ -122,9 +120,9 @@ Model "provider/model" is not allowed. Use /model to list available models.
## Перемикання моделей у чаті (`/model`)
-Ви можете перемикати моделі для поточної сесії без перезапуску:
+Ви можете перемикати моделі для поточного сеансу без перезапуску:
-```text
+```
/model
/model list
/model 3
@@ -134,36 +132,26 @@ Model "provider/model" is not allowed. Use /model to list available models.
Примітки:
-- `/model` (і `/model list`) — це компактний нумерований вибір (сімейство моделей + доступні провайдери).
-- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера й моделі та кроком Submit.
-- `/models add` доступна за замовчуванням і може бути вимкнена через `commands.modelsWrite=false`.
-- Якщо увімкнено, `/models add ` — найшвидший шлях; просто `/models add` запускає керований потік спочатку з вибором провайдера, де це підтримується.
-- Після `/models add` нова модель стає доступною в `/models` і `/model` без перезапуску gateway.
-- `/model <#>` вибирає з цього засобу вибору.
-- `/model` негайно зберігає новий вибір сесії.
-- Якщо агент неактивний, наступний запуск одразу використовує нову модель.
-- Якщо запуск уже активний, OpenClaw позначає перемикання під час роботи як очікуване й перезапускає з новою моделлю лише в чистій точці повторної спроби.
-- Якщо активність інструмента або виведення відповіді вже почалися, очікуване перемикання може залишатися в черзі до наступної можливості повторної спроби або наступного ходу користувача.
-- `/model status` — це докладний вигляд (кандидати авторизації та, коли налаштовано, `baseUrl` endpoint провайдера + режим `api`).
-- Посилання на моделі розбираються за першим `/`. Використовуйте `provider/model`, коли вводите `/model [`.
-- Якщо сам ID моделі містить `/` (у стилі OpenRouter), ви маєте вказати префікс провайдера (приклад: `/model openrouter/moonshotai/kimi-k2`).
-- Якщо ви не вказали провайдера, OpenClaw визначає введення в такому порядку:
- 1. збіг alias
- 2. унікальний збіг налаштованого провайдера для точного model id без префікса
- 3. застарілий резервний перехід до налаштованого провайдера за замовчуванням
- Якщо цей провайдер більше не надає налаштовану модель за замовчуванням, OpenClaw
+- `/model` (і `/model list`) — це компактний нумерований вибірник (сімейство моделей + доступні провайдери).
+- У Discord `/model` і `/models` відкривають інтерактивний вибірник із випадними списками провайдера та моделі, а також кроком Submit.
+- `/models add` застарів і тепер повертає повідомлення про застарілість замість реєстрації моделей із чату.
+- `/model <#>` вибирає зі списку цього вибірника.
+- `/model` негайно зберігає новий вибір сеансу.
+- Якщо агент неактивний, наступний запуск одразу використає нову модель.
+- Якщо запуск уже активний, OpenClaw позначає перемикання в реальному часі як очікуване та перезапускається з новою моделлю лише в чистій точці повторної спроби.
+- Якщо активність інструмента або виведення відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або до наступного ходу користувача.
+- `/model status` — це докладне подання (кандидати автентифікації та, якщо налаштовано, `baseUrl` кінцевої точки провайдера + режим `api`).
+- Посилання на модель розбираються за **першим** `/`. Під час введення `/model ][` використовуйте `provider/model`.
+- Якщо сам ID моделі містить `/` (у стилі OpenRouter), ви маєте включити префікс провайдера (приклад: `/model openrouter/moonshotai/kimi-k2`).
+- Якщо ви пропускаєте провайдера, OpenClaw визначає введення в такому порядку:
+ 1. збіг псевдоніма
+ 2. унікальний збіг налаштованого провайдера для цього точного ID моделі без префікса
+ 3. застарілий резервний перехід до налаштованого типового провайдера
+ Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw
натомість переходить до першого налаштованого провайдера/моделі, щоб уникнути
- показу застарілого значення за замовчуванням від видаленого провайдера.
+ показу застарілого типового значення від видаленого провайдера.
-Повна поведінка/конфігурація команд: [Слеш-команди](/uk/tools/slash-commands).
-
-Приклади:
-
-```text
-/models add
-/models add ollama glm-5.1:cloud
-/models add lmstudio qwen/qwen3.5-9b
-```
+Повна поведінка/конфігурація команди: [Слеш-команди](/uk/tools/slash-commands).
## Команди CLI
@@ -192,40 +180,36 @@ openclaw models image-fallbacks clear
### `models list`
-За замовчуванням показує налаштовані моделі. Корисні прапорці:
+Типово показує налаштовані моделі. Корисні прапорці:
- `--all`: повний каталог
- `--local`: лише локальні провайдери
-- `--provider `: фільтр за id провайдера, наприклад `moonshot`; display
- labels з інтерактивних засобів вибору не приймаються
+- `--provider `: фільтр за id провайдера, наприклад `moonshot`; мітки відображення з інтерактивних вибірників не приймаються
- `--plain`: одна модель на рядок
- `--json`: машинозчитуваний вивід
-`--all` включає вбудовані статичні рядки каталогу, що належать провайдеру, ще до налаштування авторизації,
-тому подання лише для виявлення можуть показувати моделі, недоступні, доки
+`--all` включає рядки статичного каталогу вбудованих провайдерів ще до налаштування автентифікації, тож у режимах лише для виявлення можуть показуватися моделі, недоступні доти, доки
ви не додасте відповідні облікові дані провайдера.
### `models status`
-Показує визначену основну модель, fallbacks, image model та огляд
-авторизації налаштованих провайдерів. Також показує статус завершення строку дії OAuth для профілів, знайдених
-у сховищі авторизації (за замовчуванням попереджає за 24 години). `--plain` виводить лише
+Показує визначену основну модель, резервні варіанти, модель зображень і огляд
+автентифікації налаштованих провайдерів. Також відображає стан завершення строку OAuth для профілів, знайдених
+у сховищі автентифікації (типово попереджає за 24 год). `--plain` виводить лише
визначену основну модель.
-Статус OAuth показується завжди (і включається у вивід `--json`). Якщо налаштований
+Стан OAuth показується завжди (і включається у вивід `--json`). Якщо налаштований
провайдер не має облікових даних, `models status` виводить розділ **Missing auth**.
-JSON містить `auth.oauth` (вікно попередження + профілі) і `auth.providers`
-(ефективна авторизація для кожного провайдера, включно з обліковими даними з env). `auth.oauth`
-охоплює лише стан профілів сховища авторизації; провайдери лише з env там не з’являються.
-Використовуйте `--check` для автоматизації (код виходу `1` для відсутніх/прострочених, `2` для тих, що скоро завершаться).
-Використовуйте `--probe` для живих перевірок авторизації; рядки probe можуть походити з профілів авторизації, облікових даних env
+JSON включає `auth.oauth` (вікно попередження + профілі) і `auth.providers`
+(ефективна автентифікація для кожного провайдера, включно з обліковими даними з env). `auth.oauth`
+стосується лише стану профілів у сховищі автентифікації; провайдери лише з env там не відображаються.
+Використовуйте `--check` для автоматизації (код виходу `1`, коли бракує або прострочено, `2`, коли скоро спливає).
+Використовуйте `--probe` для живих перевірок автентифікації; рядки probe можуть надходити з профілів автентифікації, облікових даних env
або `models.json`.
-Якщо явний `auth.order.` пропускає збережений профіль,
-probe повідомляє `excluded_by_auth_order` замість спроби його використати. Якщо авторизація існує, але для цього провайдера не вдається визначити модель, придатну для probe, probe повідомляє
-`status: no_model`.
+Якщо явний `auth.order.` пропускає збережений профіль, probe повідомляє
+`excluded_by_auth_order` замість спроби використати його. Якщо автентифікація існує, але для цього провайдера не вдається визначити модель, придатну для probe, probe повідомляє `status: no_model`.
-Вибір авторизації залежить від провайдера/облікового запису. Для завжди активних хостів gateway API
-keys зазвичай є найпередбачуванішими; також підтримуються повторне використання Claude CLI та наявні
-OAuth/token профілі Anthropic.
+Вибір автентифікації залежить від провайдера/облікового запису. Для хостів Gateway, що працюють постійно, API
+keys зазвичай є найпередбачуванішими; також підтримуються повторне використання Claude CLI та наявні профілі OAuth/token Anthropic.
Приклад (Claude CLI):
@@ -237,61 +221,61 @@ openclaw models status
## Сканування (безкоштовні моделі OpenRouter)
`openclaw models scan` перевіряє **каталог безкоштовних моделей** OpenRouter і може
-за потреби виконувати probe моделей на підтримку tools і зображень.
+за бажанням виконувати probe моделей на підтримку інструментів і зображень.
-Ключові прапорці:
+Основні прапорці:
-- `--no-probe`: пропустити живі probes (лише метадані)
-- `--min-params `: мінімальний розмір параметрів (мільярди)
+- `--no-probe`: пропустити живі probe (лише метадані)
+- `--min-params `: мінімальний розмір параметрів (у мільярдах)
- `--max-age-days `: пропустити старіші моделі
- `--provider `: фільтр за префіксом провайдера
-- `--max-candidates `: розмір списку fallback
-- `--set-default`: установити `agents.defaults.model.primary` на перший вибір
-- `--set-image`: установити `agents.defaults.imageModel.primary` на перший вибір для зображень
+- `--max-candidates `: розмір списку резервних варіантів
+- `--set-default`: встановити `agents.defaults.model.primary` на перший вибір
+- `--set-image`: встановити `agents.defaults.imageModel.primary` на перший вибір зображень
-Probing потребує API key OpenRouter (із профілів авторизації або
+Для probe потрібен API key OpenRouter (із профілів автентифікації або
`OPENROUTER_API_KEY`). Без ключа використовуйте `--no-probe`, щоб лише перелічити кандидатів.
Результати сканування ранжуються за:
1. Підтримкою зображень
-2. Затримкою tools
+2. Затримкою інструментів
3. Розміром контексту
4. Кількістю параметрів
Вхідні дані
-- список OpenRouter `/models` (фільтр `:free`)
-- потрібен API key OpenRouter із профілів авторизації або `OPENROUTER_API_KEY` (див. [/environment](/uk/help/environment))
-- необов’язкові фільтри: `--max-age-days`, `--min-params`, `--provider`, `--max-candidates`
-- керування probe: `--timeout`, `--concurrency`
+- Список OpenRouter `/models` (фільтр `:free`)
+- Потрібен API key OpenRouter із профілів автентифікації або `OPENROUTER_API_KEY` (див. [/environment](/uk/help/environment))
+- Необов’язкові фільтри: `--max-age-days`, `--min-params`, `--provider`, `--max-candidates`
+- Елементи керування probe: `--timeout`, `--concurrency`
-Під час запуску в TTY ви можете інтерактивно вибирати fallbacks. У неінтерактивному
-режимі передайте `--yes`, щоб прийняти значення за замовчуванням.
+Під час запуску в TTY ви можете інтерактивно вибрати резервні варіанти. У неінтерактивному
+режимі передайте `--yes`, щоб прийняти типові значення.
## Реєстр моделей (`models.json`)
-Власні провайдери в `models.providers` записуються в `models.json` у каталозі
-агента (за замовчуванням `~/.openclaw/agents//agent/models.json`). Цей файл
-за замовчуванням об’єднується, якщо тільки `models.mode` не встановлено в `replace`.
+Користувацькі провайдери в `models.providers` записуються до `models.json` у
+каталозі агента (типово `~/.openclaw/agents//agent/models.json`). Цей файл
+типово об’єднується, якщо тільки `models.mode` не встановлено в `replace`.
-Пріоритет режиму merge для однакових ID провайдерів:
+Пріоритет режиму merge для відповідних ID провайдерів:
-- Непорожній `baseUrl`, уже наявний в `models.json` агента, має пріоритет.
+- Непорожній `baseUrl`, уже наявний у `models.json` агента, має пріоритет.
- Непорожній `apiKey` у `models.json` агента має пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті config/auth-profile.
-- Значення `apiKey` провайдера, керовані SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs) замість збереження визначених секретів.
-- Значення заголовків провайдера, керовані SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs).
-- Порожні або відсутні `apiKey`/`baseUrl` агента використовують резервні значення з config `models.providers`.
+- Значення `apiKey` провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для посилань env, `secretref-managed` для посилань file/exec) замість збереження розгорнутих секретів.
+- Значення заголовків провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для посилань env, `secretref-managed` для посилань file/exec).
+- Порожні або відсутні `apiKey`/`baseUrl` агента переходять до config `models.providers`.
- Інші поля провайдера оновлюються з config і нормалізованих даних каталогу.
-Збереження маркерів є авторитетним щодо джерела: OpenClaw записує маркери з активного знімка config джерела (до визначення), а не з визначених секретних значень runtime.
-Це застосовується щоразу, коли OpenClaw повторно генерує `models.json`, включно зі шляхами, ініційованими командами, як-от `openclaw agent`.
+Збереження маркерів визначається джерелом: OpenClaw записує маркери з активного знімка конфігурації джерела (до розв’язання), а не з розв’язаних значень секретів під час виконання.
+Це застосовується щоразу, коли OpenClaw повторно генерує `models.json`, зокрема в шляхах, керованих командами, як-от `openclaw agent`.
## Пов’язане
-- [Model Providers](/uk/concepts/model-providers) — маршрутизація провайдерів і авторизація
-- [Model Failover](/uk/concepts/model-failover) — ланцюжки fallback
-- [Image Generation](/uk/tools/image-generation) — конфігурація моделі зображень
-- [Music Generation](/uk/tools/music-generation) — конфігурація моделі генерації музики
-- [Video Generation](/uk/tools/video-generation) — конфігурація моделі генерації відео
-- [Configuration Reference](/uk/gateway/config-agents#agent-defaults) — ключі config моделей
+- [Провайдери моделей](/uk/concepts/model-providers) — маршрутизація провайдерів і автентифікація
+- [Резервне перемикання моделей](/uk/concepts/model-failover) — ланцюжки резервних варіантів
+- [Генерація зображень](/uk/tools/image-generation) — конфігурація моделі зображень
+- [Генерація музики](/uk/tools/music-generation) — конфігурація моделі музики
+- [Генерація відео](/uk/tools/video-generation) — конфігурація моделі відео
+- [Довідник із конфігурації](/uk/gateway/config-agents#agent-defaults) — ключі конфігурації моделі
]