chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-04-24 17:27:22 +00:00
parent ed9c831b62
commit 5a5bb10f2b
3 changed files with 514 additions and 531 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1,28 +1,28 @@
---
read_when:
- Налаштування Slack або налагодження режиму сокета/HTTP у Slack
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + URL-адреси HTTP-запитів)
- Налаштування Slack або налагодження режиму socket/HTTP Slack
summary: Налаштування Slack і поведінка під час виконання (Socket Mode + HTTP Request URLs)
title: Slack
x-i18n:
generated_at: "2026-04-24T03:41:27Z"
generated_at: "2026-04-24T17:24:52Z"
model: gpt-5.4
provider: openai
source_hash: 906a4fcf00a51f4a9b8410f982abe1f068687b5aa9847a4894f489e57fa9e4dd
source_hash: 830fe844f1f278062de3c186f2b7865684962c10dfb2740a42bf7b47e342b534
source_path: channels/slack.md
workflow: 15
---
Готово до використання в продакшені для особистих повідомлень і каналів через інтеграції застосунку Slack. Режимом за замовчуванням є Socket Mode; URL-адреси HTTP-запитів також підтримуються.
Готово до продакшену для особистих повідомлень і каналів через інтеграції застосунку Slack. Режим за замовчуванням — Socket Mode; HTTP Request URLs також підтримуються.
<CardGroup cols={3}>
<Card title="Сполучення" icon="link" href="/uk/channels/pairing">
Особисті повідомлення Slack за замовчуванням працюють у режимі сполучення.
</Card>
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
Нативна поведінка команд і каталог команд.
</Card>
<Card title="Усунення несправностей каналу" icon="wrench" href="/uk/channels/troubleshooting">
Міжканальна діагностика та сценарії відновлення.
<Card title="Усунення проблем із каналом" icon="wrench" href="/uk/channels/troubleshooting">
Міжканальна діагностика та інструкції з відновлення.
</Card>
</CardGroup>
@ -34,10 +34,10 @@ x-i18n:
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
- виберіть **from a manifest** і оберіть робочий простір для вашого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) нижче та продовжуйте створення
- згенеруйте **App-Level Token** (`xapp-...`) з `connections:write`
- встановіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
<Step title="Налаштуйте OpenClaw">
@ -55,7 +55,7 @@ x-i18n:
}
```
Резервний варіант через змінні середовища (лише для облікового запису за замовчуванням):
Резервний варіант через env (лише для облікового запису за замовчуванням):
```bash
SLACK_APP_TOKEN=xapp-...
@ -75,15 +75,15 @@ openclaw gateway
</Tab>
<Tab title="URL-адреси HTTP-запитів">
<Tab title="HTTP Request URLs">
<Steps>
<Step title="Створіть новий застосунок Slack">
У налаштуваннях застосунку Slack натисніть кнопку **[Create New App](https://api.slack.com/apps/new)**:
- виберіть **from a manifest** і виберіть робочий простір для вашого застосунку
- виберіть **from a manifest** і оберіть робочий простір для вашого застосунку
- вставте [приклад маніфесту](#manifest-and-scope-checklist) і оновіть URL-адреси перед створенням
- збережіть **Signing Secret** для перевірки запитів
- встановіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
- установіть застосунок і скопіюйте показаний **Bot Token** (`xoxb-...`)
</Step>
@ -106,7 +106,7 @@ openclaw gateway
<Note>
Використовуйте унікальні шляхи webhook для багатьох облікових записів HTTP
Надайте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
Призначте кожному обліковому запису окремий `webhookPath` (типово `/slack/events`), щоб реєстрації не конфліктували.
</Note>
</Step>
@ -125,7 +125,7 @@ openclaw gateway
## Контрольний список маніфесту та scope
Базовий маніфест застосунку Slack однаковий для Socket Mode і URL-адрес HTTP-запитів. Відрізняється лише блок `settings` (і `url` у слеш-команді).
Базовий маніфест застосунку Slack однаковий для Socket Mode і HTTP Request URLs. Відрізняється лише блок `settings` (і `url` для slash-команди).
Базовий маніфест (Socket Mode за замовчуванням):
@ -199,7 +199,7 @@ openclaw gateway
}
```
Для **режиму URL-адрес HTTP-запитів** замініть `settings` на HTTP-варіант і додайте `url` до кожної слеш-команди. Потрібна публічна URL-адреса:
Для **режиму HTTP Request URLs** замініть `settings` на HTTP-варіант і додайте `url` до кожної slash-команди. Потрібна публічна URL-адреса:
```json
{
@ -229,19 +229,19 @@ openclaw gateway
}
```
### Додаткові параметри маніфесту
### Додаткові налаштування маніфесту
Показують різні можливості, що розширюють наведені вище значення за замовчуванням.
Покривають різні функції, що розширюють наведені вище типові значення.
<AccordionGroup>
<Accordion title="Необов’язкові нативні слеш-команди">
<Accordion title="Необов’язкові нативні slash-команди">
Кілька [нативних слеш-команд](#commands-and-slash-behavior) можна використовувати замість однієї налаштованої команди з певними нюансами:
Можна використовувати кілька [нативних slash-команд](#commands-and-slash-behavior) замість однієї налаштованої команди з певними нюансами:
- Використовуйте `/agentstatus` замість `/status`, оскільки команда `/status` зарезервована.
- Одночасно можна зробити доступними не більше 25 слеш-команд.
- Одночасно можна зробити доступними не більше 25 slash-команд.
Замініть наявний розділ `features.slash_commands` підмножиною [доступних команд](/uk/tools/slash-commands#command-list):
Замініть наявний розділ `features.slash_commands` на підмножину [доступних команд](/uk/tools/slash-commands#command-list):
<Tabs>
<Tab title="Socket Mode (за замовчуванням)">
@ -308,8 +308,8 @@ openclaw gateway
},
{
"command": "/models",
"description": "List providers/models or add a model",
"usage_hint": "[provider] [page] [limit=<n>|size=<n>|all] | add <provider> <modelId>"
"description": "List providers/models",
"usage_hint": "[provider] [page] [limit=<n>|size=<n>|all]"
},
{
"command": "/help",
@ -360,8 +360,8 @@ openclaw gateway
```
</Tab>
<Tab title="URL-адреси HTTP-запитів">
Використовуйте той самий список `slash_commands`, що й вище для Socket Mode, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
<Tab title="HTTP Request URLs">
Використовуйте той самий список `slash_commands`, що й для Socket Mode вище, і додайте `"url": "https://gateway-host.example.com/slack/events"` до кожного запису. Приклад:
```json
"slash_commands": [
@ -385,12 +385,12 @@ openclaw gateway
</Accordion>
<Accordion title="Необов’язкові scope авторства (операції запису)">
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власне ім’я користувача та піктограму) замість типової ідентичності застосунку Slack.
Додайте bot scope `chat:write.customize`, якщо хочете, щоб вихідні повідомлення використовували активну ідентичність агента (власні ім’я користувача та значок) замість типової ідентичності застосунку Slack.
Якщо ви використовуєте піктограму-емодзі, Slack очікує синтаксис `:emoji_name:`.
Якщо ви використовуєте emoji-значок, Slack очікує синтаксис `:emoji_name:`.
</Accordion>
<Accordion title="Необов’язкові scope токена користувача (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope для читання є:
<Accordion title="Необов’язкові scope user-token (операції читання)">
Якщо ви налаштовуєте `channels.slack.userToken`, типовими scope читання є:
- `channels:history`, `groups:history`, `im:history`, `mpim:history`
- `channels:read`, `groups:read`, `im:read`, `mpim:read`
@ -398,70 +398,70 @@ openclaw gateway
- `reactions:read`
- `pins:read`
- `emoji:read`
- `search:read` (якщо ви залежите від читання пошуку Slack)
- `search:read` (якщо ви покладаєтеся на читання пошуку Slack)
</Accordion>
</AccordionGroup>
## Модель токенів
- Для Socket Mode потрібні `botToken` + `appToken`.
- Для HTTP mode потрібні `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
- `botToken` + `appToken` потрібні для Socket Mode.
- Для режиму HTTP потрібні `botToken` + `signingSecret`.
- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні
рядки або об’єкти SecretRef.
- Токени в конфігурації мають пріоритет над резервними значеннями зі змінних середовища.
- Резервний варіант через змінні середовища `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням.
- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного варіанту через змінні середовища) і за замовчуванням має поведінку лише для читання (`userTokenReadOnly: true`).
- Токени в конфігурації мають пріоритет над резервним варіантом через env.
- Резервний варіант через env `SLACK_BOT_TOKEN` / `SLACK_APP_TOKEN` застосовується лише до облікового запису за замовчуванням.
- `userToken` (`xoxp-...`) доступний лише в конфігурації (без резервного варіанту через env) і за замовчуванням працює в режимі лише для читання (`userTokenReadOnly: true`).
Поведінка знімка стану:
- Перевірка облікового запису Slack відстежує поля `*Source` і `*Status`
- Інспекція облікового запису Slack відстежує поля `*Source` і `*Status`
для кожного облікового запису (`botToken`, `appToken`, `signingSecret`, `userToken`).
- Стан може бути `available`, `configured_unavailable` або `missing`.
- Статус може бути `available`, `configured_unavailable` або `missing`.
- `configured_unavailable` означає, що обліковий запис налаштовано через SecretRef
або інше неявне джерело секрету, але поточна команда/шлях виконання
не змогли визначити фактичне значення.
- У HTTP mode включається `signingSecretStatus`; у Socket Mode
або інше не inline-джерело секрету, але поточний шлях команди/виконання
не зміг визначити фактичне значення.
- У режимі HTTP включається `signingSecretStatus`; у Socket Mode
потрібною парою є `botTokenStatus` + `appTokenStatus`.
<Tip>
Для дій/читання каталогу за наявності налаштування може надаватися перевага токену користувача. Для запису перевага зберігається за bot token; записи через токен користувача дозволені лише коли `userTokenReadOnly: false` і bot token недоступний.
Для дій/читання каталогу перевага може надаватися user token, якщо його налаштовано. Для запису перевага залишається за bot token; запис через user token дозволяється лише коли `userTokenReadOnly: false` і bot token недоступний.
</Tip>
## Дії та обмеження
Діями Slack керує `channels.slack.actions.*`.
Дії Slack керуються через `channels.slack.actions.*`.
Доступні групи дій у поточному наборі інструментів Slack:
Доступні групи дій у поточному інструментарії Slack:
| Група | Типово |
| ---------- | ------- |
| messages | увімкнено |
| reactions | увімкнено |
| pins | увімкнено |
| memberInfo | увімкнено |
| emojiList | увімкнено |
| Група | За замовчуванням |
| ---------- | ---------------- |
| messages | увімкнено |
| reactions | увімкнено |
| pins | увімкнено |
| memberInfo | увімкнено |
| emojiList | увімкнено |
Поточні дії для повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` і `emoji-list`.
Поточні дії для повідомлень Slack включають `send`, `upload-file`, `download-file`, `read`, `edit`, `delete`, `pin`, `unpin`, `list-pins`, `member-info` та `emoji-list`.
## Керування доступом і маршрутизація
<Tabs>
<Tab title="Політика DM">
`channels.slack.dmPolicy` керує доступом до DM (застаріле: `channels.slack.dm.policy`):
<Tab title="Політика особистих повідомлень">
`channels.slack.dmPolicy` керує доступом до особистих повідомлень (застаріле: `channels.slack.dm.policy`):
- `pairing` (типово)
- `pairing` (за замовчуванням)
- `allowlist`
- `open` (потребує, щоб `channels.slack.allowFrom` містив `"*"`; застаріле: `channels.slack.dm.allowFrom`)
- `disabled`
Прапорці DM:
Прапорці особистих повідомлень:
- `dm.enabled` (типово true)
- `dm.enabled` (за замовчуванням true)
- `channels.slack.allowFrom` (рекомендовано)
- `dm.allowFrom` (застаріле)
- `dm.groupEnabled` (групові DM типово false)
- `dm.groupChannels` (необов’язковий allowlist для MPIM)
- `dm.groupEnabled` (групові особисті повідомлення за замовчуванням false)
- `dm.groupChannels` (необов’язковий allowlist MPIM)
Пріоритет для багатьох облікових записів:
@ -469,7 +469,7 @@ openclaw gateway
- Іменовані облікові записи успадковують `channels.slack.allowFrom`, якщо їхній власний `allowFrom` не задано.
- Іменовані облікові записи не успадковують `channels.slack.accounts.default.allowFrom`.
Сполучення в DM використовує `openclaw pairing approve slack <code>`.
Сполучення в особистих повідомленнях використовує `openclaw pairing approve slack <code>`.
</Tab>
@ -482,26 +482,26 @@ openclaw gateway
Allowlist каналів розміщується в `channels.slack.channels` і має використовувати стабільні ID каналів.
Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime використовує резервне значення `groupPolicy="allowlist"` і записує попередження в лог (навіть якщо задано `channels.defaults.groupPolicy`).
Примітка щодо runtime: якщо `channels.slack` повністю відсутній (налаштування лише через env), runtime використовує резервне значення `groupPolicy="allowlist"` і записує попередження в журнал (навіть якщо задано `channels.defaults.groupPolicy`).
Визначення імен/ID:
Визначення імені/ID:
- записи allowlist каналів і записи allowlist DM визначаються під час запуску, якщо доступ токена це дозволяє
- записи назв каналів, які не вдалося визначити, зберігаються як налаштовані, але типово ігноруються під час маршрутизації
- вхідна авторизація й маршрутизація каналів типово працюють за принципом ID-first; пряме зіставлення username/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
- записи allowlist каналів і allowlist особистих повідомлень визначаються під час запуску, коли доступ токена це дозволяє
- записи з іменами каналів, які не вдалося визначити, зберігаються як налаштовані, але за замовчуванням ігноруються для маршрутизації
- вхідна авторизація та маршрутизація каналів за замовчуванням працюють за ID; пряме зіставлення імен користувачів/slug потребує `channels.slack.dangerouslyAllowNameMatching: true`
</Tab>
<Tab title="Згадки та користувачі каналів">
Повідомлення в каналах типово обмежуються згадками.
Повідомлення в каналах за замовчуванням обмежуються згадками.
Джерела згадок:
- явна згадка застосунку (`<@botId>`)
- шаблони регулярних виразів для згадок (`agents.list[].groupChat.mentionPatterns`, резервне значення `messages.groupChat.mentionPatterns`)
- неявна поведінка reply-to-bot у треді (вимикається, коли `thread.requireExplicitMention` має значення `true`)
- неявна поведінка відповіді в треді на бота (вимикається, якщо `thread.requireExplicitMention` має значення `true`)
Керування для кожного каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
Керування на рівні каналу (`channels.slack.channels.<id>`; імена лише через визначення під час запуску або `dangerouslyAllowNameMatching`):
- `requireMention`
- `users` (allowlist)
@ -509,45 +509,45 @@ openclaw gateway
- `skills`
- `systemPrompt`
- `tools`, `toolsBySender`
- формат ключа `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
(застарілі ключі без префікса, як і раніше, зіставляються лише з `id:`)
- формат ключів `toolsBySender`: `id:`, `e164:`, `username:`, `name:` або шаблон `"*"`
(застарілі ключі без префікса все ще зіставляються лише з `id:`)
</Tab>
</Tabs>
## Треди, сесії та теги відповіді
## Треди, сесії та теги відповідей
- DM маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
- Із типовим `session.dmScope=main` DM у Slack згортаються до головної сесії агента.
- Особисті повідомлення маршрутизуються як `direct`; канали — як `channel`; MPIM — як `group`.
- Із типовим `session.dmScope=main` особисті повідомлення Slack згортаються в основну сесію агента.
- Сесії каналів: `agent:<agentId>:slack:channel:<channelId>`.
- Відповіді в тредах можуть створювати суфікси сесій тредів (`: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.historyScope``thread`; для `thread.inheritParent``false`.
- `channels.slack.thread.initialHistoryLimit` керує тим, скільки наявних повідомлень треду буде отримано під час старту нової сесії треду (за замовчуванням `20`; встановіть `0`, щоб вимкнути).
- `channels.slack.thread.requireExplicitMention` (за замовчуванням `false`): коли має значення `true`, пригнічує неявні згадки в треді, тож бот відповідає лише на явні згадки `@bot` усередині тредів, навіть якщо бот уже брав участь у треді. Без цього відповіді в треді, де брав участь бот, обходять обмеження `requireMention`.
Керування тредами відповідей:
- `channels.slack.replyToMode`: `off|first|all|batched` (типово `off`)
- `channels.slack.replyToModeByChatType`: для кожного `direct|group|channel`
- застаріле резервне значення для прямих чатів: `channels.slack.dm.replyToMode`
- `channels.slack.replyToMode`: `off|first|all|batched` (за замовчуванням `off`)
- `channels.slack.replyToModeByChatType`: для `direct|group|channel`
- застарілий резервний варіант для прямих чатів: `channels.slack.dm.replyToMode`
Підтримуються ручні теги відповіді:
Підтримуються ручні теги відповідей:
- `[[reply_to_current]]`
- `[[reply_to:<id>]]`
Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`у Slack треди приховують повідомлення з каналу, тоді як у Telegram відповіді залишаються видимими вбудовано.
Примітка: `replyToMode="off"` вимикає **усі** треди відповідей у Slack, включно з явними тегами `[[reply_to_*]]`. Це відрізняється від Telegram, де явні теги все ще враховуються в режимі `"off"`у Slack треди приховують повідомлення з каналу, тоді як у Telegram відповіді лишаються видимими вбудовано.
## Реакції підтвердження
`ackReaction` надсилає емодзі підтвердження, поки OpenClaw обробляє вхідне повідомлення.
`ackReaction` надсилає emoji-підтвердження, поки OpenClaw обробляє вхідне повідомлення.
Порядок визначення:
- `channels.slack.accounts.<accountId>.ackReaction`
- `channels.slack.ackReaction`
- `messages.ackReaction`
- резервне значення emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
- резервне emoji ідентичності агента (`agents.list[].identity.emoji`, інакше "👀")
Примітки:
@ -556,24 +556,24 @@ openclaw gateway
## Потокове передавання тексту
`channels.slack.streaming` керує поведінкою попереднього перегляду наживо:
`channels.slack.streaming` керує поведінкою попереднього перегляду в реальному часі:
- `off`: вимкнути потоковий попередній перегляд наживо.
- `partial` (типово): замінювати текст попереднього перегляду останнім частковим виводом.
- `block`: додавати оновлення попереднього перегляду частинами.
- `off`: вимкнути потоковий попередній перегляд у реальному часі.
- `partial` (за замовчуванням): замінювати текст попереднього перегляду останнім частковим виводом.
- `block`: додавати оновлення попереднього перегляду фрагментами.
- `progress`: показувати текст стану прогресу під час генерації, а потім надсилати фінальний текст.
- `streaming.preview.toolProgress`: коли активний чернетковий попередній перегляд, спрямовувати оновлення інструментів/прогресу до того самого редагованого повідомлення попереднього перегляду (типово: `true`). Установіть `false`, щоб залишити окремі повідомлення інструментів/прогресу.
- `streaming.preview.toolProgress`: коли активний чорновий попередній перегляд, спрямовувати оновлення інструментів/прогресу в те саме редаговане повідомлення попереднього перегляду (за замовчуванням: `true`). Встановіть `false`, щоб зберегти окремі повідомлення інструментів/прогресу.
`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (типово: `true`).
`channels.slack.streaming.nativeTransport` керує нативним потоковим передаванням тексту Slack, коли `channels.slack.streaming.mode` має значення `partial` (за замовчуванням: `true`).
- Для нативного потокового передавання тексту та появи стану треду асистента Slack має бути доступний тред відповіді. Вибір треду все одно відбувається за `replyToMode`.
- Кореневі повідомлення в каналах і групових чатах все ще можуть використовувати звичайний чернетковий попередній перегляд, коли нативне потокове передавання недоступне.
- DM верхнього рівня в Slack типово залишаються поза тредами, тому не показують попередній перегляд у стилі треду; використовуйте відповіді в тредах або `typingReaction`, якщо хочете видимий прогрес там.
- Медіа та нетекстові payload повертаються до звичайної доставки.
- Фінальні медіа/помилки скасовують відкладені редагування попереднього перегляду; придатні текстові/block фінали скидаються лише тоді, коли можуть відредагувати попередній перегляд на місці.
- Якщо потокове передавання переривається посеред відповіді, OpenClaw повертається до звичайної доставки для решти payload.
- Щоб з’явилося нативне потокове передавання тексту та статус треду Slack assistant, має бути доступний тред відповіді. Вибір треду, як і раніше, підпорядковується `replyToMode`.
- Кореневі повідомлення каналів і групових чатів усе ще можуть використовувати звичайний чорновий попередній перегляд, коли нативне потокове передавання недоступне.
- Особисті повідомлення Slack верхнього рівня за замовчуванням лишаються поза тредами, тому не показують попередній перегляд у стилі треду; використовуйте відповіді в треді або `typingReaction`, якщо хочете видимий прогрес там.
- Медіа та нетекстові корисні навантаження використовують резервну звичайну доставку.
- Фінальні повідомлення з медіа/помилками скасовують відкладені редагування попереднього перегляду; придатні фінальні текстові/блокові повідомлення скидаються лише тоді, коли можуть відредагувати попередній перегляд на місці.
- Якщо потокове передавання зривається посеред відповіді, OpenClaw переходить на звичайну доставку для решти корисних навантажень.
Використовуйте чернетковий попередній перегляд замість нативного потокового передавання тексту Slack:
Використовуйте чорновий попередній перегляд замість нативного потокового передавання тексту Slack:
```json5
{
@ -592,11 +592,11 @@ openclaw gateway
- `channels.slack.streamMode` (`replace | status_final | append`) автоматично мігрується до `channels.slack.streaming.mode`.
- булеве `channels.slack.streaming` автоматично мігрується до `channels.slack.streaming.mode` і `channels.slack.streaming.nativeTransport`.
- застаріле `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`.
- застарілий `channels.slack.nativeStreaming` автоматично мігрується до `channels.slack.streaming.nativeTransport`.
## Резервна реакція друку
## Резервна реакція набору тексту
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її після завершення виконання. Це найкорисніше поза відповідями в тредах, де використовується типовий індикатор стану "is typing...".
`typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки OpenClaw обробляє відповідь, а потім видаляє її, коли виконання завершується. Це особливо корисно поза відповідями в тредах, які використовують типовий індикатор стану "is typing...".
Порядок визначення:
@ -606,39 +606,39 @@ openclaw gateway
Примітки:
- Slack очікує shortcodes (наприклад, `"hourglass_flowing_sand"`).
- Реакція є best-effort, і після завершення відповіді або шляху помилки автоматично виконується спроба очищення.
- Реакція виконується за можливості, а очищення автоматично намагається виконатися після завершення відповіді або шляху помилки.
## Медіа, розбиття на частини та доставка
<AccordionGroup>
<Accordion title="Вхідні вкладення">
Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та це дозволяють обмеження розміру.
Вкладення файлів Slack завантажуються з приватних URL-адрес, розміщених у Slack (потік запитів з автентифікацією токеном), і записуються до сховища медіа, якщо отримання успішне та дозволяють обмеження розміру.
Типове обмеження розміру для вхідних даних у runtime становить `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
Обмеження розміру вхідних даних у runtime за замовчуванням становить `20MB`, якщо не перевизначено через `channels.slack.mediaMaxMb`.
</Accordion>
<Accordion title="Вихідний текст і файли">
- текстові частини використовують `channels.slack.textChunkLimit` (типово 4000)
- текстові частини використовують `channels.slack.textChunkLimit` (за замовчуванням 4000)
- `channels.slack.chunkMode="newline"` вмикає розбиття спочатку за абзацами
- надсилання файлів використовує API завантаження Slack і може включати відповіді в тредах (`thread_ts`)
- обмеження вихідних медіа дотримується `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання в канали використовує типові значення MIME-kind з медіапайплайна
- обмеження вихідних медіа використовує `channels.slack.mediaMaxMb`, якщо налаштовано; інакше надсилання каналами використовує типові значення MIME-kind з медіа-конвеєра
</Accordion>
<Accordion title="Цілі доставки">
Рекомендовані явні цілі:
Бажані явні цілі:
- `user:<id>` для DM
- `user:<id>` для особистих повідомлень
- `channel:<id>` для каналів
DM у Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
Особисті повідомлення Slack відкриваються через API розмов Slack під час надсилання до цілей користувача.
</Accordion>
</AccordionGroup>
## Команди та поведінка слеш-команд
## Команди та поведінка slash-команд
Слеш-команди з’являються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди:
Slash-команди з’являються в Slack або як одна налаштована команда, або як кілька нативних команд. Налаштуйте `channels.slack.slashCommand`, щоб змінити типові параметри команди:
- `enabled: false`
- `name: "openclaw"`
@ -649,7 +649,7 @@ openclaw gateway
/openclaw /help
```
Нативні команди потребують [додаткових параметрів маніфесту](#additional-manifest-settings) у вашому застосунку Slack і вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях.
Нативні команди потребують [додаткових налаштувань маніфесту](#additional-manifest-settings) у вашому застосунку Slack і вмикаються через `channels.slack.commands.native: true` або `commands.native: true` у глобальних конфігураціях натомість.
- Автоматичний режим нативних команд **вимкнено** для Slack, тому `commands.native: "auto"` не вмикає нативні команди Slack.
@ -657,24 +657,24 @@ openclaw gateway
/help
```
Нативні меню аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед надсиланням вибраного значення параметра:
Нативні меню аргументів використовують адаптивну стратегію рендерингу, яка показує модальне вікно підтвердження перед відправленням вибраного значення параметра:
- до 5 параметрів: блоки кнопок
- 6-100 параметрів: статичне меню вибору
- понад 100 параметрів: зовнішній вибір з асинхронною фільтрацією параметрів, якщо доступні обробники параметрів interactivity
- перевищення обмежень Slack: закодовані значення параметрів повертаються до кнопок
- до 5 варіантів: блоки кнопок
- 6-100 варіантів: статичне меню вибору
- понад 100 варіантів: зовнішній вибір з асинхронною фільтрацією варіантів, коли доступні обробники параметрів interactivity
- перевищено обмеження Slack: закодовані значення варіантів повертаються до кнопок
```txt
/think
```
Сесії слеш-команд використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
Сесії slash-команд використовують ізольовані ключі на кшталт `agent:<agentId>:slack:slash:<userId>` і все одно маршрутизують виконання команд до цільової сесії розмови за допомогою `CommandTargetSessionKey`.
## Інтерактивні відповіді
Slack може відображати інтерактивні елементи керування відповідями, створеними агентом, але ця можливість типово вимкнена.
Slack може відтворювати інтерактивні елементи відповіді, створені агентом, але цю функцію за замовчуванням вимкнено.
Увімкнути глобально:
Увімкніть її глобально:
```json5
{
@ -688,7 +688,7 @@ Slack може відображати інтерактивні елементи
}
```
Або увімкнути лише для одного облікового запису Slack:
Або увімкніть її лише для одного облікового запису Slack:
```json5
{
@ -706,44 +706,43 @@ Slack може відображати інтерактивні елементи
}
```
Коли це ввімкнено, агенти можуть створювати директиви відповіді лише для Slack:
Коли функцію ввімкнено, агенти можуть генерувати директиви відповідей лише для Slack:
- `[[slack_buttons: Approve:approve, Reject:reject]]`
- `[[slack_select: Choose a target | Canary:canary, Production:production]]`
Ці директиви компілюються в Slack Block Kit і спрямовують кліки або вибір назад через наявний шлях подій взаємодії Slack.
Ці директиви компілюються в Slack Block Kit і маршрутизують натискання або вибори назад через наявний шлях подій взаємодії Slack.
Примітки:
- Це UI, специфічний для Slack. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
- Значення інтерактивних callback — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw повертається до вихідної текстової відповіді замість надсилання невалідного payload блоків.
- Це специфічний для Slack інтерфейс. Інші канали не перекладають директиви Slack Block Kit у власні системи кнопок.
- Значення інтерактивних зворотних викликів — це непрозорі токени, згенеровані OpenClaw, а не сирі значення, створені агентом.
- Якщо згенеровані інтерактивні блоки перевищують обмеження Slack Block Kit, OpenClaw використовує резервну оригінальну текстову відповідь замість надсилання недійсного payload blocks.
## Підтвердження exec у Slack
## Погодження exec у Slack
Slack може діяти як нативний клієнт підтвердження з інтерактивними кнопками та взаємодіями замість повернення до Web UI або термінала.
Slack може працювати як нативний клієнт погодження з інтерактивними кнопками та взаємодіями замість резервного переходу до Web UI або термінала.
- Підтвердження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації DM/каналів.
- Підтвердження Plugin також можуть визначатися через ту саму нативну поверхню кнопок Slack, коли запит уже надходить у Slack і тип id підтвердження має вигляд `plugin:`.
- Авторизація тих, хто підтверджує, як і раніше, примусово застосовується: лише користувачі, визначені як ті, хто підтверджує, можуть схвалювати або відхиляти запити через Slack.
- Погодження exec використовують `channels.slack.execApprovals.*` для нативної маршрутизації до особистих повідомлень/каналів.
- Погодження Plugin також можуть визначатися через ту саму Slack-native поверхню кнопок, коли запит уже потрапляє в Slack і тип id погодження — `plugin:`.
- Авторизація затверджувача все одно примусово виконується: лише користувачі, визначені як затверджувачі, можуть підтверджувати або відхиляти запити через Slack.
Це використовує ту саму спільну поверхню кнопок підтвердження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на підтвердження відображаються як кнопки Block Kit безпосередньо в розмові.
Коли ці кнопки присутні, вони є основним UX підтвердження; OpenClaw
має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує, що
підтвердження в чаті недоступні або ручне підтвердження є єдиним шляхом.
Це використовує ту саму спільну поверхню кнопок погодження, що й інші канали. Коли `interactivity` увімкнено в налаштуваннях вашого застосунку Slack, запити на погодження відображаються як кнопки Block Kit безпосередньо в розмові.
Коли ці кнопки присутні, вони є основним UX погодження; OpenClaw
має включати ручну команду `/approve` лише тоді, коли результат інструмента повідомляє, що погодження в чаті недоступні або ручне погодження — єдиний шлях.
Шлях конфігурації:
- `channels.slack.execApprovals.enabled`
- `channels.slack.execApprovals.approvers` (необов’язково; за можливості використовується резервне значення `commands.ownerAllowFrom`)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, типово: `dm`)
- `channels.slack.execApprovals.approvers` (необов’язково; використовує резервне значення з `commands.ownerAllowFrom`, коли це можливо)
- `channels.slack.execApprovals.target` (`dm` | `channel` | `both`, за замовчуванням: `dm`)
- `agentFilter`, `sessionFilter`
Slack автоматично вмикає нативні підтвердження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
approver. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт підтвердження.
Установіть `enabled: true`, щоб примусово ввімкнути нативні підтвердження, коли approver-и визначаються.
Slack автоматично вмикає нативні погодження exec, коли `enabled` не задано або має значення `"auto"` і визначається принаймні один
затверджувач. Установіть `enabled: false`, щоб явно вимкнути Slack як нативний клієнт погодження.
Установіть `enabled: true`, щоб примусово ввімкнути нативні погодження, коли визначаються затверджувачі.
Типова поведінка без явної конфігурації підтверджень exec для Slack:
Типова поведінка без явної конфігурації погоджень exec для Slack:
```json5
{
@ -753,8 +752,8 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
Явна нативна конфігурація Slack потрібна лише тоді, коли ви хочете перевизначити approver-ів, додати фільтри або
вибрати доставку в чат-джерело:
Явна Slack-native конфігурація потрібна лише тоді, коли ви хочете перевизначити затверджувачів, додати фільтри або
вибрати доставку в чат походження:
```json5
{
@ -770,42 +769,42 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
}
```
Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на підтвердження exec також мають
маршрутизуватися до інших чатів або явних цілей поза поточним каналом. Спільне переспрямування `approvals.plugin` також
налаштовується окремо; нативні кнопки Slack усе ще можуть обробляти підтвердження Plugin, коли такі запити вже надходять
Спільне переспрямування `approvals.exec` налаштовується окремо. Використовуйте його лише тоді, коли запити на погодження exec також мають
маршрутизуватися до інших чатів або явно визначених позасмугових цілей. Спільне переспрямування `approvals.plugin` також
налаштовується окремо; Slack-native кнопки все одно можуть визначати погодження Plugin, коли ці запити вже надходять
у Slack.
`/approve` у тому самому чаті також працює в каналах Slack і DM, які вже підтримують команди. Див. [Підтвердження exec](/uk/tools/exec-approvals) для повної моделі переспрямування підтверджень.
`/approve` у тому самому чаті також працює в каналах і особистих повідомленнях Slack, які вже підтримують команди. Див. [Погодження exec](/uk/tools/exec-approvals) для повної моделі переспрямування погоджень.
## Події та операційна поведінка
- Редагування/видалення повідомлень і трансляції тредів зіставляються із системними подіями.
- Редагування/видалення повідомлень і широкомовні повідомлення тредів зіставляються із системними подіями.
- Події додавання/видалення реакцій зіставляються із системними подіями.
- Події входу/виходу учасників, створення/перейменування каналів і додавання/видалення закріплень зіставляються із системними подіями.
- `channel_id_changed` може мігрувати ключі конфігурації каналів, коли ввімкнено `configWrites`.
- Метадані topic/purpose каналу вважаються недовіреним контекстом і можуть бути вставлені в контекст маршрутизації.
- Ініціатор треду та початкове заповнення контексту історії треду фільтруються за налаштованими allowlist відправників, коли це застосовно.
- Дії блоків і взаємодії з модальними вікнами створюють структуровані системні події `Slack interaction: ...` з розширеними полями payload:
- дії блоків: вибрані значення, мітки, значення picker і метадані `workflow_*`
- події модальних вікон `view_submission` і `view_closed` з маршрутизованими метаданими каналів і введенням форми
- `channel_id_changed` може переносити ключі конфігурації каналу, коли ввімкнено `configWrites`.
- Метадані теми/призначення каналу вважаються недовіреним контекстом і можуть бути впроваджені в контекст маршрутизації.
- Автор треду та початкове заповнення контексту історії треду фільтруються відповідно до налаштованих allowlist відправників, коли це застосовно.
- Дії блоків і взаємодії з модальними вікнами генерують структуровані системні події `Slack interaction: ...` із розширеними полями payload:
- дії блоків: вибрані значення, мітки, значення вибору та метадані `workflow_*`
- події модальних вікон `view_submission` і `view_closed` із маршрутизованими метаданими каналу та введенням форми
## Довідник конфігурації
Основний довідник: [Довідник конфігурації - Slack](/uk/gateway/config-channels#slack).
<Accordion title="Високосигнальні поля Slack">
<Accordion title="Найважливіші поля Slack">
- mode/auth: `mode`, `botToken`, `appToken`, `signingSecret`, `webhookPath`, `accounts.*`
- доступ DM: `dm.enabled`, `dmPolicy`, `allowFrom` (застаріле: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; тримайте вимкненим, якщо немає потреби)
- доступ до особистих повідомлень: `dm.enabled`, `dmPolicy`, `allowFrom` (застарілі: `dm.policy`, `dm.allowFrom`), `dm.groupEnabled`, `dm.groupChannels`
- перемикач сумісності: `dangerouslyAllowNameMatching` (аварійний варіант; не вмикайте без потреби)
- доступ до каналів: `groupPolicy`, `channels.*`, `channels.*.users`, `channels.*.requireMention`
- треди/історія: `replyToMode`, `replyToModeByChatType`, `thread.*`, `historyLimit`, `dmHistoryLimit`, `dms.*.historyLimit`
- доставка: `textChunkLimit`, `chunkMode`, `mediaMaxMb`, `streaming`, `streaming.nativeTransport`, `streaming.preview.toolProgress`
- операції/можливості: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
- операції/функції: `configWrites`, `commands.native`, `slashCommand.*`, `actions.*`, `userToken`, `userTokenReadOnly`
</Accordion>
## Усунення несправностей
## Усунення проблем
<AccordionGroup>
<Accordion title="Немає відповідей у каналах">
@ -814,7 +813,7 @@ approver. Установіть `enabled: false`, щоб явно вимкнут
- `groupPolicy`
- allowlist каналів (`channels.slack.channels`)
- `requireMention`
- allowlist `users` для кожного каналу
- allowlist `users` на рівні каналу
Корисні команди:
@ -826,12 +825,12 @@ openclaw doctor
</Accordion>
<Accordion title="Повідомлення в DM ігноруються">
<Accordion title="Повідомлення в особистих повідомленнях ігноруються">
Перевірте:
- `channels.slack.dm.enabled`
- `channels.slack.dmPolicy` (або застаріле `channels.slack.dm.policy`)
- підтвердження pairing / записи allowlist
- погодження сполучення / записи allowlist
```bash
openclaw pairing list slack
@ -845,7 +844,7 @@ openclaw pairing list slack
Якщо `openclaw channels status --probe --json` показує `botTokenStatus` або
`appTokenStatus: "configured_unavailable"`, обліковий запис Slack
налаштовано, але поточний runtime не зміг визначити значення,
що надається через SecretRef.
що підтримується SecretRef.
</Accordion>
@ -854,20 +853,20 @@ openclaw pairing list slack
- signing secret
- шлях webhook
- URL-адреси запитів Slack (Events + Interactivity + Slash Commands)
- Slack Request URLs (Events + Interactivity + Slash Commands)
- унікальний `webhookPath` для кожного HTTP-облікового запису
Якщо `signingSecretStatus: "configured_unavailable"` з’являється у знімках
облікового запису, HTTP-обліковий запис налаштовано, але поточний runtime не зміг
визначити signing secret, що надається через SecretRef.
визначити signing secret, що підтримується SecretRef.
</Accordion>
<Accordion title="Нативні/slash-команди не спрацьовують">
Переконайтеся, що ви мали на увазі:
Перевірте, який саме режим ви мали на увазі:
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними слеш-командами, зареєстрованими в Slack
- або режим однієї слеш-команди (`channels.slack.slashCommand.enabled: true`)
- режим нативних команд (`channels.slack.commands.native: true`) з відповідними slash-командами, зареєстрованими в Slack
- або режим однієї slash-команди (`channels.slack.slashCommand.enabled: true`)
Також перевірте `commands.useAccessGroups` і allowlist каналів/користувачів.
@ -881,7 +880,7 @@ openclaw pairing list slack
Зв’яжіть користувача Slack із Gateway.
</Card>
<Card title="Групи" icon="users" href="/uk/channels/groups">
Поведінка каналів і групових DM.
Поведінка каналів і групових особистих повідомлень.
</Card>
<Card title="Маршрутизація каналів" icon="route" href="/uk/channels/channel-routing">
Маршрутизуйте вхідні повідомлення до агентів.
@ -892,7 +891,7 @@ openclaw pairing list slack
<Card title="Конфігурація" icon="sliders" href="/uk/gateway/configuration">
Структура конфігурації та пріоритетність.
</Card>
<Card title="Слеш-команди" icon="terminal" href="/uk/tools/slash-commands">
<Card title="Slash-команди" icon="terminal" href="/uk/tools/slash-commands">
Каталог команд і поведінка.
</Card>
</CardGroup>

View File

@ -1,21 +1,20 @@
---
read_when:
- Додавання або зміна CLI моделей (models list/set/scan/aliases/fallbacks)
- Зміна поведінки fallbacks моделі або UX вибору
- Оновлення probes сканування моделей (tools/images)
summary: 'CLI моделей: list, set, aliases, fallbacks, scan, status'
- Додавання або змінення CLI моделей (`models list/set/scan/aliases/fallbacks`)
- Зміна поведінки резервних варіантів моделі або UX вибору
- Оновлення перевірок сканування моделей (інструменти/зображення)
summary: 'CLI моделей: список, встановлення, псевдоніми, резервні варіанти, сканування, стан'
title: CLI моделей
x-i18n:
generated_at: "2026-04-24T03:44:01Z"
generated_at: "2026-04-24T17:24:56Z"
model: gpt-5.4
provider: openai
source_hash: 12f784984c87b33e645ec296f7f93ec3acc2a91efa3b63d3a912a6b09b90e048
source_hash: 5c036097a5093f0ce304fd08b7ae22ccf5102eb6f511a9a2018a8d4712e43648
source_path: concepts/models.md
workflow: 15
---
Див. [/concepts/model-failover](/uk/concepts/model-failover) щодо ротації профілів авторизації,
cooldowns і того, як це взаємодіє з fallbacks.
Див. [/concepts/model-failover](/uk/concepts/model-failover) щодо ротації профілів автентифікації, періодів охолодження та того, як це взаємодіє з резервними варіантами.
Короткий огляд провайдерів + приклади: [/concepts/model-providers](/uk/concepts/model-providers).
## Як працює вибір моделі
@ -23,84 +22,83 @@ cooldowns і того, як це взаємодіє з fallbacks.
OpenClaw вибирає моделі в такому порядку:
1. **Основна** модель (`agents.defaults.model.primary` або `agents.defaults.model`).
2. **Fallbacks** у `agents.defaults.model.fallbacks` (у порядку).
3. **Provider auth failover** відбувається всередині провайдера перед переходом до
наступної моделі.
2. **Резервні варіанти** у `agents.defaults.model.fallbacks` (по порядку).
3. **Резервне перемикання автентифікації провайдера** відбувається всередині провайдера перед переходом до наступної моделі.
Пов’язане:
- `agents.defaults.models` — це allowlist/каталог моделей, які може використовувати OpenClaw (разом з aliases).
- `agents.defaults.imageModel` використовується **лише тоді, коли** основна модель не може приймати зображення.
- `agents.defaults.pdfModel` використовується інструментом `pdf`. Якщо його не задано, інструмент
переходить до `agents.defaults.imageModel`, а потім до визначеної моделі сесії/за замовчуванням.
- `agents.defaults.imageGenerationModel` використовується спільною можливістю генерації зображень. Якщо його не задано, `image_generate` усе одно може визначити значення за замовчуванням провайдера з авторизацією. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id. Якщо ви задаєте конкретний provider/model, також налаштуйте авторизацію/API key цього провайдера.
- `agents.defaults.musicGenerationModel` використовується спільною можливістю генерації музики. Якщо його не задано, `music_generate` усе одно може визначити значення за замовчуванням провайдера з авторизацією. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації музики у порядку provider-id. Якщо ви задаєте конкретний provider/model, також налаштуйте авторизацію/API key цього провайдера.
- `agents.defaults.videoGenerationModel` використовується спільною можливістю генерації відео. Якщо його не задано, `video_generate` усе одно може визначити значення за замовчуванням провайдера з авторизацією. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації відео у порядку provider-id. Якщо ви задаєте конкретний provider/model, також налаштуйте авторизацію/API key цього провайдера.
- Значення за замовчуванням для окремого агента можуть перевизначати `agents.defaults.model` через `agents.list[].model` разом із bindings (див. [/concepts/multi-agent](/uk/concepts/multi-agent)).
- `agents.defaults.models` — це allowlist/каталог моделей, які OpenClaw може використовувати (плюс псевдоніми).
- `agents.defaults.imageModel` використовується **лише тоді**, коли основна модель не може приймати зображення.
- `agents.defaults.pdfModel` використовується інструментом `pdf`. Якщо його не вказано, інструмент
переходить до `agents.defaults.imageModel`, а потім до визначеної моделі сеансу/типової моделі.
- `agents.defaults.imageGenerationModel` використовується спільною можливістю генерації зображень. Якщо його не вказано, `image_generate` усе одно може визначити типове значення провайдера з підтримкою автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id. Якщо ви задаєте конкретний провайдер/модель, також налаштуйте автентифікацію/API key цього провайдера.
- `agents.defaults.musicGenerationModel` використовується спільною можливістю генерації музики. Якщо його не вказано, `music_generate` усе одно може визначити типове значення провайдера з підтримкою автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації музики у порядку provider-id. Якщо ви задаєте конкретний провайдер/модель, також налаштуйте автентифікацію/API key цього провайдера.
- `agents.defaults.videoGenerationModel` використовується спільною можливістю генерації відео. Якщо його не вказано, `video_generate` усе одно може визначити типове значення провайдера з підтримкою автентифікації. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації відео у порядку provider-id. Якщо ви задаєте конкретний провайдер/модель, також налаштуйте автентифікацію/API key цього провайдера.
- Типові значення для окремих агентів можуть перевизначати `agents.defaults.model` через `agents.list[].model` разом із прив’язками (див. [/concepts/multi-agent](/uk/concepts/multi-agent)).
## Швидка політика моделей
## Коротка політика вибору моделі
- Установіть як основну найсильнішу модель останнього покоління, доступну вам.
- Використовуйте fallbacks для завдань, чутливих до вартості/затримки, і менш критичних чатів.
- Для агентів з увімкненими інструментами або недовірених входів уникайте старіших/слабших рівнів моделей.
- Встановіть як основну найсильнішу модель останнього покоління, яка вам доступна.
- Використовуйте резервні варіанти для завдань, чутливих до вартості/затримки, і для менш критичного чату.
- Для агентів з увімкненими інструментами або недовірених вхідних даних уникайте старіших/слабших рівнів моделей.
## Онбординг (рекомендовано)
Якщо ви не хочете вручну редагувати config, запустіть онбординг:
Якщо ви не хочете редагувати конфігурацію вручну, запустіть онбординг:
```bash
openclaw onboard
```
Він може налаштувати модель + авторизацію для поширених провайдерів, включно з **OpenAI Code (Codex)
subscription** (OAuth) і **Anthropic** (API key або Claude CLI).
Він може налаштувати модель + автентифікацію для поширених провайдерів, зокрема **OpenAI Code (Codex)
subscription** (OAuth) та **Anthropic** (API key або Claude CLI).
## Ключі config (огляд)
## Ключі конфігурації (огляд)
- `agents.defaults.model.primary` і `agents.defaults.model.fallbacks`
- `agents.defaults.imageModel.primary` і `agents.defaults.imageModel.fallbacks`
- `agents.defaults.pdfModel.primary` і `agents.defaults.pdfModel.fallbacks`
- `agents.defaults.imageGenerationModel.primary` і `agents.defaults.imageGenerationModel.fallbacks`
- `agents.defaults.videoGenerationModel.primary` і `agents.defaults.videoGenerationModel.fallbacks`
- `agents.defaults.models` (allowlist + aliases + параметри провайдера)
- `models.providers` (власні провайдери, записані в `models.json`)
- `agents.defaults.models` (allowlist + псевдоніми + параметри провайдера)
- `models.providers` (користувацькі провайдери, записані в `models.json`)
Посилання на моделі нормалізуються до нижнього регістру. Aliases провайдерів, як-от `z.ai/*`, нормалізуються
Посилання на моделі нормалізуються до нижнього регістру. Псевдоніми провайдерів, як-от `z.ai/*`, нормалізуються
до `zai/*`.
Приклади конфігурації провайдерів (включно з OpenCode) наведено в
Приклади конфігурації провайдерів (зокрема OpenCode) наведені в
[/providers/opencode](/uk/providers/opencode).
### Безпечне редагування allowlist
Використовуйте адитивні записи під час ручного оновлення `agents.defaults.models`:
Під час ручного оновлення `agents.defaults.models` використовуйте додавальні записи:
```bash
openclaw config set agents.defaults.models '{"openai/gpt-5.4":{}}' --strict-json --merge
```
`openclaw config set` захищає мапи моделей/провайдерів від випадкового перезапису. Звичайне
`openclaw config set` захищає мапи моделей/провайдерів від випадкового перезапису. Просте
присвоєння об’єкта для `agents.defaults.models`, `models.providers` або
`models.providers.<id>.models` відхиляється, якщо воно видалить наявні
записи. Використовуйте `--merge` для адитивних змін; використовуйте `--replace` лише тоді, коли
надане значення має стати повним цільовим значенням.
`models.providers.<id>.models` відхиляється, якщо воно призведе до видалення наявних
записів. Для додавальних змін використовуйте `--merge`; `--replace` використовуйте лише тоді, коли
передане значення має стати повним цільовим значенням.
Інтерактивне налаштування провайдера і `openclaw configure --section model` також об’єднують
вибір у межах провайдера з наявним allowlist, тож додавання Codex,
Ollama або іншого провайдера не видаляє незв’язані записи моделей.
Інтерактивне налаштування провайдера та `openclaw configure --section model` також об’єднують
вибрані значення в межах провайдера з наявним allowlist, тож додавання Codex,
Ollama або іншого провайдера не видаляє не пов’язані записи моделей.
## «Model is not allowed» (і чому відповіді зупиняються)
## "Model is not allowed" (і чому відповіді зупиняються)
Якщо задано `agents.defaults.models`, воно стає **allowlist** для `/model` і для
перевизначень сесії. Коли користувач вибирає модель, якої немає в цьому allowlist,
Якщо задано `agents.defaults.models`, він стає **allowlist** для `/model` і для
перевизначень сеансу. Коли користувач вибирає модель, якої немає в цьому allowlist,
OpenClaw повертає:
```
Model "provider/model" is not allowed. Use /model to list available models.
```
Це відбувається **до** генерації звичайної відповіді, тому повідомлення може виглядати
так, ніби «відповіді не було». Виправлення:
Це відбувається **до** генерації звичайної відповіді, тому повідомлення може створювати
враження, ніби система «не відповіла». Виправити це можна так:
- Додати модель до `agents.defaults.models`, або
- Очистити allowlist (видалити `agents.defaults.models`), або
@ -122,9 +120,9 @@ Model "provider/model" is not allowed. Use /model to list available models.
## Перемикання моделей у чаті (`/model`)
Ви можете перемикати моделі для поточної сесії без перезапуску:
Ви можете перемикати моделі для поточного сеансу без перезапуску:
```text
```
/model
/model list
/model 3
@ -134,36 +132,26 @@ Model "provider/model" is not allowed. Use /model to list available models.
Примітки:
- `/model` (і `/model list`) — це компактний нумерований вибір (сімейство моделей + доступні провайдери).
- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера й моделі та кроком Submit.
- `/models add` доступна за замовчуванням і може бути вимкнена через `commands.modelsWrite=false`.
- Якщо увімкнено, `/models add <provider> <modelId>` — найшвидший шлях; просто `/models add` запускає керований потік спочатку з вибором провайдера, де це підтримується.
- Після `/models add` нова модель стає доступною в `/models` і `/model` без перезапуску gateway.
- `/model <#>` вибирає з цього засобу вибору.
- `/model` негайно зберігає новий вибір сесії.
- Якщо агент неактивний, наступний запуск одразу використовує нову модель.
- Якщо запуск уже активний, OpenClaw позначає перемикання під час роботи як очікуване й перезапускає з новою моделлю лише в чистій точці повторної спроби.
- Якщо активність інструмента або виведення відповіді вже почалися, очікуване перемикання може залишатися в черзі до наступної можливості повторної спроби або наступного ходу користувача.
- `/model status` — це докладний вигляд (кандидати авторизації та, коли налаштовано, `baseUrl` endpoint провайдера + режим `api`).
- Посилання на моделі розбираються за першим `/`. Використовуйте `provider/model`, коли вводите `/model <ref>`.
- Якщо сам ID моделі містить `/` (у стилі OpenRouter), ви маєте вказати префікс провайдера (приклад: `/model openrouter/moonshotai/kimi-k2`).
- Якщо ви не вказали провайдера, OpenClaw визначає введення в такому порядку:
1. збіг alias
2. унікальний збіг налаштованого провайдера для точного model id без префікса
3. застарілий резервний перехід до налаштованого провайдера за замовчуванням
Якщо цей провайдер більше не надає налаштовану модель за замовчуванням, OpenClaw
- `/model` (і `/model list`) — це компактний нумерований вибірник (сімейство моделей + доступні провайдери).
- У Discord `/model` і `/models` відкривають інтерактивний вибірник із випадними списками провайдера та моделі, а також кроком Submit.
- `/models add` застарів і тепер повертає повідомлення про застарілість замість реєстрації моделей із чату.
- `/model <#>` вибирає зі списку цього вибірника.
- `/model` негайно зберігає новий вибір сеансу.
- Якщо агент неактивний, наступний запуск одразу використає нову модель.
- Якщо запуск уже активний, OpenClaw позначає перемикання в реальному часі як очікуване та перезапускається з новою моделлю лише в чистій точці повторної спроби.
- Якщо активність інструмента або виведення відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або до наступного ходу користувача.
- `/model status` — це докладне подання (кандидати автентифікації та, якщо налаштовано, `baseUrl` кінцевої точки провайдера + режим `api`).
- Посилання на модель розбираються за **першим** `/`. Під час введення `/model <ref>` використовуйте `provider/model`.
- Якщо сам ID моделі містить `/` (у стилі OpenRouter), ви маєте включити префікс провайдера (приклад: `/model openrouter/moonshotai/kimi-k2`).
- Якщо ви пропускаєте провайдера, OpenClaw визначає введення в такому порядку:
1. збіг псевдоніма
2. унікальний збіг налаштованого провайдера для цього точного ID моделі без префікса
3. застарілий резервний перехід до налаштованого типового провайдера
Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw
натомість переходить до першого налаштованого провайдера/моделі, щоб уникнути
показу застарілого значення за замовчуванням від видаленого провайдера.
показу застарілого типового значення від видаленого провайдера.
Повна поведінка/конфігурація команд: [Слеш-команди](/uk/tools/slash-commands).
Приклади:
```text
/models add
/models add ollama glm-5.1:cloud
/models add lmstudio qwen/qwen3.5-9b
```
Повна поведінка/конфігурація команди: [Слеш-команди](/uk/tools/slash-commands).
## Команди CLI
@ -192,40 +180,36 @@ openclaw models image-fallbacks clear
### `models list`
За замовчуванням показує налаштовані моделі. Корисні прапорці:
Типово показує налаштовані моделі. Корисні прапорці:
- `--all`: повний каталог
- `--local`: лише локальні провайдери
- `--provider <id>`: фільтр за id провайдера, наприклад `moonshot`; display
labels з інтерактивних засобів вибору не приймаються
- `--provider <id>`: фільтр за id провайдера, наприклад `moonshot`; мітки відображення з інтерактивних вибірників не приймаються
- `--plain`: одна модель на рядок
- `--json`: машинозчитуваний вивід
`--all` включає вбудовані статичні рядки каталогу, що належать провайдеру, ще до налаштування авторизації,
тому подання лише для виявлення можуть показувати моделі, недоступні, доки
`--all` включає рядки статичного каталогу вбудованих провайдерів ще до налаштування автентифікації, тож у режимах лише для виявлення можуть показуватися моделі, недоступні доти, доки
ви не додасте відповідні облікові дані провайдера.
### `models status`
Показує визначену основну модель, fallbacks, image model та огляд
авторизації налаштованих провайдерів. Також показує статус завершення строку дії OAuth для профілів, знайдених
у сховищі авторизації (за замовчуванням попереджає за 24 години). `--plain` виводить лише
Показує визначену основну модель, резервні варіанти, модель зображень і огляд
автентифікації налаштованих провайдерів. Також відображає стан завершення строку OAuth для профілів, знайдених
у сховищі автентифікації (типово попереджає за 24 год). `--plain` виводить лише
визначену основну модель.
Статус OAuth показується завжди (і включається у вивід `--json`). Якщо налаштований
Стан OAuth показується завжди (і включається у вивід `--json`). Якщо налаштований
провайдер не має облікових даних, `models status` виводить розділ **Missing auth**.
JSON містить `auth.oauth` (вікно попередження + профілі) і `auth.providers`
(ефективна авторизація для кожного провайдера, включно з обліковими даними з env). `auth.oauth`
охоплює лише стан профілів сховища авторизації; провайдери лише з env там не з’являються.
Використовуйте `--check` для автоматизації (код виходу `1` для відсутніх/прострочених, `2` для тих, що скоро завершаться).
Використовуйте `--probe` для живих перевірок авторизації; рядки probe можуть походити з профілів авторизації, облікових даних env
JSON включає `auth.oauth` (вікно попередження + профілі) і `auth.providers`
(ефективна автентифікація для кожного провайдера, включно з обліковими даними з env). `auth.oauth`
стосується лише стану профілів у сховищі автентифікації; провайдери лише з env там не відображаються.
Використовуйте `--check` для автоматизації (код виходу `1`, коли бракує або прострочено, `2`, коли скоро спливає).
Використовуйте `--probe` для живих перевірок автентифікації; рядки probe можуть надходити з профілів автентифікації, облікових даних env
або `models.json`.
Якщо явний `auth.order.<provider>` пропускає збережений профіль,
probe повідомляє `excluded_by_auth_order` замість спроби його використати. Якщо авторизація існує, але для цього провайдера не вдається визначити модель, придатну для probe, probe повідомляє
`status: no_model`.
Якщо явний `auth.order.<provider>` пропускає збережений профіль, probe повідомляє
`excluded_by_auth_order` замість спроби використати його. Якщо автентифікація існує, але для цього провайдера не вдається визначити модель, придатну для probe, probe повідомляє `status: no_model`.
Вибір авторизації залежить від провайдера/облікового запису. Для завжди активних хостів gateway API
keys зазвичай є найпередбачуванішими; також підтримуються повторне використання Claude CLI та наявні
OAuth/token профілі Anthropic.
Вибір автентифікації залежить від провайдера/облікового запису. Для хостів Gateway, що працюють постійно, API
keys зазвичай є найпередбачуванішими; також підтримуються повторне використання Claude CLI та наявні профілі OAuth/token Anthropic.
Приклад (Claude CLI):
@ -237,61 +221,61 @@ openclaw models status
## Сканування (безкоштовні моделі OpenRouter)
`openclaw models scan` перевіряє **каталог безкоштовних моделей** OpenRouter і може
за потреби виконувати probe моделей на підтримку tools і зображень.
за бажанням виконувати probe моделей на підтримку інструментів і зображень.
Ключові прапорці:
Основні прапорці:
- `--no-probe`: пропустити живі probes (лише метадані)
- `--min-params <b>`: мінімальний розмір параметрів (мільярди)
- `--no-probe`: пропустити живі probe (лише метадані)
- `--min-params <b>`: мінімальний розмір параметрів (у мільярдах)
- `--max-age-days <days>`: пропустити старіші моделі
- `--provider <name>`: фільтр за префіксом провайдера
- `--max-candidates <n>`: розмір списку fallback
- `--set-default`: установити `agents.defaults.model.primary` на перший вибір
- `--set-image`: установити `agents.defaults.imageModel.primary` на перший вибір для зображень
- `--max-candidates <n>`: розмір списку резервних варіантів
- `--set-default`: встановити `agents.defaults.model.primary` на перший вибір
- `--set-image`: встановити `agents.defaults.imageModel.primary` на перший вибір зображень
Probing потребує API key OpenRouter (із профілів авторизації або
Для probe потрібен API key OpenRouter (із профілів автентифікації або
`OPENROUTER_API_KEY`). Без ключа використовуйте `--no-probe`, щоб лише перелічити кандидатів.
Результати сканування ранжуються за:
1. Підтримкою зображень
2. Затримкою tools
2. Затримкою інструментів
3. Розміром контексту
4. Кількістю параметрів
Вхідні дані
- список OpenRouter `/models` (фільтр `:free`)
- потрібен API key OpenRouter із профілів авторизації або `OPENROUTER_API_KEY` (див. [/environment](/uk/help/environment))
- необов’язкові фільтри: `--max-age-days`, `--min-params`, `--provider`, `--max-candidates`
- керування probe: `--timeout`, `--concurrency`
- Список OpenRouter `/models` (фільтр `:free`)
- Потрібен API key OpenRouter із профілів автентифікації або `OPENROUTER_API_KEY` (див. [/environment](/uk/help/environment))
- Необов’язкові фільтри: `--max-age-days`, `--min-params`, `--provider`, `--max-candidates`
- Елементи керування probe: `--timeout`, `--concurrency`
Під час запуску в TTY ви можете інтерактивно вибирати fallbacks. У неінтерактивному
режимі передайте `--yes`, щоб прийняти значення за замовчуванням.
Під час запуску в TTY ви можете інтерактивно вибрати резервні варіанти. У неінтерактивному
режимі передайте `--yes`, щоб прийняти типові значення.
## Реєстр моделей (`models.json`)
Власні провайдери в `models.providers` записуються в `models.json` у каталозі
агента (за замовчуванням `~/.openclaw/agents/<agentId>/agent/models.json`). Цей файл
за замовчуванням об’єднується, якщо тільки `models.mode` не встановлено в `replace`.
Користувацькі провайдери в `models.providers` записуються до `models.json` у
каталозі агента (типово `~/.openclaw/agents/<agentId>/agent/models.json`). Цей файл
типово об’єднується, якщо тільки `models.mode` не встановлено в `replace`.
Пріоритет режиму merge для однакових ID провайдерів:
Пріоритет режиму merge для відповідних ID провайдерів:
- Непорожній `baseUrl`, уже наявний в `models.json` агента, має пріоритет.
- Непорожній `baseUrl`, уже наявний у `models.json` агента, має пріоритет.
- Непорожній `apiKey` у `models.json` агента має пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті config/auth-profile.
- Значення `apiKey` провайдера, керовані SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs) замість збереження визначених секретів.
- Значення заголовків провайдера, керовані SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs).
- Порожні або відсутні `apiKey`/`baseUrl` агента використовують резервні значення з config `models.providers`.
- Значення `apiKey` провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для посилань env, `secretref-managed` для посилань file/exec) замість збереження розгорнутих секретів.
- Значення заголовків провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для посилань env, `secretref-managed` для посилань file/exec).
- Порожні або відсутні `apiKey`/`baseUrl` агента переходять до config `models.providers`.
- Інші поля провайдера оновлюються з config і нормалізованих даних каталогу.
Збереження маркерів є авторитетним щодо джерела: OpenClaw записує маркери з активного знімка config джерела (до визначення), а не з визначених секретних значень runtime.
Це застосовується щоразу, коли OpenClaw повторно генерує `models.json`, включно зі шляхами, ініційованими командами, як-от `openclaw agent`.
Збереження маркерів визначається джерелом: OpenClaw записує маркери з активного знімка конфігурації джерела (до розв’язання), а не з розв’язаних значень секретів під час виконання.
Це застосовується щоразу, коли OpenClaw повторно генерує `models.json`, зокрема в шляхах, керованих командами, як-от `openclaw agent`.
## Пов’язане
- [Model Providers](/uk/concepts/model-providers) — маршрутизація провайдерів і авторизація
- [Model Failover](/uk/concepts/model-failover) — ланцюжки fallback
- [Image Generation](/uk/tools/image-generation) — конфігурація моделі зображень
- [Music Generation](/uk/tools/music-generation) — конфігурація моделі генерації музики
- [Video Generation](/uk/tools/video-generation) — конфігурація моделі генерації відео
- [Configuration Reference](/uk/gateway/config-agents#agent-defaults) — ключі config моделей
- [Провайдери моделей](/uk/concepts/model-providers) — маршрутизація провайдерів і автентифікація
- [Резервне перемикання моделей](/uk/concepts/model-failover) — ланцюжки резервних варіантів
- [Генерація зображень](/uk/tools/image-generation) — конфігурація моделі зображень
- [Генерація музики](/uk/tools/music-generation) — конфігурація моделі музики
- [Генерація відео](/uk/tools/video-generation) — конфігурація моделі відео
- [Довідник із конфігурації](/uk/gateway/config-agents#agent-defaults) — ключі конфігурації моделі