diff --git a/docs/uk/channels/slack.md b/docs/uk/channels/slack.md index 711b703ab..930c1e7c4 100644 --- a/docs/uk/channels/slack.md +++ b/docs/uk/channels/slack.md @@ -1,43 +1,43 @@ --- read_when: - Налаштування Slack або налагодження сокетного/HTTP-режиму Slack -summary: Налаштування Slack і поведінка під час виконання (режим Socket + URL-адреси HTTP-запитів) +summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів) title: Slack x-i18n: - generated_at: "2026-05-02T02:59:10Z" + generated_at: "2026-05-02T04:01:21Z" model: gpt-5.5 provider: openai - source_hash: 82dbc27617415cb21e3c682d58c8a8a7f56c7471af0b43d5fcbb5df3fa872a49 + source_hash: 1a676acabdb4dce83f813f991692624e1f5b2dff739e68b5c5bd7b064dd82d03 source_path: channels/slack.md workflow: 16 --- -Готово до production-використання для DM і каналів через інтеграції застосунку Slack. Типовий режим — Socket Mode; HTTP Request URLs також підтримуються. +Готовий до production-використання для DM і каналів через інтеграції Slack app. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються. - - Slack DM типово використовують режим сполучення. + + DM у Slack за замовчуванням використовують режим створення пари. - + Нативна поведінка команд і каталог команд. - Міжканальна діагностика та playbook-и відновлення. + Міжканальна діагностика та інструкції з виправлення. ## Швидке налаштування - + - - У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: + + У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: - - виберіть **from a manifest** і виберіть робочий простір для свого застосунку - - вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче та продовжте створення - - згенеруйте **App-Level Token** (`xapp-...`) із `connections:write` - - установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`) + - виберіть **from a manifest** і виберіть workspace для свого app + - вставте [приклад manifest](#manifest-and-scope-checklist) нижче й продовжте створення + - згенеруйте **App-Level Token** (`xapp-...`) з `connections:write` + - установіть app і скопіюйте показаний **Bot Token** (`xoxb-...`) @@ -64,7 +64,7 @@ openclaw config patch --file ./slack.socket.patch.json5 --dry-run openclaw config patch --file ./slack.socket.patch.json5 ``` - Резервний варіант через env (лише типовий обліковий запис): + Резервний варіант через env (лише обліковий запис за замовчуванням): ```bash SLACK_APP_TOKEN=xapp-... @@ -86,13 +86,13 @@ openclaw gateway - - У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: + + У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**: - - виберіть **from a manifest** і виберіть робочий простір для свого застосунку - - вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням + - виберіть **from a manifest** і виберіть workspace для свого app + - вставте [приклад manifest](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням - збережіть **Signing Secret** для перевірки запитів - - установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`) + - установіть app і скопіюйте показаний **Bot Token** (`xoxb-...`) @@ -121,9 +121,9 @@ openclaw config patch --file ./slack.http.patch.json5 ``` - Використовуйте унікальні шляхи Webhook для HTTP з кількома обліковими записами + Використовуйте унікальні webhook-шляхи для HTTP із кількома обліковими записами - Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували. + Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували. @@ -142,7 +142,7 @@ openclaw gateway ## Налаштування транспорту Socket Mode -OpenClaw типово встановлює для клієнта Slack SDK час очікування pong у 15 секунд для Socket Mode. Перевизначайте налаштування транспорту лише тоді, коли вам потрібне налаштування для конкретного робочого простору або хоста: +OpenClaw за замовчуванням установлює для клієнта Slack SDK час очікування pong 15 секунд у Socket Mode. Перевизначайте транспортні налаштування лише тоді, коли потрібне налаштування під конкретний workspace або хост: ```json5 { @@ -159,13 +159,13 @@ OpenClaw типово встановлює для клієнта Slack SDK ча } ``` -Використовуйте це лише для робочих просторів Socket Mode, які записують у журнал тайм-аути pong websocket Slack або server-ping, чи працюють на хостах із відомим голодуванням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає client ping; `serverPingTimeout` — це очікування ping-ів сервера Slack. Повідомлення й події застосунку залишаються станом застосунку, а не сигналами живості транспорту. +Використовуйте це лише для workspace у Socket Mode, які фіксують у журналах таймаути pong/server-ping для websocket Slack або працюють на хостах із відомим виснаженням event loop. `clientPingTimeout` — це очікування pong після того, як SDK надсилає клієнтський ping; `serverPingTimeout` — очікування ping від сервера Slack. Повідомлення й події app залишаються станом застосунку, а не сигналами активності транспорту. -## Чекліст маніфесту та scope-ів +## Контрольний список manifest і scopes -Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` slash-команди). +Базовий manifest Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` slash-команди). -Базовий маніфест (Socket Mode типово): +Базовий manifest (Socket Mode за замовчуванням): ```json { @@ -270,16 +270,16 @@ OpenClaw типово встановлює для клієнта Slack SDK ча } ``` -### Додаткові налаштування маніфесту +### Додаткові налаштування manifest -Покажіть різні функції, що розширюють наведені вище типові значення. +Увімкніть інші функції, що розширюють наведені вище типові значення. -Типовий маніфест вмикає вкладку **Home** у Slack App Home і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечне типове подання Home через `views.publish`; payload розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для Slack DM. +Типовий manifest вмикає вкладку **Home** у Slack App Home і підписується на `app_home_opened`. Коли учасник workspace відкриває вкладку Home, OpenClaw публікує безпечне типове подання Home через `views.publish`; payload розмови або приватна конфігурація не додаються. Вкладка **Messages** лишається ввімкненою для DM у Slack. - Кілька [нативних slash-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з такими нюансами: + Кілька [нативних slash-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з певними нюансами: - Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована. - Одночасно можна зробити доступними не більше ніж 25 slash-команд. @@ -287,7 +287,7 @@ OpenClaw типово встановлює для клієнта Slack SDK ча Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list): - + ```json "slash_commands": [ @@ -404,7 +404,7 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - Використовуйте той самий список `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": [ @@ -427,14 +427,14 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - - Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власне ім’я користувача та іконку) замість типової ідентичності застосунку Slack. + + Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (користувацьке ім’я та іконку), а не типову ідентичність Slack app. - Якщо ви використовуєте іконку emoji, Slack очікує синтаксис `:emoji_name:`. + Якщо ви використовуєте emoji-іконку, Slack очікує синтаксис `:emoji_name:`. - - Якщо ви налаштовуєте `channels.slack.userToken`, типові області читання такі: + + Якщо ви налаштовуєте `channels.slack.userToken`, типовими областями доступу для читання є: - `channels:history`, `groups:history`, `im:history`, `mpim:history` - `channels:read`, `groups:read`, `im:read`, `mpim:read` @@ -442,7 +442,7 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - `reactions:read` - `pins:read` - `emoji:read` - - `search:read` (якщо ви покладаєтеся на читання пошуку Slack) + - `search:read` (якщо ви покладаєтеся на читання через пошук Slack) @@ -450,49 +450,49 @@ OpenClaw типово встановлює для клієнта Slack SDK ча ## Модель токенів - `botToken` + `appToken` потрібні для Socket Mode. -- HTTP-режим потребує `botToken` + `signingSecret`. -- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті текстові +- Режим HTTP потребує `botToken` + `signingSecret`. +- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті рядки або об’єкти SecretRef. -- Токени в конфігурації перевизначають резервні значення з env. -- Резервні env-значення `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовуються лише до стандартного облікового запису. -- `userToken` (`xoxp-...`) налаштовується лише через конфігурацію (без резервного env-значення) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`). +- Токени конфігурації мають пріоритет над резервними значеннями зі змінних середовища. +- Резервні значення 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 - або інше не-inline джерело секрету, але поточний шлях команди/середовища виконання - не зміг визначити фактичне значення. -- У HTTP-режимі включено `signingSecretStatus`; у Socket Mode - обов’язкова пара — `botTokenStatus` + `appTokenStatus`. + або інше неінлайн-джерело секретів, але поточна команда чи шлях виконання + не змогли отримати фактичне значення. +- У режимі HTTP включається `signingSecretStatus`; у Socket Mode + потрібна пара — `botTokenStatus` + `appTokenStatus`. -Для дій/читання довідника user token може мати пріоритет, якщо його налаштовано. Для запису bot token і далі має пріоритет; записи через user-token дозволені лише коли `userTokenReadOnly: false` і bot token недоступний. +Для дій і читання каталогу користувацький токен може мати пріоритет, якщо його налаштовано. Для запису перевага залишається за bot token; записи через користувацький токен дозволені лише коли `userTokenReadOnly: false` і bot token недоступний. ## Дії та шлюзи -Дії Slack контролюються через `channels.slack.actions.*`. +Дії Slack керуються через `channels.slack.actions.*`. Доступні групи дій у поточному інструментарії Slack: -| Група | Стандартно | -| ---------- | ---------- | +| Група | За замовчуванням | +| ---------- | ------- | | messages | увімкнено | | reactions | увімкнено | | pins | увімкнено | | memberInfo | увімкнено | | emojiList | увімкнено | -Поточні дії повідомлень Slack містять `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ідентифікатори файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локальних файлів для інших типів файлів. +Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних плейсхолдерах файлів, і повертає прев’ю зображень для зображень або метадані локального файлу для інших типів файлів. ## Контроль доступу та маршрутизація - `channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` — канонічний allowlist для DM. + `channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` є канонічним allowlist для DM. - `pairing` (за замовчуванням) - `allowlist` @@ -513,9 +513,9 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - Іменовані облікові записи успадковують `channels.slack.allowFrom`, коли їхній власний `allowFrom` не задано. - Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`. - Застарілі `channels.slack.dm.policy` і `channels.slack.dm.allowFrom` досі читаються для сумісності. `openclaw doctor --fix` переносить їх у `dmPolicy` і `allowFrom`, коли це можна зробити без зміни доступу. + Застарілі `channels.slack.dm.policy` і `channels.slack.dm.allowFrom` усе ще читаються для сумісності. `openclaw doctor --fix` мігрує їх до `dmPolicy` і `allowFrom`, коли це можливо без зміни доступу. - Сполучення в DM використовує `openclaw pairing approve slack `. + Спарювання в DM використовує `openclaw pairing approve slack `. @@ -526,20 +526,20 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - `allowlist` - `disabled` - Allowlist каналів міститься в `channels.slack.channels` і **має використовувати стабільні ідентифікатори каналів Slack** (наприклад, `C12345678`) як ключі конфігурації. + Allowlist каналів розташований у `channels.slack.channels` і **має використовувати стабільні ID каналів Slack** (наприклад `C12345678`) як ключі конфігурації. - Примітка щодо середовища виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), середовище виконання повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо `channels.defaults.groupPolicy` задано). + Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime повертається до `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`). - Розпізнавання імен/ідентифікаторів: + Розпізнавання імен/ID: - записи allowlist каналів і записи allowlist DM розпізнаються під час запуску, коли доступ токена це дозволяє - нерозпізнані записи з іменами каналів зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації - - вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ID; пряме зіставлення імен користувачів/slug потребує `channels.slack.dangerouslyAllowNameMatching: true` + - вхідна авторизація та маршрутизація каналів за замовчуванням спершу використовують ID; прямий збіг за username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true` - Ключі на основі імен (`#channel-name` або `channel-name`) **не** збігаються під `groupPolicy: "allowlist"`. Пошук каналу за замовчуванням спершу використовує ID, тому ключ на основі імені ніколи не маршрутизуватиметься успішно, а всі повідомлення в цьому каналі буде тихо заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, і ключ на основі імені виглядає робочим. + Ключі на основі імен (`#channel-name` або `channel-name`) **не** збігаються під `groupPolicy: "allowlist"`. Пошук каналу за замовчуванням спершу використовує ID, тому ключ на основі імені ніколи не маршрутизуватиметься успішно, а всі повідомлення в цьому каналі буде тихо заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації, і ключ на основі імені здається робочим. - Завжди використовуйте ідентифікатор каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою миші → **Copy link** — ID (`C...`) з’явиться в кінці URL. + Завжди використовуйте ID каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою → **Copy link** — ID (`C...`) з’являється в кінці URL. Правильно: @@ -574,45 +574,45 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - - Повідомлення каналів за замовчуванням пропускаються лише за згадкою. + + Повідомлення каналів за замовчуванням пропускаються через фільтр згадок. Джерела згадок: - явна згадка застосунку (`<@botId>`) - згадка групи користувачів Slack (``), коли користувач бота є учасником цієї групи користувачів; потребує `usergroups:read` - - regex-патерни згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`) - - неявна поведінка гілки з відповіддю боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`) + - regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервний варіант `messages.groupChat.mentionPatterns`) + - неявна поведінка гілки відповіді боту (вимкнено, коли `thread.requireExplicitMention` має значення `true`) - Поканальні елементи керування (`channels.slack.channels.`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`): + Керування на рівні каналу (`channels.slack.channels.`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`): - `requireMention` - - `users` (список дозволених) + - `users` (allowlist) - `allowBots` - `skills` - `systemPrompt` - `tools`, `toolsBySender` - - формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"` - (застарілі ключі без префікса й надалі зіставляються лише з `id:`) + - формат ключів `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"` + (застарілі ключі без префікса досі зіставляються лише з `id:`) - `allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише тоді, коли бот-відправник явно вказаний у списку дозволених `users` цієї кімнати, або коли принаймні один явний ідентифікатор власника Slack із `channels.slack.allowFrom` наразі є учасником кімнати. Wildcard і записи власників за відображуваним іменем не підтверджують присутність власника. Присутність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідну область читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, створене ботом. + `allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише тоді, коли бот-відправник явно вказаний у allowlist `users` цієї кімнати, або коли принаймні один явний ID власника Slack із `channels.slack.allowFrom` зараз є учасником кімнати. Wildcard і записи власника за відображуваним іменем не задовольняють умову присутності власника. Присутність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідну область читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, створене ботом. -## Гілки, сесії та теги відповіді +## Гілки, сеанси й теги відповіді - DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`. -- За стандартного `session.dmScope=main` DM 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`. +- З типовим `session.dmScope=main` DM 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.replyToMode`: `off|first|all|batched` (стандартно `off`) +- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`) - `channels.slack.replyToModeByChatType`: окремо для `direct|group|channel` - застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode` @@ -622,19 +622,19 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - `[[reply_to:]]` -`replyToMode="off"` вимикає **усі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги й надалі враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими вбудовано. +`replyToMode="off"` вимикає **всі** гілки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все одно враховуються в режимі `"off"`. Гілки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими в рядку. ## Реакції підтвердження -`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення. +`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення. Порядок розв’язання: - `channels.slack.accounts..ackReaction` - `channels.slack.ackReaction` - `messages.ackReaction` -- резервний emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀") +- резервний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀") Примітки: @@ -643,24 +643,24 @@ OpenClaw типово встановлює для клієнта Slack SDK ча ## Потокове передавання тексту -`channels.slack.streaming` керує поведінкою живого попереднього перегляду: +`channels.slack.streaming` керує поведінкою live preview: -- `off`: вимкнути потокове передавання живого попереднього перегляду. -- `partial` (стандартно): замінювати текст попереднього перегляду найновішим частковим виводом. -- `block`: додавати фрагментовані оновлення попереднього перегляду. -- `progress`: показувати текст стану перебігу під час генерування, а потім надсилати фінальний текст. -- `streaming.preview.toolProgress`: коли чернетковий попередній перегляд активний, маршрутизувати оновлення інструментів/перебігу в те саме редаговане повідомлення попереднього перегляду (стандартно: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/перебігу. +- `off`: вимкнути потокове передавання live preview. +- `partial` (типово): замінювати текст preview найновішим частковим виводом. +- `block`: додавати фрагментовані оновлення preview. +- `progress`: показувати текст статусу перебігу під час генерації, а потім надіслати фінальний текст. +- `streaming.preview.toolProgress`: коли draft preview активний, спрямовувати оновлення інструментів/перебігу в те саме редаговане повідомлення preview (типово: `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-и повертаються до звичайної доставки. -- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; придатні текстові/блокові фінальні повідомлення скидаються лише тоді, коли можуть редагувати попередній перегляд на місці. -- Якщо потокове передавання зазнає збою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload-ів. +- Для появи нативного потокового передавання тексту й статусу гілки помічника Slack має бути доступна гілка відповіді. Вибір гілки все одно відповідає `replyToMode`. +- Корені каналів і групових чатів усе ще можуть використовувати звичайний draft preview, коли нативне потокове передавання недоступне. +- DM Slack верхнього рівня за замовчуванням залишаються поза гілкою, тому вони не показують preview у стилі гілки; використовуйте відповіді в гілках або `typingReaction`, якщо хочете мати там видимий перебіг. +- Медіа й нетекстові payloads повертаються до звичайної доставки. +- Фінальні медіа/помилки скасовують очікувані редагування preview; придатні фінальні текстові/блокові результати скидаються лише тоді, коли можуть редагувати preview на місці. +- Якщо потокове передавання завершується помилкою посеред відповіді, OpenClaw повертається до звичайної доставки для решти payloads. -Використовуйте чернетковий попередній перегляд замість нативного потокового передавання тексту Slack: +Використовуйте draft preview замість нативного потокового передавання тексту Slack: ```json5 { @@ -678,12 +678,12 @@ OpenClaw типово встановлює для клієнта Slack SDK ча Застарілі ключі: - `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`. -- булевий `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`. +- boolean `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`. - застарілий `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`. -## Резервна реакція набору +## Резервна реакція набору тексту -`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли виконання завершується. Це найкорисніше поза відповідями в гілках, які використовують стандартний індикатор стану "is typing...". +`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення запуску. Це найкорисніше поза відповідями в гілках, які використовують типовий індикатор статусу "is typing...". Порядок розв’язання: @@ -693,25 +693,25 @@ OpenClaw типово встановлює для клієнта Slack SDK ча Примітки: - Slack очікує короткі коди (наприклад, `"hourglass_flowing_sand"`). -- Реакція виконується за принципом best-effort, а очищення автоматично виконується після завершення відповіді або шляху збою. +- Реакція виконується за принципом best-effort, а очищення автоматично пробується після завершення відповіді або шляху помилки. -## Медіа, фрагментація та доставка +## Медіа, фрагментація й доставка - - Вкладені файли Slack завантажуються з приватних URL, розміщених у Slack (потік запиту з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне та обмеження розміру це дозволяють. Заповнювачі файлів містять Slack `fileId`, щоб агенти могли отримати оригінальний файл за допомогою `download-file`. + + Файлові вкладення Slack завантажуються з приватних URL, розміщених Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, коли отримання успішне й обмеження розміру це дозволяють. Заповнювачі файлів містять Slack `fileId`, щоб агенти могли отримати оригінальний файл за допомогою `download-file`. - Завантаження використовують обмежені таймаути простою та загального часу. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу. + Завантаження використовують обмежені тайм-аути простою й загального часу. Якщо отримання файлу Slack зависає або завершується помилкою, OpenClaw продовжує обробляти повідомлення й повертається до заповнювача файлу. - Обмеження розміру вхідних даних під час виконання за замовчуванням становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`. + Обмеження вхідного розміру під час виконання за замовчуванням становить `20MB`, якщо його не перевизначено через `channels.slack.mediaMaxMb`. - текстові фрагменти використовують `channels.slack.textChunkLimit` (за замовчуванням 4000) - - `channels.slack.chunkMode="newline"` вмикає розбиття з пріоритетом абзаців - - надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`) - - обмеження вихідних медіа відповідає `channels.slack.mediaMaxMb`, коли налаштовано; інакше надсилання в канал використовує типові значення за MIME-типом із медіаконвеєра + - `channels.slack.chunkMode="newline"` вмикає поділ із пріоритетом абзаців + - надсилання файлів використовує API завантаження Slack і може містити відповіді в тредах (`thread_ts`) + - обмеження вихідних медіа використовує `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канал використовує типові значення за MIME-типом із медіаконвеєра @@ -721,14 +721,14 @@ OpenClaw типово встановлює для клієнта Slack SDK ча - `user:` для DM - `channel:` для каналів - DM Slack відкриваються через API розмов Slack під час надсилання до цілей користувача. + Текстові або лише блочні Slack DM можуть публікуватися напряму в ідентифікатори користувачів; завантаження файлів і надсилання в тредах спочатку відкривають DM через API розмов Slack, тому що ці шляхи потребують конкретного ідентифікатора розмови. ## Команди та поведінка slash -Slash-команди з’являються у Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові значення команд: +Slash-команди відображаються у Slack як одна налаштована команда або кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові значення команд: - `enabled: false` - `name: "openclaw"` @@ -747,12 +747,12 @@ Slash-команди з’являються у Slack як одна налашт /help ``` -Меню нативних аргументів використовують адаптивну стратегію відтворення, яка показує модальне вікно підтвердження перед передаванням вибраного значення опції: +Меню аргументів нативних команд використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед надсиланням вибраного значення параметра: -- до 5 опцій: блоки кнопок -- 6–100 опцій: статичне меню вибору -- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники параметрів інтерактивності -- перевищені ліміти Slack: закодовані значення опцій повертаються до кнопок +- до 5 варіантів: блоки кнопок +- 6-100 варіантів: статичне меню вибору +- понад 100 варіантів: зовнішній вибір з асинхронним фільтруванням варіантів, коли доступні обробники параметрів інтерактивності +- перевищені ліміти Slack: закодовані значення параметрів повертаються до кнопок ```txt /think @@ -762,7 +762,7 @@ Slash-сеанси використовують ізольовані ключі ## Інтерактивні відповіді -Slack може відтворювати створені агентом елементи керування інтерактивною відповіддю, але ця функція за замовчуванням вимкнена. +Slack може рендерити створені агентом інтерактивні елементи керування відповідями, але ця функція за замовчуванням вимкнена. Увімкніть її глобально: @@ -796,7 +796,7 @@ Slack може відтворювати створені агентом елем } ``` -Коли ввімкнено, агенти можуть виводити директиви відповідей лише для Slack: +Коли ввімкнено, агенти можуть надсилати директиви відповідей лише для Slack: - `[[slack_buttons: Approve:approve, Reject:reject]]` - `[[slack_select: Choose a target | Canary:canary, Production:production]]` @@ -805,35 +805,35 @@ Slack може відтворювати створені агентом елем Примітки: -- Це інтерфейс, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок. -- Значення інтерактивних callback — це згенеровані OpenClaw непрозорі токени, а не сирі значення, створені агентом. -- Якщо згенеровані інтерактивні блоки перевищили б ліміти Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків. +- Це UI, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок. +- Значення інтерактивних callback є непрозорими токенами, згенерованими OpenClaw, а не сирими значеннями, створеними агентом. +- Якщо згенеровані інтерактивні блоки перевищили б ліміти Slack Block Kit, OpenClaw натомість повертається до початкової текстової відповіді, щоб не надсилати недійсне payload блоків. -## Підтвердження виконання у Slack +## Exec-схвалення у Slack -Slack може працювати як нативний клієнт підтверджень з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала. +Slack може працювати як нативний клієнт схвалень з інтерактивними кнопками та взаємодіями, замість повернення до Web UI або термінала. -- Підтвердження виконання використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналів. -- Підтвердження Plugin усе ще можуть вирішуватися через ту саму нативну для Slack поверхню кнопок, коли запит уже надходить у Slack, а вид ідентифікатора підтвердження — `plugin:`. -- Авторизація користувачів, які підтверджують, усе ще застосовується: лише користувачі, визначені як ті, хто може підтверджувати, можуть схвалювати або відхиляти запити через Slack. +- Exec-схвалення використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналів. +- Схвалення Plugin усе ще можуть вирішуватися через ту саму нативну поверхню кнопок Slack, коли запит уже надходить у Slack і тип ідентифікатора схвалення є `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.approvers` (необов’язково; за можливості повертається до `commands.ownerAllowFrom`) - `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, за замовчуванням: `dm`) - `agentFilter`, `sessionFilter` -Slack автоматично вмикає нативні підтвердження виконання, коли `enabled` не задано або має значення `"auto"` і -визначається принаймні один користувач для підтвердження. Задайте `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтверджень. -Задайте `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли визначаються користувачі для підтвердження. +Slack автоматично вмикає нативні Exec-схвалення, коли `enabled` не задано або має значення `"auto"` і визначено принаймні одного +схвалювача. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт схвалень. +Установіть `enabled: true`, щоб примусово ввімкнути нативні схвалення, коли схвалювачів визначено. -Типова поведінка без явної конфігурації підтверджень виконання Slack: +Типова поведінка без явної конфігурації Exec-схвалень Slack: ```json5 { @@ -843,8 +843,8 @@ Slack автоматично вмикає нативні підтверджен } ``` -Явна нативна конфігурація Slack потрібна лише тоді, коли потрібно перевизначити користувачів для підтвердження, додати фільтри або -увімкнути доставку в чат походження: +Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити схвалювачів, додати фільтри або +увімкнути доставку в початковий чат: ```json5 { @@ -860,39 +860,39 @@ Slack автоматично вмикає нативні підтверджен } ``` -Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити підтвердження виконання також мають -спрямовуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також -окреме; нативні кнопки Slack усе ще можуть вирішувати підтвердження Plugin, коли ці запити вже надходять +Спільне переспрямування `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити Exec-схвалення також мають +маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне переспрямування `approvals.plugin` також +окреме; нативні кнопки Slack усе ще можуть вирішувати схвалення Plugin, коли ці запити вже надходять у Slack. -`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Підтвердження виконання](/uk/tools/exec-approvals), щоб переглянути повну модель переспрямування підтверджень. +`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Exec-схвалення](/uk/tools/exec-approvals) для повної моделі переспрямування схвалень. ## Події та операційна поведінка - Редагування/видалення повідомлень зіставляються із системними подіями. -- Трансляції тредів (відповіді в треді з параметром «Також надіслати в канал») обробляються як звичайні повідомлення користувача. +- Трансляції тредів (відповіді в тредах "Also send to channel") обробляються як звичайні повідомлення користувача. - Події додавання/видалення реакцій зіставляються із системними подіями. - Події приєднання/виходу учасника, створення/перейменування каналу та додавання/видалення закріплення зіставляються із системними подіями. -- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`. -- Метадані теми/призначення каналу розглядаються як ненадійний контекст і можуть бути вставлені в контекст маршрутизації. -- Початкове повідомлення треду та початкове заповнення контексту історії треду фільтруються налаштованими списками дозволених відправників, коли застосовно. -- Дії блоків і модальні взаємодії виводять структуровані системні події `Slack interaction: ...` з насиченими полями payload: +- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`. +- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути впроваджені в контекст маршрутизації. +- Початкове повідомлення треду та початкове наповнення контексту історії треду фільтруються за налаштованими allowlist відправників, коли це застосовно. +- Дії блоків і модальні взаємодії генерують структуровані системні події `Slack interaction: ...` із насиченими полями payload: - дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*` - - події модальних `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введенням форми + - події modal `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеннями форми ## Довідник конфігурації -Основний довідник: [Довідник конфігурації — Slack](/uk/gateway/config-channels#slack). +Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack). - режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*` -- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` -- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний; тримайте вимкненим, якщо не потрібно) +- доступ до DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застарілі: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels` +- перемикач сумісності: `dangerouslyAllowNameMatching` (break-glass; тримайте вимкненим, якщо не потрібно) - доступ до каналів: `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` +- ops/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly` @@ -900,12 +900,12 @@ Slack автоматично вмикає нативні підтверджен - Перевірте по черзі: + Перевірте по порядку: - `groupPolicy` - - список дозволених каналів (`channels.slack.channels`) — **ключі мають бути ідентифікаторами каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв непомітно не спрацьовують із `groupPolicy: "allowlist"`, оскільки маршрутизація каналів за замовчуванням насамперед використовує ідентифікатори. Щоб знайти ідентифікатор: клацніть правою кнопкою канал у Slack → **Copy link** — значення `C...` наприкінці URL є ідентифікатором каналу. + - allowlist каналів (`channels.slack.channels`) — **ключі мають бути ідентифікаторами каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв непомітно не спрацьовують із `groupPolicy: "allowlist"`, тому що маршрутизація каналів за замовчуванням насамперед використовує ID. Щоб знайти ID: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL є ідентифікатором каналу. - `requireMention` - - поканальний список дозволених `users` + - allowlist `users` для окремого каналу Корисні команди: @@ -917,13 +917,13 @@ openclaw doctor - + Перевірте: - `channels.slack.dm.enabled` - - `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`) - - підтвердження pairing / записи списку дозволених - - Події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed` + - `channels.slack.dmPolicy` (або застарілий `channels.slack.dm.policy`) + - схвалення спарювання / записи allowlist + - події Slack Assistant DM: докладні журнали зі згадкою `drop message_changed` зазвичай означають, що Slack надіслав відредаговану подію треду Assistant без відновлюваного людського відправника в метаданих повідомлення @@ -933,71 +933,72 @@ openclaw pairing list slack - + Перевірте токени bot + app і ввімкнення Socket Mode у налаштуваннях застосунку Slack. Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або `appTokenStatus: "configured_unavailable"`, обліковий запис Slack - налаштований, але поточне середовище виконання не змогло визначити значення на основі SecretRef. + налаштовано, але поточне середовище виконання не змогло визначити значення, + що підтримується SecretRef. - + Перевірте: - - signing secret - - шлях Webhook + - секрет підписування + - шлях webhook - URL запитів Slack (Events + Interactivity + Slash Commands) - унікальний `webhookPath` для кожного HTTP-облікового запису - Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках облікового запису, - HTTP-обліковий запис налаштований, але поточне середовище виконання не змогло - визначити signing secret на основі SecretRef. + Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках + облікового запису, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло + визначити секрет підписування, що підтримується SecretRef. Перевірте, що саме ви мали на увазі: - - режим нативних команд (`channels.slack.commands.native: true`) із відповідними slash-командами, зареєстрованими у Slack + - режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими у Slack - або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`) - Також перевірте `commands.useAccessGroups` і списки дозволених каналів/користувачів. + Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів. ## Довідник vision для вкладень -Slack може прикріплювати завантажені медіа до кроку агента, коли завантаження файлів Slack успішне й обмеження розміру дозволяють. Файли зображень можуть проходити через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст файлів для завантаження, а не обробляються як вхідні зображення. +Slack може додавати завантажені медіа до ходу агента, коли завантаження файлів Slack успішні й обмеження розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст файлів для завантаження, а не розглядаються як вхідні зображення. ### Підтримувані типи медіа -| Тип медіа | Джерело | Поточна поведінка | Примітки | -| ------------------------------ | -------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | -| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються й додаються до ходу для обробки з підтримкою зору | Ліміт на файл: `channels.slack.mediaMaxMb` (типово 20 MB) | -| Файли PDF | URL файлу Slack | Завантажуються й надаються як файловий контекст для інструментів, як-от `download-file` або `pdf` | Вхідні повідомлення Slack не перетворюють PDF автоматично на вхідні дані для зорової обробки | -| Інші файли | URL файлу Slack | Завантажуються, коли це можливо, і надаються як файловий контекст | Бінарні файли не обробляються як вхідні зображення | -| Відповіді в треді | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути завантажені як контекст, коли відповідь не має власних медіа | Початкові повідомлення лише з файлами використовують заповнювач вкладення | -| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення | +| Тип медіа | Джерело | Поточна поведінка | Примітки | +| ------------------------------ | -------------------- | ---------------------------------------------------------------------------------- | ------------------------------------------------------------------------- | +| Зображення JPEG / PNG / GIF / WebP | URL файлу Slack | Завантажуються й додаються до ходу для обробки з підтримкою зорових можливостей | Ліміт на файл: `channels.slack.mediaMaxMb` (типово 20 MB) | +| Файли PDF | URL файлу Slack | Завантажуються й надаються як файловий контекст для інструментів, як-от `download-file` або `pdf` | Вхідні повідомлення Slack не перетворюють PDF на вхідні дані image-vision автоматично | +| Інші файли | URL файлу Slack | Завантажуються, коли це можливо, і надаються як файловий контекст | Двійкові файли не розглядаються як вхідні зображення | +| Відповіді в гілках | Файли початкового повідомлення гілки | Файли кореневого повідомлення можуть бути підвантажені як контекст, коли відповідь не має власних медіа | Початкові повідомлення лише з файлами використовують заповнювач вкладення | +| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення | ### Вхідний конвеєр Коли надходить повідомлення Slack із файловими вкладеннями: -1. OpenClaw завантажує файл із приватної URL-адреси Slack за допомогою токена бота (`xoxb-...`). +1. OpenClaw завантажує файл із приватного URL Slack за допомогою токена бота (`xoxb-...`). 2. У разі успіху файл записується до сховища медіа. -3. Шляхи завантажених медіа й типи вмісту додаються до вхідного контексту. -4. Шляхи моделі/інструменту з підтримкою зображень можуть використовувати вкладення зображень із цього контексту. -5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або посилання на медіа для інструментів, які можуть їх обробляти. +3. Шляхи завантажених медіа та типи вмісту додаються до вхідного контексту. +4. Шляхи моделі/інструмента з підтримкою зображень можуть використовувати вкладення зображень із цього контексту. +5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або медіапосилання для інструментів, які можуть їх обробляти. -### Успадкування вкладень кореня треду +### Успадкування вкладень кореня гілки -Коли повідомлення надходить у треді (має батьківський `thread_ts`): +Коли повідомлення надходить у гілці (має батьківський `thread_ts`): -- Якщо сама відповідь не має власних медіа, а включене кореневе повідомлення має файли, Slack може завантажити кореневі файли як контекст початкового повідомлення треду. -- Власні вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення. -- Кореневе повідомлення, яке має лише файли й не має тексту, представляється заповнювачем вкладення, щоб резервний варіант усе одно міг включити його файли. +- Якщо сама відповідь не має прямих медіа, а включене кореневе повідомлення має файли, Slack може підвантажити кореневі файли як контекст початку гілки. +- Прямі вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення. +- Кореневе повідомлення, яке має лише файли й не має тексту, представляється заповнювачем вкладення, щоб резервний шлях усе одно міг включити його файли. ### Обробка кількох вкладень @@ -1008,49 +1009,49 @@ Slack може прикріплювати завантажені медіа до - Порядок обробки відповідає порядку файлів Slack у корисному навантаженні події. - Помилка завантаження одного вкладення не блокує інші. -### Обмеження розміру, завантаження та моделей +### Обмеження розміру, завантаження та моделі -- **Ліміт розміру**: Типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`. -- **Помилки завантаження**: Файли, які Slack не може надати, прострочені URL-адреси, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються, а не повідомляються як непідтримувані формати. -- **Зорова модель**: Аналіз зображень використовує активну модель відповіді, коли вона підтримує зір, або модель зображень, налаштовану в `agents.defaults.imageModel`. +- **Ліміт розміру**: типово 20 MB на файл. Налаштовується через `channels.slack.mediaMaxMb`. +- **Помилки завантаження**: файли, які Slack не може надати, прострочені URL, недоступні файли, завеликі файли та HTML-відповіді автентифікації/входу Slack пропускаються замість того, щоб повідомлятися як непідтримувані формати. +- **Модель зорового аналізу**: аналіз зображень використовує активну модель відповіді, коли вона підтримує зоровий аналіз, або модель зображень, налаштовану в `agents.defaults.imageModel`. ### Відомі обмеження -| Сценарій | Поточна поведінка | Обхідний шлях | -| -------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- | -| Прострочена URL-адреса файлу Slack | Файл пропускається; помилка не показується | Повторно завантажте файл у Slack | -| Зорова модель не налаштована | Вкладення зображень зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використовуйте модель відповіді з підтримкою зору | -| Дуже великі зображення (> 20 MB типово) | Пропускаються відповідно до ліміту розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє | -| Переслані/спільні вкладення | Текст і розміщені в Slack медіа зображень/файлів обробляються за принципом найкращих зусиль | Поділіться ними повторно безпосередньо в треді OpenClaw | -| Вкладення PDF | Зберігаються як файловий/медійний контекст, не спрямовуються автоматично через зорову обробку зображень | Використовуйте `download-file` для файлових метаданих або інструмент `pdf` для аналізу PDF | +| Сценарій | Поточна поведінка | Обхідний шлях | +| ------------------------------------- | ---------------------------------------------------------------------------- | -------------------------------------------------------------------------- | +| Прострочений URL файлу Slack | Файл пропускається; помилка не показується | Повторно завантажте файл у Slack | +| Модель зорового аналізу не налаштована | Вкладення зображень зберігаються як медіапосилання, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використайте модель відповіді з підтримкою зорового аналізу | +| Дуже великі зображення (> 20 MB типово) | Пропускаються відповідно до ліміту розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє | +| Переслані/поширені вкладення | Текст і розміщені в Slack медіа зображень/файлів обробляються за принципом best-effort | Поділіться ними напряму в гілці OpenClaw | +| PDF-вкладення | Зберігаються як файловий/медіаконтекст, але автоматично не спрямовуються через зоровий аналіз зображень | Використовуйте `download-file` для файлових метаданих або інструмент `pdf` для аналізу PDF | ### Пов’язана документація - [Конвеєр розуміння медіа](/uk/nodes/media-understanding) - [Інструмент PDF](/uk/tools/pdf) -- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зорової обробки вкладень Slack +- Епік: [#51349](https://github.com/openclaw/openclaw/issues/51349) — увімкнення зорового аналізу вкладень Slack - Регресійні тести: [#51353](https://github.com/openclaw/openclaw/issues/51353) - Жива перевірка: [#51354](https://github.com/openclaw/openclaw/issues/51354) ## Пов’язане - - Сполучіть користувача Slack із Gateway. + + Зв’яжіть користувача Slack із Gateway. - - Поведінка каналів і групових DM. + + Поведінка каналу та групових DM. - + Спрямовуйте вхідні повідомлення до агентів. - + Модель загроз і посилення захисту. - + Структура конфігурації та пріоритетність. - + Каталог команд і поведінка. diff --git a/docs/uk/gateway/diagnostics.md b/docs/uk/gateway/diagnostics.md index 19f5a863f..11159ec0f 100644 --- a/docs/uk/gateway/diagnostics.md +++ b/docs/uk/gateway/diagnostics.md @@ -1,26 +1,26 @@ --- read_when: - - Підготовка звіту про помилку або запиту до служби підтримки - - Налагодження збоїв Gateway, перезапусків, нестачі пам’яті або завеликих корисних навантажень + - Підготовка звіту про помилку або запиту на підтримку + - Налагодження аварійних завершень Gateway, перезапусків, тиску на пам’ять або надмірно великих корисних навантажень - Перегляд того, які діагностичні дані записуються або приховуються -summary: Створення придатних для поширення діагностичних пакетів Gateway для звітів про помилки -title: Експорт діагностичних даних +summary: Створюйте поширювані діагностичні пакети Gateway для звітів про помилки +title: Експорт діагностики x-i18n: - generated_at: "2026-04-28T22:44:31Z" + generated_at: "2026-05-02T04:01:30Z" model: gpt-5.5 provider: openai - source_hash: e66f1391da77e531b5d3b0ed19600da222d80960d1b6e54d51925c04b06dae46 + source_hash: 4d1f7c1e1d96aeeebe30b30c8a23ec3c7b0fb4938f15a3783bf22e861770bf78 source_path: gateway/diagnostics.md workflow: 16 --- -OpenClaw може створити локальний zip-архів діагностики для звітів про помилки. Він об’єднує -очищені статус Gateway, стан працездатності, журнали, форму конфігурації та нещодавні події -стабільності без payload. +OpenClaw може створити локальний zip-файл діагностики для звітів про помилки. Він об’єднує +очищені стан Gateway, працездатність, журнали, форму конфігурації та нещодавні +події стабільності без вмісту payload. Ставтеся до діагностичних пакетів як до секретів, доки не переглянете їх. Вони -спроєктовані так, щоб пропускати або редагувати payload і облікові дані, але все одно узагальнюють -локальні журнали Gateway та стан середовища виконання на рівні хоста. +спроєктовані так, щоб пропускати або редагувати payload і облікові дані, але все одно підсумовують +локальні журнали Gateway і стан runtime на рівні хоста. ## Швидкий старт @@ -28,7 +28,7 @@ OpenClaw може створити локальний zip-архів діагн openclaw gateway diagnostics export ``` -Команда виводить шлях до записаного zip-архіву. Щоб вибрати шлях: +Команда друкує шлях до записаного zip-файлу. Щоб вибрати шлях: ```bash openclaw gateway diagnostics export --output openclaw-diagnostics.zip @@ -43,58 +43,58 @@ openclaw gateway diagnostics export --json ## Команда чату Власники можуть використовувати `/diagnostics [note]` у чаті, щоб запросити локальний експорт Gateway. -Використовуйте це, коли помилка сталася в реальній розмові й вам потрібен один +Використовуйте це, коли помилка сталася в реальній розмові і вам потрібен один звіт для підтримки, який можна скопіювати й вставити: 1. Надішліть `/diagnostics` у розмові, де ви помітили проблему. Додайте - коротку примітку, якщо це допоможе, наприклад `/diagnostics bad tool choice`. -2. OpenClaw надсилає вступ до діагностики та просить одне явне підтвердження exec. - Підтвердження запускає `openclaw gateway diagnostics export --json`. - Не підтверджуйте діагностику через правило allow-all. -3. Після підтвердження OpenClaw відповідає звітом для вставлення, який містить локальний - шлях до пакета, зведення маніфесту, примітки щодо приватності та відповідні ідентифікатори сесій. + коротку нотатку, якщо це допоможе, наприклад `/diagnostics bad tool choice`. +2. OpenClaw надсилає вступ до діагностики та просить одне явне схвалення exec. + Схвалення запускає `openclaw gateway diagnostics export --json`. + Не схвалюйте діагностику через правило allow-all. +3. Після схвалення OpenClaw відповідає звітом для вставлення, що містить локальний + шлях пакета, підсумок маніфесту, примітки щодо приватності та відповідні ідентифікатори сесій. У групових чатах власник усе ще може запустити `/diagnostics`, але OpenClaw не -публікує діагностичні деталі назад у спільний чат. Він надсилає вступ, -запити підтвердження, результат експорту Gateway та розбивку сесії/потоку Codex -власнику через приватний маршрут підтвердження. Група отримує лише коротке повідомлення -про те, що діагностичний процес було надіслано приватно. Якщо OpenClaw не може знайти приватний -маршрут до власника, команда закривається без виконання й просить власника запустити її з DM. +публікує діагностичні подробиці назад у спільний чат. Він надсилає вступ, +запити схвалення, результат експорту Gateway і розбір сесії/треду Codex +власнику через приватний маршрут схвалення. Група отримує лише коротке повідомлення +про те, що діагностичний потік було надіслано приватно. Якщо OpenClaw не може знайти приватний +маршрут до власника, команда завершується безпечною відмовою і просить власника запустити її з DM. Коли активна сесія OpenClaw використовує нативний harness OpenAI Codex, -те саме підтвердження exec також охоплює завантаження відгуку OpenAI для потоків -середовища виконання Codex, про які знає OpenClaw. Це завантаження відокремлене від локального -zip-архіву Gateway і з’являється лише для сесій harness Codex. Перед підтвердженням -запит пояснює, що підтвердження діагностики також надішле відгук Codex, але -не перелічує ідентифікатори сесій або потоків Codex. Після підтвердження відповідь у чаті перелічує -канали, ідентифікатори сесій OpenClaw, ідентифікатори потоків Codex і локальні команди відновлення -для потоків, надісланих на сервери OpenAI. Якщо ви відхилите або проігноруєте -підтвердження, OpenClaw не запускає експорт, не надсилає відгук Codex і +те саме схвалення exec також покриває завантаження відгуку OpenAI для тредів runtime +Codex, про які знає OpenClaw. Це завантаження окреме від локального zip-файлу +Gateway і з’являється лише для сесій harness Codex. Перед схваленням +запит пояснює, що схвалення діагностики також надішле відгук Codex, але він +не перелічує ідентифікатори сесій або тредів Codex. Після схвалення відповідь у чаті перелічує +канали, ідентифікатори сесій OpenClaw, ідентифікатори тредів Codex і локальні команди resume +для тредів, надісланих на сервери OpenAI. Якщо ви відхилите або проігноруєте +схвалення, OpenClaw не запускає експорт, не надсилає відгук Codex і не друкує ідентифікатори Codex. -Це робить типовий цикл налагодження Codex коротким: помітьте неправильну поведінку в -Telegram, Discord або іншому каналі, запустіть `/diagnostics`, підтвердьте один раз, поділіться -звітом із підтримкою, а потім запустіть надруковану команду `codex resume ` -локально, якщо хочете самостійно переглянути нативний потік Codex. Див. -[harness Codex](/uk/plugins/codex-harness#inspect-a-codex-thread-from-the-cli) для -цього процесу перегляду. +Це робить звичний цикл налагодження Codex коротким: помітили погану поведінку в +Telegram, Discord або іншому каналі, запустили `/diagnostics`, один раз схвалили, поділилися +звітом із підтримкою, а потім локально запустили надруковану команду `codex resume `, +якщо хочете самостійно перевірити нативний тред Codex. Див. +[Harness Codex](/uk/plugins/codex-harness#inspect-a-codex-thread-from-the-cli) для +цього робочого процесу перевірки. ## Що містить експорт -Zip-архів містить: +Zip-файл містить: -- `summary.md`: зрозумілий для людини огляд для підтримки. -- `diagnostics.json`: машинозчитуване зведення конфігурації, журналів, статусу, стану працездатності +- `summary.md`: зручний для людини огляд для підтримки. +- `diagnostics.json`: машиночитний підсумок конфігурації, журналів, стану, працездатності та даних стабільності. - `manifest.json`: метадані експорту та список файлів. -- Очищену форму конфігурації та несекретні деталі конфігурації. -- Очищені зведення журналів і нещодавні відредаговані рядки журналів. -- Найкращі можливі знімки статусу та стану працездатності Gateway. -- `stability/latest.json`: найновіший збережений пакет стабільності, якщо доступний. +- Очищену форму конфігурації та несекретні подробиці конфігурації. +- Очищені підсумки журналів і нещодавні відредаговані рядки журналів. +- Best-effort знімки стану та працездатності Gateway. +- `stability/latest.json`: найновіший збережений пакет стабільності, коли він доступний. -Експорт корисний навіть тоді, коли Gateway нездоровий. Якщо Gateway не може -відповісти на запити статусу або стану працездатності, локальні журнали, форма конфігурації та найновіший -пакет стабільності все одно збираються, коли доступні. +Експорт корисний навіть тоді, коли Gateway непрацездатний. Якщо Gateway не може +відповісти на запити стану або працездатності, локальні журнали, форма конфігурації та найновіший +пакет стабільності все одно збираються, коли вони доступні. ## Модель приватності @@ -102,32 +102,34 @@ Zip-архів містить: які допомагають налагодженню, як-от: - назви підсистем, ідентифікатори plugin, ідентифікатори провайдерів, ідентифікатори каналів і налаштовані режими -- коди статусу, тривалості, кількість байтів, стан черги та показники пам’яті +- коди стану, тривалості, кількість байтів, стан черги та показники пам’яті - очищені метадані журналів і відредаговані операційні повідомлення - форму конфігурації та несекретні налаштування функцій Експорт пропускає або редагує: -- текст чату, промпти, інструкції, тіла Webhook і результати інструментів +- текст чату, промпти, інструкції, тіла webhook і результати інструментів - облікові дані, API-ключі, токени, cookies і секретні значення - сирі тіла запитів або відповідей - ідентифікатори облікових записів, ідентифікатори повідомлень, сирі ідентифікатори сесій, імена хостів і локальні імена користувачів Коли повідомлення журналу схоже на текст користувача, чату, промпта або payload інструмента, -експорт зберігає лише факт пропуску повідомлення та кількість байтів. +експорт зберігає лише те, що повідомлення було пропущено, і кількість байтів. ## Реєстратор стабільності -Gateway за замовчуванням записує обмежений потік стабільності без payload, коли +Gateway типово записує обмежений потік стабільності без payload, коли діагностику ввімкнено. Він призначений для операційних фактів, а не для вмісту. -Той самий діагностичний Heartbeat записує попередження про живість, коли Gateway продовжує -працювати, але цикл подій Node.js або CPU виглядає перевантаженим. Ці -події `diagnostic.liveness.warning` містять затримку циклу подій, використання циклу подій, -співвідношення CPU-core, а також кількість активних/очікувальних/поставлених у чергу сесій. Вони -самі по собі не перезапускають Gateway. +Той самий діагностичний heartbeat записує зразки життєздатності, коли Gateway продовжує +працювати, але event loop Node.js або CPU виглядає перевантаженим. Ці +події `diagnostic.liveness.warning` містять затримку event loop, використання event loop, +співвідношення CPU-core і кількість активних/очікуваних/поставлених у чергу сесій. Неактивні +зразки залишаються в телеметрії на рівні `info`; вони логуються як попередження Gateway +лише коли діагностична робота активна, очікує або стоїть у черзі. Вони самі по собі +не перезапускають Gateway. -Перегляньте активний реєстратор: +Перевірити активний реєстратор: ```bash openclaw gateway stability @@ -135,22 +137,22 @@ openclaw gateway stability --type payload.large openclaw gateway stability --json ``` -Перегляньте найновіший збережений пакет стабільності після фатального завершення, таймауту -завершення роботи або помилки запуску після перезапуску: +Перевірити найновіший збережений пакет стабільності після фатального виходу, тайм-ауту завершення роботи +або помилки запуску після перезапуску: ```bash openclaw gateway stability --bundle latest ``` -Створіть zip-архів діагностики з найновішого збереженого пакета: +Створити zip-файл діагностики з найновішого збереженого пакета: ```bash openclaw gateway stability --bundle latest --export ``` -Збережені пакети розміщуються в `~/.openclaw/logs/stability/`, коли події існують. +Збережені пакети розташовані в `~/.openclaw/logs/stability/`, коли події існують. -## Корисні опції +## Корисні параметри ```bash openclaw gateway diagnostics export \ @@ -159,20 +161,20 @@ openclaw gateway diagnostics export \ --log-bytes 1000000 ``` -- `--output `: записати до конкретного шляху zip-архіву. +- `--output `: записати до конкретного шляху zip-файлу. - `--log-lines `: максимальна кількість очищених рядків журналу для включення. - `--log-bytes `: максимальна кількість байтів журналу для перевірки. -- `--url `: URL WebSocket Gateway для знімків статусу та стану працездатності. -- `--token `: токен Gateway для знімків статусу та стану працездатності. -- `--password `: пароль Gateway для знімків статусу та стану працездатності. -- `--timeout `: таймаут знімка статусу та стану працездатності. +- `--url `: URL WebSocket Gateway для знімків стану та працездатності. +- `--token `: токен Gateway для знімків стану та працездатності. +- `--password `: пароль Gateway для знімків стану та працездатності. +- `--timeout `: тайм-аут знімків стану та працездатності. - `--no-stability-bundle`: пропустити пошук збереженого пакета стабільності. -- `--json`: надрукувати машинозчитувані метадані експорту. +- `--json`: надрукувати машиночитні метадані експорту. ## Вимкнення діагностики -Діагностику ввімкнено за замовчуванням. Щоб вимкнути реєстратор стабільності та -збір діагностичних подій: +Діагностику ввімкнено типово. Щоб вимкнути реєстратор стабільності та +збирання діагностичних подій: ```json5 { @@ -183,12 +185,12 @@ openclaw gateway diagnostics export \ ``` Вимкнення діагностики зменшує деталізацію звіту про помилку. Воно не впливає на звичайне -журналювання Gateway. +логування Gateway. ## Пов’язане -- [Перевірки стану працездатності](/uk/gateway/health) +- [Перевірки працездатності](/uk/gateway/health) - [CLI Gateway](/uk/cli/gateway#gateway-diagnostics-export) - [Протокол Gateway](/uk/gateway/protocol#system-and-identity) -- [Журналювання](/uk/logging) -- [Експорт OpenTelemetry](/uk/gateway/opentelemetry) — окремий процес для потокової діагностики до колектора +- [Логування](/uk/logging) +- [Експорт OpenTelemetry](/uk/gateway/opentelemetry) — окремий потік для передавання діагностики до колектора