diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md
index 96f23f19e..01406091d 100644
--- a/docs/uk/gateway/configuration-reference.md
+++ b/docs/uk/gateway/configuration-reference.md
@@ -1,23 +1,23 @@
---
read_when:
- - Вам потрібні точні семантика або значення за замовчуванням для полів конфігурації
- - Ви перевіряєте блоки конфігурації каналу, моделі, шлюзу або інструментів
+ - Вам потрібна точна семантика полів конфігурації або значення за замовчуванням на рівні полів
+ - Ви перевіряєте блоки конфігурації каналів, моделей, шлюзу або інструментів
summary: Повний довідник для кожного ключа конфігурації OpenClaw, значень за замовчуванням і налаштувань каналів
title: Довідник з конфігурації
x-i18n:
- generated_at: "2026-04-06T02:36:10Z"
+ generated_at: "2026-04-06T04:36:41Z"
model: gpt-5.4
provider: openai
- source_hash: 6aa6b24b593f6f07118817afabea4cc7842aca6b7c5602b45f479b40c1685230
+ source_hash: 6ae6c19666f65433361e1c8b100ae710448c8aa055a60c140241a8aea09b98a5
source_path: gateway/configuration-reference.md
workflow: 15
---
# Довідник з конфігурації
-Кожне поле, доступне в `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration).
+Усі поля, доступні в `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration).
-Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
+Формат конфігурації — **JSON5** (дозволені коментарі та коми в кінці). Усі поля необов'язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
---
@@ -25,32 +25,32 @@ x-i18n:
Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не вказано `enabled: false`).
-### Доступ до приватних повідомлень і груп
+### Доступ до DM і груп
-Усі канали підтримують політики для приватних повідомлень і груп:
+Усі канали підтримують політики DM і політики груп:
-| Політика приватних повідомлень | Поведінка |
-| ------------------------------ | -------------------------------------------------------------- |
-| `pairing` (за замовчуванням) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
-| `allowlist` | Лише відправники з `allowFrom` (або зі сховища дозволів для сполучення) |
-| `open` | Дозволити всі вхідні приватні повідомлення (потрібно `allowFrom: ["*"]`) |
-| `disabled` | Ігнорувати всі вхідні приватні повідомлення |
+| Політика DM | Поведінка |
+| ------------------- | --------------------------------------------------------------- |
+| `pairing` (default) | Невідомі відправники отримують одноразовий код прив'язки; власник має схвалити |
+| `allowlist` | Лише відправники з `allowFrom` (або зі сховища дозволів після прив'язки) |
+| `open` | Дозволити всі вхідні DM (потрібен `allowFrom: ["*"]`) |
+| `disabled` | Ігнорувати всі вхідні DM |
-| Політика груп | Поведінка |
-| ---------------------- | ------------------------------------------------------- |
-| `allowlist` (за замовчуванням) | Лише групи, що відповідають налаштованому allowlist |
-| `open` | Обійти allowlist груп (обмеження за згадуванням усе ще застосовується) |
-| `disabled` | Блокувати всі повідомлення в групах/кімнатах |
+| Політика груп | Поведінка |
+| --------------------- | ----------------------------------------------------- |
+| `allowlist` (default) | Лише групи, що відповідають налаштованому списку дозволів |
+| `open` | Обходити списки дозволів для груп (перевірка згадувань усе ще застосовується) |
+| `disabled` | Блокувати всі повідомлення груп/кімнат |
-`channels.defaults.groupPolicy` встановлює значення за замовчуванням, коли `groupPolicy` постачальника не задано.
-Коди сполучення спливають через 1 годину. Кількість очікувальних запитів на сполучення для приватних повідомлень обмежена **3 на канал**.
-Якщо блок постачальника повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
+`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` постачальника не встановлено.
+Коди прив'язки спливають через 1 годину. Кількість очікувальних запитів на прив'язку DM обмежена **3 на канал**.
+Якщо блок постачальника повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) з попередженням під час запуску.
### Перевизначення моделей для каналів
-Використовуйте `channels.modelByChannel`, щоб прив’язати конкретні ідентифікатори каналів до моделі. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналу застосовується, якщо в сеансу ще немає перевизначення моделі (наприклад, встановленого через `/model`).
+Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналів застосовується, коли сесія ще не має перевизначення моделі (наприклад, встановленого через `/model`).
```json5
{
@@ -71,9 +71,9 @@ x-i18n:
}
```
-### Значення каналів за замовчуванням і heartbeat
+### Значення за замовчуванням для каналів і heartbeat
-Використовуйте `channels.defaults` для спільної поведінки політики груп і heartbeat між постачальниками:
+Використовуйте `channels.defaults` для спільної політики груп і поведінки heartbeat у всіх постачальників:
```json5
{
@@ -91,15 +91,15 @@ x-i18n:
}
```
-- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні постачальника не задано.
-- `channels.defaults.contextVisibility`: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення: `all` (за замовчуванням, включати весь контекст цитат/тредів/історії), `allowlist` (включати контекст лише від відправників із allowlist), `allowlist_quote` (те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`.
-- `channels.defaults.heartbeat.showOk`: включати здорові стани каналів у вивід heartbeat.
-- `channels.defaults.heartbeat.showAlerts`: включати деградовані/помилкові стани каналів у вивід heartbeat.
-- `channels.defaults.heartbeat.useIndicator`: відображати компактний heartbeat у стилі індикатора.
+- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні постачальника не встановлено.
+- `channels.defaults.contextVisibility`: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення: `all` (default, включає весь процитований/потоковий/історичний контекст), `allowlist` (включає контекст лише від відправників зі списку дозволів), `allowlist_quote` (як `allowlist`, але зберігає явний контекст цитати/відповіді). Перевизначення на рівні каналу: `channels..contextVisibility`.
+- `channels.defaults.heartbeat.showOk`: включати стани здорових каналів у вивід heartbeat.
+- `channels.defaults.heartbeat.showAlerts`: включати стани деградації/помилок у вивід heartbeat.
+- `channels.defaults.heartbeat.useIndicator`: рендерити компактний вивід heartbeat у стилі індикатора.
### WhatsApp
-WhatsApp працює через вебканал шлюзу (Baileys Web). Він запускається автоматично, коли існує прив’язаний сеанс.
+WhatsApp працює через вебканал шлюзу (Baileys Web). Він запускається автоматично, коли існує прив'язана сесія.
```json5
{
@@ -110,7 +110,7 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
textChunkLimit: 4000,
chunkMode: "length", // length | newline
mediaMaxMb: 50,
- sendReadReceipts: true, // сині галочки (false у режимі self-chat)
+ sendReadReceipts: true, // blue ticks (false in self-chat mode)
groups: {
"*": { requireMention: true },
},
@@ -150,10 +150,10 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
}
```
-- Вихідні команди за замовчуванням використовують обліковий запис `default`, якщо він є; інакше — перший налаштований ідентифікатор облікового запису (відсортовано).
-- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
-- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується через `openclaw doctor` у `whatsapp/default`.
-- Перевизначення для окремих облікових записів: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`.
+- Вихідні команди за замовчуванням використовують обліковий запис `default`, якщо він є; інакше — перший налаштований ID облікового запису (відсортований).
+- Необов'язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір облікового запису за замовчуванням, якщо він збігається з налаштованим ID облікового запису.
+- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується `openclaw doctor` у `whatsapp/default`.
+- Перевизначення на рівні облікового запису: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`.
@@ -171,24 +171,24 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
"*": { requireMention: true },
"-1001234567890": {
allowFrom: ["@admin"],
- systemPrompt: "Відповідай коротко.",
+ systemPrompt: "Keep answers brief.",
topics: {
"99": {
requireMention: false,
skills: ["search"],
- systemPrompt: "Дотримуйся теми.",
+ systemPrompt: "Stay on topic.",
},
},
},
},
customCommands: [
- { command: "backup", description: "Git-резервна копія" },
- { command: "generate", description: "Створити зображення" },
+ { command: "backup", description: "Git backup" },
+ { command: "generate", description: "Create an image" },
],
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,
@@ -211,12 +211,12 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
}
```
-- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; symlink відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням.
-- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
-- У конфігураціях із кількома обліковими записами (2+ ідентифікаторів) установіть явний обліковий запис за замовчуванням (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо цього немає або значення некоректне.
-- `configWrites: false` блокує записи конфігурації, ініційовані Telegram (міграції ID супергруп, `/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` (працює в приватних і групових чатах).
+- Токен бота: `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 супергруп, `/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` (працює в прямих і групових чатах).
- Політика повторних спроб: див. [Retry policy](/uk/concepts/retry).
### Discord
@@ -264,7 +264,7 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
requireMention: true,
users: ["987654321098765432"],
skills: ["docs"],
- systemPrompt: "Лише короткі відповіді.",
+ systemPrompt: "Short answers only.",
},
},
},
@@ -272,7 +272,7 @@ WhatsApp працює через вебканал шлюзу (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: {
@@ -283,7 +283,7 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
enabled: true,
idleHours: 24,
maxAgeHours: 0,
- spawnSubagentSessions: false, // увімкнення для sessions_spawn({ thread: true })
+ spawnSubagentSessions: false, // opt-in for sessions_spawn({ thread: true })
},
voice: {
enabled: true,
@@ -320,33 +320,33 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
```
- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням.
-- Прямі вихідні виклики, що передають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все ще беруться з вибраного облікового запису в активному знімку середовища виконання.
-- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
-- Використовуйте `user:` (приватне повідомлення) або `channel:` (канал guild) для цілей доставки; звичайні числові ID відхиляються.
-- Slug guild завжди в нижньому регістрі із заміною пробілів на `-`; ключі каналів використовують slugified name (без `#`). Віддавайте перевагу 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` і прив’язана доставка/маршрутизація)
- - `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає)
+- Прямі вихідні виклики, що передають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку середовища виконання.
+- Необов'язковий `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` (default 17) розбиває високі повідомлення, навіть якщо вони коротші за 2000 символів.
+- `channels.discord.threadBindings` керує маршрутизацією, прив'язаною до потоків Discord:
+ - `enabled`: перевизначення Discord для можливостей сесій, прив'язаних до потоку (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив'язана доставка/маршрутизація)
+ - `idleHours`: перевизначення Discord для автоматичного зняття фокусу через неактивність у годинах (`0` вимикає)
- `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає)
- - `spawnSubagentSessions`: прапорець увімкнення для автоматичного створення/прив’язки тредів через `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` відображає доступність середовища виконання у presence бота (healthy => online, degraded => idle, exhausted => dnd) і дає змогу необов’язково перевизначати текст статусу.
-- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінним ім’ям/тегом (режим сумісності аварійного доступу).
-- `channels.discord.execApprovals`: власна доставка схвалень exec і авторизація схвалювачів у Discord.
- - `enabled`: `true`, `false` або `"auto"` (за замовчуванням). У режимі auto схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо не вказано, використовується `commands.ownerAllowFrom`.
- - `agentFilter`: необов’язковий allowlist ID агентів. Якщо пропустити, схвалення пересилаються для всіх агентів.
- - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
- - `target`: куди надсилати підказки для схвалення. `"dm"` (за замовчуванням) надсилає в приватні повідомлення схвалювачів, `"channel"` — в початковий канал, `"both"` — в обидва місця. Коли target містить `"channel"`, кнопками можуть користуватися лише визначені схвалювачі.
- - `cleanupAfterResolve`: коли `true`, видаляє приватні повідомлення зі схваленням після схвалення, відмови або тайм-ауту.
+ - `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.
+- `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` відображає доступність середовища виконання на статус бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов'язкові перевизначення тексту статусу.
+- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінними іменами/тегами (режим сумісності break-glass).
+- `channels.discord.execApprovals`: нативна доставка погоджень exec у Discord та авторизація тих, хто погоджує.
+ - `enabled`: `true`, `false` або `"auto"` (default). В auto mode погодження exec активуються, коли тих, хто погоджує, можна визначити з `approvers` або `commands.ownerAllowFrom`.
+ - `approvers`: ID користувачів Discord, яким дозволено погоджувати exec-запити. Якщо не вказано, використовується `commands.ownerAllowFrom`.
+ - `agentFilter`: необов'язковий список дозволених ID агентів. Якщо пропущено, погодження пересилаються для всіх агентів.
+ - `sessionFilter`: необов'язкові шаблони ключів сесій (підрядок або regex).
+ - `target`: куди надсилати запити на погодження. `"dm"` (default) надсилає в DM тих, хто погоджує, `"channel"` — у вихідний канал, `"both"` — в обидва місця. Коли target включає `"channel"`, кнопками можуть користуватися лише визначені ті, хто погоджує.
+ - `cleanupAfterResolve`: коли `true`, видаляє DM-повідомлення про погодження після погодження, відхилення або тайм-ауту.
**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, за замовчуванням), `all` (усі повідомлення), `allowlist` (від `guilds..users` для всіх повідомлень).
@@ -380,10 +380,10 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
```
- JSON облікового запису служби: вбудовано (`serviceAccount`) або через файл (`serviceAccountFile`).
-- Також підтримується SecretRef облікового запису служби (`serviceAccountRef`).
+- Також підтримується SecretRef для облікового запису служби (`serviceAccountRef`).
- Резервні змінні середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
- Використовуйте `spaces/` або `users/` для цілей доставки.
-- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінним email principal (режим сумісності аварійного доступу).
+- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінним email-principal (режим сумісності break-glass).
### Slack
@@ -405,7 +405,7 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
allowBots: false,
users: ["U123"],
skills: ["docs"],
- systemPrompt: "Лише короткі відповіді.",
+ systemPrompt: "Short answers only.",
},
},
historyLimit: 50,
@@ -433,8 +433,8 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
typingReaction: "hourglass_flowing_sand",
textChunkLimit: 4000,
chunkMode: "length",
- streaming: "partial", // off | partial | block | progress (режим попереднього перегляду)
- nativeStreaming: true, // використовувати нативний API потокової передачі Slack, коли streaming=partial
+ streaming: "partial", // off | partial | block | progress (preview mode)
+ nativeStreaming: true, // use Slack native streaming API when streaming=partial
mediaMaxMb: 20,
execApprovals: {
enabled: "auto", // true | false | "auto"
@@ -448,34 +448,34 @@ WhatsApp працює через вебканал шлюзу (Baileys Web). Ві
}
```
-- **Socket mode** вимагає і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резерв через змінні середовища для облікового запису за замовчуванням).
-- **HTTP mode** вимагає `botToken` плюс `signingSecret` (у корені або для окремого облікового запису).
-- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні
- рядки або об’єкти SecretRef.
-- Знімки облікових записів Slack показують поля джерела/статусу для кожного облікового запису, такі як
- `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, у HTTP mode,
+- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резервні змінні середовища для облікового запису за замовчуванням).
+- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для окремого облікового запису).
+- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
+ рядки або об'єкти SecretRef.
+- Знімки облікових записів Slack показують поля джерела/статусу облікових даних, як-от
+ `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, в HTTP mode,
`signingSecretStatus`. `configured_unavailable` означає, що обліковий запис
- налаштовано через SecretRef, але поточний шлях команди/середовища виконання не зміг
- визначити значення секрету.
-- `configWrites: false` блокує записи конфігурації, ініційовані Slack.
-- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
-- `channels.slack.streaming` — канонічний ключ режиму потоку. Застарілі `streamMode` і булеві значення `streaming` мігруються автоматично.
-- Використовуйте `user:` (приватне повідомлення) або `channel:` для цілей доставки.
+ налаштований через SecretRef, але поточний шлях команди/середовища виконання не зміг
+ отримати значення секрету.
+- `configWrites: false` блокує записи конфігурації, ініційовані зі Slack.
+- Необов'язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він збігається з налаштованим ID облікового запису.
+- `channels.slack.streaming` — канонічний ключ режиму потокової передачі. Застарілі `streamMode` і булеві значення `streaming` мігруються автоматично.
+- Використовуйте `user:` (DM) або `channel:` для цілей доставки.
-**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `all`, `allowlist` (з `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (default), `all`, `allowlist` (з `reactionAllowlist`).
-**Ізоляція сеансів тредів:** `thread.historyScope` — для кожного треду (за замовчуванням) або спільний для каналу. `thread.inheritParent` копіює стенограму батьківського каналу в нові треди.
+**Ізоляція сесій потоків:** `thread.historyScope` — окремо для потоку (за замовчуванням) або спільно для каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові потоки.
-- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте скорочений код emoji Slack, наприклад `"hourglass_flowing_sand"`.
-- `channels.slack.execApprovals`: власна доставка схвалень exec і авторизація схвалювачів у Slack. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
+- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а після завершення видаляє її. Використовуйте shortcode емодзі Slack, наприклад `"hourglass_flowing_sand"`.
+- `channels.slack.execApprovals`: нативна доставка погоджень exec у Slack та авторизація тих, хто погоджує. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
-| Група дій | За замовчуванням | Примітки |
-| ----------- | ---------------- | ------------------------ |
-| reactions | увімкнено | Реагувати + перелік реакцій |
-| messages | увімкнено | Читати/надсилати/редагувати/видаляти |
-| pins | увімкнено | Закріпити/відкріпити/перелік |
-| memberInfo | увімкнено | Інформація про учасника |
-| emojiList | увімкнено | Список користувацьких emoji |
+| Група дій | За замовчуванням | Примітки |
+| ------------ | ---------------- | ------------------------ |
+| reactions | увімкнено | Реакції + список реакцій |
+| messages | увімкнено | Читання/надсилання/редагування/видалення |
+| pins | увімкнено | Закріпити/відкріпити/перелічити |
+| memberInfo | увімкнено | Інформація про учасника |
+| emojiList | увімкнено | Список користувацьких емодзі |
### Mattermost
@@ -496,10 +496,10 @@ Mattermost постачається як plugin: `openclaw plugins install @open
"team-channel-id": { requireMention: false },
},
commands: {
- native: true, // увімкнення за бажанням
+ native: true, // opt-in
nativeSkills: true,
callbackPath: "/api/channels/mattermost/command",
- // Необов’язкова явна URL-адреса для розгортань із reverse proxy/публічним доступом
+ // Optional explicit URL for reverse-proxy/public deployments
callbackUrl: "https://gateway.example.com/api/channels/mattermost/command",
},
textChunkLimit: 4000,
@@ -509,23 +509,23 @@ Mattermost постачається як plugin: `openclaw plugins install @open
}
```
-Режими чату: `oncall` (відповідати на @-згадування, за замовчуванням), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з тригерного префікса).
+Режими чату: `oncall` (відповідати на @-згадування, за замовчуванням), `onmessage` (на кожне повідомлення), `onchar` (на повідомлення, що починаються з префікса-тригера).
-Коли увімкнено нативні команди Mattermost:
+Коли нативні команди Mattermost увімкнено:
-- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL-адресою.
-- `commands.callbackUrl` має вказувати на endpoint шлюзу OpenClaw і бути досяжним із сервера Mattermost.
-- Зворотні виклики нативних slash-команд автентифікуються за допомогою токенів окремих команд, які Mattermost повертає
- під час реєстрації slash-команд. Якщо реєстрація не вдається або не
- активовано жодної команди, OpenClaw відхиляє зворотні виклики з
+- `commands.callbackPath` має бути шляхом (наприклад, `/api/channels/mattermost/command`), а не повним URL.
+- `commands.callbackUrl` має вказувати на endpoint шлюзу OpenClaw і бути доступним із сервера Mattermost.
+- Нативні callbacks slash-команд автентифікуються через токени для кожної команди, які Mattermost повертає
+ під час реєстрації slash-команди. Якщо реєстрація не вдасться або жодні
+ команди не будуть активовані, OpenClaw відхилятиме callbacks з
`Unauthorized: invalid command token.`
-- Для приватних/tailnet/internal хостів зворотних викликів Mattermost може вимагати,
- щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен зворотного виклику.
- Використовуйте значення хосту/домену, а не повні URL-адреси.
-- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost.
+- Для приватних/tailnet/internal хостів callback Mattermost може вимагати,
+ щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен callback.
+ Використовуйте значення хоста/домену, а не повні URL.
+- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані з Mattermost.
- `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах.
-- `channels.mattermost.groups..requireMention`: перевизначення обмеження згадуванням для каналу (`"*"` для значення за замовчуванням).
-- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- `channels.mattermost.groups..requireMention`: перевизначення перевірки згадувань для окремого каналу (`"*"` для значення за замовчуванням).
+- Необов'язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він збігається з налаштованим ID облікового запису.
### Signal
@@ -534,7 +534,7 @@ Mattermost постачається як plugin: `openclaw plugins install @open
channels: {
signal: {
enabled: true,
- account: "+15555550123", // необов’язкова прив’язка облікового запису
+ account: "+15555550123", // optional account binding
dmPolicy: "pairing",
allowFrom: ["+15551234567", "uuid:123e4567-e89b-12d3-a456-426614174000"],
configWrites: true,
@@ -546,15 +546,15 @@ Mattermost постачається як plugin: `openclaw plugins install @open
}
```
-**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `all`, `allowlist` (з `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (default), `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
{
@@ -562,21 +562,21 @@ BlueBubbles — рекомендований шлях для iMessage (на ос
bluebubbles: {
enabled: true,
dmPolicy: "pairing",
- // serverUrl, password, webhookPath, елементи керування групами та розширені дії:
- // див. /channels/bluebubbles
+ // serverUrl, password, webhookPath, group controls, and advanced actions:
+ // see /channels/bluebubbles
},
},
}
```
- Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
-- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
-- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних ACP-сеансів. Використовуйте handle або target string BlueBubbles (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-- Повна конфігурація каналу BlueBubbles описана в [BlueBubbles](/uk/channels/bluebubbles).
+- Необов'язковий `channels.bluebubbles.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він збігається з налаштованим ID облікового запису.
+- Записи верхнього рівня `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).
+- Повну конфігурацію каналу BlueBubbles описано в [BlueBubbles](/uk/channels/bluebubbles).
### iMessage
-OpenClaw запускає `imsg rpc` (JSON-RPC поверх stdio). Жоден daemon або порт не потрібен.
+OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Жоден daemon або порт не потрібен.
```json5
{
@@ -600,17 +600,17 @@ OpenClaw запускає `imsg rpc` (JSON-RPC поверх stdio). Жоден d
}
```
-- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- Необов'язковий `channels.imessage.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він збігається з налаштованим ID облікового запису.
-- Потрібен Full Disk Access до бази даних Messages.
-- Віддавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів.
-- `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
+- Потрібен Full Disk Access до БД Messages.
+- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів.
+- `cliPath` може вказувати на SSH-wrapper; установіть `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (за замовчуванням: `/Users/*/Library/Messages/Attachments`).
-- SCP використовує строгу перевірку ключа хоста, тому переконайтеся, що ключ relay host уже існує в `~/.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 використовує сувору перевірку ключа хоста, тож переконайтеся, що ключ relay-host уже існує в `~/.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).
-
+
```bash
#!/usr/bin/env bash
@@ -651,20 +651,20 @@ Matrix працює через extension і налаштовується в `cha
}
```
-- Автентифікація токеном використовує `accessToken`; автентифікація паролем — `userId` + `password`.
-- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані облікові записи можуть перевизначити його через `channels.matrix.accounts..proxy`.
-- `channels.matrix.allowPrivateNetwork` дозволяє приватні/internal homeserver. `proxy` і `allowPrivateNetwork` — незалежні елементи керування.
-- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у конфігураціях із кількома обліковими записами.
-- `channels.matrix.execApprovals`: власна доставка схвалень exec і авторизація схвалювачів у Matrix.
- - `enabled`: `true`, `false` або `"auto"` (за замовчуванням). У режимі auto схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати запити exec.
- - `agentFilter`: необов’язковий allowlist ID агентів. Якщо пропустити, схвалення пересилаються для всіх агентів.
- - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
- - `target`: куди надсилати підказки для схвалення. `"dm"` (за замовчуванням), `"channel"` (початкова кімната) або `"both"`.
- - Перевизначення для окремих облікових записів: `channels.matrix.accounts..execApprovals`.
-- `channels.matrix.dm.sessionScope` керує тим, як приватні повідомлення Matrix групуються в сеанси: `per-user` (за замовчуванням) спільно використовує маршрутизований peer, а `per-room` ізолює кожну кімнату приватних повідомлень.
-- Перевірки статусу Matrix і пошук живого каталогу використовують ту саму політику proxy, що й трафік середовища виконання.
-- Повна конфігурація Matrix, правила націлювання та приклади налаштування описані в [Matrix](/uk/channels/matrix).
+- Автентифікація токеном використовує `accessToken`; автентифікація паролем використовує `userId` + `password`.
+- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явно заданий HTTP(S)-proxy. Іменовані облікові записи можуть перевизначити це через `channels.matrix.accounts..proxy`.
+- `channels.matrix.allowPrivateNetwork` дозволяє приватні/internal homeserver. `proxy` і `allowPrivateNetwork` — незалежні механізми керування.
+- `channels.matrix.defaultAccount` вибирає пріоритетний обліковий запис у конфігураціях із кількома обліковими записами.
+- `channels.matrix.execApprovals`: нативна доставка погоджень exec у Matrix та авторизація тих, хто погоджує.
+ - `enabled`: `true`, `false` або `"auto"` (default). В auto mode погодження exec активуються, коли тих, хто погоджує, можна визначити з `approvers` або `commands.ownerAllowFrom`.
+ - `approvers`: ID користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено погоджувати exec-запити.
+ - `agentFilter`: необов'язковий список дозволених ID агентів. Якщо пропущено, погодження пересилаються для всіх агентів.
+ - `sessionFilter`: необов'язкові шаблони ключів сесій (підрядок або regex).
+ - `target`: куди надсилати запити на погодження. `"dm"` (default), `"channel"` (вихідна кімната) або `"both"`.
+ - Перевизначення на рівні облікового запису: `channels.matrix.accounts..execApprovals`.
+- `channels.matrix.dm.sessionScope` керує тим, як DM у Matrix групуються в сесії: `per-user` (за замовчуванням) ділить за маршрутизованим peer, а `per-room` ізолює кожну DM-кімнату.
+- Перевірки статусу Matrix і пошуки в live-directory використовують ту саму політику proxy, що й трафік середовища виконання.
+- Повну конфігурацію Matrix, правила адресації та приклади налаштування описано в [Matrix](/uk/channels/matrix).
### Microsoft Teams
@@ -676,15 +676,15 @@ Microsoft Teams працює через extension і налаштовуєтьс
msteams: {
enabled: true,
configWrites: true,
- // appId, appPassword, tenantId, webhook, політики team/channel:
- // див. /channels/msteams
+ // appId, appPassword, tenantId, webhook, team/channel policies:
+ // see /channels/msteams
},
},
}
```
- Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`.
-- Повна конфігурація Teams (облікові дані, webhook, політика приватних повідомлень/груп, перевизначення для team/channel) описана в [Microsoft Teams](/uk/channels/msteams).
+- Повну конфігурацію Teams (облікові дані, webhook, політику DM/груп, перевизначення для окремих team/channel) описано в [Microsoft Teams](/uk/channels/msteams).
### IRC
@@ -710,8 +710,8 @@ IRC працює через extension і налаштовується в `channe
```
- Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
-- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
-- Повна конфігурація каналу IRC (host/port/TLS/channels/allowlist/обмеження згадуванням) описана в [IRC](/uk/channels/irc).
+- Необов'язковий `channels.irc.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він збігається з налаштованим ID облікового запису.
+- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) описано в [IRC](/uk/channels/irc).
### Багатообліковість (усі канали)
@@ -723,11 +723,11 @@ IRC працює через extension і налаштовується в `channe
telegram: {
accounts: {
default: {
- name: "Основний бот",
+ name: "Primary bot",
botToken: "123456:ABC...",
},
alerts: {
- name: "Бот сповіщень",
+ name: "Alerts bot",
botToken: "987654:XYZ...",
},
},
@@ -737,27 +737,27 @@ IRC працює через extension і налаштовується в `channe
```
- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація).
-- Токени зі змінних середовища застосовуються лише до облікового запису **default**.
-- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремих облікових записів.
+- Токени з env застосовуються лише до облікового запису **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` (або онбординг каналу), перебуваючи на top-level конфігурації каналу для одного облікового запису, OpenClaw спочатку переносить top-level значення для одного облікового запису, прив'язані до облікового запису, у карту облікових записів каналу, щоб початковий обліковий запис і надалі працював. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти вже наявну відповідну іменовану/default-ціль.
+- Наявні прив'язки лише на рівні каналу (без `accountId`) і надалі відповідатимуть default-обліковому запису; прив'язки на рівні облікового запису залишаються необов'язковими.
+- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи top-level значення для одного облікового запису, прив'язані до облікового запису, у promoted-обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix може зберегти вже наявну відповідну іменовану/default-ціль.
-### Інші канали extension
+### Інші канали-extensions
-Багато каналів extension налаштовуються як `channels.` і описані на їхніх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
+Багато каналів-extension налаштовуються як `channels.` і описані на окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
Див. повний індекс каналів: [Channels](/uk/channels).
-### Обмеження згадуванням у групових чатах
+### Перевірка згадувань у групових чатах
-Повідомлення в групах за замовчуванням **вимагають згадування** (згадування в метаданих або безпечні шаблони regex). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage.
+Для групових повідомлень за замовчуванням **потрібне згадування** (метадані згадування або безпечні regex-патерни). Це стосується групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage.
**Типи згадувань:**
- **Згадування в метаданих**: нативні @-згадування платформи. Ігноруються в режимі self-chat WhatsApp.
-- **Текстові шаблони**: безпечні шаблони regex у `agents.list[].groupChat.mentionPatterns`. Некоректні шаблони й небезпечні вкладені повтори ігноруються.
-- Обмеження згадуванням застосовується лише тоді, коли виявлення можливе (нативні згадування або принаймні один шаблон).
+- **Текстові патерни**: безпечні regex-патерни в `agents.list[].groupChat.mentionPatterns`. Недійсні патерни й небезпечні вкладені повторення ігноруються.
+- Перевірка згадувань застосовується лише тоді, коли виявлення можливе (нативні згадування або щонайменше один патерн).
```json5
{
@@ -770,9 +770,9 @@ IRC працює через extension і налаштовується в `channe
}
```
-`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначити його через `channels..historyLimit` (або для окремого облікового запису). Встановіть `0`, щоб вимкнути.
+`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або на рівні облікового запису). Установіть `0`, щоб вимкнути.
-#### Ліміти історії приватних повідомлень
+#### Ліміти історії DM
```json5
{
@@ -787,13 +787,13 @@ IRC працює через extension і налаштовується в `channe
}
```
-Порядок розв’язання: перевизначення для окремого приватного чату → значення за замовчуванням постачальника → без обмеження (зберігається все).
+Порядок визначення: перевизначення для конкретного DM → значення за замовчуванням постачальника → без ліміту (зберігається все).
Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
#### Режим self-chat
-Включіть власний номер у `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадування, відповідає лише на текстові шаблони):
+Додайте власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадування, відповідає лише на текстові патерни):
```json5
{
@@ -814,18 +814,18 @@ IRC працює через extension і налаштовується в `channe
}
```
-### Commands (обробка команд у чаті)
+### Команди (обробка команд чату)
```json5
{
commands: {
- native: "auto", // реєструвати нативні команди, коли підтримується
- text: true, // парсити /commands у повідомленнях чату
- bash: false, // дозволити ! (псевдонім: /bash)
+ native: "auto", // register native commands when supported
+ text: true, // parse /commands in chat messages
+ bash: false, // allow ! (alias: /bash)
bashForegroundMs: 2000,
- config: false, // дозволити /config
- debug: false, // дозволити /debug
- restart: false, // дозволити /restart + інструмент перезапуску шлюзу
+ config: false, // allow /config
+ debug: false, // allow /debug
+ restart: false, // allow /restart + gateway restart tool
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
@@ -835,24 +835,24 @@ IRC працює через extension і налаштовується в `channe
}
```
-
+
-- Текстові команди мають бути **окремими** повідомленнями з початковим `/`.
-- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим.
-- Перевизначення для каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
+- Текстові команди мають бути **окремими** повідомленнями, що починаються з `/`.
+- `native: "auto"` вмикає нативні команди для Discord/Telegram, але лишає Slack вимкненим.
+- Перевизначення для окремого каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
- `channels.telegram.customCommands` додає додаткові записи меню бота Telegram.
-- `bash: true` вмикає `! ` для команд оболонки хоста. Потрібно `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`.
-- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів шлюзу `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; лише читання `/config show` залишається доступним для звичайних операторських клієнтів із правом запису.
-- `channels..configWrites` контролює мутації конфігурації для кожного каналу (за замовчуванням: true).
-- Для багатооблікових каналів `channels..accounts..configWrites` також контролює записи, що націлені на цей обліковий запис (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`).
-- `allowFrom` задається окремо для постачальника. Якщо вказано, це **єдине** джерело авторизації (allowlist каналів/сполучення і `useAccessGroups` ігноруються).
-- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не задано.
+- `bash: true` вмикає `! ` для shell хоста. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`.
+- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів шлюзу `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; режим лише читання `/config show` залишається доступним для звичайних операторських клієнтів із правом запису.
+- `channels..configWrites` керує мутаціями конфігурації на рівні каналу (за замовчуванням: true).
+- Для багатьох облікових записів `channels..accounts..configWrites` також керує записами, що націлені на цей обліковий запис (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`).
+- `allowFrom` задається окремо для постачальника. Якщо встановлено, це **єдине** джерело авторизації (списки дозволів каналів/прив'язка та `useAccessGroups` ігноруються).
+- `useAccessGroups: false` дозволяє командам обходити політики access-group, коли `allowFrom` не задано.
---
-## Значення агентів за замовчуванням
+## Значення за замовчуванням для агентів
### `agents.defaults.workspace`
@@ -866,7 +866,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.repoRoot`
-Необов’язковий корінь репозиторію, що показується в рядку Runtime системного prompt. Якщо не задано, OpenClaw визначає його автоматично, піднімаючись вгору від workspace.
+Необов'язковий корінь репозиторію, що показується в рядку Runtime системного prompt. Якщо не встановлено, OpenClaw визначає його автоматично, піднімаючись вгору від workspace.
```json5
{
@@ -876,7 +876,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.skills`
-Необов’язковий allowlist Skills за замовчуванням для агентів, які не задають
+Необов'язковий список дозволених Skills за замовчуванням для агентів, які не задають
`agents.list[].skills`.
```json5
@@ -884,19 +884,19 @@ IRC працює через extension і налаштовується в `channe
agents: {
defaults: { skills: ["github", "weather"] },
list: [
- { id: "writer" }, // успадковує github, weather
- { id: "docs", skills: ["docs-search"] }, // замінює значення за замовчуванням
- { id: "locked-down", skills: [] }, // без Skills
+ { id: "writer" }, // inherits github, weather
+ { id: "docs", skills: ["docs-search"] }, // replaces defaults
+ { id: "locked-down", skills: [] }, // no skills
],
},
}
```
-- Пропустіть `agents.defaults.skills`, щоб за замовчуванням Skills не обмежувалися.
+- Пропустіть `agents.defaults.skills`, щоб за замовчуванням Skills були без обмежень.
- Пропустіть `agents.list[].skills`, щоб успадкувати значення за замовчуванням.
-- Установіть `agents.list[].skills: []`, щоб не було жодних Skills.
-- Непорожній список `agents.list[].skills` — це остаточний набір для цього агента; він
- не зливається зі значеннями за замовчуванням.
+- Установіть `agents.list[].skills: []`, щоб не дозволяти жодних Skills.
+- Непорожній список `agents.list[].skills` є фінальним набором для цього агента;
+ він не об'єднується зі значеннями за замовчуванням.
### `agents.defaults.skipBootstrap`
@@ -908,9 +908,21 @@ IRC працює через extension і налаштовується в `channe
}
```
+### `agents.defaults.contextInjection`
+
+Керує тим, коли bootstrap-файли workspace вбудовуються в системний prompt. За замовчуванням: `"always"`.
+
+- `"continuation-skip"`: безпечні продовжувальні ходи (після завершеної відповіді асистента) пропускають повторне вбудовування bootstrap workspace, зменшуючи розмір prompt. Запуски heartbeat і повторні спроби після compaction все одно перебудовують контекст.
+
+```json5
+{
+ agents: { defaults: { contextInjection: "continuation-skip" } },
+}
+```
+
### `agents.defaults.bootstrapMaxChars`
-Максимальна кількість символів на bootstrap-файл workspace до обрізання. За замовчуванням: `20000`.
+Максимальна кількість символів на один bootstrap-файл workspace до усічення. За замовчуванням: `20000`.
```json5
{
@@ -920,7 +932,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.bootstrapTotalMaxChars`
-Максимальна загальна кількість символів, що вставляються в усі bootstrap-файли workspace. За замовчуванням: `150000`.
+Максимальна загальна кількість символів, що вбудовуються з усіх bootstrap-файлів workspace. За замовчуванням: `150000`.
```json5
{
@@ -930,12 +942,12 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.bootstrapPromptTruncationWarning`
-Керує видимим для агента попереджувальним текстом, коли bootstrap-контекст обрізано.
+Керує видимим для агента текстом попередження, коли bootstrap-контекст усічено.
За замовчуванням: `"once"`.
-- `"off"`: ніколи не вставляти текст попередження в system prompt.
-- `"once"`: вставляти попередження один раз для кожного унікального підпису обрізання (рекомендовано).
-- `"always"`: вставляти попередження при кожному запуску, якщо є обрізання.
+- `"off"`: ніколи не вбудовувати текст попередження в системний prompt.
+- `"once"`: вбудовувати попередження один раз для кожного унікального підпису усічення (рекомендовано).
+- `"always"`: вбудовувати попередження при кожному запуску, коли є усічення.
```json5
{
@@ -948,8 +960,8 @@ IRC працює через extension і налаштовується в `channe
Максимальний розмір у пікселях для найдовшої сторони зображення в блоках зображень transcript/tool перед викликами постачальника.
За замовчуванням: `1200`.
-Нижчі значення зазвичай зменшують використання vision-token і розмір payload запиту для запусків із великою кількістю знімків екрана.
-Вищі значення зберігають більше візуальних деталей.
+Менші значення зазвичай зменшують використання vision-token і розмір запиту для сценаріїв зі значною кількістю скриншотів.
+Більші значення зберігають більше візуальних деталей.
```json5
{
@@ -959,7 +971,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.userTimezone`
-Часовий пояс для контексту system prompt (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста.
+Часовий пояс для контексту системного prompt (не для часових міток повідомлень). Якщо не вказано, використовується часовий пояс хоста.
```json5
{
@@ -969,7 +981,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.timeFormat`
-Формат часу в system prompt. За замовчуванням: `auto` (налаштування ОС).
+Формат часу в системному prompt. За замовчуванням: `auto` (налаштування ОС).
```json5
{
@@ -1007,7 +1019,7 @@ IRC працює через extension і налаштовується в `channe
primary: "anthropic/claude-opus-4-6",
fallbacks: ["openai/gpt-5.4-mini"],
},
- params: { cacheRetention: "long" }, // глобальні параметри постачальника за замовчуванням
+ params: { cacheRetention: "long" }, // global default provider params
pdfMaxBytesMb: 10,
pdfMaxPages: 20,
thinkingDefault: "low",
@@ -1022,43 +1034,43 @@ IRC працює через extension і налаштовується в `channe
}
```
-- `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- - Форма рядка задає лише основну модель.
- - Форма об’єкта задає основну модель плюс впорядковані failover-моделі.
-- `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- - Використовується шляхом інструмента `image` як конфігурація vision model.
- - Також використовується як резервна маршрутизація, коли вибрана/типова модель не може приймати вхідні зображення.
-- `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
+- `model`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
+ - Рядкова форма задає лише primary model.
+ - Об'єктна форма задає primary model і впорядкований failover-моделей.
+- `imageModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
+ - Використовується шляхом інструмента `image` як його конфігурація vision-model.
+ - Також використовується як резервна маршрутизація, коли вибрана/default model не може приймати вхідні зображення.
+- `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
- Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею tool/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 (наприклад `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`).
- - Якщо пропущено, `image_generate` все одно може вивести значення постачальника за замовчуванням на основі автентифікації. Спочатку він пробує поточного постачальника за замовчуванням, а потім решту зареєстрованих постачальників генерації зображень у порядку provider-id.
-- `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
+ - Якщо ви безпосередньо вибираєте provider/model, також налаштуйте відповідну автентифікацію постачальника/API key (наприклад `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`).
+ - Якщо поле пропущено, `image_generate` усе одно може вивести provider default на основі автентифікації. Спочатку воно пробує поточного постачальника за замовчуванням, потім решту зареєстрованих постачальників генерації зображень у порядку provider-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-id.
- - Якщо ви напряму вибираєте provider/model, налаштуйте й відповідну автентифікацію постачальника/API key.
-- `videoGenerationModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
+ - Якщо поле пропущено, `music_generate` усе одно може вивести provider default на основі автентифікації. Спочатку воно пробує поточного постачальника за замовчуванням, потім решту зареєстрованих постачальників генерації музики в порядку provider-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-id.
- - Якщо ви напряму вибираєте provider/model, налаштуйте й відповідну автентифікацію постачальника/API key.
- - Постачальник генерації відео Qwen у комплекті наразі підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня постачальника `size`, `aspectRatio`, `resolution`, `audio` та `watermark`.
-- `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
+ - Якщо поле пропущено, `video_generate` усе одно може вивести provider default на основі автентифікації. Спочатку воно пробує поточного постачальника за замовчуванням, потім решту зареєстрованих постачальників генерації відео в порядку provider-id.
+ - Якщо ви безпосередньо вибираєте provider/model, також налаштуйте відповідну автентифікацію постачальника/API key.
+ - Вбудований постачальник генерації відео Qwen зараз підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня постачальника `size`, `aspectRatio`, `resolution`, `audio` та `watermark`.
+- `pdfModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
- Використовується інструментом `pdf` для маршрутизації моделі.
- - Якщо пропущено, інструмент 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`). Якщо ви пропустите постачальника, OpenClaw спочатку спробує alias, потім унікальний збіг точного model id серед налаштованих постачальників, і лише потім повернеться до налаштованого постачальника за замовчуванням (застаріла сумісна поведінка, тому віддавайте перевагу явному `provider/model`). Якщо цей постачальник більше не надає налаштовану модель за замовчуванням, OpenClaw повернеться до першої налаштованої provider/model замість того, щоб показувати застаріле значення постачальника за замовчуванням, якого вже немає.
-- `models`: налаштований каталог моделей і allowlist для `/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` (для відповідного agent id) перевизначає за ключем. Докладно див. [Prompt Caching](/uk/reference/prompt-caching).
-- Засоби запису конфігурації, що змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта й за можливості зберігають наявні списки fallback.
-- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сеансами (кожен сеанс усе ще серіалізований). За замовчуванням: 4.
+ - Якщо поле пропущено, PDF-інструмент повертається до `imageModel`, а потім — до визначеної model сесії/default.
+- `pdfMaxBytesMb`: default-ліміт розміру PDF для інструмента `pdf`, якщо `maxBytesMb` не передано під час виклику.
+- `pdfMaxPages`: default максимальна кількість сторінок, яка враховується в режимі резервного витягування для інструмента `pdf`.
+- `verboseDefault`: default рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. За замовчуванням: `"off"`.
+- `elevatedDefault`: default рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. За замовчуванням: `"on"`.
+- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо ви пропускаєте provider, OpenClaw спочатку пробує alias, потім — унікальний збіг exact model id серед налаштованих постачальників, і лише потім повертається до налаштованого постачальника за замовчуванням (застаріла сумісна поведінка, тож надавайте перевагу явному `provider/model`). Якщо цей постачальник більше не надає налаштовану default model, OpenClaw повертається до першого налаштованого provider/model замість того, щоб показувати застаріле default від видаленого постачальника.
+- `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` (для відповідного agent id) перевизначає за ключем. Детальніше див. у [Prompt Caching](/uk/reference/prompt-caching).
+- Засоби запису конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну object form і по можливості зберігають наявні списки fallback.
+- `maxConcurrent`: максимальна кількість паралельних запусків агентів у сесіях (кожна сесія все одно серіалізується). За замовчуванням: 4.
-**Вбудовані скорочені alias** (застосовуються лише тоді, коли модель є в `agents.defaults.models`):
+**Вбудовані скорочення alias** (працюють лише тоді, коли модель є в `agents.defaults.models`):
| Alias | Модель |
| ------------------- | -------------------------------------- |
@@ -1075,10 +1087,10 @@ IRC працює через extension і налаштовується в `channe
Моделі 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 за замовчуванням використовується `adaptive` thinking, якщо не задано явний рівень thinking.
-- Сеанси підтримуються, коли встановлено `sessionArg`.
-- Наскрізна передача зображень підтримується, коли `imageArg` приймає шляхи до файлів.
+- Сесії підтримуються, коли встановлено `sessionArg`.
+- Пряме передавання зображень підтримується, коли `imageArg` приймає шляхи до файлів.
### `agents.defaults.heartbeat`
@@ -1089,16 +1101,16 @@ IRC працює через extension і налаштовується в `channe
agents: {
defaults: {
heartbeat: {
- every: "30m", // 0m вимикає
+ every: "30m", // 0m disables
model: "openai/gpt-5.4-mini",
includeReasoning: false,
- lightContext: false, // за замовчуванням: false; true залишає лише HEARTBEAT.md з bootstrap-файлів workspace
- isolatedSession: false, // за замовчуванням: false; true запускає кожен heartbeat у свіжому сеансі (без історії розмови)
+ 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 | ...
- prompt: "Прочитай HEARTBEAT.md, якщо він існує...",
+ 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,
},
@@ -1107,12 +1119,12 @@ IRC працює через extension і налаштовується в `channe
}
```
-- `every`: рядок тривалості (ms/s/m/h). За замовчуванням: `30m` (автентифікація API key) або `1h` (автентифікація OAuth). Установіть `0m`, щоб вимкнути.
-- `suppressToolErrorWarnings`: коли true, пригнічує payload попереджень про помилки інструментів під час запусків heartbeat.
-- `directPolicy`: політика прямої доставки/доставки в приватні повідомлення. `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 запускаються **лише для цих агентів**.
+- `every`: рядок тривалості (ms/s/m/h). За замовчуванням: `30m` (автентифікація через API key) або `1h` (OAuth-автентифікація). Установіть `0m`, щоб вимкнути.
+- `suppressToolErrorWarnings`: якщо true, пригнічує payload попереджень про помилки інструментів під час запусків heartbeat.
+- `directPolicy`: політика прямої/DM-доставки. `allow` (default) дозволяє доставку за прямою ціллю. `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`
@@ -1126,15 +1138,15 @@ IRC працює через extension і налаштовується в `channe
timeoutSeconds: 900,
reserveTokensFloor: 24000,
identifierPolicy: "strict", // strict | off | custom
- identifierInstructions: "Точно зберігай deployment ID, ticket ID і пари 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 a brief notice when compaction starts (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.",
},
},
},
@@ -1142,18 +1154,18 @@ IRC працює через extension і налаштовується в `channe
}
```
-- `mode`: `default` або `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 залишався тихим.
-- `memoryFlush`: тихий агентний хід перед auto-compaction для збереження довговічної пам’яті. Пропускається, коли workspace доступний лише для читання.
+- `mode`: `default` або `safeguard` (підсумовування частинами для довгої історії). Див. [Compaction](/uk/concepts/compaction).
+- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції compaction, після чого OpenClaw перериває її. За замовчуванням: `900`.
+- `identifierPolicy`: `strict` (default), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час compaction summarization.
+- `identifierInstructions`: необов'язковий текст користувацьких вказівок щодо збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`.
+- `postCompactionSections`: необов'язкові назви секцій H2/H3 з AGENTS.md, які повторно вбудовуються після compaction. За замовчуванням `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне вбудовування. Коли поле не задано або явно дорівнює цій парі за замовчуванням, старі заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант.
+- `model`: необов'язкове перевизначення `provider/model-id` лише для summarization під час compaction. Використовуйте це, коли основна сесія має лишатися на одній моделі, але summaries compaction мають виконуватися на іншій; якщо не задано, compaction використовує primary model сесії.
+- `notifyUser`: якщо `true`, надсилає користувачу коротке повідомлення, коли починається compaction (наприклад, "Compacting context..."). За замовчуванням вимкнено, щоб compaction відбувався непомітно.
+- `memoryFlush`: тихий agentic-хід перед auto-compaction для збереження довготривалої пам'яті. Пропускається, коли workspace лише для читання.
### `agents.defaults.contextPruning`
-Обрізає **старі результати інструментів** із контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сеансу на диску.
+Очищає **старі результати інструментів** з in-memory-контексту перед відправленням до LLM. **Не** змінює історію сесії на диску.
```json5
{
@@ -1161,13 +1173,13 @@ IRC працює через extension і налаштовується в `channe
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"] },
},
},
@@ -1177,25 +1189,25 @@ IRC працює через extension і налаштовується в `channe
-- `mode: "cache-ttl"` вмикає проходи обрізання.
-- `ttl` визначає, як часто обрізання може запускатися знову (після останнього торкання кешу).
-- Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім, якщо потрібно, повністю очищає старіші результати інструментів.
+- `mode: "cache-ttl"` вмикає проходи pruning.
+- `ttl` керує тим, як часто pruning може запускатися знову (після останнього дотику до cache).
+- Pruning спочатку м'яко обрізає надто великі результати інструментів, а потім за потреби жорстко очищає старіші результати інструментів.
-**М’яке скорочення** зберігає початок і кінець та вставляє `...` посередині.
+**Soft-trim** зберігає початок і кінець та вставляє `...` посередині.
-**Повне очищення** замінює весь результат інструмента заповнювачем.
+**Hard-clear** повністю замінює результат інструмента на placeholder.
Примітки:
-- Блоки зображень ніколи не обрізаються і не очищаються.
-- Коефіцієнти ґрунтуються на символах (приблизно), а не на точній кількості токенів.
-- Якщо є менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається.
+- Блоки зображень ніколи не обрізаються/не очищаються.
+- Співвідношення базуються на символах (приблизно), а не на точній кількості токенів.
+- Якщо повідомлень assistant менше, ніж `keepLastAssistants`, pruning пропускається.
-Докладно про поведінку див. [Session Pruning](/uk/concepts/session-pruning).
+Деталі поведінки див. у [Session Pruning](/uk/concepts/session-pruning).
-### Block streaming
+### Блокова потокова передача
```json5
{
@@ -1205,19 +1217,19 @@ IRC працює через extension і налаштовується в `channe
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`, щоб увімкнути блокові відповіді.
-- Перевизначення для каналів: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat за замовчуванням `minChars: 1500`.
-- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500ms. Перевизначення для агента: `agents.list[].humanDelay`.
+- Не-Telegram канали потребують явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді.
+- Перевизначення для каналу: `channels..blockStreamingCoalesce` (та варіанти на рівні облікового запису). Для Signal/Slack/Discord/Google Chat за замовчуванням `minChars: 1500`.
+- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500ms. Перевизначення для окремого агента: `agents.list[].humanDelay`.
-Про поведінку й деталі chunking див. [Streaming](/uk/concepts/streaming).
+Деталі поведінки та розбиття на частини див. у [Streaming](/uk/concepts/streaming).
-### Індикатори набору тексту
+### Індикатори набору
```json5
{
@@ -1230,8 +1242,8 @@ IRC працює через extension і налаштовується в `channe
}
```
-- За замовчуванням: `instant` для приватних чатів/згадувань, `message` для групових чатів без згадування.
-- Перевизначення для сеансу: `session.typingMode`, `session.typingIntervalSeconds`.
+- За замовчуванням: `instant` для прямих чатів/згадувань, `message` для групових чатів без згадування.
+- Перевизначення для сесії: `session.typingMode`, `session.typingIntervalSeconds`.
Див. [Typing Indicators](/uk/concepts/typing-indicators).
@@ -1239,7 +1251,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.sandbox`
-Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
+Необов'язкова ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
```json5
{
@@ -1285,7 +1297,7 @@ IRC працює через extension і налаштовується в `channe
identityFile: "~/.ssh/id_ed25519",
certificateFile: "~/.ssh/id_ed25519-cert.pub",
knownHostsFile: "~/.ssh/known_hosts",
- // SecretRef / вбудований вміст також підтримуються:
+ // 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" },
@@ -1334,24 +1346,24 @@ IRC працює через extension і налаштовується в `channe
}
```
-
+
**Backend:**
-- `docker`: локальне середовище Docker (за замовчуванням)
-- `ssh`: загальне віддалене середовище на основі SSH
-- `openshell`: середовище OpenShell
+- `docker`: локальне середовище виконання Docker (за замовчуванням)
+- `ssh`: загальне віддалене середовище виконання на базі SSH
+- `openshell`: середовище виконання OpenShell
-Коли вибрано `backend: "openshell"`, налаштування, специфічні для середовища виконання, переміщуються до
+Коли вибрано `backend: "openshell"`, налаштування, специфічні для середовища виконання, переносяться до
`plugins.entries.openshell.config`.
-**Конфігурація SSH backend:**
+**Конфігурація backend SSH:**
- `target`: SSH-ціль у форматі `user@host[:port]`
- `command`: команда SSH-клієнта (за замовчуванням: `ssh`)
-- `workspaceRoot`: абсолютний віддалений корінь, що використовується для workspace за областями
-- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, які передаються OpenSSH
-- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, які OpenClaw матеріалізує в тимчасові файли під час виконання
+- `workspaceRoot`: абсолютний віддалений корінь для workspace за кожною областю
+- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, передані в OpenSSH
+- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, які OpenClaw матеріалізує у тимчасові файли під час виконання
- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH
**Пріоритет автентифікації SSH:**
@@ -1359,27 +1371,27 @@ IRC працює через extension і налаштовується в `channe
- `identityData` має пріоритет над `identityFile`
- `certificateData` має пріоритет над `certificateFile`
- `knownHostsData` має пріоритет над `knownHostsFile`
-- Значення `*Data` на основі SecretRef визначаються з активного знімка середовища виконання secrets до початку сеансу sandbox
+- Значення `*Data` на основі SecretRef визначаються з активного знімка secrets runtime перед початком sandbox-сесії
-**Поведінка SSH backend:**
+**Поведінка backend SSH:**
-- один раз засіває віддалений workspace після створення або повторного створення
-- потім зберігає віддалений SSH workspace канонічним
-- маршрутизує `exec`, файлові інструменти й media paths через SSH
-- не синхронізує віддалені зміни назад на хост автоматично
-- не підтримує браузерні контейнери sandbox
+- один раз ініціалізує віддалений workspace після створення або повторного створення
+- далі зберігає віддалений SSH-workspace канонічним
+- маршрутизує `exec`, файлові інструменти та шляхи до media через SSH
+- не синхронізує автоматично віддалені зміни назад на хост
+- не підтримує контейнерів браузера в sandbox
**Доступ до workspace:**
-- `none`: sandbox workspace для кожної області під `~/.openclaw/sandboxes`
-- `ro`: sandbox workspace в `/workspace`, workspace агента монтується лише для читання в `/agent`
-- `rw`: workspace агента монтується на читання/запис у `/workspace`
+- `none`: workspace sandbox за кожною областю в `~/.openclaw/sandboxes`
+- `ro`: workspace sandbox у `/workspace`, workspace агента змонтовано лише для читання в `/agent`
+- `rw`: workspace агента змонтовано для читання/запису в `/workspace`
**Область:**
-- `session`: контейнер + workspace для кожного сеансу
+- `session`: окремий контейнер + workspace на сесію
- `agent`: один контейнер + workspace на агента (за замовчуванням)
-- `shared`: спільний контейнер і workspace (без ізоляції між сеансами)
+- `shared`: спільний контейнер і workspace (без міжсесійної ізоляції)
**Конфігурація plugin OpenShell:**
@@ -1394,10 +1406,10 @@ IRC працює через extension і налаштовується в `channe
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,
},
@@ -1409,30 +1421,30 @@ IRC працює через extension і налаштовується в `channe
**Режим OpenShell:**
-- `mirror`: засіяти віддалене середовище з локального перед exec, синхронізувати назад після exec; локальний workspace залишається канонічним
-- `remote`: один раз засіяти віддалене середовище, коли створюється sandbox, а потім зберігати віддалений workspace канонічним
+- `mirror`: ініціалізувати віддалене середовище з локального перед exec, синхронізувати назад після exec; локальний workspace лишається канонічним
+- `remote`: один раз ініціалізувати віддалене середовище під час створення sandbox, далі віддалений workspace лишається канонічним
-У режимі `remote` локальні редагування хоста, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку засівання.
-Транспортом є SSH до sandbox OpenShell, але plugin володіє життєвим циклом sandbox і необов’язковою дзеркальною синхронізацією.
+У режимі `remote` локальні редагування на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку ініціалізації.
+Транспортом є SSH до sandbox OpenShell, але plugin володіє життєвим циклом sandbox і необов'язковою синхронізацією mirror.
-**`setupCommand`** запускається один раз після створення контейнера (через `sh -lc`). Потрібні вихід у мережу, записуваний корінь і root user.
+**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, записуваного root і користувача root.
-**Для контейнерів за замовчуванням встановлено `network: "none"`** — встановіть `"bridge"` (або користувацьку bridge network), якщо агенту потрібен вихідний доступ.
-`"host"` заблоковано. `"container:"` заблоковано за замовчуванням, якщо ви явно не встановите
-`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний доступ).
+**Контейнери за замовчуванням мають `network: "none"`** — установіть `"bridge"` (або кастомну bridge-мережу), якщо агенту потрібен вихід назовні.
+`"host"` заблоковано. `"container:"` за замовчуванням теж заблоковано, якщо ви явно не встановите
+`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (break-glass).
-**Вхідні вкладення** розміщуються в `media/inbound/*` в активному workspace.
+**Вхідні вкладення** staging'уються до `media/inbound/*` в активному workspace.
-**`docker.binds`** монтує додаткові каталоги хоста; глобальні та для окремих агентів binds зливаються.
+**`docker.binds`** монтує додаткові каталоги хоста; глобальні й агентські binds об'єднуються.
-**Браузер у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вставляється в system prompt. Не потребує `browser.enabled` в `openclaw.json`.
-Доступ спостерігача noVNC за замовчуванням використовує автентифікацію VNC, а OpenClaw видає URL із короткоживучим токеном (замість того, щоб показувати пароль у спільному URL).
+**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вбудовується в системний prompt. Не потребує `browser.enabled` в `openclaw.json`.
+Доступ спостерігача через noVNC за замовчуванням використовує VNC-автентифікацію, а OpenClaw видає URL із короткоживучим токеном (замість того, щоб показувати пароль у спільному URL).
-- `allowHostControl: false` (за замовчуванням) блокує націлювання sandbox-сеансів на браузер хоста.
-- `network` за замовчуванням — `openclaw-sandbox-browser` (виділена bridge network). Встановлюйте `bridge`, лише якщо вам явно потрібна глобальна bridge connectivity.
-- `cdpSourceRange` може необов’язково обмежувати вхідний CDP на межі контейнера до CIDR-діапазону (наприклад `172.21.0.1/32`).
-- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо задано (включно з `[]`), він замінює `docker.binds` для контейнера браузера.
-- Значення запуску за замовчуванням визначені в `scripts/sandbox-browser-entrypoint.sh` і налаштовані для контейнерних хостів:
+- `allowHostControl: false` (default) блокує націлювання sandboxed-сесій на браузер хоста.
+- `network` за замовчуванням дорівнює `openclaw-sandbox-browser` (виділена bridge-мережа). Установлюйте `bridge` лише тоді, коли вам справді потрібна глобальна bridge-зв'язність.
+- `cdpSourceRange` за потреби обмежує вхід до CDP на межі контейнера CIDR-діапазоном (наприклад `172.21.0.1/32`).
+- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер sandbox-browser. Якщо параметр задано (включно з `[]`), він замінює `docker.binds` для контейнера браузера.
+- Значення запуску за замовчуванням визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для контейнерних хостів:
- `--remote-debugging-address=127.0.0.1`
- `--remote-debugging-port=`
- `--user-data-dir=${HOME}/.chrome`
@@ -1449,28 +1461,28 @@ IRC працює через extension і налаштовується в `channe
- `--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` знову вмикає extensions, якщо від них
+ залежить ваш сценарій роботи.
- `--renderer-process-limit=2` можна змінити через
- `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використати
- значення процесного ліміту Chromium за замовчуванням.
+ `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати
+ стандартне обмеження процесів Chromium.
- а також `--no-sandbox` і `--disable-setuid-sandbox`, коли увімкнено `noSandbox`.
- - Значення за замовчуванням — це базова конфігурація образу контейнера; використовуйте кастомний
- образ браузера з кастомним entrypoint, щоб змінити значення контейнера за замовчуванням.
+ - Значення за замовчуванням є базовими для образу контейнера; використовуйте користувацький browser image з власним
+ entrypoint, щоб змінити типові налаштування контейнера.
Ізоляція браузера та `sandbox.docker.binds` наразі підтримуються лише для Docker.
-Зібрати образи:
+Збирання образів:
```bash
-scripts/sandbox-setup.sh # основний образ sandbox
-scripts/sandbox-browser-setup.sh # необов’язковий образ браузера
+scripts/sandbox-setup.sh # main sandbox image
+scripts/sandbox-browser-setup.sh # optional browser image
```
### `agents.list` (перевизначення для окремого агента)
@@ -1482,15 +1494,15 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
{
id: "main",
default: true,
- name: "Головний агент",
+ 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 для окремого агента
- params: { cacheRetention: "none" }, // перевизначає ключі matching defaults.models params
- skills: ["docs-search"], // замінює agents.defaults.skills, коли задано
+ 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
+ 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",
@@ -1521,26 +1533,26 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `id`: стабільний id агента (обов’язково).
-- `default`: коли встановлено кілька, перший має пріоритет (записується попередження). Якщо жоден не встановлено, за замовчуванням використовується перший запис списку.
-- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron jobs, які перевизначають лише `primary`, усе ще успадковують fallback за замовчуванням, якщо ви не задасте `fallbacks: []`.
-- `params`: параметри потоку для окремого агента, злиті поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень на рівні агента, таких як `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей.
-- `skills`: необов’язковий allowlist 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 для окремого повідомлення або сеансу.
-- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент повинен за замовчуванням використовувати сеанси ACP harness.
+- `id`: стабільний ID агента (обов'язково).
+- `default`: якщо встановлено для кількох, перший має пріоритет (записується попередження). Якщо не встановлено для жодного, default — перший елемент списку.
+- `model`: рядкова форма перевизначає лише `primary`; об'єктна форма `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron jobs, які перевизначають лише `primary`, все одно успадковують default fallback, якщо ви не встановите `fallbacks: []`.
+- `params`: параметри потоку для окремого агента, які зливаються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для агентоспецифічних перевизначень, наприклад `cacheRetention`, `temperature` або `maxTokens`, без дублювання всього каталогу моделей.
+- `skills`: необов'язковий список дозволених Skills для окремого агента. Якщо його пропущено, агент успадковує `agents.defaults.skills`, якщо той задано; явний список замінює значення за замовчуванням, а `[]` означає відсутність Skills.
+- `thinkingDefault`: необов'язковий default рівень thinking для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, якщо не задано перевизначення на рівні повідомлення або сесії.
+- `reasoningDefault`: необов'язкове default перевизначення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, якщо не задано перевизначення reasoning на рівні повідомлення або сесії.
+- `fastModeDefault`: необов'язкове default перевизначення fast mode для окремого агента (`true | false`). Застосовується, якщо не задано перевизначення fast-mode на рівні повідомлення або сесії.
+- `runtime`: необов'язковий опис runtime для окремого агента. Використовуйте `type: "acp"` разом з default-значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має за замовчуванням використовувати ACP-harness sessions.
- `identity.avatar`: шлях відносно workspace, `http(s)` URL або `data:` URI.
- `identity` виводить значення за замовчуванням: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`.
-- `subagents.allowAgents`: allowlist id агентів для `sessions_spawn` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
-- Захист успадкування sandbox: якщо сеанс-запитувач працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox.
-- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, у яких пропущено `agentId` (змушує до явного вибору профілю; за замовчуванням: false).
+- `subagents.allowAgents`: список дозволених agent id для `sessions_spawn` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
+- Захист успадкування sandbox: якщо сесія запитувача працює в sandbox, `sessions_spawn` відхиляє цілі, які працювали б без sandbox.
+- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, у яких пропущено `agentId` (вимагає явного вибору профілю; за замовчуванням: false).
---
-## Маршрутизація між агентами
+## Маршрутизація кількох агентів
-Запускайте кілька ізольованих агентів в одному Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent).
+Запускайте кількох ізольованих агентів в одному Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent).
```json5
{
@@ -1557,14 +1569,14 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-### Поля збігу прив’язок
+### Поля match для binding
-- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній type означає route), `acp` для постійних ACP-прив’язок розмов.
-- `match.channel` (обов’язково)
-- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; пропущено = обліковий запис за замовчуванням)
-- `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`)
-- `match.guildId` / `match.teamId` (необов’язково; специфічно для каналу)
-- `acp` (необов’язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }`
+- `type` (необов'язково): `route` для звичайної маршрутизації (відсутній type означає route), `acp` для постійних ACP-прив'язок розмов.
+- `match.channel` (обов'язково)
+- `match.accountId` (необов'язково; `*` = будь-який обліковий запис; якщо пропущено = default-обліковий запис)
+- `match.peer` (необов'язково; `{ kind: direct|group|channel, id }`)
+- `match.guildId` / `match.teamId` (необов'язково; залежить від каналу)
+- `acp` (необов'язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }`
**Детермінований порядок збігу:**
@@ -1572,14 +1584,14 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
2. `match.guildId`
3. `match.teamId`
4. `match.accountId` (точний, без peer/guild/team)
-5. `match.accountId: "*"` (на весь канал)
-6. Агент за замовчуванням
+5. `match.accountId: "*"` (по всьому каналу)
+6. Default-агент
-У межах кожного рівня перший запис `bindings`, що збігся, має пріоритет.
+У межах кожного рівня перший відповідний запис `bindings` має пріоритет.
-Для записів `type: "acp"` OpenClaw виконує зіставлення за точною ідентичністю розмови (`match.channel` + account + `match.peer.id`) і не використовує наведений вище порядок рівнів route binding.
+Для записів `type: "acp"` OpenClaw виконує визначення за точною ідентичністю розмови (`match.channel` + account + `match.peer.id`) і не використовує порядок рівнів route binding, наведений вище.
-### Профілі доступу для окремих агентів
+### Профілі доступу для окремого агента
@@ -1599,7 +1611,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
-
+
```json5
{
@@ -1674,7 +1686,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
-Докладно про пріоритети див. [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools).
+Деталі пріоритетів див. у [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools).
---
@@ -1700,22 +1712,22 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
},
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, // типовий авто-unfocus через неактивність у годинах (`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" } }],
@@ -1725,37 +1737,37 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-
+
-- **`scope`**: базова стратегія групування сеансів для контекстів групових чатів.
- - `per-sender` (за замовчуванням): кожен відправник отримує ізольований сеанс у контексті каналу.
- - `global`: усі учасники в контексті каналу спільно використовують один сеанс (використовуйте лише тоді, коли потрібен спільний контекст).
-- **`dmScope`**: як групуються приватні повідомлення.
- - `main`: усі приватні повідомлення спільно використовують головний сеанс.
- - `per-peer`: ізолювати за id відправника між каналами.
- - `per-channel-peer`: ізолювати за каналом + відправником (рекомендовано для вхідних скриньок із кількома користувачами).
- - `per-account-channel-peer`: ізолювати за обліковим записом + каналом + відправником (рекомендовано для багатообліковості).
-- **`identityLinks`**: мапа канонічних id до peer із префіксами постачальників для спільного використання сеансів між каналами.
-- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує той, що настане раніше.
+- **`scope`**: базова стратегія групування сесій для контекстів групового чату.
+ - `per-sender` (за замовчуванням): кожен відправник отримує ізольовану сесію в межах контексту каналу.
+ - `global`: усі учасники в контексті каналу ділять одну сесію (використовуйте лише тоді, коли потрібен спільний контекст).
+- **`dmScope`**: як групуються DM.
+ - `main`: усі DM використовують main session.
+ - `per-peer`: ізоляція за sender id між каналами.
+ - `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для inbox з багатьма користувачами).
+ - `per-account-channel-peer`: ізоляція за обліковим записом + каналом + відправником (рекомендовано для багатообліковості).
+- **`identityLinks`**: відображення канонічних id на peer з префіксом provider для спільного використання сесії між каналами.
+- **`reset`**: основна політика reset. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує те, що настане раніше.
- **`resetByType`**: перевизначення для типів (`direct`, `group`, `thread`). Застарілий `dm` приймається як alias для `direct`.
-- **`parentForkMaxTokens`**: максимальна дозволена кількість `totalTokens` у батьківському сеансі при створенні forked thread session (за замовчуванням `100000`).
- - Якщо `totalTokens` батьківського сеансу вищий за це значення, OpenClaw починає новий thread session замість успадкування історії transcript батьківського сеансу.
- - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти fork від батьківського сеансу.
-- **`mainKey`**: застаріле поле. Runtime тепер завжди використовує `"main"` для основного кошика приватного чату.
-- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів між агентами під час обміну agent-to-agent (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжки ping-pong.
+- **`parentForkMaxTokens`**: максимальний `totalTokens` батьківської сесії, дозволений під час створення forked thread session (за замовчуванням `100000`).
+ - Якщо `totalTokens` батьківської сесії перевищує це значення, OpenClaw починає нову thread session замість успадкування історії transcript батьківської сесії.
+ - Установіть `0`, щоб вимкнути цей запобіжник і завжди дозволяти fork від батьківської сесії.
+- **`mainKey`**: застаріле поле. Тепер середовище виконання завжди використовує `"main"` для основного direct-chat bucket.
+- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів між агентами під час обмінів agent-to-agent (ціле число, діапазон: `0`–`5`). `0` вимикає ping-pong chaining.
- **`sendPolicy`**: збіг за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перший deny має пріоритет.
-- **`maintenance`**: очищення й керування збереженням для session-store.
- - `mode`: `warn` лише виводить попередження; `enforce` застосовує очищення.
- - `pruneAfter`: поріг віку для застарілих записів (за замовчуванням `30d`).
+- **`maintenance`**: очищення сховища сесій + контроль retention.
+ - `mode`: `warn` лише видає попередження; `enforce` застосовує очищення.
+ - `pruneAfter`: віковий cutoff для застарілих записів (за замовчуванням `30d`).
- `maxEntries`: максимальна кількість записів у `sessions.json` (за замовчуванням `500`).
- - `rotateBytes`: ротує `sessions.json`, коли він перевищує цей розмір (за замовчуванням `10mb`).
- - `resetArchiveRetention`: час збереження для архівів transcript `*.reset.`. За замовчуванням дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
- - `maxDiskBytes`: необов’язковий бюджет дискового простору для каталогу сеансів. У режимі `warn` лише пише попередження; у режимі `enforce` спершу видаляє найстаріші артефакти/сеанси.
- - `highWaterBytes`: необов’язкова ціль після очищення бюджету. За замовчуванням `80%` від `maxDiskBytes`.
-- **`threadBindings`**: глобальні значення за замовчуванням для функцій сеансів, прив’язаних до тредів.
- - `enabled`: головний перемикач за замовчуванням (постачальники можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
- - `idleHours`: типовий автоматичний unfocus через неактивність у годинах (`0` вимикає; постачальники можуть перевизначати)
- - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; постачальники можуть перевизначати)
+ - `rotateBytes`: ротує `sessions.json`, коли його розмір перевищує це значення (за замовчуванням `10mb`).
+ - `resetArchiveRetention`: retention для архівів transcript `*.reset.`. За замовчуванням дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
+ - `maxDiskBytes`: необов'язковий ліміт дискового простору для каталогу сесій. У режимі `warn` логуються попередження; у режимі `enforce` спочатку видаляються найстаріші артефакти/сесії.
+ - `highWaterBytes`: необов'язкова ціль після очищення за бюджетом. За замовчуванням дорівнює `80%` від `maxDiskBytes`.
+- **`threadBindings`**: глобальні значення за замовчуванням для можливостей сесій, прив'язаних до потоків.
+ - `enabled`: головний перемикач за замовчуванням (postачальники можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
+ - `idleHours`: default авто-зняття фокусу через неактивність у годинах (`0` вимикає; postачальники можуть перевизначати)
+ - `maxAgeHours`: default жорсткий максимальний вік у годинах (`0` вимикає; postачальники можуть перевизначати)
@@ -1766,7 +1778,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
```json5
{
messages: {
- responsePrefix: "🦞", // або "auto"
+ responsePrefix: "🦞", // or "auto"
ackReaction: "👀",
ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all
removeAckAfterReply: false,
@@ -1781,7 +1793,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
},
},
inbound: {
- debounceMs: 2000, // 0 вимикає
+ debounceMs: 2000, // 0 disables
byChannel: {
whatsapp: 5000,
slack: 1500,
@@ -1795,7 +1807,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
Перевизначення для каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`.
-Порядок розв’язання (найспецифічніше перемагає): account → channel → global. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
+Порядок визначення (перемагає найспецифічніше): account → channel → global. `""` вимикає і зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
**Змінні шаблону:**
@@ -1805,24 +1817,24 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
| `{provider}` | Назва постачальника | `anthropic` |
| `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` |
-| `{identity.name}` | Ім’я identity агента | (те саме, що `"auto"`) |
+| `{identity.name}` | Назва identity агента | (те саме, що `"auto"`) |
Змінні нечутливі до регістру. `{think}` — alias для `{thinkingLevel}`.
-### Реакція підтвердження
+### Ack reaction
- За замовчуванням використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
- Перевизначення для каналу: `channels..ackReaction`, `channels..accounts..ackReaction`.
-- Порядок розв’язання: account → channel → `messages.ackReaction` → резерв із identity.
+- Порядок визначення: account → channel → `messages.ackReaction` → резервний варіант з identity.
- Область: `group-mentions` (за замовчуванням), `group-all`, `direct`, `all`.
-- `removeAckAfterReply`: видаляє реакцію підтвердження після відповіді в Slack, Discord і Telegram.
-- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram.
- У Slack і Discord, якщо не задано, реакції статусу залишаються ввімкненими, коли активні реакції підтвердження.
- У Telegram явно встановіть `true`, щоб увімкнути реакції статусу життєвого циклу.
+- `removeAckAfterReply`: видаляє ack після відповіді у Slack, Discord і Telegram.
+- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу у Slack, Discord і Telegram.
+ У Slack і Discord, якщо параметр не задано, реакції статусу лишаються увімкненими, коли активні ack reaction.
+ У Telegram потрібно явно встановити `true`, щоб увімкнути реакції статусу життєвого циклу.
### Debounce для вхідних повідомлень
-Об’єднує швидкі послідовні текстові повідомлення від одного відправника в один хід агента. Media/вкладення скидаються негайно. Керувальні команди обходять debounce.
+Об'єднує швидкі текстові повідомлення від того самого відправника в один хід агента. Media/вкладення скидаються одразу. Керувальні команди обходять debounce.
### TTS (text-to-speech)
@@ -1865,18 +1877,18 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `auto` керує auto-TTS. `/tts off|always|inbound|tagged` перевизначає значення для сеансу.
-- `summaryModel` перевизначає `agents.defaults.model.primary` для авто-підсумку.
-- `modelOverrides` увімкнено за замовчуванням; `modelOverrides.allowProvider` за замовчуванням `false` (увімкнення за бажанням).
+- `auto` керує auto-TTS. `/tts off|always|inbound|tagged` перевизначає налаштування для сесії.
+- `summaryModel` перевизначає `agents.defaults.model.primary` для auto-summary.
+- `modelOverrides` увімкнено за замовчуванням; для `modelOverrides.allowProvider` за замовчуванням встановлено `false` (потрібне явне ввімкнення).
- API keys резервно беруться з `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 server і послаблює перевірку model/voice.
+- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок визначення: config, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`.
+- Коли `openai.baseUrl` вказує на не-OpenAI endpoint, OpenClaw розглядає його як OpenAI-compatible TTS server і послаблює перевірку model/voice.
---
## Talk
-Типові значення для Talk mode (macOS/iOS/Android).
+Значення за замовчуванням для режиму Talk (macOS/iOS/Android).
```json5
{
@@ -1900,51 +1912,51 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька постачальників Talk.
-- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності та автоматично мігруються до `talk.providers.`.
+- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька Talk providers.
+- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) сумісні лише для зворотної сумісності й автоматично мігруються в `talk.providers.`.
- Voice ID резервно беруться з `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
-- `providers.*.apiKey` приймає звичайні рядки або об’єкти SecretRef.
-- Резерв із `ELEVENLABS_API_KEY` застосовується лише тоді, коли не налаштовано жодного API key Talk.
-- `providers.*.voiceAliases` дає змогу директивам Talk використовувати дружні назви.
-- `silenceTimeoutMs` визначає, скільки Talk mode чекає після тиші користувача перед надсиланням transcript. Якщо не задано, зберігається стандартне вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`).
+- `providers.*.apiKey` приймає відкриті рядки або об'єкти SecretRef.
+- Резервний `ELEVENLABS_API_KEY` застосовується лише тоді, коли API key Talk не налаштовано.
+- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви.
+- `silenceTimeoutMs` визначає, скільки Talk mode чекатиме після мовчання користувача, перш ніж надіслати transcript. Якщо не встановлено, зберігається pause window платформи за замовчуванням (`700 ms на macOS і Android, 900 ms на iOS`).
---
-## Інструменти
+## Tools
### Профілі інструментів
-`tools.profile` встановлює базовий allowlist перед `tools.allow`/`tools.deny`:
+`tools.profile` задає базовий список дозволів перед `tools.allow`/`tools.deny`:
-Локальний онбординг у нових локальних конфігураціях за замовчуванням ставить `tools.profile: "coding"`, якщо значення не задано (наявні явні профілі зберігаються).
+Під час локального онбордингу нові локальні конфігурації за замовчуванням отримують `tools.profile: "coding"`, якщо параметр не встановлено (наявні явні профілі зберігаються).
-| Профіль | Включає |
+| Профіль | Містить |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `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` | Без обмежень (те саме, що не задано) |
+| `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:automation` | `cron`, `gateway` |
-| `group:messaging` | `message` |
-| `group:nodes` | `nodes` |
-| `group:agents` | `agents_list` |
-| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
-| `group:openclaw` | Усі вбудовані інструменти (крім provider plugins) |
+| Група | Інструменти |
+| ------------------ | ------------------------------------------------------------------------------------------------------------------------ |
+| `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:automation` | `cron`, `gateway` |
+| `group:messaging` | `message` |
+| `group:nodes` | `nodes` |
+| `group:agents` | `agents_list` |
+| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
+| `group:openclaw` | Усі вбудовані інструменти (без provider plugins) |
### `tools.allow` / `tools.deny`
-Глобальна політика дозволу/заборони інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено.
+Глобальна політика allow/deny для інструментів (deny має пріоритет). Регістронезалежна, підтримує шаблони `*`. Застосовується, навіть коли Docker sandbox вимкнено.
```json5
{
@@ -1954,7 +1966,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.byProvider`
-Додатково обмежує інструменти для конкретних постачальників або моделей. Порядок: базовий профіль → профіль постачальника → allow/deny.
+Додатково обмежує інструменти для конкретних постачальників або моделей. Порядок: базовий profile → profile постачальника → allow/deny.
```json5
{
@@ -1970,7 +1982,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.elevated`
-Керує elevated exec-доступом поза sandbox:
+Керує elevated-доступом до exec поза sandbox:
```json5
{
@@ -1987,8 +1999,8 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
```
- Перевизначення для окремого агента (`agents.list[].tools.elevated`) може лише додатково обмежувати.
-- `/elevated on|off|ask|full` зберігає стан для кожного сеансу; вбудовані директиви застосовуються лише до одного повідомлення.
-- Elevated `exec` обходить sandboxing і використовує налаштований escape path (`gateway` за замовчуванням або `node`, коли ціллю exec є `node`).
+- `/elevated on|off|ask|full` зберігає стан для кожної сесії; вбудовані директиви застосовуються до одного повідомлення.
+- Elevated `exec` обходить sandbox і використовує налаштований шлях виходу (`gateway` за замовчуванням або `node`, коли ціллю exec є `node`).
### `tools.exec`
@@ -2012,8 +2024,8 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.loopDetection`
-Перевірки безпеки від циклів інструментів **за замовчуванням вимкнені**. Установіть `enabled: true`, щоб увімкнути виявлення.
-Налаштування можна визначати глобально в `tools.loopDetection` і перевизначати для окремого агента в `agents.list[].tools.loopDetection`.
+Перевірки безпеки tool-loop **вимкнені за замовчуванням**. Установіть `enabled: true`, щоб активувати виявлення.
+Налаштування можна визначити глобально в `tools.loopDetection` і перевизначити для окремого агента в `agents.list[].tools.loopDetection`.
```json5
{
@@ -2038,10 +2050,10 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
- `warningThreshold`: поріг повторюваного шаблону без прогресу для попереджень.
- `criticalThreshold`: вищий поріг повторення для блокування критичних циклів.
- `globalCircuitBreakerThreshold`: жорсткий поріг зупинки для будь-якого запуску без прогресу.
-- `detectors.genericRepeat`: попереджати про повторні виклики того самого інструмента з тими самими аргументами.
+- `detectors.genericRepeat`: попереджати про повторювані виклики того самого інструмента з тими самими аргументами.
- `detectors.knownPollNoProgress`: попереджати/блокувати відомі poll-інструменти (`process.poll`, `command_status` тощо).
-- `detectors.pingPong`: попереджати/блокувати чергування парних шаблонів без прогресу.
-- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, перевірка завершується помилкою.
+- `detectors.pingPong`: попереджати/блокувати чергування без прогресу у парах викликів.
+- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, валідація завершується помилкою.
### `tools.web`
@@ -2051,14 +2063,14 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
web: {
search: {
enabled: true,
- apiKey: "brave_api_key", // або змінна середовища BRAVE_API_KEY
+ apiKey: "brave_api_key", // or BRAVE_API_KEY env
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
fetch: {
enabled: true,
- provider: "firecrawl", // необов’язково; пропустіть для авто-визначення
+ provider: "firecrawl", // optional; omit for auto-detect
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
@@ -2075,7 +2087,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.media`
-Налаштовує розуміння вхідних медіа (зображення/аудіо/відео):
+Налаштовує розуміння вхідних media (зображення/аудіо/відео):
```json5
{
@@ -2083,7 +2095,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
media: {
concurrency: 2,
asyncCompletion: {
- directSend: false, // увімкнення за бажанням: надсилати завершені асинхронні music/video напряму в канал
+ directSend: false, // opt-in: send finished async music/video directly to the channel
},
audio: {
enabled: true,
@@ -2107,31 +2119,31 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-
+
**Запис постачальника** (`type: "provider"` або пропущено):
-- `provider`: id API-постачальника (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
-- `model`: перевизначення id моделі
-- `profile` / `preferredProfile`: вибір профілю `auth-profiles.json`
+- `provider`: ID API-постачальника (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
+- `model`: перевизначення model id
+- `profile` / `preferredProfile`: вибір profile у `auth-profiles.json`
**CLI-запис** (`type: "cli"`):
- `command`: виконуваний файл
-- `args`: шаблонізовані аргументи (підтримує `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо)
+- `args`: аргументи-шаблони (підтримуються `{{MediaPath}}`, `{{Prompt}}`, `{{MaxChars}}` тощо)
**Спільні поля:**
-- `capabilities`: необов’язковий список (`image`, `audio`, `video`). За замовчуванням: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
-- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для окремого запису.
-- Після збоїв використовується наступний запис.
+- `capabilities`: необов'язковий список (`image`, `audio`, `video`). За замовчуванням: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
+- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для конкретного запису.
+- Помилки переводять виконання до наступного запису.
-Автентифікація постачальника дотримується стандартного порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
+Автентифікація постачальників дотримується стандартного порядку: `auth-profiles.json` → env vars → `models.providers.*.apiKey`.
**Поля async completion:**
- `asyncCompletion.directSend`: коли `true`, завершені асинхронні завдання `music_generate`
- і `video_generate` спершу намагаються доставлятися прямо в канал. За замовчуванням: `false`
+ і `video_generate` спочатку намагаються доставити результат безпосередньо в канал. За замовчуванням: `false`
(застарілий шлях requester-session wake/model-delivery).
@@ -2151,9 +2163,9 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.sessions`
-Керує тим, які сеанси можуть бути ціллю для session tools (`sessions_list`, `sessions_history`, `sessions_send`).
+Керує тим, які сесії можуть бути ціллю для session tools (`sessions_list`, `sessions_history`, `sessions_send`).
-За замовчуванням: `tree` (поточний сеанс + сеанси, породжені ним, наприклад subagents).
+За замовчуванням: `tree` (поточна сесія + сесії, породжені нею, наприклад subagents).
```json5
{
@@ -2168,26 +2180,26 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
Примітки:
-- `self`: лише поточний ключ сеансу.
-- `tree`: поточний сеанс + сеанси, породжені поточним сеансом (subagents).
-- `agent`: будь-який сеанс, що належить поточному agent id (може включати інших користувачів, якщо ви запускаєте сеанси per-sender під тим самим agent id).
-- `all`: будь-який сеанс. Націлювання між агентами все одно потребує `tools.agentToAgent`.
-- Обмеження sandbox: коли поточний сеанс працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово стає `tree`, навіть якщо `tools.sessions.visibility="all"`.
+- `self`: лише поточний session key.
+- `tree`: поточна сесія + сесії, породжені поточною сесією (subagents).
+- `agent`: будь-яка сесія, що належить поточному agent id (може включати інших користувачів, якщо ви використовуєте per-sender sessions під тим самим agent id).
+- `all`: будь-яка сесія. Націлення між агентами все одно потребує `tools.agentToAgent`.
+- Обмеження sandbox: коли поточна сесія працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, visibility примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
-Керує підтримкою вбудованих вкладень для `sessions_spawn`.
+Керує підтримкою inline-вкладень для `sessions_spawn`.
```json5
{
tools: {
sessions_spawn: {
attachments: {
- enabled: false, // увімкнення за бажанням: установіть true, щоб дозволити вбудовані файлові вкладення
- 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"
},
},
},
@@ -2196,22 +2208,22 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
Примітки:
-- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP їх відхиляє.
-- Файли матеріалізуються в child workspace у `.openclaw/attachments//` разом із `.manifest.json`.
-- Вміст вкладень автоматично редагується під час збереження transcript.
-- Входи base64 перевіряються суворими перевірками алфавіту/заповнення й захистом розміру до декодування.
-- Права доступу для каталогів — `0700`, для файлів — `0600`.
-- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` залишає їх лише тоді, коли `retainOnSessionKeep: true`.
+- Вкладення підтримуються лише для `runtime: "subagent"`. ACP runtime їх відхиляє.
+- Файли матеріалізуються в дочірньому workspace за шляхом `.openclaw/attachments//` разом із `.manifest.json`.
+- Вміст вкладень автоматично редагується з transcript persistence.
+- Base64-входи перевіряються за суворими правилами алфавіту/відступів і з перевіркою розміру до декодування.
+- Права доступу до файлів: `0700` для каталогів і `0600` для файлів.
+- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`.
### `tools.experimental`
-Експериментальні прапорці вбудованих інструментів. За замовчуванням вимкнені, якщо не застосовується правило автоматичного ввімкнення, специфічне для runtime.
+Експериментальні прапорці для вбудованих інструментів. За замовчуванням вимкнено, якщо не діє автоматичне ввімкнення, специфічне для runtime.
```json5
{
tools: {
experimental: {
- planTool: true, // увімкнути експериментальний update_plan
+ planTool: true, // enable experimental update_plan
},
},
}
@@ -2220,8 +2232,8 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
Примітки:
- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи.
-- За замовчуванням: `false` для постачальників, відмінних від OpenAI. Для запусків OpenAI і OpenAI Codex він увімкнений автоматично.
-- Коли увімкнено, system prompt також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й тримала не більш ніж один крок у стані `in_progress`.
+- За замовчуванням: `false` для не-OpenAI постачальників. Під час запусків OpenAI і OpenAI Codex він вмикається автоматично.
+- Коли ввімкнено, системний prompt також додає вказівки з використання, щоб модель застосовувала його лише для суттєвої роботи та тримала щонайбільше один крок у стані `in_progress`.
### `agents.defaults.subagents`
@@ -2241,9 +2253,9 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `model`: модель за замовчуванням для породжених sub-agents. Якщо не задано, sub-agents успадковують модель викликувача.
-- `allowAgents`: типовий allowlist id цільових агентів для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
-- `runTimeoutSeconds`: timeout за замовчуванням (у секундах) для `sessions_spawn`, коли виклик інструмента не передає `runTimeoutSeconds`. `0` означає без timeout.
+- `model`: default model для породжених sub-agent. Якщо пропущено, sub-agents успадковують model викликача.
+- `allowAgents`: default список дозволених target agent id для `sessions_spawn`, коли агент-запитувач не задає власне `subagents.allowAgents` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
+- `runTimeoutSeconds`: default timeout (у секундах) для `sessions_spawn`, коли у виклику інструмента пропущено `runTimeoutSeconds`. `0` означає відсутність timeout.
- Політика інструментів для subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
@@ -2255,7 +2267,7 @@ OpenClaw використовує вбудований каталог модел
```json5
{
models: {
- mode: "merge", // merge (за замовчуванням) | replace
+ mode: "merge", // merge (default) | replace
providers: {
"custom-proxy": {
baseUrl: "http://localhost:4000/v1",
@@ -2279,43 +2291,43 @@ OpenClaw використовує вбудований каталог модел
}
```
-- Використовуйте `authHeader: true` + `headers` для нестандартних потреб автентифікації.
+- Використовуйте `authHeader: true` + `headers` для спеціальних потреб автентифікації.
- Перевизначайте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий alias змінної середовища).
-- Пріоритет злиття для matching provider IDs:
+- Пріоритет злиття для однакових provider ID:
- Непорожні значення `baseUrl` з agent `models.json` мають пріоритет.
- - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей постачальник не керується через SecretRef у поточному контексті config/auth-profile.
- - Значення `apiKey` постачальника, керовані через SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs), а не через збереження визначених секретів.
- - Значення заголовків постачальника, керовані через SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs).
- - Порожні або відсутні `apiKey`/`baseUrl` агента резервно беруться з `models.providers` у конфігурації.
- - Для matching model `contextWindow`/`maxTokens` використовується більше значення між явною конфігурацією та неявними значеннями каталогу.
- - Для matching model `contextTokens` явний runtime cap зберігається, якщо він наявний; використовуйте його, щоб обмежити ефективний контекст без зміни нативних метаданих моделі.
- - Використовуйте `models.mode: "replace"`, коли хочете, щоб конфігурація повністю переписала `models.json`.
- - Збереження маркерів є джерелозалежним: маркери записуються з активного знімка конфігурації джерела (до розв’язання), а не з визначених runtime secret values.
+ - Непорожні значення `apiKey` з агента мають пріоритет лише тоді, коли цей provider не керується через SecretRef у поточному контексті config/auth-profile.
+ - Значення `apiKey` для provider, керованих через SecretRef, оновлюються з source marker (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs) замість збереження визначених секретів.
+ - Значення заголовків provider, керованих через SecretRef, оновлюються з source marker (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs).
+ - Порожні або відсутні `apiKey`/`baseUrl` в агенті повертаються до `models.providers` у конфігурації.
+ - Для однакових моделей `contextWindow`/`maxTokens` використовують більше значення між явною конфігурацією та неявними значеннями каталогу.
+ - Для однакових моделей `contextTokens` зберігає явний runtime cap, коли той заданий; використовуйте його, щоб обмежити ефективний контекст без зміни нативних метаданих моделі.
+ - Використовуйте `models.mode: "replace"`, якщо хочете, щоб конфігурація повністю переписала `models.json`.
+ - Збереження marker є source-authoritative: markers записуються з активного знімка вихідної конфігурації (до визначення), а не з визначених runtime secret values.
-### Відомості про поля постачальника
+### Деталі полів постачальника
- `models.mode`: поведінка каталогу постачальників (`merge` або `replace`).
-- `models.providers`: мапа користувацьких постачальників, ключована за id постачальника.
+- `models.providers`: карта користувацьких постачальників за ключем provider id.
- `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо).
-- `models.providers.*.apiKey`: облікові дані постачальника (віддавайте перевагу SecretRef/env substitution).
+- `models.providers.*.apiKey`: облікові дані постачальника (краще через SecretRef/env substitution).
- `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`: base URL upstream API.
-- `models.providers.*.headers`: додаткові статичні заголовки для proxy/tenant routing.
+- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вбудовувати `options.num_ctx` у запити (за замовчуванням: `true`).
+- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, якщо це потрібно.
+- `models.providers.*.baseUrl`: базовий URL зовнішнього API.
+- `models.providers.*.headers`: додаткові статичні заголовки для proxy/tenant-routing.
- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів model-provider.
- - `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.headers`: додаткові заголовки (зливаються зі стандартними заголовками постачальника). Значення приймають SecretRef.
+ - `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію постачальника), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов'язковим `prefix`).
+ - `request.proxy`: перевизначення HTTP-proxy. Режими: `"env-proxy"` (використовувати env vars `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (з `url`). Обидва режими приймають необов'язковий підоб'єкт `tls`.
+ - `request.tls`: перевизначення TLS для прямих з'єднань. Поля: `ca`, `cert`, `key`, `passphrase` (усі приймають SecretRef), `serverName`, `insecureSkipVerify`.
- `models.providers.*.models`: явні записи каталогу моделей постачальника.
-- `models.providers.*.models.*.contextWindow`: метадані нативного контекстного вікна моделі.
-- `models.providers.*.models.*.contextTokens`: необов’язковий runtime context cap. Використовуйте це, коли хочете менший ефективний бюджет контексту, ніж нативне `contextWindow` моделі.
-- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це в `false` під час виконання. Порожній/відсутній `baseUrl` зберігає поведінку OpenAI за замовчуванням.
+- `models.providers.*.models.*.contextWindow`: метадані нативного context window моделі.
+- `models.providers.*.models.*.contextTokens`: необов'язкове runtime-обмеження контексту. Використовуйте це, коли хочете мати менший ефективний бюджет контексту, ніж нативний `contextWindow` моделі.
+- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов'язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім не-нативним `baseUrl` (host не `api.openai.com`) OpenClaw примусово встановлює це в `false` під час виконання. Порожній/пропущений `baseUrl` зберігає стандартну поведінку OpenAI.
- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань auto-discovery Bedrock.
- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути/вимкнути неявне discovery.
- `plugins.entries.amazon-bedrock.config.discovery.region`: AWS region для discovery.
-- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр provider-id для цільового discovery.
+- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов'язковий фільтр provider-id для цільового discovery.
- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: інтервал опитування для оновлення discovery.
- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне context window для виявлених моделей.
- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість вихідних токенів для виявлених моделей.
@@ -2356,7 +2368,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.
@@ -2390,10 +2402,10 @@ OpenClaw використовує вбудований каталог модел
}
```
-Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` приймаються як alias. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
+Установіть `ZAI_API_KEY`. Приймаються alias `z.ai/*` і `z-ai/*`. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
- Загальний endpoint: `https://api.z.ai/api/paas/v4`
-- Coding endpoint (за замовчуванням): `https://api.z.ai/api/coding/paas/v4`
+- Endpoint для кодування (за замовчуванням): `https://api.z.ai/api/coding/paas/v4`
- Для загального endpoint визначте користувацького постачальника з перевизначенням base URL.
@@ -2433,11 +2445,11 @@ OpenClaw використовує вбудований каталог модел
}
```
-Для endpoint у Китаї: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
+Для endpoint Китаю: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
-Нативні endpoints Moonshot повідомляють про сумісність використання streaming на спільному
+Нативні endpoint Moonshot декларують сумісність використання streaming на спільному
транспорті `openai-completions`, і OpenClaw тепер визначає це за можливостями endpoint,
-а не лише за вбудованим provider id.
+а не лише за built-in provider id.
@@ -2455,11 +2467,11 @@ OpenClaw використовує вбудований каталог модел
}
```
-Сумісний з Anthropic, вбудований постачальник. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`.
+Вбудований постачальник, сумісний з Anthropic. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`.
-
+
```json5
{
@@ -2494,11 +2506,11 @@ OpenClaw використовує вбудований каталог модел
}
```
-Base URL не повинен містити `/v1` (клієнт Anthropic додає його сам). Скорочення: `openclaw onboard --auth-choice synthetic-api-key`.
+Base URL має не містити `/v1` (клієнт Anthropic додає його сам). Скорочення: `openclaw onboard --auth-choice synthetic-api-key`.
-
+
```json5
{
@@ -2537,17 +2549,17 @@ Base URL не повинен містити `/v1` (клієнт Anthropic дод
Установіть `MINIMAX_API_KEY`. Скорочення:
`openclaw onboard --auth-choice minimax-global-api` або
`openclaw onboard --auth-choice minimax-cn-api`.
-Каталог моделей тепер за замовчуванням використовує лише M2.7.
-На сумісному з Anthropic streaming path OpenClaw вимикає thinking MiniMax
-за замовчуванням, якщо ви явно не встановите `thinking` самостійно. `/fast on` або
-`params.fastMode: true` переписує `MiniMax-M2.7` на
+Каталог моделей тепер за замовчуванням містить лише M2.7.
+На Anthropic-compatible streaming path OpenClaw за замовчуванням вимикає thinking для MiniMax,
+якщо ви явно не встановите `thinking` самостійно. `/fast on` або
+`params.fastMode: true` переписує `MiniMax-M2.7` у
`MiniMax-M2.7-highspeed`.
-Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; зберігайте хостовані моделі в режимі merge як резерв.
+Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на потужному обладнанні; залишайте hosted models злитими як резервний варіант.
@@ -2558,4 +2570,66 @@ Base URL не повинен містити `/v1` (клієнт Anthropic дод
```json5
{
skills: {
- allowBundled:
\ No newline at end of file
+ allowBundled: ["gemini", "peekaboo"],
+ load: {
+ extraDirs: ["~/Projects/agent-scripts/skills"],
+ },
+ install: {
+ preferBrew: true,
+ nodeManager: "npm", // npm | pnpm | yarn | bun
+ },
+ entries: {
+ "image-lab": {
+ apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // or plaintext string
+ env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },
+ },
+ peekaboo: { enabled: true },
+ sag: { enabled: false },
+ },
+ },
+}
+```
+
+- `allowBundled`: необов'язковий список дозволених лише для bundled Skills (managed/workspace Skills це не зачіпає).
+- `load.extraDirs`: додаткові спільні корені Skills (найнижчий пріоритет).
+- `install.preferBrew`: коли true, віддавати перевагу інсталяторам Homebrew, якщо
+ `brew` доступний, перш ніж переходити до інших типів інсталяторів.
+- `install.nodeManager`: пріоритет node-інсталятора для специфікацій `metadata.openclaw.install`
+ (`npm` | `pnpm` | `yarn` | `bun`).
+- `entries..enabled: false` вимикає Skill, навіть якщо він bundled/installed.
+- `entries..apiKey`: зручне поле API key для Skills, які оголошують основну env var (відкритий рядок або об'єкт SecretRef).
+
+---
+
+## Plugins
+
+```json5
+{
+ plugins: {
+ enabled: true,
+ allow: ["voice-call"],
+ deny: [],
+ load: {
+ paths: ["~/Projects/oss/voice-call-extension"],
+ },
+ entries: {
+ "voice-call": {
+ enabled: true,
+ hooks: {
+ allowPromptInjection: false,
+ },
+ config: { provider: "twilio" },
+ },
+ },
+ },
+}
+```
+
+- Завантажуються з `~/.openclaw/extensions`, `/.openclaw/extensions` і `plugins.load.paths`.
+- Discovery приймає нативні plugins OpenClaw, а також сумісні пакети Codex і Claude, включно з пакетами Claude без manifest у стандартному layout.
+- **Зміни конфігурації потребують перезапуску шлюзу.**
+- `allow`: необов'язковий список дозволених plugins (завантажуються лише перелічені plugins). `deny` має пріоритет.
+- `plugins.entries..apiKey`: зручне поле API key на рівні plugin (коли plugin це підтримує).
+- `plugins.entries..env`: карта env vars для окремого plugin.
+- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` і ігнорує поля legacy `before_agent_start`, що змінюють prompt, зберігаючи при цьому legacy `modelOverride` і `providerOverride`. Це стосується нативних plugin hooks і підтримуваних каталогів hooks, наданих пакетами.
+- `plugins.entries..subagent.allowModelOverride
\ No newline at end of file