From dd572ef0db971bd5e35eb92692ebdd3b774e91f1 Mon Sep 17 00:00:00 2001 From: "openclaw-docs-i18n[bot]" Date: Sat, 25 Apr 2026 20:17:05 +0000 Subject: [PATCH] chore(i18n): refresh uk translations --- docs/uk/gateway/config-agents.md | 556 +++++++++--------- docs/uk/gateway/configuration-reference.md | 632 +++++++++++---------- docs/uk/install/updating.md | 47 +- docs/uk/nodes/talk.md | 60 +- 4 files changed, 651 insertions(+), 644 deletions(-) diff --git a/docs/uk/gateway/config-agents.md b/docs/uk/gateway/config-agents.md index dd087ff63..ff9094e06 100644 --- a/docs/uk/gateway/config-agents.md +++ b/docs/uk/gateway/config-agents.md @@ -1,28 +1,28 @@ --- read_when: - - Налаштування типових параметрів агента (моделі, thinking, робочий простір, Heartbeat, медіа, Skills) + - Налаштування типових параметрів агента (моделі, мислення, робочий простір, Heartbeat, медіа, Skills) - Налаштування маршрутизації між кількома агентами та прив’язок - Налаштування сесії, доставки повідомлень і поведінки режиму talk summary: Типові налаштування агента, маршрутизація між кількома агентами, сесія, повідомлення та конфігурація talk title: Конфігурація — агенти x-i18n: - generated_at: "2026-04-25T18:33:43Z" + generated_at: "2026-04-25T20:13:31Z" model: gpt-5.4 provider: openai - source_hash: d017648f522fe7be7cfca2691735132f60888c8c1ac6d84689ab327e9187e965 + source_hash: 0f072438d8445e494b296d2d48f31841292f55758270c2f8095df5c89a6ba013 source_path: gateway/config-agents.md workflow: 15 --- -Ключі конфігурації в області дії агента в `agents.*`, `multiAgent.*`, `session.*`, -`messages.*` і `talk.*`. Для каналів, інструментів, середовища виконання Gateway та інших -ключів верхнього рівня див. [Довідник із конфігурації](/uk/gateway/configuration-reference). +Ключі конфігурації з областю дії агента в `agents.*`, `multiAgent.*`, `session.*`, +`messages.*` і `talk.*`. Для каналів, інструментів, runtime Gateway та інших +ключів верхнього рівня див. [Довідник конфігурації](/uk/gateway/configuration-reference). ## Типові параметри агента ### `agents.defaults.workspace` -Типове значення: `~/.openclaw/workspace`. +За замовчуванням: `~/.openclaw/workspace`. ```json5 { @@ -32,7 +32,7 @@ x-i18n: ### `agents.defaults.repoRoot` -Необов’язковий корінь репозиторію, який показується в рядку Runtime системного запиту. Якщо не задано, OpenClaw автоматично визначає його, підіймаючись угору від робочого простору. +Необов’язковий корінь репозиторію, який показується в рядку Runtime системного prompt. Якщо не задано, OpenClaw автоматично визначає його, піднімаючись вгору від робочого простору. ```json5 { @@ -58,9 +58,9 @@ x-i18n: } ``` -- Опустіть `agents.defaults.skills`, щоб типово дозволити необмежені Skills. -- Опустіть `agents.list[].skills`, щоб успадкувати типові значення. -- Установіть `agents.list[].skills: []`, щоб не було Skills. +- Не вказуйте `agents.defaults.skills`, щоб Skills за замовчуванням були без обмежень. +- Не вказуйте `agents.list[].skills`, щоб успадкувати типові значення. +- Встановіть `agents.list[].skills: []`, щоб не було Skills. - Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він не об’єднується з типовими значеннями. @@ -76,10 +76,10 @@ x-i18n: ### `agents.defaults.contextInjection` -Керує тим, коли bootstrap-файли робочого простору вбудовуються в системний запит. Типове значення: `"always"`. +Керує тим, коли bootstrap-файли робочого простору вбудовуються в системний prompt. За замовчуванням: `"always"`. -- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторне вбудовування bootstrap-файлів робочого простору, що зменшує розмір запиту. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст. -- `"never"`: вимикає вбудовування bootstrap-файлів робочого простору та файлів контексту на кожному ході. Використовуйте це лише для агентів, які повністю керують власним життєвим циклом запиту (власні рушії контексту, нативні середовища виконання, що самі формують свій контекст, або спеціалізовані робочі процеси без bootstrap). Ходи Heartbeat і відновлення після Compaction також пропускають вбудовування. +- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторне вбудовування bootstrap-контексту робочого простору, зменшуючи розмір prompt. Запуски Heartbeat і повторні спроби після Compaction все одно перебудовують контекст. +- `"never"`: вимикає вбудовування bootstrap-файлів робочого простору та context-файлів на кожному ході. Використовуйте це лише для агентів, які повністю керують власним життєвим циклом prompt (власні context-рушії, нативні runtime, що самі будують свій контекст, або спеціалізовані робочі процеси без bootstrap). Ходи Heartbeat і відновлення після Compaction також пропускають вбудовування. ```json5 { @@ -89,7 +89,7 @@ x-i18n: ### `agents.defaults.bootstrapMaxChars` -Максимальна кількість символів у кожному bootstrap-файлі робочого простору до обрізання. Типове значення: `12000`. +Максимальна кількість символів на один bootstrap-файл робочого простору до обрізання. За замовчуванням: `12000`. ```json5 { @@ -99,7 +99,7 @@ x-i18n: ### `agents.defaults.bootstrapTotalMaxChars` -Максимальна загальна кількість символів, що вбудовуються з усіх bootstrap-файлів робочого простору. Типове значення: `60000`. +Максимальна загальна кількість символів, що вбудовуються з усіх bootstrap-файлів робочого простору. За замовчуванням: `60000`. ```json5 { @@ -110,11 +110,11 @@ x-i18n: ### `agents.defaults.bootstrapPromptTruncationWarning` Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізається. -Типове значення: `"once"`. +За замовчуванням: `"once"`. -- `"off"`: ніколи не вбудовувати текст попередження в системний запит. -- `"once"`: вбудовувати попередження один раз для кожного унікального підпису обрізання (рекомендовано). -- `"always"`: вбудовувати попередження під час кожного запуску, коли є обрізання. +- `"off"`: ніколи не вбудовувати текст попередження в системний prompt. +- `"once"`: вбудовувати попередження один раз для кожного унікального сигнатурного випадку обрізання (рекомендовано). +- `"always"`: вбудовувати попередження під час кожного запуску, якщо є обрізання. ```json5 { @@ -122,24 +122,24 @@ x-i18n: } ``` -### Карта відповідальності за бюджет контексту +### Карта володіння бюджетом контексту -OpenClaw має кілька великих бюджетів запиту/контексту, і вони -навмисно розділені за підсистемами замість того, щоб усе проходило через -один загальний параметр. +OpenClaw має кілька великих бюджетів prompt/контексту, і вони +навмисно розділені між підсистемами, а не проходять через один загальний +параметр. - `agents.defaults.bootstrapMaxChars` / `agents.defaults.bootstrapTotalMaxChars`: звичайне вбудовування bootstrap робочого простору. - `agents.defaults.startupContext.*`: - одноразова стартова преамбула для `/new` і `/reset`, включно з нещодавніми - файлами `memory/*.md` за днями. + одноразова стартова прелюдія для `/new` і `/reset`, включно з нещодавніми + щоденними файлами `memory/*.md`. - `skills.limits.*`: - стиснутий список Skills, вбудований у системний запит. + компактний список Skills, вбудований у системний prompt. - `agents.defaults.contextLimits.*`: - обмежені фрагменти середовища виконання та вбудовані блоки, що належать середовищу виконання. + обмежені runtime-уривки та вбудовані блоки, якими володіє runtime. - `memory.qmd.limits.*`: - розмір фрагментів і вбудовування для індексованого пошуку в пам’яті. + розміри фрагментів індексованого пошуку в пам’яті та їх вбудовування. Використовуйте відповідне перевизначення для окремого агента лише тоді, коли одному агенту потрібен інший бюджет: @@ -149,7 +149,7 @@ OpenClaw має кілька великих бюджетів запиту/кон #### `agents.defaults.startupContext` -Керує стартовою преамбулою першого ходу, яка вбудовується в порожні запуски `/new` і `/reset`. +Керує стартовою прелюдією першого ходу, яка вбудовується під час простих запусків `/new` і `/reset`. ```json5 { @@ -170,7 +170,7 @@ OpenClaw має кілька великих бюджетів запиту/кон #### `agents.defaults.contextLimits` -Спільні типові значення для обмежених поверхонь контексту середовища виконання. +Спільні типові значення для обмежених поверхонь runtime-контексту. ```json5 { @@ -187,18 +187,18 @@ OpenClaw має кілька великих бюджетів запиту/кон } ``` -- `memoryGetMaxChars`: типове обмеження фрагмента `memory_get` до додавання +- `memoryGetMaxChars`: типове обмеження уривка `memory_get` до додавання метаданих обрізання та повідомлення про продовження. -- `memoryGetDefaultLines`: типове вікно рядків `memory_get`, якщо `lines` +- `memoryGetDefaultLines`: типове вікно рядків для `memory_get`, коли `lines` не вказано. -- `toolResultMaxChars`: обмеження результату інструмента в реальному часі, що використовується для збережених результатів і +- `toolResultMaxChars`: обмеження для результатів інструментів у live-режимі, яке використовується для збережених результатів і відновлення після переповнення. -- `postCompactionMaxChars`: обмеження фрагмента AGENTS.md, що використовується під час вбудовування +- `postCompactionMaxChars`: обмеження уривка AGENTS.md, що використовується під час вбудовування оновлення після Compaction. #### `agents.list[].contextLimits` -Перевизначення для окремого агента для спільних параметрів `contextLimits`. Пропущені поля успадковуються +Перевизначення для окремого агента для спільних параметрів `contextLimits`. Поля, які не вказано, успадковуються з `agents.defaults.contextLimits`. ```json5 @@ -225,7 +225,7 @@ OpenClaw має кілька великих бюджетів запиту/кон #### `skills.limits.maxSkillsPromptChars` -Глобальне обмеження для стиснутого списку Skills, вбудованого в системний запит. Це +Глобальне обмеження для компактного списку Skills, який вбудовується в системний prompt. Це не впливає на читання файлів `SKILL.md` на вимогу. ```json5 @@ -240,7 +240,7 @@ OpenClaw має кілька великих бюджетів запиту/кон #### `agents.list[].skillsLimits.maxSkillsPromptChars` -Перевизначення бюджету запиту Skills для окремого агента. +Перевизначення для окремого агента для бюджету prompt Skills. ```json5 { @@ -259,10 +259,10 @@ OpenClaw має кілька великих бюджетів запиту/кон ### `agents.defaults.imageMaxDimensionPx` -Максимальний розмір у пікселях для довшого боку зображення в блоках зображень транскрипту/інструментів перед викликами провайдера. -Типове значення: `1200`. +Максимальний розмір у пікселях для довшої сторони зображення в блоках зображень transcript/tool перед викликами провайдера. +За замовчуванням: `1200`. -Нижчі значення зазвичай зменшують використання vision-токенів і розмір корисного навантаження запиту для сценаріїв із великою кількістю знімків екрана. +Нижчі значення зазвичай зменшують використання vision-токенів і розмір payload запиту для сценаріїв із великою кількістю скриншотів. Вищі значення зберігають більше візуальних деталей. ```json5 @@ -273,7 +273,7 @@ OpenClaw має кілька великих бюджетів запиту/кон ### `agents.defaults.userTimezone` -Часовий пояс для контексту системного запиту (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста. +Часовий пояс для контексту системного prompt (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста. ```json5 { @@ -283,7 +283,7 @@ OpenClaw має кілька великих бюджетів запиту/кон ### `agents.defaults.timeFormat` -Формат часу в системному запиті. Типове значення: `auto` (параметри ОС). +Формат часу в системному prompt. За замовчуванням: `auto` (налаштування ОС). ```json5 { @@ -323,7 +323,7 @@ OpenClaw має кілька великих бюджетів запиту/кон }, params: { cacheRetention: "long" }, // глобальні типові параметри провайдера embeddedHarness: { - runtime: "pi", // pi | auto | ідентифікатор зареєстрованого harness, наприклад codex + runtime: "pi", // pi | auto | id зареєстрованого harness, наприклад codex fallback: "pi", // pi | none }, pdfMaxBytesMb: 10, @@ -342,52 +342,52 @@ OpenClaw має кілька великих бюджетів запиту/кон - `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Форма рядка задає лише основну модель. - - Форма об’єкта задає основну модель плюс упорядковані резервні моделі для failover. + - Форма об’єкта задає основну модель і впорядкований список моделей для аварійного перемикання. - `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - - Використовується шляхом інструмента `image` як конфігурація vision-моделі. + - Використовується шляхом інструмента `image` як його конфігурація vision-моделі. - Також використовується як резервна маршрутизація, коли вибрана/типова модель не може приймати вхідні зображення. - `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею інструмента/Plugin, що генерує зображення. - - Типові значення: `google/gemini-3.1-flash-image-preview` для нативної генерації зображень Gemini, `fal/fal-ai/flux/dev` для fal, `openai/gpt-image-2` для OpenAI Images або `openai/gpt-image-1.5` для прозорого PNG/WebP-виводу OpenAI. - - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2` / `openai/gpt-image-1.5`, `FAL_KEY` для `fal/*`). - - Якщо це поле опущено, `image_generate` усе одно може визначити типове значення провайдера на основі автентифікації. Спочатку він пробує поточного типового провайдера, потім — решту зареєстрованих провайдерів генерації зображень у порядку їхніх ідентифікаторів провайдерів. + - Типові значення: `google/gemini-3.1-flash-image-preview` для нативної генерації зображень Gemini, `fal/fal-ai/flux/dev` для fal, `openai/gpt-image-2` для OpenAI Images або `openai/gpt-image-1.5` для виводу OpenAI PNG/WebP із прозорим фоном. + - Якщо ви напряму вибираєте провайдера/модель, також налаштуйте відповідну автентифікацію провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` або OpenAI Codex OAuth для `openai/gpt-image-2` / `openai/gpt-image-1.5`, `FAL_KEY` для `fal/*`). + - Якщо значення не задано, `image_generate` все одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id. - `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується спільною можливістю генерації музики та вбудованим інструментом `music_generate`. - Типові значення: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` або `minimax/music-2.6`. - - Якщо це поле опущено, `music_generate` усе одно може визначити типове значення провайдера на основі автентифікації. Спочатку він пробує поточного типового провайдера, потім — решту зареєстрованих провайдерів генерації музики в порядку їхніх ідентифікаторів провайдерів. - - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію провайдера/API key. + - Якщо значення не задано, `music_generate` все одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації музики у порядку provider-id. + - Якщо ви напряму вибираєте провайдера/модель, також налаштуйте відповідну автентифікацію провайдера/API-ключ. - `videoGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується спільною можливістю генерації відео та вбудованим інструментом `video_generate`. - Типові значення: `qwen/wan2.6-t2v`, `qwen/wan2.6-i2v`, `qwen/wan2.6-r2v`, `qwen/wan2.6-r2v-flash` або `qwen/wan2.7-r2v`. - - Якщо це поле опущено, `video_generate` усе одно може визначити типове значення провайдера на основі автентифікації. Спочатку він пробує поточного типового провайдера, потім — решту зареєстрованих провайдерів генерації відео в порядку їхніх ідентифікаторів провайдерів. - - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію провайдера/API key. - - Вбудований провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість до 10 секунд і параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` та `watermark`. + - Якщо значення не задано, `video_generate` все одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, а потім решту зареєстрованих провайдерів генерації відео у порядку provider-id. + - Якщо ви напряму вибираєте провайдера/модель, також налаштуйте відповідну автентифікацію провайдера/API-ключ. + - Вбудований провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість до 10 секунд, а також параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` і `watermark`. - `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`). - Використовується інструментом `pdf` для маршрутизації моделі. - - Якщо це поле опущено, інструмент PDF спочатку використовує `imageModel`, а потім — визначену для сесії/типову модель. + - Якщо значення не задано, інструмент PDF використовує як резерв `imageModel`, а потім визначену модель сесії/типову модель. - `pdfMaxBytesMb`: типове обмеження розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику. -- `pdfMaxPages`: типова максимальна кількість сторінок, що враховується в режимі резервного вилучення інструмента `pdf`. -- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Типове значення: `"off"`. -- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типове значення: `"on"`. -- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.5` для доступу за API key або `openai-codex/gpt-5.5` для Codex OAuth). Якщо опустити провайдера, OpenClaw спочатку намагається використати alias, потім — унікальний збіг точного ідентифікатора моделі серед налаштованих провайдерів, і лише після цього повертається до налаштованого типового провайдера (застаріла сумісна поведінка, тож краще явно вказувати `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw переходить до першої налаштованої пари provider/model замість показу застарілого типового значення видаленого провайдера. +- `pdfMaxPages`: типова максимальна кількість сторінок, які враховуються режимом резервного витягування в інструменті `pdf`. +- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. За замовчуванням: `"off"`. +- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. За замовчуванням: `"on"`. +- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.5` для доступу через API-ключ або `openai-codex/gpt-5.5` для Codex OAuth). Якщо ви не вкажете провайдера, OpenClaw спочатку спробує псевдонім, потім — унікальний збіг серед налаштованих провайдерів для цього точного id моделі, і лише після цього повернеться до налаштованого типового провайдера (застаріла поведінка сумісності, тому надавайте перевагу явному `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw переключиться на першу налаштовану пару провайдер/модель замість того, щоб показувати застаріле типове значення видаленого провайдера. - `models`: налаштований каталог моделей і список дозволених значень для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера параметри, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`, `responsesServerCompaction`, `responsesCompactThreshold`, `extra_body`/`extraBody`). - - Безпечне редагування: використовуйте `openclaw config set agents.defaults.models '' --strict-json --merge`, щоб додавати записи. `config set` відмовляється від замін, які видалили б наявні записи списку дозволених значень, якщо не передати `--replace`. - - Потоки configure/onboarding в області провайдера об’єднують вибрані моделі провайдера в цю мапу й зберігають уже налаштованих, але не пов’язаних провайдерів. - - Для прямих моделей OpenAI Responses автоматично вмикається server-side Compaction. Використовуйте `params.responsesServerCompaction: false`, щоб припинити вбудовування `context_management`, або `params.responsesCompactThreshold`, щоб перевизначити поріг. Див. [Серверна Compaction OpenAI](/uk/providers/openai#server-side-compaction-responses-api). -- `params`: глобальні типові параметри провайдера, які застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад, `{ cacheRetention: "long" }`). -- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для конкретної моделі), після чого `agents.list[].params` (відповідний ідентифікатор агента) перевизначає за ключем. Докладніше див. [Кешування запитів](/uk/reference/prompt-caching). -- `params.extra_body`/`params.extraBody`: розширений JSON passthrough, який зливається з тілами запитів `api: "openai-completions"` для OpenAI-сумісних проксі. Якщо він конфліктує зі згенерованими ключами запиту, додаткове тіло має пріоритет; не нативні маршрути completions усе одно потім видаляють специфічний для OpenAI параметр `store`. -- `embeddedHarness`: типова політика низькорівневого середовища виконання вбудованого агента. Якщо `runtime` опущено, типово використовується OpenClaw Pi. Використовуйте `runtime: "pi"`, щоб примусово ввімкнути вбудований harness PI, `runtime: "auto"`, щоб дозволити зареєстрованим harness Plugin перехоплювати підтримувані моделі, або ідентифікатор зареєстрованого harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід на PI. Явні середовища виконання Plugin, такі як `codex`, типово завершуються з помилкою без переходу до резервного варіанта, якщо ви не задасте `fallback: "pi"` у тій самій області перевизначення. Зберігайте посилання на моделі в канонічному форматі `provider/model`; вибирайте Codex, Claude CLI, Gemini CLI та інші бекенди виконання через конфігурацію середовища виконання, а не через застарілі префікси провайдера середовища виконання. Див. [Середовища виконання агента](/uk/concepts/agent-runtimes), щоб зрозуміти, чим це відрізняється від вибору provider/model. -- Засоби запису конфігурації, які змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта та, за можливості, зберігають наявні списки fallback. -- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сесіями (кожна сесія все одно серіалізується). Типове значення: 4. + - Безпечне редагування: використовуйте `openclaw config set agents.defaults.models '' --strict-json --merge`, щоб додавати записи. `config set` відмовляється від замін, які видалили б наявні записи зі списку дозволених значень, якщо ви не передасте `--replace`. + - Потоки налаштування/онбордингу в межах провайдера об’єднують вибрані моделі провайдера в цю мапу та зберігають інші вже налаштовані провайдери. + - Для прямих моделей OpenAI Responses server-side Compaction вмикається автоматично. Використовуйте `params.responsesServerCompaction: false`, щоб припинити вбудовування `context_management`, або `params.responsesCompactThreshold`, щоб перевизначити поріг. Див. [server-side compaction OpenAI](/uk/providers/openai#server-side-compaction-responses-api). +- `params`: глобальні типові параметри провайдера, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад, `{ cacheRetention: "long" }`). +- Пріоритет об’єднання `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для конкретної моделі), а потім `agents.list[].params` (для відповідного id агента) перевизначає за ключем. Докладніше див. [Кешування prompt](/uk/reference/prompt-caching). +- `params.extra_body`/`params.extraBody`: розширений JSON passthrough, який об’єднується з тілами запитів `api: "openai-completions"` для OpenAI-сумісних проксі. Якщо він конфліктує зі згенерованими ключами запиту, перемагає extra body; маршрути completions, які не є нативними, після цього все одно видаляють специфічний для OpenAI `store`. +- `embeddedHarness`: типова політика низькорівневого runtime вбудованого агента. Якщо runtime не вказано, за замовчуванням використовується OpenClaw Pi. Використовуйте `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, `runtime: "auto"`, щоб дозволити зареєстрованим harness Plugin перехоплювати підтримувані моделі, або id зареєстрованого harness, наприклад `runtime: "codex"`. Встановіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід на PI. Явні runtime Plugin, такі як `codex`, за замовчуванням аварійно завершуються без резервного переходу, якщо ви не встановите `fallback: "pi"` у тій самій області перевизначення. Зберігайте посилання на моделі в канонічному форматі `provider/model`; вибирайте Codex, Claude CLI, Gemini CLI та інші бекенди виконання через конфігурацію runtime, а не через застарілі префікси runtime-провайдерів. Див. [runtime агентів](/uk/concepts/agent-runtimes), щоб зрозуміти, чим це відрізняється від вибору провайдера/моделі. +- Засоби запису конфігурації, які змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди add/remove для резервних значень), зберігають канонічну форму об’єкта й за можливості зберігають наявні списки резервних значень. +- `maxConcurrent`: максимальна кількість паралельних запусків агентів у межах сесій (кожна сесія все одно серіалізується). За замовчуванням: 4. ### `agents.defaults.embeddedHarness` `embeddedHarness` керує тим, який низькорівневий виконавець запускає ходи вбудованого агента. -У більшості розгортань слід зберігати типове середовище виконання OpenClaw Pi. -Використовуйте це, коли довірений Plugin надає нативний harness, наприклад -вбудований harness сервера застосунку Codex. Для концептуальної моделі див. -[Середовища виконання агента](/uk/concepts/agent-runtimes). +У більшості розгортань слід залишити типовий runtime OpenClaw Pi. +Використовуйте його, коли довірений Plugin надає нативний harness, наприклад вбудований +harness сервера застосунку Codex. Для розуміння моделі див. +[runtime агентів](/uk/concepts/agent-runtimes). ```json5 { @@ -403,16 +403,16 @@ OpenClaw має кілька великих бюджетів запиту/кон } ``` -- `runtime`: `"auto"`, `"pi"` або ідентифікатор зареєстрованого harness Plugin. Вбудований Plugin Codex реєструє `codex`. -- `fallback`: `"pi"` або `"none"`. Для `runtime: "auto"` пропущене значення fallback типово дорівнює `"pi"`, щоб старі конфігурації могли й далі використовувати PI, коли жоден harness Plugin не перехоплює запуск. У режимі явного середовища виконання Plugin, наприклад `runtime: "codex"`, пропущене значення fallback типово дорівнює `"none"`, щоб відсутній harness спричиняв помилку замість тихого використання PI. Перевизначення середовища виконання не успадковують fallback із ширшої області; установлюйте `fallback: "pi"` разом з явним середовищем виконання, коли вам навмисно потрібен такий сумісний резервний варіант. Помилки вибраного harness Plugin завжди показуються напряму. -- Перевизначення через змінні середовища: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=pi|none` перевизначає fallback для цього процесу. -- Для розгортань лише з Codex установіть `model: "openai/gpt-5.5"` і `embeddedHarness.runtime: "codex"`. Ви також можете явно встановити `embeddedHarness.fallback: "none"` для читабельності; це типове значення для явних середовищ виконання Plugin. -- Вибір harness фіксується для кожного ідентифікатора сесії після першого вбудованого запуску. Зміни конфігурації/середовища впливають на нові або скинуті сесії, але не на наявний транскрипт. Застарілі сесії з історією транскрипту, але без зафіксованого вибору, вважаються прив’язаними до PI. `/status` показує фактичне середовище виконання, наприклад `Runtime: OpenClaw Pi Default` або `Runtime: OpenAI Codex`. -- Це керує лише harness вбудованого чату. Генерація медіа, vision, PDF, музика, відео та TTS усе одно використовують свої параметри provider/model. +- `runtime`: `"auto"`, `"pi"` або id зареєстрованого harness Plugin. Вбудований Plugin Codex реєструє `codex`. +- `fallback`: `"pi"` або `"none"`. У режимі `runtime: "auto"` пропущений fallback за замовчуванням дорівнює `"pi"`, щоб старі конфігурації могли й далі використовувати PI, коли жоден harness Plugin не перехоплює запуск. У режимі явного runtime Plugin, наприклад `runtime: "codex"`, пропущений fallback за замовчуванням дорівнює `"none"`, щоб відсутній harness спричинив помилку, а не тихо використовував PI. Перевизначення runtime не успадковують fallback із ширшої області; встановлюйте `fallback: "pi"` поруч з явним runtime, коли вам навмисно потрібна така сумісність резервного переходу. Помилки вибраного harness Plugin завжди показуються безпосередньо. +- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=pi|none` перевизначає fallback для цього процесу. +- Для розгортань лише з Codex встановіть `model: "openai/gpt-5.5"` і `embeddedHarness.runtime: "codex"`. Ви також можете явно встановити `embeddedHarness.fallback: "none"` для читабельності; це типове значення для явних runtime Plugin. +- Вибір harness фіксується для кожного id сесії після першого вбудованого запуску. Зміни конфігурації/середовища впливають на нові або скинуті сесії, а не на наявний transcript. Застарілі сесії з історією transcript, але без зафіксованого вибору, вважаються прив’язаними до PI. `/status` показує фактичний runtime, наприклад `Runtime: OpenClaw Pi Default` або `Runtime: OpenAI Codex`. +- Це керує лише harness вбудованого чату. Генерація медіа, vision, PDF, музика, відео та TTS і далі використовують свої налаштування провайдера/моделі. -**Вбудовані скорочення alias** (застосовуються лише тоді, коли модель є в `agents.defaults.models`): +**Вбудовані скорочення-псевдоніми** (застосовуються лише тоді, коли модель є в `agents.defaults.models`): -| Alias | Модель | +| Псевдонім | Модель | | ------------------- | ------------------------------------------ | | `opus` | `anthropic/claude-opus-4-6` | | `sonnet` | `anthropic/claude-sonnet-4-6` | @@ -423,15 +423,15 @@ OpenClaw має кілька великих бюджетів запиту/кон | `gemini-flash` | `google/gemini-3-flash-preview` | | `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` | -Ваші налаштовані alias завжди мають пріоритет над типовими. +Ваші налаштовані псевдоніми завжди мають пріоритет над типовими. -Для моделей Z.AI GLM-4.x режим thinking вмикається автоматично, якщо ви не задасте `--thinking off` або не визначите `agents.defaults.models["zai/"].params.thinking` самостійно. -Для моделей Z.AI типово вмикається `tool_stream` для потокового передавання викликів інструментів. Установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути це. -Для моделей Anthropic Claude 4.6 типово використовується thinking `adaptive`, якщо не задано явний рівень thinking. +Для моделей Z.AI GLM-4.x режим thinking вмикається автоматично, якщо ви не задасте `--thinking off` або самостійно не визначите `agents.defaults.models["zai/"].params.thinking`. +Для моделей Z.AI за замовчуванням вмикається `tool_stream` для потокової передачі викликів інструментів. Встановіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути його. +Для моделей Anthropic Claude 4.6 за замовчуванням використовується thinking `adaptive`, коли явний рівень thinking не задано. ### `agents.defaults.cliBackends` -Необов’язкові CLI-бекенди для резервних запусків лише з текстом (без викликів інструментів). Корисно як запасний варіант, коли API-провайдери дають збій. +Необов’язкові CLI-бекенди для резервних текстових запусків (без викликів інструментів). Корисно як запасний варіант, коли API-провайдери не працюють. ```json5 { @@ -449,7 +449,7 @@ OpenClaw має кілька великих бюджетів запиту/кон sessionArg: "--session", sessionMode: "existing", systemPromptArg: "--system", - // Або використовуйте systemPromptFileArg, якщо CLI приймає прапорець для файла запиту. + // Або використовуйте systemPromptFileArg, якщо CLI приймає прапорець файла prompt. systemPromptWhen: "first", imageArg: "--image", imageMode: "repeat", @@ -460,13 +460,13 @@ OpenClaw має кілька великих бюджетів запиту/кон } ``` -- CLI-бекенди орієнтовані насамперед на текст; інструменти завжди вимкнено. +- CLI-бекенди орієнтовані насамперед на текст; інструменти завжди вимкнені. - Сесії підтримуються, коли задано `sessionArg`. -- Пряма передача зображень підтримується, коли `imageArg` приймає шляхи до файлів. +- Передавання зображень підтримується, коли `imageArg` приймає шляхи до файлів. ### `agents.defaults.systemPromptOverride` -Замінює весь системний запит, зібраний OpenClaw, фіксованим рядком. Задається на типовому рівні (`agents.defaults.systemPromptOverride`) або для окремого агента (`agents.list[].systemPromptOverride`). Значення для окремого агента мають пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із запитами. +Замінює весь системний prompt, зібраний OpenClaw, фіксованим рядком. Задається на типовому рівні (`agents.defaults.systemPromptOverride`) або для окремого агента (`agents.list[].systemPromptOverride`). Значення для окремого агента мають пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із prompt. ```json5 { @@ -480,7 +480,7 @@ OpenClaw має кілька великих бюджетів запиту/кон ### `agents.defaults.promptOverlays` -Незалежні від провайдера накладки запиту, що застосовуються за сімейством моделей. Ідентифікатори моделей сімейства GPT-5 отримують спільний контракт поведінки між провайдерами; `personality` керує лише шаром дружнього стилю взаємодії. +Незалежні від провайдера накладки prompt, які застосовуються за сімейством моделей. Ідентифікатори моделей сімейства GPT-5 отримують спільний поведінковий контракт для всіх провайдерів; `personality` керує лише шаром дружнього стилю взаємодії. ```json5 { @@ -497,8 +497,8 @@ OpenClaw має кілька великих бюджетів запиту/кон ``` - `"friendly"` (типове значення) і `"on"` вмикають шар дружнього стилю взаємодії. -- `"off"` вимикає лише дружній шар; позначений контракт поведінки GPT-5 залишається ввімкненим. -- Застаріле `plugins.entries.openai.config.personality` усе ще читається, якщо цей спільний параметр не задано. +- `"off"` вимикає лише дружній шар; позначений поведінковий контракт GPT-5 залишається ввімкненим. +- Застаріле `plugins.entries.openai.config.personality` усе ще зчитується, якщо цей спільний параметр не задано. ### `agents.defaults.heartbeat` @@ -509,16 +509,16 @@ OpenClaw має кілька великих бюджетів запиту/кон agents: { defaults: { heartbeat: { - every: "30m", // 0m disables + every: "30m", // 0m вимикає model: "openai/gpt-5.4-mini", includeReasoning: false, - includeSystemPromptSection: true, // default: true; false omits the Heartbeat section from the system prompt - lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files - isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history) + includeSystemPromptSection: true, // типове значення: true; false не включає секцію Heartbeat до системного prompt + lightContext: false, // типове значення: false; true залишає лише HEARTBEAT.md з bootstrap-файлів робочого простору + isolatedSession: false, // типове значення: false; true запускає кожен Heartbeat у новій сесії (без історії розмови) session: "main", to: "+15555550123", - directPolicy: "allow", // allow (default) | block - target: "none", // default: none | options: last | whatsapp | telegram | discord | ... + directPolicy: "allow", // allow (типове значення) | block + target: "none", // типове значення: none | варіанти: last | whatsapp | telegram | discord | ... prompt: "Read HEARTBEAT.md if it exists...", ackMaxChars: 300, suppressToolErrorWarnings: false, @@ -529,15 +529,15 @@ OpenClaw має кілька великих бюджетів запиту/кон } ``` -- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація через API key) або `1h` (автентифікація через OAuth). Установіть `0m`, щоб вимкнути. -- `includeSystemPromptSection`: коли `false`, прибирає розділ Heartbeat із системного запиту та пропускає вбудовування `HEARTBEAT.md` у bootstrap-контекст. Типове значення: `true`. -- `suppressToolErrorWarnings`: коли `true`, пригнічує корисні навантаження попереджень про помилки інструментів під час запусків Heartbeat. +- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація через API-ключ) або `1h` (автентифікація через OAuth). Встановіть `0m`, щоб вимкнути. +- `includeSystemPromptSection`: коли значення false, секція Heartbeat не включається до системного prompt, а `HEARTBEAT.md` не вбудовується в bootstrap-контекст. Типове значення: `true`. +- `suppressToolErrorWarnings`: коли значення true, попередження про помилки інструментів під час запусків Heartbeat не показуються. - `timeoutSeconds`: максимальний час у секундах, дозволений для одного ходу агента Heartbeat до його переривання. Якщо не задано, використовується `agents.defaults.timeoutSeconds`. -- `directPolicy`: політика доставки напряму/DM. `allow` (типове значення) дозволяє доставку в прямі цілі. `block` пригнічує доставку в прямі цілі та видає `reason=dm-blocked`. -- `lightContext`: коли `true`, запуски Heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору. -- `isolatedSession`: коли `true`, кожен запуск Heartbeat виконується в новій сесії без попередньої історії розмови. Така сама схема ізоляції, як у Cron `sessionTarget: "isolated"`. Зменшує вартість токенів на один Heartbeat приблизно зі ~100K до ~2-5K токенів. -- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, Heartbeat запускаються **лише для цих агентів**. -- Heartbeat запускає повні ходи агента — коротші інтервали витрачають більше токенів. +- `directPolicy`: політика прямої доставки/DM. `allow` (типове значення) дозволяє доставку до прямої цілі. `block` блокує доставку до прямої цілі та видає `reason=dm-blocked`. +- `lightContext`: коли значення true, запуски Heartbeat використовують полегшений bootstrap-контекст і залишають лише `HEARTBEAT.md` із bootstrap-файлів робочого простору. +- `isolatedSession`: коли значення true, кожен Heartbeat запускається в новій сесії без попередньої історії розмови. Такий самий шаблон ізоляції, як у Cron `sessionTarget: "isolated"`. Зменшує витрати токенів на кожен Heartbeat приблизно зі ~100K до ~2-5K токенів. +- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, **Heartbeat запускається лише для цих агентів**. +- Heartbeat виконує повноцінні ходи агента — коротші інтервали спалюють більше токенів. ### `agents.defaults.compaction` @@ -547,16 +547,16 @@ OpenClaw має кілька великих бюджетів запиту/кон defaults: { compaction: { mode: "safeguard", // default | safeguard - provider: "my-provider", // id of a registered compaction provider plugin (optional) + provider: "my-provider", // id зареєстрованого Plugin провайдера Compaction (необов’язково) timeoutSeconds: 900, reserveTokensFloor: 24000, keepRecentTokens: 50000, identifierPolicy: "strict", // strict | off | custom - identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // used when identifierPolicy=custom + identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // використовується, коли identifierPolicy=custom qualityGuard: { enabled: true, maxRetries: 1 }, - postCompactionSections: ["Session Startup", "Red Lines"], // [] disables reinjection - model: "openrouter/anthropic/claude-sonnet-4-6", // optional compaction-only model override - notifyUser: true, // send brief notices when compaction starts and completes (default: false) + postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторне вбудовування + model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для Compaction + notifyUser: true, // надсилати короткі сповіщення користувачу, коли Compaction починається й завершується (типове значення: false) memoryFlush: { enabled: true, softThresholdTokens: 6000, @@ -569,17 +569,17 @@ OpenClaw має кілька великих бюджетів запиту/кон } ``` -- `mode`: `default` або `safeguard` (підсумовування частинами для довгої історії). Див. [Compaction](/uk/concepts/compaction). -- `provider`: ідентифікатор зареєстрованого Plugin провайдера Compaction. Якщо задано, замість вбудованого підсумовування LLM викликається `summarize()` провайдера. У разі помилки повертається до вбудованого варіанта. Установлення провайдера примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). +- `mode`: `default` або `safeguard` (підсумовування шматками для довгої історії). Див. [Compaction](/uk/concepts/compaction). +- `provider`: id зареєстрованого Plugin провайдера Compaction. Якщо задано, замість вбудованого підсумовування LLM викликається `summarize()` цього провайдера. У разі помилки виконується повернення до вбудованого механізму. Встановлення провайдера примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction). - `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction, після чого OpenClaw її перериває. Типове значення: `900`. -- `keepRecentTokens`: бюджет точки відсікання Pi для збереження найсвіжішого хвоста транскрипту дослівно. Ручний `/compact` дотримується цього, якщо значення явно задано; інакше ручна Compaction є жорсткою контрольною точкою. -- `identifierPolicy`: `strict` (типове значення), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування Compaction. -- `identifierInstructions`: необов’язковий власний текст про збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`. -- `qualityGuard`: перевірки з повторною спробою для некоректного виводу в підсумках safeguard. Типово ввімкнено в режимі safeguard; установіть `enabled: false`, щоб пропустити аудит. -- `postCompactionSections`: необов’язкові назви розділів H2/H3 з AGENTS.md для повторного вбудовування після Compaction. Типове значення: `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне вбудовування. Якщо не задано або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант. -- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування Compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки Compaction повинні виконуватися на іншій; якщо не задано, Compaction використовує основну модель сесії. -- `notifyUser`: коли `true`, надсилає користувачеві короткі сповіщення на початку та після завершення Compaction (наприклад, "Compacting context..." і "Compaction complete"). Типово вимкнено, щоб Compaction залишалася безшумною. -- `memoryFlush`: тихий агентний хід перед автоматичною Compaction для збереження довготривалих спогадів. Пропускається, коли робочий простір доступний лише для читання. +- `keepRecentTokens`: бюджет точки відсікання Pi для збереження найсвіжішого хвоста transcript дослівно. Ручний `/compact` враховує це, коли значення явно задано; інакше ручний Compaction є жорсткою контрольною точкою. +- `identifierPolicy`: `strict` (типове значення), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів на початку підсумовування Compaction. +- `identifierInstructions`: необов’язковий власний текст для збереження ідентифікаторів, що використовується, коли `identifierPolicy=custom`. +- `qualityGuard`: перевірки з повторними спробами для некоректного виводу підсумків safeguard. У режимі safeguard ввімкнено за замовчуванням; встановіть `enabled: false`, щоб пропустити перевірку. +- `postCompactionSections`: необов’язкові назви секцій H2/H3 з AGENTS.md, які повторно вбудовуються після Compaction. Типове значення: `["Session Startup", "Red Lines"]`; встановіть `[]`, щоб вимкнути повторне вбудовування. Якщо значення не задано або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант. +- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування Compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки Compaction повинні виконуватися на іншій; якщо значення не задано, Compaction використовує основну модель сесії. +- `notifyUser`: коли `true`, надсилає короткі сповіщення користувачу, коли Compaction починається і коли він завершується (наприклад, "Compacting context..." і "Compaction complete"). За замовчуванням вимкнено, щоб Compaction залишався безшумним. +- `memoryFlush`: тихий агентний хід перед автоматичним Compaction для збереження довготривалої пам’яті. Пропускається, коли робочий простір доступний лише для читання. ### `agents.defaults.contextPruning` @@ -591,7 +591,7 @@ OpenClaw має кілька великих бюджетів запиту/кон defaults: { contextPruning: { mode: "cache-ttl", // off | cache-ttl - ttl: "1h", // duration (ms/s/m/h), default unit: minutes + ttl: "1h", // тривалість (ms/s/m/h), типова одиниця: хвилини keepLastAssistants: 3, softTrimRatio: 0.3, hardClearRatio: 0.5, @@ -608,17 +608,17 @@ OpenClaw має кілька великих бюджетів запиту/кон - `mode: "cache-ttl"` вмикає проходи обрізання. -- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього дотику до кешу). +- `ttl` визначає, як часто обрізання може запускатися повторно (після останнього торкання кешу). - Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім за потреби повністю очищає старіші результати інструментів. **М’яке обрізання** зберігає початок і кінець та вставляє `...` посередині. -**Повне очищення** замінює весь результат інструмента заповнювачем. +**Повне очищення** замінює весь результат інструмента на заповнювач. Примітки: -- Блоки зображень ніколи не обрізаються і не очищаються. -- Співвідношення базуються на символах (приблизно), а не на точній кількості токенів. +- Блоки зображень ніколи не обрізаються й не очищаються. +- Співвідношення обчислюються за кількістю символів (приблизно), а не за точною кількістю токенів. - Якщо повідомлень асистента менше, ніж `keepLastAssistants`, обрізання пропускається. @@ -635,17 +635,17 @@ OpenClaw має кілька великих бюджетів запиту/кон blockStreamingBreak: "text_end", // text_end | message_end blockStreamingChunk: { minChars: 800, maxChars: 1200 }, blockStreamingCoalesce: { idleMs: 1000 }, - humanDelay: { mode: "natural" }, // off | natural | custom (use minMs/maxMs) + humanDelay: { mode: "natural" }, // off | natural | custom (використовуйте minMs/maxMs) }, }, } ``` -- Для каналів, відмінних від Telegram, потрібне явне `*.blockStreaming: true`, щоб увімкнути блокові відповіді. -- Перевизначення для каналів: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типовим є `minChars: 1500`. -- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення для окремого агента: `agents.list[].humanDelay`. +- Для каналів, відмінних від Telegram, потрібно явно задати `*.blockStreaming: true`, щоб увімкнути відповіді блоками. +- Перевизначення для каналів: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типове значення `minChars: 1500`. +- `humanDelay`: випадкова пауза між відповідями блоками. `natural` = 800–2500ms. Перевизначення для окремого агента: `agents.list[].humanDelay`. -Докладніше про поведінку та поділ на фрагменти див. [Потокове передавання](/uk/concepts/streaming). +Докладніше про поведінку й розбиття на блоки див. [Потокове передавання](/uk/concepts/streaming). ### Індикатори набору @@ -669,7 +669,7 @@ OpenClaw має кілька великих бюджетів запиту/кон ### `agents.defaults.sandbox` -Необов’язкова ізоляція sandbox для вбудованого агента. Повний посібник див. в [Ізоляція sandbox](/uk/gateway/sandboxing). +Необов’язкове sandbox-ізолювання для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing). ```json5 { @@ -715,7 +715,7 @@ OpenClaw має кілька великих бюджетів запиту/кон identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", - // SecretRefs / inline contents also supported: + // Також підтримуються SecretRefs / вбудований вміст: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, @@ -764,24 +764,24 @@ OpenClaw має кілька великих бюджетів запиту/кон } ``` - + **Бекенд:** -- `docker`: локальне середовище виконання Docker (типове) -- `ssh`: універсальне віддалене середовище виконання на основі SSH -- `openshell`: середовище виконання OpenShell +- `docker`: локальний runtime Docker (типове значення) +- `ssh`: універсальний віддалений runtime на основі SSH +- `openshell`: runtime OpenShell -Коли вибрано `backend: "openshell"`, параметри, специфічні для середовища виконання, переносяться до +Коли вибрано `backend: "openshell"`, специфічні для runtime налаштування переносяться до `plugins.entries.openshell.config`. **Конфігурація SSH-бекенда:** -- `target`: ціль SSH у форматі `user@host[:port]` -- `command`: команда SSH-клієнта (типово: `ssh`) -- `workspaceRoot`: абсолютний віддалений корінь, що використовується для робочих просторів у межах кожної області -- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, передані до OpenSSH -- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, які OpenClaw матеріалізує у тимчасові файли під час виконання +- `target`: ціль SSH у формі `user@host[:port]` +- `command`: команда клієнта SSH (типове значення: `ssh`) +- `workspaceRoot`: абсолютний віддалений корінь, який використовується для робочих просторів у межах області дії +- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, що передаються до OpenSSH +- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRefs, які OpenClaw матеріалізує в тимчасові файли під час виконання - `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH **Пріоритет автентифікації SSH:** @@ -789,26 +789,26 @@ OpenClaw має кілька великих бюджетів запиту/кон - `identityData` має пріоритет над `identityFile` - `certificateData` має пріоритет над `certificateFile` - `knownHostsData` має пріоритет над `knownHostsFile` -- Значення `*Data` на основі SecretRef визначаються з активного знімка середовища виконання секретів до початку сесії sandbox +- Значення `*Data` на основі SecretRef визначаються з активного знімка runtime секретів до початку сесії sandbox **Поведінка SSH-бекенда:** - один раз ініціалізує віддалений робочий простір після створення або повторного створення - потім зберігає віддалений робочий простір SSH як канонічний -- маршрутизує `exec`, файлові інструменти та шляхи медіа через SSH +- маршрутизує `exec`, файлові інструменти та шляхи до медіа через SSH - не синхронізує віддалені зміни назад на хост автоматично - не підтримує браузерні контейнери sandbox **Доступ до робочого простору:** -- `none`: робочий простір sandbox у межах області в `~/.openclaw/sandboxes` -- `ro`: робочий простір sandbox у `/workspace`, робочий простір агента змонтовано лише для читання в `/agent` -- `rw`: робочий простір агента змонтовано для читання/запису в `/workspace` +- `none`: робочий простір sandbox у межах області дії під `~/.openclaw/sandboxes` +- `ro`: робочий простір sandbox у `/workspace`, робочий простір агента монтується лише для читання в `/agent` +- `rw`: робочий простір агента монтується для читання й запису в `/workspace` -**Область:** +**Область дії:** -- `session`: окремий контейнер + робочий простір для кожної сесії -- `agent`: один контейнер + робочий простір на агента (типово) +- `session`: контейнер і робочий простір на кожну сесію +- `agent`: один контейнер і робочий простір на агента (типове значення) - `shared`: спільний контейнер і робочий простір (без ізоляції між сесіями) **Конфігурація Plugin OpenShell:** @@ -824,10 +824,10 @@ OpenClaw має кілька великих бюджетів запиту/кон from: "openclaw", remoteWorkspaceDir: "/sandbox", remoteAgentWorkspaceDir: "/agent", - gateway: "lab", // optional - gatewayEndpoint: "https://lab.example", // optional - policy: "strict", // optional OpenShell policy id - providers: ["openai"], // optional + gateway: "lab", // необов’язково + gatewayEndpoint: "https://lab.example", // необов’язково + policy: "strict", // необов’язковий id політики OpenShell + providers: ["openai"], // необов’язково autoProviders: true, timeoutSeconds: 120, }, @@ -840,29 +840,29 @@ OpenClaw має кілька великих бюджетів запиту/кон **Режим OpenShell:** - `mirror`: ініціалізує віддалене середовище з локального перед `exec`, синхронізує назад після `exec`; локальний робочий простір залишається канонічним -- `remote`: один раз ініціалізує віддалене середовище під час створення sandbox, потім зберігає віддалений робочий простір канонічним +- `remote`: один раз ініціалізує віддалене середовище під час створення sandbox, а потім зберігає віддалений робочий простір як канонічний -У режимі `remote` локальні зміни на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку ініціалізації. +У режимі `remote` зміни на хості, зроблені локально поза OpenClaw, не синхронізуються автоматично до sandbox після етапу ініціалізації. Транспортом є SSH до sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою дзеркальною синхронізацією. -**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує вихідного доступу до мережі, доступного для запису кореня та користувача root. +**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потрібні вихід у мережу, доступний для запису корінь і користувач root. -**Для контейнерів типовим є `network: "none"`** — установіть `"bridge"` (або власну мережу bridge), якщо агенту потрібен вихідний доступ. -`"host"` заблоковано. `"container:"` типово заблоковано, якщо ви явно не задасте -`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний варіант). +**Для контейнерів за замовчуванням використовується `network: "none"`** — установіть `"bridge"` (або власну мережу bridge), якщо агенту потрібен вихід назовні. +`"host"` заблоковано. `"container:"` за замовчуванням також заблоковано, якщо ви явно не встановите +`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний режим). -**Вхідні вкладення** розміщуються у `media/inbound/*` в активному робочому просторі. +**Вхідні вкладення** розміщуються в `media/inbound/*` у активному робочому просторі. -**`docker.binds`** монтує додаткові каталоги хоста; глобальні монтування й монтування для окремих агентів об’єднуються. +**`docker.binds`** монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для окремого агента об’єднуються. -**Браузер у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вбудовується в системний запит. Не потребує `browser.enabled` у `openclaw.json`. -Доступ спостерігача noVNC типово використовує автентифікацію VNC, а OpenClaw видає URL із короткоживучим токеном (замість показу пароля у спільному URL). +**Браузер у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вбудовується в системний prompt. Не потребує `browser.enabled` у `openclaw.json`. +Доступ спостерігача через noVNC за замовчуванням використовує автентифікацію VNC, а OpenClaw видає URL із короткочасним токеном (замість того, щоб показувати пароль у спільному URL). -- `allowHostControl: false` (типове значення) блокує sandbox-сесії від націлювання на браузер хоста. -- Для `network` типово використовується `openclaw-sandbox-browser` (окрема мережа bridge). Установлюйте `bridge` лише тоді, коли вам явно потрібна глобальна зв’язність bridge. -- `cdpSourceRange` за потреби обмежує вхідні підключення CDP на межі контейнера до діапазону CIDR (наприклад, `172.21.0.1/32`). -- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо задано (включно з `[]`), воно замінює `docker.binds` для контейнера браузера. -- Типові параметри запуску визначені в `scripts/sandbox-browser-entrypoint.sh` і налаштовані для контейнерних хостів: +- `allowHostControl: false` (типове значення) блокує націлювання сесій sandbox на браузер хоста. +- `network` за замовчуванням дорівнює `openclaw-sandbox-browser` (виділена мережа bridge). Установлюйте `bridge` лише тоді, коли вам явно потрібна глобальна зв’язність bridge. +- `cdpSourceRange` за потреби обмежує вхідний доступ CDP на межі контейнера до діапазону CIDR (наприклад `172.21.0.1/32`). +- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в браузерний контейнер sandbox. Якщо задано (включно з `[]`), це замінює `docker.binds` для браузерного контейнера. +- Типові параметри запуску визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для хостів із контейнерами: - `--remote-debugging-address=127.0.0.1` - `--remote-debugging-port=` - `--user-data-dir=${HOME}/.chrome` @@ -881,29 +881,29 @@ OpenClaw має кілька великих бюджетів запиту/кон - `--metrics-recording-only` - `--disable-extensions` (типово ввімкнено) - `--disable-3d-apis`, `--disable-software-rasterizer` і `--disable-gpu` - типово ввімкнені й можуть бути вимкнені через + увімкнені за замовчуванням і можуть бути вимкнені через `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо цього потребує використання WebGL/3D. - - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає розширення, якщо ваш робочий процес - залежить від них. + - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає розширення, якщо вони + потрібні вашому робочому процесу. - `--renderer-process-limit=2` можна змінити через `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати типове обмеження процесів Chromium. - - плюс `--no-sandbox`, коли ввімкнено `noSandbox`. - - Типові значення є базовими для образу контейнера; використовуйте власний образ браузера з власною - точкою входу, щоб змінити типові параметри контейнера. + - а також `--no-sandbox`, коли ввімкнено `noSandbox`. + - Типові значення є базовими для образу контейнера; щоб змінити стандартні параметри контейнера, використовуйте власний + образ браузера з власним entrypoint. -Ізоляція браузера та `sandbox.docker.binds` доступні лише для Docker. +Ізоляція браузера та `sandbox.docker.binds` підтримуються лише в Docker. -Зібрати образи: +Збирання образів: ```bash -scripts/sandbox-setup.sh # main sandbox image -scripts/sandbox-browser-setup.sh # optional browser image +scripts/sandbox-setup.sh # основний образ sandbox +scripts/sandbox-browser-setup.sh # необов’язковий образ браузера ``` -### `agents.list` (перевизначення для окремих агентів) +### `agents.list` (перевизначення для окремого агента) ```json5 { @@ -915,13 +915,13 @@ scripts/sandbox-browser-setup.sh # optional browser image name: "Main Agent", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", - model: "anthropic/claude-opus-4-6", // or { primary, fallbacks } - thinkingDefault: "high", // per-agent thinking level override - reasoningDefault: "on", // per-agent reasoning visibility override - fastModeDefault: false, // per-agent fast mode override + model: "anthropic/claude-opus-4-6", // або { primary, fallbacks } + thinkingDefault: "high", // перевизначення рівня thinking для окремого агента + reasoningDefault: "on", // перевизначення видимості reasoning для окремого агента + fastModeDefault: false, // перевизначення fast mode для окремого агента embeddedHarness: { runtime: "auto", fallback: "pi" }, - params: { cacheRetention: "none" }, // overrides matching defaults.models params by key - skills: ["docs-search"], // replaces agents.defaults.skills when set + params: { cacheRetention: "none" }, // перевизначає відповідні defaults.models params за ключем + skills: ["docs-search"], // замінює agents.defaults.skills, якщо задано identity: { name: "Samantha", theme: "helpful sloth", @@ -952,27 +952,27 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `id`: стабільний ідентифікатор агента (обов’язково). -- `default`: якщо задано для кількох, перший має пріоритет (записується попередження). Якщо не задано жодного, типовим є перший елемент списку. -- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Завдання Cron, які перевизначають лише `primary`, усе одно успадковують типові fallback, якщо не встановити `fallbacks: []`. -- `params`: параметри потоку для окремого агента, які зливаються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для специфічних для агента перевизначень, як-от `cacheRetention`, `temperature` або `maxTokens`, без дублювання всього каталогу моделей. -- `skills`: необов’язковий список дозволених Skills для окремого агента. Якщо не задано, агент успадковує `agents.defaults.skills`, якщо воно визначене; явний список замінює типові значення, а не зливається з ними, а `[]` означає відсутність Skills. -- `thinkingDefault`: необов’язковий типовий рівень thinking для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive | max`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для окремого повідомлення або сесії. Вибраний профіль провайдера/моделі визначає, які значення допустимі; для Google Gemini `adaptive` зберігає динамічний thinking, яким керує провайдер (`thinkingLevel` опущено для Gemini 3/3.1, `thinkingBudget: -1` для Gemini 2.5). -- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для окремого повідомлення або сесії. -- `fastModeDefault`: необов’язкове типове значення швидкого режиму для окремого агента (`true | false`). Застосовується, коли не задано перевизначення швидкого режиму для окремого повідомлення або сесії. -- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex" }`, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий резервний варіант PI в режимі `auto`. -- `runtime`: необов’язковий дескриптор середовища виконання для окремого агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент повинен типово використовувати сесії harness ACP. +- `id`: стабільний id агента (обов’язково). +- `default`: якщо задано для кількох агентів, перемагає перший (записується попередження). Якщо не задано ні для кого, типовим є перший запис у списку. +- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва значення (`[]` вимикає глобальні резервні значення). Завдання Cron, які перевизначають лише `primary`, усе одно успадковують типові резервні значення, якщо ви не встановите `fallbacks: []`. +- `params`: параметри потоку для окремого агента, що об’єднуються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень на рівні агента, таких як `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей. +- `skills`: необов’язковий список дозволених Skills для окремого агента. Якщо не задано, агент успадковує `agents.defaults.skills`, якщо ті задано; явний список замінює типові значення, а не об’єднується з ними, а `[]` означає відсутність Skills. +- `thinkingDefault`: необов’язковий типовий рівень thinking для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive | max`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для повідомлення або сесії. Вибраний профіль провайдера/моделі визначає, які значення є допустимими; для Google Gemini значення `adaptive` зберігає динамічне thinking, яким керує провайдер (`thinkingLevel` не задається для Gemini 3/3.1, `thinkingBudget: -1` для Gemini 2.5). +- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для повідомлення або сесії. +- `fastModeDefault`: необов’язкове типове значення fast mode для окремого агента (`true | false`). Застосовується, коли не задано перевизначення fast mode для повідомлення або сесії. +- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex" }`, щоб зробити один агент лише Codex, а інші агенти залишити з типовим резервним PI в режимі `auto`. +- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент за замовчуванням має використовувати сесії harness ACP. - `identity.avatar`: шлях відносно робочого простору, URL `http(s)` або URI `data:`. - `identity` виводить типові значення: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`. -- `subagents.allowAgents`: список дозволених ідентифікаторів агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент). -- Захист успадкування sandbox: якщо сесія-запитувач працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox. -- `subagents.requireAgentId`: коли `true`, блокує виклики `sessions_spawn`, у яких не вказано `agentId` (примушує до явного вибору профілю; типове значення: false). +- `subagents.allowAgents`: список дозволених id агентів для `sessions_spawn` (`["*"]` = будь-який; типове значення: лише той самий агент). +- Захист успадкування sandbox: якщо сесія ініціатора виконується в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox. +- `subagents.requireAgentId`: коли значення true, блокує виклики `sessions_spawn`, у яких не вказано `agentId` (примушує до явного вибору профілю; типове значення: false). --- ## Маршрутизація між кількома агентами -Запускайте кількох ізольованих агентів в одному Gateway. Див. [Кілька агентів](/uk/concepts/multi-agent). +Запускайте кілька ізольованих агентів в одному Gateway. Див. [Мультиагентність](/uk/concepts/multi-agent). ```json5 { @@ -991,25 +991,25 @@ scripts/sandbox-browser-setup.sh # optional browser image ### Поля збігу прив’язки -- `type` (необов’язково): `route` для звичайної маршрутизації (якщо тип відсутній, використовується route), `acp` для постійних прив’язок розмов ACP. +- `type` (необов’язково): `route` для звичайної маршрутизації (якщо тип не вказано, за замовчуванням використовується route), `acp` для постійних прив’язок розмов ACP. - `match.channel` (обов’язково) -- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; якщо опущено = типовий обліковий запис) +- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; якщо не вказано = типовий обліковий запис) - `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`) -- `match.guildId` / `match.teamId` (необов’язково; залежить від каналу) -- `acp` (необов’язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }` +- `match.guildId` / `match.teamId` (необов’язково; для конкретних каналів) +- `acp` (необов’язково; лише для записів `type: "acp"`): `{ mode, label, cwd, backend }` **Детермінований порядок збігів:** 1. `match.peer` 2. `match.guildId` 3. `match.teamId` -4. `match.accountId` (точний, без peer/guild/team) -5. `match.accountId: "*"` (на весь канал) +4. `match.accountId` (точний збіг, без peer/guild/team) +5. `match.accountId: "*"` (на рівні всього каналу) 6. Типовий агент -У межах кожного рівня перший відповідний запис `bindings` має пріоритет. +У межах кожного рівня перемагає перший відповідний запис `bindings`. -Для записів `type: "acp"` OpenClaw визначає збіг за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує наведений вище порядок рівнів прив’язки маршруту. +Для записів `type: "acp"` OpenClaw визначає збіг за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує порядок рівнів прив’язок route, наведений вище. ### Профілі доступу для окремих агентів @@ -1106,7 +1106,7 @@ scripts/sandbox-browser-setup.sh # optional browser image -Докладніше про пріоритет див. в [Sandbox та інструменти для кількох агентів](/uk/tools/multi-agent-sandbox-tools). +Докладніше про пріоритети див. [Sandbox і інструменти для мультиагентності](/uk/tools/multi-agent-sandbox-tools). --- @@ -1132,22 +1132,22 @@ scripts/sandbox-browser-setup.sh # optional browser image }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", - parentForkMaxTokens: 100000, // skip parent-thread fork above this token count (0 disables) + parentForkMaxTokens: 100000, // пропускати відгалуження від батьківського потоку, якщо кількість токенів перевищує це значення (0 вимикає) maintenance: { mode: "warn", // warn | enforce pruneAfter: "30d", maxEntries: 500, rotateBytes: "10mb", - resetArchiveRetention: "30d", // duration or false - maxDiskBytes: "500mb", // optional hard budget - highWaterBytes: "400mb", // optional cleanup target + resetArchiveRetention: "30d", // тривалість або false + maxDiskBytes: "500mb", // необов’язковий жорсткий бюджет + highWaterBytes: "400mb", // необов’язкова ціль очищення }, threadBindings: { enabled: true, - idleHours: 24, // default inactivity auto-unfocus in hours (`0` disables) - maxAgeHours: 0, // default hard max age in hours (`0` disables) + idleHours: 24, // типове значення авто-втрати фокусу після неактивності в годинах (`0` вимикає) + maxAgeHours: 0, // типове значення жорсткого максимального віку в годинах (`0` вимикає) }, - mainKey: "main", // legacy (runtime always uses "main") + mainKey: "main", // застаріле поле (runtime завжди використовує "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], @@ -1157,37 +1157,37 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` - + -- **`scope`**: базова стратегія групування сесій для контекстів групового чату. +- **`scope`**: базова стратегія групування сесій для контекстів групових чатів. - `per-sender` (типове значення): кожен відправник отримує ізольовану сесію в межах контексту каналу. - - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли потрібен спільний контекст). + - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли спільний контекст є бажаним). - **`dmScope`**: як групуються DM. - - `main`: усі DM використовують спільну основну сесію. - - `per-peer`: ізоляція за ідентифікатором відправника між каналами. - - `per-channel-peer`: ізоляція для кожної пари канал + відправник (рекомендовано для вхідних скриньок із кількома користувачами). - - `per-account-channel-peer`: ізоляція для кожної комбінації обліковий запис + канал + відправник (рекомендовано для кількох облікових записів). -- **`identityLinks`**: мапа канонічних ідентифікаторів до peer із префіксами провайдерів для спільного використання сесій між каналами. -- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва варіанти, спрацьовує той, що завершується раніше. -- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застаріле `dm` приймається як alias для `direct`. -- **`parentForkMaxTokens`**: максимальне значення `totalTokens` батьківської сесії, дозволене під час створення розгалуженої сесії потоку (типове значення `100000`). - - Якщо `totalTokens` батьківської сесії перевищує це значення, OpenClaw запускає нову сесію потоку замість успадкування історії транскрипту батьківської сесії. - - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти розгалуження від батьківської сесії. -- **`mainKey`**: застаріле поле. Середовище виконання завжди використовує `"main"` для основного кошика прямого чату. -- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів відповіді між агентами під час обміну агент-до-агента (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжок ping-pong. -- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перший збіг deny має пріоритет. -- **`maintenance`**: очищення сховища сесій і керування утриманням. + - `main`: усі DM спільно використовують головну сесію. + - `per-peer`: ізоляція за id відправника між каналами. + - `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для спільних вхідних скриньок). + - `per-account-channel-peer`: ізоляція за обліковим записом + каналом + відправником (рекомендовано для кількох облікових записів). +- **`identityLinks`**: мапа канонічних id до peer із префіксом провайдера для спільного використання сесій між каналами. +- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Коли налаштовано обидва варіанти, спрацьовує той, який настає раніше. +- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застаріле `dm` приймається як псевдонім для `direct`. +- **`parentForkMaxTokens`**: максимальне значення `totalTokens` батьківської сесії, дозволене під час створення відгалуженої сесії потоку (типове значення `100000`). + - Якщо значення `totalTokens` батьківської сесії перевищує це значення, OpenClaw починає нову сесію потоку замість успадкування історії transcript батьківської сесії. + - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти відгалуження від батьківської сесії. +- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для основного кошика прямих чатів. +- **`agentToAgent.maxPingPongTurns`**: максимальна кількість ходів відповіді у відповідь між агентами під час обмінів агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжки ping-pong. +- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет. +- **`maintenance`**: очищення сховища сесій + керування зберіганням. - `mode`: `warn` лише видає попередження; `enforce` застосовує очищення. - - `pruneAfter`: віковий поріг для застарілих записів (типове значення `30d`). + - `pruneAfter`: поріг віку для застарілих записів (типове значення `30d`). - `maxEntries`: максимальна кількість записів у `sessions.json` (типове значення `500`). - - `rotateBytes`: обертати `sessions.json`, коли він перевищує цей розмір (типове значення `10mb`). - - `resetArchiveRetention`: термін зберігання архівів транскрипту `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути. - - `maxDiskBytes`: необов’язковий жорсткий бюджет дискового простору для каталогу сесій. У режимі `warn` записує попередження в журнал; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії. - - `highWaterBytes`: необов’язкова ціль після очищення за бюджетом. Типово дорівнює `80%` від `maxDiskBytes`. + - `rotateBytes`: ротація `sessions.json`, коли його розмір перевищує це значення (типове значення `10mb`). + - `resetArchiveRetention`: строк зберігання архівів transcript `*.reset.`. За замовчуванням дорівнює `pruneAfter`; установіть `false`, щоб вимкнути. + - `maxDiskBytes`: необов’язковий бюджет дискового простору для каталогу сесій. У режимі `warn` лише записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії. + - `highWaterBytes`: необов’язкова ціль після очищення бюджету. За замовчуванням дорівнює `80%` від `maxDiskBytes`. - **`threadBindings`**: глобальні типові значення для функцій сесій, прив’язаних до потоків. - `enabled`: головний типовий перемикач (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`) - - `idleHours`: типове автоматичне зняття фокуса через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати) - - `maxAgeHours`: типове жорстке максимальне обмеження віку в годинах (`0` вимикає; провайдери можуть перевизначати) + - `idleHours`: типове значення авто-втрати фокусу після неактивності в годинах (`0` вимикає; провайдери можуть перевизначати) + - `maxAgeHours`: типове значення жорсткого максимального віку в годинах (`0` вимикає; провайдери можуть перевизначати) @@ -1198,7 +1198,7 @@ scripts/sandbox-browser-setup.sh # optional browser image ```json5 { messages: { - responsePrefix: "🦞", // or "auto" + responsePrefix: "🦞", // або "auto" ackReaction: "👀", ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all removeAckAfterReply: false, @@ -1213,7 +1213,7 @@ scripts/sandbox-browser-setup.sh # optional browser image }, }, inbound: { - debounceMs: 2000, // 0 disables + debounceMs: 2000, // 0 вимикає byChannel: { whatsapp: 5000, slack: 1500, @@ -1227,36 +1227,36 @@ scripts/sandbox-browser-setup.sh # optional browser image Перевизначення для окремого каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`. -Визначення значення (найспецифічніше має пріоритет): обліковий запис → канал → глобальне. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`. +Визначення значення (перемагає найспецифічніше): обліковий запис → канал → глобальне. `""` вимикає значення і зупиняє каскад. `"auto"` виводить `[{identity.name}]`. -**Шаблонні змінні:** +**Змінні шаблону:** -| Змінна | Опис | Приклад | -| ----------------- | ------------------------ | --------------------------- | -| `{model}` | Коротка назва моделі | `claude-opus-4-6` | +| Змінна | Опис | Приклад | +| ----------------- | ----------------------- | --------------------------- | +| `{model}` | Коротка назва моделі | `claude-opus-4-6` | | `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` | -| `{provider}` | Назва провайдера | `anthropic` | +| `{provider}` | Назва провайдера | `anthropic` | | `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` | -| `{identity.name}` | Назва identity агента | (те саме, що й `"auto"`) | +| `{identity.name}` | Назва identity агента | (те саме, що й `"auto"`) | -Змінні нечутливі до регістру. `{think}` є alias для `{thinkingLevel}`. +Змінні нечутливі до регістру. `{think}` — псевдонім для `{thinkingLevel}`. -### Реакція підтвердження +### Реакція-підтвердження -- Типово використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. +- За замовчуванням використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути. - Перевизначення для окремого каналу: `channels..ackReaction`, `channels..accounts..ackReaction`. - Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення identity. - Область дії: `group-mentions` (типове значення), `group-all`, `direct`, `all`. -- `removeAckAfterReply`: прибирає підтвердження після відповіді у Slack, Discord і Telegram. +- `removeAckAfterReply`: видаляє підтвердження після відповіді у Slack, Discord і Telegram. - `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу у Slack, Discord і Telegram. - У Slack і Discord, якщо не задано, реакції статусу залишаються ввімкненими, коли активні реакції підтвердження. - У Telegram установіть це явно в `true`, щоб увімкнути реакції статусу життєвого циклу. + У Slack і Discord незадане значення залишає реакції статусу ввімкненими, коли активні реакції-підтвердження. + У Telegram установіть це значення явно в `true`, щоб увімкнути реакції статусу життєвого циклу. -### Вхідний debounce +### Inbound debounce -Об’єднує швидкі текстові повідомлення від того самого відправника в один хід агента. Медіа/вкладення скидаються негайно. Керувальні команди оминають debounce. +Групує швидкі текстові повідомлення від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Команди керування обходять debounce. -### TTS (озвучення тексту) +### TTS (синтез мовлення) ```json5 { @@ -1304,13 +1304,13 @@ scripts/sandbox-browser-setup.sh # optional browser image } ``` -- `auto` керує типовим режимом авто-TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначати локальні налаштування, а `/tts status` показує фактичний стан. -- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумку. -- `modelOverrides` типово ввімкнено; `modelOverrides.allowProvider` типово має значення `false` (потрібне явне ввімкнення). -- Для API key використовуються резервні значення `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`. -- Вбудовані провайдери мовлення належать Plugin. Якщо задано `plugins.allow`, включіть кожен Plugin провайдера TTS, який хочете використовувати, наприклад `microsoft` для Edge TTS. Застарілий ідентифікатор провайдера `edge` приймається як alias для `microsoft`. -- `providers.openai.baseUrl` перевизначає кінцеву точку OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. -- Коли `providers.openai.baseUrl` вказує на кінцеву точку, відмінну від OpenAI, OpenClaw трактує її як OpenAI-сумісний сервер TTS і послаблює перевірку моделі/голосу. +- `auto` керує типовим режимом авто-TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначити локальні налаштування, а `/tts status` показує фактичний стан. +- `summaryModel` перевизначає `agents.defaults.model.primary` для авто-підсумку. +- `modelOverrides` увімкнено за замовчуванням; `modelOverrides.allowProvider` за замовчуванням дорівнює `false` (лише за явної згоди). +- API-ключі використовують резервні значення `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`. +- Вбудовані мовні провайдери належать Plugin. Якщо задано `plugins.allow`, додайте кожен Plugin провайдера TTS, який ви хочете використовувати, наприклад `microsoft` для Edge TTS. Застарілий id провайдера `edge` приймається як псевдонім для `microsoft`. +- `providers.openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`. +- Коли `providers.openai.baseUrl` вказує на endpoint, відмінний від OpenAI, OpenClaw розглядає його як OpenAI-сумісний сервер TTS і послаблює перевірку моделі/голосу. --- @@ -1338,26 +1338,28 @@ scripts/sandbox-browser-setup.sh # optional browser image }, system: {}, }, + speechLocale: "ru-RU", silenceTimeoutMs: 1500, interruptOnSpeech: true, }, } ``` -- `talk.provider` має збігатися з ключем у `talk.providers`, коли налаштовано кілька провайдерів Talk. -- Застарілі пласкі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) підтримуються лише для сумісності та автоматично мігрують у `talk.providers.`. -- Для Voice ID використовуються резервні значення `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`. -- `providers.*.apiKey` приймає звичайні текстові рядки або об’єкти SecretRef. -- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли не налаштовано API key для Talk. +- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька провайдерів Talk. +- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) існують лише для сумісності й автоматично мігруються до `talk.providers.`. +- Для voice ID використовуються резервні значення `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`. +- `providers.*.apiKey` приймає рядки відкритим текстом або об’єкти SecretRef. +- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли API-ключ Talk не налаштовано. - `providers.*.voiceAliases` дає змогу директивам Talk використовувати дружні назви. -- `providers.mlx.modelId` вибирає репозиторій Hugging Face, який використовує локальний помічник MLX на macOS. Якщо не задано, macOS використовує `mlx-community/Soprano-80M-bf16`. -- Відтворення MLX на macOS виконується через вбудований помічник `openclaw-mlx-tts`, якщо він присутній, або через виконуваний файл у `PATH`; `OPENCLAW_MLX_TTS_BIN` перевизначає шлях до помічника для розробки. -- `silenceTimeoutMs` керує тим, скільки режим Talk чекає після тиші користувача перед надсиланням транскрипту. Якщо не задано, зберігається типове вікно паузи для платформи (`700 ms` на macOS і Android, `900 ms` на iOS). +- `providers.mlx.modelId` вибирає репозиторій Hugging Face, який використовує локальний помічник MLX для macOS. Якщо значення не задано, macOS використовує `mlx-community/Soprano-80M-bf16`. +- Відтворення MLX на macOS виконується через вбудований помічник `openclaw-mlx-tts`, якщо він є, або через виконуваний файл у `PATH`; `OPENCLAW_MLX_TTS_BIN` перевизначає шлях до помічника для розробки. +- `speechLocale` задає id локалі BCP 47, який використовується розпізнаванням мовлення Talk в iOS/macOS. Залиште незаданим, щоб використовувати типове значення пристрою. +- `silenceTimeoutMs` визначає, як довго режим Talk чекає після тиші користувача перед надсиланням transcript. Якщо значення не задано, зберігається типове вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`). --- -## Пов’язані матеріали +## Пов’язане -- [Довідник із конфігурації](/uk/gateway/configuration-reference) — усі інші ключі конфігурації -- [Конфігурація](/uk/gateway/configuration) — типові завдання та швидке налаштування +- [Довідник конфігурації](/uk/gateway/configuration-reference) — усі інші ключі конфігурації +- [Конфігурація](/uk/gateway/configuration) — поширені завдання та швидке налаштування - [Приклади конфігурації](/uk/gateway/configuration-examples) diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md index 32a25b864..05eea7257 100644 --- a/docs/uk/gateway/configuration-reference.md +++ b/docs/uk/gateway/configuration-reference.md @@ -1,69 +1,70 @@ --- read_when: - - Вам потрібні точні семантики конфігурації на рівні полів або значення за замовчуванням - - Ви перевіряєте блоки конфігурації channel, model, Gateway або tool -summary: Довідник із конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем + - Вам потрібна точна семантика полів конфігурації або значення за замовчуванням + - Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструменту +summary: Довідник з конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем title: Довідник із конфігурації x-i18n: - generated_at: "2026-04-25T19:33:45Z" + generated_at: "2026-04-25T20:13:30Z" model: gpt-5.4 provider: openai - source_hash: 3f9941fc10dd1929d62354fb604534e0526de8098de2484f8e3a571fd0c65082 + source_hash: f0b229369c1242e1bb58561abaa49021b1d3ce12ce1abc2d62eb362022650682 source_path: gateway/configuration-reference.md workflow: 15 --- -Базовий довідник із конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration). +Основний довідник із конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration). -Охоплює основні поверхні конфігурації OpenClaw і дає посилання назовні, коли підсистема має власний детальніший довідник. Каталоги команд, що належать channel і plugin, а також детальні параметри memory/QMD винесено на окремі сторінки, а не на цю. +Охоплює основні поверхні конфігурації OpenClaw і дає посилання назовні, коли підсистема має власний глибший довідник. Каталоги команд, що належать каналу та Plugin, а також глибокі параметри пам’яті/QMD розміщені на окремих сторінках, а не тут. Джерело істини в коді: -- `openclaw config schema` виводить актуальну JSON Schema, яка використовується для валідації та Control UI, із доданими метаданими bundled/plugin/channel, коли вони доступні -- `config.schema.lookup` повертає один вузол схеми з прив’язкою до шляху для інструментів детального перегляду -- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш документації конфігурації відносно поточної поверхні схеми +- `openclaw config schema` виводить актуальну JSON Schema, що використовується для валідації та Control UI, із метаданими bundled/Plugin/channel, об’єднаними за наявності +- `config.schema.lookup` повертає один вузол схеми з областю дії шляху для інструментів деталізації +- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш config-doc щодо поточної поверхні схеми -Окремі детальні довідники: +Окремі глибокі довідники: - [Memory configuration reference](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації dreaming у `plugins.entries.memory-core.config.dreaming` -- [Slash commands](/uk/tools/slash-commands) для поточного каталогу вбудованих + bundled команд -- сторінки channel/plugin-власників для channel-специфічних поверхонь команд +- [Slash commands](/uk/tools/slash-commands) для поточного вбудованого + bundled каталогу команд +- сторінки власника channel/plugin для поверхонь команд, специфічних для каналу -Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено. +Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено. --- -## Channels +## Канали -Ключі конфігурації для кожного channel перенесено на окрему сторінку — див. +Ключі конфігурації для окремих каналів перенесено на окрему сторінку — див. [Configuration — channels](/uk/gateway/config-channels) для `channels.*`, зокрема Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших -bundled channels (автентифікація, контроль доступу, кілька облікових записів, керування згадками). +bundled каналів (автентифікація, контроль доступу, кілька облікових записів, керування згадками). -## Типові значення agent, multi-agent, session і messages +## Значення агентів за замовчуванням, кілька агентів, сесії та повідомлення Перенесено на окрему сторінку — див. [Configuration — agents](/uk/gateway/config-agents) для: -- `agents.defaults.*` (робоча область, model, thinking, heartbeat, memory, медіа, skills, sandbox) -- `multiAgent.*` (маршрутизація та прив’язки multi-agent) -- `session.*` (життєвий цикл session, compaction, очищення) +- `agents.defaults.*` (робоча область, модель, thinking, heartbeat, пам’ять, медіа, skills, sandbox) +- `multiAgent.*` (маршрутизація та прив’язки кількох агентів) +- `session.*` (життєвий цикл сесії, compaction, очищення) - `messages.*` (доставка повідомлень, TTS, рендеринг markdown) - `talk.*` (режим Talk) - - `talk.silenceTimeoutMs`: якщо не задано, Talk зберігає типове для платформи вікно паузи перед надсиланням транскрипту (`700 ms на macOS і Android, 900 ms на iOS`) + - `talk.speechLocale`: необов’язковий ідентифікатор локалі BCP 47 для розпізнавання мовлення Talk в iOS/macOS + - `talk.silenceTimeoutMs`: якщо не задано, Talk зберігає стандартне для платформи вікно паузи перед надсиланням транскрипту (`700 ms на macOS і Android, 900 ms на iOS`) -## Tools і custom providers +## Інструменти та власні провайдери -Політика tool, експериментальні перемикачі, конфігурація tool на основі provider і налаштування custom +Політика інструментів, експериментальні перемикачі, конфігурація інструментів на основі провайдерів і налаштування власних provider / base-URL перенесено на окрему сторінку — див. [Configuration — tools and custom providers](/uk/gateway/config-tools). ## MCP -Визначення MCP server, якими керує OpenClaw, розміщуються в `mcp.servers` і +Визначення MCP-серверів, керованих OpenClaw, розміщуються в `mcp.servers` і використовуються вбудованим Pi та іншими адаптерами середовища виконання. Команди `openclaw mcp list`, `show`, `set` і `unset` керують цим блоком без підключення до -цільового server під час редагування конфігурації. +цільового сервера під час редагування конфігурації. ```json5 { @@ -87,17 +88,17 @@ provider / base-URL перенесено на окрему сторінку — } ``` -- `mcp.servers`: іменовані визначення stdio або віддалених MCP server для середовищ виконання, які - надають налаштовані MCP tool. -- `mcp.sessionIdleTtlMs`: idle TTL для session-спрямованих bundled MCP runtime. - Одноразові вбудовані запуски запитують очищення після завершення виконання; цей TTL є запобіжником для - довготривалих session і майбутніх викликів. -- Зміни в `mcp.*` застосовуються на гарячу через знищення кешованих session MCP runtime. - Наступне виявлення/використання tool створює їх заново з нової конфігурації, тому видалені - записи `mcp.servers` прибираються негайно, а не очікують завершення idle TTL. +- `mcp.servers`: іменовані визначення stdio- або віддалених MCP-серверів для середовищ виконання, які + надають налаштовані інструменти MCP. +- `mcp.sessionIdleTtlMs`: idle TTL для bundled MCP runtime з областю дії сесії. + Одноразові вбудовані запуски надсилають запит на очищення наприкінці виконання; цей TTL є резервним механізмом для + довготривалих сесій і майбутніх викликів. +- Зміни в `mcp.*` застосовуються на гарячу шляхом скидання кешованих session MCP runtime. + Наступне виявлення/використання інструмента створює їх заново з нової конфігурації, тому видалені + записи `mcp.servers` прибираються негайно, а не очікують idle TTL. Див. [MCP](/uk/cli/mcp#openclaw-as-an-mcp-client-registry) і -[CLI backends](/uk/gateway/cli-backends#bundle-mcp-overlays) щодо поведінки середовища виконання. +[CLI backends](/uk/gateway/cli-backends#bundle-mcp-overlays) для поведінки runtime. ## Skills @@ -124,14 +125,14 @@ provider / base-URL перенесено на окрему сторінку — } ``` -- `allowBundled`: необов’язковий allowlist лише для bundled skills (керовані/workspace skills це не зачіпає). -- `load.extraDirs`: додаткові спільні корені skills (найнижчий пріоритет). -- `install.preferBrew`: якщо `true`, спочатку надавати перевагу інсталяторам Homebrew, коли доступний `brew`, - а вже потім переходити до інших типів інсталяторів. -- `install.nodeManager`: пріоритет інсталятора Node для специфікацій `metadata.openclaw.install` +- `allowBundled`: необов’язковий список дозволених лише для bundled skills (керовані/workspace skills не зачіпає). +- `load.extraDirs`: додаткові спільні кореневі каталоги skills (найнижчий пріоритет). +- `install.preferBrew`: якщо `true`, надавати перевагу інсталяторам Homebrew, коли `brew` + доступний, перш ніж переходити до інших типів інсталяторів. +- `install.nodeManager`: пріоритет інсталятора node для специфікацій `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`). -- `entries..enabled: false` вимикає skill, навіть якщо вона bundled/installed. -- `entries..apiKey`: зручне поле для skills, які оголошують основну env var (простий рядок або об’єкт SecretRef). +- `entries..enabled: false` вимикає skill, навіть якщо він bundled/встановлений. +- `entries..apiKey`: зручне поле для skills, що оголошують основну env var (рядок відкритим текстом або об’єкт SecretRef). --- @@ -160,53 +161,53 @@ provider / base-URL перенесено на окрему сторінку — ``` - Завантажуються з `~/.openclaw/extensions`, `/.openclaw/extensions`, а також `plugins.load.paths`. -- Виявлення підтримує нативні OpenClaw plugins, а також сумісні bundled Codex і Claude, включно з bundle Claude типового компонування без manifest. +- Виявлення приймає нативні Plugins OpenClaw, а також сумісні пакети Codex і Claude, включно з пакетами Claude стандартного компонування без manifest. - **Зміни конфігурації потребують перезапуску Gateway.** -- `allow`: необов’язковий allowlist (завантажуються лише plugins зі списку). `deny` має пріоритет. -- `plugins.entries..apiKey`: зручне поле API key на рівні plugin (коли plugin це підтримує). -- `plugins.entries..env`: мапа env var в області plugin. -- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` і ігнорує поля мутації prompt із застарілого `before_agent_start`, зберігаючи застарілі `modelOverride` і `providerOverride`. Застосовується до нативних hook plugin і підтримуваних каталогів hook, наданих bundle. -- `plugins.entries..hooks.allowConversationAccess`: коли `true`, довірені небандловані plugins можуть читати необроблений вміст conversation із типізованих hook, таких як `llm_input`, `llm_output` і `agent_end`. -- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому plugin запитувати перевизначення `provider` і `model` для кожного запуску фонових підзапусків subagent. -- `plugins.entries..subagent.allowedModels`: необов’язковий allowlist канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише якщо ви свідомо хочете дозволити будь-яку model. -- `plugins.entries..config`: об’єкт конфігурації, визначений plugin (валідується за схемою нативного OpenClaw plugin, коли вона доступна). -- Налаштування облікових записів/середовища виконання для channel plugin розміщуються в `channels.` і мають описуватися метаданими `channelConfigs` у manifest plugin-власника, а не центральним реєстром параметрів OpenClaw. -- `plugins.entries.firecrawl.config.webFetch`: налаштування provider web-fetch Firecrawl. - - `apiKey`: API key Firecrawl (приймає SecretRef). Резервно використовує `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілий `tools.web.fetch.firecrawl.apiKey` або env var `FIRECRAWL_API_KEY`. +- `allow`: необов’язковий список дозволених (завантажуються лише перелічені Plugins). `deny` має пріоритет. +- `plugins.entries..apiKey`: зручне поле API-ключа на рівні Plugin (коли підтримується Plugin). +- `plugins.entries..env`: карта змінних середовища в межах Plugin. +- `plugins.entries..hooks.allowPromptInjection`: коли `false`, ядро блокує `before_prompt_build` та ігнорує поля, що змінюють prompt, із застарілого `before_agent_start`, зберігаючи при цьому застарілі `modelOverride` і `providerOverride`. Застосовується до нативних хуків Plugin і підтримуваних каталогів хуків, наданих пакетами. +- `plugins.entries..hooks.allowConversationAccess`: коли `true`, довірені не-bundled Plugins можуть читати вміст сирої розмови з типізованих хуків, таких як `llm_input`, `llm_output` і `agent_end`. +- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для окремого запуску фонових підагентів. +- `plugins.entries..subagent.allowedModels`: необов’язковий список дозволених канонічних цілей `provider/model` для довірених перевизначень підагентів. Використовуйте `"*"`, лише якщо ви свідомо хочете дозволити будь-яку модель. +- `plugins.entries..config`: об’єкт конфігурації, визначений Plugin (перевіряється схемою нативного Plugin OpenClaw, якщо доступна). +- Налаштування облікового запису/runtime для channel plugin розміщуються в `channels.` і мають описуватися метаданими `channelConfigs` manifest власника Plugin, а не центральним реєстром параметрів OpenClaw. +- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера веб-завантаження Firecrawl. + - `apiKey`: API-ключ Firecrawl (приймає SecretRef). Використовує як запасний варіант `plugins.entries.firecrawl.config.webSearch.apiKey`, застаріле `tools.web.fetch.firecrawl.apiKey` або змінну середовища `FIRECRAWL_API_KEY`. - `baseUrl`: базова URL-адреса API Firecrawl (типово: `https://api.firecrawl.dev`). - `onlyMainContent`: витягувати лише основний вміст зі сторінок (типово: `true`). - `maxAgeMs`: максимальний вік кешу в мілісекундах (типово: `172800000` / 2 дні). - - `timeoutSeconds`: тайм-аут запиту scrape у секундах (типово: `60`). -- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok). - - `enabled`: увімкнути provider X Search. - - `model`: модель Grok для пошуку (наприклад, `"grok-4-1-fast"`). -- `plugins.entries.memory-core.config.dreaming`: налаштування dreaming memory. Див. [Dreaming](/uk/concepts/dreaming) щодо фаз і порогів. + - `timeoutSeconds`: тайм-аут запиту збирання в секундах (типово: `60`). +- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (веб-пошук Grok). + - `enabled`: увімкнути провайдера X Search. + - `model`: модель Grok для використання в пошуку (наприклад, `"grok-4-1-fast"`). +- `plugins.entries.memory-core.config.dreaming`: налаштування dreaming пам’яті. Див. [Dreaming](/uk/concepts/dreaming) для фаз і порогів. - `enabled`: головний перемикач dreaming (типово `false`). - - `frequency`: cadence Cron для кожного повного проходу dreaming (типово `"0 3 * * *"`). + - `frequency`: розклад cron для кожного повного циклу dreaming (типово `"0 3 * * *"`). - політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації). -- Повна конфігурація memory міститься в [Memory configuration reference](/uk/reference/memory-config): +- Повна конфігурація пам’яті міститься в [Memory configuration reference](/uk/reference/memory-config): - `agents.defaults.memorySearch.*` - `memory.backend` - `memory.citations` - `memory.qmd.*` - `plugins.entries.memory-core.config.dreaming` -- Увімкнені Claude bundled plugins також можуть додавати вбудовані типові значення Pi із `settings.json`; OpenClaw застосовує їх як санітизовані налаштування agent, а не як сирі патчі конфігурації OpenClaw. -- `plugins.slots.memory`: вибрати id активного plugin memory або `"none"`, щоб вимкнути plugins memory. -- `plugins.slots.contextEngine`: вибрати id активного plugin context engine; типово `"legacy"`, якщо ви не встановите та не виберете інший engine. -- `plugins.installs`: застарілий сумісний резервний варіант для застарілих - метаданих встановлення, якими керує CLI. Нові встановлення plugin записують керований - журнал стану `plugins/installs.json`. +- Увімкнені Claude bundle plugins також можуть додавати вбудовані типові значення Pi із `settings.json`; OpenClaw застосовує їх як санітизовані налаштування агента, а не як сирі патчі конфігурації OpenClaw. +- `plugins.slots.memory`: вибрати ідентифікатор активного plugin пам’яті або `"none"` для вимкнення plugin пам’яті. +- `plugins.slots.contextEngine`: вибрати ідентифікатор активного plugin рушія контексту; типово `"legacy"`, якщо ви не встановите й не виберете інший рушій. +- `plugins.installs`: застарілий запасний механізм сумісності для застарілих + метаданих встановлення, керованих CLI. Нові встановлення plugin записують + керований журнал стану `plugins/installs.json`. - Застарілі записи містять `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`. - - Розглядайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI замість + - Розглядайте `plugins.installs.*` як керований стан; віддавайте перевагу командам CLI замість ручного редагування. Див. [Plugins](/uk/tools/plugin). --- -## Browser +## Браузер ```json5 { @@ -253,31 +254,31 @@ provider / base-URL перенесено на окрему сторінку — ``` - `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`. -- `tabCleanup` звільняє відстежувані вкладки основного agent після простою або коли - session перевищує свій ліміт. Установіть `idleMinutes: 0` або `maxTabsPerSession: 0`, щоб - вимкнути ці окремі режими очищення. -- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тому навігація browser за замовчуванням залишається суворою. -- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви свідомо довіряєте навігації browser у приватній мережі. -- У суворому режимі кінцеві точки віддалених профілів CDP (`profiles.*.cdpUrl`) підпадають під таке саме блокування приватної мережі під час перевірок доступності/виявлення. +- `tabCleanup` звільняє відстежувані вкладки основного агента після простою або коли + сесія перевищує свій ліміт. Установіть `idleMinutes: 0` або `maxTabsPerSession: 0`, щоб + вимкнути відповідні окремі режими очищення. +- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тому навігація браузера типово залишається суворо обмеженою. +- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви свідомо довіряєте навігації браузера в приватній мережі. +- У суворому режимі віддалені кінцеві точки профілю CDP (`profiles.*.cdpUrl`) підлягають такому самому блокуванню приватної мережі під час перевірок доступності/виявлення. - `ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як застарілий псевдонім. - У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків. -- Віддалені профілі працюють лише в режимі attach-only (запуск/зупинка/скидання вимкнено). +- Віддалені профілі працюють лише в режимі підключення (start/stop/reset вимкнені). - `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`. - Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S), - коли ваш provider надає пряму URL-адресу DevTools WebSocket. + Використовуйте HTTP(S), якщо хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S), + якщо ваш провайдер надає вам пряму URL-адресу DevTools WebSocket. - `remoteCdpTimeoutMs` і `remoteCdpHandshakeTimeoutMs` застосовуються до віддаленої та - `attachOnly`-доступності CDP, а також до запитів на відкриття вкладок. Керовані профілі - local loopback зберігають локальні типові значення CDP. -- Якщо зовнішньо керована служба CDP доступна через loopback, установіть для цього - профілю `attachOnly: true`; інакше OpenClaw вважатиме порт loopback - локальним керованим профілем browser і може повідомляти про помилки володіння локальним портом. -- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися на - вибраному хості або через підключений вузол browser. -- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлюватися на конкретний + `attachOnly`-доступності CDP, а також до запитів відкриття вкладок. Керовані loopback + профілі зберігають локальні типові значення CDP. +- Якщо зовні керований сервіс CDP доступний через loopback, установіть для цього + профілю `attachOnly: true`; інакше OpenClaw трактуватиме loopback-порт як + локальний керований профіль браузера та може повідомляти про помилки володіння локальним портом. +- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися до + вибраного хоста або через підключений browser node. +- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний профіль браузера на базі Chromium, наприклад Brave або Edge. - Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP: - дії на основі snapshot/ref замість націлювання через CSS-селектори, hook завантаження одного файла, - без перевизначення тайм-аутів діалогів, без `wait --load networkidle`, а також без + дії на основі snapshot/ref замість націлювання за CSS-селекторами, хуки завантаження + одного файла, без перевизначення тайм-ауту діалогів, без `wait --load networkidle`, а також без `responsebody`, експорту PDF, перехоплення завантажень чи пакетних дій. - Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно задавайте `cdpUrl` лише для віддаленого CDP. @@ -285,17 +286,17 @@ provider / base-URL перенесено на окрему сторінку — `browser.executablePath` для цього профілю. Використовуйте це, щоб запускати один профіль у Chrome, а інший — у Brave. - Локальні керовані профілі використовують `browser.localLaunchTimeoutMs` для HTTP-виявлення Chrome CDP - після запуску процесу та `browser.localCdpReadyTimeoutMs` для - готовності websocket CDP після запуску. Збільшуйте їх на повільніших хостах, де Chrome + після запуску процесу і `browser.localCdpReadyTimeoutMs` для + готовності websocket CDP після запуску. Збільшуйте ці значення на повільніших хостах, де Chrome запускається успішно, але перевірки готовності випереджають запуск. Обидва значення мають бути додатними цілими числами до `120000` ms; некоректні значення конфігурації відхиляються. -- Порядок автовиявлення: browser за замовчуванням, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. +- Порядок авто-виявлення: типовий браузер, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. - `browser.executablePath` і `browser.profiles..executablePath` обидва приймають `~` і `~/...` для домашнього каталогу вашої ОС перед запуском Chromium. - `userDataDir` для профілю `existing-session` також розгортається з тильдою. -- Служба керування: лише loopback (порт похідний від `gateway.port`, типово `18791`). + `userDataDir` для профілю `existing-session` також підтримує розгортання тильди. +- Сервіс керування: лише loopback (порт похідний від `gateway.port`, типово `18791`). - `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад, - `--disable-gpu`, параметри розміру вікна або відлагоджувальні прапорці). + `--disable-gpu`, розмір вікна або налагоджувальні прапорці). --- @@ -313,8 +314,8 @@ provider / base-URL перенесено на окрему сторінку — } ``` -- `seamColor`: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо). -- `assistant`: перевизначення ідентичності для Control UI. Резервно використовується ідентичність активного agent. +- `seamColor`: акцентний колір для chrome інтерфейсу нативного застосунку (тон бульбашки Talk Mode тощо). +- `assistant`: перевизначення ідентичності для Control UI. Якщо не задано, використовується ідентичність активного агента. --- @@ -393,49 +394,50 @@ provider / base-URL перенесено на окрему сторінку — - `mode`: `local` (запустити gateway) або `remote` (підключитися до віддаленого gateway). Gateway відмовляється запускатися, якщо не `local`. - `port`: єдиний мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`. -- `bind`: `auto`, `loopback` (типово), `lan` (`0.0.0.0`), `tailnet` (лише Tailscale IP) або `custom`. +- `bind`: `auto`, `loopback` (типово), `lan` (`0.0.0.0`), `tailnet` (лише IP Tailscale) або `custom`. - **Застарілі псевдоніми bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хоста (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`). -- **Примітка щодо Docker**: типовий bind `loopback` слухає `127.0.0.1` усередині контейнера. З мостовою мережею Docker (`-p 18789:18789`) трафік надходить через `eth0`, тому gateway недоступний. Використовуйте `--network host` або задайте `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах. -- **Auth**: за замовчуванням обов’язкова. Bind не через loopback потребують auth gateway. На практиці це означає спільний token/password або reverse proxy з урахуванням ідентичності з `gateway.auth.mode: "trusted-proxy"`. Wizard onboarding типово генерує token. -- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно із SecretRef), явно задайте `gateway.auth.mode` як `token` або `password`. Потоки запуску та встановлення/відновлення service завершуються помилкою, коли налаштовано обидва, а mode не задано. -- `gateway.auth.mode: "none"`: явний режим без auth. Використовуйте лише для довірених локальних налаштувань local loopback; цей варіант навмисно не пропонується в підказках onboarding. -- `gateway.auth.mode: "trusted-proxy"`: делегувати auth reverse proxy з урахуванням ідентичності й довіряти заголовкам ідентичності від `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy loopback на тому ж хості не задовольняють auth trusted-proxy. -- `gateway.auth.allowTailscale`: коли `true`, заголовки ідентичності Tailscale Serve можуть задовольняти auth для Control UI/WebSocket (перевіряється через `tailscale whois`). Кінцеві точки HTTP API **не** використовують цю auth заголовками Tailscale; вони дотримуються звичайного режиму HTTP auth gateway. Цей потік без token припускає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`. -- `gateway.auth.rateLimit`: необов’язковий лімітатор невдалих auth. Застосовується для кожного IP клієнта та для кожної області auth (спільний секрет і token пристрою відстежуються окремо). Заблоковані спроби повертають `429` + `Retry-After`. - - На асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом невдачі. Тому одночасні хибні спроби від того самого клієнта можуть спрацювати на лімітатор уже на другому запиті, замість того щоб обидві одночасно пройти як звичайні невідповідності. - - `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; установіть `false`, якщо ви свідомо хочете також обмежувати трафік localhost (для тестових налаштувань або суворих розгортань proxy). -- Спроби auth WS із походження browser завжди обмежуються без винятку для loopback (додатковий захист від brute force localhost через browser). -- На loopback ці блокування для походжень browser ізолюються за нормалізованим значенням `Origin`, - тож повторні невдачі з одного походження localhost не блокують автоматично - інше походження. -- `tailscale.mode`: `serve` (лише tailnet, bind loopback) або `funnel` (публічно, потребує auth). -- `controlUi.allowedOrigins`: явний allowlist походжень browser для підключень Gateway WebSocket. Обов’язковий, коли очікуються клієнти browser із не-loopback походжень. -- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервне використання походження з заголовка Host для розгортань, що навмисно покладаються на політику походження за заголовком Host. -- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` `remote.url` має бути `ws://` або `wss://`. -- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське - аварійне перевизначення середовища процесу, яке дозволяє відкритий `ws://` до довірених - IP приватної мережі; типовою лишається підтримка відкритого тексту лише для loopback. Еквівалента в - `openclaw.json` немає, і конфігурація приватної мережі browser, така як - `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`, не впливає на клієнтів WebSocket Gateway. -- `gateway.remote.token` / `.password`: це поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують auth gateway. -- `gateway.push.apns.relay.baseUrl`: базова HTTPS URL-адреса зовнішнього ретранслятора APNs, який використовують офіційні/TestFlight збірки iOS після публікації реєстрацій із підтримкою relay у gateway. Ця URL-адреса має збігатися з URL relay, скомпільованою у збірку iOS. +- **Примітка щодо Docker**: типове прив’язування `loopback` слухає `127.0.0.1` усередині контейнера. За мережі Docker bridge (`-p 18789:18789`) трафік надходить на `eth0`, тому gateway недоступний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` із `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах. +- **Auth**: типово обов’язкова. Прив’язування не до loopback вимагають auth gateway. На практиці це означає спільний token/password або reverse proxy з контролем ідентичності з `gateway.auth.mode: "trusted-proxy"`. Майстер онбордингу типово генерує token. +- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно з SecretRef), явно задайте `gateway.auth.mode` як `token` або `password`. Під час запуску та в потоках встановлення/відновлення сервісу виникає помилка, якщо налаштовано обидва, а mode не задано. +- `gateway.auth.mode: "none"`: явний режим без auth. Використовуйте лише для довірених локальних налаштувань loopback; цей варіант навмисно не пропонується в підказках онбордингу. +- `gateway.auth.mode: "trusted-proxy"`: делегувати auth reverse proxy з контролем ідентичності та довіряти заголовкам ідентичності з `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy loopback на тому самому хості не задовольняють auth trusted-proxy. +- `gateway.auth.allowTailscale`: якщо `true`, заголовки ідентичності Tailscale Serve можуть задовольнити auth Control UI/WebSocket (перевіряється через `tailscale whois`). Кінцеві точки HTTP API **не** використовують цю auth за заголовками Tailscale; замість цього вони дотримуються звичайного режиму HTTP auth gateway. Цей потік без token припускає, що хост gateway є довіреним. Типове значення — `true`, коли `tailscale.mode = "serve"`. +- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб auth. Застосовується для кожного IP клієнта та для кожної області auth (спільний секрет і token пристрою відстежуються окремо). Заблоковані спроби повертають `429` + `Retry-After`. + - В асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються до запису невдачі. Тому одночасні некоректні спроби від того самого клієнта можуть спровокувати обмеження вже на другому запиті, замість того щоб обидві пройшли як звичайні невідповідності. + - `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; встановіть `false`, якщо свідомо хочете, щоб трафік localhost також підлягав rate limit (для тестових середовищ або суворих proxy-розгортань). +- Спроби WS auth з походженням браузера завжди обмежуються без винятку для loopback (додатковий захист від brute force localhost із браузера). +- На loopback ці блокування з браузерним походженням ізолюються для кожного нормалізованого значення `Origin`, + тому повторні невдачі з одного походження localhost не призводять автоматично + до блокування іншого походження. +- `tailscale.mode`: `serve` (лише tailnet, прив’язування loopback) або `funnel` (публічно, потребує auth). +- `controlUi.allowedOrigins`: явний список дозволених browser-origin для підключень Gateway WebSocket. Обов’язковий, коли очікуються клієнти браузера не з loopback-origin. +- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає запасний варіант походження через заголовок Host для розгортань, які навмисно покладаються на політику походження за заголовком Host. +- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`. +- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське аварійне перевизначення + середовища процесу, яке дозволяє незашифрований `ws://` до довірених IP + приватної мережі; типово незашифрований трафік, як і раніше, дозволено лише для loopback. Еквівалента в `openclaw.json` + немає, а конфігурація приватної мережі браузера, така як + `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`, не впливає на клієнти + Gateway WebSocket. +- `gateway.remote.token` / `.password`: поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують auth gateway. +- `gateway.push.apns.relay.baseUrl`: базова HTTPS URL-адреса зовнішнього ретранслятора APNs, що використовується офіційними/TestFlight збірками iOS після того, як вони публікують до gateway реєстрації з підтримкою relay. Ця URL-адреса має збігатися з URL relay, скомпільованою в збірку iOS. - `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання від gateway до relay у мілісекундах. Типове значення: `10000`. -- Реєстрації з підтримкою relay делегуються конкретній ідентичності gateway. Спарений застосунок iOS отримує `gateway.identity.get`, включає цю ідентичність у реєстрацію relay і пересилає в gateway право надсилання в межах цієї реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію. -- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові перевизначення середовища для наведеної вище конфігурації relay. -- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: аварійний варіант лише для розробки для URL relay HTTP через loopback. URL production relay мають залишатися на HTTPS. -- `gateway.channelHealthCheckMinutes`: інтервал моніторингу стану channel у хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски монітора стану. Типове значення: `5`. -- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого socket у хвилинах. Тримайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. Типове значення: `30`. -- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітора стану на channel/account за ковзну годину. Типове значення: `10`. -- `channels..healthMonitor.enabled`: відмова для окремого channel від перезапусків монітора стану зі збереженням глобального монітора. -- `channels..accounts..healthMonitor.enabled`: перевизначення для окремого account у multi-account channels. Якщо задано, має пріоритет над перевизначенням на рівні channel. -- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не задано. -- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не вдалося розв’язати, розв’язання завершується в закритому режимі (без маскування через резервний remote). -- `trustedProxies`: IP reverse proxy, які завершують TLS або вставляють заголовки forwarded-client. Указуйте лише proxy, якими ви керуєте. Записи loopback усе ще валідні для налаштувань proxy на тому самому хості/локального виявлення (наприклад, Tailscale Serve або локальний reverse proxy), але вони **не** роблять запити loopback придатними для `gateway.auth.mode: "trusted-proxy"`. -- `allowRealIpFallback`: коли `true`, gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типово `false` для fail-closed поведінки. -- `gateway.nodes.pairing.autoApproveCidrs`: необов’язковий allowlist CIDR/IP для автоматичного схвалення першого спарювання пристрою Node без запитаних областей доступу. Вимкнено, якщо не задано. Це не схвалює автоматично спарювання operator/browser/Control UI/WebChat, а також не схвалює автоматично оновлення ролі, області доступу, метаданих або публічного ключа. -- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування allow/deny для оголошених команд Node після спарювання та перевірки allowlist. -- `gateway.tools.deny`: додаткові назви tool, заблоковані для HTTP `POST /tools/invoke` (розширює типовий deny list). -- `gateway.tools.allow`: прибрати назви tool із типового HTTP deny list. +- Реєстрації з підтримкою relay делегуються конкретній ідентичності gateway. Зіставлений застосунок iOS викликає `gateway.identity.get`, включає цю ідентичність у реєстрацію relay і пересилає до gateway дозвіл на надсилання в межах реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію. +- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові env-перевизначення для наведеної вище конфігурації relay. +- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: аварійний варіант лише для розробки для URL relay через loopback HTTP. URL relay у production мають залишатися на HTTPS. +- `gateway.channelHealthCheckMinutes`: інтервал моніторингу стану каналів у хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски монітору стану. Типове значення: `5`. +- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета в хвилинах. Тримайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. Типове значення: `30`. +- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітору стану на канал/обліковий запис у ковзній годині. Типове значення: `10`. +- `channels..healthMonitor.enabled`: відмова на рівні каналу від перезапусків монітору стану зі збереженням глобального монітору увімкненим. +- `channels..accounts..healthMonitor.enabled`: перевизначення на рівні облікового запису для багатокористувацьких каналів. Якщо задано, має пріоритет над перевизначенням рівня каналу. +- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як запасний варіант лише тоді, коли `gateway.auth.*` не задано. +- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не вдалось розв’язати, розв’язання завершується із закритою відмовою (без маскування запасним віддаленим варіантом). +- `trustedProxies`: IP reverse proxy, які завершують TLS або додають заголовки пересланого клієнта. Вказуйте лише proxy, які ви контролюєте. Записи loopback залишаються дійсними для налаштувань proxy на тому самому хості/локального виявлення (наприклад, Tailscale Serve або локальний reverse proxy), але вони **не** роблять запити loopback придатними для `gateway.auth.mode: "trusted-proxy"`. +- `allowRealIpFallback`: якщо `true`, gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типове значення `false` для fail-closed поведінки. +- `gateway.nodes.pairing.autoApproveCidrs`: необов’язковий список дозволених CIDR/IP для автоматичного схвалення першого сполучення пристрою node без запитаних областей. Якщо не задано, вимкнено. Це не схвалює автоматично pairing оператора/браузера/Control UI/WebChat, а також не схвалює автоматично оновлення ролі, scope, метаданих або публічного ключа. +- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування allow/deny для оголошених команд node після pairing і оцінки списку дозволених. +- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список deny). +- `gateway.tools.allow`: видалити назви інструментів із типового списку HTTP deny. @@ -443,14 +445,14 @@ provider / base-URL перенесено на окрему сторінку — - Chat Completions: типово вимкнено. Увімкніть через `gateway.http.endpoints.chatCompletions.enabled: true`. - Responses API: `gateway.http.endpoints.responses.enabled`. -- Посилене захист URL-входу Responses: +- Посилене обмеження URL-введення для Responses: - `gateway.http.endpoints.responses.maxUrlParts` - `gateway.http.endpoints.responses.files.urlAllowlist` - `gateway.http.endpoints.responses.images.urlAllowlist` - Порожні allowlist трактуються як незадані; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false` - і/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання за URL. + Порожні списки дозволених обробляються як незадані; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false` + та/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL. - Необов’язковий заголовок посиленого захисту відповіді: - - `gateway.http.securityHeaders.strictTransportSecurity` (задавайте лише для HTTPS-походжень, якими ви керуєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts)) + - `gateway.http.securityHeaders.strictTransportSecurity` (задавайте лише для HTTPS-origin, які ви контролюєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts)) ### Ізоляція кількох екземплярів @@ -483,9 +485,9 @@ openclaw gateway --port 19001 ``` - `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типово: `false`). -- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, якщо явні файли не налаштовано; лише для локального/dev використання. -- `certPath`: шлях файлової системи до файла сертифіката TLS. -- `keyPath`: шлях файлової системи до файла приватного ключа TLS; тримайте його з обмеженими дозволами. +- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовані; лише для локального/dev використання. +- `certPath`: шлях файлової системи до файла TLS-сертифіката. +- `keyPath`: шлях файлової системи до файла приватного ключа TLS; обмежуйте доступ правами. - `caPath`: необов’язковий шлях до пакета CA для перевірки клієнта або нестандартних ланцюжків довіри. ### `gateway.reload` @@ -503,12 +505,12 @@ openclaw gateway --port 19001 ``` - `mode`: керує тим, як зміни конфігурації застосовуються під час виконання. - - `"off"`: ігнорувати зміни наживо; зміни потребують явного перезапуску. + - `"off"`: ігнорувати live-зміни; зміни потребують явного перезапуску. - `"restart"`: завжди перезапускати процес gateway після зміни конфігурації. - `"hot"`: застосовувати зміни в процесі без перезапуску. - - `"hybrid"` (типово): спочатку пробувати hot reload; якщо потрібно — переходити до перезапуску. + - `"hybrid"` (типово): спершу намагатися виконати hot reload; за потреби переходити до перезапуску. - `debounceMs`: вікно debounce у ms перед застосуванням змін конфігурації (невід’ємне ціле число). -- `deferralTimeoutMs`: необов’язковий максимальний час у ms, протягом якого слід чекати завершення поточних операцій перед примусовим перезапуском. Пропустіть або встановіть `0`, щоб чекати безкінечно та періодично журналювати попередження про ще незавершені операції. +- `deferralTimeoutMs`: необов’язковий максимальний час у ms очікування для операцій у процесі перед примусовим перезапуском. Не задавайте його або встановіть `0`, щоб чекати необмежено довго та періодично журналювати попередження про те, що щось і далі очікує завершення. --- @@ -550,11 +552,11 @@ Hook-token у рядку запиту відхиляються. Примітки щодо валідації та безпеки: -- `hooks.enabled=true` потребує непорожнього `hooks.token`. -- `hooks.token` має **відрізнятися** від `gateway.auth.token`; повторне використання token Gateway відхиляється. +- `hooks.enabled=true` вимагає непорожній `hooks.token`. +- `hooks.token` має бути **відмінним** від `gateway.auth.token`; повторне використання token Gateway відхиляється. - `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`. -- Якщо `hooks.allowRequestSessionKey=true`, обмежуйте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`). -- Якщо mapping або preset використовує шаблонізований `sessionKey`, задайте `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі mapping не потребують цього явного дозволу. +- Якщо `hooks.allowRequestSessionKey=true`, обмежте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`). +- Якщо mapping або preset використовує шаблонізований `sessionKey`, задайте `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі mapping не потребують цього явного ввімкнення. **Кінцеві точки:** @@ -562,30 +564,30 @@ Hook-token у рядку запиту відхиляються. - `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }` - `sessionKey` із тіла запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (типово: `false`). - `POST /hooks/` → розв’язується через `hooks.mappings` - - Значення `sessionKey` у mapping, згенеровані шаблоном, вважаються зовнішньо наданими й також потребують `hooks.allowRequestSessionKey=true`. + - Значення `sessionKey` у mapping, відрендерені через шаблон, вважаються наданими ззовні й також вимагають `hooks.allowRequestSessionKey=true`. - `match.path` зіставляє підшлях після `/hooks` (наприклад, `/hooks/gmail` → `gmail`). -- `match.source` зіставляє поле payload для загальних шляхів. -- Шаблони на кшталт `{{messages[0].subject}}` читають дані з payload. +- `match.source` зіставляє поле в тілі запиту для загальних шляхів. +- Шаблони на кшталт `{{messages[0].subject}}` читають дані з тіла запиту. - `transform` може вказувати на модуль JS/TS, що повертає дію hook. - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та traversal відхиляються). -- `agentId` маршрутизує до конкретного agent; невідомі ID резервно переходять на типове значення. -- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або пропущено = дозволити все, `[]` = заборонити все). -- `defaultSessionKey`: необов’язковий фіксований ключ session для запусків agent через hook без явного `sessionKey`. -- `allowRequestSessionKey`: дозволити викликачам `/hooks/agent` і ключам session у mapping, керованих шаблоном, задавати `sessionKey` (типово: `false`). -- `allowedSessionKeyPrefixes`: необов’язковий префіксний allowlist для явних значень `sessionKey` (запит + mapping), наприклад `["hook:"]`. Стає обов’язковим, коли будь-який mapping або preset використовує шаблонізований `sessionKey`. -- `deliver: true` надсилає фінальну відповідь у channel; `channel` типово `last`. -- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо каталог model задано). +- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до типового. +- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або відсутнє = дозволити все, `[]` = заборонити все). +- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків hook agent без явного `sessionKey`. +- `allowRequestSessionKey`: дозволити викликачам `/hooks/agent` і ключам сесій mapping, керованим шаблонами, задавати `sessionKey` (типово: `false`). +- `allowedSessionKeyPrefixes`: необов’язковий список дозволених префіксів для явних значень `sessionKey` (запит + mapping), наприклад `["hook:"]`. Він стає обов’язковим, коли будь-який mapping або preset використовує шаблонізований `sessionKey`. +- `deliver: true` надсилає фінальну відповідь у канал; `channel` типово дорівнює `last`. +- `model` перевизначає LLM для цього запуску hook (має бути дозволена, якщо задано каталог моделей). ### Інтеграція Gmail - Вбудований preset Gmail використовує `sessionKey: "hook:gmail:{{messages[0].id}}"`. -- Якщо ви зберігаєте таку маршрутизацію для кожного повідомлення, задайте `hooks.allowRequestSessionKey: true` і обмежте `hooks.allowedSessionKeyPrefixes`, щоб вони відповідали простору імен Gmail, наприклад `["hook:", "hook:gmail:"]`. -- Якщо вам потрібне `hooks.allowRequestSessionKey: false`, перевизначте preset статичним `sessionKey` замість типового шаблонізованого значення. +- Якщо ви зберігаєте цю маршрутизацію для кожного повідомлення, установіть `hooks.allowRequestSessionKey: true` і обмежте `hooks.allowedSessionKeyPrefixes`, щоб вони відповідали простору імен Gmail, наприклад `["hook:", "hook:gmail:"]`. +- Якщо вам потрібно `hooks.allowRequestSessionKey: false`, перевизначте preset статичним `sessionKey` замість шаблонного типового значення. ```json5 { @@ -608,12 +610,12 @@ Hook-token у рядку запиту відхиляються. } ``` -- Gateway автоматично запускає `gog gmail watch serve` під час завантаження, якщо його налаштовано. Установіть `OPENCLAW_SKIP_GMAIL_WATCHER=1`, щоб вимкнути це. +- Gateway автоматично запускає `gog gmail watch serve` під час завантаження, якщо це налаштовано. Установіть `OPENCLAW_SKIP_GMAIL_WATCHER=1`, щоб вимкнути це. - Не запускайте окремий `gog gmail watch serve` паралельно з Gateway. --- -## Canvas host +## Хост Canvas ```json5 { @@ -625,22 +627,22 @@ Hook-token у рядку запиту відхиляються. } ``` -- Обслуговує HTML/CSS/JS і A2UI, які agent може редагувати, через HTTP на порту Gateway: +- Обслуговує HTML/CSS/JS, що редагуються агентом, і A2UI через HTTP на порту Gateway: - `http://:/__openclaw__/canvas/` - `http://:/__openclaw__/a2ui/` - Лише локально: зберігайте `gateway.bind: "loopback"` (типово). -- Для bind не через loopback: маршрути canvas потребують auth Gateway (token/password/trusted-proxy), так само як і інші HTTP-поверхні Gateway. -- Node WebView зазвичай не надсилають заголовки auth; після спарювання та підключення node Gateway рекламує URL можливостей з областю node для доступу до canvas/A2UI. -- URL можливостей прив’язані до активної WS-session node і швидко спливають. Резервний варіант на основі IP не використовується. -- Вставляє клієнт live reload у HTML, що обслуговується. +- Для прив’язувань не-loopback: маршрути canvas вимагають auth Gateway (token/password/trusted-proxy), так само як і інші HTTP-поверхні Gateway. +- Node WebView зазвичай не надсилають заголовки auth; після pairing і підключення node Gateway рекламує URL-адреси можливостей з областю дії node для доступу до canvas/A2UI. +- URL-адреси можливостей прив’язані до активної WS-сесії node і швидко спливають. Резервний варіант на основі IP не використовується. +- Вбудовує клієнт live-reload у HTML, що обслуговується. - Автоматично створює стартовий `index.html`, якщо каталог порожній. - Також обслуговує A2UI за адресою `/__openclaw__/a2ui/`. - Зміни потребують перезапуску gateway. -- Вимкніть live reload для великих каталогів або при помилках `EMFILE`. +- Вимкніть live reload для великих каталогів або у разі помилок `EMFILE`. --- -## Discovery +## Виявлення ### mDNS (Bonjour) @@ -654,9 +656,9 @@ Hook-token у рядку запиту відхиляються. } ``` -- `minimal` (типово): пропускає `cliPath` + `sshPort` із TXT-записів. +- `minimal` (типово): не включає `cliPath` + `sshPort` у записи TXT. - `full`: включає `cliPath` + `sshPort`. -- Типове ім’я хоста — `openclaw`. Перевизначення через `OPENCLAW_MDNS_HOSTNAME`. +- Типове ім’я хоста — `openclaw`. Перевизначається через `OPENCLAW_MDNS_HOSTNAME`. ### Wide-area (DNS-SD) @@ -668,15 +670,15 @@ Hook-token у рядку запиту відхиляються. } ``` -Записує зону унікастного DNS-SD в `~/.openclaw/dns/`. Для виявлення між мережами поєднуйте з DNS-server (рекомендовано CoreDNS) + split DNS у Tailscale. +Записує зону unicast DNS-SD у `~/.openclaw/dns/`. Для виявлення між мережами поєднуйте це з DNS-сервером (рекомендовано CoreDNS) + split DNS у Tailscale. Налаштування: `openclaw dns setup --apply`. --- -## Environment +## Середовище -### `env` (вбудовані env var) +### `env` (вбудовані env vars) ```json5 { @@ -693,14 +695,14 @@ Hook-token у рядку запиту відхиляються. } ``` -- Вбудовані env var застосовуються лише тоді, коли в env процесу відсутній ключ. -- Файли `.env`: `.env` поточного робочого каталогу + `~/.openclaw/.env` (жоден не перевизначає наявні var). +- Вбудовані env vars застосовуються лише тоді, коли в середовищі процесу відсутній ключ. +- Файли `.env`: `.env` поточного робочого каталогу + `~/.openclaw/.env` (жоден із них не перевизначає наявні змінні). - `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell. -- Повний порядок пріоритету див. у [Environment](/uk/help/environment). +- Див. [Environment](/uk/help/environment) для повного порядку пріоритету. ### Підстановка env var -Посилайтеся на env var у будь-якому рядку конфігурації через `${VAR_NAME}`: +Посилайтеся на env vars у будь-якому рядку конфігурації через `${VAR_NAME}`: ```json5 { @@ -711,19 +713,19 @@ Hook-token у рядку запиту відхиляються. ``` - Зіставляються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`. -- Відсутні/порожні var спричиняють помилку під час завантаження конфігурації. -- Екрануйте через `$${VAR}` для буквального `${VAR}`. +- Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації. +- Екрануйте через `$${VAR}`, щоб отримати буквальний `${VAR}`. - Працює з `$include`. --- -## Secrets +## Секрети -Посилання на secret є адитивними: прості текстові значення також продовжують працювати. +Посилання на секрети є додатковими: значення відкритим текстом і далі працюють. ### `SecretRef` -Використовуйте одну форму об’єкта: +Використовуйте один формат об’єкта: ```json5 { source: "env" | "file" | "exec", provider: "default", id: "..." } @@ -733,17 +735,17 @@ Hook-token у рядку запиту відхиляються. - шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$` - шаблон `id` для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$` -- `id` для `source: "file"`: абсолютний JSON pointer (наприклад, `"/providers/openai/apiKey"`) +- `id` для `source: "file"`: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`) - шаблон `id` для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$` -- `id` для `source: "exec"` не повинні містити сегментів шляху `.` або `..`, розділених `/` (наприклад, `a/../b` відхиляється) +- `id` для `source: "exec"` не повинні містити сегменти шляху `.` або `..`, розділені `/` (наприклад, `a/../b` відхиляється) ### Підтримувана поверхня облікових даних - Канонічна матриця: [SecretRef Credential Surface](/uk/reference/secretref-credential-surface) - `secrets apply` націлюється на підтримувані шляхи облікових даних у `openclaw.json`. -- Посилання з `auth-profiles.json` включено до розв’язання під час виконання та покриття аудиту. +- Посилання в `auth-profiles.json` включені до runtime-розв’язання та покриття аудиту. -### Конфігурація provider secret +### Конфігурація провайдерів секретів ```json5 { @@ -773,14 +775,14 @@ Hook-token у рядку запиту відхиляються. Примітки: -- Provider `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue `id` має бути `"value"`). -- Шляхи provider `file` і `exec` завершуються в закритому режимі, якщо недоступна перевірка Windows ACL. Установлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити. -- Provider `exec` потребує абсолютний шлях `command` і використовує payload протоколу через stdin/stdout. -- Типово шляхи команд-симлінків відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-симлінки з перевіркою розв’язаного цільового шляху. -- Якщо налаштовано `trustedDirs`, перевірка trusted-dir застосовується до розв’язаного цільового шляху. -- Середовище дочірнього процесу `exec` типово мінімальне; передавайте потрібні змінні явно через `passEnv`. -- Посилання на secret розв’язуються під час активації в знімок у пам’яті, після чого шляхи запитів читають лише цей знімок. -- Фільтрація активної поверхні застосовується під час активації: нерозв’язані посилання на увімкнених поверхнях призводять до помилки запуску/перезавантаження, а неактивні поверхні пропускаються з діагностикою. +- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue значення `id` має бути `"value"`). +- Шляхи провайдерів file і exec завершуються із закритою відмовою, якщо перевірка Windows ACL недоступна. Установлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити. +- Провайдер `exec` вимагає абсолютний шлях `command` і використовує протокольні payload через stdin/stdout. +- Типово шляхи команд-символічних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-символічні посилання, перевіряючи при цьому шлях до розв’язаного цільового об’єкта. +- Якщо налаштовано `trustedDirs`, перевірка trusted-dir застосовується до шляху розв’язаного цільового об’єкта. +- Середовище дочірнього процесу `exec` типово мінімальне; явно передавайте потрібні змінні через `passEnv`. +- Посилання на секрети розв’язуються під час активації в snapshot у пам’яті, після чого шляхи запитів читають лише цей snapshot. +- Під час активації застосовується фільтрація активної поверхні: нерозв’язані посилання на увімкнених поверхнях спричиняють помилку запуску/перезавантаження, а неактивні поверхні пропускаються з діагностикою. --- @@ -802,13 +804,13 @@ Hook-token у рядку запиту відхиляються. } ``` -- Профілі для кожного agent зберігаються в `/auth-profiles.json`. +- Профілі для кожного агента зберігаються в `/auth-profiles.json`. - `auth-profiles.json` підтримує посилання на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних. -- Профілі в режимі OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані профілю auth на основі SecretRef. -- Статичні облікові дані під час виконання надходять із розв’язаних знімків у пам’яті; застарілі статичні записи `auth.json` очищаються під час виявлення. -- Застарілий імпорт OAuth із `~/.openclaw/credentials/oauth.json`. +- Профілі режиму OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef. +- Статичні runtime-облікові дані надходять із розв’язаних snapshot у пам’яті; застарілі статичні записи `auth.json` очищуються, коли їх виявлено. +- Застарілий імпорт OAuth виконується з `~/.openclaw/credentials/oauth.json`. - Див. [OAuth](/uk/concepts/oauth). -- Поведінка runtime для secrets і інструменти `audit/configure/apply`: [Secrets Management](/uk/gateway/secrets). +- Поведінка runtime секретів і інструменти `audit/configure/apply`: [Secrets Management](/uk/gateway/secrets). ### `auth.cooldowns` @@ -830,24 +832,24 @@ Hook-token у рядку запиту відхиляються. } ``` -- `billingBackoffHours`: базовий backoff у годинах, коли профіль зазнає невдачі через справжні - помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст про білінг - усе ще може потрапити сюди навіть у відповідях `401`/`403`, але текстові - зіставлювачі, специфічні для provider, залишаються обмеженими provider, якому вони належать (наприклад, OpenRouter - `Key limit exceeded`). Повторювані повідомлення HTTP `402` про usage-window або - ліміти витрат organization/workspace залишаються в шляху `rate_limit`. -- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин backoff для білінгу на рівні provider. -- `billingMaxHours`: верхня межа в годинах для експоненційного зростання backoff білінгу (типово: `24`). -- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для високовпевнених збоїв `auth_permanent` (типово: `10`). -- `authPermanentMaxMinutes`: верхня межа в хвилинах для зростання backoff `auth_permanent` (типово: `60`). +- `billingBackoffHours`: базовий backoff у годинах, коли профіль завершується невдачею через справжні помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст про білінг + усе ще може потрапити сюди навіть для відповідей `401`/`403`, але + зіставлювачі тексту, специфічні для провайдера, залишаються обмеженими тим провайдером, + якому вони належать (наприклад OpenRouter + `Key limit exceeded`). Повторювані HTTP `402` повідомлення про вікно використання або + ліміти витрат організації/робочого простору замість цього залишаються в шляху `rate_limit`. +- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин backoff білінгу для окремих провайдерів. +- `billingMaxHours`: обмеження в годинах для експоненційного зростання backoff білінгу (типово: `24`). +- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для високодостовірних збоїв `auth_permanent` (типово: `10`). +- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання backoff `auth_permanent` (типово: `60`). - `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників backoff (типово: `24`). -- `overloadedProfileRotations`: максимальна кількість ротацій auth-профілю того самого provider для помилок перевантаження перед переходом до резервної model (типово: `1`). Сюди потрапляють форми перевантаження provider, такі як `ModelNotReadyException`. -- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого provider/profile (типово: `0`). -- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-профілю того самого provider для помилок rate-limit перед переходом до резервної model (типово: `1`). Цей кошик rate-limit включає текст у формі provider, такий як `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`. +- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для перевантажених помилок перед переходом до запасної моделі (типово: `1`). Сюди потрапляють форми зайнятості провайдера, такі як `ModelNotReadyException`. +- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого провайдера/профілю (типово: `0`). +- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для помилок rate-limit перед переходом до запасної моделі (типово: `1`). Цей кошик rate-limit включає текстові форми від провайдера, такі як `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`. --- -## Logging +## Журналювання ```json5 { @@ -864,7 +866,7 @@ Hook-token у рядку запиту відхиляються. - Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`. - Установіть `logging.file` для стабільного шляху. -- `consoleLevel` підвищується до `debug`, коли задано `--verbose`. +- `consoleLevel` підвищується до `debug`, коли використано `--verbose`. - `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого запис пригнічується (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів. --- @@ -911,26 +913,26 @@ Hook-token у рядку запиту відхиляються. ``` - `enabled`: головний перемикач для виводу інструментування (типово: `true`). -- `flags`: масив рядків-прапорців, що вмикають цільовий вивід журналу (підтримуються шаблони з `*`, як-от `"telegram.*"` або `"*"`). -- `stuckSessionWarnMs`: поріг віку в ms для виведення попереджень про завислу session, поки session залишається у стані обробки. +- `flags`: масив рядків прапорців, що вмикають цільовий вивід журналу (підтримує шаблони з підстановками, як-от `"telegram.*"` або `"*"`). +- `stuckSessionWarnMs`: поріг віку в ms для виведення попереджень про завислі сесії, поки сесія залишається у стані обробки. - `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`). -- `otel.endpoint`: URL collector для експорту OTel. +- `otel.endpoint`: URL колектора для експорту OTel. - `otel.protocol`: `"http/protobuf"` (типово) або `"grpc"`. -- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, які надсилаються разом із запитами експорту OTel. -- `otel.serviceName`: назва service для атрибутів ресурсу. -- `otel.traces` / `otel.metrics` / `otel.logs`: увімкнути експорт trace, metrics або logs. -- `otel.sampleRate`: частота семплювання trace `0`–`1`. +- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються із запитами експорту OTel. +- `otel.serviceName`: назва сервісу для атрибутів ресурсу. +- `otel.traces` / `otel.metrics` / `otel.logs`: вмикають експорт трасувань, метрик або журналів. +- `otel.sampleRate`: частота вибірки трасувань `0`–`1`. - `otel.flushIntervalMs`: інтервал періодичного скидання телеметрії в ms. -- `otel.captureContent`: явне вмикання захоплення сирого вмісту для атрибутів span OTEL. Типово вимкнено. Булеве значення `true` захоплює вміст повідомлень/tool без system; форма об’єкта дає змогу явно вмикати `inputMessages`, `outputMessages`, `toolInputs`, `toolOutputs` і `systemPrompt`. -- `OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental`: перемикач середовища для найновіших експериментальних атрибутів provider span GenAI. Типово span зберігають застарілий атрибут `gen_ai.system` для сумісності; метрики GenAI використовують обмежені семантичні атрибути. -- `OPENCLAW_OTEL_PRELOADED=1`: перемикач середовища для хостів, які вже зареєстрували глобальний SDK OpenTelemetry. Тоді OpenClaw пропускає запуск/завершення SDK, яким володіє plugin, зберігаючи активними слухачі діагностики. -- `cacheTrace.enabled`: журналювати знімки cache trace для вбудованих запусків (типово: `false`). +- `otel.captureContent`: необов’язкове ввімкнення захоплення сирого вмісту для атрибутів span OTEL. Типово вимкнено. Булеве значення `true` захоплює вміст не-system повідомлень/інструментів; форма об’єкта дає змогу явно ввімкнути `inputMessages`, `outputMessages`, `toolInputs`, `toolOutputs` і `systemPrompt`. +- `OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental`: перемикач середовища для найновіших експериментальних атрибутів провайдера span GenAI. Типово spans зберігають застарілий атрибут `gen_ai.system` для сумісності; метрики GenAI використовують обмежені семантичні атрибути. +- `OPENCLAW_OTEL_PRELOADED=1`: перемикач середовища для хостів, які вже зареєстрували глобальний SDK OpenTelemetry. Тоді OpenClaw пропускає запуск/завершення SDK, що належить Plugin, зберігаючи активними слухачі діагностики. +- `cacheTrace.enabled`: журналювати snapshot cache trace для вбудованих запусків (типово: `false`). - `cacheTrace.filePath`: шлях виводу для JSONL cache trace (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`). - `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід cache trace (усі типово: `true`). --- -## Update +## Оновлення ```json5 { @@ -948,12 +950,12 @@ Hook-token у рядку запиту відхиляються. } ``` -- `channel`: канал випуску для інсталяцій npm/git — `"stable"`, `"beta"` або `"dev"`. -- `checkOnStart`: перевіряти оновлення npm під час запуску gateway (типово: `true`). -- `auto.enabled`: увімкнути фонове автооновлення для інсталяцій пакетів (типово: `false`). -- `auto.stableDelayHours`: мінімальна затримка в годинах перед автозастосуванням у каналі stable (типово: `6`; макс.: `168`). -- `auto.stableJitterHours`: додаткове вікно розподілу розгортання для каналу stable в годинах (типово: `12`; макс.: `168`). -- `auto.betaCheckIntervalHours`: як часто виконуються перевірки каналу beta в годинах (типово: `1`; макс.: `24`). +- `channel`: канал випуску для встановлень npm/git — `"stable"`, `"beta"` або `"dev"`. +- `checkOnStart`: перевіряти наявність оновлень npm під час запуску gateway (типово: `true`). +- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (типово: `false`). +- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням stable-каналу (типово: `6`; макс.: `168`). +- `auto.stableJitterHours`: додаткове вікно розтягування розгортання stable-каналу в годинах (типово: `12`; макс.: `168`). +- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу в годинах (типово: `1`; макс.: `24`). --- @@ -986,22 +988,22 @@ Hook-token у рядку запиту відхиляються. } ``` -- `enabled`: глобальний feature gate ACP (типово: `false`). -- `dispatch.enabled`: незалежний gate для диспетчеризації ходу session ACP (типово: `true`). Установіть `false`, щоб залишити команди ACP доступними, але блокувати виконання. -- `backend`: id типового backend runtime ACP (має збігатися із зареєстрованим plugin runtime ACP). -- `defaultAgent`: резервний id цільового agent ACP, коли spawn не задає явну ціль. -- `allowedAgents`: allowlist id agent, дозволених для session runtime ACP; порожнє значення означає відсутність додаткових обмежень. -- `maxConcurrentSessions`: максимальна кількість одночасно активних session ACP. -- `stream.coalesceIdleMs`: вікно idle flush у ms для потокового тексту. -- `stream.maxChunkChars`: максимальний розмір chunk перед розбиттям проєкції потокового блоку. -- `stream.repeatSuppression`: пригнічувати повторювані рядки статусу/tool на хід (типово: `true`). -- `stream.deliveryMode`: `"live"` передає поступово; `"final_only"` буферизує до термінальних подій ходу. -- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій tool (типово: `"paragraph"`). -- `stream.maxOutputChars`: максимальна кількість символів виводу assistant, що проєктується на хід ACP. +- `enabled`: глобальний прапорець функції ACP (типово: `false`). +- `dispatch.enabled`: незалежний прапорець для dispatch ходів сесії ACP (типово: `true`). Установіть `false`, щоб залишити команди ACP доступними, але заблокувати виконання. +- `backend`: ідентифікатор типового backend runtime ACP (має збігатися із зареєстрованим plugin runtime ACP). +- `defaultAgent`: резервний цільовий ідентифікатор агента ACP, коли spawn не задають явну ціль. +- `allowedAgents`: список дозволених ідентифікаторів агентів для сесій runtime ACP; порожній означає відсутність додаткових обмежень. +- `maxConcurrentSessions`: максимальна кількість одночасно активних сесій ACP. +- `stream.coalesceIdleMs`: idle-вікно скидання в ms для потокового тексту. +- `stream.maxChunkChars`: максимальний розмір chunk перед розбиттям проєкції потокового блока. +- `stream.repeatSuppression`: пригнічувати повторювані рядки статусу/інструментів на хід (типово: `true`). +- `stream.deliveryMode`: `"live"` передає потоково поступово; `"final_only"` буферизує до термінальних подій ходу. +- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструмента (типово: `"paragraph"`). +- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, що проєктується на один хід ACP. - `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлення ACP. -- `stream.tagVisibility`: запис назв тегів до булевих перевизначень видимості для потокових подій. -- `runtime.ttlMinutes`: idle TTL у хвилинах для працівників session ACP до можливості очищення. -- `runtime.installCommand`: необов’язкова команда встановлення, яку слід виконати під час початкового налаштування середовища runtime ACP. +- `stream.tagVisibility`: запис назв тегів у булеві перевизначення видимості для потокових подій. +- `runtime.ttlMinutes`: idle TTL у хвилинах для працівників сесії ACP до можливого очищення. +- `runtime.installCommand`: необов’язкова команда встановлення для виконання під час bootstrap середовища runtime ACP. --- @@ -1017,17 +1019,17 @@ Hook-token у рядку запиту відхиляються. } ``` -- `cli.banner.taglineMode` керує стилем слогана banner: +- `cli.banner.taglineMode` керує стилем слогана банера: - `"random"` (типово): ротаційні кумедні/сезонні слогани. - `"default"`: фіксований нейтральний слоган (`Усі ваші чати, один OpenClaw.`). - - `"off"`: без тексту слогана (назва/версія banner усе ще показуються). -- Щоб приховати весь banner (а не лише слогани), задайте env `OPENCLAW_HIDE_BANNER=1`. + - `"off"`: без тексту слогана (назва/версія банера все одно показуються). +- Щоб приховати весь банер (а не лише слогани), установіть env `OPENCLAW_HIDE_BANNER=1`. --- ## Wizard -Метадані, які записують керовані CLI потоки налаштування (`onboard`, `configure`, `doctor`): +Метадані, які записуються потоками покрокового налаштування CLI (`onboard`, `configure`, `doctor`): ```json5 { @@ -1045,15 +1047,15 @@ Hook-token у рядку запиту відхиляються. ## Identity -Див. поля ідентичності `agents.list` у [Agent defaults](/uk/gateway/config-agents#agent-defaults). +Див. поля identity у `agents.list` у розділі [Agent defaults](/uk/gateway/config-agents#agent-defaults). --- -## Bridge (застаріло, вилучено) +## Bridge (застарілий, видалений) -Поточні збірки більше не містять TCP bridge. Node підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі). +Поточні збірки більше не містять TCP bridge. Node підключаються через Gateway WebSocket. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде видалено; `openclaw doctor --fix` може прибрати невідомі ключі). - + ```json { @@ -1091,11 +1093,11 @@ Hook-token у рядку запиту відхиляються. } ``` -- `sessionRetention`: як довго зберігати завершені session ізольованих запусків cron перед очищенням із `sessions.json`. Також керує очищенням архівованих видалених транскриптів cron. Типове значення: `24h`; установіть `false`, щоб вимкнути. -- `runLog.maxBytes`: максимальний розмір файла журналу одного запуску (`cron/runs/.jsonl`) перед обрізанням. Типово: `2_000_000` байт. -- `runLog.keepLines`: кількість найновіших рядків, які зберігаються, коли спрацьовує обрізання журналу запуску. Типово: `2000`. -- `webhookToken`: bearer token, що використовується для POST-доставки Webhook Cron (`delivery.mode = "webhook"`); якщо пропущено, заголовок auth не надсилається. -- `webhook`: застаріла резервна URL Webhook (http/https), яка використовується лише для збережених завдань, у яких іще є `notify: true`. +- `sessionRetention`: як довго зберігати завершені ізольовані сесії виконання cron перед очищенням із `sessions.json`. Також керує очищенням заархівованих видалених транскриптів cron. Типове значення: `24h`; установіть `false`, щоб вимкнути. +- `runLog.maxBytes`: максимальний розмір на файл журналу одного запуску (`cron/runs/.jsonl`) перед очищенням. Типове значення: `2_000_000` байтів. +- `runLog.keepLines`: кількість найновіших рядків, що зберігаються, коли спрацьовує очищення журналу запуску. Типове значення: `2000`. +- `webhookToken`: bearer token, що використовується для POST-доставки webhook cron (`delivery.mode = "webhook"`); якщо не задано, заголовок auth не надсилається. +- `webhook`: застаріла резервна URL webhook (http/https), що використовується лише для збережених завдань, які досі мають `notify: true`. ### `cron.retry` @@ -1111,11 +1113,11 @@ Hook-token у рядку запиту відхиляються. } ``` -- `maxAttempts`: максимальна кількість повторів для одноразових завдань при тимчасових помилках (типово: `3`; діапазон: `0`–`10`). -- `backoffMs`: масив затримок backoff у ms для кожної спроби повтору (типово: `[30000, 60000, 300000]`; 1–10 записів). -- `retryOn`: типи помилок, що запускають повтор — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Пропустіть, щоб повторювати всі тимчасові типи. +- `maxAttempts`: максимальна кількість повторів для одноразових завдань за тимчасових помилок (типово: `3`; діапазон: `0`–`10`). +- `backoffMs`: масив затримок backoff у ms для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 1–10 записів). +- `retryOn`: типи помилок, що запускають повтор — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Не задавайте, щоб повторювати для всіх тимчасових типів. -Застосовується лише до одноразових завдань cron. Для повторюваних завдань використовується окрема обробка помилок. +Застосовується лише до одноразових завдань cron. Для повторюваних завдань використовується окрема обробка збоїв. ### `cron.failureAlert` @@ -1133,11 +1135,11 @@ Hook-token у рядку запиту відхиляються. } ``` -- `enabled`: увімкнути попередження про збої для завдань cron (типово: `false`). -- `after`: кількість послідовних збоїв перед спрацюванням попередження (додатне ціле число, мін.: `1`). -- `cooldownMs`: мінімальна кількість мілісекунд між повторними попередженнями для того самого завдання (невід’ємне ціле число). -- `mode`: режим доставки — `"announce"` надсилає через повідомлення channel; `"webhook"` виконує POST на налаштований Webhook. -- `accountId`: необов’язковий id account або channel для обмеження доставки попереджень. +- `enabled`: увімкнути сповіщення про збої для завдань cron (типово: `false`). +- `after`: кількість послідовних збоїв перед спрацюванням сповіщення (додатне ціле число, мін.: `1`). +- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число). +- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` виконує POST на налаштований webhook. +- `accountId`: необов’язковий ідентифікатор облікового запису або каналу для обмеження області доставки сповіщень. ### `cron.failureDestination` @@ -1154,51 +1156,51 @@ Hook-token у рядку запиту відхиляються. } ``` -- Типове призначення для сповіщень про збої cron у всіх завданнях. -- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних цілі. -- `channel`: перевизначення channel для доставки announce. `"last"` повторно використовує останній відомий channel доставки. -- `to`: явна ціль announce або URL Webhook. Обов’язкове для режиму webhook. -- `accountId`: необов’язкове перевизначення account для доставки. -- `delivery.failureDestination` для окремого завдання перевизначає це глобальне типове значення. -- Коли не задано ані глобальне, ані для окремого завдання призначення збоїв, завдання, які вже доставляють через `announce`, у разі збою резервно використовують цю основну ціль announce. +- Типове місце призначення для сповіщень про збої cron для всіх завдань. +- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо цільових даних. +- `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки. +- `to`: явна ціль announce або URL webhook. Обов’язкове для режиму webhook. +- `accountId`: необов’язкове перевизначення облікового запису для доставки. +- `delivery.failureDestination` на рівні завдання перевизначає це глобальне типове значення. +- Коли не задано ні глобальне, ні для окремого завдання місце призначення збою, завдання, які вже доставляють через `announce`, у разі збою повертаються до цієї основної announce-цілі. - `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо тільки основний `delivery.mode` завдання не дорівнює `"webhook"`. Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання cron відстежуються як [background tasks](/uk/automation/tasks). --- -## Змінні шаблону media model +## Змінні шаблону моделі медіа Заповнювачі шаблону, що розгортаються в `tools.media.models[].args`: -| Змінна | Опис | -| ----------------- | ------------------------------------------------- | -| `{{Body}}` | Повний текст вхідного повідомлення | -| `{{RawBody}}` | Сирий текст (без обгорток history/sender) | -| `{{BodyStripped}}`| Текст без згадок у group | -| `{{From}}` | Ідентифікатор відправника | -| `{{To}}` | Ідентифікатор призначення | -| `{{MessageSid}}` | ID повідомлення channel | -| `{{SessionId}}` | UUID поточної session | -| `{{IsNewSession}}`| `"true"`, коли створено нову session | -| `{{MediaUrl}}` | Псевдо-URL вхідного медіа | -| `{{MediaPath}}` | Локальний шлях до медіа | -| `{{MediaType}}` | Тип медіа (image/audio/document/…) | -| `{{Transcript}}` | Транскрипт аудіо | -| `{{Prompt}}` | Розв’язаний media prompt для записів CLI | -| `{{MaxChars}}` | Розв’язана макс. кількість символів виводу для записів CLI | -| `{{ChatType}}` | `"direct"` або `"group"` | -| `{{GroupSubject}}`| Тема group (за можливості) | -| `{{GroupMembers}}`| Попередній перегляд учасників group (за можливості) | -| `{{SenderName}}` | Відображуване ім’я відправника (за можливості) | -| `{{SenderE164}}` | Номер телефону відправника (за можливості) | -| `{{Provider}}` | Підказка provider (`whatsapp`, `telegram`, `discord` тощо) | +| Змінна | Опис | +| ------------------ | --------------------------------------------------- | +| `{{Body}}` | Повний текст вхідного повідомлення | +| `{{RawBody}}` | Сирий текст (без обгорток історії/відправника) | +| `{{BodyStripped}}` | Текст без згадок у групі | +| `{{From}}` | Ідентифікатор відправника | +| `{{To}}` | Ідентифікатор призначення | +| `{{MessageSid}}` | Ідентифікатор повідомлення каналу | +| `{{SessionId}}` | UUID поточної сесії | +| `{{IsNewSession}}` | `"true"`, коли створено нову сесію | +| `{{MediaUrl}}` | Псевдо-URL вхідного медіа | +| `{{MediaPath}}` | Локальний шлях до медіа | +| `{{MediaType}}` | Тип медіа (зображення/аудіо/документ/…) | +| `{{Transcript}}` | Транскрипт аудіо | +| `{{Prompt}}` | Розв’язаний prompt медіа для записів CLI | +| `{{MaxChars}}` | Розв’язана максимальна кількість символів виводу для записів CLI | +| `{{ChatType}}` | `"direct"` або `"group"` | +| `{{GroupSubject}}` | Тема групи (за можливості) | +| `{{GroupMembers}}` | Попередній перегляд учасників групи (за можливості) | +| `{{SenderName}}` | Відображуване ім’я відправника (за можливості) | +| `{{SenderE164}}` | Номер телефону відправника (за можливості) | +| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) | --- -## Include конфігурації (`$include`) +## Включення конфігурації (`$include`) -Розділяйте конфігурацію на кілька файлів: +Розділіть конфігурацію на кілька файлів: ```json5 // ~/.openclaw/openclaw.json @@ -1213,20 +1215,20 @@ Hook-token у рядку запиту відхиляються. **Поведінка злиття:** -- Один файл: замінює об’єкт-контейнер. -- Масив файлів: глибоко зливається за порядком (пізніші перевизначають раніші). -- Сусідні ключі: зливаються після include (перевизначають включені значення). -- Вкладені include: до 10 рівнів глибини. -- Шляхи: розв’язуються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/`../` дозволені лише тоді, коли після розв’язання вони все одно залишаються в межах цієї границі. -- Записи OpenClaw, які змінюють лише один розділ верхнього рівня, підкріплений include одного файла, записуються безпосередньо в цей включений файл. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін. -- Кореневі include, масиви include та include із сусідніми перевизначеннями доступні лише для читання для записів OpenClaw; такі записи завершуються в закритому режимі замість сплощення конфігурації. -- Помилки: зрозумілі повідомлення для відсутніх файлів, помилок розбору та циклічних include. +- Один файл: замінює об’єкт, що містить включення. +- Масив файлів: глибоко зливається за порядком (пізніші значення перевизначають ранніші). +- Сусідні ключі: зливаються після включень (перевизначають включені значення). +- Вкладені включення: до 10 рівнів глибини. +- Шляхи: розв’язуються відносно файла, що виконує включення, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` від `openclaw.json`). Абсолютні форми/`../` дозволені лише тоді, коли вони все одно розв’язуються в межах цієї межі. +- Записи, керовані OpenClaw, які змінюють лише один розділ верхнього рівня, підкріплений включенням одного файла, записуються безпосередньо до цього включеного файла. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін. +- Кореневі включення, масиви включень і включення з перевизначеннями сусідніх ключів є доступними лише для читання для записів, керованих OpenClaw; такі записи завершуються із закритою відмовою замість сплощення конфігурації. +- Помилки: чіткі повідомлення для відсутніх файлів, помилок розбору та циклічних включень. --- _Пов’язано: [Configuration](/uk/gateway/configuration) · [Configuration Examples](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_ -## Пов’язано +## Пов’язане - [Configuration](/uk/gateway/configuration) -- [Приклади Configuration](/uk/gateway/configuration-examples) +- [Configuration examples](/uk/gateway/configuration-examples) diff --git a/docs/uk/install/updating.md b/docs/uk/install/updating.md index f8cc14699..7018b32b4 100644 --- a/docs/uk/install/updating.md +++ b/docs/uk/install/updating.md @@ -1,14 +1,14 @@ --- read_when: - Оновлення OpenClaw - - Щось ламається після оновлення + - Після оновлення щось ламається summary: Безпечне оновлення OpenClaw (глобальне встановлення або з вихідного коду), а також стратегія відкату title: Оновлення x-i18n: - generated_at: "2026-04-25T01:02:39Z" + generated_at: "2026-04-25T20:13:30Z" model: gpt-5.4 provider: openai - source_hash: af88eaa285145dd5fc370b28c0f9d91069b815c75ec416df726cfce4271a6b54 + source_hash: edb0fb8514130fbac2d5300dbfef85b8cfea8fafb80cc644eb9054f94131a6d4 source_path: install/updating.md workflow: 15 --- @@ -17,13 +17,13 @@ x-i18n: ## Рекомендовано: `openclaw update` -Найшвидший спосіб оновлення. Команда визначає тип вашого встановлення (npm або git), отримує найновішу версію, запускає `openclaw doctor` і перезапускає Gateway. +Найшвидший спосіб оновлення. Команда визначає тип встановлення (npm або git), отримує найновішу версію, запускає `openclaw doctor` і перезапускає Gateway. ```bash openclaw update ``` -Щоб перемкнути канали або вказати конкретну версію: +Щоб переключити канал або вказати конкретну версію: ```bash openclaw update --channel beta @@ -31,9 +31,9 @@ openclaw update --tag main openclaw update --dry-run # попередній перегляд без застосування ``` -`--channel beta` надає перевагу beta, але середовище виконання повертається до stable/latest, якщо тег beta відсутній або старіший за найновіший stable-реліз. Використовуйте `--tag beta`, якщо вам потрібен сирий npm dist-tag beta для одноразового оновлення пакета. +`--channel beta` віддає перевагу beta, але середовище виконання повертається до stable/latest, якщо тег beta відсутній або старіший за найновіший стабільний реліз. Використовуйте `--tag beta`, якщо вам потрібен сирий npm dist-tag beta для одноразового оновлення пакета. -Перегляньте [Канали розробки](/uk/install/development-channels), щоб дізнатися про семантику каналів. +Семантику каналів дивіться в [Канали розробки](/uk/install/development-channels). ## Альтернатива: повторно запустити інсталятор @@ -59,11 +59,11 @@ bun add -g openclaw@latest ### Глобальні встановлення npm і залежності середовища виконання -OpenClaw розглядає упаковані глобальні встановлення як доступні лише для читання під час виконання, навіть якщо каталог глобального пакета доступний на запис для поточного користувача. Залежності середовища виконання для вбудованих Plugin розміщуються в каталозі середовища виконання з правом запису замість зміни дерева пакетів. Це запобігає конфлікту `openclaw update` із запущеним Gateway або локальним агентом, який відновлює залежності Plugin під час того самого встановлення. +OpenClaw розглядає пакетні глобальні встановлення як доступні лише для читання під час виконання, навіть якщо каталог глобального пакета доступний на запис для поточного користувача. Залежності середовища виконання для вбудованих Plugin розміщуються у доступному для запису каталозі середовища виконання замість зміни дерева пакета. Це запобігає ситуації, коли `openclaw update` конфліктує з уже запущеним Gateway або локальним агентом, який відновлює залежності Plugin під час того самого встановлення. У деяких конфігураціях Linux npm глобальні пакети встановлюються в каталоги, що належать root, наприклад `/usr/lib/node_modules/openclaw`. OpenClaw підтримує таку схему через той самий зовнішній шлях розміщення. -Для захищених модулів systemd задайте каталог розміщення з правом запису, який включено до `ReadWritePaths`: +Для захищених модулів systemd задайте каталог розміщення з доступом на запис, який включено до `ReadWritePaths`: ```ini Environment=OPENCLAW_PLUGIN_STAGE_DIR=/var/lib/openclaw/plugin-runtime-deps @@ -71,16 +71,17 @@ ReadWritePaths=/var/lib/openclaw /home/openclaw/.openclaw /tmp ``` Якщо `OPENCLAW_PLUGIN_STAGE_DIR` не задано, OpenClaw використовує `$STATE_DIRECTORY`, якщо його надає systemd, а потім повертається до `~/.openclaw/plugin-runtime-deps`. +Під час відновлення цей каталог розміщення розглядається як локальний кореневий каталог пакета, керований OpenClaw, і ігноруються користувацькі налаштування npm prefix/global, тому конфігурація npm для глобального встановлення не перенаправляє залежності середовища виконання вбудованих Plugin до `~/node_modules` або дерева глобального пакета. -### Залежності середовища виконання для вбудованих Plugin +### Залежності середовища виконання вбудованих Plugin -Упаковані встановлення зберігають залежності середовища виконання для вбудованих Plugin поза деревом пакетів, доступним лише для читання. Під час запуску та під час `openclaw doctor --fix` OpenClaw відновлює залежності середовища виконання лише для тих вбудованих Plugin, які активні в конфігурації, активні через застарілу конфігурацію каналів або увімкнені типовим значенням у своєму вбудованому маніфесті. +У пакетних встановленнях залежності середовища виконання вбудованих Plugin зберігаються поза деревом пакета, доступним лише для читання. Під час запуску та під час `openclaw doctor --fix` OpenClaw відновлює залежності середовища виконання лише для тих вбудованих Plugin, які активні в конфігурації, активні через застарілу конфігурацію каналу або увімкнені типовим значенням у своєму вбудованому маніфесті. -Явне вимкнення має пріоритет. Для вимкненого Plugin або каналу залежності середовища виконання не відновлюються лише тому, що він існує в пакеті. Зовнішні Plugin і користувацькі шляхи завантаження, як і раніше, використовують `openclaw plugins install` або `openclaw plugins update`. +Явне вимкнення має пріоритет. Для вимкненого Plugin або каналу залежності середовища виконання не відновлюються лише тому, що він існує в пакеті. Зовнішні Plugin і власні шляхи завантаження, як і раніше, використовують `openclaw plugins install` або `openclaw plugins update`. ## Автооновлювач -Автооновлювач вимкнено за замовчуванням. Увімкніть його в `~/.openclaw/openclaw.json`: +Автооновлювач за замовчуванням вимкнено. Увімкніть його в `~/.openclaw/openclaw.json`: ```json5 { @@ -96,11 +97,11 @@ ReadWritePaths=/var/lib/openclaw /home/openclaw/.openclaw /tmp } ``` -| Канал | Поведінка | +| Канал | Поведінка | | -------- | ------------------------------------------------------------------------------------------------------------- | | `stable` | Чекає `stableDelayHours`, а потім застосовує з детермінованим зміщенням у межах `stableJitterHours` (поступове розгортання). | -| `beta` | Перевіряє кожні `betaCheckIntervalHours` (типово: щогодини) і застосовує негайно. | -| `dev` | Автоматичне застосування відсутнє. Використовуйте `openclaw update` вручну. | +| `beta` | Перевіряє кожні `betaCheckIntervalHours` (типово: щогодини) і застосовує негайно. | +| `dev` | Автоматичне застосування відсутнє. Використовуйте `openclaw update` вручну. | Gateway також записує підказку про оновлення під час запуску (вимикається через `update.checkOnStart: false`). @@ -114,7 +115,7 @@ Gateway також записує підказку про оновлення п openclaw doctor ``` -Мігрує конфігурацію, перевіряє політики DM і перевіряє стан Gateway. Докладніше: [Doctor](/uk/gateway/doctor) +Мігрує конфігурацію, перевіряє політики DM і стан Gateway. Подробиці: [Doctor](/uk/gateway/doctor) ### Перезапустіть Gateway @@ -132,7 +133,7 @@ openclaw health ## Відкат -### Зафіксувати версію (npm) +### Зафіксуйте версію (npm) ```bash npm i -g openclaw@ @@ -142,7 +143,7 @@ openclaw gateway restart Порада: `npm view openclaw version` показує поточну опубліковану версію. -### Зафіксувати коміт (вихідний код) +### Зафіксуйте коміт (вихідний код) ```bash git fetch origin @@ -151,13 +152,13 @@ pnpm install && pnpm build openclaw gateway restart ``` -Щоб повернутися до latest: `git checkout main && git pull`. +Щоб повернутися до найновішої версії: `git checkout main && git pull`. ## Якщо ви не можете просунутися далі -- Знову запустіть `openclaw doctor` і уважно прочитайте вивід. -- Для `openclaw update --channel dev` у вихідних checkout-ах оновлювач автоматично завантажує `pnpm`, якщо потрібно. Якщо ви бачите помилку завантаження pnpm/corepack, установіть `pnpm` вручну (або знову увімкніть `corepack`) і повторно запустіть оновлення. -- Перегляньте: [Усунення несправностей](/uk/gateway/troubleshooting) +- Ще раз запустіть `openclaw doctor` і уважно прочитайте вивід. +- Для `openclaw update --channel dev` у checkout із вихідного коду засіб оновлення автоматично завантажує `pnpm`, коли це потрібно. Якщо з’являється помилка початкового налаштування pnpm/corepack, установіть `pnpm` вручну (або знову ввімкніть `corepack`) і повторно запустіть оновлення. +- Дивіться: [Усунення несправностей](/uk/gateway/troubleshooting) - Запитайте в Discord: [https://discord.gg/clawd](https://discord.gg/clawd) ## Пов’язане diff --git a/docs/uk/nodes/talk.md b/docs/uk/nodes/talk.md index 2ddee17cb..e5d86a763 100644 --- a/docs/uk/nodes/talk.md +++ b/docs/uk/nodes/talk.md @@ -1,14 +1,14 @@ --- read_when: - Реалізація режиму розмови на macOS/iOS/Android - - Зміна поведінки голосу/TTS/переривання -summary: 'Режим розмови: безперервні голосові розмови з налаштованими TTS-провайдерами' + - Зміна голосу/TTS/поведінки переривання +summary: 'Режим розмови: безперервні голосові розмови з налаштованими постачальниками TTS' title: Режим розмови x-i18n: - generated_at: "2026-04-25T19:17:37Z" + generated_at: "2026-04-25T20:13:30Z" model: gpt-5.4 provider: openai - source_hash: 5f2130c58870000faa6c818587f4a487948f189b777426a81764e37c39204f51 + source_hash: afdddaa81c0a09076eaeeafd25295b0c02681f03b273ec4afe4ea2afa692dc2a source_path: nodes/talk.md workflow: 15 --- @@ -18,19 +18,19 @@ x-i18n: 1. Слухати мовлення 2. Надіслати транскрипт моделі (основна сесія, `chat.send`) 3. Дочекатися відповіді -4. Озвучити її через налаштованого Talk-провайдера (`talk.speak`) +4. Озвучити її через налаштованого постачальника Talk (`talk.speak`) ## Поведінка (macOS) -- **Завжди активне накладання** під час увімкненого режиму розмови. -- Переходи між фазами **Listening → Thinking → Speaking**. -- Після **короткої паузи** (вікно тиші) поточний транскрипт надсилається. -- Відповіді **записуються у WebChat** (так само, як і під час введення з клавіатури). -- **Переривання під час мовлення** (увімкнено за замовчуванням): якщо користувач починає говорити, поки асистент говорить, ми зупиняємо відтворення та позначаємо часову мітку переривання для наступного запиту. +- **Постійно активне накладання** під час увімкненого режиму розмови. +- Переходи між фазами **Слухання → Обмірковування → Озвучення**. +- Під час **короткої паузи** (вікно тиші) поточний транскрипт надсилається. +- Відповіді **записуються до WebChat** (так само, як під час введення). +- **Переривання під час мовлення** (увімкнено за замовчуванням): якщо користувач починає говорити, поки асистент озвучує відповідь, ми зупиняємо відтворення та фіксуємо часову позначку переривання для наступного запиту. ## Голосові директиви у відповідях -Асистент може додати на початок своєї відповіді **один рядок JSON**, щоб керувати голосом: +Асистент може додати на початку своєї відповіді **один рядок JSON**, щоб керувати голосом: ```json { "voice": "", "once": true } @@ -42,13 +42,13 @@ x-i18n: - Невідомі ключі ігноруються. - `once: true` застосовується лише до поточної відповіді. - Без `once` голос стає новим голосом за замовчуванням для режиму розмови. -- Рядок JSON видаляється перед TTS-відтворенням. +- Рядок JSON видаляється перед відтворенням TTS. Підтримувані ключі: - `voice` / `voice_id` / `voiceId` - `model` / `model_id` / `modelId` -- `speed`, `rate` (слів за хвилину), `stability`, `similarity`, `style`, `speakerBoost` +- `speed`, `rate` (WPM), `stability`, `similarity`, `style`, `speakerBoost` - `seed`, `normalize`, `lang`, `output_format`, `latency_tier` - `once` @@ -70,6 +70,7 @@ x-i18n: }, system: {}, }, + speechLocale: "ru-RU", silenceTimeoutMs: 1500, interruptOnSpeech: true, }, @@ -79,44 +80,45 @@ x-i18n: Значення за замовчуванням: - `interruptOnSpeech`: true -- `silenceTimeoutMs`: якщо не задано, Talk використовує стандартне для платформи вікно паузи перед надсиланням транскрипту (`700 ms` на macOS і Android, `900 ms` на iOS) -- `provider`: вибирає активного Talk-провайдера. Використовуйте `elevenlabs`, `mlx` або `system` для локальних шляхів відтворення на macOS. -- `providers..voiceId`: використовує `ELEVENLABS_VOICE_ID` / `SAG_VOICE_ID` для ElevenLabs як резервне значення (або перший голос ElevenLabs, якщо доступний API-ключ). +- `silenceTimeoutMs`: якщо не задано, Talk зберігає стандартне для платформи вікно паузи перед надсиланням транскрипту (`700 ms` на macOS і Android, `900 ms` на iOS) +- `provider`: вибирає активного постачальника Talk. Використовуйте `elevenlabs`, `mlx` або `system` для локальних шляхів відтворення на macOS. +- `providers..voiceId`: резервно використовує `ELEVENLABS_VOICE_ID` / `SAG_VOICE_ID` для ElevenLabs (або перший голос ElevenLabs, якщо доступний ключ API). - `providers.elevenlabs.modelId`: якщо не задано, за замовчуванням використовується `eleven_v3`. - `providers.mlx.modelId`: якщо не задано, за замовчуванням використовується `mlx-community/Soprano-80M-bf16`. -- `providers.elevenlabs.apiKey`: використовує `ELEVENLABS_API_KEY` як резервне значення (або профіль shell шлюзу, якщо доступний). -- `outputFormat`: за замовчуванням `pcm_44100` на macOS/iOS і `pcm_24000` на Android (вкажіть `mp3_*`, щоб примусово використовувати MP3-потік) +- `providers.elevenlabs.apiKey`: резервно використовує `ELEVENLABS_API_KEY` (або профіль оболонки Gateway, якщо доступний). +- `speechLocale`: необов’язковий ідентифікатор локалі BCP 47 для розпізнавання мовлення Talk на пристрої на iOS/macOS. Залиште незаданим, щоб використовувати локаль пристрою за замовчуванням. +- `outputFormat`: за замовчуванням `pcm_44100` на macOS/iOS і `pcm_24000` на Android (встановіть `mp3_*`, щоб примусово використовувати MP3-потік) -## Інтерфейс macOS +## UI macOS - Перемикач у рядку меню: **Talk** - Вкладка конфігурації: група **Talk Mode** (ідентифікатор голосу + перемикач переривання) - Накладання: - - **Listening**: пульсація хмари з рівнем мікрофона - - **Thinking**: анімація занурення - - **Speaking**: розходження концентричних кілець + - **Слухання**: хмара пульсує відповідно до рівня мікрофона + - **Обмірковування**: анімація занурення + - **Озвучення**: кільця, що розходяться - Натисніть на хмару: зупинити озвучення - Натисніть X: вийти з режиму розмови -## Інтерфейс Android +## UI Android -- Перемикач на вкладці Voice: **Talk** -- Ручні режими захоплення **Mic** і **Talk** є взаємовиключними під час виконання. +- Перемикач на вкладці голосу: **Talk** +- Ручні режими **Mic** і **Talk** є взаємовиключними режимами захоплення під час виконання. - Ручний Mic зупиняється, коли застосунок виходить із переднього плану або користувач залишає вкладку Voice. -- Talk Mode продовжує працювати, доки його не буде вимкнено або доки Android Node не від’єднається, і під час активності використовує тип foreground service мікрофона Android. +- Talk Mode продовжує працювати, доки його не буде вимкнено або доки не від’єднається Android Node, і під час активності використовує тип foreground service мікрофона Android. ## Примітки - Потрібні дозволи на Speech і Microphone. - Використовує `chat.send` для ключа сесії `main`. -- Шлюз виконує відтворення Talk через `talk.speak` з використанням активного Talk-провайдера. Android переходить на локальний системний TTS лише тоді, коли цей RPC недоступний. -- Локальне відтворення MLX на macOS використовує вбудований допоміжний інструмент `openclaw-mlx-tts`, якщо він є, або виконуваний файл у `PATH`. Під час розробки встановіть `OPENCLAW_MLX_TTS_BIN`, щоб указати на власний допоміжний бінарний файл. +- Gateway виконує відтворення Talk через `talk.speak` з використанням активного постачальника Talk. Android резервно використовує лише локальний системний TTS, якщо цей RPC недоступний. +- Локальне відтворення MLX на macOS використовує вбудований допоміжний інструмент `openclaw-mlx-tts`, якщо він наявний, або виконуваний файл у `PATH`. Встановіть `OPENCLAW_MLX_TTS_BIN`, щоб указати власний допоміжний бінарний файл під час розробки. - `stability` для `eleven_v3` перевіряється на значення `0.0`, `0.5` або `1.0`; інші моделі приймають `0..1`. - `latency_tier` перевіряється в діапазоні `0..4`, якщо задано. - Android підтримує формати виводу `pcm_16000`, `pcm_22050`, `pcm_24000` і `pcm_44100` для низьколатентного потокового відтворення через AudioTrack. ## Пов’язане -- [Активація голосом](/uk/nodes/voicewake) +- [Голосова активація](/uk/nodes/voicewake) - [Аудіо та голосові нотатки](/uk/nodes/audio) - [Розуміння медіа](/uk/nodes/media-understanding)