diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md
index fd38426c8..71fa15d4c 100644
--- a/docs/uk/gateway/configuration-reference.md
+++ b/docs/uk/gateway/configuration-reference.md
@@ -1,70 +1,70 @@
---
read_when:
- - Вам потрібні точні семантики полів конфігурації або значення за замовчуванням
+ - Вам потрібні точні семантичні значення полів конфігурації або значення за замовчуванням
- Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструмента
-summary: Довідник із конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
-title: Довідник із конфігурації
+summary: Довідник з конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
+title: Довідник з конфігурації
x-i18n:
- generated_at: "2026-04-21T02:12:36Z"
+ generated_at: "2026-04-21T04:43:46Z"
model: gpt-5.4
provider: openai
- source_hash: e50315811f2ba31d325983397ffbd0f71c6e5e95a58a4412b62ebb969b50a3db
+ source_hash: 1ce4b2cc50eead5411134eead2e7943ec5dab3b1a9d6772adcd422a721df5071
source_path: gateway/configuration-reference.md
workflow: 15
---
-# Довідник із конфігурації
+# Довідник з конфігурації
-Основний довідник із конфігурації для `~/.openclaw/openclaw.json`. Огляд, орієнтований на завдання, див. у [Configuration](/uk/gateway/configuration).
+Основний довідник з конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration).
-Ця сторінка охоплює основні поверхні конфігурації OpenClaw і містить посилання назовні, коли підсистема має власний, глибший довідник. Вона **не** намагається вбудувати на одній сторінці кожен каталог команд, що належить каналу/Plugin, або кожен глибокий параметр пам’яті/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 відносно поточної поверхні схеми
Окремі глибокі довідники:
-- [Довідник із конфігурації пам’яті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації dreaming у `plugins.entries.memory-core.config.dreaming`
+- [Довідник з конфігурації пам’яті](/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 каталогу команд
-- сторінки відповідних каналів/Plugin для поверхонь команд, специфічних для каналу
+- сторінки відповідного каналу/Plugin для поверхонь команд, специфічних для каналу
-Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
+Формат конфігурації — **JSON5** (дозволено коментарі + кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не вказано.
---
## Канали
-Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`).
+Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не вказано `enabled: false`).
### Доступ до DM і груп
Усі канали підтримують політики DM і політики груп:
-| Політика DM | Поведінка |
-| ------------------- | -------------------------------------------------------------- |
+| Політика DM | Поведінка |
+| ------------------- | --------------------------------------------------------------- |
| `pairing` (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
-| `allowlist` | Лише відправники в `allowFrom` (або в paired allow store) |
-| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) |
-| `disabled` | Ігнорувати всі вхідні DM |
+| `allowlist` | Лише відправники з `allowFrom` (або зі сховища дозволів сполучення) |
+| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) |
+| `disabled` | Ігнорувати всі вхідні DM |
-| Політика груп | Поведінка |
-| -------------------- | ----------------------------------------------------- |
-| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволених |
-| `open` | Обійти списки дозволених для груп (gate за згадуваннями все ще застосовується) |
-| `disabled` | Блокувати всі повідомлення груп/кімнат |
+| Політика груп | Поведінка |
+| --------------------- | ------------------------------------------------------ |
+| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволів |
+| `open` | Обійти списки дозволів груп (обмеження за згадками все одно застосовується) |
+| `disabled` | Блокувати всі повідомлення груп/кімнат |
`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` провайдера не встановлено.
-Коди сполучення спливають через 1 годину. Кількість очікувальних запитів на DM pairing обмежена **3 на канал**.
-Якщо блок провайдера відсутній повністю (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) з попередженням під час запуску.
+Коди сполучення дійсні протягом 1 години. Кількість очікуваних запитів на сполучення DM обмежена **3 на канал**.
+Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (відмова за замовчуванням) із попередженням під час запуску.
### Перевизначення моделі для каналу
-Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ідентифікатори каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Це зіставлення каналу застосовується, коли сеанс ще не має перевизначення моделі (наприклад, установленого через `/model`).
+Використовуйте `channels.modelByChannel`, щоб жорстко прив’язати конкретні ID каналів до моделі. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Прив’язка каналу застосовується, коли сеанс ще не має перевизначення моделі (наприклад, установленого через `/model`).
```json5
{
@@ -87,7 +87,7 @@ x-i18n:
### Значення каналів за замовчуванням і Heartbeat
-Використовуйте `channels.defaults` для спільної поведінки політики груп і Heartbeat у різних провайдерів:
+Використовуйте `channels.defaults` для спільної поведінки політики груп і Heartbeat між провайдерами:
```json5
{
@@ -106,14 +106,14 @@ x-i18n:
```
- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні провайдера не встановлено.
-- `channels.defaults.contextVisibility`: режим типової видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включати весь процитований/потоковий/історичний контекст), `allowlist` (включати контекст лише від відправників зі списку дозволених), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`.
-- `channels.defaults.heartbeat.showOk`: включати стани справних каналів у вивід Heartbeat.
-- `channels.defaults.heartbeat.showAlerts`: включати стани деградації/помилок у вивід Heartbeat.
+- `channels.defaults.contextVisibility`: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення: `all` (типово, включати весь контекст цитат/гілок/історії), `allowlist` (включати контекст лише від відправників зі списку дозволів), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для окремого каналу: `channels..contextVisibility`.
+- `channels.defaults.heartbeat.showOk`: включати статуси справних каналів у вивід Heartbeat.
+- `channels.defaults.heartbeat.showAlerts`: включати деградовані/помилкові статуси у вивід Heartbeat.
- `channels.defaults.heartbeat.useIndicator`: відображати компактний вивід Heartbeat у стилі індикатора.
### WhatsApp
-WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує пов’язаний сеанс.
+WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує прив’язаний сеанс.
```json5
{
@@ -164,9 +164,9 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-- Вихідні команди типово використовують обліковий запис `default`, якщо він є; інакше — перший налаштований ідентифікатор облікового запису (відсортований).
-- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає це резервне вибирання типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
-- Застарілий каталог автентифікації Baileys для одного облікового запису переноситься командою `openclaw doctor` у `whatsapp/default`.
+- Команди на вихід типово використовують обліковий запис `default`, якщо він існує; інакше — перший налаштований ID облікового запису (після сортування).
+- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
+- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується командою `openclaw doctor` до `whatsapp/default`.
- Перевизначення для окремого облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`.
@@ -202,7 +202,7 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
historyLimit: 50,
replyToMode: "first", // off | first | all | batched
linkPreview: true,
- streaming: "partial", // off | partial | block | progress (типово: off; вмикайте явно, щоб уникнути лімітів частоти на редагування попереднього перегляду)
+ streaming: "partial", // off | partial | block | progress (default: off; opt in explicitly to avoid preview-edit rate limits)
actions: { reactions: true, sendMessage: true },
reactionNotifications: "own", // off | own | all
mediaMaxMb: 100,
@@ -225,13 +225,13 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символічні посилання відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для типового облікового запису.
-- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
-- У багатооблікових конфігураціях (2+ ідентифікатори облікових записів) установіть явний типовий обліковий запис (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, коли цього бракує або значення недійсне.
-- `configWrites: false` блокує ініційовані з Telegram записи в конфігурацію (міграції ID supergroup, `/config set|unset`).
-- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів є спільною в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-- Попередній перегляд потоків Telegram використовує `sendMessage` + `editMessageText` (працює у прямих і групових чатах).
-- Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry).
+- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; символьні посилання відхиляються), із резервним варіантом `TELEGRAM_BOT_TOKEN` для типового облікового запису.
+- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
+- У багатооблікових конфігураціях (2+ ID облікових записів) установіть явний типовий обліковий запис (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо цього немає або значення некоректне.
+- `configWrites: false` блокує ініційовані Telegram записи конфігурації (міграції ID supergroup, `/config set|unset`).
+- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- Попередній перегляд потоків Telegram використовує `sendMessage` + `editMessageText` (працює в особистих і групових чатах).
+- Політика повторів: див. [Політика повторів](/uk/concepts/retry).
### Discord
@@ -286,7 +286,7 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
historyLimit: 20,
textChunkLimit: 2000,
chunkMode: "length", // length | newline
- streaming: "off", // off | partial | block | progress (progress зіставляється з partial у Discord)
+ streaming: "off", // off | partial | block | progress (progress maps to partial on Discord)
maxLinesPerMessage: 17,
ui: {
components: {
@@ -333,36 +333,36 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для типового облікового запису.
-- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
-- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
-- Використовуйте `user:` (DM) або `channel:` (канал guild) як цілі доставки; прості числові ID відхиляються.
-- Slug-и guild мають нижній регістр, а пробіли замінюються на `-`; ключі каналів використовують slug-овану назву (без `#`). Надавайте перевагу ID guild.
+- Токен: `channels.discord.token`, із резервним варіантом `DISCORD_BOT_TOKEN` для типового облікового запису.
+- Прямі вихідні виклики, які надають явний Discord `token`, використовують цей токен для виклику; налаштування повторів/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку стану runtime.
+- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
+- Для цілей доставки використовуйте `user:` (DM) або `channel:` (канал guild); звичайні числові ID відхиляються.
+- Slug-и guild мають нижній регістр, а пробіли в них замінюються на `-`; ключі каналів використовують slug-ім’я (без `#`). Надавайте перевагу ID guild.
- Повідомлення, створені ботом, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються).
-- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналу) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here).
-- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення навіть тоді, коли вони мають менше ніж 2000 символів.
-- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до потоків Discord:
- - `enabled`: перевизначення Discord для функцій сеансів, прив’язаних до потоку (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також прив’язана доставка/маршрутизація)
+- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення на рівні каналу) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here).
+- `maxLinesPerMessage` (типово 17) розбиває довгі за висотою повідомлення, навіть якщо вони не перевищують 2000 символів.
+- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до гілок Discord:
+ - `enabled`: перевизначення Discord для функцій сеансів, прив’язаних до гілок (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також пов’язана доставка/маршрутизація)
- `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає)
- `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає)
- - `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив’язування потоків у `sessions_spawn({ thread: true })`
-- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і потоків (використовуйте id каналу/потоку в `match.peer.id`). Семантика полів є спільною в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-- `channels.discord.ui.components.accentColor` задає колір акценту для контейнерів компонентів Discord v2.
+ - `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив’язки гілок у `sessions_spawn({ thread: true })`
+- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для каналів і гілок (використовуйте id каналу/гілки в `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- `channels.discord.ui.components.accentColor` задає колір акценту для контейнерів Discord components v2.
- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов’язкові перевизначення auto-join + TTS.
-- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються в параметри DAVE `@discordjs/voice` (типово `true` і `24`).
-- OpenClaw також додатково намагається відновити прийом голосу, виходячи та повторно приєднуючись до голосового сеансу після повторних збоїв дешифрування.
-- `channels.discord.streaming` — це канонічний ключ режиму потоку. Застарілі значення `streamMode` і булеві `streaming` автоматично мігруються.
-- `channels.discord.autoPresence` зіставляє доступність runtime із присутністю бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.
-- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінними name/tag (режим сумісності break-glass).
-- `channels.discord.execApprovals`: Discord-native доставка схвалень exec і авторизація тих, хто схвалює.
- - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto схвалення exec активуються, коли тих, хто схвалює, можна визначити з `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Discord, яким дозволено схвалювати exec-запити. Якщо значення пропущено, використовується `commands.ownerAllowFrom`.
- - `agentFilter`: необов’язковий список дозволених ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
- - `sessionFilter`: необов’язкові шаблони ключів сеансу (підрядок або regex).
- - `target`: куди надсилати запити на схвалення. `"dm"` (типово) надсилає в DM тих, хто схвалює, `"channel"` надсилає у вихідний канал, `"both"` надсилає в обидва місця. Коли target включає `"channel"`, кнопки можуть використовувати лише визначені учасники, які схвалюють.
- - `cleanupAfterResolve`: коли `true`, видаляє DM зі схваленням після схвалення, відхилення або тайм-ауту.
+- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються до параметрів DAVE у `@discordjs/voice` (`true` і `24` типово).
+- OpenClaw додатково намагається відновити приймання голосу, виходячи з голосового сеансу та повторно приєднуючись після повторних збоїв дешифрування.
+- `channels.discord.streaming` — канонічний ключ режиму потоку. Застарілі значення `streamMode` і логічні значення `streaming` мігруються автоматично.
+- `channels.discord.autoPresence` відображає доступність runtime у присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.
+- `channels.discord.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінюваними іменами/теґами (аварійний режим сумісності).
+- `channels.discord.execApprovals`: нативна для Discord доставка схвалень exec і авторизація тих, хто може схвалювати.
+ - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto схвалення exec активуються, коли тих, хто може схвалювати, можна визначити через `approvers` або `commands.ownerAllowFrom`.
+ - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо не вказано, використовується `commands.ownerAllowFrom`.
+ - `agentFilter`: необов’язковий список дозволених ID агентів. Не вказуйте, щоб пересилати схвалення для всіх агентів.
+ - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
+ - `target`: куди надсилати запити на схвалення. `"dm"` (типово) надсилає в DM тим, хто може схвалювати, `"channel"` надсилає у вихідний канал, `"both"` надсилає в обидва місця. Коли target включає `"channel"`, кнопки можуть використовувати лише визначені особи, що можуть схвалювати.
+ - `cleanupAfterResolve`: якщо `true`, видаляє DM зі схваленням після схвалення, відхилення або тайм-ауту.
-**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (від `guilds..users` для всіх повідомлень).
+**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (із `guilds..users` для всіх повідомлень).
### Google Chat
@@ -393,11 +393,11 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-- JSON сервісного облікового запису: inline (`serviceAccount`) або через файл (`serviceAccountFile`).
-- Також підтримується SecretRef сервісного облікового запису (`serviceAccountRef`).
+- JSON облікового запису служби: вбудований (`serviceAccount`) або на основі файла (`serviceAccountFile`).
+- Також підтримується SecretRef облікового запису служби (`serviceAccountRef`).
- Резервні змінні середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
-- Використовуйте `spaces/` або `users/` як цілі доставки.
-- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінним email principal (режим сумісності break-glass).
+- Для цілей доставки використовуйте `spaces/` або `users/`.
+- `channels.googlechat.dangerouslyAllowNameMatching` повторно вмикає зіставлення за змінюваним email principal (аварійний режим сумісності).
### Slack
@@ -449,7 +449,7 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
chunkMode: "length",
streaming: {
mode: "partial", // off | partial | block | progress
- nativeTransport: true, // використовувати native streaming API Slack, коли mode=partial
+ nativeTransport: true, // use Slack native streaming API when mode=partial
},
mediaMaxMb: 20,
execApprovals: {
@@ -464,35 +464,35 @@ WhatsApp працює через вебканал Gateway (Baileys Web). Він
}
```
-- **Socket mode** вимагає і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного env-варіанта типового облікового запису).
-- **HTTP mode** вимагає `botToken` плюс `signingSecret` (у корені або для конкретного облікового запису).
-- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
+- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` для резервного варіанта через змінні середовища типового облікового запису).
+- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для окремого облікового запису).
+- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні текстові
рядки або об’єкти SecretRef.
-- Знімки облікових записів Slack показують поля джерела/статусу для кожного облікового запису, такі як
- `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, у режимі HTTP,
+- Знімки облікових записів Slack показують поля джерела/стану для кожного облікового
+ даного, такі як `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode —
`signingSecretStatus`. `configured_unavailable` означає, що обліковий запис
налаштовано через SecretRef, але поточний шлях команди/runtime не зміг
визначити значення секрету.
-- `configWrites: false` блокує ініційовані зі Slack записи в конфігурацію.
-- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
-- `channels.slack.streaming.mode` — це канонічний ключ режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує native streaming transport Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` автоматично мігруються.
-- Використовуйте `user:` (DM) або `channel:` як цілі доставки.
+- `configWrites: false` блокує записи конфігурації, ініційовані Slack.
+- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
+- `channels.slack.streaming.mode` — канонічний ключ режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним транспортом потоків Slack. Застарілі значення `streamMode`, логічні значення `streaming` і `nativeStreaming` мігруються автоматично.
+- Для цілей доставки використовуйте `user:` (DM) або `channel:`.
-**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`).
-**Ізоляція сеансів потоку:** `thread.historyScope` є окремим для кожного потоку (типово) або спільним для каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові потоки.
+**Ізоляція сеансів гілок:** `thread.historyScope` — окремо для кожної гілки (типово) або спільно для каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові гілки.
-- Native streaming Slack плюс статус потоку в стилі Slack assistant «is typing...» вимагають ціль відповіді у потоці. DM верхнього рівня типово залишаються поза потоком, тому вони використовують `typingReaction` або звичайну доставку замість попереднього перегляду в стилі потоку.
+- Нативний потоковий режим Slack разом зі статусом гілки Slack у стилі асистента "is typing..." потребують цілі відповіді у гілці. DM верхнього рівня типово залишаються поза гілками, тому вони використовують `typingReaction` або звичайну доставку замість попереднього перегляду в стилі гілки.
- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode емодзі Slack, наприклад `"hourglass_flowing_sand"`.
-- `channels.slack.execApprovals`: Slack-native доставка схвалень exec і авторизація тих, хто схвалює. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
+- `channels.slack.execApprovals`: нативна для Slack доставка схвалень exec і авторизація тих, хто може схвалювати. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
-| Група дій | Типово | Примітки |
-| ----------- | ------- | ----------------------- |
-| reactions | увімкнено | Реагувати + перелік реакцій |
+| Група дій | Типово | Примітки |
+| ----------- | -------- | ------------------------- |
+| reactions | увімкнено | React + список реакцій |
| messages | увімкнено | Читання/надсилання/редагування/видалення |
-| pins | увімкнено | Закріпити/відкріпити/перелік |
-| memberInfo | увімкнено | Інформація про учасника |
-| emojiList | увімкнено | Перелік користувацьких емодзі |
+| pins | увімкнено | Закріплення/відкріплення/список |
+| memberInfo | увімкнено | Інформація про учасника |
+| emojiList | увімкнено | Список власних емодзі |
### Mattermost
@@ -516,7 +516,7 @@ Mattermost постачається як Plugin: `openclaw plugins install @open
native: true, // opt-in
nativeSkills: true,
callbackPath: "/api/channels/mattermost/command",
- // Необов’язковий явний URL для reverse-proxy/public розгортань
+ // Необов’язковий явний URL для розгортань через reverse proxy / публічних розгортань
callbackUrl: "https://gateway.example.com/api/channels/mattermost/command",
},
textChunkLimit: 4000,
@@ -526,23 +526,23 @@ Mattermost постачається як Plugin: `openclaw plugins install @open
}
```
-Режими чату: `oncall` (відповідати на @-згадування, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з тригерного префікса).
+Режими чату: `oncall` (відповідати на @-згадки, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса-тригера).
-Коли native-команди Mattermost увімкнені:
+Коли нативні команди Mattermost увімкнено:
- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повним URL.
-- `commands.callbackUrl` має вказувати на endpoint Gateway OpenClaw і бути доступним із сервера Mattermost.
-- Native slash callback-колбеки автентифікуються за допомогою токенів для кожної команди, які Mattermost повертає
- під час реєстрації slash-команд. Якщо реєстрація не вдається або не
- активовано жодної команди, OpenClaw відхиляє колбеки з повідомленням
+- `commands.callbackUrl` має вказувати на endpoint Gateway OpenClaw і бути досяжним із сервера Mattermost.
+- Нативні callback-и slash-команд автентифікуються за допомогою токенів для кожної
+ команди, які Mattermost повертає під час реєстрації slash-команди. Якщо реєстрація не вдається або жодну
+ команду не активовано, OpenClaw відхиляє callback-и з повідомленням
`Unauthorized: invalid command token.`
-- Для private/tailnet/internal хостів колбеків Mattermost може вимагати,
- щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен колбеку.
+- Для приватних/tailnet/внутрішніх хостів callback-ів Mattermost може вимагати, щоб
+ `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен callback-а.
Використовуйте значення хоста/домену, а не повні URL.
-- `channels.mattermost.configWrites`: дозволяти чи забороняти записи в конфігурацію, ініційовані Mattermost.
+- `channels.mattermost.configWrites`: дозволяє або забороняє записи конфігурації, ініційовані Mattermost.
- `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах.
-- `channels.mattermost.groups..requireMention`: перевизначення gate за згадуванням для окремого каналу (`"*"` для значення за замовчуванням).
-- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
+- `channels.mattermost.groups..requireMention`: перевизначення обмеження згадками для окремого каналу (`"*"` для типового значення).
+- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
### Signal
@@ -563,15 +563,15 @@ Mattermost постачається як Plugin: `openclaw plugins install @open
}
```
-**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`).
-- `channels.signal.account`: закріпити запуск каналу за конкретною ідентичністю облікового запису Signal.
-- `channels.signal.configWrites`: дозволяти чи забороняти записи в конфігурацію, ініційовані Signal.
-- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
+- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal.
+- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Signal.
+- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
### BlueBubbles
-BlueBubbles — рекомендований шлях для iMessage (на основі Plugin, налаштовується в `channels.bluebubbles`).
+BlueBubbles — рекомендований шлях для iMessage (на базі Plugin, налаштовується в `channels.bluebubbles`).
```json5
{
@@ -580,20 +580,20 @@ BlueBubbles — рекомендований шлях для iMessage (на ос
enabled: true,
dmPolicy: "pairing",
// serverUrl, password, webhookPath, group controls, and advanced actions:
- // див. /channels/bluebubbles
+ // see /channels/bluebubbles
},
},
}
```
-- Основні шляхи ключів, які тут розглядаються: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
-- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
-- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте BlueBubbles handle або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- Основні шляхи ключів, які тут охоплено: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
+- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
+- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте дескриптор BlueBubbles або цільовий рядок (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles).
### iMessage
-OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон або порт не потрібні.
+OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Daemon або порт не потрібні.
```json5
{
@@ -617,17 +617,17 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а
}
```
-- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
+- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
- Потрібен Full Disk Access до бази даних Messages.
-- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб отримати список чатів.
+- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів.
- `cliPath` може вказувати на SSH-обгортку; установіть `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`).
-- SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ хоста relay уже існує в `~/.ssh/known_hosts`.
-- `channels.imessage.configWrites`: дозволяти чи забороняти записи в конфігурацію, ініційовані iMessage.
-- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ хоста ретранслятора вже існує в `~/.ssh/known_hosts`.
+- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage.
+- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований дескриптор або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-
+
```bash
#!/usr/bin/env bash
@@ -638,7 +638,7 @@ exec ssh -T gateway-host imsg "$@"
### Matrix
-Matrix підтримується розширенням і налаштовується в `channels.matrix`.
+Matrix працює через розширення і налаштовується в `channels.matrix`.
```json5
{
@@ -668,25 +668,25 @@ Matrix підтримується розширенням і налаштовує
}
```
-- Автентифікація токеном використовує `accessToken`; автентифікація паролем використовує `userId` + `password`.
-- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані облікові записи можуть перевизначати його через `channels.matrix.accounts..proxy`.
-- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver-и. `proxy` і цей мережевий opt-in — незалежні механізми керування.
+- Автентифікація за токеном використовує `accessToken`; автентифікація за паролем використовує `userId` + `password`.
+- `channels.matrix.proxy` спрямовує HTTP-трафік Matrix через явний HTTP(S)-проксі. Іменовані облікові записи можуть перевизначити це через `channels.matrix.accounts..proxy`.
+- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/внутрішні homeserver-и. `proxy` і цей opt-in для мережі — незалежні механізми керування.
- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у багатооблікових конфігураціях.
-- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення в стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`.
-- `channels.matrix.execApprovals`: Matrix-native доставка схвалень exec і авторизація тих, хто схвалює.
- - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto схвалення exec активуються, коли тих, хто схвалює, можна визначити з `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати exec-запити.
- - `agentFilter`: необов’язковий список дозволених ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
- - `sessionFilter`: необов’язкові шаблони ключів сеансу (підрядок або regex).
+- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` разом із `autoJoinAllowlist` або `autoJoin: "always"`.
+- `channels.matrix.execApprovals`: нативна для Matrix доставка схвалень exec і авторизація тих, хто може схвалювати.
+ - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto схвалення exec активуються, коли тих, хто може схвалювати, можна визначити через `approvers` або `commands.ownerAllowFrom`.
+ - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати запити exec.
+ - `agentFilter`: необов’язковий список дозволених ID агентів. Не вказуйте, щоб пересилати схвалення для всіх агентів.
+ - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
- `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (вихідна кімната) або `"both"`.
- Перевизначення для окремого облікового запису: `channels.matrix.accounts..execApprovals`.
- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сеанси: `per-user` (типово) спільний за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату.
-- Перевірки стану Matrix і live directory lookup-и використовують ту саму proxy-політику, що й runtime-трафік.
-- Повну конфігурацію Matrix, правила націлювання та приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
+- Перевірки стану Matrix і живі пошуки в каталозі використовують ту саму політику проксі, що й трафік runtime.
+- Повну конфігурацію Matrix, правила вибору цілей і приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
### Microsoft Teams
-Microsoft Teams підтримується розширенням і налаштовується в `channels.msteams`.
+Microsoft Teams працює через розширення і налаштовується в `channels.msteams`.
```json5
{
@@ -695,18 +695,18 @@ Microsoft Teams підтримується розширенням і налаш
enabled: true,
configWrites: true,
// appId, appPassword, tenantId, webhook, team/channel policies:
- // див. /channels/msteams
+ // see /channels/msteams
},
},
}
```
-- Основні шляхи ключів, які тут розглядаються: `channels.msteams`, `channels.msteams.configWrites`.
-- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для окремої команди/каналу) задокументовано в [Microsoft Teams](/uk/channels/msteams).
+- Основні шляхи ключів, які тут охоплено: `channels.msteams`, `channels.msteams.configWrites`.
+- Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для окремих команд/каналів) задокументовано в [Microsoft Teams](/uk/channels/msteams).
### IRC
-IRC підтримується розширенням і налаштовується в `channels.irc`.
+IRC працює через розширення і налаштовується в `channels.irc`.
```json5
{
@@ -727,9 +727,9 @@ IRC підтримується розширенням і налаштовуєт
}
```
-- Основні шляхи ключів, які тут розглядаються: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
-- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з налаштованим ідентифікатором облікового запису.
-- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/gate за згадуваннями) задокументовано в [IRC](/uk/channels/irc).
+- Основні шляхи ключів, які тут охоплено: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
+- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, якщо він відповідає налаштованому ID облікового запису.
+- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/обмеження згадками) задокументовано в [IRC](/uk/channels/irc).
### Багатообліковість (усі канали)
@@ -755,27 +755,27 @@ IRC підтримується розширенням і налаштовуєт
```
- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація).
-- Env-токени застосовуються лише до **default** облікового запису.
-- Базові налаштування каналу застосовуються до всіх облікових записів, якщо не перевизначено для окремого облікового запису.
+- Токени з середовища застосовуються лише до облікового запису **default**.
+- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремого облікового запису.
- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента.
-- Якщо ви додаєте не-default обліковий запис через `openclaw channels add` (або онбординг каналу), залишаючись при цьому в однообліковій конфігурації верхнього рівня для каналу, OpenClaw спершу переносить значення верхнього рівня для одного облікового запису, що залежать від облікового запису, у мапу облікових записів каналу, щоб початковий обліковий запис і надалі працював. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default ціль.
-- Наявні прив’язки лише до каналу (без `accountId`) і далі відповідають default обліковому запису; прив’язки з прив’язкою до облікового запису залишаються необов’язковими.
-- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, що залежать від облікового запису, у підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default ціль.
+- Якщо ви додаєте не-default обліковий запис через `openclaw channels add` (або через онбординг каналу), поки все ще перебуваєте в однoобліковій конфігурації каналу верхнього рівня, OpenClaw спочатку переносить значення верхнього рівня для одного облікового запису, пов’язані з цим обліковим записом, у карту облікових записів каналу, щоб початковий обліковий запис і далі працював. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default-ціль.
+- Наявні прив’язки лише на рівні каналу (без `accountId`) і далі відповідають обліковому запису default; прив’язки на рівні облікового запису залишаються необов’язковими.
+- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, пов’язані з цим обліковим записом, у підвищений обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default-ціль.
### Інші канали розширень
-Багато каналів розширень налаштовуються як `channels.` і задокументовані на їхніх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
-Див. повний індекс каналів: [Channels](/uk/channels).
+Багато каналів розширень налаштовуються як `channels.` і задокументовані на своїх окремих сторінках каналів (наприклад, Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
+Див. повний індекс каналів: [Канали](/uk/channels).
-### Gate за згадуваннями в групових чатах
+### Обмеження згадками в груповому чаті
-Для групових повідомлень типово **потрібна згадка** (метадані згадки або безпечні шаблони regex). Це стосується групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage.
+Повідомлення в групах типово **вимагають згадки** (метадані згадки або безпечні regex-патерни). Це застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage.
**Типи згадок:**
- **Згадки в метаданих**: нативні @-згадки платформи. Ігноруються в режимі self-chat WhatsApp.
-- **Текстові шаблони**: безпечні шаблони regex у `agents.list[].groupChat.mentionPatterns`. Недійсні шаблони та небезпечні вкладені повторення ігноруються.
-- Gate за згадуваннями застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон).
+- **Текстові патерни**: безпечні regex-патерни в `agents.list[].groupChat.mentionPatterns`. Некоректні патерни та небезпечні вкладені повторення ігноруються.
+- Обмеження згадками застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один патерн).
```json5
{
@@ -788,9 +788,9 @@ IRC підтримується розширенням і налаштовуєт
}
```
-`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути.
+`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або на рівні окремого облікового запису). Установіть `0`, щоб вимкнути.
-#### Ліміти історії DM
+#### Обмеження історії DM
```json5
{
@@ -805,13 +805,13 @@ IRC підтримується розширенням і налаштовуєт
}
```
-Порядок визначення: перевизначення для конкретного DM → значення за замовчуванням провайдера → без ліміту (зберігається все).
+Порядок визначення: перевизначення для конкретного DM → типове значення провайдера → без обмеження (зберігається все).
Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
#### Режим self-chat
-Додайте власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
+Додайте свій власний номер у `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові патерни):
```json5
{
@@ -832,21 +832,21 @@ IRC підтримується розширенням і налаштовуєт
}
```
-### Команди (обробка команд у чаті)
+### Команди (обробка команд чату)
```json5
{
commands: {
- native: "auto", // реєструвати native-команди, коли це підтримується
- nativeSkills: "auto", // реєструвати native-команди Skills, коли це підтримується
- text: true, // розбирати /commands у повідомленнях чату
- bash: false, // дозволити ! (псевдонім: /bash)
+ native: "auto", // register native commands when supported
+ nativeSkills: "auto", // register native skill commands when supported
+ text: true, // parse /commands in chat messages
+ bash: false, // allow ! (alias: /bash)
bashForegroundMs: 2000,
- config: false, // дозволити /config
- mcp: false, // дозволити /mcp
- plugins: false, // дозволити /plugins
- debug: false, // дозволити /debug
- restart: true, // дозволити /restart + інструмент перезапуску gateway
+ config: false, // allow /config
+ mcp: false, // allow /mcp
+ plugins: false, // allow /plugins
+ debug: false, // allow /debug
+ restart: true, // allow /restart + gateway restart tool
ownerAllowFrom: ["discord:123456789012345678"],
ownerDisplay: "raw", // raw | hash
ownerDisplaySecret: "${OWNER_ID_HASH_SECRET}",
@@ -861,42 +861,42 @@ IRC підтримується розширенням і налаштовуєт
-- Цей блок налаштовує поверхні команд. Поточний каталог вбудованих + bundled команд див. у [Slash Commands](/uk/tools/slash-commands).
-- Ця сторінка є **довідником ключів конфігурації**, а не повним каталогом команд. Команди, що належать каналу/Plugin, як-от QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовано на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands).
+- Цей блок налаштовує поверхні команд. Поточний вбудований + bundled каталог команд див. у [Slash Commands](/uk/tools/slash-commands).
+- Ця сторінка — **довідник за ключами конфігурації**, а не повний каталог команд. Команди, що належать каналу/Plugin, такі як QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовані на сторінках відповідних каналів/Plugin, а також у [Slash Commands](/uk/tools/slash-commands).
- Текстові команди мають бути **окремими** повідомленнями з початковим `/`.
-- `native: "auto"` вмикає native-команди для Discord/Telegram, але залишає Slack вимкненим.
-- `nativeSkills: "auto"` вмикає native-команди Skills для Discord/Telegram, але залишає Slack вимкненим.
-- Перевизначення для каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
-- Перевизначайте реєстрацію native-команд Skills для каналу через `channels..commands.nativeSkills`.
-- `channels.telegram.customCommands` додає додаткові записи меню Telegram bot.
-- `bash: true` вмикає `! ` для shell хоста. Потрібно `tools.elevated.enabled` і щоб відправник був у `tools.elevated.allowFrom.`.
-- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також вимагають `operator.admin`; доступний лише для читання `/config show` залишається доступним для звичайних клієнтів operator з правами запису.
+- `native: "auto"` вмикає нативні команди для Discord/Telegram, але залишає Slack вимкненим.
+- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, але залишає Slack вимкненим.
+- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
+- Перевизначайте реєстрацію нативних команд Skills для окремого каналу через `channels..commands.nativeSkills`.
+- `channels.telegram.customCommands` додає додаткові записи меню бота Telegram.
+- `bash: true` вмикає `! ` для shell хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.`.
+- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступний лише для читання `/config show` і надалі доступний звичайним клієнтам operator з правами запису.
- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, яким керує OpenClaw, у `mcp.servers`.
-- `plugins: true` вмикає `/plugins` для виявлення Plugin, встановлення та керування ввімкненням/вимкненням.
-- `channels..configWrites` керує мутаціями конфігурації для кожного каналу окремо (типово: true).
+- `plugins: true` вмикає `/plugins` для пошуку Plugin, встановлення та керування вмиканням/вимиканням.
+- `channels..configWrites` керує змінами конфігурації для окремого каналу (типово: true).
- Для багатооблікових каналів `channels..accounts..configWrites` також керує записами, націленими на цей обліковий запис (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`).
-- `restart: false` вимикає `/restart` і дії інструмента перезапуску gateway. Типове значення: `true`.
-- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він відокремлений від `allowFrom`.
-- `ownerDisplay: "hash"` хешує ID власників у system prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
-- `allowFrom` задається для кожного provider окремо. Якщо його встановлено, це **єдине** джерело авторизації (списки дозволених каналу/spairing і `useAccessGroups` ігноруються).
-- `useAccessGroups: false` дозволяє командам обходити політики access-group, коли `allowFrom` не встановлено.
-- Мапа документації команд:
- - каталог вбудованих + bundled команд: [Slash Commands](/uk/tools/slash-commands)
- - поверхні команд, специфічні для каналу: [Channels](/uk/channels)
+- `restart: false` вимикає `/restart` і дії інструмента перезапуску gateway. Типово: `true`.
+- `ownerAllowFrom` — це явний список дозволів власника для команд/інструментів, доступних лише власнику. Він відокремлений від `allowFrom`.
+- `ownerDisplay: "hash"` хешує ID власника в system prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
+- `allowFrom` задається для кожного провайдера. Якщо його встановлено, це **єдине** джерело авторизації (списки дозволів/сполучення каналу та `useAccessGroups` ігноруються).
+- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не встановлено.
+- Відповідність документації команд:
+ - вбудований + bundled каталог: [Slash Commands](/uk/tools/slash-commands)
+ - поверхні команд, специфічні для каналів: [Канали](/uk/channels)
- команди QQ Bot: [QQ Bot](/uk/channels/qqbot)
- - команди pairing: [Pairing](/uk/channels/pairing)
+ - команди сполучення: [Pairing](/uk/channels/pairing)
- команда картки LINE: [LINE](/uk/channels/line)
- - memory dreaming: [Dreaming](/uk/concepts/dreaming)
+ - memory Dreaming: [Dreaming](/uk/concepts/dreaming)
---
-## Типові значення агента
+## Значення агентів за замовчуванням
### `agents.defaults.workspace`
-Типове значення: `~/.openclaw/workspace`.
+Типово: `~/.openclaw/workspace`.
```json5
{
@@ -906,7 +906,7 @@ IRC підтримується розширенням і налаштовуєт
### `agents.defaults.repoRoot`
-Необов’язковий корінь репозиторію, який показується в рядку Runtime у system prompt. Якщо не задано, OpenClaw автоматично визначає його, підіймаючись вгору від робочого простору.
+Необов’язковий корінь репозиторію, який показується в рядку Runtime system prompt. Якщо не встановлено, OpenClaw автоматично визначає його, піднімаючись угору від workspace.
```json5
{
@@ -916,7 +916,7 @@ IRC підтримується розширенням і налаштовуєт
### `agents.defaults.skills`
-Необов’язковий типовий список дозволених Skills для агентів, які не задають
+Необов’язковий список дозволених Skills за замовчуванням для агентів, які не задають
`agents.list[].skills`.
```json5
@@ -925,22 +925,22 @@ IRC підтримується розширенням і налаштовуєт
defaults: { skills: ["github", "weather"] },
list: [
{ id: "writer" }, // успадковує github, weather
- { id: "docs", skills: ["docs-search"] }, // замінює типові значення
+ { id: "docs", skills: ["docs-search"] }, // замінює значення за замовчуванням
{ id: "locked-down", skills: [] }, // без Skills
],
},
}
```
-- Пропустіть `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` є остаточним набором для цього агента; він
- не об’єднується з типовими значеннями.
+ не об’єднується зі значеннями за замовчуванням.
### `agents.defaults.skipBootstrap`
-Вимикає автоматичне створення bootstrap-файлів робочого простору (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`).
+Вимикає автоматичне створення bootstrap-файлів workspace (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`).
```json5
{
@@ -950,9 +950,9 @@ IRC підтримується розширенням і налаштовуєт
### `agents.defaults.contextInjection`
-Керує тим, коли bootstrap-файли робочого простору додаються до system prompt. Типове значення: `"always"`.
+Керує тим, коли bootstrap-файли workspace вставляються в system prompt. Типово: `"always"`.
-- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторне додавання bootstrap робочого простору, зменшуючи розмір prompt. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст.
+- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторну вставку bootstrap workspace, зменшуючи розмір prompt. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст.
```json5
{
@@ -962,7 +962,7 @@ IRC підтримується розширенням і налаштовуєт
### `agents.defaults.bootstrapMaxChars`
-Максимальна кількість символів на один bootstrap-файл робочого простору перед обрізанням. Типове значення: `12000`.
+Максимальна кількість символів на файл bootstrap workspace перед обрізанням. Типово: `12000`.
```json5
{
@@ -972,7 +972,7 @@ IRC підтримується розширенням і налаштовуєт
### `agents.defaults.bootstrapTotalMaxChars`
-Максимальна загальна кількість символів, що додаються з усіх bootstrap-файлів робочого простору. Типове значення: `60000`.
+Максимальна загальна кількість символів, що вставляються з усіх bootstrap-файлів workspace. Типово: `60000`.
```json5
{
@@ -982,12 +982,12 @@ IRC підтримується розширенням і налаштовуєт
### `agents.defaults.bootstrapPromptTruncationWarning`
-Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізано.
-Типове значення: `"once"`.
+Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізається.
+Типово: `"once"`.
-- `"off"`: ніколи не додавати текст попередження до system prompt.
-- `"once"`: додавати попередження один раз для кожного унікального сигнатурного випадку обрізання (рекомендовано).
-- `"always"`: додавати попередження під час кожного запуску, коли існує обрізання.
+- `"off"`: ніколи не вставляти текст попередження в system prompt.
+- `"once"`: вставляти попередження один раз для кожного унікального підпису обрізання (рекомендовано).
+- `"always"`: вставляти попередження при кожному запуску, коли є обрізання.
```json5
{
@@ -995,24 +995,24 @@ IRC підтримується розширенням і налаштовуєт
}
```
-### Мапа власників бюджету контексту
+### Карта відповідальності за бюджети контексту
OpenClaw має кілька великих бюджетів prompt/контексту, і вони
-навмисно розділені за підсистемами, а не проходять через один універсальний
+навмисно розділені за підсистемами, а не проходять через один загальний
параметр.
- `agents.defaults.bootstrapMaxChars` /
`agents.defaults.bootstrapTotalMaxChars`:
- звичайне додавання bootstrap робочого простору.
+ звичайна вставка bootstrap workspace.
- `agents.defaults.startupContext.*`:
- одноразова стартова преамбула для `/new` і `/reset`, включно з останніми
- щоденними файлами `memory/*.md`.
+ одноразовий початковий пролог для `/new` і `/reset`, включно з недавніми щоденними
+ файлами `memory/*.md`.
- `skills.limits.*`:
- компактний список Skills, що додається до system prompt.
+ компактний список Skills, вставлений у system prompt.
- `agents.defaults.contextLimits.*`:
- обмежені уривки runtime і додані блоки, що належать runtime.
+ обмежені витяги runtime і вставлені блоки, що належать runtime.
- `memory.qmd.limits.*`:
- розміри фрагментів індексованого пошуку пам’яті та їх додавання.
+ розмір фрагментів індексованого пошуку по пам’яті та їх вставки.
Використовуйте відповідне перевизначення для окремого агента лише тоді, коли одному агенту потрібен інший
бюджет:
@@ -1022,7 +1022,7 @@ OpenClaw має кілька великих бюджетів prompt/контек
#### `agents.defaults.startupContext`
-Керує стартовою преамбулою першого ходу, яка додається в запусках простих `/new` і `/reset`.
+Керує початковим прологом першого ходу, що вставляється в порожні запуски `/new` і `/reset`.
```json5
{
@@ -1043,7 +1043,7 @@ OpenClaw має кілька великих бюджетів prompt/контек
#### `agents.defaults.contextLimits`
-Спільні типові значення для обмежених поверхонь runtime-контексту.
+Спільні значення за замовчуванням для обмежених поверхонь контексту runtime.
```json5
{
@@ -1060,13 +1060,13 @@ OpenClaw має кілька великих бюджетів prompt/контек
}
```
-- `memoryGetMaxChars`: типова межа уривка `memory_get` перед додаванням
+- `memoryGetMaxChars`: типове обмеження витягу `memory_get` перед додаванням
метаданих обрізання та повідомлення про продовження.
- `memoryGetDefaultLines`: типове вікно рядків `memory_get`, коли `lines`
пропущено.
-- `toolResultMaxChars`: активна межа результату інструмента, яка використовується для збережених результатів і
+- `toolResultMaxChars`: обмеження для живого результату інструмента, яке використовується для збережених результатів і
відновлення після переповнення.
-- `postCompactionMaxChars`: межа уривка AGENTS.md, яка використовується під час оновлювального додавання після Compaction.
+- `postCompactionMaxChars`: обмеження витягу AGENTS.md, яке використовується під час вставки оновлення після Compaction.
#### `agents.list[].contextLimits`
@@ -1097,8 +1097,8 @@ OpenClaw має кілька великих бюджетів prompt/контек
#### `skills.limits.maxSkillsPromptChars`
-Глобальна межа для компактного списку Skills, що додається до system prompt. Це
-не впливає на читання файлів `SKILL.md` на вимогу.
+Глобальне обмеження для компактного списку Skills, вставленого в system prompt. Це
+не впливає на читання файлів `SKILL.md` за потреби.
```json5
{
@@ -1112,7 +1112,7 @@ OpenClaw має кілька великих бюджетів prompt/контек
#### `agents.list[].skillsLimits.maxSkillsPromptChars`
-Перевизначення для бюджету prompt Skills для окремого агента.
+Перевизначення бюджету prompt для Skills для окремого агента.
```json5
{
@@ -1131,11 +1131,11 @@ OpenClaw має кілька великих бюджетів prompt/контек
### `agents.defaults.imageMaxDimensionPx`
-Максимальний розмір у пікселях для найдовшої сторони зображення в блоках зображень transcript/tool перед викликами provider.
-Типове значення: `1200`.
+Максимальний розмір у пікселях для найдовшого боку зображення в блоках зображень transcript/tool перед викликами провайдера.
+Типово: `1200`.
-Менші значення зазвичай зменшують використання vision-token і розмір payload запиту для запусків із великою кількістю знімків екрана.
-Більші значення зберігають більше візуальних деталей.
+Нижчі значення зазвичай зменшують використання vision-токенів і розмір payload запиту для запусків із великою кількістю знімків екрана.
+Вищі значення зберігають більше візуальних деталей.
```json5
{
@@ -1145,7 +1145,7 @@ OpenClaw має кілька великих бюджетів prompt/контек
### `agents.defaults.userTimezone`
-Часовий пояс для контексту system prompt (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста.
+Часовий пояс для контексту system prompt (не для часових позначок повідомлень). Використовує часовий пояс хоста як резервний варіант.
```json5
{
@@ -1155,7 +1155,7 @@ OpenClaw має кілька великих бюджетів prompt/контек
### `agents.defaults.timeFormat`
-Формат часу в system prompt. Типове значення: `auto` (параметр ОС).
+Формат часу в system prompt. Типово: `auto` (налаштування ОС).
```json5
{
@@ -1193,9 +1193,9 @@ OpenClaw має кілька великих бюджетів prompt/контек
primary: "anthropic/claude-opus-4-6",
fallbacks: ["openai/gpt-5.4-mini"],
},
- params: { cacheRetention: "long" }, // глобальні типові параметри provider
+ params: { cacheRetention: "long" }, // глобальні типові параметри провайдера
embeddedHarness: {
- runtime: "auto", // auto | pi | registered harness id, наприклад codex
+ runtime: "auto", // auto | pi | registered harness id, e.g. codex
fallback: "pi", // pi | none
},
pdfMaxBytesMb: 10,
@@ -1214,44 +1214,44 @@ OpenClaw має кілька великих бюджетів prompt/контек
- `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- Форма рядка задає лише основну модель.
- - Форма об’єкта задає основну модель плюс впорядковані моделі для failover.
+ - Форма об’єкта задає основну модель плюс упорядковані резервні моделі для failover.
- `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- - Використовується шляхом інструмента `image` як його конфігурація vision-model.
- - Також використовується для резервної маршрутизації, коли вибрана/типова модель не може приймати вхідні зображення.
+ - Використовується шляхом інструмента `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-1` для OpenAI Images.
- - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію/API key provider (наприклад `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`).
- - Якщо значення пропущено, `image_generate` усе одно може визначити типове значення provider з підтримкою автентифікації. Спочатку він пробує поточного типового provider, потім решту зареєстрованих provider генерації зображень у порядку provider-id.
+ - Якщо ви напряму вибираєте `provider/model`, також налаштуйте відповідну автентифікацію/API key провайдера (наприклад `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`).
+ - Якщо не вказано, `image_generate` усе одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, а потім — решту зареєстрованих провайдерів генерації зображень у порядку ID провайдера.
- `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- Використовується спільною можливістю генерації музики та вбудованим інструментом `music_generate`.
- Типові значення: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` або `minimax/music-2.5+`.
- - Якщо значення пропущено, `music_generate` усе одно може визначити типове значення provider з підтримкою автентифікації. Спочатку він пробує поточного типового provider, потім решту зареєстрованих provider генерації музики в порядку provider-id.
- - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію/API key provider.
+ - Якщо не вказано, `music_generate` усе одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, а потім — решту зареєстрованих провайдерів генерації музики в порядку ID провайдера.
+ - Якщо ви напряму вибираєте `provider/model`, також налаштуйте відповідну автентифікацію/API key провайдера.
- `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 з підтримкою автентифікації. Спочатку він пробує поточного типового provider, потім решту зареєстрованих provider генерації відео в порядку provider-id.
- - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію/API key provider.
- - Bundled provider генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня provider `size`, `aspectRatio`, `resolution`, `audio` і `watermark`.
+ - Якщо не вказано, `video_generate` усе одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, а потім — решту зареєстрованих провайдерів генерації відео в порядку ID провайдера.
+ - Якщо ви напряму вибираєте `provider/model`, також налаштуйте відповідну автентифікацію/API key провайдера.
+ - Bundled провайдер генерації відео 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.4`). Якщо ви пропускаєте provider, OpenClaw спочатку пробує alias, потім унікальний збіг exact model id серед налаштованих provider, і лише потім повертається до налаштованого типового provider (застаріла поведінка сумісності, тому надавайте перевагу явному `provider/model`). Якщо цей provider більше не надає налаштовану типову модель, OpenClaw повертається до першого налаштованого provider/model замість того, щоб показувати застаріле типове значення видаленого provider.
-- `models`: налаштований каталог моделей і список дозволених для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для provider, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`).
-- `params`: глобальні типові параметри provider, які застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад `{ cacheRetention: "long" }`).
-- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для конкретної моделі), потім `agents.list[].params` (відповідний id агента) перевизначає за ключем. Докладно див. [Prompt Caching](/uk/reference/prompt-caching).
-- `embeddedHarness`: типова політика низькорівневого runtime вбудованого агента. Використовуйте `runtime: "auto"`, щоб дозволити зареєстрованим harness Plugin перехоплювати підтримувані моделі, `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, або зареєстрований id harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід до PI.
-- Засоби запису конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта й, за можливості, зберігають наявні списки fallback.
-- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сеансами (кожен сеанс усе одно серіалізований). Типове значення: 4.
+- `pdfMaxPages`: типова максимальна кількість сторінок, яку враховує режим резервного витягування в інструменті `pdf`.
+- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Типово: `"off"`.
+- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типово: `"on"`.
+- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо ви пропускаєте провайдера, OpenClaw спочатку пробує псевдонім, потім — унікальний збіг серед налаштованих провайдерів для цього точного ID моделі, і лише потім повертається до налаштованого типового провайдера (застаріла сумісна поведінка, тому надавайте перевагу явному `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw переходить до першої налаштованої пари провайдер/модель замість того, щоб показувати застаріле типове значення від видаленого провайдера.
+- `models`: налаштований каталог моделей і список дозволів для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`).
+- `params`: глобальні типові параметри провайдера, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад `{ cacheRetention: "long" }`).
+- Пріоритет об’єднання `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається через `agents.defaults.models["provider/model"].params` (для окремої моделі), а потім `agents.list[].params` (для відповідного ID агента) перевизначає за ключем. Докладніше див. [Prompt Caching](/uk/reference/prompt-caching).
+- `embeddedHarness`: типова низькорівнева політика runtime для вбудованого агента. Використовуйте `runtime: "auto"`, щоб дозволити зареєстрованим harness у Plugin заявляти підтримувані моделі, `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, або зареєстрований ID harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід до PI.
+- Засоби запису конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта та, за можливості, зберігають наявні списки fallback.
+- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сеансами (кожен сеанс усе одно виконується послідовно). Типово: 4.
### `agents.defaults.embeddedHarness`
-`embeddedHarness` керує тим, який низькорівневий виконавець обробляє ходи вбудованого агента.
+`embeddedHarness` керує тим, який низькорівневий виконавець запускає ходи вбудованого агента.
У більшості розгортань слід залишити типове значення `{ runtime: "auto", fallback: "pi" }`.
Використовуйте це, коли довірений Plugin надає нативний harness, наприклад bundled
harness app-server Codex.
@@ -1270,15 +1270,15 @@ harness app-server Codex.
}
```
-- `runtime`: `"auto"`, `"pi"` або id зареєстрованого harness Plugin. Bundled Plugin Codex реєструє `codex`.
-- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований harness PI як сумісний резервний варіант. `"none"` призводить до помилки у випадку відсутнього або непідтримуваного вибору harness Plugin замість тихого використання PI.
+- `runtime`: `"auto"`, `"pi"` або ID зареєстрованого harness у Plugin. Bundled Plugin Codex реєструє `codex`.
+- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований harness PI як сумісний резервний варіант. `"none"` спричиняє помилку, якщо вибір harness у Plugin відсутній або не підтримується, замість того щоб мовчки використовувати PI.
- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` вимикає резервний перехід до PI для цього процесу.
-- Для розгортань лише з Codex установіть `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` і `embeddedHarness.fallback: "none"`.
-- Це керує лише embedded chat harness. Генерація медіа, vision, PDF, музика, відео й TTS, як і раніше, використовують свої налаштування provider/model.
+- Для розгортань лише з Codex задайте `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` і `embeddedHarness.fallback: "none"`.
+- Це керує лише вбудованим chat harness. Генерація медіа, vision, PDF, музика, відео та TTS і далі використовують свої налаштування провайдера/моделі.
-**Вбудовані скорочення alias** (застосовуються лише тоді, коли модель є в `agents.defaults.models`):
+**Вбудовані скорочені псевдоніми** (застосовуються лише тоді, коли модель є в `agents.defaults.models`):
-| Alias | Модель |
+| Псевдонім | Модель |
| ------------------- | -------------------------------------- |
| `opus` | `anthropic/claude-opus-4-6` |
| `sonnet` | `anthropic/claude-sonnet-4-6` |
@@ -1289,15 +1289,15 @@ harness app-server Codex.
| `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 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.
+Моделі Anthropic Claude 4.6 типово використовують thinking `adaptive`, коли явний рівень thinking не задано.
### `agents.defaults.cliBackends`
-Необов’язкові CLI-бекенди для резервних запусків лише з текстом (без викликів інструментів). Корисно як запасний варіант, коли API provider зазнають збою.
+Необов’язкові CLI-бекенди для резервних текстових запусків (без викликів інструментів). Корисно як запасний варіант, коли API-провайдери відмовляють.
```json5
{
@@ -1331,7 +1331,7 @@ harness app-server Codex.
### `agents.defaults.systemPromptOverride`
-Замінює весь system prompt, зібраний OpenClaw, фіксованим рядком. Задається на типовому рівні (`agents.defaults.systemPromptOverride`) або для окремого агента (`agents.list[].systemPromptOverride`). Значення для окремого агента мають пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із prompt.
+Замінює весь system prompt, зібраний OpenClaw, на фіксований рядок. Задається на рівні значень за замовчуванням (`agents.defaults.systemPromptOverride`) або для окремого агента (`agents.list[].systemPromptOverride`). Значення для окремого агента мають пріоритет; порожнє значення або значення лише з пробілами ігнорується. Корисно для контрольованих експериментів із prompt.
```json5
{
@@ -1352,16 +1352,16 @@ harness app-server Codex.
agents: {
defaults: {
heartbeat: {
- every: "30m", // 0m вимикає
+ every: "30m", // 0m disables
model: "openai/gpt-5.4-mini",
includeReasoning: false,
- includeSystemPromptSection: true, // типово: true; false прибирає розділ Heartbeat із system prompt
- lightContext: false, // типово: false; true залишає лише HEARTBEAT.md із bootstrap-файлів робочого простору
- isolatedSession: false, // типово: false; true запускає кожен heartbeat у новому сеансі (без історії розмови)
+ 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)
session: "main",
to: "+15555550123",
- directPolicy: "allow", // allow (типово) | block
- target: "none", // типово: none | варіанти: last | whatsapp | telegram | discord | ...
+ directPolicy: "allow", // allow (default) | block
+ target: "none", // default: none | options: last | whatsapp | telegram | discord | ...
prompt: "Read HEARTBEAT.md if it exists...",
ackMaxChars: 300,
suppressToolErrorWarnings: false,
@@ -1372,15 +1372,15 @@ harness app-server Codex.
}
```
-- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація API-key) або `1h` (автентифікація OAuth). Установіть `0m`, щоб вимкнути.
-- `includeSystemPromptSection`: коли false, прибирає розділ Heartbeat із system prompt і пропускає додавання `HEARTBEAT.md` до bootstrap-контексту. Типове значення: `true`.
-- `suppressToolErrorWarnings`: коли true, пригнічує payload-и попереджень про помилки інструментів під час запусків 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 виконують повні ходи агента — коротші інтервали спалюють більше токенів.
+- `every`: рядок тривалості (ms/s/m/h). Типово: `30m` (автентифікація API-key) або `1h` (автентифікація OAuth). Установіть `0m`, щоб вимкнути.
+- `includeSystemPromptSection`: якщо false, пропускає секцію Heartbeat у system prompt і не вставляє `HEARTBEAT.md` у bootstrap-контекст. Типово: `true`.
+- `suppressToolErrorWarnings`: якщо true, пригнічує payload-и попереджень про помилки інструментів під час запусків Heartbeat.
+- `timeoutSeconds`: максимальний час у секундах, дозволений для одного ходу агента Heartbeat перед перериванням. Якщо не вказано, використовується `agents.defaults.timeoutSeconds`.
+- `directPolicy`: політика прямої доставки/DM. `allow` (типово) дозволяє доставку на пряму ціль. `block` пригнічує доставку на пряму ціль і видає `reason=dm-blocked`.
+- `lightContext`: якщо true, запуски Heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів workspace.
+- `isolatedSession`: якщо true, кожен запуск Heartbeat відбувається в новому сеансі без попередньої історії розмови. Та сама схема ізоляції, що й у Cron `sessionTarget: "isolated"`. Зменшує витрати токенів на один Heartbeat приблизно зі ~100K до ~2-5K токенів.
+- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, Heartbeat запускається **лише для цих агентів**.
+- Heartbeat виконує повні ходи агента — коротші інтервали спалюють більше токенів.
### `agents.defaults.compaction`
@@ -1390,19 +1390,19 @@ harness app-server Codex.
defaults: {
compaction: {
mode: "safeguard", // default | safeguard
- provider: "my-provider", // id зареєстрованого Plugin provider для Compaction (необов’язково)
+ provider: "my-provider", // id of a registered compaction provider plugin (optional)
timeoutSeconds: 900,
reserveTokensFloor: 24000,
identifierPolicy: "strict", // strict | off | custom
- identifierInstructions: "Точно зберігайте ідентифікатори розгортання, ідентифікатори тікетів і пари host:port.", // використовується, коли identifierPolicy=custom
- postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторне додавання
- model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для Compaction
- notifyUser: true, // надсилати короткі сповіщення, коли Compaction починається та завершується (типово: false)
+ identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // used when identifierPolicy=custom
+ 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)
memoryFlush: {
enabled: true,
softThresholdTokens: 6000,
- systemPrompt: "Сеанс наближається до Compaction. Збережіть тривалі спогади зараз.",
- prompt: "Запишіть будь-які тривалі нотатки в memory/YYYY-MM-DD.md; дайте точну тиху відповідь токеном NO_REPLY, якщо зберігати нічого.",
+ systemPrompt: "Session nearing compaction. Store durable memories now.",
+ prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.",
},
},
},
@@ -1410,15 +1410,15 @@ harness app-server Codex.
}
```
-- `mode`: `default` або `safeguard` (підсумовування частинами для довгих історій). Див. [Compaction](/uk/concepts/compaction).
-- `provider`: id зареєстрованого Plugin provider для Compaction. Якщо задано, замість вбудованого підсумовування LLM викликається `summarize()` цього provider. У разі збою повертається до вбудованого варіанта. Установлення provider примусово вмикає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction).
-- `timeoutSeconds`: максимальна кількість секунд, дозволених для однієї операції Compaction, після чого OpenClaw перериває її. Типове значення: `900`.
-- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів на початку підсумовування Compaction.
-- `identifierInstructions`: необов’язковий власний текст щодо збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`.
-- `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 для збереження тривалих спогадів. Пропускається, коли робочий простір доступний лише для читання.
+- `mode`: `default` або `safeguard` (підсумовування шматками для довгих історій). Див. [Compaction](/uk/concepts/compaction).
+- `provider`: id зареєстрованого Plugin провайдера Compaction. Якщо встановлено, замість вбудованого підсумовування LLM викликається `summarize()` цього провайдера. У разі помилки повертається до вбудованого варіанта. Встановлення провайдера примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction).
+- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction перед тим, як OpenClaw перерве її. Типово: `900`.
+- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування Compaction.
+- `identifierInstructions`: необов’язковий власний текст про збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`.
+- `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 для збереження довготривалої пам’яті. Пропускається, якщо workspace доступний лише для читання.
### `agents.defaults.contextPruning`
@@ -1430,13 +1430,13 @@ harness app-server Codex.
defaults: {
contextPruning: {
mode: "cache-ttl", // off | cache-ttl
- ttl: "1h", // тривалість (ms/s/m/h), типова одиниця: хвилини
+ ttl: "1h", // duration (ms/s/m/h), default unit: minutes
keepLastAssistants: 3,
softTrimRatio: 0.3,
hardClearRatio: 0.5,
minPrunableToolChars: 50000,
softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 },
- hardClear: { enabled: true, placeholder: "[Вміст старого результату інструмента очищено]" },
+ hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" },
tools: { deny: ["browser", "canvas"] },
},
},
@@ -1447,24 +1447,24 @@ harness app-server Codex.
- `mode: "cache-ttl"` вмикає проходи обрізання.
-- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього торкання кешу).
-- Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім, якщо потрібно, повністю очищає старіші результати інструментів.
+- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього звернення до кешу).
+- Обрізання спочатку м’яко скорочує надто великі результати інструментів, а потім, за потреби, повністю очищає старіші результати інструментів.
-**М’яке обрізання** зберігає початок і кінець та вставляє посередині `...`.
+**М’яке скорочення** зберігає початок і кінець та вставляє `...` посередині.
-**Повне очищення** замінює весь результат інструмента заповнювачем.
+**Повне очищення** замінює весь результат інструмента на заповнювач.
Примітки:
-- Блоки зображень ніколи не обрізаються й не очищаються.
-- Співвідношення базуються на символах (приблизно), а не на точній кількості токенів.
+- Блоки зображень ніколи не скорочуються й не очищаються.
+- Співвідношення базуються на кількості символів (приблизно), а не на точній кількості токенів.
- Якщо існує менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається.
Докладніше про поведінку див. у [Session Pruning](/uk/concepts/session-pruning).
-### Потокова передача блоками
+### Блокове потокове передавання
```json5
{
@@ -1474,19 +1474,19 @@ harness app-server Codex.
blockStreamingBreak: "text_end", // text_end | message_end
blockStreamingChunk: { minChars: 800, maxChars: 1200 },
blockStreamingCoalesce: { idleMs: 1000 },
- humanDelay: { mode: "natural" }, // off | natural | custom (використовуйте minMs/maxMs)
+ humanDelay: { mode: "natural" }, // off | natural | custom (use minMs/maxMs)
},
},
}
```
-- Для каналів, відмінних від Telegram, потрібно явно задати `*.blockStreaming: true`, щоб увімкнути відповіді блоками.
+- Канали, крім Telegram, потребують явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді.
- Перевизначення для каналу: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типово `minChars: 1500`.
-- `humanDelay`: випадкова пауза між блоками відповіді. `natural` = 800–2500 мс. Перевизначення для окремого агента: `agents.list[].humanDelay`.
+- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення для окремого агента: `agents.list[].humanDelay`.
-Докладніше про поведінку та деталі розбиття див. у [Streaming](/uk/concepts/streaming).
+Докладніше про поведінку й деталі розбиття див. у [Streaming](/uk/concepts/streaming).
-### Індикатори набору
+### Індикатори набору тексту
```json5
{
@@ -1508,7 +1508,7 @@ harness app-server Codex.
### `agents.defaults.sandbox`
-Необов’язкове пісочницювання для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
+Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
```json5
{
@@ -1554,7 +1554,7 @@ harness app-server Codex.
identityFile: "~/.ssh/id_ed25519",
certificateFile: "~/.ssh/id_ed25519-cert.pub",
knownHostsFile: "~/.ssh/known_hosts",
- // Також підтримуються SecretRef / inline-вміст:
+ // SecretRefs / inline contents also supported:
// 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" },
@@ -1608,47 +1608,47 @@ harness app-server Codex.
**Backend:**
- `docker`: локальний runtime Docker (типово)
-- `ssh`: загальний віддалений runtime на основі SSH
+- `ssh`: загальний віддалений runtime через SSH
- `openshell`: runtime OpenShell
-Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переміщуються до
+Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переносяться в
`plugins.entries.openshell.config`.
**Конфігурація backend SSH:**
-- `target`: ціль SSH у формі `user@host[:port]`
+- `target`: ціль SSH у форматі `user@host[:port]`
- `command`: команда клієнта SSH (типово: `ssh`)
-- `workspaceRoot`: абсолютний віддалений корінь, що використовується для робочих просторів за scope
+- `workspaceRoot`: абсолютний віддалений корінь, який використовується для workspace відповідного scope
- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, передані в OpenSSH
-- `identityData` / `certificateData` / `knownHostsData`: inline-вміст або SecretRef, які OpenClaw матеріалізує у тимчасові файли під час runtime
-- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хостів OpenSSH
+- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, який OpenClaw матеріалізує у тимчасові файли під час runtime
+- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH
**Пріоритет автентифікації SSH:**
- `identityData` має пріоритет над `identityFile`
- `certificateData` має пріоритет над `certificateFile`
- `knownHostsData` має пріоритет над `knownHostsFile`
-- Значення `*Data` на основі SecretRef визначаються з активного знімка runtime секретів до початку сеансу sandbox
+- Значення `*Data`, що використовують SecretRef, визначаються з активного знімка runtime секретів перед запуском sandbox-сеансу
**Поведінка backend SSH:**
-- один раз ініціалізує віддалений робочий простір після створення або повторного створення
-- потім зберігає віддалений робочий простір SSH як канонічний
-- маршрутизує `exec`, файлові інструменти та шляхи до медіа через SSH
+- один раз ініціалізує віддалений workspace після створення або повторного створення
+- потім зберігає віддалений SSH-workspace як канонічний
+- спрямовує `exec`, файлові інструменти та шляхи медіа через SSH
- не синхронізує віддалені зміни назад на хост автоматично
-- не підтримує контейнерів browser у sandbox
+- не підтримує браузерні контейнери sandbox
-**Доступ до робочого простору:**
+**Доступ до workspace:**
-- `none`: робочий простір sandbox за scope у `~/.openclaw/sandboxes`
-- `ro`: робочий простір sandbox у `/workspace`, робочий простір агента змонтовано лише для читання в `/agent`
-- `rw`: робочий простір агента змонтовано для читання/запису в `/workspace`
+- `none`: workspace sandbox для кожного scope у `~/.openclaw/sandboxes`
+- `ro`: workspace sandbox у `/workspace`, workspace агента монтується лише для читання в `/agent`
+- `rw`: workspace агента монтується для читання й запису в `/workspace`
**Scope:**
-- `session`: окремий контейнер + робочий простір для сеансу
-- `agent`: один контейнер + робочий простір на агента (типово)
-- `shared`: спільний контейнер і робочий простір (без ізоляції між сеансами)
+- `session`: окремий контейнер + workspace для кожного сеансу
+- `agent`: один контейнер + workspace на агента (типово)
+- `shared`: спільний контейнер і workspace (без ізоляції між сеансами)
**Конфігурація Plugin OpenShell:**
@@ -1663,10 +1663,10 @@ harness app-server Codex.
from: "openclaw",
remoteWorkspaceDir: "/sandbox",
remoteAgentWorkspaceDir: "/agent",
- gateway: "lab", // необов’язково
- gatewayEndpoint: "https://lab.example", // необов’язково
- policy: "strict", // необов’язковий id політики OpenShell
- providers: ["openai"], // необов’язково
+ gateway: "lab", // optional
+ gatewayEndpoint: "https://lab.example", // optional
+ policy: "strict", // optional OpenShell policy id
+ providers: ["openai"], // optional
autoProviders: true,
timeoutSeconds: 120,
},
@@ -1678,30 +1678,30 @@ harness app-server Codex.
**Режим OpenShell:**
-- `mirror`: ініціалізує віддалений простір із локального перед exec, синхронізує назад після exec; локальний робочий простір залишається канонічним
-- `remote`: ініціалізує віддалений простір один раз під час створення sandbox, потім зберігає віддалений робочий простір канонічним
+- `mirror`: ініціалізує віддалене середовище з локального перед `exec`, синхронізує назад після `exec`; локальний workspace залишається канонічним
+- `remote`: ініціалізує віддалене середовище один раз під час створення sandbox, потім віддалений workspace залишається канонічним
-У режимі `remote` локальні зміни на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку ініціалізації.
-Транспорт — SSH до sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою синхронізацією mirror.
+У режимі `remote` локальні редагування на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після початкового етапу.
+Транспортом є SSH до sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою sync у режимі mirror.
-**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує вихідного мережевого доступу, кореня з можливістю запису, користувача root.
+**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, записуваного кореня та користувача root.
-**Для контейнерів типово використовується `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихідний доступ.
+**Контейнери типово використовують `network: "none"`** — установіть `"bridge"` (або власну мережу bridge), якщо агенту потрібен вихід назовні.
`"host"` заблоковано. `"container:"` типово заблоковано, якщо ви явно не встановите
-`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (режим break-glass).
+`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний режим).
-**Вхідні вкладення** розміщуються в `media/inbound/*` у активному робочому просторі.
+**Вхідні вкладення** розміщуються в `media/inbound/*` в активному workspace.
-**`docker.binds`** монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для окремого агента об’єднуються.
+**`docker.binds`** монтує додаткові каталоги хоста; глобальні bind-монтування та bind-монтування для окремого агента об’єднуються.
-**Browser у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC додається до system prompt. Не вимагає `browser.enabled` в `openclaw.json`.
-Доступ спостерігача через noVNC типово використовує автентифікацію VNC, а OpenClaw видає URL із короткоживучим токеном (замість розкриття пароля у спільному URL).
+**Ізольований браузер** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вставляється в system prompt. Не потребує `browser.enabled` в `openclaw.json`.
+Доступ спостерігача через noVNC типово використовує автентифікацію VNC, а OpenClaw видає URL з короткоживучим токеном (замість того, щоб показувати пароль у спільному URL).
-- `allowHostControl: false` (типово) блокує націлювання сеансів у sandbox на browser хоста.
-- `network` типово має значення `openclaw-sandbox-browser` (виділена bridge-мережа). Установлюйте `bridge` лише тоді, коли вам явно потрібна глобальна підключеність bridge.
-- `cdpSourceRange` за потреби обмежує вхідний CDP на межі контейнера до діапазону CIDR (наприклад `172.21.0.1/32`).
-- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер browser у sandbox. Якщо задано (включно з `[]`), він замінює `docker.binds` для контейнера browser.
-- Типові параметри запуску визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для хостів контейнерів:
+- `allowHostControl: false` (типово) блокує для ізольованих сеансів націлювання на браузер хоста.
+- `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`
@@ -1718,28 +1718,28 @@ harness app-server Codex.
- `--renderer-process-limit=2`
- `--no-zygote`
- `--metrics-recording-only`
- - `--disable-extensions` (типово ввімкнено)
+ - `--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_GRAPHICS_FLAGS=0`, якщо це потрібно для WebGL/3D.
+ - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає розширення, якщо
+ ваш робочий процес залежить від них.
- `--renderer-process-limit=2` можна змінити через
`OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати
типове обмеження процесів Chromium.
- - а також `--no-sandbox` і `--disable-setuid-sandbox`, коли ввімкнено `noSandbox`.
- - Типові значення є базовими для образу контейнера; щоб змінити типові параметри контейнера, використовуйте власний
- образ browser із власним entrypoint.
+ - а також `--no-sandbox` і `--disable-setuid-sandbox`, коли увімкнено `noSandbox`.
+ - Значення за замовчуванням — це базова конфігурація образу контейнера; використовуйте власний образ браузера з власною
+ точкою входу, щоб змінити типові параметри контейнера.
-Пісочницювання browser і `sandbox.docker.binds` підтримуються лише для Docker.
+Ізоляція браузера та `sandbox.docker.binds` працюють лише з Docker.
-Збирання образів:
+Зібрати образи:
```bash
scripts/sandbox-setup.sh # основний образ sandbox
-scripts/sandbox-browser-setup.sh # необов’язковий образ browser
+scripts/sandbox-browser-setup.sh # необов’язковий образ браузера
```
### `agents.list` (перевизначення для окремого агента)
@@ -1754,13 +1754,13 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
name: "Main Agent",
workspace: "~/.openclaw/workspace",
agentDir: "~/.openclaw/agents/main/agent",
- model: "anthropic/claude-opus-4-6", // або { primary, fallbacks }
- thinkingDefault: "high", // перевизначення рівня thinking для окремого агента
- reasoningDefault: "on", // перевизначення видимості reasoning для окремого агента
- fastModeDefault: false, // перевизначення fast mode для окремого агента
+ 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
embeddedHarness: { runtime: "auto", fallback: "pi" },
- params: { cacheRetention: "none" }, // перевизначає ключі відповідних defaults.models params
- skills: ["docs-search"], // замінює agents.defaults.skills, якщо задано
+ params: { cacheRetention: "none" }, // overrides matching defaults.models params by key
+ skills: ["docs-search"], // replaces agents.defaults.skills when set
identity: {
name: "Samantha",
theme: "helpful sloth",
@@ -1793,19 +1793,19 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
- `id`: стабільний 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`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для повідомлення або сеансу.
-- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для повідомлення або сеансу.
-- `fastModeDefault`: необов’язкове типове значення fast mode для окремого агента (`true | false`). Застосовується, коли не задано перевизначення fast mode для повідомлення або сеансу.
-- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий fallback до PI.
-- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сеанси harness ACP.
-- `identity.avatar`: шлях відносно робочого простору, URL `http(s)` або URI `data:`.
+- `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`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, якщо не задано перевизначення для окремого повідомлення або сеансу.
+- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для окремого повідомлення або сеансу.
+- `fastModeDefault`: необов’язкове типове значення fast mode для окремого агента (`true | false`). Застосовується, коли не задано перевизначення fast mode для окремого повідомлення або сеансу.
+- `embeddedHarness`: необов’язкове перевизначення низькорівневої політики harness для окремого агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб зробити один агент лише для Codex, поки інші агенти зберігають типовий fallback PI.
+- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати ACP harness-сеанси.
+- `identity.avatar`: шлях відносно workspace, URL `http(s)` або URI `data:`.
- `identity` виводить типові значення: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`.
- `subagents.allowAgents`: список дозволених id агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент).
-- Захист успадкування sandbox: якщо сеанс-запитувач працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б поза sandbox.
-- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, у яких пропущено `agentId` (примушує явний вибір профілю; типово: false).
+- Захист успадкування sandbox: якщо сеанс запитувача працює в sandbox, `sessions_spawn` відхиляє цілі, які виконувалися б без sandbox.
+- `subagents.requireAgentId`: якщо true, блокує виклики `sessions_spawn`, які не задають `agentId` (примушує до явного вибору профілю; типово: false).
---
@@ -1828,29 +1828,29 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
}
```
-### Поля відповідності прив’язки
+### Поля зіставлення прив’язок
-- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній type типово означає route), `acp` для постійних прив’язок розмов ACP.
+- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній `type` типово означає 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 }`
+- `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: "*"` (на рівні всього каналу)
+5. `match.accountId: "*"` (на весь канал)
6. Типовий агент
-У межах кожного рівня перший відповідний запис `bindings` має пріоритет.
+У межах кожного рівня перший відповідний запис у `bindings` має пріоритет.
-Для записів `type: "acp"` OpenClaw виконує визначення за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує наведений вище порядок рівнів прив’язок route.
+Для записів `type: "acp"` OpenClaw визначає відповідність за точною ідентичністю розмови (`match.channel` + обліковий запис + `match.peer.id`) і не використовує наведений вище порядок рівнів маршрутної прив’язки.
-### Профілі доступу для окремих агентів
+### Профілі доступу для окремого агента
@@ -1870,7 +1870,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
-
+
```json5
{
@@ -1971,22 +1971,22 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
},
resetTriggers: ["/new", "/reset"],
store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",
- parentForkMaxTokens: 100000, // пропускати fork батьківського потоку вище цього ліміту токенів (0 вимикає)
+ parentForkMaxTokens: 100000, // skip parent-thread fork above this token count (0 disables)
maintenance: {
mode: "warn", // warn | enforce
pruneAfter: "30d",
maxEntries: 500,
rotateBytes: "10mb",
- resetArchiveRetention: "30d", // тривалість або false
- maxDiskBytes: "500mb", // необов’язковий жорсткий бюджет
- highWaterBytes: "400mb", // необов’язкова ціль очищення
+ resetArchiveRetention: "30d", // duration or false
+ maxDiskBytes: "500mb", // optional hard budget
+ highWaterBytes: "400mb", // optional cleanup target
},
threadBindings: {
enabled: true,
- idleHours: 24, // типове автоматичне зняття фокуса через неактивність у годинах (`0` вимикає)
- maxAgeHours: 0, // типовий жорсткий максимальний вік у годинах (`0` вимикає)
+ idleHours: 24, // default inactivity auto-unfocus in hours (`0` disables)
+ maxAgeHours: 0, // default hard max age in hours (`0` disables)
},
- mainKey: "main", // застаріле (runtime завжди використовує "main")
+ mainKey: "main", // legacy (runtime always uses "main")
agentToAgent: { maxPingPongTurns: 5 },
sendPolicy: {
rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }],
@@ -2000,33 +2000,33 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
- **`scope`**: базова стратегія групування сеансів для контекстів групового чату.
- `per-sender` (типово): кожен відправник отримує ізольований сеанс у межах контексту каналу.
- - `global`: усі учасники в контексті каналу спільно використовують один сеанс (використовуйте лише тоді, коли спільний контекст справді задумано).
+ - `global`: усі учасники в контексті каналу спільно використовують один сеанс (використовуйте лише тоді, коли спільний контекст справді потрібен).
- **`dmScope`**: як групуються DM.
- - `main`: усі DM спільно використовують головний сеанс.
+ - `main`: усі DM спільно використовують основний сеанс.
- `per-peer`: ізоляція за id відправника між каналами.
- `per-channel-peer`: ізоляція для кожної пари канал + відправник (рекомендовано для вхідних скриньок із кількома користувачами).
- - `per-account-channel-peer`: ізоляція для кожної комбінації обліковий запис + канал + відправник (рекомендовано для багатообліковості).
-- **`identityLinks`**: зіставляє канонічні id з peer-ідентифікаторами з префіксом provider для спільного використання сеансів між каналами.
-- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва варіанти, спрацьовує той, що настає раніше.
-- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застарілий `dm` приймається як alias для `direct`.
-- **`parentForkMaxTokens`**: максимальне значення `totalTokens` батьківського сеансу, дозволене під час створення forked-сеансу потоку (типово `100000`).
- - Якщо `totalTokens` батьківського сеансу перевищує це значення, OpenClaw запускає новий сеанс потоку замість успадкування історії транскрипту батьківського сеансу.
- - Установіть `0`, щоб вимкнути цей запобіжник і завжди дозволяти forking від батьківського сеансу.
-- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для головного прямого кошика чату.
-- **`agentToAgent.maxPingPongTurns`**: максимальна кількість ходів відповіді назад між агентами під час обмінів агент-до-агента (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжок ping-pong.
-- **`sendPolicy`**: відповідність за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перший deny має пріоритет.
-- **`maintenance`**: очищення сховища сеансів + керування зберіганням.
+ - `per-account-channel-peer`: ізоляція для кожної трійки обліковий запис + канал + відправник (рекомендовано для багатообліковості).
+- **`identityLinks`**: зіставляє канонічні id із peer-ідентифікаторами з префіксом провайдера для спільного використання сеансів між каналами.
+- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва варіанти, спрацьовує той, який настає раніше.
+- **`resetByType`**: перевизначення для окремих типів (`direct`, `group`, `thread`). Застарілий `dm` приймається як псевдонім для `direct`.
+- **`parentForkMaxTokens`**: максимальний `totalTokens` батьківського сеансу, дозволений під час створення форкнутого сеансу гілки (типово `100000`).
+ - Якщо `totalTokens` батьківського сеансу перевищує це значення, OpenClaw починає новий сеанс гілки замість успадкування історії транскрипту батьківського сеансу.
+ - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти форкування від батьківського сеансу.
+- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для основного кошика прямого чату.
+- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів відповіді між агентами під час обміну агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжок ping-pong.
+- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перший deny має пріоритет.
+- **`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`.
-- **`threadBindings`**: глобальні типові значення для функцій сеансів, прив’язаних до потоків.
- - `enabled`: головний типовий перемикач (provider-и можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
- - `idleHours`: типове автоматичне зняття фокуса через неактивність у годинах (`0` вимикає; provider-и можуть перевизначати)
- - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; provider-и можуть перевизначати)
+ - `rotateBytes`: ротує `sessions.json`, коли його розмір перевищує це значення (типово `10mb`).
+ - `resetArchiveRetention`: термін зберігання архівів транскрипту `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
+ - `maxDiskBytes`: необов’язковий жорсткий бюджет дискового простору для каталогу сеансів. У режимі `warn` записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сеанси.
+ - `highWaterBytes`: необов’язкова ціль після очищення за бюджетом. Типово `80%` від `maxDiskBytes`.
+- **`threadBindings`**: глобальні типові значення для функцій сеансів, прив’язаних до гілок.
+ - `enabled`: головний типовий перемикач (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
+ - `idleHours`: типове автоматичне зняття фокуса через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати)
+ - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; провайдери можуть перевизначати)
@@ -2037,7 +2037,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
```json5
{
messages: {
- responsePrefix: "🦞", // або "auto"
+ responsePrefix: "🦞", // or "auto"
ackReaction: "👀",
ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all
removeAckAfterReply: false,
@@ -2052,7 +2052,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
},
},
inbound: {
- debounceMs: 2000, // 0 вимикає
+ debounceMs: 2000, // 0 disables
byChannel: {
whatsapp: 5000,
slack: 1500,
@@ -2064,36 +2064,36 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
### Префікс відповіді
-Перевизначення для каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`.
+Перевизначення для окремого каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`.
-Визначення (найспецифічніше має пріоритет): обліковий запис → канал → глобальне значення. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
+Визначення значення (найспецифічніше має пріоритет): обліковий запис → канал → глобальне. `""` вимикає й зупиняє каскадування. `"auto"` виводить `[{identity.name}]`.
**Змінні шаблону:**
-| Змінна | Опис | Приклад |
-| ---------------- | ---------------------- | --------------------------- |
-| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
-| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
-| `{provider}` | Назва provider | `anthropic` |
-| `{thinkingLevel}`| Поточний рівень thinking | `high`, `low`, `off` |
-| `{identity.name}`| Назва identity агента | (те саме, що `"auto"`) |
+| Змінна | Опис | Приклад |
+| ----------------- | ------------------------ | --------------------------- |
+| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
+| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
+| `{provider}` | Назва провайдера | `anthropic` |
+| `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` |
+| `{identity.name}` | Назва identity агента | (те саме, що й `"auto"`) |
-Змінні нечутливі до регістру. `{think}` є alias для `{thinkingLevel}`.
+Змінні нечутливі до регістру. `{think}` — псевдонім для `{thinkingLevel}`.
-### Реакція підтвердження
+### Реакція-підтвердження
-- Типово береться з `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
-- Перевизначення для каналу: `channels..ackReaction`, `channels..accounts..ackReaction`.
-- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервне значення з identity.
-- Scope: `group-mentions` (типово), `group-all`, `direct`, `all`.
-- `removeAckAfterReply`: прибирає підтвердження після відповіді у Slack, Discord і Telegram.
-- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram.
- У Slack і Discord, якщо значення не задано, реакції статусу залишаються ввімкненими, коли активні реакції підтвердження.
- У Telegram установіть це явно в `true`, щоб увімкнути реакції статусу життєвого циклу.
+- Типово використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
+- Перевизначення для окремого каналу: `channels..ackReaction`, `channels..accounts..ackReaction`.
+- Порядок визначення: обліковий запис → канал → `messages.ackReaction` → резервний варіант із identity.
+- Область дії: `group-mentions` (типово), `group-all`, `direct`, `all`.
+- `removeAckAfterReply`: видаляє підтвердження після відповіді у Slack, Discord і Telegram.
+- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу у Slack, Discord і Telegram.
+ У Slack і Discord відсутнє значення зберігає реакції статусу увімкненими, коли активні реакції-підтвердження.
+ У Telegram установіть це значення явно в `true`, щоб увімкнути реакції статусу життєвого циклу.
-### Debounce вхідних повідомлень
+### Inbound debounce
-Об’єднує швидкі текстові повідомлення від одного й того самого відправника в один хід агента. Медіа/вкладення скидаються негайно. Керувальні команди обходять debounce.
+Об’єднує швидкі текстові повідомлення від того самого відправника в один хід агента. Медіа/вкладення скидаються негайно. Керівні команди обходять debounce.
### TTS (text-to-speech)
@@ -2137,11 +2137,11 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
```
- `auto` керує типовим режимом auto-TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначати локальні налаштування, а `/tts status` показує фактичний стан.
-- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумку.
-- `modelOverrides` типово ввімкнено; `modelOverrides.allowProvider` типово має значення `false` (opt-in).
-- API key повертаються до `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`.
+- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумовування.
+- `modelOverrides` типово увімкнено; `modelOverrides.allowProvider` типово має значення `false` (потрібен явний opt-in).
+- API key як резервний варіант використовують `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`.
- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок визначення: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`.
-- Коли `openai.baseUrl` вказує на endpoint, відмінний від OpenAI, OpenClaw трактує його як OpenAI-compatible TTS-сервер і послаблює валідацію model/voice.
+- Коли `openai.baseUrl` вказує на endpoint, що не належить OpenAI, OpenClaw трактує його як сумісний з OpenAI TTS-сервер і послаблює перевірку моделі/голосу.
---
@@ -2171,13 +2171,13 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
}
```
-- `talk.provider` має збігатися з ключем у `talk.providers`, коли налаштовано кілька Talk provider.
-- Застарілі пласкі ключі 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 не налаштовано.
+- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька провайдерів Talk.
+- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) підтримуються лише для сумісності та автоматично мігруються в `talk.providers.`.
+- Для ID голосів як резервний варіант використовуються `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
+- `providers.*.apiKey` приймає прості текстові рядки або об’єкти SecretRef.
+- Резервний варіант `ELEVENLABS_API_KEY` застосовується лише тоді, коли API key Talk не налаштовано.
- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви.
-- `silenceTimeoutMs` керує тим, скільки часу режим Talk чекає після тиші користувача, перш ніж надіслати транскрипт. Якщо значення не задано, зберігається типове вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`).
+- `silenceTimeoutMs` визначає, скільки часу режим Talk чекає після тиші користувача перед надсиланням транскрипту. Якщо значення не задано, зберігається типове для платформи вікно паузи (`700 ms на macOS і Android, 900 ms на iOS`).
---
@@ -2185,37 +2185,37 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
### Профілі інструментів
-`tools.profile` задає базовий список дозволених перед `tools.allow`/`tools.deny`:
+`tools.profile` задає базовий список дозволів перед `tools.allow`/`tools.deny`:
-Локальний онбординг типово встановлює для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явні профілі зберігаються).
+Локальний онбординг типово виставляє для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явні профілі зберігаються).
| Профіль | Містить |
-| ---------- | ------------------------------------------------------------------------------------------------------------------------------ |
-| `minimal` | лише `session_status` |
+| ---------- | ------------------------------------------------------------------------------------------------------------------------------- |
+| `minimal` | лише `session_status` |
| `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` |
-| `messaging`| `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
-| `full` | Без обмежень (те саме, що не задано) |
+| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
+| `full` | Без обмежень (те саме, що й без значення) |
### Групи інструментів
-| Група | Інструменти |
-| ------------------ | --------------------------------------------------------------------------------------------------------------------- |
-| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як alias для `exec`) |
-| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
-| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` |
-| `group:memory` | `memory_search`, `memory_get` |
-| `group:web` | `web_search`, `x_search`, `web_fetch` |
-| `group:ui` | `browser`, `canvas` |
+| Група | Інструменти |
+| ----------------- | ---------------------------------------------------------------------------------------------------------------------- |
+| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) |
+| `group:fs` | `read`, `write`, `edit`, `apply_patch` |
+| `group:sessions` | `sessions_list`, `sessions_history`, `sessions_send`, `sessions_spawn`, `sessions_yield`, `subagents`, `session_status` |
+| `group:memory` | `memory_search`, `memory_get` |
+| `group:web` | `web_search`, `x_search`, `web_fetch` |
+| `group:ui` | `browser`, `canvas` |
| `group:automation` | `cron`, `gateway` |
-| `group:messaging` | `message` |
-| `group:nodes` | `nodes` |
-| `group:agents` | `agents_list` |
-| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
-| `group:openclaw` | Усі вбудовані інструменти (без provider Plugin) |
+| `group:messaging` | `message` |
+| `group:nodes` | `nodes` |
+| `group:agents` | `agents_list` |
+| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
+| `group:openclaw` | Усі вбудовані інструменти (не включає Plugin провайдерів) |
### `tools.allow` / `tools.deny`
-Глобальна політика дозволу/заборони інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено.
+Глобальна політика дозволу/заборони інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard-и `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено.
```json5
{
@@ -2225,7 +2225,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
### `tools.byProvider`
-Додатково обмежує інструменти для конкретних provider або моделей. Порядок: базовий профіль → профіль provider → allow/deny.
+Додатково обмежує інструменти для конкретних провайдерів або моделей. Порядок: базовий профіль → профіль провайдера → allow/deny.
```json5
{
@@ -2241,7 +2241,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
### `tools.elevated`
-Керує elevated-доступом до exec поза sandbox:
+Керує підвищеним доступом exec поза sandbox:
```json5
{
@@ -2258,8 +2258,8 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
```
- Перевизначення для окремого агента (`agents.list[].tools.elevated`) може лише додатково обмежувати.
-- `/elevated on|off|ask|full` зберігає стан для кожного сеансу; inline-директиви застосовуються до одного повідомлення.
-- Elevated `exec` обходить sandbox і використовує налаштований escape path (`gateway` типово або `node`, коли ціль exec — `node`).
+- `/elevated on|off|ask|full` зберігає стан для кожного сеансу; вбудовані директиви застосовуються до одного повідомлення.
+- Підвищений `exec` обходить sandbox і використовує налаштований шлях виходу (`gateway` типово або `node`, коли ціль exec — `node`).
### `tools.exec`
@@ -2283,7 +2283,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
### `tools.loopDetection`
-Перевірки безпеки циклів інструментів **типово вимкнені**. Установіть `enabled: true`, щоб увімкнути виявлення.
+Перевірки безпеки циклів інструментів типово **вимкнені**. Установіть `enabled: true`, щоб увімкнути виявлення.
Налаштування можна визначати глобально в `tools.loopDetection` і перевизначати для окремого агента в `agents.list[].tools.loopDetection`.
```json5
@@ -2306,12 +2306,12 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
```
- `historySize`: максимальна історія викликів інструментів, що зберігається для аналізу циклів.
-- `warningThreshold`: поріг повторюваного патерну без прогресу для попереджень.
-- `criticalThreshold`: вищий поріг повторення для блокування критичних циклів.
-- `globalCircuitBreakerThreshold`: жорсткий поріг зупинки для будь-якого запуску без прогресу.
-- `detectors.genericRepeat`: попереджати про повторні виклики одного й того самого інструмента з однаковими аргументами.
+- `warningThreshold`: поріг повторюваного патерна без прогресу для попереджень.
+- `criticalThreshold`: вищий поріг повторень для блокування критичних циклів.
+- `globalCircuitBreakerThreshold`: поріг жорсткої зупинки для будь-якого запуску без прогресу.
+- `detectors.genericRepeat`: попереджати про повторні виклики того самого інструмента з тими самими аргументами.
- `detectors.knownPollNoProgress`: попереджати/блокувати відомі poll-інструменти (`process.poll`, `command_status` тощо).
-- `detectors.pingPong`: попереджати/блокувати чергувальні патерни пар без прогресу.
+- `detectors.pingPong`: попереджати/блокувати чергування парних патернів без прогресу.
- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, валідація завершується помилкою.
### `tools.web`
@@ -2322,14 +2322,14 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
web: {
search: {
enabled: true,
- apiKey: "brave_api_key", // або env BRAVE_API_KEY
+ apiKey: "brave_api_key", // or BRAVE_API_KEY env
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
fetch: {
enabled: true,
- provider: "firecrawl", // необов’язково; пропустіть для auto-detect
+ provider: "firecrawl", // optional; omit for auto-detect
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
@@ -2354,7 +2354,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
media: {
concurrency: 2,
asyncCompletion: {
- directSend: false, // opt-in: надсилати завершені асинхронні music/video безпосередньо в канал
+ directSend: false, // opt-in: send finished async music/video directly to the channel
},
audio: {
enabled: true,
@@ -2380,11 +2380,11 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
-**Запис provider** (`type: "provider"` або пропущено):
+**Запис провайдера** (`type: "provider"` або пропущено):
-- `provider`: id API provider (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
+- `provider`: id API-провайдера (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
- `model`: перевизначення id моделі
-- `profile` / `preferredProfile`: вибір профілю `auth-profiles.json`
+- `profile` / `preferredProfile`: вибір профілю з `auth-profiles.json`
**Запис CLI** (`type: "cli"`):
@@ -2395,14 +2395,14 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
- `capabilities`: необов’язковий список (`image`, `audio`, `video`). Типові значення: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для окремого запису.
-- У разі помилки використовується наступний запис.
+- У разі помилки виконується перехід до наступного запису.
-Автентифікація provider дотримується стандартного порядку: `auth-profiles.json` → env vars → `models.providers.*.apiKey`.
+Автентифікація провайдера використовує стандартний порядок: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
-**Поля асинхронного завершення:**
+**Поля async completion:**
-- `asyncCompletion.directSend`: коли `true`, завершені асинхронні завдання `music_generate`
- і `video_generate` спершу намагаються доставлятися прямо в канал. Типове значення: `false`
+- `asyncCompletion.directSend`: коли `true`, завершені асинхронні задачі `music_generate`
+ і `video_generate` спочатку намагаються доставитися безпосередньо в канал. Типово: `false`
(застарілий шлях пробудження сеансу запитувача/доставки моделі).
@@ -2422,9 +2422,9 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
### `tools.sessions`
-Керує тим, на які сеанси можуть націлюватися інструменти сеансів (`sessions_list`, `sessions_history`, `sessions_send`).
+Керує тим, які сеанси можуть бути ціллю для інструментів сеансів (`sessions_list`, `sessions_history`, `sessions_send`).
-Типове значення: `tree` (поточний сеанс + сеанси, породжені ним, наприклад subagents).
+Типово: `tree` (поточний сеанс + сеанси, породжені ним, наприклад subagents).
```json5
{
@@ -2442,23 +2442,23 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
- `self`: лише ключ поточного сеансу.
- `tree`: поточний сеанс + сеанси, породжені поточним сеансом (subagents).
- `agent`: будь-який сеанс, що належить поточному id агента (може включати інших користувачів, якщо ви запускаєте сеанси per-sender під тим самим id агента).
-- `all`: будь-який сеанс. Націлювання між агентами все одно вимагає `tools.agentToAgent`.
-- Обмеження sandbox: коли поточний сеанс працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, visibility примусово встановлюється на `tree`, навіть якщо `tools.sessions.visibility="all"`.
+- `all`: будь-який сеанс. Націлювання між агентами все одно потребує `tools.agentToAgent`.
+- Обмеження sandbox: коли поточний сеанс працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
-Керує підтримкою inline-вкладень для `sessions_spawn`.
+Керує підтримкою вбудованих вкладень для `sessions_spawn`.
```json5
{
tools: {
sessions_spawn: {
attachments: {
- enabled: false, // opt-in: установіть true, щоб дозволити inline-вкладення файлів
- maxTotalBytes: 5242880, // 5 MB сумарно для всіх файлів
+ enabled: false, // opt-in: set true to allow inline file attachments
+ maxTotalBytes: 5242880, // 5 MB total across all files
maxFiles: 50,
- maxFileBytes: 1048576, // 1 MB на файл
- retainOnSessionKeep: false, // зберігати вкладення, коли cleanup="keep"
+ maxFileBytes: 1048576, // 1 MB per file
+ retainOnSessionKeep: false, // keep attachments when cleanup="keep"
},
},
},
@@ -2468,21 +2468,21 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
Примітки:
- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP їх відхиляє.
-- Файли матеріалізуються в дочірньому робочому просторі в `.openclaw/attachments//` разом із `.manifest.json`.
-- Вміст вкладень автоматично редагується в збереженні транскрипту.
-- Входи Base64 перевіряються з суворими перевірками алфавіту/відступів і захистом розміру до декодування.
+- Файли матеріалізуються в дочірньому workspace у `.openclaw/attachments//` разом із `.manifest.json`.
+- Вміст вкладень автоматично редагується під час збереження транскрипту.
+- Входи base64 перевіряються суворою перевіркою алфавіту/відступів і захистом розміру до декодування.
- Права доступу до файлів: `0700` для каталогів і `0600` для файлів.
-- Очищення підпорядковується політиці `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`.
+- Очищення виконується згідно з політикою `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише тоді, коли `retainOnSessionKeep: true`.
### `tools.experimental`
-Прапорці експериментальних вбудованих інструментів. Типово вимкнено, якщо не спрацьовує правило автоувімкнення strict-agentic GPT-5.
+Прапори експериментальних вбудованих інструментів. Типово вимкнено, якщо не застосовується правило автоматичного ввімкнення strict-agentic GPT-5.
```json5
{
tools: {
experimental: {
- planTool: true, // увімкнути експериментальний update_plan
+ planTool: true, // enable experimental update_plan
},
},
}
@@ -2491,8 +2491,8 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
Примітки:
- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи.
-- Типове значення: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено на `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цією областю, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
-- Коли увімкнено, system prompt також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й тримала не більше одного кроку в стані `in_progress`.
+- Типово: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено в `"strict-agentic"` для запуску родини OpenAI або OpenAI Codex GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цим сценарієм, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
+- Коли інструмент увімкнено, system prompt також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й тримала не більш як один крок у стані `in_progress`.
### `agents.defaults.subagents`
@@ -2512,21 +2512,21 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ br
}
```
-- `model`: типова модель для породжених sub-agents. Якщо значення пропущено, sub-agents успадковують модель викликача.
-- `allowAgents`: типовий список дозволених цільових id агентів для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; типово: лише той самий агент).
-- `runTimeoutSeconds`: типовий тайм-аут (у секундах) для `sessions_spawn`, коли у виклику інструмента пропущено `runTimeoutSeconds`. `0` означає відсутність тайм-ауту.
+- `model`: типова модель для запущених subagents. Якщо не вказано, subagents успадковують модель викликача.
+- `allowAgents`: типовий список дозволених id агентів-цілей для `sessions_spawn`, коли агент-запитувач не задає власне `subagents.allowAgents` (`["*"]` = будь-який; типово: лише той самий агент).
+- `runTimeoutSeconds`: типовий тайм-аут (у секундах) для `sessions_spawn`, коли виклик інструмента не задає `runTimeoutSeconds`. `0` означає відсутність тайм-ауту.
- Політика інструментів для subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
-## Користувацькі provider і base URL
+## Власні провайдери та base URL
-OpenClaw використовує вбудований каталог моделей. Додавайте користувацьких provider через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`.
+OpenClaw використовує вбудований каталог моделей. Додавайте власних провайдерів через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`.
```json5
{
models: {
- mode: "merge", // merge (типово) | replace
+ mode: "merge", // merge (default) | replace
providers: {
"custom-proxy": {
baseUrl: "http://localhost:4000/v1",
@@ -2550,50 +2550,50 @@ OpenClaw використовує вбудований каталог модел
}
```
-- Використовуйте `authHeader: true` + `headers` для користувацьких потреб автентифікації.
+- Використовуйте `authHeader: true` + `headers` для власних потреб автентифікації.
- Перевизначайте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий псевдонім змінної середовища).
-- Пріоритет злиття для відповідних id provider:
- - Непорожні значення `baseUrl` з agent `models.json` мають пріоритет.
- - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цим provider не керує SecretRef у поточному контексті config/auth-profile.
- - Значення `apiKey` provider, якими керує SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env-ref, `secretref-managed` для file/exec-ref) замість збереження розв’язаних секретів.
- - Значення заголовків provider, якими керує SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env-ref, `secretref-managed` для file/exec-ref).
- - Порожні або відсутні `apiKey`/`baseUrl` агента повертаються до `models.providers` у конфігурації.
- - Для відповідних моделей `contextWindow`/`maxTokens` використовують вище значення між явною конфігурацією та неявними значеннями каталогу.
- - Для відповідних моделей `contextTokens` зберігає явне обмеження runtime, коли воно присутнє; використовуйте це, щоб обмежити фактичний контекст без зміни нативних метаданих моделі.
- - Використовуйте `models.mode: "replace"`, якщо хочете, щоб конфігурація повністю переписувала `models.json`.
- - Збереження маркерів є джерельно-авторитетним: маркери записуються з активного знімка конфігурації джерела (до розв’язання), а не з розв’язаних runtime-значень секретів.
+- Пріоритет об’єднання для однакових ID провайдерів:
+ - Непорожні значення `baseUrl` з `models.json` агента мають пріоритет.
+ - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті config/auth-profile.
+ - Значення `apiKey` провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env-ref, `secretref-managed` для file/exec-ref) замість збереження визначених секретів.
+ - Значення заголовків провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env-ref, `secretref-managed` для file/exec-ref).
+ - Порожні або відсутні `apiKey`/`baseUrl` агента використовують резервне значення з `models.providers` у конфігурації.
+ - Для однакових моделей `contextWindow`/`maxTokens` використовують вище значення між явною конфігурацією та неявними значеннями каталогу.
+ - Для однакових моделей `contextTokens` зберігає явний ліміт runtime, якщо він присутній; використовуйте його, щоб обмежити фактичний контекст без зміни нативних метаданих моделі.
+ - Використовуйте `models.mode: "replace"`, якщо хочете, щоб конфігурація повністю переписала `models.json`.
+ - Збереження маркерів є авторитетним за джерелом: маркери записуються з активного знімка конфігурації джерела (до визначення), а не з визначених значень секретів runtime.
-### Деталі полів provider
+### Деталі полів провайдера
-- `models.mode`: поведінка каталогу provider (`merge` або `replace`).
-- `models.providers`: мапа користувацьких provider, ключована за id provider.
+- `models.mode`: поведінка каталогу провайдерів (`merge` або `replace`).
+- `models.providers`: карта власних провайдерів, ключована за id провайдера.
- `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо).
-- `models.providers.*.apiKey`: облікові дані provider (надавайте перевагу SecretRef/env substitution).
+- `models.providers.*.apiKey`: облікові дані провайдера (надавайте перевагу SecretRef/підстановці з env).
- `models.providers.*.auth`: стратегія автентифікації (`api-key`, `token`, `oauth`, `aws-sdk`).
-- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` додавати `options.num_ctx` у запити (типово: `true`).
-- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, коли це потрібно.
-- `models.providers.*.baseUrl`: базовий URL висхідного API.
-- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації proxy/tenant.
-- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів provider моделі.
- - `request.headers`: додаткові заголовки (зливаються з типовими значеннями provider). Значення приймають SecretRef.
- - `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію provider), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов’язковим `prefix`).
- - `request.proxy`: перевизначення HTTP proxy. Режими: `"env-proxy"` (використовувати env vars `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (з `url`). Обидва режими приймають необов’язковий підоб’єкт `tls`.
+- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вставляє `options.num_ctx` у запити (типово: `true`).
+- `models.providers.*.authHeader`: примусово передає облікові дані в заголовку `Authorization`, коли це потрібно.
+- `models.providers.*.baseUrl`: базовий URL API upstream.
+- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації через proxy/tenant.
+- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів провайдера моделей.
+ - `request.headers`: додаткові заголовки (об’єднуються з типовими значеннями провайдера). Значення приймають SecretRef.
+ - `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію провайдера), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов’язковим `prefix`).
+ - `request.proxy`: перевизначення HTTP-proxy. Режими: `"env-proxy"` (використовувати змінні середовища `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (з `url`). Обидва режими приймають необов’язковий підоб’єкт `tls`.
- `request.tls`: перевизначення TLS для прямих з’єднань. Поля: `ca`, `cert`, `key`, `passphrase` (усі приймають SecretRef), `serverName`, `insecureSkipVerify`.
- - `request.allowPrivateNetwork`: коли `true`, дозволяє HTTPS до `baseUrl`, якщо DNS розв’язується у приватні, CGNAT або подібні діапазони, через захист HTTP fetch provider від SSRF (opt-in оператора для довірених самостійно розгорнутих OpenAI-compatible endpoint). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-gate fetch. Типове значення `false`.
-- `models.providers.*.models`: явні записи каталогу моделей provider.
+ - `request.allowPrivateNetwork`: коли `true`, дозволяє HTTPS до `baseUrl`, якщо DNS визначається в приватні, CGNAT або подібні діапазони, через захист HTTP fetch провайдера (opt-in оператора для довірених self-hosted endpoint OpenAI-compatible). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-захист fetch. Типово `false`.
+- `models.providers.*.models`: явні записи каталогу моделей провайдера.
- `models.providers.*.models.*.contextWindow`: метадані нативного вікна контексту моделі.
-- `models.providers.*.models.*.contextTokens`: необов’язкове runtime-обмеження контексту. Використовуйте це, коли вам потрібен менший фактичний бюджет контексту, ніж нативне `contextWindow` моделі.
+- `models.providers.*.models.*.contextTokens`: необов’язкове обмеження контексту runtime. Використовуйте це, коли хочете менший фактичний бюджет контексту, ніж нативний `contextWindow` моделі.
- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає типову поведінку OpenAI.
-- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-compatible chat endpoint, які приймають лише рядки. Коли `true`, OpenClaw сплющує масиви `messages[].content`, що містять лише текст, у звичайні рядки перед надсиланням запиту.
-- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань auto-discovery для Bedrock.
+- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-compatible chat endpoint, які приймають лише рядки. Коли `true`, OpenClaw сплющує масиви чисто текстового `messages[].content` у прості рядки перед надсиланням запиту.
+- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань авто-виявлення Bedrock.
- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути/вимкнути неявне виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.region`: регіон AWS для виявлення.
-- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр provider-id для цільового виявлення.
+- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр id провайдера для цільового виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: інтервал опитування для оновлення виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне вікно контексту для виявлених моделей.
- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість вихідних токенів для виявлених моделей.
-### Приклади provider
+### Приклади провайдерів
@@ -2629,7 +2629,7 @@ OpenClaw використовує вбудований каталог модел
}
```
-Використовуйте `cerebras/zai-glm-4.7` для Cerebras; `zai/glm-4.7` — для прямого Z.AI.
+Використовуйте `cerebras/zai-glm-4.7` для Cerebras; `zai/glm-4.7` для прямого Z.AI.
@@ -2663,11 +2663,11 @@ OpenClaw використовує вбудований каталог модел
}
```
-Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` приймаються як alias. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
+Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` — прийнятні псевдоніми. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
- Загальний endpoint: `https://api.z.ai/api/paas/v4`
-- Endpoint для кодування (типово): `https://api.z.ai/api/coding/paas/v4`
-- Для загального endpoint визначте користувацький provider із перевизначенням base URL.
+- Endpoint для кодування (типовий): `https://api.z.ai/api/coding/paas/v4`
+- Для загального endpoint визначте власного провайдера з перевизначенням base URL.
@@ -2708,9 +2708,9 @@ OpenClaw використовує вбудований каталог модел
Для endpoint у Китаї: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
-Нативні endpoint Moonshot оголошують сумісність використання streaming на спільному
-транспорті `openai-completions`, і OpenClaw прив’язує це до можливостей endpoint
-а не лише до вбудованого id provider.
+Нативні endpoint Moonshot заявляють сумісність використання потокової передачі на спільному
+транспорті `openai-completions`, і OpenClaw визначає це за можливостями endpoint,
+а не лише за вбудованим id провайдера.
@@ -2728,7 +2728,7 @@ OpenClaw використовує вбудований каталог модел
}
```
-Сумісний з Anthropic, вбудований provider. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`.
+Сумісний з Anthropic, вбудований провайдер. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`.
@@ -2811,8 +2811,8 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
`openclaw onboard --auth-choice minimax-global-api` або
`openclaw onboard --auth-choice minimax-cn-api`.
Каталог моделей типово містить лише M2.7.
-На Anthropic-compatible streaming-шляху OpenClaw типово вимикає thinking MiniMax,
-якщо ви явно не встановите `thinking` самостійно. `/fast on` або
+На Anthropıc-compatible шляху потокової передачі OpenClaw типово вимикає thinking MiniMax,
+якщо ви явно не задасте `thinking` самостійно. `/fast on` або
`params.fastMode: true` переписує `MiniMax-M2.7` на
`MiniMax-M2.7-highspeed`.
@@ -2820,7 +2820,7 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
-Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте потужну локальну модель через LM Studio Responses API на серйозному обладнанні; залишайте hosted-моделі об’єднаними для fallback.
+Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; зберігайте merged hosted-моделі як fallback.
@@ -2841,7 +2841,7 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
},
entries: {
"image-lab": {
- apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або відкритий рядок
+ apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string
env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },
},
peekaboo: { enabled: true },
@@ -2851,14 +2851,14 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
}
```
-- `allowBundled`: необов’язковий список дозволених лише для bundled Skills (керовані/робочі Skills не зачіпає).
+- `allowBundled`: необов’язковий список дозволів лише для bundled Skills (керовані/робочі Skills не зачіпаються).
- `load.extraDirs`: додаткові спільні корені Skills (найнижчий пріоритет).
-- `install.preferBrew`: коли true, надавати перевагу інсталяторам Homebrew, якщо `brew`
- доступний, перед поверненням до інших типів інсталяторів.
-- `install.nodeManager`: пріоритет node-інсталятора для специфікацій `metadata.openclaw.install`
+- `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-змінну (відкритий рядок або об’єкт SecretRef).
+- `entries..enabled: false` вимикає Skill, навіть якщо він bundled/встановлений.
+- `entries..apiKey`: зручний спосіб для Skills, що оголошують основну env-змінну (простий текстовий рядок або об’єкт SecretRef).
---
@@ -2886,47 +2886,47 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
}
```
-- Завантажуються з `~/.openclaw/extensions`, `/.openclaw/extensions`, а також `plugins.load.paths`.
-- Виявлення приймає нативні Plugin OpenClaw, а також сумісні bundles Codex і Claude, включно з bundle Claude без manifest у типовому layout.
-- **Зміни конфігурації вимагають перезапуску gateway.**
-- `allow`: необов’язковий список дозволених (завантажуються лише перелічені Plugin). `deny` має пріоритет.
-- `plugins.entries..apiKey`: зручне поле ключа API на рівні 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..subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для кожного запуску фонових subagent.
+- Завантажується з `~/.openclaw/extensions`, `/.openclaw/extensions` і `plugins.load.paths`.
+- Виявлення приймає нативні Plugins OpenClaw, а також сумісні пакети Codex і пакети Claude, включно з пакетами Claude стандартного компонування без manifest.
+- **Зміни конфігурації потребують перезапуску gateway.**
+- `allow`: необов’язковий список дозволів (завантажуються лише перелічені Plugins). `deny` має пріоритет.
+- `plugins.entries..apiKey`: зручне поле API key на рівні Plugin (коли Plugin це підтримує).
+- `plugins.entries..env`: карта env-змінних у межах Plugin.
+- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` та ігнорує поля legacy `before_agent_start`, що змінюють prompt, зберігаючи при цьому legacy `modelOverride` і `providerOverride`. Застосовується до нативних hook-ів Plugin і підтримуваних каталогів hook-ів, наданих пакетами.
+- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для окремого запуску фонових subagent.
- `plugins.entries..subagent.allowedModels`: необов’язковий список дозволених канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"`, лише якщо свідомо хочете дозволити будь-яку модель.
-- `plugins.entries..config`: об’єкт конфігурації, визначений Plugin (перевіряється схемою нативного Plugin OpenClaw, коли вона доступна).
-- `plugins.entries.firecrawl.config.webFetch`: налаштування provider вебвитягування Firecrawl.
- - `apiKey`: ключ API Firecrawl (приймає SecretRef). Повертається до `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілого `tools.web.fetch.firecrawl.apiKey` або env var `FIRECRAWL_API_KEY`.
+- `plugins.entries..config`: об’єкт конфігурації, визначений Plugin (перевіряється схемою нативного Plugin OpenClaw, якщо вона доступна).
+- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера web-fetch Firecrawl.
+ - `apiKey`: API key Firecrawl (приймає SecretRef). Використовує резервне значення з `plugins.entries.firecrawl.config.webSearch.apiKey`, legacy `tools.web.fetch.firecrawl.apiKey` або env-змінної `FIRECRAWL_API_KEY`.
- `baseUrl`: базовий URL API Firecrawl (типово: `https://api.firecrawl.dev`).
- - `onlyMainContent`: витягувати лише основний вміст зі сторінок (типово: `true`).
+ - `onlyMainContent`: витягувати лише основний вміст сторінок (типово: `true`).
- `maxAgeMs`: максимальний вік кешу в мілісекундах (типово: `172800000` / 2 дні).
- - `timeoutSeconds`: тайм-аут scrape-запиту в секундах (типово: `60`).
+ - `timeoutSeconds`: тайм-аут запиту scrape у секундах (типово: `60`).
- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok).
- - `enabled`: увімкнути provider X Search.
+ - `enabled`: увімкнути провайдер X Search.
- `model`: модель Grok для пошуку (наприклад `"grok-4-1-fast"`).
-- `plugins.entries.memory-core.config.dreaming`: налаштування memory dreaming. Див. [Dreaming](/uk/concepts/dreaming) для фаз і порогів.
- - `enabled`: головний перемикач dreaming (типово `false`).
- - `frequency`: cadence Cron для кожного повного проходу dreaming (типово `"0 3 * * *"`).
- - політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації).
-- Повна конфігурація пам’яті міститься в [Довіднику з конфігурації пам’яті](/uk/reference/memory-config):
+- `plugins.entries.memory-core.config.dreaming`: налаштування memory Dreaming. Фази та пороги див. у [Dreaming](/uk/concepts/dreaming).
+ - `enabled`: головний перемикач Dreaming (типово `false`).
+ - `frequency`: Cron-розклад для кожного повного проходу Dreaming (типово `"0 3 * * *"`).
+ - політика фаз і пороги — це деталі реалізації (не користувацькі ключі конфігурації).
+- Повна конфігурація memory міститься в [Довіднику з конфігурації пам’яті](/uk/reference/memory-config):
- `agents.defaults.memorySearch.*`
- `memory.backend`
- `memory.citations`
- `memory.qmd.*`
- `plugins.entries.memory-core.config.dreaming`
-- Увімкнені Plugin Claude bundle також можуть додавати вбудовані типові значення Pi з `settings.json`; OpenClaw застосовує їх як санітизовані налаштування агента, а не як сирі патчі конфігурації OpenClaw.
-- `plugins.slots.memory`: вибрати id активного memory Plugin або `"none"`, щоб вимкнути memory Plugin.
-- `plugins.slots.contextEngine`: вибрати id активного Plugin context engine; типово `"legacy"`, якщо ви не встановите й не виберете інший engine.
+- Увімкнені Plugins пакета Claude також можуть додавати вбудовані типові значення Pi з `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw.
+- `plugins.slots.memory`: вибрати id активного Plugin пам’яті або `"none"`, щоб вимкнути Plugins пам’яті.
+- `plugins.slots.contextEngine`: вибрати id активного Plugin рушія контексту; типово `"legacy"`, доки ви не встановите й не виберете інший рушій.
- `plugins.installs`: метадані встановлення, якими керує CLI і які використовує `openclaw plugins update`.
- - Містять `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`.
- - Сприймайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI замість ручного редагування.
+ - Містить `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`.
+ - Розглядайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI замість ручного редагування.
Див. [Plugins](/uk/tools/plugin).
---
-## Browser
+## Браузер
```json5
{
@@ -2935,8 +2935,8 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
evaluateEnabled: true,
defaultProfile: "user",
ssrfPolicy: {
- // dangerouslyAllowPrivateNetwork: true, // opt-in лише для довіреного доступу browser до приватної мережі
- // allowPrivateNetwork: true, // застарілий alias
+ // dangerouslyAllowPrivateNetwork: true, // opt in only for trusted private-network access
+ // allowPrivateNetwork: true, // legacy alias
// hostnameAllowlist: ["*.example.com", "example.com"],
// allowedHostnames: ["localhost"],
},
@@ -2963,29 +2963,29 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
```
- `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`.
-- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо значення не задано, тому навігація browser типово залишається суворою.
-- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли свідомо довіряєте навігації browser у приватній мережі.
-- У строгому режимі віддалені endpoint профілів CDP (`profiles.*.cdpUrl`) підлягають такому самому блокуванню приватної мережі під час перевірок досяжності/виявлення.
-- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий alias.
-- У строгому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
-- Віддалені профілі є лише attach-only (start/stop/reset вимкнено).
+- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо значення не задано, тому навігація браузера типово залишається суворою.
+- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли свідомо довіряєте навігації браузера в приватній мережі.
+- У суворому режимі endpoint-и віддалених профілів CDP (`profiles.*.cdpUrl`) підлягають такому самому блокуванню приватної мережі під час перевірок доступності/виявлення.
+- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як legacy-псевдонім.
+- У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
+- Віддалені профілі працюють лише в режимі attach-only (start/stop/reset вимкнені).
- `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`.
- Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявив `/json/version`; використовуйте WS(S),
- коли ваш provider надає прямий DevTools WebSocket URL.
+ Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
+ коли провайдер надає вам прямий URL WebSocket DevTools.
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися на
- вибраному хості або через підключений browser Node.
+ вибраному хості або через під’єднаний browser Node.
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний
- профіль browser на основі Chromium, наприклад Brave або Edge.
+ профіль браузера на базі Chromium, наприклад Brave або Edge.
- Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP:
- дії на основі snapshot/ref замість націлювання через CSS-selector, hooks
- однофайлового завантаження, без перевизначень тайм-ауту діалогів, без `wait --load networkidle`,
+ дії на основі snapshot/ref замість націлювання за CSS-selector, hook-и
+ завантаження одного файла, без перевизначень тайм-ауту діалогів, без `wait --load networkidle`,
а також без `responsebody`, експорту PDF, перехоплення завантажень або пакетних дій.
- Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно
задавайте `cdpUrl` лише для віддаленого CDP.
-- Порядок auto-detect: типовий browser, якщо він на основі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
+- Порядок авто-виявлення: типовий браузер, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Сервіс керування: лише loopback (порт визначається з `gateway.port`, типово `18791`).
-- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад
- `--disable-gpu`, розмір вікна або debug-прапорці).
+- `extraArgs` додає додаткові прапори запуску до локального старту Chromium (наприклад
+ `--disable-gpu`, розмір вікна або прапори налагодження).
---
@@ -2997,14 +2997,14 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
seamColor: "#FF4500",
assistant: {
name: "OpenClaw",
- avatar: "CB", // emoji, короткий текст, URL зображення або URI data
+ avatar: "CB", // emoji, short text, image URL, or data URI
},
},
}
```
- `seamColor`: колір акценту для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо).
-- `assistant`: перевизначення identity для Control UI. Якщо не задано, використовується identity активного агента.
+- `assistant`: перевизначення identity для Control UI. Використовує active agent identity як резервний варіант.
---
@@ -3019,8 +3019,8 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
auth: {
mode: "token", // none | token | password | trusted-proxy
token: "your-token",
- // password: "your-password", // або OPENCLAW_GATEWAY_PASSWORD
- // trustedProxy: { userHeader: "x-forwarded-user" }, // для mode=trusted-proxy; див. /gateway/trusted-proxy-auth
+ // password: "your-password", // or OPENCLAW_GATEWAY_PASSWORD
+ // trustedProxy: { userHeader: "x-forwarded-user" }, // for mode=trusted-proxy; see /gateway/trusted-proxy-auth
allowTailscale: true,
rateLimit: {
maxAttempts: 10,
@@ -3038,9 +3038,9 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
basePath: "/openclaw",
// root: "dist/control-ui",
// embedSandbox: "scripts", // strict | scripts | trusted
- // allowExternalEmbedUrls: false, // небезпечно: дозволити абсолютні зовнішні URL embed http(s)
- // allowedOrigins: ["https://control.example.com"], // потрібно для Control UI не на loopback
- // dangerouslyAllowHostHeaderOriginFallback: false, // небезпечний режим резервного використання Host-header origin
+ // allowExternalEmbedUrls: false, // dangerous: allow absolute external http(s) embed URLs
+ // allowedOrigins: ["https://control.example.com"], // required for non-loopback Control UI
+ // dangerouslyAllowHostHeaderOriginFallback: false, // dangerous Host-header origin fallback mode
// allowInsecureAuth: false,
// dangerouslyDisableDeviceAuth: false,
},
@@ -3051,12 +3051,12 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
// password: "your-password",
},
trustedProxies: ["10.0.0.1"],
- // Необов’язково. Типове значення false.
+ // Optional. Default false.
allowRealIpFallback: false,
tools: {
- // Додаткові HTTP deny для /tools/invoke
+ // Additional /tools/invoke HTTP denies
deny: ["browser"],
- // Прибрати інструменти з типового HTTP deny-списку
+ // Remove tools from the default HTTP deny list
allow: ["gateway"],
},
push: {
@@ -3074,44 +3074,44 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
- `mode`: `local` (запустити gateway) або `remote` (підключитися до віддаленого gateway). Gateway відмовляється запускатися, якщо не `local`.
-- `port`: єдиний мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`.
+- `port`: один мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`.
- `bind`: `auto`, `loopback` (типово), `lan` (`0.0.0.0`), `tailnet` (лише IP Tailscale) або `custom`.
-- **Застарілі alias для bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не alias хоста (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
-- **Примітка для Docker**: типове bind-значення `loopback` слухає `127.0.0.1` усередині контейнера. За bridge-мережі Docker (`-p 18789:18789`) трафік надходить на `eth0`, тому gateway недосяжний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
-- **Auth**: типово обов’язкова. Прив’язки не до loopback вимагають автентифікації gateway. На практиці це означає спільний token/password або reverse proxy з awareness щодо identity з `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 з awareness щодо identity і довіряти заголовкам identity від `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **джерело proxy не з loopback**; reverse proxy на loopback на тому самому хості не задовольняють trusted-proxy auth.
-- `gateway.auth.allowTailscale`: коли `true`, заголовки identity Tailscale Serve можуть задовольняти auth для Control UI/WebSocket (перевіряється через `tailscale whois`). Endpoint-и HTTP API **не** використовують цю auth за заголовками Tailscale; вони дотримуються звичайного режиму HTTP auth gateway. Цей безтокеновий потік припускає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`.
-- `gateway.auth.rateLimit`: необов’язковий лімітер невдалих спроб auth. Застосовується для кожного IP клієнта і для кожної області auth (shared-secret і device-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 ізолюються для кожного нормалізованого значення `Origin`,
- тому повторні збої з одного localhost-origin не блокують автоматично
+- **Legacy-псевдоніми 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 bridge (`-p 18789:18789`) трафік приходить на `eth0`, тому gateway недосяжний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
+- **Auth**: типово обов’язкова. Bind-и не для loopback потребують автентифікації gateway. На практиці це означає спільний token/password або reverse proxy з урахуванням identity з `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 з урахуванням identity і довіряє заголовкам identity від `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy loopback на тому ж хості не задовольняють auth trusted-proxy.
+- `gateway.auth.allowTailscale`: коли `true`, заголовки identity Tailscale Serve можуть задовольняти auth для Control UI/WebSocket (перевіряється через `tailscale whois`). Endpoint-и HTTP API **не** використовують цю auth за заголовками Tailscale; вони дотримуються звичайного режиму HTTP auth gateway. Цей безтокеновий потік передбачає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`.
+- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб auth. Застосовується для кожного IP клієнта та для кожної області auth (спільний секрет і device-token відстежуються окремо). Заблоковані спроби повертають `429` + `Retry-After`.
+ - На асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом невдачі. Тому одночасні неправильні спроби від того самого клієнта можуть спрацювати на обмежувач уже на другому запиті замість того, щоб обидва одночасно пройти як звичайні невідповідності.
+ - `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; установіть `false`, якщо свідомо хочете, щоб localhost-трафік теж обмежувався (для тестових конфігурацій або суворих розгортань через proxy).
+- Спроби auth для WS із походження браузера завжди обмежуються, причому звільнення для loopback вимкнено (додатковий захист від brute force localhost із браузера).
+- На loopback ці блокування з походження браузера ізольовані за нормалізованим значенням `Origin`,
+ тому повторні невдачі з одного localhost origin не блокують автоматично
інший origin.
-- `tailscale.mode`: `serve` (лише tailnet, bind на loopback) або `funnel` (публічний доступ, вимагає auth).
-- `controlUi.allowedOrigins`: явний список дозволених browser-origin для підключень WebSocket Gateway. Потрібен, коли browser-клієнти очікуються з origin, відмінних від loopback.
-- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервне визначення origin за Host-header для розгортань, що навмисно покладаються на політику origin за Host-header.
-- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`.
-- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське break-glass-перевизначення, яке дозволяє відкритий `ws://` до довірених IP приватної мережі; типово plaintext і надалі дозволено лише для loopback.
+- `tailscale.mode`: `serve` (лише tailnet, bind loopback) або `funnel` (публічний доступ, потребує auth).
+- `controlUi.allowedOrigins`: явний список дозволених browser-origin для підключень Gateway WebSocket. Обов’язковий, коли браузерні клієнти очікуються не з loopback origin.
+- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає резервне визначення origin за Host-header для розгортань, які свідомо покладаються на політику origin за Host-header.
+- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` `remote.url` має бути `ws://` або `wss://`.
+- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: аварійне перевизначення на стороні клієнта, яке дозволяє незашифрований `ws://` до довірених IP приватної мережі; типово незашифрований трафік і далі дозволено лише для loopback.
- `gateway.remote.token` / `.password` — це поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують auth gateway.
-- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL зовнішнього APNs relay, який використовують офіційні/TestFlight збірки iOS після публікації relay-backed реєстрацій до gateway. Цей URL має збігатися з URL relay, зібраним у збірці iOS.
-- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання gateway-to-relay у мілісекундах. Типове значення `10000`.
-- Реєстрації на основі relay делегуються конкретній identity gateway. Спарений iOS-застосунок отримує `gateway.identity.get`, включає цю identity у реєстрацію relay і пересилає gateway грант надсилання, прив’язаний до реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію.
-- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові env-перевизначення для наведеної вище конфігурації relay.
-- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: лише для розробки, аварійний виняток для loopback HTTP URL relay. URL relay у production мають залишатися на HTTPS.
-- `gateway.channelHealthCheckMinutes`: інтервал моніторингу стану каналу в хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски health-monitor. Типове значення: `5`.
-- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета в хвилинах. Тримайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. Типове значення: `30`.
-- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків health-monitor на канал/обліковий запис за ковзну годину. Типове значення: `10`.
-- `channels..healthMonitor.enabled`: opt-out для окремого каналу від перезапусків health-monitor при збереженні глобального монітора.
-- `channels..accounts..healthMonitor.enabled`: перевизначення для окремого облікового запису в багатооблікових каналах. Якщо задано, має пріоритет над перевизначенням рівня каналу.
-- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як fallback лише тоді, коли `gateway.auth.*` не задано.
-- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не розв’язано, розв’язання завершується fail-closed (без маскування через remote fallback).
-- `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.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий deny-список).
-- `gateway.tools.allow`: прибирає назви інструментів із типового HTTP deny-списку.
+- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL для зовнішнього APNs relay, який використовують офіційні/TestFlight-збірки iOS після публікації в gateway реєстрацій на базі relay. Цей URL має збігатися з URL relay, зібраним в iOS-збірку.
+- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання gateway→relay у мілісекундах. Типово `10000`.
+- Реєстрації на базі relay делегуються конкретній identity gateway. Спарений застосунок iOS викликає `gateway.identity.get`, включає цю identity в реєстрацію relay і передає в gateway дозвіл на надсилання в межах реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію.
+- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові перевизначення через env для наведеної вище конфігурації relay.
+- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: аварійний вихід лише для розробки для loopback HTTP URL relay. Продакшн URL relay мають залишатися на HTTPS.
+- `gateway.channelHealthCheckMinutes`: інтервал монітора стану каналів у хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски health-monitor. Типово: `5`.
+- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета у хвилинах. Тримайте його більшим або рівним `gateway.channelHealthCheckMinutes`. Типово: `30`.
+- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків health-monitor для каналу/облікового запису за ковзну годину. Типово: `10`.
+- `channels..healthMonitor.enabled`: opt-out для окремого каналу від перезапусків health-monitor при збереженні глобального монітора увімкненим.
+- `channels..accounts..healthMonitor.enabled`: перевизначення для окремого облікового запису в багатооблікових каналах. Якщо задано, воно має пріоритет над перевизначенням на рівні каналу.
+- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не задано.
+- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef, але не визначено, визначення завершується із закритою відмовою (без маскування резервним віддаленим варіантом).
+- `trustedProxies`: IP reverse proxy, які завершують TLS або вставляють заголовки forwarded-client. Додавайте лише proxy, які ви контролюєте. Записи loopback і далі допустимі для конфігурацій same-host proxy/локального виявлення (наприклад Tailscale Serve або локальний reverse proxy), але вони **не** роблять loopback-запити придатними для `gateway.auth.mode: "trusted-proxy"`.
+- `allowRealIpFallback`: коли `true`, gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типово `false` для fail-closed поведінки.
+- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список deny).
+- `gateway.tools.allow`: видаляє назви інструментів із типового HTTP deny-списку.
@@ -3119,18 +3119,18 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
- Chat Completions: типово вимкнено. Увімкніть через `gateway.http.endpoints.chatCompletions.enabled: true`.
- Responses API: `gateway.http.endpoints.responses.enabled`.
-- Посилення захисту URL-input для Responses:
+- Захист Responses для URL-входів:
- `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.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS origin, якими ви керуєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
+ Порожні allowlist-и трактуються як не задані; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false`
+ і/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання за URL.
+- Необов’язковий заголовок захисту відповіді:
+ - `gateway.http.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS origin, які ви контролюєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
-### Ізоляція кількох екземплярів
+### Ізоляція кількох інстансів
-Запускайте кілька gateway на одному хості з унікальними портами й каталогами стану:
+Запускайте кілька gateway на одному хості з унікальними портами та каталогами стану:
```bash
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \
@@ -3138,7 +3138,7 @@ OPENCLAW_STATE_DIR=~/.openclaw-a \
openclaw gateway --port 19001
```
-Зручні прапорці: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile ` (використовує `~/.openclaw-`).
+Зручні прапори: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile ` (використовує `~/.openclaw-`).
Див. [Multiple Gateways](/uk/gateway/multiple-gateways).
@@ -3158,11 +3158,11 @@ openclaw gateway --port 19001
}
```
-- `enabled`: вмикає завершення TLS на listener gateway (HTTPS/WSS) (типове значення: `false`).
-- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовані; лише для локального/dev використання.
-- `certPath`: шлях файлової системи до файлу сертифіката TLS.
-- `keyPath`: шлях файлової системи до файлу приватного ключа TLS; тримайте його з обмеженими правами доступу.
-- `caPath`: необов’язковий шлях до CA bundle для перевірки клієнта або користувацьких ланцюгів довіри.
+- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типово: `false`).
+- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовано; лише для локального/dev використання.
+- `certPath`: шлях файлової системи до файла TLS-сертифіката.
+- `keyPath`: шлях файлової системи до файла приватного ключа TLS; обмежте права доступу.
+- `caPath`: необов’язковий шлях до пакета CA для перевірки клієнтів або власних ланцюжків довіри.
### `gateway.reload`
@@ -3178,13 +3178,13 @@ openclaw gateway --port 19001
}
```
-- `mode`: керує тим, як зміни конфігурації застосовуються під час runtime.
- - `"off"`: ігнорувати live-редагування; зміни вимагають явного перезапуску.
- - `"restart"`: завжди перезапускати процес gateway при зміні конфігурації.
- - `"hot"`: застосовувати зміни в процесі без перезапуску.
- - `"hybrid"` (типово): спочатку намагатися зробити hot reload; якщо потрібно — перейти до перезапуску.
+- `mode`: керує тим, як редагування конфігурації застосовуються під час runtime.
+ - `"off"`: ігнорувати зміни наживо; зміни потребують явного перезапуску.
+ - `"restart"`: завжди перезапускати процес gateway після зміни конфігурації.
+ - `"hot"`: застосовувати зміни в межах процесу без перезапуску.
+ - `"hybrid"` (типово): спочатку пробувати hot reload; якщо потрібно, переходити до перезапуску.
- `debounceMs`: вікно debounce у мс перед застосуванням змін конфігурації (невід’ємне ціле число).
-- `deferralTimeoutMs`: максимальний час у мс очікування завершення операцій у польоті перед примусовим перезапуском (типово: `300000` = 5 хвилин).
+- `deferralTimeoutMs`: максимальний час у мс очікування завершення поточних операцій перед примусовим перезапуском (типово: `300000` = 5 хвилин).
---
@@ -3198,8 +3198,8 @@ openclaw gateway --port 19001
path: "/hooks",
maxBodyBytes: 262144,
defaultSessionKey: "hook:ingress",
- allowRequestSessionKey: false,
- allowedSessionKeyPrefixes: ["hook:"],
+ allowRequestSessionKey: true,
+ allowedSessionKeyPrefixes: ["hook:", "hook:gmail:"],
allowedAgentIds: ["hooks", "main"],
presets: ["gmail"],
transformsDir: "~/.openclaw/hooks/transforms",
@@ -3222,14 +3222,15 @@ openclaw gateway --port 19001
```
Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
-Токени hook у query string відхиляються.
+Токени hook у query-string відхиляються.
Примітки щодо валідації та безпеки:
-- `hooks.enabled=true` вимагає непорожній `hooks.token`.
-- `hooks.token` має **відрізнятися** від `gateway.auth.token`; повторне використання token gateway відхиляється.
+- `hooks.enabled=true` потребує непорожній `hooks.token`.
+- `hooks.token` має **відрізнятися** від `gateway.auth.token`; повторне використання токена Gateway відхиляється.
- `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`.
-- Якщо `hooks.allowRequestSessionKey=true`, обмежуйте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`).
+- Якщо `hooks.allowRequestSessionKey=true`, обмежте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`).
+- Якщо mapping або preset використовує шаблонізований `sessionKey`, установіть `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі mapping не потребують цього opt-in.
**Endpoint-и:**
@@ -3237,26 +3238,31 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
- `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
- `sessionKey` з payload запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (типово: `false`).
- `POST /hooks/` → визначається через `hooks.mappings`
+ - Значення `sessionKey` у mapping, відрендерені шаблоном, трактуються як зовнішньо надані й також потребують `hooks.allowRequestSessionKey=true`.
- `match.path` відповідає підшляху після `/hooks` (наприклад `/hooks/gmail` → `gmail`).
- `match.source` відповідає полю payload для загальних шляхів.
-- Шаблони на кшталт `{{messages[0].subject}}` читають значення з payload.
-- `transform` може вказувати на JS/TS-модуль, який повертає дію hook.
- - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи й traversal відхиляються).
-- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до типового агента.
-- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або пропущено = дозволити всі, `[]` = заборонити всі).
+- Шаблони на кшталт `{{messages[0].subject}}` читають дані з payload.
+- `transform` може вказувати на модуль JS/TS, що повертає дію hook.
+ - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та traversal відхиляються).
+- `agentId` маршрутизує до конкретного агента; невідомі ID використовують типового агента як резервний варіант.
+- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або відсутнє значення = дозволити всі, `[]` = заборонити всі).
- `defaultSessionKey`: необов’язковий фіксований ключ сеансу для запусків hook-агента без явного `sessionKey`.
-- `allowRequestSessionKey`: дозволити викликачам `/hooks/agent` задавати `sessionKey` (типово: `false`).
-- `allowedSessionKeyPrefixes`: необов’язковий список дозволених префіксів для явних значень `sessionKey` (запит + mapping), наприклад `["hook:"]`.
-- `deliver: true` надсилає фінальну відповідь у канал; `channel` типово дорівнює `last`.
-- `model` перевизначає LLM для цього запуску hook (має бути дозволений, якщо каталог моделей задано).
+- `allowRequestSessionKey`: дозволити викликачам `/hooks/agent` і sessionKey у 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` замість типового шаблонізованого значення.
+
```json5
{
hooks: {
@@ -3283,34 +3289,34 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
---
-## Canvas host
+## Хост Canvas
```json5
{
canvasHost: {
root: "~/.openclaw/workspace/canvas",
liveReload: true,
- // enabled: false, // або OPENCLAW_SKIP_CANVAS_HOST=1
+ // enabled: false, // or OPENCLAW_SKIP_CANVAS_HOST=1
},
}
```
-- Обслуговує HTML/CSS/JS, які агент може редагувати, і A2UI через 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; після pairing і підключення Node Gateway оголошує URL можливостей, прив’язані до Node, для доступу до canvas/A2UI.
-- URL можливостей прив’язуються до активного WS-сеансу Node і швидко спливають. Резервний варіант на основі IP не використовується.
-- Вставляє клієнт live-reload в обслуговуваний HTML.
-- Автоматично створює початковий `index.html`, якщо каталог порожній.
+- Bind не для loopback: маршрути canvas потребують auth Gateway (token/password/trusted-proxy), так само як і інші HTTP-поверхні Gateway.
+- Node WebView зазвичай не надсилають заголовки auth; після сполучення та підключення Node Gateway оголошує URL можливостей, обмежені Node, для доступу до canvas/A2UI.
+- URL можливостей прив’язані до активного WS-сеансу Node і швидко спливають. Резервний варіант на основі IP не використовується.
+- Вставляє клієнт live-reload у HTML, що обслуговується.
+- Автоматично створює стартовий `index.html`, якщо каталог порожній.
- Також обслуговує A2UI за адресою `/__openclaw__/a2ui/`.
-- Зміни вимагають перезапуску gateway.
-- Вимикайте live reload для великих каталогів або при помилках `EMFILE`.
+- Зміни потребують перезапуску gateway.
+- Вимкніть live reload для великих каталогів або при помилках `EMFILE`.
---
-## Discovery
+## Виявлення
### mDNS (Bonjour)
@@ -3324,8 +3330,8 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `minimal` (типово): не включати `cliPath` + `sshPort` у TXT-записи.
-- `full`: включати `cliPath` + `sshPort`.
+- `minimal` (типово): не включає `cliPath` + `sshPort` у записи TXT.
+- `full`: включає `cliPath` + `sshPort`.
- Ім’я хоста типово `openclaw`. Перевизначається через `OPENCLAW_MDNS_HOSTNAME`.
### Wide-area (DNS-SD)
@@ -3346,7 +3352,7 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
## Середовище
-### `env` (inline env vars)
+### `env` (вбудовані env-змінні)
```json5
{
@@ -3363,14 +3369,14 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- Inline env vars застосовуються лише тоді, коли в env процесу немає відповідного ключа.
-- Файли `.env`: `.env` у CWD + `~/.openclaw/.env` (жоден із них не перевизначає наявні змінні).
+- Вбудовані env-змінні застосовуються лише тоді, коли в середовищі процесу відсутній ключ.
+- Файли `.env`: `.env` поточного робочого каталогу + `~/.openclaw/.env` (жоден із них не перевизначає наявні змінні).
- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell.
- Повний порядок пріоритетів див. у [Environment](/uk/help/environment).
-### Підстановка env var
+### Підстановка env-змінних
-Посилайтеся на env vars у будь-якому рядку конфігурації через `${VAR_NAME}`:
+Посилайтеся на env-змінні в будь-якому рядку конфігурації за допомогою `${VAR_NAME}`:
```json5
{
@@ -3380,16 +3386,16 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- Збігаються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
+- Зіставляються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
- Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації.
-- Екрануйте як `$${VAR}` для буквального `${VAR}`.
+- Екрануйте через `$${VAR}`, щоб отримати буквальний `${VAR}`.
- Працює з `$include`.
---
## Секрети
-Посилання на секрети є адитивними: відкриті значення і далі працюють.
+Посилання на секрети є додатковими: прості текстові значення й далі працюють.
### `SecretRef`
@@ -3402,24 +3408,24 @@ Auth: `Authorization: Bearer ` або `x-openclaw-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: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
-- id для `source: "exec"` не повинні містити `.` або `..` як slash-delimited сегменти шляху (наприклад `a/../b` відхиляється)
+- шаблон `id` для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
+- `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` відхиляється)
### Підтримувана поверхня облікових даних
-- Канонічна матриця: [SecretRef Credential Surface](/uk/reference/secretref-credential-surface)
+- Канонічна матриця: [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface)
- `secrets apply` націлюється на підтримувані шляхи облікових даних у `openclaw.json`.
-- Посилання `auth-profiles.json` входять до runtime-розв’язання та покриття аудиту.
+- Посилання в `auth-profiles.json` включені у визначення runtime та охоплення аудитом.
-### Конфігурація provider секретів
+### Конфігурація провайдерів секретів
```json5
{
secrets: {
providers: {
- default: { source: "env" }, // необов’язковий явний env provider
+ default: { source: "env" }, // optional explicit env provider
filemain: {
source: "file",
path: "~/.openclaw/secrets.json",
@@ -3443,13 +3449,13 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
Примітки:
-- Provider `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue значення `id` має бути `"value"`).
-- Provider `exec` вимагає абсолютний шлях `command` і використовує payload-и протоколу через stdin/stdout.
-- Типово символьні посилання в шляхах команд відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-симлінки, перевіряючи шлях до розв’язаного target.
-- Якщо налаштовано `trustedDirs`, перевірка trusted-dir застосовується до шляху розв’язаного target.
-- Дочірнє середовище `exec` типово мінімальне; явно передавайте потрібні змінні через `passEnv`.
-- Посилання на секрети розв’язуються під час активації у знімок у пам’яті, після чого шляхи запитів читають лише цей знімок.
-- Під час активації застосовується фільтрація активної поверхні: нерозв’язані посилання на ввімкнених поверхнях спричиняють збій startup/reload, тоді як неактивні поверхні пропускаються з діагностикою.
+- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue `id` має бути `"value"`).
+- Провайдер `exec` потребує абсолютний шлях `command` і використовує payload-и протоколу через stdin/stdout.
+- Типово шляхи команд-символьних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-символьні посилання з перевіркою визначеного цільового шляху.
+- Якщо налаштовано `trustedDirs`, перевірка trusted-dir застосовується до визначеного цільового шляху.
+- Середовище дочірнього процесу `exec` типово мінімальне; явно передавайте потрібні змінні через `passEnv`.
+- Посилання на секрети визначаються під час активації у snapshot в пам’яті, після чого шляхи запитів читають лише snapshot.
+- Під час активації застосовується фільтрація активної поверхні: невизначені посилання на увімкнених поверхнях спричиняють помилку запуску/reload, тоді як неактивні поверхні пропускаються з діагностикою.
---
@@ -3472,12 +3478,12 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
```
- Профілі для окремого агента зберігаються в `/auth-profiles.json`.
-- `auth-profiles.json` підтримує посилання на рівні значення (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних.
-- Профілі в режимі OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані профілю auth на основі SecretRef.
-- Статичні runtime-облікові дані надходять із розв’язаних знімків у пам’яті; застарілі статичні записи `auth.json` очищаються при виявленні.
-- Застарілий імпорт OAuth — з `~/.openclaw/credentials/oauth.json`.
+- `auth-profiles.json` підтримує посилання на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для режимів статичних облікових даних.
+- Профілі режиму OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef.
+- Статичні облікові дані runtime беруться з визначених snapshot у пам’яті; застарілі статичні записи `auth.json` очищаються при виявленні.
+- Застарілий імпорт OAuth — із `~/.openclaw/credentials/oauth.json`.
- Див. [OAuth](/uk/concepts/oauth).
-- Поведінка runtime секретів і інструменти `audit/configure/apply`: [Secrets Management](/uk/gateway/secrets).
+- Поведінка runtime секретів і інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets).
### `auth.cooldowns`
@@ -3499,25 +3505,24 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `billingBackoffHours`: базовий backoff у годинах, коли профіль зазнає збою через справжні
- billing-помилки/нестачу коштів (типово: `5`). Явний текст про billing
- усе ще може потрапити сюди навіть на відповідях `401`/`403`, але
- текстові matcher-и для конкретних provider залишаються обмеженими provider-ом,
- якому вони належать (наприклад OpenRouter
- `Key limit exceeded`). Retryable HTTP `402` usage-window або
- повідомлення про ліміти витрат organization/workspace натомість залишаються у шляху `rate_limit`.
-- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин billing backoff для окремих provider.
-- `billingMaxHours`: обмеження в годинах для експоненційного зростання billing backoff (типово: `24`).
+- `billingBackoffHours`: базовий backoff у годинах, коли профіль завершується помилкою через справжні
+ billing/помилки недостатнього кредиту (типово: `5`). Явний текст billing усе ще
+ може потрапити сюди навіть на відповідях `401`/`403`, але текстові
+ matchers, специфічні для провайдера, залишаються обмеженими провайдером, якому вони належать (наприклад OpenRouter
+ `Key limit exceeded`). Придатні для повтору повідомлення `402` usage-window або
+ про ліміт витрат organization/workspace залишаються в шляху `rate_limit`.
+- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин billing backoff для окремих провайдерів.
+- `billingMaxHours`: максимальна межа в годинах для експоненційного зростання billing backoff (типово: `24`).
- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для високовпевнених збоїв `auth_permanent` (типово: `10`).
-- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання backoff `auth_permanent` (типово: `60`).
+- `authPermanentMaxMinutes`: максимальна межа в хвилинах для зростання backoff `auth_permanent` (типово: `60`).
- `failureWindowHours`: ковзне вікно в годинах, яке використовується для лічильників backoff (типово: `24`).
-- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile того самого provider для помилок перевантаження перед переходом до fallback моделі (типово: `1`). Сюди потрапляють форми busy provider, такі як `ModelNotReadyException`.
-- `overloadedBackoffMs`: фіксована затримка перед повторною спробою rotation перевантаженого provider/profile (типово: `0`).
-- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile того самого provider для помилок rate-limit перед переходом до fallback моделі (типово: `1`). До цього кошика rate-limit входить і текст, характерний для provider, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
+- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для помилок перевантаження перед переходом до fallback моделі (типово: `1`). Сюди потрапляють форми зайнятості провайдера, такі як `ModelNotReadyException`.
+- `overloadedBackoffMs`: фіксована затримка перед повтором ротації перевантаженого провайдера/профілю (типово: `0`).
+- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для помилок rate-limit перед переходом до fallback моделі (типово: `1`). Цей кошик rate-limit включає формулювання провайдера, такі як `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
---
-## Logging
+## Логування
```json5
{
@@ -3534,8 +3539,8 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
- Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
- Установіть `logging.file` для стабільного шляху.
-- `consoleLevel` підвищується до `debug` при `--verbose`.
-- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого запис пригнічується (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів.
+- `consoleLevel` підвищується до `debug`, коли використано `--verbose`.
+- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого запис припиняється (додатне ціле число; типово: `524288000` = 500 MB). Для продакшн-розгортань використовуйте зовнішню ротацію журналів.
---
@@ -3572,24 +3577,24 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `enabled`: головний перемикач виводу instrumentation (типово: `true`).
-- `flags`: масив рядків-прапорців, що вмикають цільовий вивід журналу (підтримує wildcard, як-от `"telegram.*"` або `"*"`).
-- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислий сеанс, поки сеанс залишається в стані обробки.
-- `otel.enabled`: вмикає пайплайн експорту OpenTelemetry (типово: `false`).
-- `otel.endpoint`: URL collector для експорту OTel.
+- `enabled`: головний перемикач виводу інструментування (типово: `true`).
+- `flags`: масив рядків-прапорів, що вмикає цільовий вивід журналу (підтримує wildcard-и, як-от `"telegram.*"` або `"*"`).
+- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислі сеанси, поки сеанс залишається в стані обробки.
+- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`).
+- `otel.endpoint`: URL колектора для експорту OTel.
- `otel.protocol`: `"http/protobuf"` (типово) або `"grpc"`.
-- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються разом із запитами експорту OTel.
+- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються із запитами експорту OTel.
- `otel.serviceName`: назва сервісу для атрибутів ресурсу.
-- `otel.traces` / `otel.metrics` / `otel.logs`: вмикають експорт traces, metrics або logs.
-- `otel.sampleRate`: частота семплювання traces `0`–`1`.
-- `otel.flushIntervalMs`: періодичний інтервал flush телеметрії в мс.
-- `cacheTrace.enabled`: журналювати знімки трасування кешу для embedded-запусків (типово: `false`).
-- `cacheTrace.filePath`: шлях виводу для JSONL трасування кешу (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
-- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід трасування кешу (усе типово: `true`).
+- `otel.traces` / `otel.metrics` / `otel.logs`: вмикають експорт трас, метрик або журналів.
+- `otel.sampleRate`: частота вибірки трас `0`–`1`.
+- `otel.flushIntervalMs`: інтервал періодичного скидання телеметрії в мс.
+- `cacheTrace.enabled`: записує snapshot-и trace кешу для вбудованих запусків (типово: `false`).
+- `cacheTrace.filePath`: вихідний шлях для JSONL trace кешу (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
+- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід trace кешу (усі типово: `true`).
---
-## Update
+## Оновлення
```json5
{
@@ -3607,12 +3612,12 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `channel`: канал релізу для npm/git-встановлень — `"stable"`, `"beta"` або `"dev"`.
+- `channel`: канал випусків для встановлень npm/git — `"stable"`, `"beta"` або `"dev"`.
- `checkOnStart`: перевіряти оновлення npm під час запуску gateway (типово: `true`).
-- `auto.enabled`: увімкнути фонове автооновлення для package-встановлень (типово: `false`).
-- `auto.stableDelayHours`: мінімальна затримка в годинах перед автозастосуванням на stable-каналі (типово: `6`; максимум: `168`).
+- `auto.enabled`: увімкнути фонове автооновлення для встановлень пакетів (типово: `false`).
+- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням для stable-каналу (типово: `6`; максимум: `168`).
- `auto.stableJitterHours`: додаткове вікно розподілу розгортання для stable-каналу в годинах (типово: `12`; максимум: `168`).
-- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу, у годинах (типово: `1`; максимум: `24`).
+- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу в годинах (типово: `1`; максимум: `24`).
---
@@ -3645,21 +3650,21 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `enabled`: глобальний feature gate ACP (типово: `false`).
+- `enabled`: глобальний feature gate для ACP (типово: `false`).
- `dispatch.enabled`: незалежний gate для dispatch ходів сеансу ACP (типово: `true`). Установіть `false`, щоб залишити команди ACP доступними, але заблокувати виконання.
-- `backend`: id типового backend runtime ACP (має збігатися із зареєстрованим Plugin runtime ACP).
-- `defaultAgent`: резервний id цільового агента ACP, коли spawn-и не задають явну ціль.
-- `allowedAgents`: список дозволених id агентів для сеансів runtime ACP; порожній список означає відсутність додаткових обмежень.
+- `backend`: id типового backend runtime ACP (має відповідати зареєстрованому Plugin runtime ACP).
+- `defaultAgent`: резервний id цільового агента ACP, коли spawn не задає явну ціль.
+- `allowedAgents`: список дозволених id агентів для сеансів runtime ACP; порожнє значення означає відсутність додаткових обмежень.
- `maxConcurrentSessions`: максимальна кількість одночасно активних сеансів ACP.
- `stream.coalesceIdleMs`: вікно idle flush у мс для потокового тексту.
-- `stream.maxChunkChars`: максимальний розмір chunk перед розбиттям проєкції потокового блока.
-- `stream.repeatSuppression`: пригнічувати повторювані рядки статусу/інструментів на хід (типово: `true`).
-- `stream.deliveryMode`: `"live"` передає потік інкрементально; `"final_only"` буферизує до термінальних подій ходу.
+- `stream.maxChunkChars`: максимальний розмір chunk перед поділом проєкції потокового блока.
+- `stream.repeatSuppression`: пригнічує повторювані рядки статусу/інструментів у межах ходу (типово: `true`).
+- `stream.deliveryMode`: `"live"` передає потік поступово; `"final_only"` буферизує до завершальних подій ходу.
- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструментів (типово: `"paragraph"`).
-- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, проєктованих на один хід ACP.
+- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, що проєктується за один хід ACP.
- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлення ACP.
-- `stream.tagVisibility`: запис назв tag із булевими перевизначеннями видимості для потокових подій.
-- `runtime.ttlMinutes`: idle TTL у хвилинах для worker-ів сеансів ACP до моменту, коли вони стають придатними для очищення.
+- `stream.tagVisibility`: запис, що зіставляє назви теґів із логічними перевизначеннями видимості для потокових подій.
+- `runtime.ttlMinutes`: idle TTL у хвилинах для worker-ів сеансу ACP перед можливим очищенням.
- `runtime.installCommand`: необов’язкова команда встановлення для запуску під час bootstrap середовища runtime ACP.
---
@@ -3679,14 +3684,14 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
- `cli.banner.taglineMode` керує стилем слогана банера:
- `"random"` (типово): змінні кумедні/сезонні слогани.
- `"default"`: фіксований нейтральний слоган (`All your chats, one OpenClaw.`).
- - `"off"`: без тексту слогана (заголовок/версія банера все одно показуються).
+ - `"off"`: без тексту слогана (назва/версія банера все одно показується).
- Щоб приховати весь банер (а не лише слогани), установіть env `OPENCLAW_HIDE_BANNER=1`.
---
## Wizard
-Метадані, які записуються керованими CLI-потоками налаштування (`onboard`, `configure`, `doctor`):
+Метадані, які записують потоки керованого налаштування CLI (`onboard`, `configure`, `doctor`):
```json5
{
@@ -3704,15 +3709,15 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
## Identity
-Див. поля identity у `agents.list` у розділі [Типові значення агента](#agent-defaults).
+Див. поля identity в `agents.list` у розділі [Значення агентів за замовчуванням](#agent-defaults).
---
-## Bridge (застаріле, видалено)
+## Bridge (legacy, вилучено)
-Поточні збірки більше не містять TCP bridge. Node підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде видалено; `openclaw doctor --fix` може прибрати невідомі ключі).
+Поточні збірки більше не містять TCP bridge. Node підключаються через Gateway WebSocket. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі).
-
+
```json
{
@@ -3739,22 +3744,22 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
cron: {
enabled: true,
maxConcurrentRuns: 2,
- webhook: "https://example.invalid/legacy", // застарілий fallback для збережених завдань notify:true
- webhookToken: "replace-with-dedicated-token", // необов’язковий bearer token для вихідної auth webhook
- sessionRetention: "24h", // рядок тривалості або false
+ webhook: "https://example.invalid/legacy", // deprecated fallback for stored notify:true jobs
+ webhookToken: "replace-with-dedicated-token", // optional bearer token for outbound webhook auth
+ sessionRetention: "24h", // duration string or false
runLog: {
- maxBytes: "2mb", // типово 2_000_000 байтів
- keepLines: 2000, // типово 2000
+ maxBytes: "2mb", // default 2_000_000 bytes
+ keepLines: 2000, // default 2000
},
},
}
```
-- `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`: застарілий legacy fallback 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, що використовується для доставки Cron через POST до Webhook (`delivery.mode = "webhook"`); якщо пропущено, заголовок auth не надсилається.
+- `webhook`: застарілий резервний URL Webhook (http/https), який використовується лише для збережених задач, що все ще мають `notify: true`.
### `cron.retry`
@@ -3770,11 +3775,11 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (типово: `3`; діапазон: `0`–`10`).
-- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 1–10 записів).
-- `retryOn`: типи помилок, що запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Пропустіть, щоб повторювати для всіх тимчасових типів.
+- `maxAttempts`: максимальна кількість повторів для одноразових задач у разі тимчасових помилок (типово: `3`; діапазон: `0`–`10`).
+- `backoffMs`: масив затримок backoff у мс для кожної спроби повтору (типово: `[30000, 60000, 300000]`; 1–10 записів).
+- `retryOn`: типи помилок, що запускають повтор — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Пропустіть, щоб повторювати всі тимчасові типи.
-Застосовується лише до одноразових cron-завдань. Повторювані завдання використовують окрему обробку збоїв.
+Застосовується лише до одноразових задач Cron. Повторювані задачі використовують окрему обробку збоїв.
### `cron.failureAlert`
@@ -3792,11 +3797,11 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `enabled`: увімкнути сповіщення про збої для cron-завдань (типово: `false`).
+- `enabled`: увімкнути сповіщення про збої для задач Cron (типово: `false`).
- `after`: кількість послідовних збоїв перед спрацюванням сповіщення (додатне ціле число, мінімум: `1`).
-- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число).
-- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` виконує POST на налаштований webhook.
-- `accountId`: необов’язковий id облікового запису або каналу для обмеження доставки сповіщення.
+- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для тієї самої задачі (невід’ємне ціле число).
+- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` робить POST до налаштованого Webhook.
+- `accountId`: необов’язковий ID облікового запису або каналу для обмеження доставки сповіщення.
### `cron.failureDestination`
@@ -3813,22 +3818,22 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- Типова ціль для сповіщень про збої cron для всіх завдань.
-- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних про ціль.
+- Типове місце призначення для сповіщень про збої Cron для всіх задач.
+- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних цілі.
- `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки.
-- `to`: явна ціль announce або URL webhook. Обов’язково для режиму webhook.
+- `to`: явна ціль announce або URL Webhook. Обов’язково для режиму webhook.
- `accountId`: необов’язкове перевизначення облікового запису для доставки.
-- `delivery.failureDestination` для окремого завдання перевизначає це глобальне типове значення.
-- Коли не задано ні глобальної, ні цілі збоїв для окремого завдання, завдання, які вже доставляють через `announce`, при збої повертаються до цієї основної announce-цілі.
-- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо тільки основний `delivery.mode` завдання не дорівнює `"webhook"`.
+- `delivery.failureDestination` для окремої задачі перевизначає це глобальне типове значення.
+- Коли не задано ні глобальне місце призначення збою, ні місце призначення для окремої задачі, задачі, які вже доставляють через `announce`, у разі збою використовують як резервний варіант цю основну ціль announce.
+- `delivery.failureDestination` підтримується лише для задач із `sessionTarget="isolated"`, якщо тільки основний `delivery.mode` задачі не дорівнює `"webhook"`.
-Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання cron відстежуються як [background tasks](/uk/automation/tasks).
+Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання Cron відстежуються як [фонові задачі](/uk/automation/tasks).
---
## Змінні шаблону моделі медіа
-Заповнювачі шаблону, які розгортаються в `tools.media.models[].args`:
+Заповнювачі шаблону, що розгортаються в `tools.media.models[].args`:
| Змінна | Опис |
| ----------------- | ------------------------------------------------- |
@@ -3837,27 +3842,27 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
| `{{BodyStripped}}`| Тіло без згадок у групі |
| `{{From}}` | Ідентифікатор відправника |
| `{{To}}` | Ідентифікатор призначення |
-| `{{MessageSid}}` | id повідомлення каналу |
+| `{{MessageSid}}` | ID повідомлення каналу |
| `{{SessionId}}` | UUID поточного сеансу |
-| `{{IsNewSession}}`| `"true"`, коли створено новий сеанс |
+| `{{IsNewSession}}`| `"true"`, коли створено новий сеанс |
| `{{MediaUrl}}` | Псевдо-URL вхідного медіа |
| `{{MediaPath}}` | Локальний шлях до медіа |
| `{{MediaType}}` | Тип медіа (image/audio/document/…) |
-| `{{Transcript}}` | Транскрипт аудіо |
-| `{{Prompt}}` | Розв’язаний media prompt для CLI-записів |
-| `{{MaxChars}}` | Розв’язана максимальна кількість символів виводу для CLI-записів |
+| `{{Transcript}}` | Аудіотранскрипт |
+| `{{Prompt}}` | Визначений media prompt для записів CLI |
+| `{{MaxChars}}` | Визначена максимальна кількість вихідних символів для записів CLI |
| `{{ChatType}}` | `"direct"` або `"group"` |
| `{{GroupSubject}}`| Тема групи (best effort) |
-| `{{GroupMembers}}`| Попередній перегляд учасників групи (best effort) |
+| `{{GroupMembers}}`| Попередній список учасників групи (best effort) |
| `{{SenderName}}` | Відображуване ім’я відправника (best effort) |
| `{{SenderE164}}` | Номер телефону відправника (best effort) |
-| `{{Provider}}` | Підказка provider (`whatsapp`, `telegram`, `discord` тощо) |
+| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) |
---
-## Include конфігурації (`$include`)
+## Include-и конфігурації (`$include`)
-Розділяйте конфігурацію на кілька файлів:
+Розділіть конфігурацію на кілька файлів:
```json5
// ~/.openclaw/openclaw.json
@@ -3870,15 +3875,15 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-**Поведінка злиття:**
+**Поведінка об’єднання:**
-- Один файл: замінює об’єкт, у якому міститься.
-- Масив файлів: deep-merge у заданому порядку (пізніші перевизначають попередні).
-- Сусідні ключі: зливаються після include (перевизначають включені значення).
-- Вкладені include: до 10 рівнів глибини.
-- Шляхи: розв’язуються відносно файлу, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/`../` дозволені лише тоді, коли після розв’язання вони все одно залишаються в межах цього кордону.
-- Помилки: зрозумілі повідомлення для відсутніх файлів, помилок парсингу та циклічних include.
+- Один файл: замінює об’єкт-контейнер.
+- Масив файлів: глибоко об’єднується за порядком (пізніші перевизначають раніші).
+- Сусідні ключі: об’єднуються після include-ів (перевизначають включені значення).
+- Вкладені include-и: до 10 рівнів глибини.
+- Шляхи: визначаються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/`../` дозволені лише тоді, коли вони все одно визначаються в межах цієї границі.
+- Помилки: чіткі повідомлення для відсутніх файлів, помилок парсингу та циклічних include-ів.
---
-_Пов’язане: [Configuration](/uk/gateway/configuration) · [Configuration Examples](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_
+_Пов’язано: [Конфігурація](/uk/gateway/configuration) · [Приклади конфігурації](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_