diff --git a/docs/uk/gateway/configuration.md b/docs/uk/gateway/configuration.md index 3d19307d1..63479c708 100644 --- a/docs/uk/gateway/configuration.md +++ b/docs/uk/gateway/configuration.md @@ -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 читає необов’язкову конфігурацію **JSON5** з `~/.openclaw/openclaw.json`. -Якщо файл відсутній, OpenClaw використовує безпечні типові значення. Типові причини додати конфігурацію: +Якщо файл відсутній, OpenClaw використовує безпечні значення за замовчуванням. Поширені причини додати конфігурацію: - Підключити канали та визначити, хто може надсилати повідомлення боту -- Задати моделі, інструменти, sandboxing або автоматизацію (cron, hooks) +- Налаштувати моделі, інструменти, ізоляцію або автоматизацію (cron, hooks) - Налаштувати сесії, медіа, мережу або UI -Усі доступні поля див. у [повному довіднику](/gateway/configuration-reference). +Див. [повний довідник](/uk/gateway/configuration-reference) для всіх доступних полів. -**Вперше працюєте з конфігурацією?** Почніть з `openclaw onboard` для інтерактивного налаштування або перегляньте посібник [Приклади конфігурації](/gateway/configuration-examples) з готовими повними конфігураціями для копіювання. +**Новачок у конфігурації?** Почніть із `openclaw onboard` для інтерактивного налаштування або перегляньте посібник [Приклади конфігурації](/uk/gateway/configuration-examples) із готовими повними конфігураціями для копіювання. ## Мінімальна конфігурація @@ -45,8 +45,8 @@ OpenClaw читає необов’язкову конфігурацію ```bash - openclaw onboard # full onboarding flow - openclaw configure # config wizard + openclaw onboard # повний процес початкового налаштування + openclaw configure # майстер конфігурації ``` @@ -58,63 +58,67 @@ OpenClaw читає необов’язкову конфігурацію Відкрийте [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`, щоб + отримати один вузол схеми, обмежений шляхом, разом із короткими зведеннями безпосередніх дочірніх елементів. - Редагуйте `~/.openclaw/openclaw.json` безпосередньо. Gateway стежить за файлом і автоматично застосовує зміни (див. [гаряче перезавантаження](#config-hot-reload)). + Відредагуйте `~/.openclaw/openclaw.json` напряму. Gateway стежить за файлом і автоматично застосовує зміни (див. [гаряче перезавантаження](#config-hot-reload)). ## Сувора валідація -OpenClaw приймає лише конфігурації, які повністю відповідають схемі. Невідомі ключі, неправильні типи або недійсні значення змушують Gateway **відмовитися від запуску**. Єдиний виняток на кореневому рівні — `$schema` (string), щоб редактори могли підключати метадані JSON Schema. +OpenClaw приймає лише конфігурації, які повністю відповідають схемі. Невідомі ключі, некоректні типи або недійсні значення призводять до того, що Gateway **відмовляється запускатися**. Єдиний виняток на рівні кореня — `$schema` (рядок), щоб редактори могли додавати метадані JSON Schema. -Примітки щодо інструментів схем: +Примітки щодо інструментів схеми: - `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`), щоб застосувати виправлення -## Типові завдання +## Поширені завдання - - Кожен канал має власний розділ конфігурації під `channels.`. Кроки налаштування див. на окремій сторінці каналу: + + Кожен канал має власний розділ конфігурації в `channels.`. Див. окрему сторінку каналу для кроків налаштування: - - [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 приймає лише конфігурації, які повніст - - Задайте основну модель і необов’язкові резервні варіанти: + + Налаштуйте основну модель і необов’язкові резервні: ```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) у довіднику. - - Доступ до DM керується для кожного каналу через `dmPolicy`: + + Доступ до 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) для деталей по кожному каналу. - - Для групових повідомлень типово **потрібне згадування**. Налаштуйте шаблони для кожного агента: + + Для групових повідомлень типово **потрібна згадка**. Налаштуйте шаблони для кожного агента: ```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. - - Використовуйте `agents.defaults.skills` для спільного базового набору, а потім перевизначайте конкретні - агенти через `agents.list[].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). - + Керуйте тим, наскільки агресивно gateway перезапускає канали, які виглядають застарілими: ```json5 @@ -254,20 +258,20 @@ OpenClaw приймає лише конфігурації, які повніст } ``` - - Задайте `gateway.channelHealthCheckMinutes: 0`, щоб глобально вимкнути перезапуски за health-monitor. - - `channelStaleEventThresholdMinutes` має бути більшим або рівним інтервалу перевірки. - - Використовуйте `channels..healthMonitor.enabled` або `channels..accounts..healthMonitor.enabled`, щоб вимкнути автоперезапуски для одного каналу або облікового запису без вимкнення глобального монітора. - - Для операційного налагодження див. [Health Checks](/gateway/health), а всі поля — у [повному довіднику](/gateway/configuration-reference#gateway). + - Встановіть `gateway.channelHealthCheckMinutes: 0`, щоб глобально вимкнути перезапуски health-monitor. + - `channelStaleEventThresholdMinutes` має бути більшим або дорівнювати інтервалу перевірки. + - Використовуйте `channels..healthMonitor.enabled` або `channels..accounts..healthMonitor.enabled`, щоб вимкнути автоперезапуски для одного каналу чи облікового запису без вимкнення глобального монітора. + - Див. [Health Checks](/uk/gateway/health) для операційного налагодження та [повний довідник](/uk/gateway/configuration-reference#gateway) для всіх полів. - - Сесії керують безперервністю розмови та ізоляцією: + + Сесії керують безперервністю та ізоляцією розмов: ```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) для всіх полів. - - Запускайте сесії агентів в ізольованих Docker-контейнерах: + + Запускайте сесії агентів в ізольованих контейнерах 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) для всіх параметрів. - + 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. - + ```json5 { agents: { @@ -382,14 +386,14 @@ OpenClaw приймає лише конфігурації, які повніст } ``` - - `every`: рядок тривалості (`30m`, `2h`). Задайте `0m`, щоб вимкнути. - - `target`: `last` | `none` | `` (наприклад `discord`, `matrix`, `telegram` або `whatsapp`) + - `every`: рядок тривалості (`30m`, `2h`). Встановіть `0m`, щоб вимкнути. + - `target`: `last` | `none` | `` (наприклад, `discord`, `matrix`, `telegram` або `whatsapp`) - `directPolicy`: `allow` (типово) або `block` для heartbeat-цілей у стилі DM - - Повний посібник див. у [Heartbeat](/gateway/heartbeat). + - Див. [Heartbeat](/uk/gateway/heartbeat) для повного посібника. - + ```json5 { cron: { @@ -404,14 +408,14 @@ OpenClaw приймає лише конфігурації, які повніст } ``` - - `sessionRetention`: очищення завершених ізольованих сесій запусків із `sessions.json` (типово `24h`; задайте `false`, щоб вимкнути). - - `runLog`: очищення `cron/runs/.jsonl` за розміром і кількістю збережених рядків. - - Огляд функцій і приклади CLI див. у [Cron jobs](/automation/cron-jobs). + - `sessionRetention`: очищати завершені ізольовані сесії запуску з `sessions.json` (типове значення `24h`; встановіть `false`, щоб вимкнути). + - `runLog`: очищати `cron/runs/.jsonl` за розміром і кількістю збережених рядків. + - Див. [Cron jobs](/uk/automation/cron-jobs) для огляду функції та прикладів CLI. - - Увімкніть HTTP webhook-ендпоїнти на Gateway: + + Увімкніть 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. - - Запускайте кілька ізольованих агентів з окремими workspace і session: + + Запускайте кількох ізольованих агентів з окремими 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 і профілів доступу для кожного агента. - - Використовуйте `$include`, щоб організувати великі конфігурації: + + Використовуйте `$include`, щоб упорядкувати великі конфігурації: ```json5 // ~/.openclaw/openclaw.json @@ -484,26 +488,26 @@ OpenClaw приймає лише конфігурації, які повніст ``` - **Один файл**: замінює об’єкт, у якому міститься - - **Масив файлів**: deep-merge у заданому порядку (пізніший перемагає) - - **Сусідні ключі**: об’єднуються після includes (перевизначають включені значення) - - **Вкладені includes**: підтримуються до 10 рівнів вкладеності - - **Відносні шляхи**: визначаються відносно файлу, що включає - - **Обробка помилок**: зрозумілі помилки для відсутніх файлів, помилок парсингу та циклічних include + - **Масив файлів**: deep-merge у вказаному порядку (пізніші мають пріоритет) + - **Сусідні ключі**: зливаються після include’ів (перевизначають включені значення) + - **Вкладені include’и**: підтримуються до 10 рівнів вкладеності + - **Відносні шляхи**: обчислюються відносно файла, який виконує включення + - **Обробка помилок**: зрозумілі помилки для відсутніх файлів, помилок парсингу й циклічних include’ів ## Гаряче перезавантаження конфігурації -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` | **Так** | -`gateway.reload` і `gateway.remote` — винятки: їхня зміна **не** викликає перезапуск. +`gateway.reload` і `gateway.remote` — винятки: їх зміна **не** викликає перезапуск. -## RPC конфігурації (програмні оновлення) +## Config RPC (програмні оновлення) -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`. Безпечний/типовий потік: -- `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`. - Перевіряє + записує повну конфігурацію та перезапускає Gateway одним кроком. + Перевіряє, записує повну конфігурацію та перезапускає Gateway одним кроком. - `config.apply` замінює **всю конфігурацію**. Для часткових оновлень використовуйте `config.patch`, а для окремих ключів — `openclaw config set`. + `config.apply` замінює **всю конфігурацію**. Використовуйте `config.patch` для часткових оновлень або `openclaw config set` для окремих ключів. Параметри: - - `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": "", @@ -581,19 +585,19 @@ RPC керуючої площини для запису (`config.apply`, `config - Об’єднує часткове оновлення з наявною конфігурацією (семантика 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 із батьківського процесу, а } ``` - - Якщо ввімкнено і очікувані ключі не задано, OpenClaw запускає ваш login shell і імпортує лише відсутні ключі: + + Якщо це ввімкнено й очікувані ключі не задано, OpenClaw запускає вашу login shell і імпортує лише відсутні ключі: ```json5 { @@ -638,7 +642,7 @@ OpenClaw читає env vars із батьківського процесу, а - Посилайтеся на 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"` - Для полів, які підтримують об’єкти 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). -Повний порядок пріоритетів і джерела див. у [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)_ diff --git a/docs/uk/tools/slash-commands.md b/docs/uk/tools/slash-commands.md index 39f3b7d5e..317755b55 100644 --- a/docs/uk/tools/slash-commands.md +++ b/docs/uk/tools/slash-commands.md @@ -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 лише для хоста використовує `! ` (із псевдонімом `/bash `). +Команди обробляються Gateway. Більшість команд потрібно надсилати як **окреме** повідомлення, що починається з `/`. +Команда чату bash лише для хоста використовує `! ` (із `/bash ` як псевдонімом). Є дві пов’язані системи: - **Команди**: окремі повідомлення `/...`. - **Директиви**: `/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`) вмикає `! ` для виконання shell-команд хоста (`/bash ` є псевдонімом; потрібні списки дозволу `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`) вмикає `! ` для виконання команд оболонки хоста (`/bash ` — псевдонім; потребує списків дозволених `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 [input]` (запустити skill за назвою) -- `/status` (показати поточний стан; містить використання/квоту провайдера для поточного провайдера моделі, якщо доступно) -- `/tasks` (показати фонові завдання для поточного сеансу; відображає активні та нещодавні деталі завдань із локальними для агента резервними лічильниками) -- `/allowlist` (перегляд/додавання/видалення записів списку дозволу) -- `/approve ` (розв’язати запити на погодження exec; використовуйте повідомлення з очікуваним погодженням для доступних рішень) -- `/context [list|detail|json]` (пояснює «контекст»; `detail` показує розмір для кожного файла + кожного інструмента + кожного skill + системного prompt) -- `/btw ` (поставити тимчасове побічне запитання про поточний сеанс без зміни майбутнього контексту сеансу; див. [/tools/btw](/uk/tools/btw)) -- `/export-session [path]` (псевдонім: `/export`) (експортувати поточний сеанс у HTML з повним системним prompt) -- `/whoami` (показати ваш sender id; псевдонім: `/id`) -- `/session idle ` (керування автоматичним зняттям фокуса через неактивність для прив’язок сфокусованих гілок) -- `/session max-age ` (керування жорстким автоматичним зняттям фокуса за максимальним віком для прив’язок сфокусованих гілок) -- `/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 ` (Discord: прив’язати цю гілку або нову гілку до цілі сеансу/субагента) -- `/unfocus` (Discord: прибрати поточну прив’язку гілки) -- `/kill ` (негайно перервати один або всі запущені субагенти для цього сеансу; без повідомлення-підтвердження) -- `/steer ` (негайно спрямувати запущений субагент: під час виконання, якщо можливо, інакше перервати поточну роботу й перезапустити з повідомленням спрямування) -- `/tell ` (псевдонім для `/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 ` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:`. - - Записи для увімкнення/вимкнення все одно повертають підказку про перезапуск. У 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 ` (динамічні варіанти залежно від моделі/провайдера; псевдоніми: `/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= security= ask= node=` (надішліть `/exec`, щоб показати поточне) -- `/model ` (псевдонім: `/models`; або `/` з `agents.defaults.models.*.alias`) -- `/queue ` (плюс параметри на кшталт `debounce:2s cap:25 drop:summarize`; надішліть `/queue`, щоб побачити поточні налаштування) -- `/bash ` (лише для хоста; псевдонім для `! `; потребує `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)) -- `! ` (лише для хоста; по одній за раз; використовуйте `!poll` + `!stop` для довготривалих завдань) -- `!poll` (перевірити вивід / стан; приймає необов’язковий `sessionId`; `/bash poll` також працює) -- `!stop` (зупинити запущене завдання bash; приймає необов’язковий `sessionId`; `/bash stop` також працює) +Доступні сьогодні вбудовані команди: + +- `/new [model]` запускає нову сесію; `/reset` — псевдонім для скидання. +- `/compact [instructions]` ущільнює контекст сесії. Див. [/concepts/compaction](/uk/concepts/compaction). +- `/stop` перериває поточний запуск. +- `/session idle ` і `/session max-age ` керують строком дії прив’язки до потоку. +- `/think ` задає рівень 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= security= ask= node=` показує або задає типові значення exec. +- `/model [name|#|status]` показує або задає модель. +- `/models [provider] [page] [limit=|size=|all]` виводить список провайдерів або моделей для провайдера. +- `/queue ` керує поведінкою черги (`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 [input]` запускає skill за назвою. +- `/allowlist [list|add|remove] ...` керує записами списку дозволених. Лише текст. +- `/approve ` опрацьовує запити на затвердження exec. +- `/btw ` ставить побічне запитання без зміни майбутнього контексту сесії. Див. [/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 ` прив’язує поточний потік Discord або тему/розмову Telegram до цілі сесії. +- `/unfocus` знімає поточну прив’язку. +- `/agents` перелічує агентів, прив’язаних до потоку, для поточної сесії. +- `/kill ` перериває один або всі запущені субагенти. +- `/steer ` надсилає керування запущеному субагенту. Псевдонім: `/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 ` виконує команду оболонки хоста. Лише текст. Псевдонім: `! `. Потребує `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 [duration]|disarm` тимчасово активує високоризикові команди phone node. +- `/voice status|list [limit]|set ` керує конфігурацією голосу 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 [input]` завжди працює як загальна точка входу. +- skills також можуть з’являтися як прямі команди на кшталт `/prose`, коли skill/plugin їх реєструє. +- реєстрацією нативних skill-команд керують `commands.nativeSkills` і `channels..commands.nativeSkills`. Примітки: - Команди приймають необов’язковий `:` між командою та аргументами (наприклад, `/think: high`, `/send: on`, `/help:`). - `/new ` приймає псевдонім моделі, `provider/model` або назву провайдера (нечіткий збіг); якщо збігу немає, текст трактується як тіло повідомлення. -- Для повного розподілу використання провайдера використовуйте `openclaw status --usage`. +- Для повного розподілу використання за провайдерами використовуйте `openclaw status --usage`. - `/allowlist add|remove` потребує `commands.config=true` і враховує канал `configWrites`. -- У каналах з кількома обліковими записами `/allowlist --account `, націлений на конфігурацію, і `/config set channels..accounts....` також враховують `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 `, націлені на конфігурацію, і `/config set channels..accounts....` також враховують `configWrites` цільового облікового запису. +- `/usage` керує нижнім колонтитулом використання для кожної відповіді; `/usage cost` виводить локальний підсумок вартості з журналів сесій OpenClaw. +- `/restart` увімкнено типово; встановіть `commands.restart: false`, щоб вимкнути його. +- `/plugins install ` приймає ті самі специфікації plugin, що й `openclaw plugins install`: локальний шлях/архів, npm-пакет або `clawhub:`. +- `/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 [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 [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::discord:slash:` - Slack: `agent::slack:slash:` (префікс налаштовується через `channels.slack.slashCommand.sessionPrefix`) - - Telegram: `telegram:slash:` (націлюється на сеанс чату через `CommandTargetSessionKey`) -- **`/stop`** націлюється на активний сеанс чату, щоб можна було перервати поточне виконання. -- **Slack:** `channels.slack.slashCommand` усе ще підтримується для однієї команди у стилі `/openclaw`. Якщо ви вмикаєте `commands.native`, потрібно створити одну слеш-команду Slack для кожної вбудованої команди (з тими самими назвами, що й у `/help`). Меню аргументів команд для Slack доставляються як тимчасові кнопки Block Kit. - - Виняток для нативної команди Slack: зареєструйте `/agentstatus` (а не `/status`), тому що Slack резервує `/status`. Текстова `/status` у повідомленнях Slack усе одно працює. + - Telegram: `telegram:slash:` (націлюється на чат-сесію через `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. diff --git a/docs/uk/tools/tts.md b/docs/uk/tools/tts.md index a0d90eac0..8c72ee32c 100644 --- a/docs/uk/tools/tts.md +++ b/docs/uk/tools/tts.md @@ -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 провайдера мовлення. -- Застарілі прямі блоки провайдерів (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) автоматично переносяться до `messages.tts.providers.` під час завантаження. -- `maxTextLength`: жорсткий ліміт для вхідного тексту TTS (символи). `/tts audio` завершується помилкою, якщо його перевищено. +- `summaryModel`: необов’язкова дешева модель для автоматичного підсумку; типово `agents.defaults.model.primary`. + - Приймає `provider/model` або псевдонім налаштованої моделі. +- `modelOverrides`: дозволяє моделі видавати директиви TTS (увімкнено за замовчуванням). + - `allowProvider` типово має значення `false` (перемикання провайдера вмикається окремо). +- `providers.`: налаштування, що належать провайдеру, з ключем ідентифікатора мовного провайдера. +- Застарілі прямі блоки провайдерів (`messages.tts.openai`, `messages.tts.elevenlabs`, `messages.tts.microsoft`, `messages.tts.edge`) автоматично мігруються до `messages.tts.providers.` під час завантаження. +- `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: -> ` плюс `Attempts: ...` +- `/tts status` містить видимість резервного перемикання для останньої спроби: + - успішне резервне перемикання: `Fallback: -> ` плюс `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