chore(i18n): refresh uk translations
This commit is contained in:
parent
6bfcb2c692
commit
527b73bcbb
@ -1,28 +1,28 @@
|
||||
---
|
||||
read_when:
|
||||
- Налаштування Slack або налагодження режиму socket/HTTP у Slack
|
||||
- Налаштування Slack або налагодження сокетного/HTTP-режиму Slack
|
||||
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів)
|
||||
title: Slack
|
||||
x-i18n:
|
||||
generated_at: "2026-05-03T01:34:47Z"
|
||||
generated_at: "2026-05-03T17:33:01Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 85473159dcbd395144e5c37da140164023ac117406ba517d557fcf0989042448
|
||||
source_hash: d902fbbad23cee9b3f0ab7d240845b7b229e2d2507c5ea1d1a0fa3baa915d80a
|
||||
source_path: channels/slack.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Готово до продакшну для особистих повідомлень і каналів через інтеграції Slack app. Стандартний режим — Socket Mode; HTTP Request URLs також підтримуються.
|
||||
Готово до продакшну для особистих повідомлень і каналів через інтеграції застосунків Slack. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
|
||||
|
||||
<CardGroup cols={3}>
|
||||
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
|
||||
Особисті повідомлення Slack за замовчуванням використовують режим сполучення.
|
||||
</Card>
|
||||
<Card title="Slash commands" icon="terminal" href="/uk/tools/slash-commands">
|
||||
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
|
||||
Нативна поведінка команд і каталог команд.
|
||||
</Card>
|
||||
<Card title="Усунення несправностей каналів" icon="wrench" href="/uk/channels/troubleshooting">
|
||||
Міжканальна діагностика та інструкції з виправлення.
|
||||
Міжканальна діагностика та сценарії відновлення.
|
||||
</Card>
|
||||
</CardGroup>
|
||||
|
||||
@ -31,10 +31,10 @@ x-i18n:
|
||||
<Tabs>
|
||||
<Tab title="Socket Mode (за замовчуванням)">
|
||||
<Steps>
|
||||
<Step title="Створіть новий Slack app">
|
||||
У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
|
||||
<Step title="Створіть новий застосунок Slack">
|
||||
У налаштуваннях застосунку Slack натисніть кнопку **[Створити новий застосунок](https://api.slack.com/apps/new)**:
|
||||
|
||||
- виберіть **from a manifest** і виберіть робочий простір для свого застосунку
|
||||
- виберіть **з маніфесту** й оберіть робочий простір для свого застосунку
|
||||
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче й продовжте створення
|
||||
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
|
||||
- установіть застосунок і скопіюйте показаний **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 (лише стандартний обліковий запис):
|
||||
Резервний варіант через змінні середовища (лише обліковий запис за замовчуванням):
|
||||
|
||||
```bash
|
||||
SLACK_APP_TOKEN=xapp-...
|
||||
@ -73,7 +73,7 @@ SLACK_BOT_TOKEN=xoxb-...
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Запустіть gateway">
|
||||
<Step title="Запустіть Gateway">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -86,10 +86,10 @@ openclaw gateway
|
||||
|
||||
<Tab title="HTTP Request URLs">
|
||||
<Steps>
|
||||
<Step title="Створіть новий Slack app">
|
||||
У налаштуваннях Slack app натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
|
||||
<Step title="Створіть новий застосунок Slack">
|
||||
У налаштуваннях застосунку Slack натисніть кнопку **[Створити новий застосунок](https://api.slack.com/apps/new)**:
|
||||
|
||||
- виберіть **from a manifest** і виберіть робочий простір для свого застосунку
|
||||
- виберіть **з маніфесту** й оберіть робочий простір для свого застосунку
|
||||
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
|
||||
- збережіть **Signing Secret** для перевірки запитів
|
||||
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
|
||||
@ -121,14 +121,14 @@ openclaw config patch --file ./slack.http.patch.json5
|
||||
```
|
||||
|
||||
<Note>
|
||||
Використовуйте унікальні шляхи webhook для HTTP із кількома обліковими записами
|
||||
Використовуйте унікальні шляхи Webhook для HTTP з кількома обліковими записами
|
||||
|
||||
Надайте кожному обліковому запису окремий `webhookPath` (за замовчуванням `/slack/events`), щоб реєстрації не конфліктували.
|
||||
</Note>
|
||||
|
||||
</Step>
|
||||
|
||||
<Step title="Запустіть gateway">
|
||||
<Step title="Запустити Gateway">
|
||||
|
||||
```bash
|
||||
openclaw gateway
|
||||
@ -142,7 +142,7 @@ openclaw gateway
|
||||
|
||||
## Налаштування транспорту Socket Mode
|
||||
|
||||
OpenClaw за замовчуванням встановлює для клієнта Slack SDK тайм-аут pong 15 секунд у Socket Mode. Перевизначайте транспортні налаштування лише тоді, коли потрібне налаштування під конкретний робочий простір або хост:
|
||||
OpenClaw за замовчуванням установлює тайм-аут pong клієнта Slack SDK на 15 секунд для Socket Mode. Змінюйте параметри транспорту лише тоді, коли потрібне налаштування для конкретного робочого простору або хоста:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -159,11 +159,11 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Використовуйте це лише для робочих просторів Socket Mode, де фіксуються тайм-аути Slack websocket pong/server-ping, або для хостів із відомим голодуванням циклу подій. `clientPingTimeout` — це очікування pong після того, як SDK надсилає клієнтський ping; `serverPingTimeout` — це очікування ping від сервера Slack. Повідомлення застосунку й події залишаються станом застосунку, а не сигналами працездатності транспорту.
|
||||
Використовуйте це лише для робочих просторів Socket Mode, які журналюють тайм-аути Slack websocket pong/server-ping або працюють на хостах із відомим виснаженням циклу подій. `clientPingTimeout` — це очікування pong після того, як SDK надсилає клієнтський ping; `serverPingTimeout` — це очікування ping від сервера Slack. Повідомлення та події застосунку залишаються станом застосунку, а не сигналами життєздатності транспорту.
|
||||
|
||||
## Контрольний список маніфесту та scope
|
||||
## Контрольний список маніфесту й областей доступу
|
||||
|
||||
Базовий маніфест Slack app однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` для slash command).
|
||||
Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` slash-команди).
|
||||
|
||||
Базовий маніфест (Socket Mode за замовчуванням):
|
||||
|
||||
@ -240,7 +240,7 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash command. Потрібна публічна URL-адреса:
|
||||
Для режиму **HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash-команди. Потрібна публічна URL-адреса:
|
||||
|
||||
```json
|
||||
{
|
||||
@ -270,19 +270,19 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
### Додаткові налаштування маніфесту
|
||||
### Додаткові параметри маніфесту
|
||||
|
||||
Увімкніть різні функції, що розширюють наведені вище стандартні налаштування.
|
||||
Увімкніть інші функції, які розширюють наведені вище стандартні параметри.
|
||||
|
||||
Стандартний маніфест вмикає вкладку **Home** у Slack App Home і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечне стандартне подання Home через `views.publish`; payload розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для особистих повідомлень Slack.
|
||||
Стандартний маніфест вмикає вкладку **Home** у Slack App Home і підписується на `app_home_opened`. Коли учасник робочого простору відкриває вкладку Home, OpenClaw публікує безпечне стандартне подання Home через `views.publish`; payload розмови або приватна конфігурація не включаються. Вкладка **Messages** залишається ввімкненою для Slack DM.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Додаткові нативні slash commands">
|
||||
<Accordion title="Необов’язкові нативні slash-команди">
|
||||
|
||||
Кілька [нативних slash commands](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з нюансами:
|
||||
Замість однієї налаштованої команди можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior), з урахуванням нюансів:
|
||||
|
||||
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
|
||||
- Одночасно можна зробити доступними не більше 25 slash commands.
|
||||
- Одночасно можна зробити доступними не більше 25 slash-команд.
|
||||
|
||||
Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
|
||||
|
||||
@ -394,6 +394,11 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
"description": "Ask a side question without changing session context",
|
||||
"usage_hint": "<question>"
|
||||
},
|
||||
{
|
||||
"command": "/side",
|
||||
"description": "Ask a side question without changing session context",
|
||||
"usage_hint": "<question>"
|
||||
},
|
||||
{
|
||||
"command": "/usage",
|
||||
"description": "Control the usage footer or show cost summary",
|
||||
@ -427,14 +432,14 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
</Tabs>
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Додаткові scopes авторства (операції запису)">
|
||||
Додайте scope бота `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували ідентичність активного агента (власне ім’я користувача та іконку), а не стандартну ідентичність Slack app.
|
||||
<Accordion title="Необов’язкові області авторства (операції запису)">
|
||||
Додайте область бота `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власне ім’я користувача та піктограму) замість стандартної ідентичності застосунку Slack.
|
||||
|
||||
Якщо ви використовуєте emoji-іконку, Slack очікує синтаксис `:emoji_name:`.
|
||||
Якщо ви використовуєте піктограму emoji, Slack очікує синтаксис `:emoji_name:`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Необов’язкові області дії токена користувача (операції читання)">
|
||||
Якщо ви налаштовуєте `channels.slack.userToken`, типові області дії для читання:
|
||||
<Accordion title="Необов’язкові області токена користувача (операції читання)">
|
||||
Якщо ви налаштовуєте `channels.slack.userToken`, типові області читання такі:
|
||||
|
||||
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
|
||||
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
|
||||
@ -442,7 +447,7 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
- `reactions:read`
|
||||
- `pins:read`
|
||||
- `emoji:read`
|
||||
- `search:read` (якщо ви залежите від читання пошуку Slack)
|
||||
- `search:read` (якщо ви покладаєтеся на читання пошуку Slack)
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
@ -451,25 +456,25 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
|
||||
- `botToken` + `appToken` потрібні для Socket Mode.
|
||||
- Режим HTTP потребує `botToken` + `signingSecret`.
|
||||
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні текстові
|
||||
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
|
||||
рядки або об’єкти SecretRef.
|
||||
- Токени з конфігурації перевизначають резервні значення env.
|
||||
- Резервні значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовуються лише до типового облікового запису.
|
||||
- `userToken` (`xoxp-...`) налаштовується лише через конфігурацію (без резервного значення env) і типово має поведінку лише для читання (`userTokenReadOnly: true`).
|
||||
- Токени конфігурації перевизначають резервне значення env.
|
||||
- Резервне значення env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до стандартного облікового запису.
|
||||
- `userToken` (`xoxp-...`) задається лише в конфігурації (без резервного значення env) і за замовчуванням працює лише для читання (`userTokenReadOnly: true`).
|
||||
|
||||
Поведінка знімка статусу:
|
||||
Поведінка знімка стану:
|
||||
|
||||
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
|
||||
для кожних облікових даних (`botToken`, `appToken`, `signingSecret`, `userToken`).
|
||||
- Статус може бути `available`, `configured_unavailable` або `missing`.
|
||||
- Перевірка облікового запису Slack відстежує для кожних облікових даних поля `*Source` і `*Status`
|
||||
(`botToken`, `appToken`, `signingSecret`, `userToken`).
|
||||
- Стан може бути `available`, `configured_unavailable` або `missing`.
|
||||
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
|
||||
або інше не-inline джерело секретів, але поточна команда чи шлях виконання
|
||||
не змогли отримати фактичне значення.
|
||||
- У режимі HTTP включено `signingSecretStatus`; у Socket Mode
|
||||
потрібна пара — `botTokenStatus` + `appTokenStatus`.
|
||||
або інше неінлайнове джерело секрету, але поточний командний чи runtime-шлях
|
||||
не зміг отримати фактичне значення.
|
||||
- У режимі HTTP включається `signingSecretStatus`; у Socket Mode
|
||||
обов’язкова пара — `botTokenStatus` + `appTokenStatus`.
|
||||
|
||||
<Tip>
|
||||
Для дій і читання каталогу можна надавати перевагу токену користувача, коли його налаштовано. Для запису перевага залишається за токеном бота; записи через токен користувача дозволені лише коли `userTokenReadOnly: false` і токен бота недоступний.
|
||||
Для дій/читання каталогу токен користувача може мати пріоритет, коли його налаштовано. Для записів токен бота лишається пріоритетним; записи через токен користувача дозволені лише коли `userTokenReadOnly: false` і токен бота недоступний.
|
||||
</Tip>
|
||||
|
||||
## Дії та шлюзи
|
||||
@ -486,13 +491,13 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
| memberInfo | увімкнено |
|
||||
| emojiList | увімкнено |
|
||||
|
||||
Поточні дії з повідомленнями Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ID файлів Slack, показані у вхідних плейсхолдерах файлів, і повертає попередні перегляди зображень для зображень або метадані локального файлу для інших типів файлів.
|
||||
Поточні дії повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`. `download-file` приймає ідентифікатори файлів Slack, показані у вхідних заповнювачах файлів, і повертає попередні перегляди зображень для зображень або метадані локальних файлів для інших типів файлів.
|
||||
|
||||
## Контроль доступу та маршрутизація
|
||||
|
||||
<Tabs>
|
||||
<Tab title="Політика DM">
|
||||
`channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` є канонічним allowlist для DM.
|
||||
`channels.slack.dmPolicy` керує доступом до DM. `channels.slack.allowFrom` — канонічний список дозволених DM.
|
||||
|
||||
- `pairing` (типово)
|
||||
- `allowlist`
|
||||
@ -505,17 +510,17 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
- `channels.slack.allowFrom`
|
||||
- `dm.allowFrom` (застаріле)
|
||||
- `dm.groupEnabled` (групові DM типово false)
|
||||
- `dm.groupChannels` (необов’язковий allowlist MPIM)
|
||||
- `dm.groupChannels` (необов’язковий список дозволених MPIM)
|
||||
|
||||
Пріоритет для кількох облікових записів:
|
||||
Пріоритетність для кількох облікових записів:
|
||||
|
||||
- `channels.slack.accounts.default.allowFrom` застосовується лише до облікового запису `default`.
|
||||
- Іменовані облікові записи успадковують `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 <code>`.
|
||||
Сполучення в DM використовує `openclaw pairing approve slack <code>`.
|
||||
|
||||
</Tab>
|
||||
|
||||
@ -526,20 +531,20 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
- `allowlist`
|
||||
- `disabled`
|
||||
|
||||
Allowlist каналів розташований у `channels.slack.channels` і **має використовувати стабільні ID каналів Slack** (наприклад `C12345678`) як ключі конфігурації.
|
||||
Список дозволених каналів міститься в `channels.slack.channels` і **має використовувати стабільні ідентифікатори каналів Slack** (наприклад, `C12345678`) як ключі конфігурації.
|
||||
|
||||
Примітка щодо виконання: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime повертається до `groupPolicy="allowlist"` і записує попередження (навіть якщо задано `channels.defaults.groupPolicy`).
|
||||
Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime повертається до `groupPolicy="allowlist"` і записує попередження (навіть якщо задано `channels.defaults.groupPolicy`).
|
||||
|
||||
Розв’язання імен/ID:
|
||||
Розв’язання імен/ідентифікаторів:
|
||||
|
||||
- записи allowlist каналів і записи allowlist DM розв’язуються під час запуску, коли доступ токена це дозволяє
|
||||
- записи списку дозволених каналів і записи списку дозволених DM розв’язуються під час запуску, коли доступ токена це дозволяє
|
||||
- нерозв’язані записи імен каналів зберігаються як налаштовані, але типово ігноруються для маршрутизації
|
||||
- вхідна авторизація та маршрутизація каналів типово спершу використовують ID; пряме зіставлення за іменем користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
- вхідна авторизація та маршрутизація каналів типово спершу використовують ID; пряме зіставлення імені користувача/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
|
||||
|
||||
<Warning>
|
||||
Ключі на основі імен (`#channel-name` або `channel-name`) **не** зіставляються за `groupPolicy: "allowlist"`. Пошук каналу типово спершу використовує ID, тому ключ на основі імені ніколи не буде успішно маршрутизований, а всі повідомлення в цьому каналі будуть тихо заблоковані. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації і ключ на основі імені здається робочим.
|
||||
Ключі на основі імен (`#channel-name` або `channel-name`) **не** збігаються за `groupPolicy: "allowlist"`. Пошук каналу типово спершу використовує ID, тому ключ на основі імені ніколи не маршрутизуватиметься успішно, а всі повідомлення в цьому каналі буде мовчки заблоковано. Це відрізняється від `groupPolicy: "open"`, де ключ каналу не потрібен для маршрутизації і ключ на основі імені виглядає робочим.
|
||||
|
||||
Завжди використовуйте ID каналу Slack як ключ. Щоб знайти його: клацніть канал у Slack правою кнопкою → **Copy link** — ID (`C...`) з’явиться в кінці URL.
|
||||
Завжди використовуйте ID каналу Slack як ключ. Щоб його знайти: клацніть канал у Slack правою кнопкою → **Copy link** — ID (`C...`) буде в кінці URL.
|
||||
|
||||
Правильно:
|
||||
|
||||
@ -556,7 +561,7 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
}
|
||||
```
|
||||
|
||||
Неправильно (тихо блокується за `groupPolicy: "allowlist"`):
|
||||
Неправильно (мовчки блокується за `groupPolicy: "allowlist"`):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -574,20 +579,20 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
|
||||
</Tab>
|
||||
|
||||
<Tab title="Згадки та користувачі каналів">
|
||||
Повідомлення в каналах типово обмежуються згадками.
|
||||
<Tab title="Згадки та користувачі каналу">
|
||||
Повідомлення каналів типово пропускаються через шлюз згадок.
|
||||
|
||||
Джерела згадок:
|
||||
|
||||
- явна згадка застосунку (`<@botId>`)
|
||||
- згадка групи користувачів Slack (`<!subteam^S...>`), коли користувач-бот є учасником цієї групи користувачів; потребує `usergroups:read`
|
||||
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервний варіант `messages.groupChat.mentionPatterns`)
|
||||
- regex-шаблони згадок (`agents.list[].groupChat.mentionPatterns`, резервно `messages.groupChat.mentionPatterns`)
|
||||
- неявна поведінка відповіді на потік бота (вимкнена, коли `thread.requireExplicitMention` дорівнює `true`)
|
||||
|
||||
Поканальні елементи керування (`channels.slack.channels.<id>`; імена лише через розв’язання під час запуску або `dangerouslyAllowNameMatching`):
|
||||
|
||||
- `requireMention`
|
||||
- `users` (allowlist)
|
||||
- `users` (список дозволених)
|
||||
- `allowBots`
|
||||
- `skills`
|
||||
- `systemPrompt`
|
||||
@ -595,27 +600,27 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або wildcard `"*"`
|
||||
(застарілі ключі без префікса все ще зіставляються лише з `id:`)
|
||||
|
||||
`allowBots` є консервативним для каналів і приватних каналів: повідомлення кімнати, створені ботом, приймаються лише коли бот-відправник явно зазначений в allowlist `users` цієї кімнати або коли принаймні один явний ID власника Slack з `channels.slack.allowFrom` зараз є учасником кімнати. Wildcard і записи власників за відображуваним іменем не задовольняють присутність власника. Присутність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідну область дії читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників завершується невдало, OpenClaw відкидає повідомлення кімнати, створене ботом.
|
||||
`allowBots` консервативний для каналів і приватних каналів: повідомлення кімнати, автором яких є бот, приймаються лише коли бот-відправник явно вказаний у списку дозволених `users` цієї кімнати або коли принаймні один явний ID власника Slack із `channels.slack.allowFrom` наразі є учасником кімнати. Wildcard і записи власників за відображуваним іменем не задовольняють присутність власника. Присутність власника використовує Slack `conversations.members`; переконайтеся, що застосунок має відповідну область читання для типу кімнати (`channels:read` для публічних каналів, `groups:read` для приватних каналів). Якщо пошук учасників не вдається, OpenClaw відкидає повідомлення кімнати, автором якого є бот.
|
||||
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Потоки, сесії та теги відповіді
|
||||
|
||||
- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
|
||||
- Прив’язки маршруту Slack приймають необроблені ID співрозмовників, а також цільові форми Slack, як-от `channel:C12345678`, `user:U12345678` і `<@U12345678>`.
|
||||
- З типовим `session.dmScope=main` DM Slack згортаються до основної сесії агента.
|
||||
- DM маршрутизуються як `direct`; канали як `channel`; MPIM як `group`.
|
||||
- Прив’язки маршрутів Slack приймають необроблені ID співрозмовників, а також цільові форми Slack, як-от `channel:C12345678`, `user:U12345678` і `<@U12345678>`.
|
||||
- За стандартного `session.dmScope=main` DM Slack згортаються до головної сесії агента.
|
||||
- Сесії каналів: `agent:<agentId>:slack:channel:<channelId>`.
|
||||
- Відповіді в потоках можуть створювати суфікси сесій потоків (`:thread:<threadTs>`), коли це застосовно.
|
||||
- Відповіді в потоках можуть створювати суфікси потокових сесій (`:thread:<threadTs>`), коли це застосовно.
|
||||
- Типове значення `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.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.dm.replyToMode`
|
||||
|
||||
Підтримуються ручні теги відповіді:
|
||||
|
||||
@ -623,45 +628,45 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
- `[[reply_to:<id>]]`
|
||||
|
||||
<Note>
|
||||
`replyToMode="off"` вимикає **всі** потоки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Потоки Slack приховують повідомлення з каналу, тоді як відповіді Telegram залишаються видимими inline.
|
||||
`replyToMode="off"` вимикає **всі** потоки відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`. Потоки Slack приховують повідомлення з каналу, тоді як відповіді Telegram лишаються видимими в рядку.
|
||||
</Note>
|
||||
|
||||
## Ack-реакції
|
||||
## Реакції підтвердження
|
||||
|
||||
`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
|
||||
`ackReaction` надсилає emoji підтвердження, поки OpenClaw обробляє вхідне повідомлення.
|
||||
|
||||
Порядок розв’язання:
|
||||
|
||||
- `channels.slack.accounts.<accountId>.ackReaction`
|
||||
- `channels.slack.ackReaction`
|
||||
- `messages.ackReaction`
|
||||
- резервний емодзі ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
|
||||
- резервне emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
|
||||
|
||||
Примітки:
|
||||
|
||||
- Slack очікує shortcodes (наприклад `"eyes"`).
|
||||
- Slack очікує короткі коди (наприклад, `"eyes"`).
|
||||
- Використовуйте `""`, щоб вимкнути реакцію для облікового запису Slack або глобально.
|
||||
|
||||
## Текстовий стримінг
|
||||
## Потокова передача тексту
|
||||
|
||||
`channels.slack.streaming` керує поведінкою live-попереднього перегляду:
|
||||
`channels.slack.streaming` керує поведінкою live preview:
|
||||
|
||||
- `off`: вимкнути стримінг live-попереднього перегляду.
|
||||
- `off`: вимкнути потокову передачу live preview.
|
||||
- `partial` (типово): замінювати текст попереднього перегляду найновішим частковим виводом.
|
||||
- `block`: додавати фрагментовані оновлення попереднього перегляду.
|
||||
- `progress`: показувати текст статусу прогресу під час генерації, а потім надіслати фінальний текст.
|
||||
- `streaming.preview.toolProgress`: коли чорновий попередній перегляд активний, маршрутизувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (типово: `true`). Задайте `false`, щоб зберігати окремі повідомлення інструментів/прогресу.
|
||||
- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати фінальний текст.
|
||||
- `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 верхнього рівня все ще можуть використовувати звичайний чорновий попередній перегляд, коли нативний стримінг недоступний або потоку відповіді немає.
|
||||
- DM Slack верхнього рівня типово залишаються поза потоком, тому вони не показують нативний стримінг/попередній перегляд статусу у стилі потоків Slack; натомість OpenClaw публікує та редагує чорновий попередній перегляд у DM.
|
||||
- Медіа й нетекстові payload повертаються до звичайної доставки.
|
||||
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; відповідні фінальні текстові/блокові результати flush виконуються лише коли вони можуть відредагувати попередній перегляд на місці.
|
||||
- Якщо стримінг завершується невдало посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload.
|
||||
- Потік відповіді має бути доступний, щоб з’явилися нативна потокова передача тексту та стан потоку асистента Slack. Вибір потоку все ще відповідає `replyToMode`.
|
||||
- Корені каналів, групових чатів і DM верхнього рівня все ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативна потокова передача недоступна або немає потоку відповіді.
|
||||
- DM Slack верхнього рівня типово лишаються поза потоком, тому вони не показують нативний потоковий/статусний попередній перегляд Slack у стилі потоку; натомість OpenClaw публікує й редагує чернетковий попередній перегляд у DM.
|
||||
- Медіа та нетекстові payload повертаються до звичайної доставки.
|
||||
- Фінальні медіа/помилки скасовують очікувані редагування попереднього перегляду; відповідні фінальні тексти/блоки скидаються лише коли можуть редагувати попередній перегляд на місці.
|
||||
- Якщо потокова передача переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload.
|
||||
|
||||
Використовуйте чорновий попередній перегляд замість нативного текстового стримінгу Slack:
|
||||
Використовуйте чернетковий попередній перегляд замість нативної потокової передачі тексту Slack:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -678,13 +683,13 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
|
||||
Застарілі ключі:
|
||||
|
||||
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично переноситься в `channels.slack.streaming.mode`.
|
||||
- boolean `channels.slack.streaming` автоматично переноситься в `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
|
||||
- застарілий `channels.slack.nativeStreaming` автоматично переноситься в `channels.slack.streaming.nativeTransport`.
|
||||
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`.
|
||||
- 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,43 +698,43 @@ OpenClaw за замовчуванням встановлює для клієн
|
||||
|
||||
Примітки:
|
||||
|
||||
- Slack очікує shortcodes (наприклад `"hourglass_flowing_sand"`).
|
||||
- Реакція виконується за принципом best-effort, а очищення автоматично намагається виконатися після завершення відповіді або шляху помилки.
|
||||
- Slack очікує короткі коди (наприклад, `"hourglass_flowing_sand"`).
|
||||
- Реакція виконується за принципом best-effort, а очищення автоматично запускається після завершення відповіді або шляху помилки.
|
||||
|
||||
## Медіа, поділ на фрагменти та доставка
|
||||
## Медіа, фрагментація та доставка
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Вхідні вкладення">
|
||||
Файлові вкладення 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`.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Вихідний текст і файли">
|
||||
- текстові фрагменти використовують `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 з медіаконвеєра
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Цілі доставки">
|
||||
Бажані явні цілі:
|
||||
|
||||
- `user:<id>` для приватних повідомлень
|
||||
- `user:<id>` для DM-повідомлень
|
||||
- `channel:<id>` для каналів
|
||||
|
||||
Приватні повідомлення Slack лише з текстом/блоками можуть публікуватися безпосередньо за ідентифікаторами користувачів; завантаження файлів і надсилання в тредах спочатку відкривають приватне повідомлення через API розмов Slack, оскільки ці шляхи потребують конкретного ідентифікатора розмови.
|
||||
Текстові або блокові DM-повідомлення Slack можуть публікуватися безпосередньо за ідентифікаторами користувачів; завантаження файлів і надсилання в гілках спочатку відкривають DM через API розмов Slack, оскільки ці шляхи потребують конкретного ідентифікатора розмови.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Команди та поведінка slash-команд
|
||||
|
||||
Slash-команди з'являються в Slack як одна налаштована команда або кілька вбудованих команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити стандартні параметри команд:
|
||||
Slash-команди з’являються у Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити стандартні параметри команд:
|
||||
|
||||
- `enabled: false`
|
||||
- `name: "openclaw"`
|
||||
@ -740,30 +745,30 @@ Slash-команди з'являються в Slack як одна налашто
|
||||
/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.
|
||||
- Автоматичний режим нативних команд **вимкнено** для Slack, тому `commands.native: "auto"` не вмикає нативні команди Slack.
|
||||
|
||||
```txt
|
||||
/help
|
||||
```
|
||||
|
||||
Меню аргументів вбудованих команд використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед відправленням вибраного значення опції:
|
||||
Меню нативних аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед передаванням вибраного значення опції:
|
||||
|
||||
- до 5 опцій: блоки кнопок
|
||||
- 6-100 опцій: статичне меню вибору
|
||||
- понад 100 опцій: зовнішній вибір з асинхронною фільтрацією опцій, коли доступні обробники опцій інтерактивності
|
||||
- перевищені обмеження Slack: закодовані значення опцій повертаються до кнопок
|
||||
- понад 100 опцій: зовнішній вибір з асинхронним фільтруванням опцій, коли доступні обробники опцій інтерактивності
|
||||
- перевищено обмеження Slack: закодовані значення опцій повертаються до кнопок
|
||||
|
||||
```txt
|
||||
/think
|
||||
```
|
||||
|
||||
Slash-сесії використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
|
||||
Slash-сесії використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно спрямовують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
|
||||
|
||||
## Інтерактивні відповіді
|
||||
|
||||
Slack може відображати створені агентом інтерактивні елементи керування відповідями, але ця функція за замовчуванням вимкнена.
|
||||
Slack може рендерити створені агентом інтерактивні елементи керування відповіддю, але ця функція за замовчуванням вимкнена.
|
||||
|
||||
Увімкніть її глобально:
|
||||
|
||||
@ -797,44 +802,44 @@ 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.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Це інтерфейс, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit у власні системи кнопок.
|
||||
- Значення інтерактивних callback-ів є непрозорими токенами, згенерованими OpenClaw, а не сирими значеннями, створеними агентом.
|
||||
- Якщо згенеровані інтерактивні блоки перевищили б обмеження Slack Block Kit, OpenClaw натомість повертається до початкової текстової відповіді, а не надсилає недійсне корисне навантаження блоків.
|
||||
- Це інтерфейс, специфічний для Slack. Інші канали не перетворюють директиви Slack Block Kit на власні системи кнопок.
|
||||
- Значення інтерактивних callback є непрозорими токенами, згенерованими OpenClaw, а не сирими значеннями, створеними агентом.
|
||||
- Якщо згенеровані інтерактивні блоки перевищуватимуть обмеження Slack Block Kit, OpenClaw повертається до початкової текстової відповіді замість надсилання недійсного payload блоків.
|
||||
|
||||
## Затвердження exec у Slack
|
||||
## Підтвердження виконання у Slack
|
||||
|
||||
Slack може діяти як вбудований клієнт затвердження з інтерактивними кнопками та взаємодіями, замість повернення до веб-інтерфейсу або термінала.
|
||||
Slack може працювати як нативний клієнт підтверджень з інтерактивними кнопками та взаємодіями, замість повернення до вебінтерфейсу або термінала.
|
||||
|
||||
- Затвердження exec використовують `channels.slack.execApprovals.*` для вбудованої маршрутизації приватних повідомлень/каналів.
|
||||
- Затвердження Plugin все ще можуть вирішуватися через ту саму поверхню вбудованих кнопок Slack, коли запит уже надходить у Slack і тип ідентифікатора затвердження є `plugin:`.
|
||||
- Авторизація затверджувачів усе ще застосовується: лише користувачі, визначені як затверджувачі, можуть затверджувати або відхиляти запити через Slack.
|
||||
- Підтвердження виконання використовують `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 автоматично вмикає вбудовані затвердження exec, коли `enabled` не задано або має значення `"auto"` і визначено принаймні одного
|
||||
затверджувача. Задайте `enabled: false`, щоб явно вимкнути Slack як вбудований клієнт затвердження.
|
||||
Задайте `enabled: true`, щоб примусово ввімкнути вбудовані затвердження, коли визначено затверджувачів.
|
||||
Slack автоматично вмикає власні схвалення exec, коли `enabled` не задано або має значення `"auto"` і визначено принаймні одного
|
||||
схвалювача. Установіть `enabled: false`, щоб явно вимкнути Slack як власний клієнт схвалень.
|
||||
Установіть `enabled: true`, щоб примусово ввімкнути власні схвалення, коли схвалювачів визначено.
|
||||
|
||||
Стандартна поведінка без явної конфігурації затвердження exec у Slack:
|
||||
Поведінка за замовчуванням без явної конфігурації схвалень Slack exec:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -844,8 +849,8 @@ Slack автоматично вмикає вбудовані затвердже
|
||||
}
|
||||
```
|
||||
|
||||
Явна конфігурація, вбудована в Slack, потрібна лише тоді, коли потрібно перевизначити затверджувачів, додати фільтри або
|
||||
ввімкнути доставку в чат походження:
|
||||
Явна власна конфігурація Slack потрібна лише тоді, коли потрібно перевизначити схвалювачів, додати фільтри або
|
||||
ввімкнути доставлення до початкового чату:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -861,25 +866,25 @@ Slack автоматично вмикає вбудовані затвердже
|
||||
}
|
||||
```
|
||||
|
||||
Спільне пересилання `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на затвердження exec також мають
|
||||
маршрутизуватися до інших чатів або явних позасмугових цілей. Спільне пересилання `approvals.plugin` також
|
||||
окреме; вбудовані кнопки Slack усе ще можуть вирішувати затвердження Plugin, коли ці запити вже надходять
|
||||
Спільне пересилання `approvals.exec` є окремим. Використовуйте його лише тоді, коли запити на схвалення exec також мають
|
||||
спрямовуватися в інші чати або явні позаканальні цілі. Спільне пересилання `approvals.plugin` також
|
||||
є окремим; власні кнопки Slack усе ще можуть обробляти схвалення Plugin, коли ці запити вже надходять
|
||||
у Slack.
|
||||
|
||||
`/approve` у тому самому чаті також працює в каналах Slack і приватних повідомленнях, які вже підтримують команди. Див. [Затвердження exec](/uk/tools/exec-approvals) для повної моделі пересилання затверджень.
|
||||
Команда `/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Схвалення exec](/uk/tools/exec-approvals) для повної моделі пересилання схвалень.
|
||||
|
||||
## Події та операційна поведінка
|
||||
|
||||
- Редагування/видалення повідомлень відображаються в системні події.
|
||||
- Трансляції тредів (відповіді в треді з "Also send to channel") обробляються як звичайні повідомлення користувача.
|
||||
- Події додавання/видалення реакцій відображаються в системні події.
|
||||
- Події приєднання/виходу учасників, створення/перейменування каналу та додавання/видалення закріплень відображаються в системні події.
|
||||
- Редагування/видалення повідомлень зіставляються із системними подіями.
|
||||
- Трансляції гілок (відповіді в гілках із "Also send to channel") обробляються як звичайні повідомлення користувача.
|
||||
- Події додавання/видалення реакцій зіставляються із системними подіями.
|
||||
- Події входу/виходу учасника, створення/перейменування каналу та додавання/видалення закріплення зіставляються із системними подіями.
|
||||
- `channel_id_changed` може мігрувати ключі конфігурації каналу, коли ввімкнено `configWrites`.
|
||||
- Метадані теми/призначення каналу обробляються як ненадійний контекст і можуть бути інжектовані в контекст маршрутизації.
|
||||
- Початкове повідомлення треду та початкове наповнення контексту історії треду фільтруються за налаштованими allowlist-ами відправників, коли застосовно.
|
||||
- Дії блоків і модальні взаємодії випускають структуровані системні події `Slack interaction: ...` з насиченими полями корисного навантаження:
|
||||
- дії блоків: вибрані значення, мітки, значення пікерів і метадані `workflow_*`
|
||||
- події модальних `view_submission` і `view_closed` з маршрутизованими метаданими каналу та введеннями форми
|
||||
- Метадані теми/призначення каналу вважаються ненадійним контекстом і можуть бути впроваджені в контекст маршрутизації.
|
||||
- Початкове повідомлення гілки та початкове заповнення контексту історії гілки фільтруються за налаштованими списками дозволених відправників, коли це застосовно.
|
||||
- Дії блоків і модальні взаємодії генерують структуровані системні події `Slack interaction: ...` із розширеними полями корисного навантаження:
|
||||
- дії блоків: вибрані значення, мітки, значення вибирачів і метадані `workflow_*`
|
||||
- події модального вікна `view_submission` і `view_closed` з метаданими маршрутизованого каналу та введенням форм
|
||||
|
||||
## Довідник конфігурації
|
||||
|
||||
@ -888,11 +893,11 @@ Slack автоматично вмикає вбудовані затвердже
|
||||
<Accordion title="Високосигнальні поля Slack">
|
||||
|
||||
- режим/автентифікація: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
|
||||
- доступ до приватних повідомлень: `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`
|
||||
- доступ до DM: `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`
|
||||
|
||||
</Accordion>
|
||||
@ -901,12 +906,12 @@ Slack автоматично вмикає вбудовані затвердже
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Немає відповідей у каналах">
|
||||
Перевірте по черзі:
|
||||
Перевірте в такому порядку:
|
||||
|
||||
- `groupPolicy`
|
||||
- allowlist каналів (`channels.slack.channels`) — **ключі мають бути ідентифікаторами каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв тихо не спрацьовують із `groupPolicy: "allowlist"`, оскільки маршрутизація каналів за замовчуванням спершу використовує ідентифікатор. Щоб знайти ідентифікатор: клацніть канал у Slack правою кнопкою → **Copy link** — значення `C...` наприкінці URL-адреси є ідентифікатором каналу.
|
||||
- список дозволених каналів (`channels.slack.channels`) — **ключі мають бути ідентифікаторами каналів** (`C12345678`), а не назвами (`#channel-name`). Ключі на основі назв тихо не спрацьовують із `groupPolicy: "allowlist"`, тому що маршрутизація каналів за замовчуванням насамперед використовує ідентифікатор. Щоб знайти ідентифікатор: клацніть канал у Slack правою кнопкою миші → **Copy link** — значення `C...` наприкінці URL є ідентифікатором каналу.
|
||||
- `requireMention`
|
||||
- allowlist `users` для окремого каналу
|
||||
- список дозволених `users` для окремого каналу
|
||||
|
||||
Корисні команди:
|
||||
|
||||
@ -923,10 +928,10 @@ openclaw doctor
|
||||
|
||||
- `channels.slack.dm.enabled`
|
||||
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
|
||||
- затвердження зв'язування / записи allowlist
|
||||
- схвалення сполучення / записи списку дозволених
|
||||
- події DM Slack Assistant: докладні журнали зі згадкою `drop message_changed`
|
||||
зазвичай означають, що Slack надіслав подію відредагованого треду Assistant без
|
||||
відновлюваного людського відправника в метаданих повідомлення
|
||||
зазвичай означають, що Slack надіслав подію відредагованої гілки Assistant без
|
||||
відновлюваного відправника-людини в метаданих повідомлення
|
||||
|
||||
```bash
|
||||
openclaw pairing list slack
|
||||
@ -935,71 +940,71 @@ openclaw pairing list slack
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Socket mode не підключається">
|
||||
Перевірте токени bot + app і ввімкнення Socket Mode у налаштуваннях застосунку Slack.
|
||||
Перевірте токени бота й застосунку та ввімкнення Socket Mode у налаштуваннях застосунку Slack.
|
||||
|
||||
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
|
||||
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
|
||||
налаштовано, але поточне середовище виконання не змогло визначити значення,
|
||||
підкріплене SecretRef.
|
||||
підтримане SecretRef.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="HTTP mode не отримує події">
|
||||
Перевірте:
|
||||
|
||||
- signing secret
|
||||
- секрет підписування
|
||||
- шлях Webhook
|
||||
- URL-адреси запитів Slack (події + інтерактивність + slash-команди)
|
||||
- унікальний `webhookPath` для кожного HTTP-облікового запису
|
||||
- URL запитів Slack (події + інтерактивність + Slash Commands)
|
||||
- унікальний `webhookPath` для кожного облікового запису HTTP
|
||||
|
||||
Якщо `signingSecretStatus: "configured_unavailable"` з'являється в знімках
|
||||
облікових записів, HTTP-обліковий запис налаштовано, але поточне середовище виконання не змогло
|
||||
визначити signing secret, підкріплений SecretRef.
|
||||
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
|
||||
облікового запису, обліковий запис HTTP налаштовано, але поточне середовище
|
||||
виконання не змогло визначити секрет підписування, підтриманий SecretRef.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Вбудовані/slash-команди не запускаються">
|
||||
Перевірте, що саме ви мали на увазі:
|
||||
<Accordion title="Власні/slash-команди не спрацьовують">
|
||||
Перевірте, що саме ви планували:
|
||||
|
||||
- режим вбудованих команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
|
||||
- режим власних команд (`channels.slack.commands.native: true`) із відповідними slash-командами, зареєстрованими в Slack
|
||||
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
|
||||
|
||||
Також перевірте `commands.useAccessGroups` і allowlist-и каналів/користувачів.
|
||||
Також перевірте `commands.useAccessGroups` і списки дозволених каналів/користувачів.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Довідник vision для вкладень
|
||||
## Довідник зору для вкладень
|
||||
|
||||
Slack може прикріплювати завантажені медіа до ходу агента, коли завантаження файлів Slack успішне й обмеження розміру це дозволяють. Файли зображень можуть передаватися через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою vision; інші файли зберігаються як контекст файлів, доступних для завантаження, а не розглядаються як вхідні зображення.
|
||||
Slack може додавати завантажені медіа до ходу агента, коли завантаження файлів Slack успішне й обмеження розміру це дозволяють. Файли зображень можна передавати через шлях розуміння медіа або безпосередньо до моделі відповіді з підтримкою зору; інші файли зберігаються як контекст завантажуваного файлу, а не обробляються як вхідне зображення.
|
||||
|
||||
### Підтримувані типи медіа
|
||||
|
||||
| Тип медіа | Джерело | Поточна поведінка | Примітки |
|
||||
| ------------------------------ | -------------------- | --------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
||||
| Зображення JPEG / PNG / GIF / WebP | URL файла Slack | Завантажуються й додаються до ходу для обробки з підтримкою бачення | Ліміт на файл: `channels.slack.mediaMaxMb` (типово 20 МБ) |
|
||||
| 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 на вхід для аналізу зображень автоматично |
|
||||
| Інші файли | URL файлу Slack | Завантажуються, коли це можливо, і надаються як файловий контекст | Бінарні файли не розглядаються як вхідні зображення |
|
||||
| Відповіді в треді | Файли початкового повідомлення треду | Файли кореневого повідомлення можуть бути підвантажені як контекст, коли відповідь не має власних медіа | Для початкових повідомлень лише з файлами використовується заповнювач вкладення |
|
||||
| Повідомлення з кількома зображеннями | Кілька файлів Slack | Кожен файл оцінюється незалежно | Обробка Slack обмежена вісьмома файлами на повідомлення |
|
||||
|
||||
### Вхідний конвеєр
|
||||
|
||||
Коли надходить повідомлення Slack із файловими вкладеннями:
|
||||
|
||||
1. OpenClaw завантажує файл із приватного URL Slack за допомогою токена бота (`xoxb-...`).
|
||||
2. Після успішного завантаження файл записується до сховища медіа.
|
||||
3. Шляхи завантажених медіа та типи вмісту додаються до вхідного контексту.
|
||||
1. OpenClaw завантажує файл із приватної URL-адреси Slack за допомогою токена бота (`xoxb-...`).
|
||||
2. У разі успіху файл записується до сховища медіа.
|
||||
3. Завантажені шляхи медіа та типи вмісту додаються до вхідного контексту.
|
||||
4. Шляхи моделей/інструментів із підтримкою зображень можуть використовувати вкладення зображень із цього контексту.
|
||||
5. Файли, що не є зображеннями, залишаються доступними як файлові метадані або посилання на медіа для інструментів, які можуть їх обробляти.
|
||||
|
||||
### Успадкування вкладень кореня треду
|
||||
|
||||
Коли повідомлення надходить у треді (має батьківський `thread_ts`):
|
||||
Коли повідомлення надходить у тред (має батьківський `thread_ts`):
|
||||
|
||||
- Якщо сама відповідь не має прямих медіа, а включене кореневе повідомлення має файли, Slack може додати кореневі файли як контекст початкового повідомлення треду.
|
||||
- Прямі вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
|
||||
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється заповнювачем вкладення, щоб резервний шлях усе одно міг включити його файли.
|
||||
- Якщо сама відповідь не має безпосередніх медіа, а включене кореневе повідомлення має файли, Slack може підвантажити кореневі файли як контекст початкового повідомлення треду.
|
||||
- Безпосередні вкладення відповіді мають пріоритет над вкладеннями кореневого повідомлення.
|
||||
- Кореневе повідомлення, яке має лише файли й не має тексту, представляється із заповнювачем вкладення, щоб резервний шлях усе одно міг включити його файли.
|
||||
|
||||
### Обробка кількох вкладень
|
||||
|
||||
@ -1012,25 +1017,25 @@ Slack може прикріплювати завантажені медіа до
|
||||
|
||||
### Обмеження розміру, завантаження та моделей
|
||||
|
||||
- **Обмеження розміру**: типово 20 МБ на файл. Налаштовується через `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 МБ типово) | Пропускаються відповідно до обмеження розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
|
||||
| Переслані/поширені вкладення | Текст і медіа зображень/файлів, розміщені в Slack, обробляються за принципом найкращих зусиль | Повторно поширте безпосередньо в треді OpenClaw |
|
||||
| PDF-вкладення | Зберігаються як файловий/медійний контекст, не маршрутизуються автоматично через бачення зображень | Використовуйте `download-file` для файлових метаданих або інструмент `pdf` для аналізу PDF |
|
||||
| Сценарій | Поточна поведінка | Обхідний шлях |
|
||||
| -------------------------------------- | -------------------------------------------------------------------------- | -------------------------------------------------------------------------- |
|
||||
| Прострочена URL-адреса файлу Slack | Файл пропускається; помилка не показується | Повторно завантажте файл у Slack |
|
||||
| Модель для зображень не налаштована | Вкладення зображень зберігаються як посилання на медіа, але не аналізуються як зображення | Налаштуйте `agents.defaults.imageModel` або використовуйте модель відповіді з підтримкою зображень |
|
||||
| Дуже великі зображення (> 20 MB за замовчуванням) | Пропускаються відповідно до ліміту розміру | Збільште `channels.slack.mediaMaxMb`, якщо Slack дозволяє |
|
||||
| Переслані/поширені вкладення | Текст і медіа зображень/файлів, розміщені в Slack, обробляються за принципом найкращої спроби | Повторно поділіться безпосередньо в треді 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)
|
||||
|
||||
@ -1038,13 +1043,13 @@ Slack може прикріплювати завантажені медіа до
|
||||
|
||||
<CardGroup cols={2}>
|
||||
<Card title="Pairing" icon="link" href="/uk/channels/pairing">
|
||||
Зв’яжіть користувача Slack із gateway.
|
||||
Зв’яжіть користувача Slack із Gateway.
|
||||
</Card>
|
||||
<Card title="Groups" icon="users" href="/uk/channels/groups">
|
||||
Поведінка каналів і групових приватних повідомлень.
|
||||
Поведінка каналів і групових DM.
|
||||
</Card>
|
||||
<Card title="Channel routing" icon="route" href="/uk/channels/channel-routing">
|
||||
Маршрутизуйте вхідні повідомлення до агентів.
|
||||
Спрямовуйте вхідні повідомлення агентам.
|
||||
</Card>
|
||||
<Card title="Security" icon="shield" href="/uk/gateway/security">
|
||||
Модель загроз і посилення захисту.
|
||||
|
||||
@ -1,25 +1,25 @@
|
||||
---
|
||||
read_when:
|
||||
- Ви хочете поставити швидке побічне запитання про поточну сесію
|
||||
- Ви хочете швидко поставити додаткове запитання про поточний сеанс
|
||||
- Ви реалізуєте або налагоджуєте поведінку BTW у різних клієнтах
|
||||
summary: Побіжні запитання з /btw
|
||||
title: Побіжні запитання BTW
|
||||
summary: Тимчасові побічні запитання з /btw
|
||||
title: До речі, додаткові запитання
|
||||
x-i18n:
|
||||
generated_at: "2026-04-23T21:13:40Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-05-03T17:33:05Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 4e8b74f82356a1ecc38b2a2104b3c4616ef4530d2ce804910b24666c4932169e
|
||||
source_hash: f09ee066c02d31c9fbd66de1922f7a03fe2b48f1ba2c969c65551376e92c80d4
|
||||
source_path: tools/btw.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
`/btw` дає змогу поставити швидке побічне запитання про **поточну сесію** без
|
||||
перетворення цього запитання на звичайну історію розмови.
|
||||
`/btw` дає змогу поставити швидке побічне запитання про **поточний сеанс**, не
|
||||
перетворюючи це запитання на звичайну історію розмови. `/side` є псевдонімом.
|
||||
|
||||
Цю функцію змодельовано за зразком поведінки `/btw` у Claude Code, але адаптовано до
|
||||
Gateway OpenClaw і багатоканальної архітектури.
|
||||
Його змодельовано за поведінкою `/btw` у Claude Code, але адаптовано до Gateway
|
||||
OpenClaw і багатоканальної архітектури.
|
||||
|
||||
## Що це робить
|
||||
## Що він робить
|
||||
|
||||
Коли ви надсилаєте:
|
||||
|
||||
@ -29,117 +29,121 @@ Gateway OpenClaw і багатоканальної архітектури.
|
||||
|
||||
OpenClaw:
|
||||
|
||||
1. робить snapshot поточного контексту сесії,
|
||||
2. запускає окремий **безінструментальний** виклик моделі,
|
||||
1. створює знімок контексту поточного сеансу,
|
||||
2. виконує окремий виклик моделі **без інструментів**,
|
||||
3. відповідає лише на побічне запитання,
|
||||
4. не змінює основний запуск,
|
||||
5. **не** записує запитання або відповідь BTW в історію сесії,
|
||||
6. надсилає відповідь як **живий побічний результат**, а не як звичайне повідомлення assistant.
|
||||
4. не втручається в основний запуск,
|
||||
5. **не** записує запитання чи відповідь BTW в історію сеансу,
|
||||
6. видає відповідь як **живий побічний результат**, а не як звичайне повідомлення асистента.
|
||||
|
||||
Важлива ментальна модель:
|
||||
Важлива ментальна модель така:
|
||||
|
||||
- той самий контекст сесії
|
||||
- той самий контекст сеансу
|
||||
- окремий одноразовий побічний запит
|
||||
- без викликів інструментів
|
||||
- без забруднення майбутнього контексту
|
||||
- без збереження transcript
|
||||
- без збереження транскрипту
|
||||
|
||||
## Чого це не робить
|
||||
## Чого він не робить
|
||||
|
||||
`/btw` **не**:
|
||||
|
||||
- створює нову довготривалу сесію,
|
||||
- створює новий довговічний сеанс,
|
||||
- продовжує незавершене основне завдання,
|
||||
- запускає інструменти або цикли інструментів агента,
|
||||
- записує дані запитання/відповіді BTW в історію transcript,
|
||||
- з’являється в `chat.history`,
|
||||
- записує дані запитання/відповіді BTW в історію транскрипту,
|
||||
- з'являється в `chat.history`,
|
||||
- переживає перезавантаження.
|
||||
|
||||
Це навмисно **епемерна** функція.
|
||||
Він навмисно **ефемерний**.
|
||||
|
||||
## Як працює контекст
|
||||
|
||||
BTW використовує поточну сесію **лише як фоновий контекст**.
|
||||
BTW використовує поточний сеанс лише як **фоновий контекст**.
|
||||
|
||||
Якщо основний запуск зараз активний, OpenClaw робить snapshot поточного стану
|
||||
повідомлень і включає незавершений основний prompt як фоновий контекст, водночас
|
||||
явно повідомляючи моделі:
|
||||
Якщо основний запуск наразі активний, OpenClaw створює знімок поточного стану
|
||||
повідомлень і включає основний запит, що виконується, як фоновий контекст,
|
||||
одночасно явно вказуючи моделі:
|
||||
|
||||
- відповідати лише на побічне запитання,
|
||||
- не відновлювати й не завершувати незавершене основне завдання,
|
||||
- не надсилати виклики інструментів або псевдовиклики інструментів.
|
||||
- не видавати виклики інструментів або псевдовиклики інструментів.
|
||||
|
||||
Це зберігає ізоляцію BTW від основного запуску, водночас даючи йому розуміння
|
||||
того, про що ця сесія.
|
||||
Це ізолює BTW від основного запуску, але водночас залишає його обізнаним про те,
|
||||
чого стосується сеанс.
|
||||
|
||||
## Модель доставки
|
||||
|
||||
BTW **не** доставляється як звичайне transcript-повідомлення assistant.
|
||||
BTW **не** доставляється як звичайне повідомлення асистента в транскрипті.
|
||||
|
||||
На рівні протоколу Gateway:
|
||||
|
||||
- звичайний assistant chat використовує подію `chat`
|
||||
- звичайний чат асистента використовує подію `chat`
|
||||
- BTW використовує подію `chat.side_result`
|
||||
|
||||
Це розділення навмисне. Якби BTW повторно використовував звичайний шлях подій `chat`,
|
||||
клієнти трактували б його як звичайну історію розмови.
|
||||
Це розділення навмисне. Якби BTW повторно використовував звичайний шлях події
|
||||
`chat`, клієнти сприймали б його як звичайну історію розмови.
|
||||
|
||||
Оскільки BTW використовує окрему live-подію і не відтворюється з
|
||||
`chat.history`, після перезавантаження він зникає.
|
||||
Оскільки BTW використовує окрему живу подію й не відтворюється з
|
||||
`chat.history`, він зникає після перезавантаження.
|
||||
|
||||
## Поведінка на поверхнях
|
||||
|
||||
### TUI
|
||||
|
||||
У TUI BTW рендериться в поточному поданні сесії inline, але залишається
|
||||
епемерним:
|
||||
У TUI BTW відображається вбудовано в поточному поданні сеансу, але залишається
|
||||
ефемерним:
|
||||
|
||||
- візуально відрізняється від звичайної відповіді assistant
|
||||
- можна закрити клавішами `Enter` або `Esc`
|
||||
- візуально відрізняється від звичайної відповіді асистента
|
||||
- його можна закрити за допомогою `Enter` або `Esc`
|
||||
- не відтворюється після перезавантаження
|
||||
|
||||
### Зовнішні канали
|
||||
|
||||
У таких каналах, як Telegram, WhatsApp і Discord, BTW доставляється як
|
||||
чітко позначена одноразова відповідь, оскільки ці поверхні не мають локальної
|
||||
концепції епемерного накладання.
|
||||
У таких каналах, як Telegram, WhatsApp і Discord, BTW доставляється як чітко
|
||||
позначена одноразова відповідь, оскільки ці поверхні не мають концепції
|
||||
локального ефемерного накладання.
|
||||
|
||||
Відповідь усе одно розглядається як побічний результат, а не як звичайна історія сесії.
|
||||
Відповідь усе одно розглядається як побічний результат, а не як звичайна історія
|
||||
сеансу.
|
||||
|
||||
### Control UI / web
|
||||
### Control UI / веб
|
||||
|
||||
Gateway правильно надсилає BTW як `chat.side_result`, і BTW не включається
|
||||
в `chat.history`, тож контракт збереження для web уже правильний.
|
||||
Gateway коректно видає BTW як `chat.side_result`, а BTW не включається до
|
||||
`chat.history`, тому контракт збереження вже коректний для вебу.
|
||||
|
||||
Поточний Control UI все ще потребує окремого споживача `chat.side_result`, щоб
|
||||
рендерити BTW у браузері в live-режимі. Поки ця підтримка на стороні клієнта не з’явиться, BTW є функцією рівня Gateway з повною поведінкою в TUI та зовнішніх каналах, але ще не має повноцінного UX у браузері.
|
||||
відображати BTW наживо в браузері. Поки ця клієнтська підтримка не з'явиться,
|
||||
BTW є функцією рівня Gateway з повною поведінкою в TUI та зовнішніх каналах, але
|
||||
ще не повноцінним браузерним UX.
|
||||
|
||||
## Коли використовувати BTW
|
||||
|
||||
Використовуйте `/btw`, коли вам потрібні:
|
||||
|
||||
- швидке уточнення щодо поточної роботи,
|
||||
- фактична побічна відповідь, поки довгий запуск усе ще триває,
|
||||
- тимчасова відповідь, яка не повинна ставати частиною майбутнього контексту сесії.
|
||||
- фактична побічна відповідь, поки тривалий запуск усе ще триває,
|
||||
- тимчасова відповідь, яка не має ставати частиною майбутнього контексту сеансу.
|
||||
|
||||
Приклади:
|
||||
|
||||
```text
|
||||
/btw what file are we editing?
|
||||
/side what changed while the main run continued?
|
||||
/btw what does this error mean?
|
||||
/btw summarize the current task in one sentence
|
||||
/btw what is 17 * 19?
|
||||
```
|
||||
|
||||
## Коли не варто використовувати BTW
|
||||
## Коли не використовувати BTW
|
||||
|
||||
Не використовуйте `/btw`, якщо ви хочете, щоб відповідь стала частиною
|
||||
майбутнього робочого контексту сесії.
|
||||
Не використовуйте `/btw`, якщо хочете, щоб відповідь стала частиною майбутнього
|
||||
робочого контексту сеансу.
|
||||
|
||||
У такому разі ставте запитання звичайним способом у main session замість BTW.
|
||||
У такому разі поставте запитання звичайно в основному сеансі замість використання BTW.
|
||||
|
||||
## Пов’язане
|
||||
## Пов'язане
|
||||
|
||||
- [Slash commands](/uk/tools/slash-commands)
|
||||
- [Thinking Levels](/uk/tools/thinking)
|
||||
- [Session](/uk/concepts/session)
|
||||
- [Слеш-команди](/uk/tools/slash-commands)
|
||||
- [Рівні мислення](/uk/tools/thinking)
|
||||
- [Сеанс](/uk/concepts/session)
|
||||
|
||||
@ -1,29 +1,29 @@
|
||||
---
|
||||
read_when:
|
||||
- Користувач повідомляє, що агенти застрягають, повторюючи виклики tools
|
||||
- Вам потрібно налаштувати захист від повторюваних викликів
|
||||
- Ви редагуєте політики tools/runtime агента
|
||||
summary: Як увімкнути та налаштувати guardrails, які виявляють повторювані цикли викликів tools
|
||||
title: Виявлення циклів tools
|
||||
- Користувач повідомляє, що агенти застрягають, повторюючи виклики інструментів
|
||||
- Потрібно налаштувати захист від повторюваних викликів
|
||||
- Ви редагуєте політики інструментів/середовища виконання агента
|
||||
summary: Як увімкнути й налаштувати захисні механізми, які виявляють повторювані цикли викликів інструментів
|
||||
title: Виявлення зациклення інструментів
|
||||
x-i18n:
|
||||
generated_at: "2026-04-27T12:55:35Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-05-03T17:33:12Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: ba601384e7d23ddfd316f9e5eef92b3daa4618d2287228a516c76fe141700a28
|
||||
source_hash: 1b3976948d5735cf08b7ce854bab048a77a778a07a9f3f66d17c15aed0d42a97
|
||||
source_path: tools/loop-detection.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw може не давати агентам застрягати в повторюваних шаблонах викликів tools.
|
||||
Цей guard **за замовчуванням вимкнений**.
|
||||
OpenClaw може запобігати застряганню агентів у повторюваних шаблонах викликів інструментів.
|
||||
Захист **вимкнено за замовчуванням**.
|
||||
|
||||
Увімкніть його лише там, де це потрібно, оскільки за суворих налаштувань він може блокувати легітимні повторні виклики.
|
||||
|
||||
## Навіщо це існує
|
||||
## Навіщо це потрібно
|
||||
|
||||
- Виявляти повторювані послідовності, які не дають поступу.
|
||||
- Виявляти високочастотні цикли без результату (той самий tool, ті самі вхідні дані, повторювані помилки).
|
||||
- Виявляти конкретні шаблони повторних викликів для відомих polling tools.
|
||||
- Виявляти повторювані послідовності, які не дають прогресу.
|
||||
- Виявляти високочастотні цикли без результатів (той самий інструмент, ті самі вхідні дані, повторювані помилки).
|
||||
- Виявляти конкретні шаблони повторних викликів для відомих інструментів опитування.
|
||||
|
||||
## Блок конфігурації
|
||||
|
||||
@ -72,43 +72,43 @@ OpenClaw може не давати агентам застрягати в по
|
||||
### Поведінка полів
|
||||
|
||||
- `enabled`: Головний перемикач. `false` означає, що виявлення циклів не виконується.
|
||||
- `historySize`: кількість нещодавніх викликів tools, що зберігаються для аналізу.
|
||||
- `warningThreshold`: поріг перед класифікацією шаблону лише як попередження.
|
||||
- `criticalThreshold`: поріг для блокування повторюваних шаблонів циклів.
|
||||
- `globalCircuitBreakerThreshold`: глобальний поріг аварійного вимикача для циклів без поступу.
|
||||
- `detectors.genericRepeat`: виявляє повторювані шаблони той самий tool + ті самі params.
|
||||
- `detectors.knownPollNoProgress`: виявляє відомі шаблони, схожі на polling, без зміни стану.
|
||||
- `detectors.pingPong`: виявляє чергувальні шаблони ping-pong.
|
||||
- `historySize`: кількість нещодавніх викликів інструментів, які зберігаються для аналізу.
|
||||
- `warningThreshold`: поріг перед класифікацією шаблону як лише попереджувального.
|
||||
- `criticalThreshold`: поріг для блокування повторюваних циклічних шаблонів.
|
||||
- `globalCircuitBreakerThreshold`: глобальний поріг переривника для випадків без прогресу.
|
||||
- `detectors.genericRepeat`: виявляє повторювані шаблони з тим самим інструментом і тими самими параметрами.
|
||||
- `detectors.knownPollNoProgress`: виявляє відомі шаблони, подібні до опитування, без зміни стану.
|
||||
- `detectors.pingPong`: виявляє почергові шаблони ping-pong.
|
||||
|
||||
Для `exec` перевірки відсутності поступу порівнюють стабільні результати команд і ігнорують змінні метадані runtime, такі як тривалість, PID, ID сесії та робочий каталог.
|
||||
Коли доступний id запуску, історія нещодавніх викликів tools оцінюється лише в межах цього запуску, щоб заплановані цикли Heartbeat і нові запуски не успадковували застарілі лічильники циклів із попередніх запусків.
|
||||
Для `exec` перевірки відсутності прогресу порівнюють стабільні результати команд і ігнорують мінливі метадані виконання, як-от тривалість, PID, ідентифікатор сеансу та робочий каталог.
|
||||
Коли доступний ідентифікатор запуску, історія нещодавніх викликів інструментів оцінюється лише в межах цього запуску, тож заплановані цикли Heartbeat і нові запуски не успадковують застарілі лічильники циклів із попередніх запусків.
|
||||
|
||||
## Рекомендоване налаштування
|
||||
|
||||
- Починайте з `enabled: true`, не змінюючи значення за замовчуванням.
|
||||
- Зберігайте порядок порогів як `warningThreshold < criticalThreshold < globalCircuitBreakerThreshold`.
|
||||
- Для менших моделей почніть з `enabled: true`, не змінюючи значення за замовчуванням. Флагманські моделі рідко потребують виявлення циклів і можуть залишати його вимкненим.
|
||||
- Тримайте пороги впорядкованими як `warningThreshold < criticalThreshold < globalCircuitBreakerThreshold`.
|
||||
- Якщо виникають хибні спрацьовування:
|
||||
- підвищте `warningThreshold` і/або `criticalThreshold`
|
||||
- підвищте `warningThreshold` та/або `criticalThreshold`
|
||||
- (необов’язково) підвищте `globalCircuitBreakerThreshold`
|
||||
- вимкніть лише той detector, який спричиняє проблеми
|
||||
- зменште `historySize`, щоб зробити історичний контекст менш суворим
|
||||
- вимкніть лише той детектор, який спричиняє проблеми
|
||||
- зменште `historySize` для менш суворого історичного контексту
|
||||
|
||||
## Журнали та очікувана поведінка
|
||||
|
||||
Коли виявляється цикл, OpenClaw повідомляє про подію циклу та блокує або приглушує наступний цикл tools залежно від серйозності.
|
||||
Це захищає користувачів від неконтрольованих витрат токенів і зависань, зберігаючи нормальний доступ до tools.
|
||||
Коли виявлено цикл, OpenClaw повідомляє про подію циклу та блокує або послаблює наступний цикл інструментів залежно від серйозності.
|
||||
Це захищає користувачів від неконтрольованих витрат токенів і зависань, зберігаючи нормальний доступ до інструментів.
|
||||
|
||||
- Надавайте перевагу попередженню та тимчасовому приглушенню.
|
||||
- Підвищуйте рівень лише тоді, коли накопичуються повторні докази.
|
||||
- Спочатку віддавайте перевагу попередженню та тимчасовому приглушенню.
|
||||
- Підвищуйте серйозність лише тоді, коли накопичуються повторні докази.
|
||||
|
||||
## Примітки
|
||||
|
||||
- `tools.loopDetection` об’єднується з перевизначеннями на рівні агента.
|
||||
- Конфігурація для окремого агента повністю перевизначає або розширює глобальні значення.
|
||||
- Якщо конфігурація відсутня, guardrails залишаються вимкненими.
|
||||
- Якщо конфігурації немає, захисні механізми залишаються вимкненими.
|
||||
|
||||
## Пов’язані теми
|
||||
## Пов’язане
|
||||
|
||||
- [Exec approvals](/uk/tools/exec-approvals)
|
||||
- [Рівні thinking](/uk/tools/thinking)
|
||||
- [Затвердження Exec](/uk/tools/exec-approvals)
|
||||
- [Рівні мислення](/uk/tools/thinking)
|
||||
- [Субагенти](/uk/tools/subagents)
|
||||
|
||||
@ -1,47 +1,47 @@
|
||||
---
|
||||
read_when:
|
||||
- Використання або налаштування чат-команд
|
||||
- Налагодження маршрутизації команд або дозволів
|
||||
- Налагодження маршрутизації команд або прав доступу
|
||||
sidebarTitle: Slash commands
|
||||
summary: 'Слеш-команди: текстові й нативні, конфігурація та підтримувані команди'
|
||||
title: Слеш-команди
|
||||
title: Команди зі скісною рискою
|
||||
x-i18n:
|
||||
generated_at: "2026-05-02T13:23:26Z"
|
||||
generated_at: "2026-05-03T17:33:07Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: c2829a33601eb53a63b914ad1a6c3bf51be4298fe3bd34faf6475f60a2d491d2
|
||||
source_hash: 02b7c1f3daa9598515085fd94570172f82779ce61a2af34edac02a36ccc87543
|
||||
source_path: tools/slash-commands.md
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
Commands are handled by the Gateway. Most commands must be sent as a **standalone** message that starts with `/`. The host-only bash chat command uses `! <cmd>` (with `/bash <cmd>` as an alias).
|
||||
Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. Команда bash-чату лише для хоста використовує `! <cmd>` (з `/bash <cmd>` як псевдонімом).
|
||||
|
||||
When a conversation or thread is bound to an ACP session, normal follow-up text routes to that ACP harness. Gateway management commands still stay local: `/acp ...` always reaches the OpenClaw ACP command handler, and `/status` plus `/unfocus` stay local whenever command handling is enabled for the surface.
|
||||
Коли розмова або thread прив’язана до сеансу ACP, звичайний подальший текст спрямовується до цього ACP harness. Команди керування Gateway все одно залишаються локальними: `/acp ...` завжди потрапляє до обробника команд OpenClaw ACP, а `/status` плюс `/unfocus` залишаються локальними щоразу, коли обробку команд увімкнено для цієї поверхні.
|
||||
|
||||
There are two related systems:
|
||||
Існують дві пов’язані системи:
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Commands">
|
||||
Standalone `/...` messages.
|
||||
Окремі повідомлення `/...`.
|
||||
</Accordion>
|
||||
<Accordion title="Directives">
|
||||
`/think`, `/fast`, `/verbose`, `/trace`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
|
||||
|
||||
- Directives are stripped from the message before the model sees it.
|
||||
- In normal chat messages (not directive-only), they are treated as "inline hints" and do **not** persist session settings.
|
||||
- In directive-only messages (the message contains only directives), they persist to the session and reply with an acknowledgement.
|
||||
- Directives are only applied for **authorized senders**. If `commands.allowFrom` is set, it is the only allowlist used; otherwise authorization comes from channel allowlists/pairing plus `commands.useAccessGroups`. Unauthorized senders see directives treated as plain text.
|
||||
- Директиви вилучаються з повідомлення до того, як модель його побачить.
|
||||
- У звичайних чат-повідомленнях (не лише з директивами) вони розглядаються як «inline hints» і **не** зберігають налаштування сеансу.
|
||||
- У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сеансі й відповідають підтвердженням.
|
||||
- Директиви застосовуються лише для **авторизованих відправників**. Якщо встановлено `commands.allowFrom`, використовується лише цей allowlist; інакше авторизація береться з allowlists/спарювання каналу плюс `commands.useAccessGroups`. Неавторизовані відправники бачать, що директиви обробляються як звичайний текст.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Inline shortcuts">
|
||||
Allowlisted/authorized senders only: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
Лише allowlisted/авторизовані відправники: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
|
||||
They run immediately, are stripped before the model sees the message, and the remaining text continues through the normal flow.
|
||||
Вони виконуються негайно, вилучаються до того, як модель побачить повідомлення, а решта тексту продовжує проходити звичайним потоком.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Config
|
||||
## Конфігурація
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -69,134 +69,134 @@ There are two related systems:
|
||||
```
|
||||
|
||||
<ParamField path="commands.text" type="boolean" default="true">
|
||||
Enables parsing `/...` in chat messages. On surfaces without native commands (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams), text commands still work even if you set this to `false`.
|
||||
Умикає розбір `/...` у чат-повідомленнях. На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення в `false`.
|
||||
</ParamField>
|
||||
<ParamField path="commands.native" type='boolean | "auto"' default='"auto"'>
|
||||
Registers native commands. Auto: on for Discord/Telegram; off for Slack (until you add slash commands); ignored for providers without native support. Set `channels.discord.commands.native`, `channels.telegram.commands.native`, or `channels.slack.commands.native` to override per provider (bool or `"auto"`). `false` clears previously registered commands on Discord/Telegram at startup. Slack commands are managed in the Slack app and are not removed automatically.
|
||||
Реєструє нативні команди. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте slash commands); ігнорується для провайдерів без нативної підтримки. Встановіть `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native`, щоб перевизначити для окремого провайдера (bool або `"auto"`). `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і не видаляються автоматично.
|
||||
</ParamField>
|
||||
On Discord, native command specs may include `descriptionLocalizations`, which OpenClaw publishes as Discord `description_localizations` and includes in reconcile comparisons.
|
||||
У Discord специфікації нативних команд можуть містити `descriptionLocalizations`, які OpenClaw публікує як Discord `description_localizations` і включає в порівняння узгодження.
|
||||
<ParamField path="commands.nativeSkills" type='boolean | "auto"' default='"auto"'>
|
||||
Registers **skill** commands natively when supported. Auto: on for Discord/Telegram; off for Slack (Slack requires creating a slash command per skill). Set `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills`, or `channels.slack.commands.nativeSkills` to override per provider (bool or `"auto"`).
|
||||
Реєструє команди **skill** нативно, коли це підтримується. Авто: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створення slash command для кожного skill). Встановіть `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills`, щоб перевизначити для окремого провайдера (bool або `"auto"`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.bash" type="boolean" default="false">
|
||||
Enables `! <cmd>` to run host shell commands (`/bash <cmd>` is an alias; requires `tools.elevated` allowlists).
|
||||
Умикає `! <cmd>` для запуску shell-команд хоста (`/bash <cmd>` є псевдонімом; потребує allowlists `tools.elevated`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.bashForegroundMs" type="number" default="2000">
|
||||
Controls how long bash waits before switching to background mode (`0` backgrounds immediately).
|
||||
Керує тим, як довго bash чекає перед перемиканням у фоновий режим (`0` переводить у фон негайно).
|
||||
</ParamField>
|
||||
<ParamField path="commands.config" type="boolean" default="false">
|
||||
Enables `/config` (reads/writes `openclaw.json`).
|
||||
Умикає `/config` (читає/записує `openclaw.json`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.mcp" type="boolean" default="false">
|
||||
Enables `/mcp` (reads/writes OpenClaw-managed MCP config under `mcp.servers`).
|
||||
Умикає `/mcp` (читає/записує керовану OpenClaw конфігурацію MCP у `mcp.servers`).
|
||||
</ParamField>
|
||||
<ParamField path="commands.plugins" type="boolean" default="false">
|
||||
Enables `/plugins` (plugin discovery/status plus install + enable/disable controls).
|
||||
Умикає `/plugins` (виявлення/статус plugins плюс елементи керування встановленням і ввімкненням/вимкненням).
|
||||
</ParamField>
|
||||
<ParamField path="commands.debug" type="boolean" default="false">
|
||||
Enables `/debug` (runtime-only overrides).
|
||||
Умикає `/debug` (лише runtime-перевизначення).
|
||||
</ParamField>
|
||||
<ParamField path="commands.restart" type="boolean" default="true">
|
||||
Enables `/restart` plus gateway restart tool actions.
|
||||
Умикає `/restart` плюс дії інструментів перезапуску gateway.
|
||||
</ParamField>
|
||||
<ParamField path="commands.ownerAllowFrom" type="string[]">
|
||||
Sets the explicit owner allowlist for owner-only command/tool surfaces. This is the human operator account that can approve dangerous actions and run commands such as `/diagnostics`, `/export-trajectory`, and `/config`. It is separate from `commands.allowFrom` and from DM pairing access.
|
||||
Встановлює явний owner allowlist для командних/інструментальних поверхонь лише для owner. Це обліковий запис людського оператора, який може схвалювати небезпечні дії та виконувати команди, як-от `/diagnostics`, `/export-trajectory` і `/config`. Він окремий від `commands.allowFrom` і від доступу через DM-спарювання.
|
||||
</ParamField>
|
||||
<ParamField path="channels.<channel>.commands.enforceOwnerForCommands" type="boolean" default="false">
|
||||
Per-channel: makes owner-only commands require **owner identity** to run on that surface. When `true`, the sender must either match a resolved owner candidate (for example an entry in `commands.ownerAllowFrom` or provider-native owner metadata) or hold internal `operator.admin` scope on an internal message channel. A wildcard entry in channel `allowFrom`, or an empty/unresolved owner-candidate list, is **not** sufficient — owner-only commands fail closed on that channel. Leave this off if you want owner-only commands gated only by `ownerAllowFrom` and the standard command allowlists.
|
||||
Для кожного каналу: змушує команди лише для owner вимагати **ідентичність owner** для запуску на цій поверхні. Коли `true`, відправник має або збігатися з розв’язаним кандидатом owner (наприклад, записом у `commands.ownerAllowFrom` або нативними метаданими owner провайдера), або мати внутрішній scope `operator.admin` у внутрішньому каналі повідомлень. Запис wildcard у channel `allowFrom` або порожній/нерозв’язаний список кандидатів owner **не** є достатнім — команди лише для owner на цьому каналі відмовляють закрито. Залиште це вимкненим, якщо хочете, щоб команди лише для owner обмежувалися тільки `ownerAllowFrom` і стандартними command allowlists.
|
||||
</ParamField>
|
||||
<ParamField path="commands.ownerDisplay" type='"raw" | "hash"'>
|
||||
Controls how owner ids appear in the system prompt.
|
||||
Керує тим, як ids owner відображаються в системному prompt.
|
||||
</ParamField>
|
||||
<ParamField path="commands.ownerDisplaySecret" type="string">
|
||||
Optionally sets the HMAC secret used when `commands.ownerDisplay="hash"`.
|
||||
Необов’язково встановлює HMAC secret, що використовується, коли `commands.ownerDisplay="hash"`.
|
||||
</ParamField>
|
||||
<ParamField path="commands.allowFrom" type="object">
|
||||
Per-provider allowlist for command authorization. When configured, it is the only authorization source for commands and directives (channel allowlists/pairing and `commands.useAccessGroups` are ignored). Use `"*"` for a global default; provider-specific keys override it.
|
||||
Allowlist для авторизації команд за провайдерами. Коли налаштовано, це єдине джерело авторизації для команд і директив (channel allowlists/спарювання та `commands.useAccessGroups` ігноруються). Використовуйте `"*"` для глобального типового значення; ключі окремих провайдерів його перевизначають.
|
||||
</ParamField>
|
||||
<ParamField path="commands.useAccessGroups" type="boolean" default="true">
|
||||
Enforces allowlists/policies for commands when `commands.allowFrom` is not set.
|
||||
Застосовує allowlists/policies для команд, коли `commands.allowFrom` не встановлено.
|
||||
</ParamField>
|
||||
|
||||
## Command list
|
||||
## Список команд
|
||||
|
||||
Current source-of-truth:
|
||||
Поточне джерело істини:
|
||||
|
||||
- core built-ins come from `src/auto-reply/commands-registry.shared.ts`
|
||||
- generated dock commands come from `src/auto-reply/commands-registry.data.ts`
|
||||
- plugin commands come from plugin `registerCommand()` calls
|
||||
- actual availability on your gateway still depends on config flags, channel surface, and installed/enabled plugins
|
||||
- core built-ins беруться з `src/auto-reply/commands-registry.shared.ts`
|
||||
- згенеровані dock commands беруться з `src/auto-reply/commands-registry.data.ts`
|
||||
- команди plugins беруться з викликів plugin `registerCommand()`
|
||||
- фактична доступність на вашому gateway все одно залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених plugins
|
||||
|
||||
### Core built-in commands
|
||||
### Вбудовані команди core
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Sessions and runs">
|
||||
- `/new [model]` starts a new session; `/reset` is the reset alias.
|
||||
- Control UI intercepts typed `/new` to create and switch to a fresh dashboard session; typed `/reset` still runs the Gateway's in-place reset.
|
||||
- `/reset soft [message]` keeps the current transcript, drops reused CLI backend session ids, and reruns startup/system-prompt loading in-place.
|
||||
- `/compact [instructions]` compacts the session context. See [Compaction](/uk/concepts/compaction).
|
||||
- `/stop` aborts the current run.
|
||||
- `/session idle <duration|off>` and `/session max-age <duration|off>` manage thread-binding expiry.
|
||||
- `/export-session [path]` exports the current session to HTML. Alias: `/export`.
|
||||
- `/export-trajectory [path]` asks for exec approval, then exports a JSONL [trajectory bundle](/uk/tools/trajectory) for the current session. Use it when you need the prompt, tool, and transcript timeline for one OpenClaw session. In group chats, the approval prompt and export result go to the owner privately. Alias: `/trajectory`.
|
||||
- `/new [model]` запускає новий сеанс; `/reset` є псевдонімом скидання.
|
||||
- Control UI перехоплює введений `/new`, щоб створити та перемкнутися на свіжий сеанс dashboard; введений `/reset` все одно виконує in-place reset Gateway.
|
||||
- `/reset soft [message]` зберігає поточний transcript, відкидає повторно використані ids сеансів CLI backend і повторно запускає startup/system-prompt loading in-place.
|
||||
- `/compact [instructions]` ущільнює контекст сеансу. Див. [Compaction](/uk/concepts/compaction).
|
||||
- `/stop` перериває поточний запуск.
|
||||
- `/session idle <duration|off>` і `/session max-age <duration|off>` керують строком дії прив’язки thread.
|
||||
- `/export-session [path]` експортує поточний сеанс у HTML. Псевдонім: `/export`.
|
||||
- `/export-trajectory [path]` запитує схвалення exec, а потім експортує JSONL [trajectory bundle](/uk/tools/trajectory) для поточного сеансу. Використовуйте це, коли вам потрібна хронологія prompt, tool і transcript для одного сеансу OpenClaw. У групових чатах prompt схвалення та результат експорту надсилаються owner приватно. Псевдонім: `/trajectory`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Model and run controls">
|
||||
- `/think <level>` sets the thinking level. Options come from the active model's provider profile; common levels are `off`, `minimal`, `low`, `medium`, and `high`, with custom levels such as `xhigh`, `adaptive`, `max`, or binary `on` only where supported. Aliases: `/thinking`, `/t`.
|
||||
- `/verbose on|off|full` toggles verbose output. Alias: `/v`.
|
||||
- `/trace on|off` toggles plugin trace output for the current session.
|
||||
- `/fast [status|on|off]` shows or sets fast mode.
|
||||
- `/reasoning [on|off|stream]` toggles reasoning visibility. Alias: `/reason`.
|
||||
- `/elevated [on|off|ask|full]` toggles elevated mode. Alias: `/elev`.
|
||||
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` shows or sets exec defaults.
|
||||
- `/model [name|#|status]` shows or sets the model.
|
||||
- `/models [provider] [page] [limit=<n>|size=<n>|all]` lists configured/auth-available providers or models for a provider; add `all` to browse that provider's full catalog.
|
||||
- `/queue <mode>` manages queue behavior (`steer`, legacy `queue`, `followup`, `collect`, `steer-backlog`, `interrupt`) plus options like `debounce:0.5s cap:25 drop:summarize`; `/queue default` or `/queue reset` clears the session override. See [Command queue](/uk/concepts/queue) and [Steering queue](/uk/concepts/queue-steering).
|
||||
- `/think <level>` встановлює рівень thinking. Варіанти беруться з профілю провайдера активної моделі; поширені рівні: `off`, `minimal`, `low`, `medium` і `high`, а власні рівні, як-от `xhigh`, `adaptive`, `max`, або двійковий `on`, доступні лише там, де підтримуються. Псевдоніми: `/thinking`, `/t`.
|
||||
- `/verbose on|off|full` перемикає verbose output. Псевдонім: `/v`.
|
||||
- `/trace on|off` перемикає plugin trace output для поточного сеансу.
|
||||
- `/fast [status|on|off]` показує або встановлює fast mode.
|
||||
- `/reasoning [on|off|stream]` перемикає видимість reasoning. Псевдонім: `/reason`.
|
||||
- `/elevated [on|off|ask|full]` перемикає elevated mode. Псевдонім: `/elev`.
|
||||
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` показує або встановлює типові значення exec.
|
||||
- `/model [name|#|status]` показує або встановлює модель.
|
||||
- `/models [provider] [page] [limit=<n>|size=<n>|all]` перелічує налаштованих/доступних за автентифікацією провайдерів або моделі для провайдера; додайте `all`, щоб переглянути повний catalog цього провайдера.
|
||||
- `/queue <mode>` керує поведінкою черги (`steer`, legacy `queue`, `followup`, `collect`, `steer-backlog`, `interrupt`) плюс параметри на кшталт `debounce:0.5s cap:25 drop:summarize`; `/queue default` або `/queue reset` очищає перевизначення сеансу. Див. [Command queue](/uk/concepts/queue) і [Steering queue](/uk/concepts/queue-steering).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Discovery and status">
|
||||
- `/help` shows the short help summary.
|
||||
- `/commands` shows the generated command catalog.
|
||||
- `/tools [compact|verbose]` shows what the current agent can use right now.
|
||||
- `/status` shows execution/runtime status, including `Execution`/`Runtime` labels and provider usage/quota when available.
|
||||
- `/diagnostics [note]` is the owner-only support-report flow for Gateway bugs and Codex harness runs. It asks for explicit exec approval every time before running `openclaw gateway diagnostics export --json`; do not approve diagnostics with an allow-all rule. After approval, it sends a pasteable report with the local bundle path, manifest summary, privacy notes, and relevant session ids. In group chats, the approval prompt and report go to the owner privately. When the active session uses the OpenAI Codex harness, the same approval also sends relevant Codex feedback to OpenAI servers and the completed reply lists the OpenClaw session ids, Codex thread ids, and `codex resume <thread-id>` commands. See [Diagnostics Export](/uk/gateway/diagnostics).
|
||||
- `/crestodian <request>` runs the Crestodian setup and repair helper from an owner DM.
|
||||
- `/tasks` lists active/recent background tasks for the current session.
|
||||
- `/context [list|detail|json]` explains how context is assembled.
|
||||
- `/whoami` shows your sender id. Alias: `/id`.
|
||||
- `/usage off|tokens|full|cost` controls the per-response usage footer or prints a local cost summary.
|
||||
- `/help` показує короткий довідковий підсумок.
|
||||
- `/commands` показує згенерований catalog команд.
|
||||
- `/tools [compact|verbose]` показує, що поточний агент може використовувати просто зараз.
|
||||
- `/status` показує execution/runtime status, включно з мітками `Execution`/`Runtime` і usage/quota провайдера, коли доступно.
|
||||
- `/diagnostics [note]` — це owner-only support-report flow для помилок Gateway і запусків Codex harness. Він щоразу запитує явне схвалення exec перед запуском `openclaw gateway diagnostics export --json`; не схвалюйте diagnostics правилом allow-all. Після схвалення він надсилає звіт, придатний для вставлення, з локальним шляхом bundle, підсумком manifest, privacy notes і релевантними ids сеансів. У групових чатах prompt схвалення та звіт надсилаються owner приватно. Коли активний сеанс використовує OpenAI Codex harness, те саме схвалення також надсилає релевантний Codex feedback на сервери OpenAI, а завершена відповідь перелічує ids сеансів OpenClaw, ids threads Codex і команди `codex resume <thread-id>`. Див. [Diagnostics Export](/uk/gateway/diagnostics).
|
||||
- `/crestodian <request>` запускає helper налаштування та ремонту Crestodian з DM owner.
|
||||
- `/tasks` перелічує активні/нещодавні фонові завдання для поточного сеансу.
|
||||
- `/context [list|detail|json]` пояснює, як збирається контекст.
|
||||
- `/whoami` показує ваш sender id. Псевдонім: `/id`.
|
||||
- `/usage off|tokens|full|cost` керує per-response usage footer або друкує local cost summary.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Skills, allowlists, approvals">
|
||||
- `/skill <name> [input]` runs a skill by name.
|
||||
- `/allowlist [list|add|remove] ...` manages allowlist entries. Text-only.
|
||||
- `/approve <id> <decision>` resolves exec approval prompts.
|
||||
- `/btw <question>` asks a side question without changing future session context. See [BTW](/uk/tools/btw).
|
||||
- `/skill <name> [input]` запускає skill за назвою.
|
||||
- `/allowlist [list|add|remove] ...` керує записами allowlist. Лише текст.
|
||||
- `/approve <id> <decision>` розв’язує prompts схвалення exec.
|
||||
- `/btw <question>` ставить side question без зміни майбутнього контексту сеансу. Псевдонім: `/side`. Див. [BTW](/uk/tools/btw).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Субагенти та ACP">
|
||||
- `/subagents list|kill|log|info|send|steer|spawn` керує запусками субагентів для поточного сеансу.
|
||||
- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сеансами ACP та параметрами середовища виконання.
|
||||
- `/focus <target>` прив’язує поточну гілку Discord або тему/розмову Telegram до цілі сеансу.
|
||||
- `/unfocus` видаляє поточну прив’язку.
|
||||
- `/agents` показує список агентів, прив’язаних до гілки, для поточного сеансу.
|
||||
- `/kill <id|#|all>` перериває один або всі запущені субагенти.
|
||||
- `/focus <target>` прив’язує поточний потік Discord або тему/розмову Telegram до цілі сеансу.
|
||||
- `/unfocus` вилучає поточну прив’язку.
|
||||
- `/agents` показує агентів, прив’язаних до потоку, для поточного сеансу.
|
||||
- `/kill <id|#|all>` перериває одного або всіх запущених субагентів.
|
||||
- `/steer <id|#> <message>` надсилає керування запущеному субагенту. Псевдонім: `/tell`.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Записи лише для власника та адміністрування">
|
||||
- `/config show|get|set|unset` читає або записує `openclaw.json`. Лише для власника. Потрібно `commands.config: true`.
|
||||
- `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, керовану OpenClaw, у `mcp.servers`. Лише для власника. Потрібно `commands.mcp: true`.
|
||||
- `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан плагіна. `/plugin` є псевдонімом. Записи лише для власника. Потрібно `commands.plugins: true`.
|
||||
- `/debug show|set|unset|reset` керує перевизначеннями конфігурації лише для середовища виконання. Лише для власника. Потрібно `commands.debug: true`.
|
||||
- `/restart` перезапускає OpenClaw, коли ввімкнено. Типово: ввімкнено; задайте `commands.restart: false`, щоб вимкнути.
|
||||
- `/config show|get|set|unset` читає або записує `openclaw.json`. Лише для власника. Потребує `commands.config: true`.
|
||||
- `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, керовану OpenClaw, у `mcp.servers`. Лише для власника. Потребує `commands.mcp: true`.
|
||||
- `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан plugin. `/plugin` є псевдонімом. Записи лише для власника. Потребує `commands.plugins: true`.
|
||||
- `/debug show|set|unset|reset` керує перевизначеннями конфігурації лише для середовища виконання. Лише для власника. Потребує `commands.debug: true`.
|
||||
- `/restart` перезапускає OpenClaw, коли це ввімкнено. Типово: ввімкнено; задайте `commands.restart: false`, щоб вимкнути.
|
||||
- `/send on|off|inherit` задає політику надсилання. Лише для власника.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Голос, TTS, керування каналом">
|
||||
- `/tts on|off|status|chat|latest|provider|limit|summary|audio|help` керує TTS. Див. [TTS](/uk/tools/tts).
|
||||
- `/activation mention|always` задає режим активації групи.
|
||||
- `/bash <command>` запускає команду оболонки хоста. Лише текст. Псевдонім: `! <command>`. Потрібно `commands.bash: true` плюс списки дозволів `tools.elevated`.
|
||||
- `/activation mention|always` задає режим активації в групі.
|
||||
- `/bash <command>` запускає команду оболонки хоста. Лише текст. Псевдонім: `! <command>`. Потребує `commands.bash: true` плюс списки дозволів `tools.elevated`.
|
||||
- `!poll [sessionId]` перевіряє фонове завдання bash.
|
||||
- `!stop [sessionId]` зупиняє фонове завдання bash.
|
||||
|
||||
@ -206,31 +206,32 @@ Current source-of-truth:
|
||||
### Згенеровані команди стикування
|
||||
|
||||
Команди стикування перемикають маршрут відповіді поточного сеансу на інший пов’язаний
|
||||
канал. Налаштування, приклади та усунення несправностей див. у [Стикуванні каналів](/uk/concepts/channel-docking).
|
||||
канал. Див. [Стикування каналів](/uk/concepts/channel-docking) щодо налаштування,
|
||||
прикладів і усунення неполадок.
|
||||
|
||||
Команди стикування генеруються з плагінів каналів із підтримкою нативних команд. Поточний вбудований набір:
|
||||
Команди стикування генеруються з channel plugins із підтримкою нативних команд. Поточний вбудований набір:
|
||||
|
||||
- `/dock-discord` (псевдонім: `/dock_discord`)
|
||||
- `/dock-mattermost` (псевдонім: `/dock_mattermost`)
|
||||
- `/dock-slack` (псевдонім: `/dock_slack`)
|
||||
- `/dock-telegram` (псевдонім: `/dock_telegram`)
|
||||
|
||||
Використовуйте команди стикування з прямого чату, щоб перемкнути маршрут відповіді поточного сеансу на інший пов’язаний канал. Агент зберігає той самий контекст сеансу, але майбутні відповіді для цього сеансу доставляються вибраному адресату каналу.
|
||||
Використовуйте команди стикування з прямого чату, щоб перемкнути маршрут відповіді поточного сеансу на інший пов’язаний канал. Агент зберігає той самий контекст сеансу, але майбутні відповіді для цього сеансу доставляються вибраному співрозмовнику каналу.
|
||||
|
||||
Команди стикування потребують `session.identityLinks`. Відправник джерела та цільовий адресат мають бути в одній групі ідентичностей, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активному сеансі. Якщо відправник не пов’язаний з адресатом Discord, команда відповідає підказкою щодо налаштування, а не переходить до звичайного чату.
|
||||
Команди стикування потребують `session.identityLinks`. Відправник-джерело й цільовий співрозмовник мають бути в одній групі ідентичностей, наприклад `["telegram:123", "discord:456"]`. Якщо користувач Telegram з id `123` надсилає `/dock_discord`, OpenClaw зберігає `lastChannel: "discord"` і `lastTo: "456"` в активному сеансі. Якщо відправник не пов’язаний зі співрозмовником Discord, команда відповідає підказкою з налаштування замість переходу до звичайного чату.
|
||||
|
||||
Стикування змінює лише активний маршрут сеансу. Воно не створює облікові записи каналів, не надає доступ, не обходить списки дозволів каналів і не переносить історію стенограми до іншого сеансу. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану команду стикування, щоб знову перемкнути маршрут.
|
||||
Стикування змінює лише маршрут активного сеансу. Воно не створює облікові записи каналів, не надає доступ, не обходить списки дозволів каналів і не переносить історію транскрипта до іншого сеансу. Використовуйте `/dock-telegram`, `/dock-slack`, `/dock-mattermost` або іншу згенеровану команду стикування, щоб знову перемкнути маршрут.
|
||||
|
||||
### Команди вбудованих плагінів
|
||||
### Команди вбудованих plugins
|
||||
|
||||
Вбудовані плагіни можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії:
|
||||
Вбудовані plugins можуть додавати більше slash-команд. Поточні вбудовані команди в цьому репозиторії:
|
||||
|
||||
- `/dreaming [on|off|status|help]` перемикає Dreaming пам’яті. Див. [Dreaming](/uk/concepts/dreaming).
|
||||
- `/dreaming [on|off|status|help]` перемикає memory dreaming. Див. [Dreaming](/uk/concepts/dreaming).
|
||||
- `/pair [qr|status|pending|approve|cleanup|notify]` керує потоком сполучення/налаштування пристрою. Див. [Сполучення](/uk/channels/pairing).
|
||||
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` тимчасово активує високоризикові команди вузла телефону.
|
||||
- `/voice status|list [limit]|set <voiceId|name>` керує конфігурацією голосу Talk. У Discord нативна назва команди — `/talkvoice`.
|
||||
- `/card ...` надсилає пресети насичених карток LINE. Див. [LINE](/uk/channels/line).
|
||||
- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє й керує вбудованим каркасом сервера застосунку Codex. Див. [Каркас Codex](/uk/plugins/codex-harness).
|
||||
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` тимчасово активує високоризикові команди телефонного вузла.
|
||||
- `/voice status|list [limit]|set <voiceId|name>` керує конфігурацією голосу Talk. У Discord назва нативної команди: `/talkvoice`.
|
||||
- `/card ...` надсилає пресети багатих карток LINE. Див. [LINE](/uk/channels/line).
|
||||
- `/codex status|models|threads|resume|compact|review|diagnostics|account|mcp|skills` перевіряє та керує вбудованим серверним каркасом застосунку Codex. Див. [Каркас Codex](/uk/plugins/codex-harness).
|
||||
- Команди лише для QQBot:
|
||||
- `/bot-ping`
|
||||
- `/bot-version`
|
||||
@ -242,85 +243,85 @@ Current source-of-truth:
|
||||
|
||||
Skills, які може викликати користувач, також доступні як slash-команди:
|
||||
|
||||
- `/skill <name> [input]` завжди працює як загальна точка входу.
|
||||
- Skills також можуть з’являтися як прямі команди, наприклад `/prose`, коли Skill/плагін їх реєструє.
|
||||
- нативна реєстрація команд Skills керується `commands.nativeSkills` і `channels.<provider>.commands.nativeSkills`.
|
||||
- специфікації команд можуть надавати `descriptionLocalizations` для нативних поверхонь, що підтримують локалізовані описи, зокрема Discord.
|
||||
- `/skill <name> [input]` завжди працює як універсальна точка входу.
|
||||
- Skills також можуть з’являтися як прямі команди, наприклад `/prose`, коли skill/plugin їх реєструє.
|
||||
- реєстрація нативних команд Skills контролюється `commands.nativeSkills` і `channels.<provider>.commands.nativeSkills`.
|
||||
- специфікації команд можуть надавати `descriptionLocalizations` для нативних поверхонь, які підтримують локалізовані описи, зокрема Discord.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Нотатки щодо аргументів і парсера">
|
||||
- Команди приймають необов’язковий `:` між командою й аргументами (наприклад, `/think: high`, `/send: on`, `/help:`).
|
||||
- `/new <model>` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст обробляється як тіло повідомлення.
|
||||
<Accordion title="Примітки щодо аргументів і парсера">
|
||||
- Команди приймають необов’язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`).
|
||||
- `/new <model>` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст вважається тілом повідомлення.
|
||||
- Для повної розбивки використання провайдерів використовуйте `openclaw status --usage`.
|
||||
- `/allowlist add|remove` потребує `commands.config=true` і враховує канал `configWrites`.
|
||||
- У багатооблікових каналах `/allowlist --account <id>`, націлений на конфігурацію, і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового облікового запису.
|
||||
- `/allowlist add|remove` потребує `commands.config=true` і враховує `configWrites` каналу.
|
||||
- У багатокористувацьких каналах `/allowlist --account <id>`, націлений на конфігурацію, і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового облікового запису.
|
||||
- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` друкує локальний підсумок вартості з журналів сеансів OpenClaw.
|
||||
- `/restart` увімкнено типово; задайте `commands.restart: false`, щоб вимкнути.
|
||||
- `/plugins install <spec>` приймає ті самі специфікації плагінів, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет, `git:<repo>` або `clawhub:<pkg>`, а потім запитує перезапуск Gateway, бо модулі джерела плагіна змінилися.
|
||||
- `/plugins enable|disable` оновлює конфігурацію плагіна та запускає перезавантаження плагінів Gateway для нових ходів агента.
|
||||
- `/plugins install <spec>` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет, `git:<repo>` або `clawhub:<pkg>`, а потім запитує перезапуск Gateway, оскільки вихідні модулі plugin змінилися.
|
||||
- `/plugins enable|disable` оновлює конфігурацію plugin і запускає перезавантаження plugins Gateway для нових ходів агента.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Поведінка, специфічна для каналу">
|
||||
- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступно як текст). `join` потребує гільдії та вибраного голосового/сценічного каналу. Потрібні `channels.discord.voice` і нативні команди.
|
||||
- Команди прив’язування гілок Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують, щоб ефективні прив’язки гілок були ввімкнені (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
|
||||
- Довідник команд ACP і поведінка середовища виконання: [агенти ACP](/uk/tools/acp-agents).
|
||||
- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (недоступна як текст). `join` потребує гільдії та вибраного голосового/сценічного каналу. Потребує `channels.discord.voice` і нативних команд.
|
||||
- Команди прив’язки потоків Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують увімкнених ефективних прив’язок потоків (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
|
||||
- Довідник команд ACP і поведінка середовища виконання: [Агенти ACP](/uk/tools/acp-agents).
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Безпека verbose / trace / fast / reasoning">
|
||||
- `/verbose` призначено для налагодження й додаткової видимості; тримайте його **вимкненим** у звичайному використанні.
|
||||
- `/trace` вужчий за `/verbose`: він розкриває лише рядки трасування/налагодження, що належать плагіну, і залишає звичайний докладний шум інструментів вимкненим.
|
||||
- `/fast on|off` зберігає перевизначення сеансу. Використовуйте опцію `inherit` в інтерфейсі Sessions, щоб очистити його й повернутися до типових значень конфігурації.
|
||||
<Accordion title="Детальний режим / трасування / fast / безпека reasoning">
|
||||
- `/verbose` призначено для налагодження та додаткової видимості; тримайте його **вимкненим** під час звичайного використання.
|
||||
- `/trace` вужчий за `/verbose`: він показує лише рядки трасування/налагодження, що належать plugin, і не вмикає звичайний детальний шум інструментів.
|
||||
- `/fast on|off` зберігає перевизначення сеансу. Використовуйте опцію `inherit` в інтерфейсі Sessions UI, щоб очистити його й повернутися до типових значень конфігурації.
|
||||
- `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних кінцевих точках Responses, тоді як прямі публічні запити Anthropic, зокрема трафік з OAuth-автентифікацією, надісланий до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic).
|
||||
- Підсумки збоїв інструментів і далі показуються, коли доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`.
|
||||
- `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішні міркування, вивід інструментів або діагностику плагінів, які ви не мали наміру показувати. Краще залишати їх вимкненими, особливо в групових чатах.
|
||||
- Підсумки збоїв інструментів усе ще показуються, коли це доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`.
|
||||
- `/reasoning`, `/verbose` і `/trace` ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє reasoning, вивід інструментів або діагностику plugin, які ви не мали наміру показувати. Краще залишати їх вимкненими, особливо в групових чатах.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Перемикання моделі">
|
||||
- `/model` негайно зберігає нову модель сеансу.
|
||||
- Якщо агент простоює, наступний запуск використовує її відразу.
|
||||
- Якщо запуск уже активний, OpenClaw позначає перемикання наживо як очікуване й перезапускається в нову модель лише в чистій точці повтору.
|
||||
- Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повтору або наступного ходу користувача.
|
||||
- У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від режиму порятунку каналу повідомлень і не надає віддалені повноваження конфігурації.
|
||||
- Якщо агент простоює, наступний запуск одразу її використовує.
|
||||
- Якщо запуск уже активний, OpenClaw позначає живе перемикання як очікуване й перезапускається в нову модель лише в чистій точці повторної спроби.
|
||||
- Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої нагоди повторної спроби або наступного ходу користувача.
|
||||
- У локальному TUI `/crestodian [request]` повертає зі звичайного TUI агента до Crestodian. Це окремо від rescue mode каналу повідомлень і не надає віддалених повноважень конфігурації.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Швидкий шлях і вбудовані скорочення">
|
||||
<Accordion title="Швидкий шлях та вбудовані скорочення">
|
||||
- **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволів обробляються негайно (обхід черги + моделі).
|
||||
- **Фільтр групових згадок:** повідомлення лише з командами від відправників зі списку дозволів обходять вимоги до згадок.
|
||||
- **Вбудовані скорочення (лише відправники зі списку дозволів):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і видаляються до того, як модель побачить решту тексту.
|
||||
- **Обмеження групових згадок:** повідомлення лише з командами від відправників зі списку дозволів обходять вимоги згадки.
|
||||
- **Вбудовані скорочення (лише відправники зі списку дозволів):** певні команди також працюють, коли вбудовані у звичайне повідомлення, і вилучаються перед тим, як модель побачить решту тексту.
|
||||
- Приклад: `hey /status` запускає відповідь зі статусом, а решта тексту продовжує проходити звичайним потоком.
|
||||
- Наразі: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
- Неавторизовані повідомлення лише з командами мовчки ігноруються, а вбудовані токени `/...` обробляються як звичайний текст.
|
||||
- Несанкціоновані повідомлення лише з командами мовчки ігноруються, а вбудовані токени `/...` трактуються як звичайний текст.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Команди Skills і нативні аргументи">
|
||||
- **Команди Skills:** Skills `user-invocable` доступні як slash-команди. Назви очищуються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`).
|
||||
- `/skill <name> [input]` запускає Skill за назвою (корисно, коли обмеження нативних команд не дають створити окремі команди для кожної Skill).
|
||||
- **Команди Skills:** Skills `user-invocable` доступні як slash-команди. Назви очищаються до `a-z0-9_` (макс. 32 символи); колізії отримують числові суфікси (наприклад, `_2`).
|
||||
- `/skill <name> [input]` запускає skill за назвою (корисно, коли обмеження нативних команд не дають створити окремі команди для кожного skill).
|
||||
- Типово команди Skills пересилаються моделі як звичайний запит.
|
||||
- Skills можуть необов’язково оголошувати `command-dispatch: tool`, щоб спрямувати команду безпосередньо до інструмента (детерміновано, без моделі).
|
||||
- Приклад: `/prose` (плагін OpenProse) — див. [OpenProse](/uk/prose).
|
||||
- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти вибору, а ви пропускаєте аргумент. Динамічні варіанти вибору розв’язуються відносно цільової моделі сеансу, тому параметри, специфічні для моделі, як-от рівні `/think`, відповідають перевизначенню `/model` цього сеансу.
|
||||
- Skills можуть необов’язково оголосити `command-dispatch: tool`, щоб спрямувати команду безпосередньо до інструмента (детерміновано, без моделі).
|
||||
- Приклад: `/prose` (OpenProse plugin) — див. [OpenProse](/uk/prose).
|
||||
- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти, а ви пропускаєте аргумент. Динамічні варіанти визначаються відносно моделі цільового сеансу, тому параметри, специфічні для моделі, наприклад рівні `/think`, дотримуються перевизначення `/model` цього сеансу.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## `/tools`
|
||||
|
||||
`/tools` відповідає на питання середовища виконання, а не конфігурації: **що цей агент може використовувати прямо зараз у цій розмові**.
|
||||
`/tools` відповідає на запитання про середовище виконання, а не про конфігурацію: **що цей агент може використовувати прямо зараз у цій розмові**.
|
||||
|
||||
- Типовий `/tools` компактний і оптимізований для швидкого перегляду.
|
||||
- `/tools verbose` додає короткі описи.
|
||||
- Поверхні нативних команд, що підтримують аргументи, надають той самий перемикач режиму `compact|verbose`.
|
||||
- Результати прив’язані до сеансу, тому зміна агента, каналу, гілки, авторизації відправника або моделі може змінити вивід.
|
||||
- `/tools` включає інструменти, які фактично доступні під час виконання, зокрема основні інструменти, підключені інструменти плагінів та інструменти, що належать каналу.
|
||||
- Поверхні нативних команд, які підтримують аргументи, надають той самий перемикач режиму `compact|verbose`.
|
||||
- Результати мають область дії сеансу, тому зміна агента, каналу, потоку, авторизації відправника або моделі може змінити вивід.
|
||||
- `/tools` включає інструменти, які справді доступні в середовищі виконання, зокрема базові інструменти, підключені інструменти plugin та інструменти, що належать каналу.
|
||||
|
||||
Для редагування профілів і перевизначень використовуйте панель Tools в інтерфейсі Control UI або поверхні конфігурації/каталогу, а не розглядайте `/tools` як статичний каталог.
|
||||
Для редагування профілю та перевизначень використовуйте панель Tools в Control UI або поверхні конфігурації/каталогу, а не трактуйте `/tools` як статичний каталог.
|
||||
|
||||
## Поверхні використання (що де показується)
|
||||
|
||||
- **Використання/квота провайдера** (приклад: "Claude 80% left") відображається в `/status` для поточного провайдера моделі, коли ввімкнено відстеження використання. OpenClaw нормалізує вікна провайдерів до `% left`; для MiniMax відсоткові поля лише із залишком інвертуються перед показом, а відповіді `model_remains` надають перевагу запису чат-моделі плюс мітці плану з тегом моделі.
|
||||
- **Рядки токенів/кешу** в `/status` можуть повертатися до найновішого запису використання транскрипту, коли живий знімок сесії розріджений. Наявні ненульові живі значення все одно мають пріоритет, а запасний варіант із транскрипту також може відновити мітку активної runtime-моделі плюс більший, орієнтований на prompt підсумок, коли збережені підсумки відсутні або менші.
|
||||
- **Виконання проти runtime:** `/status` повідомляє `Execution` для ефективного шляху sandbox і `Runtime` для того, хто фактично виконує сесію: `OpenClaw Pi Default`, `OpenAI Codex`, CLI backend або ACP backend.
|
||||
- **Токени/вартість на відповідь** керуються через `/usage off|tokens|full` (додається до звичайних відповідей).
|
||||
- **Використання/квота провайдера** (приклад: "Claude 80% left") відображається в `/status` для поточного провайдера моделі, коли ввімкнено відстеження використання. OpenClaw нормалізує вікна провайдера до `% left`; для MiniMax поля відсотків лише із залишком інвертуються перед показом, а відповіді `model_remains` надають перевагу запису чат-моделі плюс позначці плану з тегом моделі.
|
||||
- **Рядки токенів/кешу** в `/status` можуть повертатися до останнього запису використання з транскрипту, коли знімок живої сесії розріджений. Наявні ненульові живі значення все одно мають пріоритет, а fallback із транскрипту також може відновити мітку активної runtime-моделі плюс більшу prompt-орієнтовану суму, коли збережені підсумки відсутні або менші.
|
||||
- **Виконання проти runtime:** `/status` повідомляє `Execution` для ефективного шляху sandbox і `Runtime` для того, хто фактично запускає сесію: `OpenClaw Pi Default`, `OpenAI Codex`, CLI-бекенд або ACP-бекенд.
|
||||
- **Токени/вартість на відповідь** контролюється через `/usage off|tokens|full` (додається до звичайних відповідей).
|
||||
- `/model status` стосується **моделей/автентифікації/endpoint-ів**, а не використання.
|
||||
|
||||
## Вибір моделі (`/model`)
|
||||
@ -340,14 +341,14 @@ Skills, які може викликати користувач, також до
|
||||
|
||||
Примітки:
|
||||
|
||||
- `/model` і `/model list` показують компактний нумерований вибір (родина моделей + доступні провайдери).
|
||||
- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера та моделі, а також кроком Submit.
|
||||
- `/model <#>` вибирає з цього списку (і за можливості надає перевагу поточному провайдеру).
|
||||
- `/model status` показує детальний вигляд, включно з налаштованим endpoint провайдера (`baseUrl`) і режимом API (`api`), коли вони доступні.
|
||||
- `/model` і `/model list` показують компактний нумерований вибірник (сімейство моделей + доступні провайдери).
|
||||
- У Discord `/model` і `/models` відкривають інтерактивний вибірник із випадаючими списками провайдера та моделі плюс кроком Submit.
|
||||
- `/model <#>` вибирає з цього вибірника (і, коли можливо, надає перевагу поточному провайдеру).
|
||||
- `/model status` показує детальний вигляд, зокрема налаштований endpoint провайдера (`baseUrl`) і режим API (`api`), коли вони доступні.
|
||||
|
||||
## Налагоджувальні перевизначення
|
||||
## Debug-перевизначення
|
||||
|
||||
`/debug` дає змогу задавати **лише runtime** перевизначення конфігурації (у пам’яті, не на диску). Лише власник. Типово вимкнено; увімкніть через `commands.debug: true`.
|
||||
`/debug` дає змогу задавати **лише runtime** перевизначення конфігурації (у пам'яті, не на диску). Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.debug: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -360,12 +361,12 @@ Skills, які може викликати користувач, також до
|
||||
```
|
||||
|
||||
<Note>
|
||||
Перевизначення застосовуються негайно для нових читань конфігурації, але **не** записуються в `openclaw.json`. Використовуйте `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску.
|
||||
Перевизначення негайно застосовуються до нових читань конфігурації, але **не** записуються в `openclaw.json`. Використайте `/debug reset`, щоб очистити всі перевизначення й повернутися до конфігурації на диску.
|
||||
</Note>
|
||||
|
||||
## Вивід трасування Plugin
|
||||
|
||||
`/trace` дає змогу вмикати або вимикати **рядки трасування/налагодження Plugin у межах сесії** без увімкнення повного докладного режиму.
|
||||
`/trace` дає змогу перемикати **сесійні рядки трасування/debug Plugin** без увімкнення повного verbose-режиму.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -379,14 +380,14 @@ Skills, які може викликати користувач, також до
|
||||
|
||||
- `/trace` без аргументу показує поточний стан трасування сесії.
|
||||
- `/trace on` вмикає рядки трасування Plugin для поточної сесії.
|
||||
- `/trace off` знову вимикає їх.
|
||||
- Рядки трасування Plugin можуть з’являтися в `/status` і як подальше діагностичне повідомлення після звичайної відповіді асистента.
|
||||
- `/trace` не замінює `/debug`; `/debug` і далі керує лише runtime перевизначеннями конфігурації.
|
||||
- `/trace` не замінює `/verbose`; звичайний докладний вивід інструментів/статусу й далі належить до `/verbose`.
|
||||
- `/trace off` знову їх вимикає.
|
||||
- Рядки трасування Plugin можуть з'являтися в `/status` і як наступне діагностичне повідомлення після звичайної відповіді асистента.
|
||||
- `/trace` не замінює `/debug`; `/debug` усе ще керує лише runtime-перевизначеннями конфігурації.
|
||||
- `/trace` не замінює `/verbose`; звичайний verbose-вивід інструментів/статусу все ще належить до `/verbose`.
|
||||
|
||||
## Оновлення конфігурації
|
||||
|
||||
`/config` записує у вашу конфігурацію на диску (`openclaw.json`). Лише власник. Типово вимкнено; увімкніть через `commands.config: true`.
|
||||
`/config` записує у вашу конфігурацію на диску (`openclaw.json`). Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.config: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -399,12 +400,12 @@ Skills, які може викликати користувач, також до
|
||||
```
|
||||
|
||||
<Note>
|
||||
Конфігурацію перевіряють перед записом; недійсні зміни відхиляються. Оновлення `/config` зберігаються між перезапусками.
|
||||
Конфігурацію перевіряють перед записом; недійсні зміни відхиляються. Оновлення `/config` зберігаються після перезапусків.
|
||||
</Note>
|
||||
|
||||
## Оновлення MCP
|
||||
|
||||
`/mcp` записує керовані OpenClaw визначення MCP-серверів у `mcp.servers`. Лише власник. Типово вимкнено; увімкніть через `commands.mcp: true`.
|
||||
`/mcp` записує керовані OpenClaw визначення MCP-серверів у `mcp.servers`. Лише для власника. За замовчуванням вимкнено; увімкніть через `commands.mcp: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -416,12 +417,12 @@ Skills, які може викликати користувач, також до
|
||||
```
|
||||
|
||||
<Note>
|
||||
`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi. Runtime-адаптери вирішують, які transports фактично можна виконати.
|
||||
`/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi. Runtime-адаптери вирішують, які транспорти фактично можна виконувати.
|
||||
</Note>
|
||||
|
||||
## Оновлення Plugin
|
||||
|
||||
`/plugins` дає операторам змогу переглядати виявлені plugins і перемикати їх увімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як alias. Типово вимкнено; увімкніть через `commands.plugins: true`.
|
||||
`/plugins` дає операторам змогу переглядати виявлені Plugin і перемикати ввімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як alias. За замовчуванням вимкнено; увімкніть через `commands.plugins: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -434,36 +435,36 @@ Skills, які може викликати користувач, також до
|
||||
```
|
||||
|
||||
<Note>
|
||||
- `/plugins list` і `/plugins show` використовують реальне виявлення plugin у поточному workspace плюс конфігурацію на диску.
|
||||
- `/plugins install` встановлює з ClawHub, npm, git, локальних директорій і архівів.
|
||||
- `/plugins enable|disable` оновлює лише конфігурацію plugin; це не встановлює і не видаляє plugins.
|
||||
- Зміни ввімкнення й вимкнення гаряче перезавантажують runtime-поверхні Gateway plugin для нових ходів агентів; встановлення запитує перезапуск Gateway, бо вихідні модулі plugin змінилися.
|
||||
- `/plugins list` і `/plugins show` використовують справжнє виявлення Plugin у поточному workspace плюс конфігурацію на диску.
|
||||
- `/plugins install` встановлює з ClawHub, npm, git, локальних каталогів і архівів.
|
||||
- `/plugins enable|disable` оновлює лише конфігурацію Plugin; це не встановлює й не видаляє Plugin.
|
||||
- Зміни ввімкнення й вимкнення hot-reload runtime-поверхні Plugin у Gateway для нових ходів агента; install запитує перезапуск Gateway, бо вихідні модулі Plugin змінилися.
|
||||
|
||||
</Note>
|
||||
|
||||
## Примітки щодо поверхонь
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Сесії на поверхню">
|
||||
<Accordion title="Сесії за поверхнею">
|
||||
- **Текстові команди** виконуються у звичайній чат-сесії (DM спільно використовують `main`, групи мають власну сесію).
|
||||
- **Нативні команди** використовують ізольовані сесії:
|
||||
- Discord: `agent:<agentId>:discord:slash:<userId>`
|
||||
- Slack: `agent:<agentId>:slack:slash:<userId>` (префікс налаштовується через `channels.slack.slashCommand.sessionPrefix`)
|
||||
- Telegram: `telegram:slash:<userId>` (націлюється на чат-сесію через `CommandTargetSessionKey`)
|
||||
- **`/stop`** націлюється на активну чат-сесію, щоб вона могла перервати поточний запуск.
|
||||
- Telegram: `telegram:slash:<userId>` (цілиться в чат-сесію через `CommandTargetSessionKey`)
|
||||
- **`/stop`** цілиться в активну чат-сесію, щоб вона могла перервати поточний запуск.
|
||||
|
||||
</Accordion>
|
||||
<Accordion title="Особливості Slack">
|
||||
`channels.slack.slashCommand` і далі підтримується для однієї команди в стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити по одній slash-команді Slack для кожної вбудованої команди (ті самі назви, що й у `/help`). Меню аргументів команд для Slack доставляються як ephemeral кнопки Block Kit.
|
||||
<Accordion title="Специфіка Slack">
|
||||
`channels.slack.slashCommand` усе ще підтримується для однієї команди стилю `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну slash-команду Slack для кожної вбудованої команди (ті самі назви, що й у `/help`). Меню аргументів команд для Slack доставляються як ephemeral-кнопки Block Kit.
|
||||
|
||||
Нативний виняток Slack: зареєструйте `/agentstatus` (не `/status`), бо Slack резервує `/status`. Текстова `/status` і далі працює в повідомленнях Slack.
|
||||
Виняток для нативних команд Slack: зареєструйте `/agentstatus` (не `/status`), бо Slack резервує `/status`. Текстова `/status` усе ще працює в повідомленнях Slack.
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Побічні питання BTW
|
||||
## Побічні запитання BTW
|
||||
|
||||
`/btw` — це швидке **побічне питання** щодо поточної сесії.
|
||||
`/btw` — це швидке **побічне запитання** про поточну сесію. `/side` є alias.
|
||||
|
||||
На відміну від звичайного чату:
|
||||
|
||||
@ -473,17 +474,18 @@ Skills, які може викликати користувач, також до
|
||||
- воно не записується в історію транскрипту,
|
||||
- воно доставляється як живий побічний результат замість звичайного повідомлення асистента.
|
||||
|
||||
Це робить `/btw` корисним, коли потрібне тимчасове уточнення, поки основне завдання продовжує виконуватися.
|
||||
Це робить `/btw` корисним, коли вам потрібне тимчасове уточнення, поки основне завдання продовжує виконуватися.
|
||||
|
||||
Приклад:
|
||||
|
||||
```text
|
||||
/btw what are we doing right now?
|
||||
/side what changed while the main run continued?
|
||||
```
|
||||
|
||||
Див. [Побічні питання BTW](/uk/tools/btw) для повної поведінки та деталей UX клієнта.
|
||||
Див. [Побічні запитання BTW](/uk/tools/btw), щоб отримати повну поведінку та деталі UX клієнта.
|
||||
|
||||
## Пов’язане
|
||||
## Пов'язане
|
||||
|
||||
- [Створення skills](/uk/tools/creating-skills)
|
||||
- [Skills](/uk/tools/skills)
|
||||
|
||||
Loading…
Reference in New Issue
Block a user