chore(i18n): refresh uk translations
This commit is contained in:
parent
ed9c831b62
commit
5a5bb10f2b
File diff suppressed because it is too large
Load Diff
@ -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>
|
||||
|
||||
@ -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) — ключі конфігурації моделі
|
||||
|
||||
Loading…
Reference in New Issue
Block a user