chore(i18n): refresh uk translations
This commit is contained in:
parent
28cd39920d
commit
cd0b286f4f
@ -1,15 +1,15 @@
|
||||
---
|
||||
read_when:
|
||||
- Налаштування OpenClaw уперше
|
||||
- Пошук типових шаблонів конфігурації
|
||||
- Навігація до певних розділів конфігурації
|
||||
summary: 'Огляд конфігурації: типові завдання, швидке налаштування та посилання на повний довідник'
|
||||
- Перше налаштування OpenClaw
|
||||
- Пошук поширених шаблонів конфігурації
|
||||
- Перехід до конкретних розділів конфігурації
|
||||
summary: 'Огляд конфігурації: поширені завдання, швидке налаштування та посилання на повний довідник'
|
||||
title: Конфігурація
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T18:03:50Z"
|
||||
generated_at: "2026-04-08T05:15:04Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: a39a7de09c5f9540785ec67f37d435a7a86201f0f5f640dae663054f35976712
|
||||
source_hash: 199a1e515bd4003319e71593a2659bb883299a76ff67e273d92583df03c96604
|
||||
source_path: gateway/configuration.md
|
||||
workflow: 15
|
||||
---
|
||||
@ -18,16 +18,16 @@ x-i18n:
|
||||
|
||||
OpenClaw читає необов’язкову конфігурацію <Tooltip tip="JSON5 supports comments and trailing commas">**JSON5**</Tooltip> з `~/.openclaw/openclaw.json`.
|
||||
|
||||
Якщо файл відсутній, OpenClaw використовує безпечні типові значення. Типові причини додати конфігурацію:
|
||||
Якщо файл відсутній, OpenClaw використовує безпечні значення за замовчуванням. Поширені причини додати конфігурацію:
|
||||
|
||||
- Підключити канали та визначити, хто може надсилати повідомлення боту
|
||||
- Задати моделі, інструменти, sandboxing або автоматизацію (cron, hooks)
|
||||
- Налаштувати моделі, інструменти, ізоляцію або автоматизацію (cron, hooks)
|
||||
- Налаштувати сесії, медіа, мережу або UI
|
||||
|
||||
Усі доступні поля див. у [повному довіднику](/gateway/configuration-reference).
|
||||
Див. [повний довідник](/uk/gateway/configuration-reference) для всіх доступних полів.
|
||||
|
||||
<Tip>
|
||||
**Вперше працюєте з конфігурацією?** Почніть з `openclaw onboard` для інтерактивного налаштування або перегляньте посібник [Приклади конфігурації](/gateway/configuration-examples) з готовими повними конфігураціями для копіювання.
|
||||
**Новачок у конфігурації?** Почніть із `openclaw onboard` для інтерактивного налаштування або перегляньте посібник [Приклади конфігурації](/uk/gateway/configuration-examples) із готовими повними конфігураціями для копіювання.
|
||||
</Tip>
|
||||
|
||||
## Мінімальна конфігурація
|
||||
@ -45,8 +45,8 @@ OpenClaw читає необов’язкову конфігурацію <Toolti
|
||||
<Tabs>
|
||||
<Tab title="Інтерактивний майстер">
|
||||
```bash
|
||||
openclaw onboard # full onboarding flow
|
||||
openclaw configure # config wizard
|
||||
openclaw onboard # повний процес початкового налаштування
|
||||
openclaw configure # майстер конфігурації
|
||||
```
|
||||
</Tab>
|
||||
<Tab title="CLI (однорядкові команди)">
|
||||
@ -58,63 +58,67 @@ OpenClaw читає необов’язкову конфігурацію <Toolti
|
||||
</Tab>
|
||||
<Tab title="Control UI">
|
||||
Відкрийте [http://127.0.0.1:18789](http://127.0.0.1:18789) і використовуйте вкладку **Config**.
|
||||
Control UI рендерить форму з live-схеми конфігурації, включно з метаданими документації полів
|
||||
`title` / `description`, а також схемами plugins і каналів, коли вони
|
||||
доступні, з редактором **Raw JSON** як запасним варіантом. Для UI з деталізацією
|
||||
та інших інструментів gateway також надає `config.schema.lookup`, щоб
|
||||
отримувати один вузол схеми, обмежений шляхом, і зведення для безпосередніх дочірніх елементів.
|
||||
Control UI відображає форму на основі актуальної схеми конфігурації, зокрема метадані документації полів
|
||||
`title` / `description`, а також схеми plugins і каналів, коли вони
|
||||
доступні, із редактором **Raw JSON** як запасним варіантом. Для деталізованих
|
||||
UI та інших інструментів gateway також надає `config.schema.lookup`, щоб
|
||||
отримати один вузол схеми, обмежений шляхом, разом із короткими зведеннями безпосередніх дочірніх елементів.
|
||||
</Tab>
|
||||
<Tab title="Пряме редагування">
|
||||
Редагуйте `~/.openclaw/openclaw.json` безпосередньо. Gateway стежить за файлом і автоматично застосовує зміни (див. [гаряче перезавантаження](#config-hot-reload)).
|
||||
Відредагуйте `~/.openclaw/openclaw.json` напряму. Gateway стежить за файлом і автоматично застосовує зміни (див. [гаряче перезавантаження](#config-hot-reload)).
|
||||
</Tab>
|
||||
</Tabs>
|
||||
|
||||
## Сувора валідація
|
||||
|
||||
<Warning>
|
||||
OpenClaw приймає лише конфігурації, які повністю відповідають схемі. Невідомі ключі, неправильні типи або недійсні значення змушують Gateway **відмовитися від запуску**. Єдиний виняток на кореневому рівні — `$schema` (string), щоб редактори могли підключати метадані JSON Schema.
|
||||
OpenClaw приймає лише конфігурації, які повністю відповідають схемі. Невідомі ключі, некоректні типи або недійсні значення призводять до того, що Gateway **відмовляється запускатися**. Єдиний виняток на рівні кореня — `$schema` (рядок), щоб редактори могли додавати метадані JSON Schema.
|
||||
</Warning>
|
||||
|
||||
Примітки щодо інструментів схем:
|
||||
Примітки щодо інструментів схеми:
|
||||
|
||||
- `openclaw config schema` виводить ту саму сім’ю JSON Schema, яку використовують Control UI
|
||||
і валідація конфігурації.
|
||||
- Вважайте цей вивід схеми канонічним машинозчитуваним контрактом для
|
||||
`openclaw.json`; цей огляд і довідник конфігурації її узагальнюють.
|
||||
- Значення полів `title` і `description` переносяться у вивід схеми для
|
||||
інструментів редакторів і форм.
|
||||
- Вкладені об’єкти, wildcard-записи (`*`) і записи елементів масиву (`[]`) успадковують ті самі
|
||||
метадані документації, коли існує відповідна документація поля.
|
||||
- Гілки композиції `anyOf` / `oneOf` / `allOf` також успадковують ті самі
|
||||
метадані документації, тому варіанти union/intersection зберігають ту саму довідку по полях.
|
||||
редакторів і формових інструментів.
|
||||
- Вкладені об’єкти, записи з шаблоном (`*`) і елементи масивів (`[]`) успадковують ті самі
|
||||
метадані документації там, де існує відповідна документація поля.
|
||||
- Гілки композицій `anyOf` / `oneOf` / `allOf` також успадковують ті самі
|
||||
метадані документації, тож варіанти union/intersection зберігають ту саму довідку для поля.
|
||||
- `config.schema.lookup` повертає один нормалізований шлях конфігурації з неглибоким
|
||||
вузлом схеми (`title`, `description`, `type`, `enum`, `const`, типові обмеження
|
||||
та подібні поля валідації), підібраними метаданими UI hints і зведеннями для безпосередніх дочірніх
|
||||
елементів для інструментів drill-down.
|
||||
- Runtime-схеми plugins/каналів об’єднуються, коли gateway може завантажити
|
||||
вузлом схеми (`title`, `description`, `type`, `enum`, `const`, поширені межі
|
||||
та подібні поля валідації), відповідними метаданими UI-підказок і короткими зведеннями безпосередніх дочірніх
|
||||
елементів для інструментів деталізації.
|
||||
- Схеми plugins/каналів під час виконання додаються через злиття, коли gateway може завантажити
|
||||
поточний реєстр маніфестів.
|
||||
- `pnpm config:docs:check` виявляє розходження між артефактами базової конфігурації, орієнтованими на документацію,
|
||||
і поточною поверхнею схеми.
|
||||
|
||||
Коли валідація не проходить:
|
||||
|
||||
- Gateway не запускається
|
||||
- Працюють лише діагностичні команди (`openclaw doctor`, `openclaw logs`, `openclaw health`, `openclaw status`)
|
||||
- Виконайте `openclaw doctor`, щоб побачити точні проблеми
|
||||
- Виконайте `openclaw doctor --fix` (або `--yes`), щоб застосувати виправлення
|
||||
- Запустіть `openclaw doctor`, щоб побачити точні проблеми
|
||||
- Запустіть `openclaw doctor --fix` (або `--yes`), щоб застосувати виправлення
|
||||
|
||||
## Типові завдання
|
||||
## Поширені завдання
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="Налаштування каналу (WhatsApp, Telegram, Discord тощо)">
|
||||
Кожен канал має власний розділ конфігурації під `channels.<provider>`. Кроки налаштування див. на окремій сторінці каналу:
|
||||
<Accordion title="Налаштувати канал (WhatsApp, Telegram, Discord тощо)">
|
||||
Кожен канал має власний розділ конфігурації в `channels.<provider>`. Див. окрему сторінку каналу для кроків налаштування:
|
||||
|
||||
- [WhatsApp](/channels/whatsapp) — `channels.whatsapp`
|
||||
- [Telegram](/channels/telegram) — `channels.telegram`
|
||||
- [Discord](/channels/discord) — `channels.discord`
|
||||
- [Feishu](/channels/feishu) — `channels.feishu`
|
||||
- [Google Chat](/channels/googlechat) — `channels.googlechat`
|
||||
- [Microsoft Teams](/channels/msteams) — `channels.msteams`
|
||||
- [Slack](/channels/slack) — `channels.slack`
|
||||
- [Signal](/channels/signal) — `channels.signal`
|
||||
- [iMessage](/channels/imessage) — `channels.imessage`
|
||||
- [Mattermost](/channels/mattermost) — `channels.mattermost`
|
||||
- [WhatsApp](/uk/channels/whatsapp) — `channels.whatsapp`
|
||||
- [Telegram](/uk/channels/telegram) — `channels.telegram`
|
||||
- [Discord](/uk/channels/discord) — `channels.discord`
|
||||
- [Feishu](/uk/channels/feishu) — `channels.feishu`
|
||||
- [Google Chat](/uk/channels/googlechat) — `channels.googlechat`
|
||||
- [Microsoft Teams](/uk/channels/msteams) — `channels.msteams`
|
||||
- [Slack](/uk/channels/slack) — `channels.slack`
|
||||
- [Signal](/uk/channels/signal) — `channels.signal`
|
||||
- [iMessage](/uk/channels/imessage) — `channels.imessage`
|
||||
- [Mattermost](/uk/channels/mattermost) — `channels.mattermost`
|
||||
|
||||
Усі канали використовують однаковий шаблон політики DM:
|
||||
|
||||
@ -125,7 +129,7 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
enabled: true,
|
||||
botToken: "123:abc",
|
||||
dmPolicy: "pairing", // pairing | allowlist | open | disabled
|
||||
allowFrom: ["tg:123"], // only for allowlist/open
|
||||
allowFrom: ["tg:123"], // лише для allowlist/open
|
||||
},
|
||||
},
|
||||
}
|
||||
@ -133,8 +137,8 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Вибір і налаштування моделей">
|
||||
Задайте основну модель і необов’язкові резервні варіанти:
|
||||
<Accordion title="Вибрати й налаштувати моделі">
|
||||
Налаштуйте основну модель і необов’язкові резервні:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -153,30 +157,30 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- `agents.defaults.models` визначає каталог моделей і слугує allowlist для `/model`.
|
||||
- Посилання на моделі використовують формат `provider/model` (наприклад `anthropic/claude-opus-4-6`).
|
||||
- `agents.defaults.imageMaxDimensionPx` керує зменшенням розміру зображень у транскриптах/інструментах (типово `1200`); менші значення зазвичай зменшують використання vision-token у запусках з великою кількістю скриншотів.
|
||||
- Перемикання моделей у чаті див. у [Models CLI](/concepts/models), а ротацію auth і поведінку резервних варіантів — у [Model Failover](/concepts/model-failover).
|
||||
- Для кастомних/self-hosted провайдерів див. [Custom providers](/gateway/configuration-reference#custom-providers-and-base-urls) у довіднику.
|
||||
- `agents.defaults.models` визначає каталог моделей і діє як allowlist для `/model`.
|
||||
- Посилання на моделі використовують формат `provider/model` (наприклад, `anthropic/claude-opus-4-6`).
|
||||
- `agents.defaults.imageMaxDimensionPx` керує зменшенням розміру зображень у стенограмах/інструментах (типове значення `1200`); нижчі значення зазвичай зменшують використання vision-token у сесіях із великою кількістю знімків екрана.
|
||||
- Див. [Models CLI](/uk/concepts/models) для перемикання моделей у чаті та [Model Failover](/uk/concepts/model-failover) для ротації автентифікації й поведінки резервного перемикання.
|
||||
- Для користувацьких/self-hosted providers див. [Custom providers](/uk/gateway/configuration-reference#custom-providers-and-base-urls) у довіднику.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Керування тим, хто може надсилати повідомлення боту">
|
||||
Доступ до DM керується для кожного каналу через `dmPolicy`:
|
||||
<Accordion title="Керувати тим, хто може надсилати повідомлення боту">
|
||||
Доступ до DM керується окремо для кожного каналу через `dmPolicy`:
|
||||
|
||||
- `"pairing"` (типово): невідомі відправники отримують одноразовий код pairing для схвалення
|
||||
- `"pairing"` (типово): невідомі відправники отримують одноразовий код pairing для підтвердження
|
||||
- `"allowlist"`: лише відправники з `allowFrom` (або зі сховища paired allow)
|
||||
- `"open"`: дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`)
|
||||
- `"disabled"`: ігнорувати всі DM
|
||||
|
||||
Для груп використовуйте `groupPolicy` + `groupAllowFrom` або allowlist, специфічні для каналу.
|
||||
Для груп використовуйте `groupPolicy` + `groupAllowFrom` або allowlists, специфічні для каналу.
|
||||
|
||||
Докладніше для кожного каналу див. у [повному довіднику](/gateway/configuration-reference#dm-and-group-access).
|
||||
Див. [повний довідник](/uk/gateway/configuration-reference#dm-and-group-access) для деталей по кожному каналу.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування gating згадувань у групових чатах">
|
||||
Для групових повідомлень типово **потрібне згадування**. Налаштуйте шаблони для кожного агента:
|
||||
<Accordion title="Налаштувати gating згадувань у групових чатах">
|
||||
Для групових повідомлень типово **потрібна згадка**. Налаштуйте шаблони для кожного агента:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -198,15 +202,15 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- **Метадані згадувань**: нативні @-згадування (WhatsApp tap-to-mention, Telegram @bot тощо)
|
||||
- **Текстові шаблони**: безпечні regex-шаблони в `mentionPatterns`
|
||||
- Перевизначення для окремих каналів і режим self-chat див. у [повному довіднику](/gateway/configuration-reference#group-chat-mention-gating).
|
||||
- **Metadata mentions**: нативні @-згадування (WhatsApp tap-to-mention, Telegram @bot тощо)
|
||||
- **Text patterns**: безпечні regex-шаблони в `mentionPatterns`
|
||||
- Див. [повний довідник](/uk/gateway/configuration-reference#group-chat-mention-gating) для перевизначень по каналах і режиму self-chat.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Обмеження Skills для окремого агента">
|
||||
Використовуйте `agents.defaults.skills` для спільного базового набору, а потім перевизначайте конкретні
|
||||
агенти через `agents.list[].skills`:
|
||||
<Accordion title="Обмежити Skills для кожного агента">
|
||||
Використовуйте `agents.defaults.skills` для спільної базової конфігурації, а потім перевизначайте конкретних
|
||||
агентів через `agents.list[].skills`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -215,23 +219,23 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
skills: ["github", "weather"],
|
||||
},
|
||||
list: [
|
||||
{ id: "writer" }, // inherits github, weather
|
||||
{ id: "docs", skills: ["docs-search"] }, // replaces defaults
|
||||
{ id: "locked-down", skills: [] }, // no skills
|
||||
{ id: "writer" }, // успадковує github, weather
|
||||
{ id: "docs", skills: ["docs-search"] }, // замінює значення за замовчуванням
|
||||
{ id: "locked-down", skills: [] }, // без Skills
|
||||
],
|
||||
},
|
||||
}
|
||||
```
|
||||
|
||||
- Не задавайте `agents.defaults.skills`, щоб типово мати необмежені Skills.
|
||||
- Не задавайте `agents.list[].skills`, щоб успадковувати типові значення.
|
||||
- Задайте `agents.list[].skills: []`, щоб не мати Skills.
|
||||
- Див. [Skills](/tools/skills), [Skills config](/tools/skills-config) і
|
||||
[Довідник конфігурації](/gateway/configuration-reference#agentsdefaultsskills).
|
||||
- Не вказуйте `agents.defaults.skills`, якщо типово Skills мають бути без обмежень.
|
||||
- Не вказуйте `agents.list[].skills`, щоб успадкувати значення за замовчуванням.
|
||||
- Встановіть `agents.list[].skills: []`, щоб не було жодних Skills.
|
||||
- Див. [Skills](/uk/tools/skills), [конфігурація Skills](/uk/tools/skills-config) і
|
||||
[Довідник конфігурації](/uk/gateway/configuration-reference#agentsdefaultsskills).
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування моніторингу стану каналів gateway">
|
||||
<Accordion title="Налаштувати моніторинг стану каналів gateway">
|
||||
Керуйте тим, наскільки агресивно gateway перезапускає канали, які виглядають застарілими:
|
||||
|
||||
```json5
|
||||
@ -254,20 +258,20 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- Задайте `gateway.channelHealthCheckMinutes: 0`, щоб глобально вимкнути перезапуски за health-monitor.
|
||||
- `channelStaleEventThresholdMinutes` має бути більшим або рівним інтервалу перевірки.
|
||||
- Використовуйте `channels.<provider>.healthMonitor.enabled` або `channels.<provider>.accounts.<id>.healthMonitor.enabled`, щоб вимкнути автоперезапуски для одного каналу або облікового запису без вимкнення глобального монітора.
|
||||
- Для операційного налагодження див. [Health Checks](/gateway/health), а всі поля — у [повному довіднику](/gateway/configuration-reference#gateway).
|
||||
- Встановіть `gateway.channelHealthCheckMinutes: 0`, щоб глобально вимкнути перезапуски health-monitor.
|
||||
- `channelStaleEventThresholdMinutes` має бути більшим або дорівнювати інтервалу перевірки.
|
||||
- Використовуйте `channels.<provider>.healthMonitor.enabled` або `channels.<provider>.accounts.<id>.healthMonitor.enabled`, щоб вимкнути автоперезапуски для одного каналу чи облікового запису без вимкнення глобального монітора.
|
||||
- Див. [Health Checks](/uk/gateway/health) для операційного налагодження та [повний довідник](/uk/gateway/configuration-reference#gateway) для всіх полів.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування сесій і скидань">
|
||||
Сесії керують безперервністю розмови та ізоляцією:
|
||||
<Accordion title="Налаштувати сесії та скидання">
|
||||
Сесії керують безперервністю та ізоляцією розмов:
|
||||
|
||||
```json5
|
||||
{
|
||||
session: {
|
||||
dmScope: "per-channel-peer", // recommended for multi-user
|
||||
dmScope: "per-channel-peer", // рекомендовано для багатьох користувачів
|
||||
threadBindings: {
|
||||
enabled: true,
|
||||
idleHours: 24,
|
||||
@ -282,15 +286,15 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- `dmScope`: `main` (shared) | `per-peer` | `per-channel-peer` | `per-account-channel-peer`
|
||||
- `threadBindings`: глобальні типові значення для маршрутизації сесій, прив’язаних до thread (Discord підтримує `/focus`, `/unfocus`, `/agents`, `/session idle` і `/session max-age`).
|
||||
- Про області видимості, зв’язки ідентичності та політику надсилання див. [Керування сесіями](/concepts/session).
|
||||
- Усі поля див. в [повному довіднику](/gateway/configuration-reference#session).
|
||||
- `dmScope`: `main` (спільна) | `per-peer` | `per-channel-peer` | `per-account-channel-peer`
|
||||
- `threadBindings`: глобальні значення за замовчуванням для маршрутизації сесій, прив’язаних до гілок (Discord підтримує `/focus`, `/unfocus`, `/agents`, `/session idle` і `/session max-age`).
|
||||
- Див. [Керування сесіями](/uk/concepts/session) для області дії, зв’язків ідентичностей і політики надсилання.
|
||||
- Див. [повний довідник](/uk/gateway/configuration-reference#session) для всіх полів.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Увімкнення sandboxing">
|
||||
Запускайте сесії агентів в ізольованих Docker-контейнерах:
|
||||
<Accordion title="Увімкнути ізоляцію">
|
||||
Запускайте сесії агентів в ізольованих контейнерах Docker:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -307,14 +311,14 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
|
||||
Спочатку зберіть образ: `scripts/sandbox-setup.sh`
|
||||
|
||||
Повний посібник див. у [Sandboxing](/gateway/sandboxing), а всі параметри — у [повному довіднику](/gateway/configuration-reference#agentsdefaultssandbox).
|
||||
Див. [Sandboxing](/uk/gateway/sandboxing) для повного посібника та [повний довідник](/uk/gateway/configuration-reference#agentsdefaultssandbox) для всіх параметрів.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Увімкнення push через relay для офіційних збірок iOS">
|
||||
<Accordion title="Увімкнути push через relay для офіційних збірок iOS">
|
||||
Push через relay налаштовується в `openclaw.json`.
|
||||
|
||||
Задайте це в конфігурації gateway:
|
||||
Додайте це до конфігурації gateway:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -323,7 +327,7 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
apns: {
|
||||
relay: {
|
||||
baseUrl: "https://relay.example.com",
|
||||
// Optional. Default: 10000
|
||||
// Необов’язково. Типове значення: 10000
|
||||
timeoutMs: 10000,
|
||||
},
|
||||
},
|
||||
@ -338,37 +342,37 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.com
|
||||
```
|
||||
|
||||
Що це дає:
|
||||
Що це робить:
|
||||
|
||||
- Дає gateway змогу надсилати `push.test`, wake-поштовхи та reconnect wakes через зовнішній relay.
|
||||
- Використовує грант надсилання в межах реєстрації, який пересилає спарений застосунок iOS. Gateway не потрібен relay-token для всього розгортання.
|
||||
- Прив’язує кожну реєстрацію через relay до ідентичності gateway, з якою спарився застосунок iOS, тому інший gateway не може повторно використати збережену реєстрацію.
|
||||
- Залишає локальні/ручні збірки iOS на прямих APNs. Надсилання через relay застосовується лише до офіційних поширених збірок, які зареєструвалися через relay.
|
||||
- Має збігатися з базовим URL relay, вбудованим в офіційну/TestFlight збірку iOS, щоб трафік реєстрації та надсилання потрапляв на той самий розгорнутий relay.
|
||||
- Дозволяє gateway надсилати `push.test`, сигнали пробудження та пробудження для повторного підключення через зовнішній relay.
|
||||
- Використовує право надсилання, прив’язане до реєстрації, яке пересилає paired iOS app. Gateway не потребує relay-токена рівня всього розгортання.
|
||||
- Прив’язує кожну реєстрацію через relay до ідентичності gateway, з якою було paired iOS app, тому інший gateway не може повторно використати збережену реєстрацію.
|
||||
- Залишає локальні/ручні збірки iOS на прямому APNs. Надсилання через relay застосовується лише до офіційних розповсюджуваних збірок, що зареєструвалися через relay.
|
||||
- Має збігатися з базовим URL relay, вбудованим в офіційну/TestFlight збірку iOS, щоб трафік реєстрації та надсилання потрапляв до одного й того самого розгортання relay.
|
||||
|
||||
End-to-end потік:
|
||||
Повний потік роботи:
|
||||
|
||||
1. Встановіть офіційну/TestFlight збірку iOS, скомпільовану з тим самим базовим URL relay.
|
||||
2. Налаштуйте `gateway.push.apns.relay.baseUrl` на gateway.
|
||||
3. Спаріть застосунок iOS із gateway і дочекайтеся підключення сесій node та operator.
|
||||
4. Застосунок iOS отримує ідентичність gateway, реєструється в relay через App Attest і app receipt, а потім публікує relay-backed payload `push.apns.register` у спарений gateway.
|
||||
5. Gateway зберігає relay handle і send grant, а потім використовує їх для `push.test`, wake-поштовхів і reconnect wakes.
|
||||
3. Виконайте pairing iOS app із gateway і дочекайтеся підключення сесій вузла й оператора.
|
||||
4. iOS app отримує ідентичність gateway, реєструється в relay за допомогою App Attest і квитанції app, а потім публікує payload `push.apns.register` через relay до paired gateway.
|
||||
5. Gateway зберігає relay handle і право надсилання, а потім використовує їх для `push.test`, сигналів пробудження й пробуджень повторного підключення.
|
||||
|
||||
Операційні примітки:
|
||||
|
||||
- Якщо ви переключите застосунок iOS на інший gateway, перепідключіть застосунок, щоб він міг опублікувати нову relay-реєстрацію, прив’язану до цього gateway.
|
||||
- Якщо ви випустите нову збірку iOS, яка вказує на інше розгортання relay, застосунок оновить кешовану relay-реєстрацію замість повторного використання старого relay origin.
|
||||
- Якщо ви перемикаєте iOS app на інший gateway, перепідключіть app, щоб воно могло опублікувати нову реєстрацію relay, прив’язану до цього gateway.
|
||||
- Якщо ви випускаєте нову збірку iOS, що вказує на інше розгортання relay, app оновлює кешовану реєстрацію relay замість повторного використання старого походження relay.
|
||||
|
||||
Примітка щодо сумісності:
|
||||
|
||||
- `OPENCLAW_APNS_RELAY_BASE_URL` і `OPENCLAW_APNS_RELAY_TIMEOUT_MS` і далі працюють як тимчасові перевизначення через env.
|
||||
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` залишається loopback-only аварійним варіантом для dev; не зберігайте HTTP relay URL у конфігурації.
|
||||
- `OPENCLAW_APNS_RELAY_BASE_URL` і `OPENCLAW_APNS_RELAY_TIMEOUT_MS` усе ще працюють як тимчасові env-перевизначення.
|
||||
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true` залишається лише для loopback як шлях обходу в середовищі розробки; не зберігайте HTTP URL relay у конфігурації.
|
||||
|
||||
End-to-end потік див. у [iOS App](/platforms/ios#relay-backed-push-for-official-builds), а модель безпеки relay — у [Потік автентифікації та довіри](/platforms/ios#authentication-and-trust-flow).
|
||||
Див. [iOS App](/uk/platforms/ios#relay-backed-push-for-official-builds) для повного потоку й [Authentication and trust flow](/uk/platforms/ios#authentication-and-trust-flow) для моделі безпеки relay.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування heartbeat (періодичних check-in)">
|
||||
<Accordion title="Налаштувати heartbeat (періодичні перевірки)">
|
||||
```json5
|
||||
{
|
||||
agents: {
|
||||
@ -382,14 +386,14 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- `every`: рядок тривалості (`30m`, `2h`). Задайте `0m`, щоб вимкнути.
|
||||
- `target`: `last` | `none` | `<channel-id>` (наприклад `discord`, `matrix`, `telegram` або `whatsapp`)
|
||||
- `every`: рядок тривалості (`30m`, `2h`). Встановіть `0m`, щоб вимкнути.
|
||||
- `target`: `last` | `none` | `<channel-id>` (наприклад, `discord`, `matrix`, `telegram` або `whatsapp`)
|
||||
- `directPolicy`: `allow` (типово) або `block` для heartbeat-цілей у стилі DM
|
||||
- Повний посібник див. у [Heartbeat](/gateway/heartbeat).
|
||||
- Див. [Heartbeat](/uk/gateway/heartbeat) для повного посібника.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування cron jobs">
|
||||
<Accordion title="Налаштувати cron jobs">
|
||||
```json5
|
||||
{
|
||||
cron: {
|
||||
@ -404,14 +408,14 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
- `sessionRetention`: очищення завершених ізольованих сесій запусків із `sessions.json` (типово `24h`; задайте `false`, щоб вимкнути).
|
||||
- `runLog`: очищення `cron/runs/<jobId>.jsonl` за розміром і кількістю збережених рядків.
|
||||
- Огляд функцій і приклади CLI див. у [Cron jobs](/automation/cron-jobs).
|
||||
- `sessionRetention`: очищати завершені ізольовані сесії запуску з `sessions.json` (типове значення `24h`; встановіть `false`, щоб вимкнути).
|
||||
- `runLog`: очищати `cron/runs/<jobId>.jsonl` за розміром і кількістю збережених рядків.
|
||||
- Див. [Cron jobs](/uk/automation/cron-jobs) для огляду функції та прикладів CLI.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування вебхуків (hooks)">
|
||||
Увімкніть HTTP webhook-ендпоїнти на Gateway:
|
||||
<Accordion title="Налаштувати webhooks (hooks)">
|
||||
Увімкніть HTTP webhook endpoints на Gateway:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -434,21 +438,21 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
Примітка з безпеки:
|
||||
- Вважайте весь вміст payload hooks/webhooks недовіреним входом.
|
||||
- Використовуйте окремий `hooks.token`; не використовуйте спільний токен Gateway повторно.
|
||||
- Автентифікація hooks працює лише через заголовки (`Authorization: Bearer ...` або `x-openclaw-token`); токени в query string відхиляються.
|
||||
- `hooks.path` не може бути `/`; використовуйте для webhook ingress окремий підшлях, наприклад `/hooks`.
|
||||
- Тримайте прапорці обходу небезпечного вмісту вимкненими (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`), якщо не виконуєте вузькоспрямоване налагодження.
|
||||
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також задайте `hooks.allowedSessionKeyPrefixes`, щоб обмежити session key, які може вибирати викликач.
|
||||
- Для агентів, керованих через hooks, віддавайте перевагу сильним сучасним model tiers і суворій політиці інструментів (наприклад лише обмін повідомленнями плюс sandboxing, де це можливо).
|
||||
Примітка щодо безпеки:
|
||||
- Вважайте весь вміст payload hook/webhook недовіреним введенням.
|
||||
- Використовуйте окремий `hooks.token`; не використовуйте повторно спільний токен Gateway.
|
||||
- Автентифікація hooks працює лише через заголовки (`Authorization: Bearer ...` або `x-openclaw-token`); токени в рядку запиту відхиляються.
|
||||
- `hooks.path` не може бути `/`; залишайте webhook ingress на окремому підшляху, наприклад `/hooks`.
|
||||
- Тримайте прапори обходу небезпечного вмісту вимкненими (`hooks.gmail.allowUnsafeExternalContent`, `hooks.mappings[].allowUnsafeExternalContent`), якщо не виконуєте строго обмежене налагодження.
|
||||
- Якщо ви вмикаєте `hooks.allowRequestSessionKey`, також задайте `hooks.allowedSessionKeyPrefixes`, щоб обмежити ключі сесій, які вибирає викликач.
|
||||
- Для агентів, керованих hooks, надавайте перевагу потужним сучасним рівням моделей і суворій політиці інструментів (наприклад, лише обмін повідомленнями плюс ізоляція, де це можливо).
|
||||
|
||||
Усі параметри mappings і інтеграцію з Gmail див. у [повному довіднику](/gateway/configuration-reference#hooks).
|
||||
Див. [повний довідник](/uk/gateway/configuration-reference#hooks) для всіх параметрів mappings і інтеграції Gmail.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Налаштування маршрутизації з кількома агентами">
|
||||
Запускайте кілька ізольованих агентів з окремими workspace і session:
|
||||
<Accordion title="Налаштувати маршрутизацію multi-agent">
|
||||
Запускайте кількох ізольованих агентів з окремими workspace і сесіями:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -465,12 +469,12 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
}
|
||||
```
|
||||
|
||||
Правила bindings і профілі доступу для окремих агентів див. у [Multi-Agent](/concepts/multi-agent) і [повному довіднику](/gateway/configuration-reference#multi-agent-routing).
|
||||
Див. [Multi-Agent](/uk/concepts/multi-agent) і [повний довідник](/uk/gateway/configuration-reference#multi-agent-routing) для правил bindings і профілів доступу для кожного агента.
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Розділення конфігурації на кілька файлів ($include)">
|
||||
Використовуйте `$include`, щоб організувати великі конфігурації:
|
||||
<Accordion title="Розділити конфігурацію на кілька файлів ($include)">
|
||||
Використовуйте `$include`, щоб упорядкувати великі конфігурації:
|
||||
|
||||
```json5
|
||||
// ~/.openclaw/openclaw.json
|
||||
@ -484,26 +488,26 @@ OpenClaw приймає лише конфігурації, які повніст
|
||||
```
|
||||
|
||||
- **Один файл**: замінює об’єкт, у якому міститься
|
||||
- **Масив файлів**: deep-merge у заданому порядку (пізніший перемагає)
|
||||
- **Сусідні ключі**: об’єднуються після includes (перевизначають включені значення)
|
||||
- **Вкладені includes**: підтримуються до 10 рівнів вкладеності
|
||||
- **Відносні шляхи**: визначаються відносно файлу, що включає
|
||||
- **Обробка помилок**: зрозумілі помилки для відсутніх файлів, помилок парсингу та циклічних include
|
||||
- **Масив файлів**: deep-merge у вказаному порядку (пізніші мають пріоритет)
|
||||
- **Сусідні ключі**: зливаються після include’ів (перевизначають включені значення)
|
||||
- **Вкладені include’и**: підтримуються до 10 рівнів вкладеності
|
||||
- **Відносні шляхи**: обчислюються відносно файла, який виконує включення
|
||||
- **Обробка помилок**: зрозумілі помилки для відсутніх файлів, помилок парсингу й циклічних include’ів
|
||||
|
||||
</Accordion>
|
||||
</AccordionGroup>
|
||||
|
||||
## Гаряче перезавантаження конфігурації
|
||||
|
||||
Gateway стежить за `~/.openclaw/openclaw.json` і автоматично застосовує зміни — для більшості налаштувань ручний перезапуск не потрібен.
|
||||
Gateway стежить за `~/.openclaw/openclaw.json` і застосовує зміни автоматично — для більшості налаштувань ручний перезапуск не потрібен.
|
||||
|
||||
### Режими перезавантаження
|
||||
|
||||
| Режим | Поведінка |
|
||||
| ---------------------- | -------------------------------------------------------------------------------------- |
|
||||
| **`hybrid`** (типово) | Миттєво гаряче застосовує безпечні зміни. Для критичних автоматично перезапускається. |
|
||||
| **`hot`** | Гаряче застосовує лише безпечні зміни. Коли потрібен перезапуск, пише попередження — ви обробляєте це самі. |
|
||||
| **`restart`** | Перезапускає Gateway при будь-якій зміні конфігурації, безпечній чи ні. |
|
||||
| **`hybrid`** (типово) | Безпечно застосовує зміни одразу. Автоматично перезапускається для критичних змін. |
|
||||
| **`hot`** | Лише безпечно застосовує зміни. Записує попередження, коли потрібен перезапуск — ви обробляєте це самі. |
|
||||
| **`restart`** | Перезапускає Gateway після будь-якої зміни конфігурації, безпечної чи ні. |
|
||||
| **`off`** | Вимикає стеження за файлом. Зміни набирають чинності після наступного ручного перезапуску. |
|
||||
|
||||
```json5
|
||||
@ -516,61 +520,61 @@ Gateway стежить за `~/.openclaw/openclaw.json` і автоматичн
|
||||
|
||||
### Що застосовується гаряче, а що потребує перезапуску
|
||||
|
||||
Більшість полів застосовуються гаряче без простою. У режимі `hybrid` зміни, які вимагають перезапуску, обробляються автоматично.
|
||||
Більшість полів застосовуються гаряче без простою. У режимі `hybrid` зміни, які потребують перезапуску, обробляються автоматично.
|
||||
|
||||
| Категорія | Поля | Потрібен перезапуск? |
|
||||
| --------------------- | -------------------------------------------------------------------- | -------------------- |
|
||||
| Канали | `channels.*`, `web` (WhatsApp) — усі вбудовані канали та канали extensions | Ні |
|
||||
| Агенти й моделі | `agent`, `agents`, `models`, `routing` | Ні |
|
||||
| Автоматизація | `hooks`, `cron`, `agent.heartbeat` | Ні |
|
||||
| Сесії та повідомлення | `session`, `messages` | Ні |
|
||||
| Інструменти та медіа | `tools`, `browser`, `skills`, `audio`, `talk` | Ні |
|
||||
| UI та інше | `ui`, `logging`, `identity`, `bindings` | Ні |
|
||||
| Сервер Gateway | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Так** |
|
||||
| Інфраструктура | `discovery`, `canvasHost`, `plugins` | **Так** |
|
||||
| Категорія | Поля | Потрібен перезапуск? |
|
||||
| ----------------- | -------------------------------------------------------------------- | -------------------- |
|
||||
| Канали | `channels.*`, `web` (WhatsApp) — усі вбудовані й extension канали | Ні |
|
||||
| Агент і моделі | `agent`, `agents`, `models`, `routing` | Ні |
|
||||
| Автоматизація | `hooks`, `cron`, `agent.heartbeat` | Ні |
|
||||
| Сесії й повідомлення | `session`, `messages` | Ні |
|
||||
| Інструменти й медіа | `tools`, `browser`, `skills`, `audio`, `talk` | Ні |
|
||||
| UI та інше | `ui`, `logging`, `identity`, `bindings` | Ні |
|
||||
| Сервер gateway | `gateway.*` (port, bind, auth, tailscale, TLS, HTTP) | **Так** |
|
||||
| Інфраструктура | `discovery`, `canvasHost`, `plugins` | **Так** |
|
||||
|
||||
<Note>
|
||||
`gateway.reload` і `gateway.remote` — винятки: їхня зміна **не** викликає перезапуск.
|
||||
`gateway.reload` і `gateway.remote` — винятки: їх зміна **не** викликає перезапуск.
|
||||
</Note>
|
||||
|
||||
## RPC конфігурації (програмні оновлення)
|
||||
## Config RPC (програмні оновлення)
|
||||
|
||||
<Note>
|
||||
RPC керуючої площини для запису (`config.apply`, `config.patch`, `update.run`) мають rate limit **3 запити за 60 секунд** для кожного `deviceId+clientIp`. При спрацюванні ліміту RPC повертає `UNAVAILABLE` з `retryAfterMs`.
|
||||
RPC керуючої площини для запису (`config.apply`, `config.patch`, `update.run`) мають обмеження швидкості: **3 запити на 60 секунд** для кожної пари `deviceId+clientIp`. У разі обмеження RPC повертає `UNAVAILABLE` з `retryAfterMs`.
|
||||
</Note>
|
||||
|
||||
Безпечний/типовий потік:
|
||||
|
||||
- `config.schema.lookup`: перевірити одне піддерево конфігурації, обмежене шляхом, з неглибоким
|
||||
вузлом схеми, підібраними метаданими hints і зведеннями безпосередніх дочірніх елементів
|
||||
- `config.get`: отримати поточний snapshot + hash
|
||||
- `config.schema.lookup`: переглянути одне піддерево конфігурації, обмежене шляхом, з неглибоким
|
||||
вузлом схеми, відповідними метаданими підказок і короткими зведеннями безпосередніх дочірніх елементів
|
||||
- `config.get`: отримати поточний знімок + hash
|
||||
- `config.patch`: бажаний шлях часткового оновлення
|
||||
- `config.apply`: лише повна заміна конфігурації
|
||||
- `update.run`: явне self-update + restart
|
||||
- `update.run`: явне самооновлення + перезапуск
|
||||
|
||||
Коли ви не замінюєте всю конфігурацію, віддавайте перевагу `config.schema.lookup`,
|
||||
Якщо ви не замінюєте всю конфігурацію, надавайте перевагу `config.schema.lookup`,
|
||||
а потім `config.patch`.
|
||||
|
||||
<AccordionGroup>
|
||||
<Accordion title="config.apply (повна заміна)">
|
||||
Перевіряє + записує повну конфігурацію та перезапускає Gateway одним кроком.
|
||||
Перевіряє, записує повну конфігурацію та перезапускає Gateway одним кроком.
|
||||
|
||||
<Warning>
|
||||
`config.apply` замінює **всю конфігурацію**. Для часткових оновлень використовуйте `config.patch`, а для окремих ключів — `openclaw config set`.
|
||||
`config.apply` замінює **всю конфігурацію**. Використовуйте `config.patch` для часткових оновлень або `openclaw config set` для окремих ключів.
|
||||
</Warning>
|
||||
|
||||
Параметри:
|
||||
|
||||
- `raw` (string) — JSON5 payload для всієї конфігурації
|
||||
- `baseHash` (необов’язково) — hash конфігурації з `config.get` (обов’язково, коли конфігурація існує)
|
||||
- `sessionKey` (необов’язково) — ключ сесії для ping після перезапуску
|
||||
- `note` (необов’язково) — примітка для restart sentinel
|
||||
- `restartDelayMs` (необов’язково) — затримка перед перезапуском (типово 2000)
|
||||
- `raw` (string) — payload JSON5 для всієї конфігурації
|
||||
- `baseHash` (optional) — hash конфігурації з `config.get` (обов’язковий, якщо конфігурація вже існує)
|
||||
- `sessionKey` (optional) — ключ сесії для ping пробудження після перезапуску
|
||||
- `note` (optional) — примітка для restart sentinel
|
||||
- `restartDelayMs` (optional) — затримка перед перезапуском (типово 2000)
|
||||
|
||||
Запити на перезапуск об’єднуються, якщо один уже очікує/виконується, і між циклами перезапуску діє затримка 30 секунд.
|
||||
Запити на перезапуск об’єднуються, якщо один уже очікує/виконується, і між циклами перезапуску діє 30-секундна пауза.
|
||||
|
||||
```bash
|
||||
openclaw gateway call config.get --params '{}' # capture payload.hash
|
||||
openclaw gateway call config.get --params '{}' # отримати payload.hash
|
||||
openclaw gateway call config.apply --params '{
|
||||
"raw": "{ agents: { defaults: { workspace: \"~/.openclaw/workspace\" } } }",
|
||||
"baseHash": "<hash>",
|
||||
@ -581,19 +585,19 @@ RPC керуючої площини для запису (`config.apply`, `config
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="config.patch (часткове оновлення)">
|
||||
Об’єднує часткове оновлення з наявною конфігурацією (семантика JSON merge patch):
|
||||
Зливає часткове оновлення з наявною конфігурацією (семантика JSON merge patch):
|
||||
|
||||
- Об’єкти об’єднуються рекурсивно
|
||||
- Об’єкти зливаються рекурсивно
|
||||
- `null` видаляє ключ
|
||||
- Масиви замінюються
|
||||
|
||||
Параметри:
|
||||
|
||||
- `raw` (string) — JSON5 лише з ключами, які потрібно змінити
|
||||
- `baseHash` (обов’язково) — hash конфігурації з `config.get`
|
||||
- `sessionKey`, `note`, `restartDelayMs` — ті самі, що в `config.apply`
|
||||
- `raw` (string) — JSON5 лише з ключами, які треба змінити
|
||||
- `baseHash` (required) — hash конфігурації з `config.get`
|
||||
- `sessionKey`, `note`, `restartDelayMs` — те саме, що й для `config.apply`
|
||||
|
||||
Поведінка перезапуску така сама, як у `config.apply`: об’єднання очікуваних перезапусків плюс затримка 30 секунд між циклами перезапуску.
|
||||
Поведінка перезапуску така сама, як у `config.apply`: об’єднання очікуваних перезапусків і 30-секундна пауза між циклами перезапуску.
|
||||
|
||||
```bash
|
||||
openclaw gateway call config.patch --params '{
|
||||
@ -607,12 +611,12 @@ RPC керуючої площини для запису (`config.apply`, `config
|
||||
|
||||
## Змінні середовища
|
||||
|
||||
OpenClaw читає env vars із батьківського процесу, а також із:
|
||||
OpenClaw читає env vars із батьківського процесу, а також:
|
||||
|
||||
- `.env` у поточній робочій теці (якщо існує)
|
||||
- `~/.openclaw/.env` (глобальне резервне значення)
|
||||
- `.env` із поточного робочого каталогу (якщо є)
|
||||
- `~/.openclaw/.env` (глобальний резервний варіант)
|
||||
|
||||
Жоден із цих файлів не перевизначає вже наявні env vars. Ви також можете задавати вбудовані env vars у конфігурації:
|
||||
Жоден із цих файлів не перевизначає наявні env vars. Ви також можете задавати inline env vars у конфігурації:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -623,8 +627,8 @@ OpenClaw читає env vars із батьківського процесу, а
|
||||
}
|
||||
```
|
||||
|
||||
<Accordion title="Імпорт shell env (необов’язково)">
|
||||
Якщо ввімкнено і очікувані ключі не задано, OpenClaw запускає ваш login shell і імпортує лише відсутні ключі:
|
||||
<Accordion title="Імпорт env із shell (необов’язково)">
|
||||
Якщо це ввімкнено й очікувані ключі не задано, OpenClaw запускає вашу login shell і імпортує лише відсутні ключі:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -638,7 +642,7 @@ OpenClaw читає env vars із батьківського процесу, а
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Підстановка env var у значеннях конфігурації">
|
||||
Посилайтеся на env vars у будь-якому string-значенні конфігурації через `${VAR_NAME}`:
|
||||
Посилайтеся на env vars у будь-якому рядковому значенні конфігурації через `${VAR_NAME}`:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -649,16 +653,16 @@ OpenClaw читає env vars із батьківського процесу, а
|
||||
|
||||
Правила:
|
||||
|
||||
- Зіставляються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`
|
||||
- Відсутні/порожні vars викликають помилку під час завантаження
|
||||
- Екрануйте через `$${VAR}` для буквального виводу
|
||||
- Збігаються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`
|
||||
- Відсутні/порожні env vars викликають помилку під час завантаження
|
||||
- Екрануйте як `$${VAR}` для буквального виводу
|
||||
- Працює всередині файлів `$include`
|
||||
- Вбудована підстановка: `"${BASE}/v1"` → `"https://api.example.com/v1"`
|
||||
- Inline substitution: `"${BASE}/v1"` → `"https://api.example.com/v1"`
|
||||
|
||||
</Accordion>
|
||||
|
||||
<Accordion title="Secret refs (env, file, exec)">
|
||||
Для полів, які підтримують об’єкти SecretRef, ви можете використовувати:
|
||||
Для полів, які підтримують об’єкти SecretRef, можна використовувати:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -690,16 +694,16 @@ OpenClaw читає env vars із батьківського процесу, а
|
||||
}
|
||||
```
|
||||
|
||||
Докладно про SecretRef (включно з `secrets.providers` для `env`/`file`/`exec`) див. у [Керування секретами](/gateway/secrets).
|
||||
Підтримувані шляхи облікових даних перелічено в [Поверхня облікових даних SecretRef](/reference/secretref-credential-surface).
|
||||
Докладніше про SecretRef (зокрема `secrets.providers` для `env`/`file`/`exec`) див. у [Secrets Management](/uk/gateway/secrets).
|
||||
Підтримувані шляхи облікових даних наведено в [SecretRef Credential Surface](/uk/reference/secretref-credential-surface).
|
||||
</Accordion>
|
||||
|
||||
Повний порядок пріоритетів і джерела див. у [Environment](/help/environment).
|
||||
Див. [Environment](/uk/help/environment) для повного порядку пріоритетів і джерел.
|
||||
|
||||
## Повний довідник
|
||||
|
||||
Повний довідник по полях див. у **[Довідник конфігурації](/gateway/configuration-reference)**.
|
||||
Для повного довідника за полями див. **[Configuration Reference](/uk/gateway/configuration-reference)**.
|
||||
|
||||
---
|
||||
|
||||
_Пов’язане: [Приклади конфігурації](/gateway/configuration-examples) · [Довідник конфігурації](/gateway/configuration-reference) · [Doctor](/gateway/doctor)_
|
||||
_Пов’язане: [Приклади конфігурації](/uk/gateway/configuration-examples) · [Довідник конфігурації](/uk/gateway/configuration-reference) · [Doctor](/uk/gateway/doctor)_
|
||||
|
||||
@ -1,36 +1,36 @@
|
||||
---
|
||||
read_when:
|
||||
- Використання або налаштування команд чату
|
||||
- Використання або налаштування чат-команд
|
||||
- Налагодження маршрутизації команд або дозволів
|
||||
summary: 'Слеш-команди: текстові та нативні, конфігурація й підтримувані команди'
|
||||
title: Слеш-команди
|
||||
x-i18n:
|
||||
generated_at: "2026-04-06T00:34:40Z"
|
||||
generated_at: "2026-04-08T05:14:57Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 417e35b9ddd87f25f6c019111b55b741046ea11039dde89210948185ced5696d
|
||||
source_hash: 4a7ee7f1a8012058279b9e632889b291d4e659e4ec81209ca8978afbb9ad4b96
|
||||
source_path: tools/slash-commands.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Слеш-команди
|
||||
|
||||
Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, яке починається з `/`.
|
||||
Команда чату bash лише для хоста використовує `! <cmd>` (із псевдонімом `/bash <cmd>`).
|
||||
Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`.
|
||||
Команда чату bash лише для хоста використовує `! <cmd>` (із `/bash <cmd>` як псевдонімом).
|
||||
|
||||
Є дві пов’язані системи:
|
||||
|
||||
- **Команди**: окремі повідомлення `/...`.
|
||||
- **Директиви**: `/think`, `/fast`, `/verbose`, `/reasoning`, `/elevated`, `/exec`, `/model`, `/queue`.
|
||||
- Директиви видаляються з повідомлення до того, як його побачить модель.
|
||||
- У звичайних повідомленнях чату (не лише з директивами) вони трактуються як «вбудовані підказки» і **не** зберігають налаштування сеансу.
|
||||
- У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сеансі й повертають підтвердження.
|
||||
- Директиви застосовуються лише для **авторизованих відправників**. Якщо задано `commands.allowFrom`, це єдиний
|
||||
список дозволу, який використовується; інакше авторизація визначається списками дозволу/спарюванням каналу та `commands.useAccessGroups`.
|
||||
- У звичайних чат-повідомленнях (не лише з директивами) вони трактуються як «вбудовані підказки» і **не** зберігають налаштування сесії.
|
||||
- У повідомленнях лише з директивами (повідомлення містить тільки директиви) вони зберігаються в сесії та повертають підтвердження.
|
||||
- Директиви застосовуються лише для **авторизованих відправників**. Якщо задано `commands.allowFrom`, використовується лише цей
|
||||
список дозволених; інакше авторизація походить зі списків дозволених/спарювання каналу плюс `commands.useAccessGroups`.
|
||||
Для неавторизованих відправників директиви трактуються як звичайний текст.
|
||||
|
||||
Також є кілька **вбудованих скорочень** (лише для відправників зі списку дозволу/авторизованих): `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
Вони запускаються негайно, видаляються до того, як модель побачить повідомлення, а решта тексту продовжує оброблятися у звичайному потоці.
|
||||
Також є кілька **вбудованих скорочень** (лише для відправників зі списку дозволених/авторизованих): `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
Вони виконуються негайно, видаляються до того, як повідомлення побачить модель, а решта тексту продовжує проходити звичайним шляхом.
|
||||
|
||||
## Конфігурація
|
||||
|
||||
@ -46,7 +46,10 @@ x-i18n:
|
||||
mcp: false,
|
||||
plugins: false,
|
||||
debug: false,
|
||||
restart: false,
|
||||
restart: true,
|
||||
ownerAllowFrom: ["discord:123456789012345678"],
|
||||
ownerDisplay: "raw",
|
||||
ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}",
|
||||
allowFrom: {
|
||||
"*": ["user1"],
|
||||
discord: ["user:123"],
|
||||
@ -56,144 +59,179 @@ x-i18n:
|
||||
}
|
||||
```
|
||||
|
||||
- `commands.text` (типово `true`) вмикає розбір `/...` у повідомленнях чату.
|
||||
- На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити `false`.
|
||||
- `commands.native` (типово `"auto"`) реєструє нативні команди.
|
||||
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (доки ви не додасте слеш-команди); ігнорується для провайдерів без нативної підтримки.
|
||||
- Щоб перевизначити для окремого провайдера, задайте `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native` (bool або `"auto"`).
|
||||
- `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і автоматично не видаляються.
|
||||
- `commands.nativeSkills` (типово `"auto"`) нативно реєструє команди **Skills**, якщо це підтримується.
|
||||
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (у Slack потрібно створювати окрему слеш-команду для кожного skill).
|
||||
- Щоб перевизначити для окремого провайдера, задайте `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills` (bool або `"auto"`).
|
||||
- `commands.bash` (типово `false`) вмикає `! <cmd>` для виконання shell-команд хоста (`/bash <cmd>` є псевдонімом; потрібні списки дозволу `tools.elevated`).
|
||||
- `commands.bashForegroundMs` (типово `2000`) визначає, як довго bash чекає перед переходом у фоновий режим (`0` одразу переводить у фон).
|
||||
- `commands.config` (типово `false`) вмикає `/config` (читання/запис `openclaw.json`).
|
||||
- `commands.mcp` (типово `false`) вмикає `/mcp` (читання/запис керованої OpenClaw конфігурації MCP у `mcp.servers`).
|
||||
- `commands.plugins` (типово `false`) вмикає `/plugins` (виявлення/статус plugins, а також встановлення й елементи керування увімкненням/вимкненням).
|
||||
- `commands.debug` (типово `false`) вмикає `/debug` (перевизначення лише під час виконання).
|
||||
- `commands.allowFrom` (необов’язково) задає список дозволу для авторизації команд окремо для кожного провайдера. Якщо його налаштовано, це
|
||||
єдине джерело авторизації для команд і директив (списки дозволу/спарювання каналу та `commands.useAccessGroups`
|
||||
ігноруються). Використовуйте `"*"` для глобального значення за замовчуванням; ключі окремих провайдерів мають пріоритет.
|
||||
- `commands.useAccessGroups` (типово `true`) застосовує списки дозволу/політики для команд, коли `commands.allowFrom` не задано.
|
||||
- `commands.text` (типове значення `true`) вмикає розбір `/...` у чат-повідомленнях.
|
||||
- На поверхнях без нативних команд (WhatsApp/WebChat/Signal/iMessage/Google Chat/Microsoft Teams) текстові команди все одно працюють, навіть якщо встановити це значення в `false`.
|
||||
- `commands.native` (типове значення `"auto"`) реєструє нативні команди.
|
||||
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (поки ви не додасте слеш-команди); ігнорується для провайдерів без нативної підтримки.
|
||||
- Щоб перевизначити поведінку для конкретного провайдера, задайте `channels.discord.commands.native`, `channels.telegram.commands.native` або `channels.slack.commands.native` (bool або `"auto"`).
|
||||
- `false` очищає раніше зареєстровані команди в Discord/Telegram під час запуску. Команди Slack керуються в застосунку Slack і не видаляються автоматично.
|
||||
- `commands.nativeSkills` (типове значення `"auto"`) реєструє нативні команди **skill**, коли це підтримується.
|
||||
- Auto: увімкнено для Discord/Telegram; вимкнено для Slack (Slack вимагає створення окремої слеш-команди для кожного skill).
|
||||
- Щоб перевизначити поведінку для конкретного провайдера, задайте `channels.discord.commands.nativeSkills`, `channels.telegram.commands.nativeSkills` або `channels.slack.commands.nativeSkills` (bool або `"auto"`).
|
||||
- `commands.bash` (типове значення `false`) вмикає `! <cmd>` для виконання команд оболонки хоста (`/bash <cmd>` — псевдонім; потребує списків дозволених `tools.elevated`).
|
||||
- `commands.bashForegroundMs` (типове значення `2000`) керує тим, як довго bash чекає перед переходом у фоновий режим (`0` одразу відправляє у фон).
|
||||
- `commands.config` (типове значення `false`) вмикає `/config` (читання/запис `openclaw.json`).
|
||||
- `commands.mcp` (типове значення `false`) вмикає `/mcp` (читання/запис керованої OpenClaw конфігурації MCP у `mcp.servers`).
|
||||
- `commands.plugins` (типове значення `false`) вмикає `/plugins` (виявлення/стан plugin, а також керування встановленням і вмиканням/вимиканням).
|
||||
- `commands.debug` (типове значення `false`) вмикає `/debug` (перевизначення лише під час виконання).
|
||||
- `commands.restart` (типове значення `true`) вмикає `/restart`, а також дії інструментів для перезапуску gateway.
|
||||
- `commands.ownerAllowFrom` (необов’язково) задає явний список дозволених власника для поверхонь команд/інструментів лише для власника. Це окремо від `commands.allowFrom`.
|
||||
- `commands.ownerDisplay` визначає, як ідентифікатори власника відображаються в системному запиті: `raw` або `hash`.
|
||||
- `commands.ownerDisplaySecret` необов’язково задає HMAC-секрет, що використовується, коли `commands.ownerDisplay="hash"`.
|
||||
- `commands.allowFrom` (необов’язково) задає список дозволених для авторизації команд для кожного провайдера. Якщо його налаштовано, це
|
||||
єдине джерело авторизації для команд і директив (списки дозволених/спарювання каналу та `commands.useAccessGroups`
|
||||
ігноруються). Використовуйте `"*"` для глобального типового значення; ключі для конкретних провайдерів мають пріоритет.
|
||||
- `commands.useAccessGroups` (типове значення `true`) примусово застосовує списки дозволених/політики для команд, коли `commands.allowFrom` не задано.
|
||||
|
||||
## Список команд
|
||||
|
||||
Текстові + нативні (коли ввімкнено):
|
||||
Поточне джерело істини:
|
||||
|
||||
- `/help`
|
||||
- `/commands`
|
||||
- `/tools [compact|verbose]` (показує, що поточний агент може використовувати прямо зараз; `verbose` додає описи)
|
||||
- `/skill <name> [input]` (запустити skill за назвою)
|
||||
- `/status` (показати поточний стан; містить використання/квоту провайдера для поточного провайдера моделі, якщо доступно)
|
||||
- `/tasks` (показати фонові завдання для поточного сеансу; відображає активні та нещодавні деталі завдань із локальними для агента резервними лічильниками)
|
||||
- `/allowlist` (перегляд/додавання/видалення записів списку дозволу)
|
||||
- `/approve <id> <decision>` (розв’язати запити на погодження exec; використовуйте повідомлення з очікуваним погодженням для доступних рішень)
|
||||
- `/context [list|detail|json]` (пояснює «контекст»; `detail` показує розмір для кожного файла + кожного інструмента + кожного skill + системного prompt)
|
||||
- `/btw <question>` (поставити тимчасове побічне запитання про поточний сеанс без зміни майбутнього контексту сеансу; див. [/tools/btw](/uk/tools/btw))
|
||||
- `/export-session [path]` (псевдонім: `/export`) (експортувати поточний сеанс у HTML з повним системним prompt)
|
||||
- `/whoami` (показати ваш sender id; псевдонім: `/id`)
|
||||
- `/session idle <duration|off>` (керування автоматичним зняттям фокуса через неактивність для прив’язок сфокусованих гілок)
|
||||
- `/session max-age <duration|off>` (керування жорстким автоматичним зняттям фокуса за максимальним віком для прив’язок сфокусованих гілок)
|
||||
- `/subagents list|kill|log|info|send|steer|spawn` (перегляд, керування або запуск виконань субагентів для поточного сеансу)
|
||||
- `/acp spawn|cancel|steer|close|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|sessions` (перегляд і керування сеансами середовища виконання ACP)
|
||||
- `/agents` (показати агентів, прив’язаних до гілок, для цього сеансу)
|
||||
- `/focus <target>` (Discord: прив’язати цю гілку або нову гілку до цілі сеансу/субагента)
|
||||
- `/unfocus` (Discord: прибрати поточну прив’язку гілки)
|
||||
- `/kill <id|#|all>` (негайно перервати один або всі запущені субагенти для цього сеансу; без повідомлення-підтвердження)
|
||||
- `/steer <id|#> <message>` (негайно спрямувати запущений субагент: під час виконання, якщо можливо, інакше перервати поточну роботу й перезапустити з повідомленням спрямування)
|
||||
- `/tell <id|#> <message>` (псевдонім для `/steer`)
|
||||
- `/config show|get|set|unset` (зберегти конфігурацію на диск, лише для власника; потребує `commands.config: true`)
|
||||
- `/mcp show|get|set|unset` (керування конфігурацією MCP-сервера OpenClaw, лише для власника; потребує `commands.mcp: true`)
|
||||
- `/plugins list|show|get|install|enable|disable` (перегляд виявлених plugins, встановлення нових і перемикання стану ввімкнення; запис лише для власника; потребує `commands.plugins: true`)
|
||||
- `/plugin` є псевдонімом для `/plugins`.
|
||||
- `/plugin install <spec>` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:<pkg>`.
|
||||
- Записи для увімкнення/вимкнення все одно повертають підказку про перезапуск. У gateway переднього плану з наглядом OpenClaw може автоматично виконати цей перезапуск одразу після запису.
|
||||
- `/debug show|set|unset|reset` (перевизначення під час виконання, лише для власника; потребує `commands.debug: true`)
|
||||
- `/usage off|tokens|full|cost` (нижній колонтитул використання для кожної відповіді або локальний підсумок вартості)
|
||||
- `/tts off|always|inbound|tagged|status|provider|limit|summary|audio` (керування TTS; див. [/tts](/uk/tools/tts))
|
||||
- Discord: нативна команда — `/voice` (Discord резервує `/tts`); текстова `/tts` усе одно працює.
|
||||
- `/stop`
|
||||
- `/restart`
|
||||
- `/dock-telegram` (псевдонім: `/dock_telegram`) (перемкнути відповіді на Telegram)
|
||||
- `/dock-discord` (псевдонім: `/dock_discord`) (перемкнути відповіді на Discord)
|
||||
- `/dock-slack` (псевдонім: `/dock_slack`) (перемкнути відповіді на Slack)
|
||||
- `/activation mention|always` (лише для груп)
|
||||
- `/send on|off|inherit` (лише для власника)
|
||||
- `/reset` або `/new [model]` (необов’язкова підказка моделі; решта передається далі)
|
||||
- `/think <off|minimal|low|medium|high|xhigh>` (динамічні варіанти залежно від моделі/провайдера; псевдоніми: `/thinking`, `/t`)
|
||||
- `/fast status|on|off` (якщо опустити аргумент, показує поточний ефективний стан швидкого режиму)
|
||||
- `/verbose on|full|off` (псевдонім: `/v`)
|
||||
- `/reasoning on|off|stream` (псевдонім: `/reason`; коли ввімкнено, надсилає окреме повідомлення з префіксом `Reasoning:`; `stream` = лише чернетка Telegram)
|
||||
- `/elevated on|off|ask|full` (псевдонім: `/elev`; `full` пропускає погодження exec)
|
||||
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` (надішліть `/exec`, щоб показати поточне)
|
||||
- `/model <name>` (псевдонім: `/models`; або `/<alias>` з `agents.defaults.models.*.alias`)
|
||||
- `/queue <mode>` (плюс параметри на кшталт `debounce:2s cap:25 drop:summarize`; надішліть `/queue`, щоб побачити поточні налаштування)
|
||||
- `/bash <command>` (лише для хоста; псевдонім для `! <command>`; потребує `commands.bash: true` + списків дозволу `tools.elevated`)
|
||||
- `/dreaming [on|off|status|help]` (перемкнути глобальний dreaming або показати стан; див. [Dreaming](/uk/concepts/dreaming))
|
||||
- вбудовані core-команди походять із `src/auto-reply/commands-registry.shared.ts`
|
||||
- згенеровані dock-команди походять із `src/auto-reply/commands-registry.data.ts`
|
||||
- plugin-команди походять із викликів plugin `registerCommand()`
|
||||
- фактична доступність на вашому gateway усе одно залежить від прапорців конфігурації, поверхні каналу та встановлених/увімкнених plugin
|
||||
|
||||
Лише текстові:
|
||||
### Вбудовані core-команди
|
||||
|
||||
- `/compact [instructions]` (див. [/concepts/compaction](/uk/concepts/compaction))
|
||||
- `! <command>` (лише для хоста; по одній за раз; використовуйте `!poll` + `!stop` для довготривалих завдань)
|
||||
- `!poll` (перевірити вивід / стан; приймає необов’язковий `sessionId`; `/bash poll` також працює)
|
||||
- `!stop` (зупинити запущене завдання bash; приймає необов’язковий `sessionId`; `/bash stop` також працює)
|
||||
Доступні сьогодні вбудовані команди:
|
||||
|
||||
- `/new [model]` запускає нову сесію; `/reset` — псевдонім для скидання.
|
||||
- `/compact [instructions]` ущільнює контекст сесії. Див. [/concepts/compaction](/uk/concepts/compaction).
|
||||
- `/stop` перериває поточний запуск.
|
||||
- `/session idle <duration|off>` і `/session max-age <duration|off>` керують строком дії прив’язки до потоку.
|
||||
- `/think <off|minimal|low|medium|high|xhigh>` задає рівень thinking. Псевдоніми: `/thinking`, `/t`.
|
||||
- `/verbose on|off|full` перемикає розширений вивід. Псевдонім: `/v`.
|
||||
- `/fast [status|on|off]` показує або задає швидкий режим.
|
||||
- `/reasoning [on|off|stream]` перемикає видимість reasoning. Псевдонім: `/reason`.
|
||||
- `/elevated [on|off|ask|full]` перемикає elevated mode. Псевдонім: `/elev`.
|
||||
- `/exec host=<auto|sandbox|gateway|node> security=<deny|allowlist|full> ask=<off|on-miss|always> node=<id>` показує або задає типові значення exec.
|
||||
- `/model [name|#|status]` показує або задає модель.
|
||||
- `/models [provider] [page] [limit=<n>|size=<n>|all]` виводить список провайдерів або моделей для провайдера.
|
||||
- `/queue <mode>` керує поведінкою черги (`steer`, `interrupt`, `followup`, `collect`, `steer-backlog`) плюс параметрами на кшталт `debounce:2s cap:25 drop:summarize`.
|
||||
- `/help` показує коротку довідку.
|
||||
- `/commands` показує згенерований каталог команд.
|
||||
- `/tools [compact|verbose]` показує, що поточний агент може використовувати просто зараз.
|
||||
- `/status` показує стан під час виконання, включно з використанням/квотою провайдера, коли доступно.
|
||||
- `/tasks` перелічує активні/нещодавні фонові завдання для поточної сесії.
|
||||
- `/context [list|detail|json]` пояснює, як збирається контекст.
|
||||
- `/export-session [path]` експортує поточну сесію в HTML. Псевдонім: `/export`.
|
||||
- `/whoami` показує ваш id відправника. Псевдонім: `/id`.
|
||||
- `/skill <name> [input]` запускає skill за назвою.
|
||||
- `/allowlist [list|add|remove] ...` керує записами списку дозволених. Лише текст.
|
||||
- `/approve <id> <decision>` опрацьовує запити на затвердження exec.
|
||||
- `/btw <question>` ставить побічне запитання без зміни майбутнього контексту сесії. Див. [/tools/btw](/uk/tools/btw).
|
||||
- `/subagents list|kill|log|info|send|steer|spawn` керує запусками субагентів для поточної сесії.
|
||||
- `/acp spawn|cancel|steer|close|sessions|status|set-mode|set|cwd|permissions|timeout|model|reset-options|doctor|install|help` керує сесіями ACP та параметрами під час виконання.
|
||||
- `/focus <target>` прив’язує поточний потік Discord або тему/розмову Telegram до цілі сесії.
|
||||
- `/unfocus` знімає поточну прив’язку.
|
||||
- `/agents` перелічує агентів, прив’язаних до потоку, для поточної сесії.
|
||||
- `/kill <id|#|all>` перериває один або всі запущені субагенти.
|
||||
- `/steer <id|#> <message>` надсилає керування запущеному субагенту. Псевдонім: `/tell`.
|
||||
- `/config show|get|set|unset` читає або записує `openclaw.json`. Лише для власника. Потребує `commands.config: true`.
|
||||
- `/mcp show|get|set|unset` читає або записує конфігурацію MCP-сервера, керовану OpenClaw, у `mcp.servers`. Лише для власника. Потребує `commands.mcp: true`.
|
||||
- `/plugins list|inspect|show|get|install|enable|disable` перевіряє або змінює стан plugin. `/plugin` — псевдонім. Запис — лише для власника. Потребує `commands.plugins: true`.
|
||||
- `/debug show|set|unset|reset` керує перевизначеннями конфігурації лише під час виконання. Лише для власника. Потребує `commands.debug: true`.
|
||||
- `/usage off|tokens|full|cost` керує нижнім колонтитулом використання для кожної відповіді або виводить локальний підсумок вартості.
|
||||
- `/tts on|off|status|provider|limit|summary|audio|help` керує TTS. Див. [/tools/tts](/uk/tools/tts).
|
||||
- `/restart` перезапускає OpenClaw, якщо це ввімкнено. Типово: увімкнено; встановіть `commands.restart: false`, щоб вимкнути.
|
||||
- `/activation mention|always` задає режим активації групи.
|
||||
- `/send on|off|inherit` задає політику надсилання. Лише для власника.
|
||||
- `/bash <command>` виконує команду оболонки хоста. Лише текст. Псевдонім: `! <command>`. Потребує `commands.bash: true` плюс списки дозволених `tools.elevated`.
|
||||
- `!poll [sessionId]` перевіряє фонове завдання bash.
|
||||
- `!stop [sessionId]` зупиняє фонове завдання bash.
|
||||
|
||||
### Згенеровані dock-команди
|
||||
|
||||
Dock-команди генеруються з channel plugin із підтримкою нативних команд. Поточний вбудований набір:
|
||||
|
||||
- `/dock-discord` (псевдонім: `/dock_discord`)
|
||||
- `/dock-mattermost` (псевдонім: `/dock_mattermost`)
|
||||
- `/dock-slack` (псевдонім: `/dock_slack`)
|
||||
- `/dock-telegram` (псевдонім: `/dock_telegram`)
|
||||
|
||||
### Команди вбудованих plugin
|
||||
|
||||
Вбудовані plugin можуть додавати більше слеш-команд. Поточні вбудовані команди в цьому репозиторії:
|
||||
|
||||
- `/dreaming [on|off|status|help]` перемикає memory dreaming. Див. [Dreaming](/uk/concepts/dreaming).
|
||||
- `/pair [qr|status|pending|approve|cleanup|notify]` керує потоком спарювання/налаштування пристрою. Див. [Pairing](/uk/channels/pairing).
|
||||
- `/phone status|arm <camera|screen|writes|all> [duration]|disarm` тимчасово активує високоризикові команди phone node.
|
||||
- `/voice status|list [limit]|set <voiceId|name>` керує конфігурацією голосу Talk. У Discord назва нативної команди — `/talkvoice`.
|
||||
- `/card ...` надсилає пресети LINE rich card. Див. [LINE](/uk/channels/line).
|
||||
- Команди лише для QQBot:
|
||||
- `/bot-ping`
|
||||
- `/bot-version`
|
||||
- `/bot-help`
|
||||
- `/bot-upgrade`
|
||||
- `/bot-logs`
|
||||
|
||||
### Динамічні skill-команди
|
||||
|
||||
Skills, які може викликати користувач, також доступні як слеш-команди:
|
||||
|
||||
- `/skill <name> [input]` завжди працює як загальна точка входу.
|
||||
- skills також можуть з’являтися як прямі команди на кшталт `/prose`, коли skill/plugin їх реєструє.
|
||||
- реєстрацією нативних skill-команд керують `commands.nativeSkills` і `channels.<provider>.commands.nativeSkills`.
|
||||
|
||||
Примітки:
|
||||
|
||||
- Команди приймають необов’язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`).
|
||||
- `/new <model>` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст трактується як тіло повідомлення.
|
||||
- Для повного розподілу використання провайдера використовуйте `openclaw status --usage`.
|
||||
- Для повного розподілу використання за провайдерами використовуйте `openclaw status --usage`.
|
||||
- `/allowlist add|remove` потребує `commands.config=true` і враховує канал `configWrites`.
|
||||
- У каналах з кількома обліковими записами `/allowlist --account <id>`, націлений на конфігурацію, і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового облікового запису.
|
||||
- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` виводить локальний підсумок вартості з журналів сеансів OpenClaw.
|
||||
- `/restart` увімкнено типово; задайте `commands.restart: false`, щоб вимкнути його.
|
||||
- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (потребує `channels.discord.voice` і нативних команд; недоступна як текстова).
|
||||
- Команди прив’язки гілок Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують, щоб ефективні прив’язки гілок були ввімкнені (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
|
||||
- Довідник команд ACP і поведінка середовища виконання: [ACP Agents](/uk/tools/acp-agents).
|
||||
- У каналах із кількома обліковими записами `/allowlist --account <id>`, націлені на конфігурацію, і `/config set channels.<provider>.accounts.<id>...` також враховують `configWrites` цільового облікового запису.
|
||||
- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` виводить локальний підсумок вартості з журналів сесій OpenClaw.
|
||||
- `/restart` увімкнено типово; встановіть `commands.restart: false`, щоб вимкнути його.
|
||||
- `/plugins install <spec>` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:<pkg>`.
|
||||
- `/plugins enable|disable` оновлює конфігурацію plugin і може запропонувати перезапуск.
|
||||
- Нативна команда лише для Discord: `/vc join|leave|status` керує голосовими каналами (потребує `channels.discord.voice` і нативних команд; недоступна як текст).
|
||||
- Команди прив’язки до потоку в Discord (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`) потребують, щоб ефективні прив’язки до потоку були ввімкнені (`session.threadBindings.enabled` та/або `channels.discord.threadBindings.enabled`).
|
||||
- Довідник команд ACP і поведінка під час виконання: [ACP Agents](/uk/tools/acp-agents).
|
||||
- `/verbose` призначено для налагодження та додаткової видимості; у звичайному використанні тримайте його **вимкненим**.
|
||||
- `/fast on|off` зберігає перевизначення для сеансу. Використовуйте опцію `inherit` в інтерфейсі Sessions, щоб очистити його й повернутися до значень конфігурації за замовчуванням.
|
||||
- `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` у нативних ендпоінтах Responses, тоді як прямі публічні запити Anthropic, включно з трафіком з OAuth-аутентифікацією, надісланим до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic).
|
||||
- Підсумки збоїв інструментів усе ще показуються, коли це доречно, але докладний текст збою включається лише коли `/verbose` має значення `on` або `full`.
|
||||
- `/reasoning` (і `/verbose`) ризиковані в групових налаштуваннях: вони можуть розкрити внутрішні міркування або вивід інструментів, який ви не планували показувати. Краще залишати їх вимкненими, особливо в групових чатах.
|
||||
- `/model` негайно зберігає нову модель сеансу.
|
||||
- Якщо агент простоює, наступний запуск використає її одразу.
|
||||
- Якщо виконання вже активне, OpenClaw позначає живе перемикання як очікуване й перезапускає на новій моделі лише в чистій точці повторної спроби.
|
||||
- Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або наступного ходу користувача.
|
||||
- **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволу обробляються негайно (в обхід черги й моделі).
|
||||
- **Керування згадками в групі:** повідомлення лише з командами від відправників зі списку дозволу обходять вимоги щодо згадок.
|
||||
- **Вбудовані скорочення (лише для відправників зі списку дозволу):** деякі команди також працюють, коли вбудовані у звичайне повідомлення, і видаляються до того, як модель побачить решту тексту.
|
||||
- Приклад: `hey /status` запускає відповідь про стан, а решта тексту продовжує оброблятися у звичайному потоці.
|
||||
- Наразі: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
- Неавторизовані повідомлення лише з командами тихо ігноруються, а вбудовані токени `/...` трактуються як звичайний текст.
|
||||
- **Skill-команди:** skills з `user-invocable` доступні як слеш-команди. Назви санітизуються до `a-z0-9_` (максимум 32 символи); у разі колізій додаються числові суфікси (наприклад, `_2`).
|
||||
- `/skill <name> [input]` запускає skill за назвою (корисно, коли обмеження нативних команд не дозволяють команди для кожного skill окремо).
|
||||
- `/fast on|off` зберігає перевизначення сесії. Використовуйте параметр `inherit` у UI Sessions, щоб очистити його й повернутися до типових значень конфігурації.
|
||||
- `/fast` залежить від провайдера: OpenAI/OpenAI Codex зіставляють його з `service_tier=priority` на нативних ендпойнтах Responses, тоді як прямі публічні запити Anthropic, включно з OAuth-автентифікованим трафіком, надісланим до `api.anthropic.com`, зіставляють його з `service_tier=auto` або `standard_only`. Див. [OpenAI](/uk/providers/openai) і [Anthropic](/uk/providers/anthropic).
|
||||
- Підсумки збоїв інструментів усе ще показуються, коли це доречно, але детальний текст збоїв включається лише тоді, коли `/verbose` має значення `on` або `full`.
|
||||
- `/reasoning` (і `/verbose`) ризиковані в групових налаштуваннях: вони можуть розкрити внутрішнє reasoning або вивід інструментів, який ви не збиралися показувати. Краще залишати їх вимкненими, особливо в групових чатах.
|
||||
- `/model` негайно зберігає нову модель сесії.
|
||||
- Якщо агент простоює, наступний запуск використовує її одразу.
|
||||
- Якщо запуск уже активний, OpenClaw позначає живе перемикання як очікуване й перезапускається з новою моделлю лише в чистій точці повторної спроби.
|
||||
- Якщо активність інструментів або вивід відповіді вже почалися, очікуване перемикання може залишатися в черзі до пізнішої можливості повторної спроби або до наступного ходу користувача.
|
||||
- **Швидкий шлях:** повідомлення лише з командами від відправників зі списку дозволених обробляються негайно (оминають чергу та модель).
|
||||
- **Фільтрація згадок у групах:** повідомлення лише з командами від відправників зі списку дозволених обходять вимоги до згадки.
|
||||
- **Вбудовані скорочення (лише для відправників зі списку дозволених):** деякі команди також працюють, коли вбудовані в звичайне повідомлення, і видаляються до того, як модель побачить решту тексту.
|
||||
- Приклад: `hey /status` викликає відповідь зі статусом, а решта тексту продовжує проходити звичайним шляхом.
|
||||
- Зараз: `/help`, `/commands`, `/status`, `/whoami` (`/id`).
|
||||
- Неавторизовані повідомлення лише з командами мовчки ігноруються, а вбудовані токени `/...` трактуються як звичайний текст.
|
||||
- **Skill-команди:** skills із типом `user-invocable` доступні як слеш-команди. Назви санітизуються до `a-z0-9_` (макс. 32 символи); у разі колізій додаються числові суфікси (наприклад, `_2`).
|
||||
- `/skill <name> [input]` запускає skill за назвою (корисно, коли обмеження нативних команд не дають створити окремі команди для кожного skill).
|
||||
- Типово skill-команди пересилаються моделі як звичайний запит.
|
||||
- Skills можуть необов’язково оголошувати `command-dispatch: tool`, щоб маршрутити команду безпосередньо до інструмента (детерміновано, без моделі).
|
||||
- Skills можуть необов’язково оголосити `command-dispatch: tool`, щоб спрямувати команду безпосередньо в інструмент (детерміновано, без моделі).
|
||||
- Приклад: `/prose` (plugin OpenProse) — див. [OpenProse](/uk/prose).
|
||||
- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти, а ви не вказали аргумент.
|
||||
- **Аргументи нативних команд:** Discord використовує автодоповнення для динамічних параметрів (і меню кнопок, коли ви пропускаєте обов’язкові аргументи). Telegram і Slack показують меню кнопок, коли команда підтримує варіанти вибору, а ви не вказуєте аргумент.
|
||||
|
||||
## `/tools`
|
||||
|
||||
`/tools` відповідає на запитання про середовище виконання, а не про конфігурацію: **що цей агент може використовувати прямо зараз у
|
||||
цій розмові**.
|
||||
`/tools` відповідає на запитання під час виконання, а не на запитання про конфігурацію: **що цей агент може використовувати прямо зараз
|
||||
у цій розмові**.
|
||||
|
||||
- Типовий `/tools` є компактним і оптимізованим для швидкого перегляду.
|
||||
- Типовий `/tools` компактний і оптимізований для швидкого перегляду.
|
||||
- `/tools verbose` додає короткі описи.
|
||||
- Поверхні з нативними командами, які підтримують аргументи, надають той самий перемикач режиму `compact|verbose`.
|
||||
- Результати прив’язані до сеансу, тому зміна агента, каналу, гілки, авторизації відправника або моделі може
|
||||
- Поверхні нативних команд, які підтримують аргументи, надають той самий перемикач режиму як `compact|verbose`.
|
||||
- Результати прив’язані до сесії, тому зміна агента, каналу, потоку, авторизації відправника або моделі може
|
||||
змінити вивід.
|
||||
- `/tools` містить інструменти, які реально доступні під час виконання, включно з основними інструментами, підключеними
|
||||
інструментами plugin і інструментами, що належать каналу.
|
||||
- `/tools` включає інструменти, які реально доступні під час виконання, зокрема core tools, підключені
|
||||
plugin tools і channel-owned tools.
|
||||
|
||||
Для редагування профілю та перевизначень використовуйте панель Tools у Control UI або поверхні конфігурації/каталогу,
|
||||
а не трактуйте `/tools` як статичний каталог.
|
||||
Для редагування профілю та перевизначень використовуйте панель Tools у Control UI або поверхні конфігурації/каталогу, а не
|
||||
ставтеся до `/tools` як до статичного каталогу.
|
||||
|
||||
## Поверхні використання (що де показується)
|
||||
|
||||
- **Використання/квота провайдера** (наприклад, «Claude 80% left») показується в `/status` для поточного провайдера моделі, коли ввімкнено відстеження використання. OpenClaw нормалізує вікна провайдерів до `% left`; для MiniMax відсоткові поля лише залишку інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису chat-model плюс мітці плану, прив’язаній до моделі.
|
||||
- **Рядки token/cache** у `/status` можуть брати резервні значення з останнього запису використання в транскрипті, коли живий знімок сеансу є неповним. Наявні ненульові живі значення все одно мають пріоритет, а резерв із транскрипту також може відновити мітку активної моделі середовища виконання та більший загальний обсяг, орієнтований на prompt, коли збережені підсумки відсутні або менші.
|
||||
- **Tokens/cost для кожної відповіді** керуються через `/usage off|tokens|full` (додаються до звичайних відповідей).
|
||||
- `/model status` стосується **моделей/аутентифікації/ендпоінтів**, а не використання.
|
||||
- **Використання/квота провайдера** (наприклад, «Claude 80% left») показується в `/status` для поточного провайдера моделі, коли відстеження використання увімкнено. OpenClaw нормалізує вікна провайдерів до `% left`; для MiniMax поля відсотка лише із залишком інвертуються перед показом, а відповіді `model_remains` віддають перевагу запису chat-model плюс мітці плану з тегом моделі.
|
||||
- **Рядки token/cache** у `/status` можуть повертатися до останнього запису використання в транскрипті, якщо актуальний знімок сесії бідний на дані. Наявні ненульові актуальні значення все одно мають пріоритет, а повернення до транскрипту також може відновити мітку активної моделі під час виконання плюс більший загальний обсяг, орієнтований на prompt, коли збережені підсумки відсутні або менші.
|
||||
- **Tokens/cost для кожної відповіді** керується через `/usage off|tokens|full` (додається до звичайних відповідей).
|
||||
- `/model status` стосується **моделей/автентифікації/ендпойнтів**, а не використання.
|
||||
|
||||
## Вибір моделі (`/model`)
|
||||
|
||||
@ -213,13 +251,13 @@ x-i18n:
|
||||
Примітки:
|
||||
|
||||
- `/model` і `/model list` показують компактний нумерований вибір (сімейство моделей + доступні провайдери).
|
||||
- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера та моделі й кроком Submit.
|
||||
- `/model <#>` вибирає з цього списку (і, якщо можливо, віддає перевагу поточному провайдеру).
|
||||
- `/model status` показує докладний вигляд, зокрема налаштований ендпоінт провайдера (`baseUrl`) і режим API (`api`), якщо доступно.
|
||||
- У Discord `/model` і `/models` відкривають інтерактивний вибір із випадними списками провайдера та моделі плюс кроком Submit.
|
||||
- `/model <#>` вибирає зі списку вибору (і за можливості віддає перевагу поточному провайдеру).
|
||||
- `/model status` показує детальний вигляд, зокрема налаштований ендпойнт провайдера (`baseUrl`) і режим API (`api`), коли доступно.
|
||||
|
||||
## Перевизначення налагодження
|
||||
## Перевизначення для налагодження
|
||||
|
||||
`/debug` дає змогу задавати перевизначення конфігурації **лише під час виконання** (у пам’яті, не на диску). Лише для власника. Типово вимкнено; увімкніть через `commands.debug: true`.
|
||||
`/debug` дає змогу задавати перевизначення конфігурації **лише під час виконання** (пам’ять, не диск). Лише для власника. Типово вимкнено; увімкніть через `commands.debug: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -252,7 +290,7 @@ x-i18n:
|
||||
|
||||
Примітки:
|
||||
|
||||
- Перед записом конфігурація проходить валідацію; недійсні зміни відхиляються.
|
||||
- Конфігурація перевіряється перед записом; недійсні зміни відхиляються.
|
||||
- Оновлення `/config` зберігаються після перезапусків.
|
||||
|
||||
## Оновлення MCP
|
||||
@ -271,11 +309,11 @@ x-i18n:
|
||||
Примітки:
|
||||
|
||||
- `/mcp` зберігає конфігурацію в конфігурації OpenClaw, а не в налаштуваннях проєкту, що належать Pi.
|
||||
- Адаптери середовища виконання вирішують, які транспорти реально можна виконати.
|
||||
- Адаптери під час виконання вирішують, які транспорти реально можна виконати.
|
||||
|
||||
## Оновлення plugins
|
||||
## Оновлення plugin
|
||||
|
||||
`/plugins` дає операторам змогу переглядати виявлені plugins і перемикати стан увімкнення в конфігурації. Для сценаріїв лише читання можна використовувати `/plugin` як псевдонім. Типово вимкнено; увімкніть через `commands.plugins: true`.
|
||||
`/plugins` дає операторам змогу переглядати знайдені plugin і перемикати стан увімкнення в конфігурації. Потоки лише для читання можуть використовувати `/plugin` як псевдонім. Типово вимкнено; увімкніть через `commands.plugins: true`.
|
||||
|
||||
Приклади:
|
||||
|
||||
@ -289,30 +327,30 @@ x-i18n:
|
||||
|
||||
Примітки:
|
||||
|
||||
- `/plugins list` і `/plugins show` використовують реальне виявлення plugins для поточного workspace і конфігурації на диску.
|
||||
- `/plugins enable|disable` оновлює лише конфігурацію plugin; команди не встановлюють і не видаляють plugins.
|
||||
- `/plugins list` і `/plugins show` використовують реальне виявлення plugin для поточного workspace плюс конфігурацію на диску.
|
||||
- `/plugins enable|disable` оновлює лише конфігурацію plugin; це не встановлює і не видаляє plugin.
|
||||
- Після змін увімкнення/вимкнення перезапустіть gateway, щоб застосувати їх.
|
||||
|
||||
## Примітки про поверхні
|
||||
## Примітки щодо поверхонь
|
||||
|
||||
- **Текстові команди** виконуються у звичайному сеансі чату (DM ділять `main`, групи мають власний сеанс).
|
||||
- **Нативні команди** використовують ізольовані сеанси:
|
||||
- **Текстові команди** виконуються у звичайній чат-сесії (приватні повідомлення використовують `main`, групи мають власну сесію).
|
||||
- **Нативні команди** використовують ізольовані сесії:
|
||||
- Discord: `agent:<agentId>:discord:slash:<userId>`
|
||||
- Slack: `agent:<agentId>:slack:slash:<userId>` (префікс налаштовується через `channels.slack.slashCommand.sessionPrefix`)
|
||||
- Telegram: `telegram:slash:<userId>` (націлюється на сеанс чату через `CommandTargetSessionKey`)
|
||||
- **`/stop`** націлюється на активний сеанс чату, щоб можна було перервати поточне виконання.
|
||||
- **Slack:** `channels.slack.slashCommand` усе ще підтримується для однієї команди у стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну слеш-команду Slack для кожної вбудованої команди (з тими самими назвами, що й у `/help`). Меню аргументів команд для Slack доставляються як тимчасові кнопки Block Kit.
|
||||
- Виняток для нативної команди Slack: зареєструйте `/agentstatus` (а не `/status`), тому що Slack резервує `/status`. Текстова `/status` у повідомленнях Slack усе одно працює.
|
||||
- Telegram: `telegram:slash:<userId>` (націлюється на чат-сесію через `CommandTargetSessionKey`)
|
||||
- **`/stop`** націлюється на активну чат-сесію, щоб можна було перервати поточний запуск.
|
||||
- **Slack:** `channels.slack.slashCommand` усе ще підтримується для однієї команди у стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, ви повинні створити одну слеш-команду Slack для кожної вбудованої команди (з тими ж назвами, що й `/help`). Меню аргументів команд для Slack доставляються як ефемерні кнопки Block Kit.
|
||||
- Виняток для нативної команди Slack: зареєструйте `/agentstatus` (не `/status`), тому що Slack резервує `/status`. Текстова `/status` у повідомленнях Slack усе одно працює.
|
||||
|
||||
## Побічні запитання BTW
|
||||
|
||||
`/btw` — це швидке **побічне запитання** про поточний сеанс.
|
||||
`/btw` — це швидке **побічне запитання** про поточну сесію.
|
||||
|
||||
На відміну від звичайного чату:
|
||||
|
||||
- воно використовує поточний сеанс як фоновий контекст,
|
||||
- воно виконується як окремий одноразовий виклик **без інструментів**,
|
||||
- воно не змінює майбутній контекст сеансу,
|
||||
- воно використовує поточну сесію як фоновий контекст,
|
||||
- воно виконується як окремий **одноразовий** виклик без інструментів,
|
||||
- воно не змінює майбутній контекст сесії,
|
||||
- воно не записується в історію транскрипту,
|
||||
- воно доставляється як живий побічний результат, а не як звичайне повідомлення асистента.
|
||||
|
||||
@ -325,5 +363,5 @@ x-i18n:
|
||||
/btw what are we doing right now?
|
||||
```
|
||||
|
||||
Див. [BTW Side Questions](/uk/tools/btw), щоб ознайомитися з повною поведінкою та
|
||||
деталями UX клієнта.
|
||||
Див. [BTW Side Questions](/uk/tools/btw), щоб дізнатися про повну поведінку та деталі
|
||||
клієнтського UX.
|
||||
|
||||
@ -1,20 +1,20 @@
|
||||
---
|
||||
read_when:
|
||||
- Увімкнення text-to-speech для відповідей
|
||||
- Налаштування провайдерів TTS або лімітів
|
||||
- Увімкнення синтезу мовлення для відповідей
|
||||
- Налаштування провайдерів TTS або обмежень
|
||||
- Використання команд /tts
|
||||
summary: Text-to-speech (TTS) для вихідних відповідей
|
||||
title: Text-to-Speech
|
||||
summary: Синтез мовлення (TTS) для вихідних відповідей
|
||||
title: Синтез мовлення
|
||||
x-i18n:
|
||||
generated_at: "2026-04-05T18:21:44Z"
|
||||
generated_at: "2026-04-08T05:14:21Z"
|
||||
model: gpt-5.4
|
||||
provider: openai
|
||||
source_hash: 8487c8acef7585bd4eb5e3b39e2a063ebc6b5f0103524abdcbadd3a7781ffc46
|
||||
source_hash: 6e0fbcaf61282733c134f682e05a71f94d2169c03a85131ce9ad233c71a1e533
|
||||
source_path: tools/tts.md
|
||||
workflow: 15
|
||||
---
|
||||
|
||||
# Text-to-speech (TTS)
|
||||
# Синтез мовлення (TTS)
|
||||
|
||||
OpenClaw може перетворювати вихідні відповіді на аудіо за допомогою ElevenLabs, Microsoft, MiniMax або OpenAI.
|
||||
Це працює всюди, де OpenClaw може надсилати аудіо.
|
||||
@ -24,18 +24,18 @@ OpenClaw може перетворювати вихідні відповіді
|
||||
- **ElevenLabs** (основний або резервний провайдер)
|
||||
- **Microsoft** (основний або резервний провайдер; поточна вбудована реалізація використовує `node-edge-tts`)
|
||||
- **MiniMax** (основний або резервний провайдер; використовує API T2A v2)
|
||||
- **OpenAI** (основний або резервний провайдер; також використовується для summary)
|
||||
- **OpenAI** (основний або резервний провайдер; також використовується для підсумків)
|
||||
|
||||
### Примітки щодо мовлення Microsoft
|
||||
### Примітки щодо Microsoft speech
|
||||
|
||||
Поточний вбудований провайдер мовлення Microsoft використовує онлайн-сервіс
|
||||
нейронного TTS Microsoft Edge через бібліотеку `node-edge-tts`. Це хостований сервіс (не
|
||||
локальний), який використовує кінцеві точки Microsoft і не потребує API key.
|
||||
Поточний вбудований провайдер Microsoft speech наразі використовує онлайн-
|
||||
сервіс нейромережевого TTS Microsoft Edge через бібліотеку `node-edge-tts`. Це хостинговий сервіс (не
|
||||
локальний), він використовує кінцеві точки Microsoft і не потребує API-ключа.
|
||||
`node-edge-tts` надає параметри конфігурації мовлення та формати виводу, але
|
||||
не всі параметри підтримуються сервісом. Застаріла конфігурація та вхід директив
|
||||
із `edge` усе ще працюють і нормалізуються до `microsoft`.
|
||||
сервіс підтримує не всі параметри. Застаріла конфігурація та вхідні директиви
|
||||
з `edge` усе ще працюють і нормалізуються до `microsoft`.
|
||||
|
||||
Оскільки цей шлях використовує публічний вебсервіс без опублікованого SLA чи квоти,
|
||||
Оскільки цей шлях використовує публічний вебсервіс без опублікованих SLA або квот,
|
||||
розглядайте його як best-effort. Якщо вам потрібні гарантовані ліміти та підтримка, використовуйте OpenAI
|
||||
або ElevenLabs.
|
||||
|
||||
@ -47,34 +47,34 @@ OpenClaw може перетворювати вихідні відповіді
|
||||
- `MINIMAX_API_KEY`
|
||||
- `OPENAI_API_KEY`
|
||||
|
||||
Мовлення Microsoft **не** потребує API key.
|
||||
Microsoft speech **не** потребує API-ключа.
|
||||
|
||||
Якщо налаштовано кілька провайдерів, спочатку використовується вибраний провайдер, а інші стають резервними варіантами.
|
||||
Auto-summary використовує налаштований `summaryModel` (або `agents.defaults.model.primary`),
|
||||
тому якщо ви вмикаєте summary, цей провайдер також має бути автентифікований.
|
||||
Якщо налаштовано кілька провайдерів, спочатку використовується вибраний провайдер, а інші слугують резервними варіантами.
|
||||
Автоматичний підсумок використовує налаштований `summaryModel` (або `agents.defaults.model.primary`),
|
||||
тому цей провайдер також має бути автентифікований, якщо ви вмикаєте підсумки.
|
||||
|
||||
## Посилання на сервіси
|
||||
|
||||
- [Посібник OpenAI Text-to-Speech](https://platform.openai.com/docs/guides/text-to-speech)
|
||||
- [Довідник OpenAI Audio API](https://platform.openai.com/docs/api-reference/audio)
|
||||
- [Довідка OpenAI Audio API](https://platform.openai.com/docs/api-reference/audio)
|
||||
- [ElevenLabs Text to Speech](https://elevenlabs.io/docs/api-reference/text-to-speech)
|
||||
- [Автентифікація ElevenLabs](https://elevenlabs.io/docs/api-reference/authentication)
|
||||
- [API MiniMax T2A v2](https://platform.minimaxi.com/document/T2A%20V2)
|
||||
- [MiniMax T2A v2 API](https://platform.minimaxi.com/document/T2A%20V2)
|
||||
- [node-edge-tts](https://github.com/SchneeHertz/node-edge-tts)
|
||||
- [Формати виводу Microsoft Speech](https://learn.microsoft.com/azure/ai-services/speech-service/rest-text-to-speech#audio-outputs)
|
||||
|
||||
## Чи ввімкнено це типово?
|
||||
## Чи ввімкнено це за замовчуванням?
|
||||
|
||||
Ні. Auto‑TTS **вимкнено** типово. Увімкніть його в конфігурації через
|
||||
`messages.tts.auto` або для окремої сесії через `/tts always` (псевдонім: `/tts on`).
|
||||
Ні. Авто‑TTS **вимкнено** за замовчуванням. Увімкніть його в конфігурації через
|
||||
`messages.tts.auto` або локально за допомогою `/tts on`.
|
||||
|
||||
Коли `messages.tts.provider` не задано, OpenClaw вибирає перший налаштований
|
||||
провайдер мовлення в порядку auto-select реєстру.
|
||||
мовний провайдер у порядку автоматичного вибору реєстру.
|
||||
|
||||
## Конфігурація
|
||||
|
||||
Конфігурація TTS міститься в `messages.tts` у `openclaw.json`.
|
||||
Повна схема наведена в [Gateway configuration](/uk/gateway/configuration).
|
||||
Конфігурація TTS розташована в `messages.tts` у `openclaw.json`.
|
||||
Повна схема наведена в [Конфігурація Gateway](/uk/gateway/configuration).
|
||||
|
||||
### Мінімальна конфігурація (увімкнення + провайдер)
|
||||
|
||||
@ -89,7 +89,7 @@ Auto-summary використовує налаштований `summaryModel` (
|
||||
}
|
||||
```
|
||||
|
||||
### OpenAI як основний із резервним ElevenLabs
|
||||
### OpenAI як основний, ElevenLabs як резервний
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -130,7 +130,7 @@ Auto-summary використовує налаштований `summaryModel` (
|
||||
}
|
||||
```
|
||||
|
||||
### Microsoft як основний (без API key)
|
||||
### Microsoft як основний (без API-ключа)
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -177,7 +177,7 @@ Auto-summary використовує налаштований `summaryModel` (
|
||||
}
|
||||
```
|
||||
|
||||
### Вимкнення мовлення Microsoft
|
||||
### Вимкнути Microsoft speech
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -193,7 +193,7 @@ Auto-summary використовує налаштований `summaryModel` (
|
||||
}
|
||||
```
|
||||
|
||||
### Власні ліміти + шлях до prefs
|
||||
### Власні обмеження + шлях до prefs
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -220,7 +220,7 @@ Auto-summary використовує налаштований `summaryModel` (
|
||||
}
|
||||
```
|
||||
|
||||
### Вимкнення auto-summary для довгих відповідей
|
||||
### Вимкнути автоматичний підсумок для довгих відповідей
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -240,63 +240,63 @@ Auto-summary використовує налаштований `summaryModel` (
|
||||
|
||||
### Примітки щодо полів
|
||||
|
||||
- `auto`: режим auto‑TTS (`off`, `always`, `inbound`, `tagged`).
|
||||
- `auto`: режим авто‑TTS (`off`, `always`, `inbound`, `tagged`).
|
||||
- `inbound` надсилає аудіо лише після вхідного голосового повідомлення.
|
||||
- `tagged` надсилає аудіо лише тоді, коли відповідь містить теги `[[tts]]`.
|
||||
- `enabled`: застарілий перемикач (doctor переносить його до `auto`).
|
||||
- `enabled`: застарілий перемикач (doctor переносить його в `auto`).
|
||||
- `mode`: `"final"` (типово) або `"all"` (включає відповіді інструментів/блоків).
|
||||
- `provider`: id провайдера мовлення, наприклад `"elevenlabs"`, `"microsoft"`, `"minimax"` або `"openai"` (резервний варіант вибирається автоматично).
|
||||
- Якщо `provider` **не задано**, OpenClaw використовує перший налаштований провайдер мовлення в порядку auto-select реєстру.
|
||||
- `provider`: ідентифікатор мовного провайдера, наприклад `"elevenlabs"`, `"microsoft"`, `"minimax"` або `"openai"` (резервне перемикання відбувається автоматично).
|
||||
- Якщо `provider` **не задано**, OpenClaw використовує перший налаштований мовний провайдер у порядку автоматичного вибору реєстру.
|
||||
- Застаріле `provider: "edge"` усе ще працює й нормалізується до `microsoft`.
|
||||
- `summaryModel`: необов’язкова дешева модель для auto-summary; типово `agents.defaults.model.primary`.
|
||||
- Приймає `provider/model` або налаштований псевдонім моделі.
|
||||
- `modelOverrides`: дозволяє моделі виводити директиви TTS (типово ввімкнено).
|
||||
- `allowProvider` типово дорівнює `false` (перемикання провайдера вмикається окремо).
|
||||
- `providers.<id>`: налаштування конкретного провайдера за id провайдера мовлення.
|
||||
- Застарілі прямі блоки провайдерів (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) автоматично переносяться до `messages.tts.providers.<id>` під час завантаження.
|
||||
- `maxTextLength`: жорсткий ліміт для вхідного тексту TTS (символи). `/tts audio` завершується помилкою, якщо його перевищено.
|
||||
- `summaryModel`: необов’язкова дешева модель для автоматичного підсумку; типово `agents.defaults.model.primary`.
|
||||
- Приймає `provider/model` або псевдонім налаштованої моделі.
|
||||
- `modelOverrides`: дозволяє моделі видавати директиви TTS (увімкнено за замовчуванням).
|
||||
- `allowProvider` типово має значення `false` (перемикання провайдера вмикається окремо).
|
||||
- `providers.<id>`: налаштування, що належать провайдеру, з ключем ідентифікатора мовного провайдера.
|
||||
- Застарілі прямі блоки провайдерів (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) автоматично мігруються до `messages.tts.providers.<id>` під час завантаження.
|
||||
- `maxTextLength`: жорстке обмеження для вхідного тексту TTS (символи). `/tts audio` завершується помилкою, якщо його перевищено.
|
||||
- `timeoutMs`: тайм-аут запиту (мс).
|
||||
- `prefsPath`: перевизначає локальний шлях до JSON prefs (provider/limit/summary).
|
||||
- Значення `apiKey` резервно беруться зі змінних середовища (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`).
|
||||
- `providers.elevenlabs.baseUrl`: перевизначає базову URL-адресу API ElevenLabs.
|
||||
- `prefsPath`: перевизначає локальний шлях до JSON-файлу налаштувань (провайдер/ліміт/підсумок).
|
||||
- Значення `apiKey` беруться з env vars, якщо не задані (`ELEVENLABS_API_KEY`/`XI_API_KEY`, `MINIMAX_API_KEY`, `OPENAI_API_KEY`).
|
||||
- `providers.elevenlabs.baseUrl`: перевизначає базовий URL API ElevenLabs.
|
||||
- `providers.openai.baseUrl`: перевизначає кінцеву точку OpenAI TTS.
|
||||
- Порядок визначення: `messages.tts.providers.openai.baseUrl` -> `OPENAI_TTS_BASE_URL` -> `https://api.openai.com/v1`
|
||||
- Значення, відмінні від типового, розглядаються як OpenAI-compatible кінцеві точки TTS, тому дозволені власні назви моделей і голосів.
|
||||
- Значення, відмінні від типового, розглядаються як OpenAI-сумісні кінцеві точки TTS, тому приймаються власні назви моделей і голосів.
|
||||
- `providers.elevenlabs.voiceSettings`:
|
||||
- `stability`, `similarityBoost`, `style`: `0..1`
|
||||
- `useSpeakerBoost`: `true|false`
|
||||
- `speed`: `0.5..2.0` (1.0 = звичайно)
|
||||
- `speed`: `0.5..2.0` (1.0 = звичайна швидкість)
|
||||
- `providers.elevenlabs.applyTextNormalization`: `auto|on|off`
|
||||
- `providers.elevenlabs.languageCode`: дволітерний ISO 639-1 (наприклад, `en`, `de`)
|
||||
- `providers.elevenlabs.seed`: ціле число `0..4294967295` (best-effort determinism)
|
||||
- `providers.minimax.baseUrl`: перевизначає базову URL-адресу API MiniMax (типово `https://api.minimax.io`, env: `MINIMAX_API_HOST`).
|
||||
- `providers.elevenlabs.languageCode`: 2-літерний ISO 639-1 (наприклад, `en`, `de`)
|
||||
- `providers.elevenlabs.seed`: ціле число `0..4294967295` (детермінованість у режимі best-effort)
|
||||
- `providers.minimax.baseUrl`: перевизначає базовий URL API MiniMax (типово `https://api.minimax.io`, env: `MINIMAX_API_HOST`).
|
||||
- `providers.minimax.model`: модель TTS (типово `speech-2.8-hd`, env: `MINIMAX_TTS_MODEL`).
|
||||
- `providers.minimax.voiceId`: ідентифікатор голосу (типово `English_expressive_narrator`, env: `MINIMAX_TTS_VOICE_ID`).
|
||||
- `providers.minimax.speed`: швидкість відтворення `0.5..2.0` (типово 1.0).
|
||||
- `providers.minimax.vol`: гучність `(0, 10]` (типово 1.0; має бути більшою за 0).
|
||||
- `providers.minimax.pitch`: зсув тону `-12..12` (типово 0).
|
||||
- `providers.microsoft.enabled`: дозволяє використання мовлення Microsoft (типово `true`; без API key).
|
||||
- `providers.microsoft.voice`: назва нейронного голосу Microsoft (наприклад, `en-US-MichelleNeural`).
|
||||
- `providers.microsoft.enabled`: дозволяє використовувати Microsoft speech (типово `true`; без API-ключа).
|
||||
- `providers.microsoft.voice`: назва нейромережевого голосу Microsoft (наприклад, `en-US-MichelleNeural`).
|
||||
- `providers.microsoft.lang`: код мови (наприклад, `en-US`).
|
||||
- `providers.microsoft.outputFormat`: формат виводу Microsoft (наприклад, `audio-24khz-48kbitrate-mono-mp3`).
|
||||
- Коректні значення див. у форматах виводу Microsoft Speech; не всі формати підтримуються вбудованим транспортом на основі Edge.
|
||||
- Дійсні значення див. у Microsoft Speech output formats; не всі формати підтримуються вбудованим транспортом на основі Edge.
|
||||
- `providers.microsoft.rate` / `providers.microsoft.pitch` / `providers.microsoft.volume`: рядки з відсотками (наприклад, `+10%`, `-5%`).
|
||||
- `providers.microsoft.saveSubtitles`: записує JSON-субтитри поруч з аудіофайлом.
|
||||
- `providers.microsoft.proxy`: URL-адреса проксі для запитів мовлення Microsoft.
|
||||
- `providers.microsoft.saveSubtitles`: записувати JSON-субтитри поруч з аудіофайлом.
|
||||
- `providers.microsoft.proxy`: URL проксі для запитів Microsoft speech.
|
||||
- `providers.microsoft.timeoutMs`: перевизначення тайм-ауту запиту (мс).
|
||||
- `edge.*`: застарілий псевдонім для тих самих налаштувань Microsoft.
|
||||
|
||||
## Перевизначення, керовані моделлю (типово ввімкнені)
|
||||
## Керовані моделлю перевизначення (увімкнено за замовчуванням)
|
||||
|
||||
Типово модель **може** виводити директиви TTS для однієї окремої відповіді.
|
||||
За замовчуванням модель **може** видавати директиви TTS для однієї відповіді.
|
||||
Коли `messages.tts.auto` має значення `tagged`, ці директиви потрібні для запуску аудіо.
|
||||
|
||||
Коли це ввімкнено, модель може виводити директиви `[[tts:...]]` для перевизначення голосу
|
||||
для однієї відповіді, а також необов’язковий блок `[[tts:text]]...[[/tts:text]]`,
|
||||
щоб додати виразні теги (сміх, підказки до співу тощо), які мають з’являтися лише в
|
||||
аудіо.
|
||||
Коли це ввімкнено, модель може видавати директиви `[[tts:...]]`, щоб перевизначити голос
|
||||
для однієї відповіді, а також необов’язковий блок `[[tts:text]]...[[/tts:text]]`, щоб
|
||||
надати виразні теги (сміх, підказки для співу тощо), які мають з’являтися лише
|
||||
в аудіо.
|
||||
|
||||
Директиви `provider=...` ігноруються, якщо `modelOverrides.allowProvider: true` не ввімкнено.
|
||||
Директиви `provider=...` ігноруються, якщо не встановлено `modelOverrides.allowProvider: true`.
|
||||
|
||||
Приклад payload відповіді:
|
||||
|
||||
@ -309,17 +309,17 @@ Here you go.
|
||||
|
||||
Доступні ключі директив (коли ввімкнено):
|
||||
|
||||
- `provider` (id зареєстрованого провайдера мовлення, наприклад `openai`, `elevenlabs`, `minimax` або `microsoft`; потребує `allowProvider: true`)
|
||||
- `provider` (ідентифікатор зареєстрованого мовного провайдера, наприклад `openai`, `elevenlabs`, `minimax` або `microsoft`; потребує `allowProvider: true`)
|
||||
- `voice` (голос OpenAI) або `voiceId` (ElevenLabs / MiniMax)
|
||||
- `model` (модель OpenAI TTS, id моделі ElevenLabs або модель MiniMax)
|
||||
- `model` (модель OpenAI TTS, model id ElevenLabs або модель MiniMax)
|
||||
- `stability`, `similarityBoost`, `style`, `speed`, `useSpeakerBoost`
|
||||
- `vol` / `volume` (гучність MiniMax, 0-10)
|
||||
- `pitch` (тон MiniMax, -12 до 12)
|
||||
- `pitch` (тон MiniMax, від -12 до 12)
|
||||
- `applyTextNormalization` (`auto|on|off`)
|
||||
- `languageCode` (ISO 639-1)
|
||||
- `seed`
|
||||
|
||||
Вимкнення всіх перевизначень моделі:
|
||||
Вимкнути всі перевизначення моделі:
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -333,7 +333,7 @@ Here you go.
|
||||
}
|
||||
```
|
||||
|
||||
Необов’язковий allowlist (увімкнути перемикання провайдера, але залишити інші параметри налаштовуваними):
|
||||
Необов’язковий список дозволів (увімкнути перемикання провайдера, залишивши інші параметри налаштовуваними):
|
||||
|
||||
```json5
|
||||
{
|
||||
@ -349,17 +349,17 @@ Here you go.
|
||||
}
|
||||
```
|
||||
|
||||
## Налаштування для окремого користувача
|
||||
## Налаштування для кожного користувача
|
||||
|
||||
Команди slash записують локальні перевизначення до `prefsPath` (типово:
|
||||
`~/.openclaw/settings/tts.json`, можна перевизначити через `OPENCLAW_TTS_PREFS` або
|
||||
Slash commands записують локальні перевизначення в `prefsPath` (типово:
|
||||
`~/.openclaw/settings/tts.json`, перевизначається через `OPENCLAW_TTS_PREFS` або
|
||||
`messages.tts.prefsPath`).
|
||||
|
||||
Поля, що зберігаються:
|
||||
|
||||
- `enabled`
|
||||
- `provider`
|
||||
- `maxLength` (поріг для summary; типово 1500 символів)
|
||||
- `maxLength` (поріг для підсумку; типово 1500 символів)
|
||||
- `summarize` (типово `true`)
|
||||
|
||||
Вони перевизначають `messages.tts.*` для цього хоста.
|
||||
@ -370,28 +370,28 @@ Here you go.
|
||||
- 48 кГц / 64 кбіт/с — хороший компроміс для голосових повідомлень.
|
||||
- **Інші канали**: MP3 (`mp3_44100_128` від ElevenLabs, `mp3` від OpenAI).
|
||||
- 44.1 кГц / 128 кбіт/с — типовий баланс для чіткості мовлення.
|
||||
- **MiniMax**: MP3 (модель `speech-2.8-hd`, частота дискретизації 32 кГц). Формат голосових нотаток нативно не підтримується; використовуйте OpenAI або ElevenLabs для гарантованих голосових повідомлень Opus.
|
||||
- **MiniMax**: MP3 (модель `speech-2.8-hd`, частота дискретизації 32 кГц). Формат голосових нотаток нативно не підтримується; використовуйте OpenAI або ElevenLabs, якщо вам потрібні гарантовані голосові повідомлення Opus.
|
||||
- **Microsoft**: використовує `microsoft.outputFormat` (типово `audio-24khz-48kbitrate-mono-mp3`).
|
||||
- Вбудований транспорт приймає `outputFormat`, але не всі формати доступні в сервісі.
|
||||
- Значення форматів виводу відповідають форматам виводу Microsoft Speech (включно з Ogg/WebM Opus).
|
||||
- `sendVoice` у Telegram приймає OGG/MP3/M4A; використовуйте OpenAI/ElevenLabs, якщо вам потрібні
|
||||
- Вбудований транспорт приймає `outputFormat`, але сервіс надає не всі формати.
|
||||
- Значення форматів виводу відповідають Microsoft Speech output formats (включно з Ogg/WebM Opus).
|
||||
- Telegram `sendVoice` приймає OGG/MP3/M4A; використовуйте OpenAI/ElevenLabs, якщо вам потрібні
|
||||
гарантовані голосові повідомлення Opus.
|
||||
- Якщо налаштований формат виводу Microsoft не спрацьовує, OpenClaw повторює спробу з MP3.
|
||||
- Якщо налаштований формат виводу Microsoft завершується помилкою, OpenClaw повторює спробу з MP3.
|
||||
|
||||
Формати виводу OpenAI/ElevenLabs є фіксованими для кожного каналу (див. вище).
|
||||
|
||||
## Поведінка Auto-TTS
|
||||
## Поведінка авто-TTS
|
||||
|
||||
Коли це ввімкнено, OpenClaw:
|
||||
Коли функцію ввімкнено, OpenClaw:
|
||||
|
||||
- пропускає TTS, якщо відповідь уже містить медіа або директиву `MEDIA:`.
|
||||
- пропускає дуже короткі відповіді (< 10 символів).
|
||||
- виконує summary довгих відповідей, якщо це ввімкнено, за допомогою `agents.defaults.model.primary` (або `summaryModel`).
|
||||
- підсумовує довгі відповіді, якщо це ввімкнено, за допомогою `agents.defaults.model.primary` (або `summaryModel`).
|
||||
- додає згенероване аудіо до відповіді.
|
||||
|
||||
Якщо відповідь перевищує `maxLength`, а summary вимкнено (або немає API key для
|
||||
моделі summary), аудіо
|
||||
пропускається, і надсилається звичайна текстова відповідь.
|
||||
Якщо відповідь перевищує `maxLength`, а підсумок вимкнено (або немає API-ключа для
|
||||
моделі підсумку), аудіо
|
||||
пропускається і надсилається звичайна текстова відповідь.
|
||||
|
||||
## Діаграма потоку
|
||||
|
||||
@ -408,19 +408,17 @@ Reply -> TTS enabled?
|
||||
-> TTS -> attach audio
|
||||
```
|
||||
|
||||
## Використання slash-команди
|
||||
## Використання Slash command
|
||||
|
||||
Є одна команда: `/tts`.
|
||||
Подробиці ввімкнення див. у [Slash commands](/tools/slash-commands).
|
||||
Докладніше про ввімкнення див. у [Slash commands](/uk/tools/slash-commands).
|
||||
|
||||
Примітка для Discord: `/tts` — це вбудована команда Discord, тому OpenClaw реєструє там
|
||||
`/voice` як нативну команду. Текстовий варіант `/tts ...` усе ще працює.
|
||||
Примітка для Discord: `/tts` — це вбудована команда Discord, тому OpenClaw реєструє
|
||||
`/voice` як нативну команду там. Текстова команда `/tts ...` усе ще працює.
|
||||
|
||||
```
|
||||
/tts off
|
||||
/tts always
|
||||
/tts inbound
|
||||
/tts tagged
|
||||
/tts on
|
||||
/tts status
|
||||
/tts provider openai
|
||||
/tts limit 2000
|
||||
@ -432,20 +430,22 @@ Reply -> TTS enabled?
|
||||
|
||||
- Команди потребують авторизованого відправника (правила allowlist/owner усе ще застосовуються).
|
||||
- Має бути ввімкнено `commands.text` або реєстрацію нативних команд.
|
||||
- `off|always|inbound|tagged` — це перемикачі для окремої сесії (`/tts on` є псевдонімом для `/tts always`).
|
||||
- `limit` і `summary` зберігаються в локальних prefs, а не в основній конфігурації.
|
||||
- Конфігурація `messages.tts.auto` приймає `off|always|inbound|tagged`.
|
||||
- `/tts on` записує локальне налаштування TTS як `always`; `/tts off` записує його як `off`.
|
||||
- Використовуйте конфігурацію, якщо вам потрібні типові значення `inbound` або `tagged`.
|
||||
- `limit` і `summary` зберігаються в локальних налаштуваннях, а не в основній конфігурації.
|
||||
- `/tts audio` генерує одноразову аудіовідповідь (не вмикає TTS постійно).
|
||||
- `/tts status` містить видимість fallback для останньої спроби:
|
||||
- успішний fallback: `Fallback: <primary> -> <used>` плюс `Attempts: ...`
|
||||
- `/tts status` містить видимість резервного перемикання для останньої спроби:
|
||||
- успішне резервне перемикання: `Fallback: <primary> -> <used>` плюс `Attempts: ...`
|
||||
- помилка: `Error: ...` плюс `Attempts: ...`
|
||||
- докладна діагностика: `Attempt details: provider:outcome(reasonCode) latency`
|
||||
- Помилки API OpenAI та ElevenLabs тепер містять розібрані деталі помилки провайдера та id запиту (коли провайдер їх повертає), які відображаються в помилках/логах TTS.
|
||||
- Помилки API OpenAI та ElevenLabs тепер містять розібрані деталі помилки провайдера та request id (коли провайдер їх повертає), які відображаються в помилках/логах TTS.
|
||||
|
||||
## Інструмент агента
|
||||
|
||||
Інструмент `tts` перетворює текст на мовлення і повертає аудіовкладення для
|
||||
Інструмент `tts` перетворює текст на мовлення та повертає аудіовкладення для
|
||||
доставки у відповіді. Коли каналом є Feishu, Matrix, Telegram або WhatsApp,
|
||||
аудіо доставляється як голосове повідомлення, а не як файлове вкладення.
|
||||
аудіо доставляється як голосове повідомлення, а не як вкладений файл.
|
||||
|
||||
## Gateway RPC
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user