diff --git a/docs/uk/concepts/compaction.md b/docs/uk/concepts/compaction.md
index 7404caef6..34dae4732 100644
--- a/docs/uk/concepts/compaction.md
+++ b/docs/uk/concepts/compaction.md
@@ -1,58 +1,58 @@
---
read_when:
- - Ви хочете зрозуміти автостиснення та /compact
- - Ви налагоджуєте довгі сесії, які впираються в ліміти контексту
-summary: Як OpenClaw підсумовує довгі розмови, щоб залишатися в межах лімітів моделі
-title: Стиснення
+ - Ви хочете зрозуміти автоматичний Compaction і `/compact`
+ - Ви налагоджуєте довгі сесії, які досягають лімітів контексту
+summary: Як OpenClaw підсумовує довгі розмови, щоб залишатися в межах обмежень моделі
+title: Compaction
x-i18n:
- generated_at: "2026-04-07T17:57:31Z"
+ generated_at: "2026-04-20T18:56:56Z"
model: gpt-5.4
provider: openai
- source_hash: e6590b82a8c3a9c310998d653459ca4d8612495703ca0a8d8d306d7643142fd1
+ source_hash: 382e4a879e65199bd98d7476bff556571e09344a21e909862a34e6029db6d765
source_path: concepts/compaction.md
workflow: 15
---
-# Стиснення
+# Compaction
-Кожна модель має контекстне вікно — максимальну кількість токенів, яку вона може обробити.
-Коли розмова наближається до цього ліміту, OpenClaw **стискає** старіші повідомлення
-у підсумок, щоб чат міг продовжуватися.
+Кожна модель має вікно контексту — максимальну кількість токенів, яку вона може обробити.
+Коли розмова наближається до цього ліміту, OpenClaw **ущільнює** старіші повідомлення
+у зведення, щоб чат міг продовжуватися.
## Як це працює
1. Старіші ходи розмови підсумовуються в компактний запис.
-2. Підсумок зберігається в транскрипті сесії.
-3. Недавні повідомлення зберігаються без змін.
+2. Зведення зберігається в транскрипті сесії.
+3. Нещодавні повідомлення зберігаються без змін.
-Коли OpenClaw ділить історію на фрагменти для стиснення, він зберігає виклики
+Коли OpenClaw розбиває історію на фрагменти Compaction, він зберігає виклики
інструментів асистента в парі з відповідними записами `toolResult`. Якщо точка
-розділення потрапляє всередину блоку інструмента, OpenClaw зміщує межу, щоб пара
-залишалася разом і поточний непідсумований хвіст зберігався.
+розбиття потрапляє всередину блоку інструменту, OpenClaw зсуває межу, щоб пара
+залишалася разом, а поточний непідсумований хвіст зберігався.
-Повна історія розмови залишається на диску. Стиснення змінює лише те, що
+Повна історія розмови залишається на диску. Compaction змінює лише те, що
модель бачить на наступному ході.
-## Автостиснення
+## Автоматичний Compaction
-Автостиснення увімкнене за замовчуванням. Воно запускається, коли сесія
+Автоматичний Compaction увімкнено за замовчуванням. Він запускається, коли сесія
наближається до ліміту контексту, або коли модель повертає помилку переповнення
-контексту (у такому разі OpenClaw стискає і повторює спробу). Типові ознаки
-переповнення включають
+контексту (у такому разі OpenClaw виконує Compaction і повторює спробу). Типові
+ознаки переповнення включають
`request_too_large`, `context length exceeded`, `input exceeds the maximum
number of tokens`, `input token count exceeds the maximum number of input
tokens`, `input is too long for the model` і `ollama error: context length
exceeded`.
-Перед стисненням OpenClaw автоматично нагадує агенту зберегти важливі
+Перед Compaction OpenClaw автоматично нагадує агенту зберегти важливі
нотатки у файли [memory](/uk/concepts/memory). Це запобігає втраті контексту.
-Використовуйте параметр `agents.defaults.compaction` у вашому `openclaw.json`, щоб налаштувати поведінку стиснення (режим, цільову кількість токенів тощо).
-Підсумовування під час стиснення за замовчуванням зберігає непрозорі ідентифікатори (`identifierPolicy: "strict"`). Ви можете перевизначити це за допомогою `identifierPolicy: "off"` або надати власний текст через `identifierPolicy: "custom"` і `identifierInstructions`.
+Використовуйте налаштування `agents.defaults.compaction` у вашому `openclaw.json`, щоб налаштувати поведінку Compaction (режим, цільову кількість токенів тощо).
+Підсумовування Compaction за замовчуванням зберігає непрозорі ідентифікатори (`identifierPolicy: "strict"`). Ви можете змінити це за допомогою `identifierPolicy: "off"` або надати власний текст через `identifierPolicy: "custom"` і `identifierInstructions`.
-За бажанням ви можете вказати іншу модель для підсумовування під час стиснення через `agents.defaults.compaction.model`. Це корисно, коли ваша основна модель є локальною або малою моделлю, а ви хочете, щоб підсумки стиснення створювала потужніша модель. Перевизначення приймає будь-який рядок `provider/model-id`:
+Ви також можете за бажанням вказати іншу модель для підсумовування Compaction через `agents.defaults.compaction.model`. Це корисно, коли ваша основна модель є локальною або малою моделлю, а ви хочете, щоб зведення Compaction створювалися більш потужною моделлю. Перевизначення приймає будь-який рядок `provider/model-id`:
```json
{
@@ -66,7 +66,7 @@ exceeded`.
}
```
-Це також працює з локальними моделями, наприклад із другою моделлю Ollama, призначеною для підсумовування, або спеціалістом зі стиснення, налаштованим під конкретну задачу:
+Це також працює з локальними моделями, наприклад із другою моделлю Ollama, виділеною для підсумовування, або зі спеціалістом Compaction, донавченим під це завдання:
```json
{
@@ -80,11 +80,11 @@ exceeded`.
}
```
-Якщо значення не задано, для стиснення використовується основна модель агента.
+Якщо значення не задано, Compaction використовує основну модель агента.
-## Підключувані провайдери стиснення
+## Підключувані провайдери Compaction
-Plugins можуть реєструвати власний провайдер стиснення через `registerCompactionProvider()` в API плагіна. Коли провайдер зареєстрований і налаштований, OpenClaw делегує підсумовування йому замість вбудованого LLM-конвеєра.
+Плагіни можуть реєструвати власний провайдер Compaction через `registerCompactionProvider()` в API плагіна. Коли провайдер зареєстровано та налаштовано, OpenClaw делегує йому підсумовування замість вбудованого LLM-конвеєра.
Щоб використовувати зареєстрований провайдер, задайте ідентифікатор провайдера у своїй конфігурації:
@@ -100,24 +100,24 @@ Plugins можуть реєструвати власний провайдер с
}
```
-Встановлення `provider` автоматично примусово вмикає `mode: "safeguard"`. Провайдери отримують ті самі інструкції зі стиснення та політику збереження ідентифікаторів, що й у вбудованому шляху, а OpenClaw усе одно зберігає контекст недавніх ходів і розділених ходів у суфіксі після виходу провайдера. Якщо провайдер зазнає збою або повертає порожній результат, OpenClaw повертається до вбудованого LLM-підсумовування.
+Установлення `provider` автоматично примусово вмикає `mode: "safeguard"`. Провайдери отримують ті самі інструкції Compaction і політику збереження ідентифікаторів, що й у вбудованому шляху, а OpenClaw, як і раніше, зберігає контекст суфікса нещодавніх ходів і розділених ходів після вихідних даних провайдера. Якщо провайдер завершується з помилкою або повертає порожній результат, OpenClaw повертається до вбудованого LLM-підсумовування.
-## Автостиснення (увімкнено за замовчуванням)
+## Автоматичний Compaction (увімкнено за замовчуванням)
-Коли сесія наближається до контекстного вікна моделі або перевищує його, OpenClaw запускає автостиснення і може повторити початковий запит, використовуючи стиснений контекст.
+Коли сесія наближається до вікна контексту моделі або перевищує його, OpenClaw запускає автоматичний Compaction і може повторити початковий запит, використовуючи ущільнений контекст.
Ви побачите:
- `🧹 Auto-compaction complete` у докладному режимі
-- `/status`, що показує `🧹 Compactions: `
+- `/status`, де показано `🧹 Compactions: `
-Перед стисненням OpenClaw може виконати **тихий скид memory**, щоб зберегти
-довготривалі нотатки на диск. Докладніше про деталі та конфігурацію див. у [Memory](/uk/concepts/memory).
+Перед Compaction OpenClaw може виконати **тихий скид пам’яті**, щоб зберегти
+довготривалі нотатки на диск. Докладніше про це та налаштування дивіться у [Memory](/uk/concepts/memory).
-## Ручне стиснення
+## Ручний Compaction
-Введіть `/compact` у будь-якому чаті, щоб примусово запустити стиснення. Додайте інструкції, щоб спрямувати
-підсумок:
+Введіть `/compact` у будь-якому чаті, щоб примусово виконати Compaction. Додайте інструкції, щоб спрямувати
+зведення:
```
/compact Focus on the API design decisions
@@ -125,8 +125,8 @@ Plugins можуть реєструвати власний провайдер с
## Використання іншої моделі
-За замовчуванням для стиснення використовується основна модель вашого агента. Ви можете використовувати більш
-потужну модель для кращих підсумків:
+За замовчуванням Compaction використовує основну модель вашого агента. Ви можете використовувати більш
+потужну модель для кращих зведень:
```json5
{
@@ -140,10 +140,10 @@ Plugins можуть реєструвати власний провайдер с
}
```
-## Сповіщення про початок стиснення
+## Сповіщення Compaction
-За замовчуванням стиснення виконується без повідомлень. Щоб показувати коротке сповіщення, коли стиснення
-починається, увімкніть `notifyUser`:
+За замовчуванням Compaction виконується без повідомлень. Щоб показувати короткі сповіщення, коли Compaction
+починається і коли він завершується, увімкніть `notifyUser`:
```json5
{
@@ -157,39 +157,39 @@ Plugins можуть реєструвати власний провайдер с
}
```
-Коли цю опцію ввімкнено, користувач бачить коротке повідомлення (наприклад, "Compacting
-context...") на початку кожного запуску стиснення.
+Коли цю опцію увімкнено, користувач бачить короткі повідомлення про стан під час кожного запуску Compaction
+(наприклад, "Compacting context..." і "Compaction complete").
-## Стиснення проти обрізання
+## Compaction vs pruning
-| | Стиснення | Обрізання |
-| ---------------- | ---------------------------- | --------------------------------- |
-| **Що це робить** | Підсумовує старішу розмову | Обрізає старі результати інструментів |
-| **Зберігається?**| Так (у транскрипті сесії) | Ні (лише в пам’яті, для кожного запиту) |
-| **Обсяг** | Уся розмова | Лише результати інструментів |
+| | Compaction | Pruning |
+| ---------------- | --------------------------- | --------------------------------- |
+| **Що це робить** | Підсумовує старішу розмову | Обрізає старі результати інструментів |
+| **Зберігається?**| Так (у транскрипті сесії) | Ні (лише в пам’яті, для запиту) |
+| **Обсяг** | Уся розмова | Лише результати інструментів |
-[Обрізання сесії](/uk/concepts/session-pruning) — це легше доповнення, яке
+[Session pruning](/uk/concepts/session-pruning) — це легше доповнення, яке
обрізає вивід інструментів без підсумовування.
-## Усунення неполадок
+## Усунення проблем
-**Стиснення відбувається надто часто?** Контекстне вікно моделі може бути малим, або результати
+**Compaction відбувається надто часто?** Вікно контексту моделі може бути малим, або виводи
інструментів можуть бути великими. Спробуйте увімкнути
-[обрізання сесії](/uk/concepts/session-pruning).
+[session pruning](/uk/concepts/session-pruning).
-**Після стиснення контекст здається застарілим?** Використайте `/compact Focus on `, щоб
-спрямувати підсумок, або увімкніть [скид memory](/uk/concepts/memory), щоб нотатки
+**Після Compaction контекст здається застарілим?** Використайте `/compact Focus on `, щоб
+спрямувати зведення, або ввімкніть [memory flush](/uk/concepts/memory), щоб нотатки
зберігалися.
-**Потрібен чистий аркуш?** `/new` починає нову сесію без стиснення.
+**Потрібно почати з чистого аркуша?** `/new` запускає нову сесію без Compaction.
-Для розширеної конфігурації (резерв токенів, збереження ідентифікаторів, власні
-рушії контексту, серверне стиснення OpenAI) див. розділ
-[Поглиблений огляд керування сесіями](/uk/reference/session-management-compaction).
+Для розширеної конфігурації (резерв токенів, збереження ідентифікаторів, спеціальні
+рушії контексту, серверний Compaction OpenAI) дивіться
+[Поглиблений розбір керування сесіями](/uk/reference/session-management-compaction).
## Пов’язане
-- [Сесія](/uk/concepts/session) — керування сесією та її життєвий цикл
-- [Обрізання сесії](/uk/concepts/session-pruning) — обрізання результатів інструментів
-- [Контекст](/uk/concepts/context) — як формується контекст для ходів агента
-- [Hooks](/uk/automation/hooks) — хуки життєвого циклу стиснення (before_compaction, after_compaction)
+- [Session](/uk/concepts/session) — керування сесією та її життєвий цикл
+- [Session Pruning](/uk/concepts/session-pruning) — обрізання результатів інструментів
+- [Context](/uk/concepts/context) — як будується контекст для ходів агента
+- [Hooks](/uk/automation/hooks) — хуки життєвого циклу Compaction (`before_compaction`, `after_compaction`)
diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md
index 000689e32..20dd55b24 100644
--- a/docs/uk/gateway/configuration-reference.md
+++ b/docs/uk/gateway/configuration-reference.md
@@ -1,70 +1,70 @@
---
read_when:
- Вам потрібні точні семантики полів конфігурації або значення за замовчуванням
- - Ви перевіряєте блоки конфігурації каналів, моделей, Gateway або інструментів
-summary: Довідник з конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
-title: Довідник з конфігурації
+ - Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструмента
+summary: Довідник із конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
+title: Довідник із конфігурації
x-i18n:
- generated_at: "2026-04-19T10:22:59Z"
+ generated_at: "2026-04-20T18:57:03Z"
model: gpt-5.4
provider: openai
- source_hash: 22b10f1f133374cd29ef4a5ec4fb9c9938eb51184ad82e1aa2e5f6f7af58585e
+ source_hash: 4327005a12664aed9f05b7643686af3367b93a9750b24e4590c01b5714b107cb
source_path: gateway/configuration-reference.md
workflow: 15
---
-# Довідник з конфігурації
+# Довідник із конфігурації
-Основний довідник конфігурації для `~/.openclaw/openclaw.json`. Огляд, орієнтований на завдання, див. у [Configuration](/uk/gateway/configuration).
+Основний довідник із конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration).
-Ця сторінка охоплює основні поверхні конфігурації OpenClaw і дає посилання назовні, коли підсистема має власний, глибший довідник. Вона **не** намагається вбудувати на одній сторінці кожен каталог команд, що належить каналу/Plugin, або кожен глибокий параметр пам’яті/QMD.
+Ця сторінка охоплює основні поверхні конфігурації OpenClaw і дає посилання назовні, коли підсистема має власний глибший довідник. Вона **не** намагається вбудувати на одній сторінці кожен каталог команд, що належить каналу/Plugin, або кожен глибокий параметр пам’яті/QMD.
Джерело істини в коді:
-- `openclaw config schema` виводить актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими bundled/Plugin/channel, коли вони доступні
-- `config.schema.lookup` повертає один вузол схеми в межах шляху для інструментів детального перегляду
-- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють хеш базового рівня документації конфігурації щодо поточної поверхні схеми
+- `openclaw config schema` виводить актуальну JSON Schema, яка використовується для валідації та Control UI, із метаданими bundled/Plugin/channel, об’єднаними за наявності
+- `config.schema.lookup` повертає один вузол схеми з прив’язкою до шляху для інструментів деталізації
+- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш документації конфігурації відносно поточної поверхні схеми
-Окремі поглиблені довідники:
+Окремі глибокі довідники:
-- [Довідник з конфігурації пам’яті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації Dreaming у `plugins.entries.memory-core.config.dreaming`
-- [Слеш-команди](/uk/tools/slash-commands) для поточного вбудованого + bundled каталогу команд
-- сторінки відповідних каналів/Plugin для специфічних для каналів поверхонь команд
+- [Довідник із конфігурації пам’яті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації Dreaming у `plugins.entries.memory-core.config.dreaming`
+- [Косі команди](/uk/tools/slash-commands) для поточного каталогу вбудованих і bundled команд
+- сторінки відповідного каналу/Plugin для поверхонь команд, специфічних для каналу
-Формат конфігурації — **JSON5** (дозволено коментарі й кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
+Формат конфігурації — **JSON5** (дозволені коментарі й кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не вказано.
---
## Канали
-Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не вказано `enabled: false`).
+Кожен канал запускається автоматично, коли існує його розділ конфігурації (якщо не вказано `enabled: false`).
-### Доступ у DM і групах
+### Доступ до DM і груп
-Усі канали підтримують політики DM і політики груп:
+Усі канали підтримують політики DM і групові політики:
| Політика DM | Поведінка |
| ------------------- | -------------------------------------------------------------- |
-| `pairing` (типово) | Невідомі відправники отримують одноразовий код спарювання; власник має схвалити |
-| `allowlist` | Лише відправники з `allowFrom` (або зі сховища дозволів спарювання) |
-| `open` | Дозволити всі вхідні DM (потрібно `allowFrom: ["*"]`) |
+| `pairing` (типово) | Невідомі відправники отримують одноразовий код pairing; власник має схвалити |
+| `allowlist` | Лише відправники з `allowFrom` (або зі сховища paired allow) |
+| `open` | Дозволити всі вхідні DM (потрібен `allowFrom: ["*"]`) |
| `disabled` | Ігнорувати всі вхідні DM |
-| Політика груп | Поведінка |
-| -------------------- | ------------------------------------------------------- |
-| `allowlist` (типово) | Лише групи, що відповідають налаштованому списку дозволених |
-| `open` | Обійти списки дозволених груп (обмеження за згадками все одно застосовується) |
-| `disabled` | Блокувати всі повідомлення в групах/кімнатах |
+| Групова політика | Поведінка |
+| --------------------- | ------------------------------------------------------ |
+| `allowlist` (типово) | Лише групи, що відповідають налаштованому allowlist |
+| `open` | Обійти group allowlist (обмеження за згадуванням усе ще застосовується) |
+| `disabled` | Блокувати всі повідомлення групи/кімнати |
-`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` провайдера не задано.
-Коди спарювання спливають через 1 годину. Очікувані запити на спарювання DM обмежено **3 на канал**.
-Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
+`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` провайдера не встановлено.
+Коди pairing закінчують дію через 1 годину. Кількість очікувальних запитів DM pairing обмежена **3 на канал**.
+Якщо блок провайдера повністю відсутній (`channels.` відсутній), під час виконання групова політика повертається до `allowlist` (fail-closed) із попередженням під час запуску.
### Перевизначення моделі для каналу
-Використовуйте `channels.modelByChannel`, щоб прив’язати конкретні ID каналів до моделі. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналу застосовується, коли сесія ще не має власного перевизначення моделі (наприклад, встановленого через `/model`).
+Використовуйте `channels.modelByChannel`, щоб закріпити конкретні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналу застосовується, коли в сесії ще немає перевизначення моделі (наприклад, установленого через `/model`).
```json5
{
@@ -87,7 +87,7 @@ x-i18n:
### Значення каналів за замовчуванням і Heartbeat
-Використовуйте `channels.defaults` для спільної поведінки політики груп і Heartbeat у різних провайдерів:
+Використовуйте `channels.defaults` для спільної групової політики та поведінки Heartbeat у різних провайдерів:
```json5
{
@@ -105,15 +105,15 @@ x-i18n:
}
```
-- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні провайдера не задано.
-- `channels.defaults.contextVisibility`: типовий режим видимості додаткового контексту для всіх каналів. Значення: `all` (типово, включати весь процитований/тредовий/історичний контекст), `allowlist` (включати контекст лише від відправників зі списку дозволених), `allowlist_quote` (те саме, що `allowlist`, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`.
-- `channels.defaults.heartbeat.showOk`: включати статуси здорових каналів у вивід Heartbeat.
-- `channels.defaults.heartbeat.showAlerts`: включати деградовані статуси/статуси помилок у вивід Heartbeat.
+- `channels.defaults.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 у стилі індикатора.
### WhatsApp
-WhatsApp працює через веб-канал gateway (Baileys Web). Він запускається автоматично, коли існує прив’язана сесія.
+WhatsApp працює через вебканал Gateway (Baileys Web). Він запускається автоматично, коли існує пов’язана сесія.
```json5
{
@@ -146,7 +146,7 @@ WhatsApp працює через веб-канал gateway (Baileys Web). Він
}
```
-
+
```json5
{
@@ -164,10 +164,10 @@ WhatsApp працює через веб-канал gateway (Baileys Web). Він
}
```
-- Вихідні команди типово використовують обліковий запис `default`, якщо він існує; інакше — перший налаштований ID облікового запису (відсортований).
-- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний типовий вибір облікового запису, якщо він відповідає налаштованому ID облікового запису.
-- Застарілий каталог автентифікації 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`.
@@ -225,13 +225,13 @@ WhatsApp працює через веб-канал gateway (Baileys Web). Він
}
```
-- Токен бота: `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).
+- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; symlink відхиляються), із `TELEGRAM_BOT_TOKEN` як резервним варіантом для типового облікового запису.
+- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з ID налаштованого облікового запису.
+- У конфігураціях із кількома обліковими записами (2+ ID облікових записів) встановіть явне типове значення (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо його немає або воно невалідне.
+- `configWrites: false` блокує ініційовані Telegram записи конфігурації (міграції ID supergroup, `/config set|unset`).
+- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для тем форуму (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- Попередній перегляд потоків Telegram використовує `sendMessage` + `editMessageText` (працює в прямих і групових чатах).
+- Політика повторних спроб: див. [Політика повторних спроб](/uk/concepts/retry).
### Discord
@@ -333,36 +333,36 @@ WhatsApp працює через веб-канал gateway (Baileys Web). Він
}
```
-- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням.
-- Прямі вихідні виклики, які передають явний Discord `token`, використовують цей токен для виклику; налаштування повторів/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
-- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він відповідає налаштованому ID облікового запису.
-- Використовуйте `user:` (DM) або `channel:` (канал guild) як цілі доставки; прості числові ID відхиляються.
-- Slug-и guild мають нижній регістр, а пробіли замінюються на `-`; ключі каналів використовують назву у форматі slug (без `#`). Надавайте перевагу ID guild.
-- Повідомлення, створені ботом, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно відфільтровуються).
+- Токен: `channels.discord.token`, із `DISCORD_BOT_TOKEN` як резервним варіантом для типового облікового запису.
+- Прямі вихідні виклики, які передають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime.
+- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з ID налаштованого облікового запису.
+- Для цілей доставки використовуйте `user:` (DM) або `channel:` (канал guild); прості числові ID відхиляються.
+- Slug для guild мають нижній регістр, а пробіли замінюються на `-`; ключі каналів використовують slug-ім’я (без `#`). Надавайте перевагу ID guild.
+- Повідомлення, створені ботом, типово ігноруються. `allowBots: true` вмикає їх; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються).
- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналу) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here).
-- `maxLinesPerMessage` (типово 17) розбиває високі повідомлення навіть тоді, коли вони коротші за 2000 символів.
-- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до тредів Discord:
- - `enabled`: перевизначення Discord для функцій сесій, прив’язаних до тредів (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація)
- - `idleHours`: перевизначення Discord для автоматичного зняття фокусу через неактивність у годинах (`0` вимикає)
+- `maxLinesPerMessage` (типово 17) розбиває довгі за висотою повідомлення, навіть якщо вони коротші за 2000 символів.
+- `channels.discord.threadBindings` керує маршрутизацією з прив’язкою до потоку в Discord:
+ - `enabled`: перевизначення Discord для можливостей сесій, прив’язаних до потоку (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age`, а також прив’язана доставка/маршрутизація)
+ - `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає)
- `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає)
- - `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив’язки тредів через `sessions_spawn({ thread: true })`
-- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні прив’язки ACP для каналів і тредів (використовуйте id каналу/треду в `match.peer.id`). Семантика полів є спільною в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів компонентів Discord v2.
+ - `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив’язки потоку `sessions_spawn({ thread: true })`
+- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для каналів і потоків (використовуйте id каналу/потоку в `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- `channels.discord.ui.components.accentColor` задає акцентний колір для контейнерів Discord components v2.
- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов’язкові перевизначення auto-join + TTS.
-- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються в параметри DAVE `@discordjs/voice` (типово `true` і `24`).
-- OpenClaw додатково намагається відновити прийом голосу, виходячи з голосової сесії та приєднуючись повторно після повторних збоїв дешифрування.
+- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються в параметри DAVE `@discordjs/voice` (`true` і `24` типово).
+- OpenClaw також намагається відновити прийом голосу, виходячи та знову приєднуючись до голосової сесії після повторних збоїв дешифрування.
- `channels.discord.streaming` — це канонічний ключ режиму потоку. Застарілі значення `streamMode` і булеві `streaming` мігруються автоматично.
-- `channels.discord.autoPresence` зіставляє доступність runtime із присутністю бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.
+- `channels.discord.autoPresence` відображає доступність runtime у присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.
- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваними іменами/тегами (режим сумісності break-glass).
-- `channels.discord.execApprovals`: доставка схвалень exec у стилі Discord і авторизація тих, хто схвалює.
- - `enabled`: `true`, `false` або `"auto"` (типово). В режимі auto схвалення exec активуються, коли тих, хто схвалює, можна визначити з `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Discord, яким дозволено схвалювати exec-запити. Якщо не вказано, використовується `commands.ownerAllowFrom`.
- - `agentFilter`: необов’язковий список дозволених ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
- - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex).
- - `target`: куди надсилати запити на схвалення. `"dm"` (типово) надсилає в DM тим, хто схвалює, `"channel"` надсилає у вихідний канал, `"both"` надсилає в обидва місця. Якщо `target` містить `"channel"`, кнопки можуть використовувати лише ті, кого вдалося визначити як таких, що схвалюють.
- - `cleanupAfterResolve`: якщо `true`, видаляє DM зі схваленням після схвалення, відхилення або тайм-ауту.
+- `channels.discord.execApprovals`: нативна для Discord доставка підтверджень exec і авторизація затверджувачів.
+ - `enabled`: `true`, `false` або `"auto"` (типово). В автоматичному режимі підтвердження exec активуються, коли затверджувачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
+ - `approvers`: ID користувачів Discord, яким дозволено підтверджувати запити exec. Якщо не вказано, використовується `commands.ownerAllowFrom`.
+ - `agentFilter`: необов’язковий allowlist ID агентів. Якщо пропущено, підтвердження пересилаються для всіх агентів.
+ - `sessionFilter`: необов’язкові шаблони ключів сесії (підрядок або regex).
+ - `target`: куди надсилати запити на підтвердження. `"dm"` (типово) надсилає у DM затверджувача, `"channel"` надсилає у вихідний канал, `"both"` надсилає в обидва місця. Якщо target включає `"channel"`, кнопками можуть користуватися лише визначені затверджувачі.
+ - `cleanupAfterResolve`: якщо `true`, видаляє DM із підтвердженням після підтвердження, відхилення або тайм-ауту.
-**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (із `guilds..users` для всіх повідомлень).
+**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (з `guilds..users` для всіх повідомлень).
### Google Chat
@@ -393,10 +393,10 @@ WhatsApp працює через веб-канал gateway (Baileys Web). Він
}
```
-- JSON облікового запису сервісу: вбудований (`serviceAccount`) або на основі файла (`serviceAccountFile`).
-- Також підтримується SecretRef облікового запису сервісу (`serviceAccountRef`).
-- Резервні значення змінних середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
-- Використовуйте `spaces/` або `users/` як цілі доставки.
+- JSON облікового запису служби: вбудований (`serviceAccount`) або через файл (`serviceAccountFile`).
+- Також підтримується SecretRef для облікового запису служби (`serviceAccountRef`).
+- Резервні змінні середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
+- Для цілей доставки використовуйте `spaces/` або `users/`.
- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваним email principal (режим сумісності break-glass).
### Slack
@@ -464,35 +464,35 @@ WhatsApp працює через веб-канал gateway (Baileys Web). Він
}
```
-- **Socket mode** потребує і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резервні змінні середовища для облікового запису за замовчуванням).
-- **HTTP mode** потребує `botToken` плюс `signingSecret` (у корені або для окремого облікового запису).
+- **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 —
+- Знімки облікових записів Slack показують поля джерела/статусу для кожних облікових даних, такі як
+ `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, у HTTP mode,
`signingSecretStatus`. `configured_unavailable` означає, що обліковий запис
налаштовано через SecretRef, але поточний шлях команди/runtime не зміг
- визначити значення секрету.
-- `configWrites: false` блокує записи конфігурації, ініційовані зі Slack.
-- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він відповідає налаштованому ID облікового запису.
-- `channels.slack.streaming.mode` — канонічний ключ режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує власним транспортом потокової передачі Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` мігруються автоматично.
-- Використовуйте `user:` (DM) або `channel:` як цілі доставки.
+ отримати значення секрету.
+- `configWrites: false` блокує ініційовані Slack записи конфігурації.
+- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з ID налаштованого облікового запису.
+- `channels.slack.streaming.mode` — це канонічний ключ режиму потоку Slack. `channels.slack.streaming.nativeTransport` керує нативним потоковим транспортом Slack. Застарілі значення `streamMode`, булеві `streaming` і `nativeStreaming` мігруються автоматично.
+- Для цілей доставки використовуйте `user:` (DM) або `channel:`.
-**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
-**Ізоляція сесій тредів:** `thread.historyScope` є окремим для треду (типово) або спільним для каналу. `thread.inheritParent` копіює транскрипт батьківського каналу в нові треди.
+**Ізоляція сесій потоку:** `thread.historyScope` є окремим для потоку (типово) або спільним для каналу. `thread.inheritParent` копіює стенограму батьківського каналу в нові потоки.
-- Власна потокова передача Slack плюс статус треду Slack у стилі помічника «is typing...» потребують цілі відповіді в треді. DM верхнього рівня типово залишаються поза тредом, тому вони використовують `typingReaction` або звичайну доставку замість попереднього перегляду у стилі треду.
-- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode emoji Slack, наприклад `"hourglass_flowing_sand"`.
-- `channels.slack.execApprovals`: доставка схвалень exec у стилі Slack і авторизація тих, хто схвалює. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
+- Нативний потоковий режим Slack разом зі статусом потоку Slack у стилі асистента "is typing..." вимагають цілі відповіді у потоці. DM верхнього рівня типово залишаються поза потоком, тому використовують `typingReaction` або звичайну доставку замість попереднього перегляду в стилі потоку.
+- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode емодзі Slack, наприклад `"hourglass_flowing_sand"`.
+- `channels.slack.execApprovals`: нативна для Slack доставка підтверджень exec і авторизація затверджувачів. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
-| Група дій | Типово | Примітки |
-| ----------- | ------- | ------------------------ |
+| Група дій | Типово | Примітки |
+| ----------- | -------- | ---------------------- |
| reactions | увімкнено | Реакції + список реакцій |
| messages | увімкнено | Читання/надсилання/редагування/видалення |
-| pins | увімкнено | Закріплення/відкріплення/список |
+| pins | увімкнено | Закріпити/відкріпити/список |
| memberInfo | увімкнено | Інформація про учасника |
-| emojiList | увімкнено | Список власних emoji |
+| emojiList | увімкнено | Список користувацьких емодзі |
### Mattermost
@@ -526,23 +526,23 @@ Mattermost постачається як Plugin: `openclaw plugins install @open
}
```
-Режими чату: `oncall` (відповідати на @-згадку, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса тригера).
+Режими чату: `oncall` (відповідати на @-згадування, типово), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з префікса тригера).
-Коли власні команди Mattermost увімкнено:
+Коли нативні команди Mattermost увімкнено:
-- `commands.callbackPath` має бути шляхом (наприклад, `/api/channels/mattermost/command`), а не повною URL-адресою.
+- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повним URL.
- `commands.callbackUrl` має вказувати на endpoint Gateway OpenClaw і бути досяжним із сервера Mattermost.
-- Власні slash callback-обробники автентифікуються токенами окремих команд, які
- Mattermost повертає під час реєстрації slash-команд. Якщо реєстрація не вдається або
- не активовано жодної команди, OpenClaw відхиляє callback-виклики з повідомленням
+- Нативні slash callback автентифікуються токенами для кожної команди, які
+ Mattermost повертає під час реєстрації slash command. Якщо реєстрація не
+ вдається або жодна команда не активована, OpenClaw відхиляє callback з
`Unauthorized: invalid command token.`
-- Для приватних/tailnet/internal хостів callback Mattermost може вимагати, щоб
- `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен callback.
- Використовуйте значення хоста/домену, а не повні 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` перевизначає вибір облікового запису за замовчуванням, якщо він відповідає налаштованому ID облікового запису.
+- `channels.mattermost.groups..requireMention`: перевизначення обмеження згадуванням для конкретного каналу (`"*"` для типового значення).
+- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з ID налаштованого облікового запису.
### Signal
@@ -563,11 +563,11 @@ Mattermost постачається як Plugin: `openclaw plugins install @open
}
```
-**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (з `reactionAllowlist`).
-- `channels.signal.account`: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal.
-- `channels.signal.configWrites`: дозволити або заборонити записи конфігурації, ініційовані із Signal.
-- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він відповідає налаштованому ID облікового запису.
+- `channels.signal.account`: закріпити запуск каналу за конкретною ідентичністю облікового запису Signal.
+- `channels.signal.configWrites`: дозволяти або забороняти ініційовані Signal записи конфігурації.
+- Необов’язковий `channels.signal.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з ID налаштованого облікового запису.
### BlueBubbles
@@ -586,10 +586,10 @@ BlueBubbles — рекомендований шлях для iMessage (на ба
}
```
-- Основні шляхи ключів, охоплені тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
-- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він відповідає налаштованому ID облікового запису.
-- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних сесій ACP. Використовуйте handle 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`, `channels.bluebubbles.dmPolicy`.
+- Необов’язковий `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
@@ -617,17 +617,17 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Демон а
}
```
-- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він відповідає налаштованому ID облікового запису.
+- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з ID налаштованого облікового запису.
- Потрібен Full Disk Access до бази даних Messages.
-- Віддавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів.
-- `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
+- Надавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів.
+- `cliPath` може вказувати на SSH-обгортку; установіть `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`).
-- SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ relay-хоста вже існує в `~/.ssh/known_hosts`.
-- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані з iMessage.
+- 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
@@ -668,21 +668,21 @@ Matrix працює через extension і налаштовується в `cha
}
```
-- Автентифікація токеном використовує `accessToken`; автентифікація паролем — `userId` + `password`.
-- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S)-proxy. Іменовані облікові записи можуть перевизначати його через `channels.matrix.accounts..proxy`.
-- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/internal homeserver-и. `proxy` і цей opt-in для мережі — незалежні елементи керування.
-- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у багатьохоблікових конфігураціях.
-- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати й нові запрошення в стилі DM ігноруються, доки ви не задасте `autoJoin: "allowlist"` разом із `autoJoinAllowlist` або `autoJoin: "always"`.
-- `channels.matrix.execApprovals`: доставка схвалень exec у стилі Matrix і авторизація тих, хто схвалює.
- - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto схвалення exec активуються, коли тих, хто схвалює, можна визначити з `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Matrix (наприклад, `@owner:example.org`), яким дозволено схвалювати exec-запити.
- - `agentFilter`: необов’язковий список дозволених ID агентів. Пропустіть, щоб пересилати схвалення для всіх агентів.
- - `sessionFilter`: необов’язкові шаблони ключів сесій (підрядок або regex).
- - `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (вихідна кімната) або `"both"`.
- - Перевизначення для окремого облікового запису: `channels.matrix.accounts..execApprovals`.
-- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сесії: `per-user` (типово) об’єднує за маршрутизованим peer, тоді як `per-room` ізолює кожну DM-кімнату.
-- Перевірки статусу Matrix і пошук у live directory використовують ту саму політику proxy, що й трафік runtime.
-- Повну конфігурацію Matrix, правила націлювання та приклади налаштування описано в [Matrix](/uk/channels/matrix).
+- Автентифікація токеном використовує `accessToken`; автентифікація паролем використовує `userId` + `password`.
+- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані облікові записи можуть перевизначати його через `channels.matrix.accounts..proxy`.
+- `channels.matrix.network.dangerouslyAllowPrivateNetwork` дозволяє приватні/internal homeserver. `proxy` і цей мережевий opt-in — незалежні елементи керування.
+- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у конфігураціях із кількома обліковими записами.
+- `channels.matrix.autoJoin` типово має значення `off`, тому запрошені кімнати та нові запрошення у стилі DM ігноруються, доки ви не встановите `autoJoin: "allowlist"` з `autoJoinAllowlist` або `autoJoin: "always"`.
+- `channels.matrix.execApprovals`: нативна для Matrix доставка підтверджень exec і авторизація затверджувачів.
+ - `enabled`: `true`, `false` або `"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` керує тим, як DM Matrix групуються в сесії: `per-user` (типово) спільно використовує сесію за маршрутизованим peer, тоді як `per-room` ізолює кожну кімнату DM.
+- Перевірки статусу Matrix і live directory lookups використовують ту саму політику proxy, що й трафік runtime.
+- Повну конфігурацію Matrix, правила targeting і приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
### Microsoft Teams
@@ -701,8 +701,8 @@ Microsoft Teams працює через extension і налаштовуєтьс
}
```
-- Основні шляхи ключів, охоплені тут: `channels.msteams`, `channels.msteams.configWrites`.
-- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для окремих team/channel) описано в [Microsoft Teams](/uk/channels/msteams).
+- Основні шляхи ключів, що тут охоплюються: `channels.msteams`, `channels.msteams.configWrites`.
+- Повну конфігурацію Teams (облікові дані, Webhook, політика DM/груп, перевизначення для команди/каналу) задокументовано в [Microsoft Teams](/uk/channels/msteams).
### IRC
@@ -727,13 +727,13 @@ IRC працює через extension і налаштовується в `channe
}
```
-- Основні шляхи ключів, охоплені тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
-- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір облікового запису за замовчуванням, якщо він відповідає налаштованому ID облікового запису.
-- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/обмеження за згадками) описано в [IRC](/uk/channels/irc).
+- Основні шляхи ключів, що тут охоплюються: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
+- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір типового облікового запису, якщо він збігається з ID налаштованого облікового запису.
+- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/обмеження згадуванням) задокументовано в [IRC](/uk/channels/irc).
-### Багато облікових записів (усі канали)
+### Кілька облікових записів (усі канали)
-Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`):
+Запускайте кілька облікових записів для каналу (кожен зі своїм `accountId`):
```json5
{
@@ -754,28 +754,28 @@ IRC працює через extension і налаштовується в `channe
}
```
-- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація).
-- Токени середовища застосовуються лише до облікового запису **default**.
-- Базові налаштування каналу застосовуються до всіх облікових записів, якщо не перевизначено для окремого облікового запису.
+- `default` використовується, коли `accountId` не вказано (CLI + маршрутизація).
+- Токени змінних середовища застосовуються лише до облікового запису **default**.
+- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для конкретного облікового запису.
- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента.
-- Якщо ви додаєте не-типовий обліковий запис через `openclaw channels add` (або під час онбордингу каналу), все ще перебуваючи в однокористувацькій конфігурації каналу верхнього рівня, OpenClaw спершу переносить значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у карту облікових записів каналу, щоб початковий обліковий запис і далі працював. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
-- Наявні прив’язки лише до каналу (без `accountId`) і далі відповідають типовому обліковому запису; прив’язки в межах облікового запису залишаються необов’язковими.
-- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у вибраний для цього каналу підвищений обліковий запис. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
+- Якщо ви додаєте не-типовий обліковий запис через `openclaw channels add` (або onboarding каналу), коли все ще використовуєте топ-рівневу конфігурацію каналу для одного облікового запису, OpenClaw спочатку переносить top-level значення для одного облікового запису, прив’язані до облікового запису, до карти облікових записів каналу, щоб початковий обліковий запис і далі працював. Більшість каналів переносять їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
+- Наявні прив’язки лише до каналу (без `accountId`) і далі відповідають типовому обліковому запису; прив’язки з областю облікового запису залишаються необов’язковими.
+- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи top-level значення для одного облікового запису, прив’язані до облікового запису, у просунутий обліковий запис, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/типову ціль.
### Інші extension-канали
-Багато 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`. Недійсні шаблони та небезпечні вкладені повторення ігноруються.
-- Обмеження за згадками застосовується лише тоді, коли виявлення можливе (власні згадки або принаймні один шаблон).
+- **Згадування в метаданих**: нативні @-згадування платформи. Ігноруються в режимі self-chat WhatsApp.
+- **Текстові шаблони**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Невалідні шаблони та небезпечне вкладене повторення ігноруються.
+- Обмеження згадуванням застосовується лише тоді, коли виявлення можливе (нативні згадування або принаймні один шаблон).
```json5
{
@@ -788,9 +788,9 @@ IRC працює через extension і налаштовується в `channe
}
```
-`messages.groupChat.historyLimit` задає глобальне типове значення. Канали можуть перевизначити його через `channels..historyLimit` (або для окремого облікового запису). Установіть `0`, щоб вимкнути.
+`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або для конкретного облікового запису). Установіть `0`, щоб вимкнути.
-#### Обмеження історії DM
+#### Ліміти історії DM
```json5
{
@@ -805,13 +805,13 @@ IRC працює через extension і налаштовується в `channe
}
```
-Розв’язання: перевизначення для конкретного DM → типове значення провайдера → без обмеження (зберігається все).
+Порядок визначення: перевизначення для конкретного DM → типове значення провайдера → без обмеження (зберігається все).
-Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
+Підтримуються: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
#### Режим self-chat
-Додайте свій власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує власні @-згадки, відповідає лише на текстові шаблони):
+Додайте власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадування, відповідає лише на текстові шаблони):
```json5
{
@@ -832,7 +832,7 @@ IRC працює через extension і налаштовується в `channe
}
```
-### Команди (обробка команд у чаті)
+### Команди (обробка команд чату)
```json5
{
@@ -861,38 +861,38 @@ IRC працює через extension і налаштовується в `channe
-- Цей блок налаштовує поверхні команд. Актуальний каталог вбудованих + bundled команд див. у [Slash Commands](/uk/tools/slash-commands).
-- Ця сторінка — **довідник ключів конфігурації**, а не повний каталог команд. Команди, що належать каналам/Plugin, такі як QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, описано на сторінках відповідних каналів/Plugin та в [Slash Commands](/uk/tools/slash-commands).
-- Текстові команди мають бути **окремими** повідомленнями, що починаються з `/`.
-- `native: "auto"` вмикає власні команди для Discord/Telegram, але залишає Slack вимкненим.
-- `nativeSkills: "auto"` вмикає власні команди Skills для Discord/Telegram, але залишає Slack вимкненим.
+- Цей блок налаштовує поверхні команд. Поточний каталог вбудованих і bundled команд див. у [Slash Commands](/uk/tools/slash-commands).
+- Ця сторінка — **довідник за ключами конфігурації**, а не повний каталог команд. Команди, що належать каналу/Plugin, такі як QQ Bot `/bot-ping` `/bot-help` `/bot-logs`, LINE `/card`, device-pair `/pair`, memory `/dreaming`, phone-control `/phone` і Talk `/voice`, задокументовані на сторінках відповідного каналу/Plugin, а також у [Slash Commands](/uk/tools/slash-commands).
+- Текстові команди мають бути **окремими** повідомленнями з початковим `/`.
+- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим.
+- `nativeSkills: "auto"` вмикає нативні команди Skills для Discord/Telegram, залишає Slack вимкненим.
- Перевизначення для каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
-- Перевизначайте реєстрацію власних команд Skills для каналу через `channels..commands.nativeSkills`.
+- Перевизначуйте реєстрацію нативних команд Skills для каналу через `channels..commands.nativeSkills`.
- `channels.telegram.customCommands` додає додаткові записи меню бота Telegram.
-- `bash: true` вмикає `! ` для shell хоста. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`.
-- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступний лише для читання `/config show` залишається доступним для звичайних операторських клієнтів із правами запису.
-- `mcp: true` вмикає `/mcp` для керованої OpenClaw конфігурації MCP-сервера в `mcp.servers`.
-- `plugins: true` вмикає `/plugins` для виявлення Plugin, встановлення та керування ввімкненням/вимкненням.
-- `channels..configWrites` керує мутаціями конфігурації для кожного каналу (типово: true).
-- Для багатьохоблікових каналів `channels..accounts..configWrites` також керує записами, що націлені на цей обліковий запис (наприклад, `/allowlist --config --account ` або `/config set channels..accounts....`).
-- `restart: false` вимикає `/restart` і дії інструмента перезапуску gateway. Типове значення: `true`.
-- `ownerAllowFrom` — це явний список дозволених власників для команд/інструментів лише для власника. Він відокремлений від `allowFrom`.
-- `ownerDisplay: "hash"` хешує ID власника в системному промпті. Задайте `ownerDisplaySecret`, щоб керувати хешуванням.
-- `allowFrom` задається окремо для кожного провайдера. Якщо його вказано, це **єдине** джерело авторизації (списки дозволених каналу/спарювання та `useAccessGroups` ігноруються).
-- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не задано.
-- Відповідність документації команд:
- - вбудований + bundled каталог: [Slash Commands](/uk/tools/slash-commands)
+- `bash: true` вмикає `! ` для shell хоста. Потребує `tools.elevated.enabled` і відправника в `tools.elevated.allowFrom.`.
+- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів Gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; доступний лише для читання `/config show` залишається доступним для звичайних клієнтів оператора з областю запису.
+- `mcp: true` вмикає `/mcp` для конфігурації MCP-сервера, яким керує OpenClaw, у `mcp.servers`.
+- `plugins: true` вмикає `/plugins` для виявлення Plugin, установлення й елементів керування увімкненням/вимкненням.
+- `channels..configWrites` обмежує мутації конфігурації для кожного каналу (типово: true).
+- Для каналів із кількома обліковими записами `channels..accounts..configWrites` також обмежує записи, націлені на цей обліковий запис (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`).
+- `restart: false` вимикає `/restart` і дії інструмента перезапуску Gateway. Типово: `true`.
+- `ownerAllowFrom` — це явний owner allowlist для команд/інструментів лише для власника. Він окремий від `allowFrom`.
+- `ownerDisplay: "hash"` хешує id власника в системному prompt. Установіть `ownerDisplaySecret`, щоб керувати хешуванням.
+- `allowFrom` є окремим для кожного провайдера. Якщо встановлено, це **єдине** джерело авторизації (channel allowlist/pairing і `useAccessGroups` ігноруються).
+- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не встановлено.
+- Карта документації команд:
+ - каталог вбудованих і bundled: [Slash Commands](/uk/tools/slash-commands)
- поверхні команд, специфічні для каналу: [Channels](/uk/channels)
- команди QQ Bot: [QQ Bot](/uk/channels/qqbot)
- - команди спарювання: [Pairing](/uk/channels/pairing)
+ - команди pairing: [Pairing](/uk/channels/pairing)
- команда картки LINE: [LINE](/uk/channels/line)
- - dreaming пам’яті: [Dreaming](/uk/concepts/dreaming)
+ - memory dreaming: [Dreaming](/uk/concepts/dreaming)
---
-## Значення агентів за замовчуванням
+## Типові значення агента
### `agents.defaults.workspace`
@@ -906,7 +906,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.repoRoot`
-Необов’язковий корінь репозиторію, що показується в рядку Runtime системного промпта. Якщо не задано, OpenClaw автоматично визначає його, рухаючись угору від workspace.
+Необов’язковий корінь репозиторію, який показується в рядку Runtime системного prompt. Якщо не встановлено, OpenClaw автоматично визначає його, рухаючись угору від workspace.
```json5
{
@@ -916,7 +916,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.skills`
-Необов’язковий список дозволених Skills за замовчуванням для агентів, які не задають
+Необов’язковий типовий allowlist Skills для агентів, які не задають
`agents.list[].skills`.
```json5
@@ -924,9 +924,9 @@ 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
],
},
}
@@ -934,8 +934,8 @@ IRC працює через extension і налаштовується в `channe
- Пропустіть `agents.defaults.skills`, щоб типово не обмежувати Skills.
- Пропустіть `agents.list[].skills`, щоб успадкувати типові значення.
-- Установіть `agents.list[].skills: []`, щоб не мати жодних Skills.
-- Непорожній список `agents.list[].skills` є фінальним набором для цього агента; він
+- Установіть `agents.list[].skills: []`, щоб не використовувати жодних Skills.
+- Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він
не об’єднується з типовими значеннями.
### `agents.defaults.skipBootstrap`
@@ -950,9 +950,9 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.contextInjection`
-Керує тим, коли bootstrap-файли workspace вбудовуються в системний промпт. Типове значення: `"always"`.
+Керує тим, коли bootstrap-файли workspace вбудовуються в системний prompt. Типове значення: `"always"`.
-- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді помічника) пропускають повторне вбудовування bootstrap workspace, зменшуючи розмір промпта. Запуски Heartbeat і повторні спроби після Compaction усе одно перебудовують контекст.
+- `"continuation-skip"`: безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторне вбудовування bootstrap workspace, зменшуючи розмір prompt. Запуски Heartbeat і повторні спроби після Compaction однаково перебудовують контекст.
```json5
{
@@ -962,7 +962,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.bootstrapMaxChars`
-Максимальна кількість символів на один bootstrap-файл workspace до обрізання. Типове значення: `12000`.
+Максимальна кількість символів на bootstrap-файл workspace перед обрізанням. Типове значення: `12000`.
```json5
{
@@ -972,7 +972,7 @@ IRC працює через extension і налаштовується в `channe
### `agents.defaults.bootstrapTotalMaxChars`
-Максимальна загальна кількість символів, що вбудовуються з усіх bootstrap-файлів workspace. Типове значення: `60000`.
+Максимальна загальна кількість символів, що вбудовуються в усі bootstrap-файли workspace. Типове значення: `60000`.
```json5
{
@@ -985,7 +985,7 @@ IRC працює через extension і налаштовується в `channe
Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізається.
Типове значення: `"once"`.
-- `"off"`: ніколи не вбудовувати текст попередження в системний промпт.
+- `"off"`: ніколи не вбудовувати текст попередження в системний prompt.
- `"once"`: вбудовувати попередження один раз для кожного унікального сигнатурного обрізання (рекомендовано).
- `"always"`: вбудовувати попередження під час кожного запуску, коли є обрізання.
@@ -995,26 +995,26 @@ IRC працює через extension і налаштовується в `channe
}
```
-### Карта відповідальності за бюджет контексту
+### Карта володіння бюджетом контексту
-OpenClaw має кілька великих бюджетів промпта/контексту, і вони
-навмисно розділені між підсистемами замість того, щоб усе проходило через
-один загальний параметр.
+OpenClaw має кілька об’ємних бюджетів prompt/контексту, і вони
+навмисно розділені за підсистемами, замість того щоб проходити через один
+загальний параметр.
- `agents.defaults.bootstrapMaxChars` /
`agents.defaults.bootstrapTotalMaxChars`:
звичайне вбудовування bootstrap workspace.
- `agents.defaults.startupContext.*`:
- одноразова стартова прелюдія для `/new` і `/reset`, включно з нещодавніми щоденними
- файлами `memory/*.md`.
+ одноразова стартова преамбула `/new` і `/reset`, зокрема останні щоденні
+ файли `memory/*.md`.
- `skills.limits.*`:
- компактний список Skills, вбудований у системний промпт.
+ компактний список Skills, вбудований у системний prompt.
- `agents.defaults.contextLimits.*`:
- обмежені runtime-уривки та вбудовані блоки, що належать runtime.
+ обмежені runtime-уривки й вбудовані блоки, що належать runtime.
- `memory.qmd.limits.*`:
- уривки індексованого пошуку пам’яті та розміри вбудовування.
+ фрагменти indexed memory-search і розмір вбудовування.
-Використовуйте відповідне перевизначення для окремого агента лише тоді, коли одному агенту потрібен інший
+Використовуйте відповідне перевизначення для конкретного агента лише тоді, коли одному агенту потрібен інший
бюджет:
- `agents.list[].skillsLimits.maxSkillsPromptChars`
@@ -1022,7 +1022,7 @@ OpenClaw має кілька великих бюджетів промпта/ко
#### `agents.defaults.startupContext`
-Керує стартовою прелюдією першого ходу, яка вбудовується при звичайних запусках `/new` і `/reset`.
+Керує стартовою преамбулою першого ходу, яка вбудовується під час звичайних запусків `/new` і `/reset`.
```json5
{
@@ -1060,17 +1060,18 @@ OpenClaw має кілька великих бюджетів промпта/ко
}
```
-- `memoryGetMaxChars`: типове обмеження уривка `memory_get` до додавання метаданих
- обрізання та повідомлення про продовження.
+- `memoryGetMaxChars`: типове обмеження уривка `memory_get` перед додаванням
+ метаданих обрізання й повідомлення про продовження.
- `memoryGetDefaultLines`: типове вікно рядків `memory_get`, коли `lines`
пропущено.
-- `toolResultMaxChars`: актуальне обмеження результату інструмента, що використовується для збережених результатів і
- відновлення при переповненні.
-- `postCompactionMaxChars`: обмеження уривка AGENTS.md, що використовується під час вбудовування оновлення після Compaction.
+- `toolResultMaxChars`: активне обмеження результату інструмента, яке використовується для збережених результатів і
+ відновлення переповнення.
+- `postCompactionMaxChars`: обмеження уривка AGENTS.md, яке використовується під час вбудовування
+ оновлення після Compaction.
#### `agents.list[].contextLimits`
-Перевизначення для окремого агента для спільних параметрів `contextLimits`. Пропущені поля успадковуються
+Перевизначення для конкретного агента для спільних параметрів `contextLimits`. Пропущені поля успадковуються
з `agents.defaults.contextLimits`.
```json5
@@ -1097,7 +1098,7 @@ OpenClaw має кілька великих бюджетів промпта/ко
#### `skills.limits.maxSkillsPromptChars`
-Глобальне обмеження для компактного списку Skills, вбудованого в системний промпт. Це
+Глобальне обмеження для компактного списку Skills, вбудованого в системний prompt. Це
не впливає на читання файлів `SKILL.md` на вимогу.
```json5
@@ -1112,7 +1113,7 @@ OpenClaw має кілька великих бюджетів промпта/ко
#### `agents.list[].skillsLimits.maxSkillsPromptChars`
-Перевизначення для окремого агента для бюджету промпта Skills.
+Перевизначення для конкретного агента для бюджету prompt Skills.
```json5
{
@@ -1134,7 +1135,7 @@ OpenClaw має кілька великих бюджетів промпта/ко
Максимальний розмір у пікселях для довшої сторони зображення в блоках зображень transcript/tool перед викликами провайдера.
Типове значення: `1200`.
-Менші значення зазвичай зменшують використання vision-токенів і розмір payload запиту для запусків із великою кількістю знімків екрана.
+Менші значення зазвичай зменшують використання vision-token і розмір payload запиту для запусків із великою кількістю знімків екрана.
Більші значення зберігають більше візуальних деталей.
```json5
@@ -1145,7 +1146,7 @@ OpenClaw має кілька великих бюджетів промпта/ко
### `agents.defaults.userTimezone`
-Часовий пояс для контексту системного промпта (не часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста.
+Часовий пояс для контексту системного prompt (не для часових міток повідомлень). Якщо не вказано, використовується часовий пояс хоста.
```json5
{
@@ -1155,7 +1156,7 @@ OpenClaw має кілька великих бюджетів промпта/ко
### `agents.defaults.timeFormat`
-Формат часу в системному промпті. Типове значення: `auto` (налаштування ОС).
+Формат часу в системному prompt. Типове значення: `auto` (налаштування ОС).
```json5
{
@@ -1193,7 +1194,7 @@ OpenClaw має кілька великих бюджетів промпта/ко
primary: "anthropic/claude-opus-4-6",
fallbacks: ["openai/gpt-5.4-mini"],
},
- params: { cacheRetention: "long" }, // глобальні типові параметри провайдера
+ params: { cacheRetention: "long" }, // global default provider params
embeddedHarness: {
runtime: "auto", // auto | pi | registered harness id, e.g. codex
fallback: "pi", // pi | none
@@ -1213,48 +1214,48 @@ OpenClaw має кілька великих бюджетів промпта/ко
```
- `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- - Рядкова форма задає лише основну модель.
- - Форма об’єкта задає основну модель плюс упорядковані моделі резервного перемикання.
+ - Форма рядка задає лише основну модель.
+ - Форма об’єкта задає основну модель плюс впорядковані моделі failover.
- `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- - Використовується шляхом інструмента `image` як його конфігурація vision-моделі.
+ - Використовується шляхом інструмента `image` як його конфігурація vision-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-ключ провайдера (наприклад, `GEMINI_API_KEY` або `GOOGLE_API_KEY` для `google/*`, `OPENAI_API_KEY` для `openai/*`, `FAL_KEY` для `fal/*`).
- - Якщо значення пропущено, `image_generate` усе одно може визначити типове значення провайдера на основі автентифікації. Спочатку він пробує поточного типового провайдера, потім — решту зареєстрованих провайдерів генерації зображень у порядку ID провайдера.
+ - Якщо ви вибираєте 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 }`).
- Використовується спільною можливістю генерації музики та вбудованим інструментом `music_generate`.
- Типові значення: `google/lyria-3-clip-preview`, `google/lyria-3-pro-preview` або `minimax/music-2.5+`.
- - Якщо значення пропущено, `music_generate` усе одно може визначити типове значення провайдера на основі автентифікації. Спочатку він пробує поточного типового провайдера, потім — решту зареєстрованих провайдерів генерації музики в порядку ID провайдера.
- - Якщо ви вибираєте `provider/model` напряму, також налаштуйте відповідну автентифікацію/API-ключ провайдера.
+ - Якщо значення пропущено, `music_generate` усе одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації музики в порядку 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` усе одно може визначити типове значення провайдера на основі автентифікації. Спочатку він пробує поточного типового провайдера, потім — решту зареєстрованих провайдерів генерації відео в порядку ID провайдера.
- - Якщо ви вибираєте `provider/model` напряму, також налаштуйте відповідну автентифікацію/API-ключ провайдера.
- - Bundled провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість до 10 секунд і параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` та `watermark`.
+ - Якщо значення пропущено, `video_generate` усе одно може визначити типове значення провайдера з автентифікацією. Спочатку він пробує поточного типового провайдера, потім решту зареєстрованих провайдерів генерації відео в порядку provider-id.
+ - Якщо ви вибираєте provider/model напряму, також налаштуйте відповідну автентифікацію провайдера/API key.
+ - Bundled провайдер генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` та `watermark`.
- `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- Використовується інструментом `pdf` для маршрутизації моделі.
- - Якщо значення пропущено, інструмент PDF використовує резервно `imageModel`, а потім — визначену модель сесії/типову модель.
+ - Якщо значення пропущено, інструмент PDF повертається до `imageModel`, а потім до визначеної моделі сесії/типової моделі.
- `pdfMaxBytesMb`: типове обмеження розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику.
-- `pdfMaxPages`: типова максимальна кількість сторінок, яку враховує резервний режим витягування в інструменті `pdf`.
+- `pdfMaxPages`: типова максимальна кількість сторінок, які враховуються режимом резервного витягування в інструменті `pdf`.
- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Типове значення: `"off"`.
- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типове значення: `"on"`.
-- `model.primary`: формат `provider/model` (наприклад, `openai/gpt-5.4`). Якщо провайдера пропущено, OpenClaw спочатку пробує псевдонім, потім — унікальний збіг налаштованого провайдера для цього точного ID моделі, і лише після цього повертається до налаштованого типового провайдера (застаріла поведінка сумісності, тому краще явно вказувати `provider/model`). Якщо цей провайдер більше не надає налаштовану типову модель, OpenClaw переходить до першого налаштованого провайдера/моделі замість того, щоб показувати застаріле типове значення видаленого провайдера.
-- `models`: налаштований каталог моделей і список дозволених для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`).
-- `params`: глобальні типові параметри провайдера, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад, `{ cacheRetention: "long" }`).
-- Пріоритет об’єднання `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається через `agents.defaults.models["provider/model"].params` (для конкретної моделі), а потім `agents.list[].params` (для відповідного ID агента) перевизначає за ключем. Докладніше див. у [Prompt Caching](/uk/reference/prompt-caching).
-- `embeddedHarness`: типова політика низькорівневого runtime вбудованого агента. Використовуйте `runtime: "auto"`, щоб зареєстровані harness-и Plugin могли обробляти підтримувані моделі, `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, або ID зареєстрованого harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний перехід на PI.
-- Автори конфігурації, які змінюють ці поля (наприклад, `/models set`, `/models set-image` і команди додавання/видалення резервних моделей), зберігають канонічну форму об’єкта та за можливості зберігають наявні списки резервних моделей.
+- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо ви пропускаєте провайдера, OpenClaw спочатку пробує alias, потім унікальний збіг exact 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` (відповідний id агента) перевизначає за ключами. Докладніше див. [Prompt Caching](/uk/reference/prompt-caching).
+- `embeddedHarness`: типова низькорівнева політика runtime вбудованого агента. Використовуйте `runtime: "auto"`, щоб дозволити зареєстрованим plugin harness перебирати підтримувані моделі, `runtime: "pi"`, щоб примусово використовувати вбудований harness PI, або зареєстрований id harness, наприклад `runtime: "codex"`. Установіть `fallback: "none"`, щоб вимкнути автоматичний резервний PI.
+- Записувачі конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта та за можливості зберігають наявні списки fallback.
- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сесіями (кожна сесія все одно серіалізується). Типове значення: 4.
### `agents.defaults.embeddedHarness`
-`embeddedHarness` керує тим, який низькорівневий виконавець обробляє ходи вбудованого агента.
+`embeddedHarness` керує тим, який низькорівневий виконавець запускає ходи вбудованого агента.
У більшості розгортань слід залишити типове значення `{ runtime: "auto", fallback: "pi" }`.
Використовуйте це, коли довірений Plugin надає нативний harness, наприклад bundled
-harness сервера застосунку Codex.
+harness app-server Codex.
```json5
{
@@ -1270,15 +1271,15 @@ harness сервера застосунку Codex.
}
```
-- `runtime`: `"auto"`, `"pi"` або ID зареєстрованого harness Plugin. Bundled Plugin Codex реєструє `codex`.
-- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований harness PI як резервний варіант сумісності. `"none"` призводить до помилки, якщо вибраний harness Plugin відсутній або не підтримується, замість того щоб непомітно використовувати PI.
-- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` вимикає резервний перехід на PI для цього процесу.
-- Для розгортань лише з Codex встановіть `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` і `embeddedHarness.fallback: "none"`.
-- Це керує лише вбудованим chat harness. Генерація медіа, vision, PDF, музики, відео та TTS і далі використовують свої налаштування провайдера/моделі.
+- `runtime`: `"auto"`, `"pi"` або id зареєстрованого plugin harness. Bundled Plugin Codex реєструє `codex`.
+- `fallback`: `"pi"` або `"none"`. `"pi"` зберігає вбудований harness PI як резервний варіант сумісності. `"none"` призводить до помилки, якщо вибір plugin harness відсутній або не підтримується, замість тихого переходу на PI.
+- Перевизначення через середовище: `OPENCLAW_AGENT_RUNTIME=` перевизначає `runtime`; `OPENCLAW_AGENT_HARNESS_FALLBACK=none` вимикає резервний PI для цього процесу.
+- Для розгортань лише з Codex установіть `model: "codex/gpt-5.4"`, `embeddedHarness.runtime: "codex"` і `embeddedHarness.fallback: "none"`.
+- Це керує лише вбудованим chat harness. Генерація медіа, vision, PDF, музика, відео та TTS і далі використовують свої налаштування provider/model.
-**Вбудовані скорочення-псевдоніми** (застосовуються лише тоді, коли модель є в `agents.defaults.models`):
+**Скорочення вбудованих alias** (застосовуються лише коли модель є в `agents.defaults.models`):
-| Псевдонім | Модель |
+| Alias | Модель |
| ------------------- | -------------------------------------- |
| `opus` | `anthropic/claude-opus-4-6` |
| `sonnet` | `anthropic/claude-sonnet-4-6` |
@@ -1289,11 +1290,11 @@ harness сервера застосунку Codex.
| `gemini-flash` | `google/gemini-3-flash-preview` |
| `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` |
-Ваші налаштовані псевдоніми завжди мають пріоритет над типовими.
+Ваші налаштовані alias завжди мають пріоритет над типовими.
-Моделі Z.AI GLM-4.x автоматично вмикають режим thinking, якщо ви не встановили `--thinking off` або самі не визначили `agents.defaults.models["zai/"].params.thinking`.
-Моделі Z.AI типово вмикають `tool_stream` для потокової передачі викликів інструментів. Установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути це.
-Моделі Anthropic Claude 4.6 типово використовують `adaptive` thinking, коли явний рівень thinking не задано.
+Для моделей Z.AI GLM-4.x автоматично вмикається режим thinking, якщо ви не встановите `--thinking off` або самостійно не визначите `agents.defaults.models["zai/"].params.thinking`.
+Для моделей Z.AI типово ввімкнено `tool_stream` для потокового передавання викликів інструментів. Установіть `agents.defaults.models["zai/"].params.tool_stream` у `false`, щоб вимкнути це.
+Для моделей Anthropic Claude 4.6 типово використовується thinking `adaptive`, коли явний рівень thinking не задано.
### `agents.defaults.cliBackends`
@@ -1326,12 +1327,12 @@ harness сервера застосунку Codex.
```
- CLI-бекенди орієнтовані насамперед на текст; інструменти завжди вимкнені.
-- Сесії підтримуються, якщо задано `sessionArg`.
+- Сесії підтримуються, коли встановлено `sessionArg`.
- Передавання зображень підтримується, коли `imageArg` приймає шляхи до файлів.
### `agents.defaults.systemPromptOverride`
-Замінює весь системний промпт, зібраний OpenClaw, фіксованим рядком. Задається на типовому рівні (`agents.defaults.systemPromptOverride`) або для конкретного агента (`agents.list[].systemPromptOverride`). Значення для агента мають пріоритет; порожнє значення або значення лише з пробілів ігнорується. Корисно для контрольованих експериментів із промптом.
+Замінює весь системний prompt, зібраний OpenClaw, на фіксований рядок. Задається на типовому рівні (`agents.defaults.systemPromptOverride`) або для конкретного агента (`agents.list[].systemPromptOverride`). Значення для конкретного агента мають пріоритет; порожнє значення або значення лише з пробілами ігнорується. Корисно для контрольованих експериментів із prompt.
```json5
{
@@ -1372,15 +1373,15 @@ harness сервера застосунку Codex.
}
```
-- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація через API-ключ) або `1h` (автентифікація через OAuth). Установіть `0m`, щоб вимкнути.
-- `includeSystemPromptSection`: якщо значення false, секція Heartbeat не включається в системний промпт і вбудовування `HEARTBEAT.md` у bootstrap-контекст пропускається. Типове значення: `true`.
-- `suppressToolErrorWarnings`: якщо значення true, під час запусків Heartbeat попередження про помилки інструментів не додаються.
-- `timeoutSeconds`: максимальний час у секундах, дозволений для одного ходу агента Heartbeat, після чого його буде перервано. Якщо не вказано, використовується `agents.defaults.timeoutSeconds`.
-- `directPolicy`: політика прямої доставки/доставки в DM. `allow` (типово) дозволяє пряму доставку до цілі. `block` забороняє пряму доставку до цілі й створює `reason=dm-blocked`.
-- `lightContext`: якщо значення true, запуски Heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів workspace.
-- `isolatedSession`: якщо значення true, кожен запуск Heartbeat виконується в новій сесії без попередньої історії розмови. Та сама схема ізоляції, що й у Cron `sessionTarget: "isolated"`. Зменшує витрати токенів на кожен Heartbeat приблизно зі ~100K до ~2-5K токенів.
-- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, Heartbeat запускається **лише для цих агентів**.
-- Heartbeat виконує повні ходи агента — менші інтервали спалюють більше токенів.
+- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація через API key) або `1h` (автентифікація через OAuth). Установіть `0m`, щоб вимкнути.
+- `includeSystemPromptSection`: коли false, прибирає розділ Heartbeat із системного prompt і пропускає вбудовування `HEARTBEAT.md` у bootstrap-контекст. Типове значення: `true`.
+- `suppressToolErrorWarnings`: коли true, пригнічує payload попереджень про помилки інструментів під час запусків heartbeat.
+- `timeoutSeconds`: максимальний дозволений час у секундах для одного ходу агента heartbeat до його переривання. Якщо не встановлено, використовується `agents.defaults.timeoutSeconds`.
+- `directPolicy`: політика прямої доставки/доставки в DM. `allow` (типово) дозволяє доставку на пряму ціль. `block` пригнічує доставку на пряму ціль і виводить `reason=dm-blocked`.
+- `lightContext`: коли true, запуски heartbeat використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів workspace.
+- `isolatedSession`: коли true, кожен запуск heartbeat виконується в новій сесії без попередньої історії розмов. Та сама схема ізоляції, що й у Cron `sessionTarget: "isolated"`. Зменшує вартість токенів на один heartbeat приблизно зі ~100K до ~2-5K токенів.
+- Для конкретного агента: задайте `agents.list[].heartbeat`. Коли будь-який агент визначає `heartbeat`, запускаються Heartbeat **лише для цих агентів**.
+- Heartbeat запускають повні ходи агента — коротші інтервали витрачають більше токенів.
### `agents.defaults.compaction`
@@ -1397,7 +1398,7 @@ harness сервера застосунку Codex.
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)
+ notifyUser: true, // send brief notices when compaction starts and completes (default: false)
memoryFlush: {
enabled: true,
softThresholdTokens: 6000,
@@ -1411,18 +1412,18 @@ harness сервера застосунку Codex.
```
- `mode`: `default` або `safeguard` (підсумовування шматками для довгих історій). Див. [Compaction](/uk/concepts/compaction).
-- `provider`: id зареєстрованого Plugin провайдера Compaction. Якщо задано, замість вбудованого LLM-підсумовування викликається `summarize()` провайдера. У разі збою використовується вбудований механізм. Установлення провайдера примусово вмикає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction).
-- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction, після чого OpenClaw її перериває. Типове значення: `900`.
+- `provider`: id зареєстрованого Plugin провайдера Compaction. Якщо вказано, замість вбудованого LLM-підсумовування викликається `summarize()` провайдера. У разі збою повертається до вбудованого механізму. Установлення провайдера примусово задає `mode: "safeguard"`. Див. [Compaction](/uk/concepts/compaction).
+- `timeoutSeconds`: максимальна кількість секунд, дозволена для однієї операції Compaction, перш ніж OpenClaw її перерве. Типове значення: `900`.
- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування Compaction.
-- `identifierInstructions`: необов’язковий власний текст щодо збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`.
-- `postCompactionSections`: необов’язкові назви секцій H2/H3 з AGENTS.md, які повторно вбудовуються після Compaction. Типово `["Session Startup", "Red Lines"]`; задайте `[]`, щоб вимкнути повторне вбудовування. Якщо значення не задано або явно задано цю типову пару, старіші заголовки `Every Session`/`Safety` також приймаються як резервний варіант для сумісності.
-- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування Compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки Compaction мають виконуватися на іншій; якщо не задано, Compaction використовує основну модель сесії.
-- `notifyUser`: якщо `true`, надсилає користувачеві коротке сповіщення на початку Compaction (наприклад, "Compacting context..."). Типово вимкнено, щоб Compaction залишався безшумним.
-- `memoryFlush`: безшумний агентний хід перед автоматичним Compaction для збереження тривких спогадів. Пропускається, якщо workspace доступний лише для читання.
+- `identifierInstructions`: необов’язковий користувацький текст про збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`.
+- `postCompactionSections`: необов’язкові назви секцій H2/H3 з AGENTS.md для повторного вбудовування після Compaction. Типове значення — `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне вбудовування. Якщо не встановлено або явно задано цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як резервний варіант сумісності.
+- `model`: необов’язкове перевизначення `provider/model-id` лише для підсумовування Compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а підсумки Compaction — виконуватися на іншій; якщо не встановлено, Compaction використовує основну модель сесії.
+- `notifyUser`: якщо `true`, надсилає короткі сповіщення користувачу на початку й після завершення Compaction (наприклад, "Compacting context..." і "Compaction complete"). Типово вимкнено, щоб Compaction працював безшумно.
+- `memoryFlush`: тихий агентний хід перед автоматичним Compaction для збереження довготривалої пам’яті. Пропускається, якщо workspace доступний лише для читання.
### `agents.defaults.contextPruning`
-Обрізає **старі результати інструментів** із контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сесії на диску.
+Обрізає **старі результати інструментів** з контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сесії на диску.
```json5
{
@@ -1448,17 +1449,17 @@ harness сервера застосунку Codex.
- `mode: "cache-ttl"` вмикає проходи обрізання.
- `ttl` керує тим, як часто обрізання може запускатися знову (після останнього торкання кешу).
-- Обрізання спочатку м’яко скорочує надто великі результати інструментів, а потім за потреби повністю очищає старіші результати інструментів.
+- Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім, за потреби, повністю очищає старіші результати інструментів.
**М’яке обрізання** зберігає початок і кінець та вставляє `...` посередині.
-**Повне очищення** замінює весь результат інструмента на placeholder.
+**Повне очищення** замінює весь результат інструмента заповнювачем.
Примітки:
- Блоки зображень ніколи не обрізаються й не очищаються.
-- Співвідношення базуються на символах (приблизно), а не на точних кількостях токенів.
-- Якщо існує менше ніж `keepLastAssistants` повідомлень помічника, обрізання пропускається.
+- Співвідношення базуються на кількості символів (приблизно), а не на точній кількості токенів.
+- Якщо існує менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається.
@@ -1480,13 +1481,13 @@ harness сервера застосунку Codex.
}
```
-- Канали, окрім Telegram, потребують явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді.
-- Перевизначення для каналу: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типове значення `minChars: 1500`.
-- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення для окремого агента: `agents.list[].humanDelay`.
+- Канали, окрім Telegram, вимагають явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді.
+- Перевизначення для каналу: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типове `minChars: 1500`.
+- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500 мс. Перевизначення для конкретного агента: `agents.list[].humanDelay`.
-Докладніше про поведінку й розбиття на частини див. у [Streaming](/uk/concepts/streaming).
+Докладніше про поведінку й поділ на частини див. у [Streaming](/uk/concepts/streaming).
-### Індикатори набору
+### Індикатори набору тексту
```json5
{
@@ -1499,7 +1500,7 @@ harness сервера застосунку Codex.
}
```
-- Типові значення: `instant` для прямих чатів/згадок, `message` для групових чатів без згадки.
+- Типові значення: `instant` для прямих чатів/згадувань, `message` для групових чатів без згадування.
- Перевизначення для сесії: `session.typingMode`, `session.typingIntervalSeconds`.
Див. [Typing Indicators](/uk/concepts/typing-indicators).
@@ -1508,7 +1509,7 @@ harness сервера застосунку Codex.
### `agents.defaults.sandbox`
-Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
+Необов’язкова sandbox-ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
```json5
{
@@ -1605,48 +1606,48 @@ harness сервера застосунку Codex.
-**Backend:**
+**Бекенд:**
- `docker`: локальний runtime Docker (типово)
-- `ssh`: загальний віддалений runtime на основі SSH
+- `ssh`: загальний віддалений runtime на базі SSH
- `openshell`: runtime OpenShell
-Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переміщуються до
+Коли вибрано `backend: "openshell"`, налаштування, специфічні для runtime, переносяться до
`plugins.entries.openshell.config`.
-**Конфігурація backend SSH:**
+**Конфігурація SSH-бекенда:**
-- `target`: ціль SSH у форматі `user@host[:port]`
-- `command`: команда клієнта SSH (типово: `ssh`)
-- `workspaceRoot`: абсолютний віддалений корінь, що використовується для workspace за кожною областю
+- `target`: SSH-ціль у форматі `user@host[:port]`
+- `command`: команда SSH-клієнта (типово: `ssh`)
+- `workspaceRoot`: абсолютний віддалений корінь, що використовується для workspace кожної області
- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, що передаються до OpenSSH
-- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, які OpenClaw матеріалізує у тимчасові файли під час runtime
+- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, який OpenClaw матеріалізує у тимчасові файли під час runtime
- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH
-**Пріоритет автентифікації SSH:**
+**Пріоритет SSH-автентифікації:**
- `identityData` має пріоритет над `identityFile`
- `certificateData` має пріоритет над `certificateFile`
- `knownHostsData` має пріоритет над `knownHostsFile`
-- Значення `*Data` на основі SecretRef визначаються з активного знімка runtime секретів до початку сесії sandbox
+- Значення `*Data` на базі SecretRef визначаються з активного знімка runtime секретів перед початком sandbox-сесії
-**Поведінка backend SSH:**
+**Поведінка SSH-бекенда:**
-- один раз ініціалізує віддалений workspace після створення або повторного створення
-- потім підтримує віддалений workspace як канонічний
-- маршрутизує `exec`, файлові інструменти й шляхи медіа через SSH
-- не синхронізує віддалені зміни назад на хост автоматично
-- не підтримує браузерні контейнери sandbox
+- один раз ініціалізує віддалений workspace після створення або перевідтворення
+- потім зберігає віддалений SSH workspace як канонічний
+- маршрутизує `exec`, файлові інструменти та шляхи до медіа через SSH
+- не синхронізує автоматично віддалені зміни назад на хост
+- не підтримує контейнерів браузера в sandbox
**Доступ до workspace:**
-- `none`: workspace sandbox за областю в `~/.openclaw/sandboxes`
-- `ro`: workspace sandbox у `/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 (без ізоляції між сесіями)
@@ -1679,29 +1680,29 @@ harness сервера застосунку Codex.
**Режим OpenShell:**
- `mirror`: ініціалізує віддалене середовище з локального перед `exec`, синхронізує назад після `exec`; локальний workspace залишається канонічним
-- `remote`: один раз ініціалізує віддалене середовище, коли sandbox створюється, після чого віддалений workspace залишається канонічним
+- `remote`: один раз ініціалізує віддалене середовище під час створення sandbox, далі канонічним залишається віддалений workspace
-У режимі `remote` локальні редагування на хості, зроблені поза OpenClaw, не синхронізуються автоматично в sandbox після кроку ініціалізації.
-Транспорт — SSH до sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою синхронізацією mirror.
+У режимі `remote` зміни на локальному хості, зроблені поза OpenClaw, не синхронізуються автоматично в sandbox після кроку ініціалізації.
+Транспорт — SSH у sandbox OpenShell, але Plugin керує життєвим циклом sandbox і необов’язковою синхронізацією mirror.
-**`setupCommand`** виконується один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, записуваного root і root-користувача.
+**`setupCommand`** запускається один раз після створення контейнера (через `sh -lc`). Потребує виходу в мережу, доступного для запису кореня та root-користувача.
-**Для контейнерів типово встановлено `network: "none"`** — задайте `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихідний доступ.
-`"host"` заблоковано. `"container:"` типово заблоковано, якщо ви явно не встановите
+**Контейнери типово використовують `network: "none"`** — установіть `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихід назовні.
+`"host"` заблоковано. `"container:"` типово також заблоковано, якщо ви явно не встановите
`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (режим break-glass).
**Вхідні вкладення** розміщуються в `media/inbound/*` в активному workspace.
-**`docker.binds`** монтує додаткові каталоги хоста; глобальні й агентські bind-монтування об’єднуються.
+**`docker.binds`** монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для конкретного агента об’єднуються.
-**Ізольований браузер** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вбудовується в системний промпт. Не потребує `browser.enabled` в `openclaw.json`.
-Доступ спостерігача через noVNC типово використовує VNC-автентифікацію, і OpenClaw видає короткоживучий URL із токеном (замість того щоб розкривати пароль у спільному URL).
+**Браузер у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вбудовується в системний prompt. Не потребує `browser.enabled` у `openclaw.json`.
+Доступ спостерігача noVNC типово використовує VNC-автентифікацію, а OpenClaw видає короткоживучий token URL (замість показу пароля у спільному URL).
-- `allowHostControl: false` (типово) блокує націлювання ізольованих сесій на браузер хоста.
-- `network` типово дорівнює `openclaw-sandbox-browser` (виділена bridge-мережа). Установлюйте `bridge` лише тоді, коли вам явно потрібна глобальна зв’язність bridge.
-- `cdpSourceRange` необов’язково обмежує вхідний CDP на межі контейнера діапазоном CIDR (наприклад, `172.21.0.1/32`).
-- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо задано (включно з `[]`), воно замінює `docker.binds` для контейнера браузера.
-- Типові параметри запуску визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для хостів контейнерів:
+- `allowHostControl: false` (типово) блокує націлювання sandbox-сесій на браузер хоста.
+- `network` типово має значення `openclaw-sandbox-browser` (виділена bridge-мережа). Установлюйте `bridge` лише тоді, коли вам явно потрібна глобальна зв’язність bridge.
+- `cdpSourceRange` необов’язково обмежує вхід CDP на межі контейнера до діапазону CIDR (наприклад `172.21.0.1/32`).
+- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо встановлено (включно з `[]`), воно замінює `docker.binds` для контейнера браузера.
+- Типові параметри запуску визначені в `scripts/sandbox-browser-entrypoint.sh` і налаштовані для хостів контейнерів:
- `--remote-debugging-address=127.0.0.1`
- `--remote-debugging-port=`
- `--user-data-dir=${HOME}/.chrome`
@@ -1720,29 +1721,29 @@ harness сервера застосунку Codex.
- `--metrics-recording-only`
- `--disable-extensions` (типово ввімкнено)
- `--disable-3d-apis`, `--disable-software-rasterizer` і `--disable-gpu`
- типово ввімкнені та можуть бути вимкнені через
- `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо цього потребує використання WebGL/3D.
- - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає extensions, якщо ваш workflow
- залежить від них.
+ типово ввімкнені й можуть бути вимкнені через
+ `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо для використання WebGL/3D це потрібно.
+ - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає розширення, якщо ваш робочий процес
+ від них залежить.
- `--renderer-process-limit=2` можна змінити через
`OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використовувати
типове обмеження процесів Chromium.
- а також `--no-sandbox` і `--disable-setuid-sandbox`, коли ввімкнено `noSandbox`.
- - Типові значення — це базовий рівень образу контейнера; використовуйте власний образ браузера з власним
+ - Типові значення — це базова конфігурація образу контейнера; використовуйте власний образ браузера з власним
entrypoint, щоб змінити типові значення контейнера.
-Browser sandboxing і `sandbox.docker.binds` доступні лише для Docker.
+Браузерна sandbox-ізоляція та `sandbox.docker.binds` доступні лише для Docker.
-Зберіть образи:
+Зібрати образи:
```bash
scripts/sandbox-setup.sh # основний образ sandbox
scripts/sandbox-browser-setup.sh # необов’язковий образ браузера
```
-### `agents.list` (перевизначення для окремого агента)
+### `agents.list` (перевизначення для конкретного агента)
```json5
{
@@ -1791,27 +1792,27 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `id`: стабільний ID агента (обов’язково).
-- `default`: якщо встановлено для кількох агентів, перемагає перший (логуватиметься попередження). Якщо не встановлено ні для кого, типовим є перший запис у списку.
-- `model`: рядкова форма перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні резервні моделі). Завдання Cron, які перевизначають лише `primary`, усе одно успадковують типові резервні моделі, якщо не встановити `fallbacks: []`.
-- `params`: параметри потоку для окремого агента, об’єднані поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень, специфічних для агента, таких як `cacheRetention`, `temperature` або `maxTokens`, без дублювання всього каталогу моделей.
-- `skills`: необов’язковий список дозволених Skills для окремого агента. Якщо пропущено, агент успадковує `agents.defaults.skills`, якщо його задано; явний список замінює типові значення замість об’єднання, а `[]` означає відсутність Skills.
-- `thinkingDefault`: необов’язковий типовий рівень thinking для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для повідомлення або сесії.
-- `reasoningDefault`: необов’язкове типове значення видимості reasoning для окремого агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для повідомлення або сесії.
-- `fastModeDefault`: необов’язкове типове значення fast mode для окремого агента (`true | false`). Застосовується, коли не задано перевизначення fast mode для повідомлення або сесії.
-- `embeddedHarness`: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий резервний перехід на PI.
-- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` із типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сесії harness ACP.
+- `id`: стабільний id агента (обов’язково).
+- `default`: якщо встановлено для кількох агентів, перемагає перший (записується попередження). Якщо не встановлено ніде, типовим стає перший запис у списку.
+- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron-завдання, які перевизначають лише `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 для повідомлення або сесії.
+- `embeddedHarness`: необов’язкове перевизначення низькорівневої політики harness для конкретного агента. Використовуйте `{ runtime: "codex", fallback: "none" }`, щоб зробити один агент лише для Codex, тоді як інші агенти зберігатимуть типовий резервний PI.
+- `runtime`: необов’язковий дескриптор runtime для конкретного агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сесії harness ACP.
- `identity.avatar`: шлях відносно workspace, URL `http(s)` або URI `data:`.
- `identity` виводить типові значення: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`.
-- `subagents.allowAgents`: список дозволених ID агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент).
-- Захист успадкування sandbox: якщо сесія, що запитує, працює в sandbox, `sessions_spawn` відхиляє цілі, які працювали б без sandbox.
-- `subagents.requireAgentId`: якщо true, блокує виклики `sessions_spawn`, які не містять `agentId` (примушує до явного вибору профілю; типово: false).
+- `subagents.allowAgents`: allowlist 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
{
@@ -1830,11 +1831,11 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### Поля зіставлення прив’язок
-- `type` (необов’язково): `route` для звичайної маршрутизації (якщо тип відсутній, типово використовується route), `acp` для постійних прив’язок розмов ACP.
+- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній `type` типово означає route), `acp` для постійних ACP-прив’язок розмов.
- `match.channel` (обов’язково)
-- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; пропущено = обліковий запис за замовчуванням)
+- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; якщо пропущено = типовий обліковий запис)
- `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`)
-- `match.guildId` / `match.teamId` (необов’язково; залежить від каналу)
+- `match.guildId` / `match.teamId` (необов’язково; специфічно для каналу)
- `acp` (необов’язково; лише для записів `type: "acp"`): `{ mode, label, cwd, backend }`
**Детермінований порядок зіставлення:**
@@ -1842,15 +1843,15 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
1. `match.peer`
2. `match.guildId`
3. `match.teamId`
-4. `match.accountId` (точний, без peer/guild/team)
-5. `match.accountId: "*"` (для всього каналу)
+4. `match.accountId` (точний збіг, без peer/guild/team)
+5. `match.accountId: "*"` (на рівні всього каналу)
6. Типовий агент
У межах кожного рівня перемагає перший відповідний запис `bindings`.
-Для записів `type: "acp"` OpenClaw виконує визначення за точною ідентичністю розмови (`match.channel` + account + `match.peer.id`) і не використовує порядок рівнів route-прив’язок, наведений вище.
+Для записів `type: "acp"` OpenClaw визначає збіг за точною ідентичністю розмови (`match.channel` + account + `match.peer.id`) і не використовує порядок рівнів route-прив’язок, наведений вище.
-### Профілі доступу для окремих агентів
+### Профілі доступу для конкретного агента
@@ -1870,7 +1871,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
-
+
```json5
{
@@ -1899,7 +1900,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
-
+
```json5
{
@@ -1949,7 +1950,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
---
-## Session
+## Сесія
```json5
{
@@ -1996,43 +1997,43 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-
+
- **`scope`**: базова стратегія групування сесій для контекстів групового чату.
- `per-sender` (типово): кожен відправник отримує ізольовану сесію в межах контексту каналу.
- - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли потрібен спільний контекст).
+ - `global`: усі учасники в контексті каналу спільно використовують одну сесію (використовуйте лише тоді, коли спільний контекст справді потрібен).
- **`dmScope`**: як групуються DM.
- `main`: усі DM спільно використовують основну сесію.
- - `per-peer`: ізоляція за ID відправника між каналами.
- - `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для вхідних скриньок із кількома користувачами).
- - `per-account-channel-peer`: ізоляція за обліковим записом + каналом + відправником (рекомендовано для багатьохоблікових конфігурацій).
-- **`identityLinks`**: відображає канонічні ID на peer-и з префіксом провайдера для спільного використання сесій між каналами.
-- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва варіанти, перемагає той, що спливає раніше.
-- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застарілий `dm` приймається як псевдонім для `direct`.
-- **`parentForkMaxTokens`**: максимальне `totalTokens` батьківської сесії, дозволене під час створення розгалуженої сесії треду (типово `100000`).
- - Якщо `totalTokens` батьківської сесії перевищує це значення, OpenClaw запускає нову сесію треду замість успадкування історії транскрипту батьківської сесії.
+ - `per-peer`: ізоляція за id відправника між каналами.
+ - `per-channel-peer`: ізоляція для кожного каналу + відправника (рекомендовано для inbox із кількома користувачами).
+ - `per-account-channel-peer`: ізоляція для кожного облікового запису + каналу + відправника (рекомендовано для кількох облікових записів).
+- **`identityLinks`**: зіставлення канонічних id із peer з префіксом провайдера для спільного використання сесій між каналами.
+- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує те, що спливає раніше.
+- **`resetByType`**: перевизначення для кожного типу (`direct`, `group`, `thread`). Застарілий `dm` приймається як alias для `direct`.
+- **`parentForkMaxTokens`**: максимальне значення `totalTokens` батьківської сесії, дозволене під час створення розгалуженої сесії потоку (типово `100000`).
+ - Якщо `totalTokens` батьківської сесії перевищує це значення, OpenClaw запускає нову сесію потоку замість успадкування історії стенограми батьківської сесії.
- Установіть `0`, щоб вимкнути цей захист і завжди дозволяти розгалуження від батьківської сесії.
-- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для основного кошика прямих чатів.
-- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів відповіді між агентами під час обміну агент-агент (ціле число, діапазон: `0`–`5`). `0` вимикає ping-pong-ланцюжок.
-- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим псевдонімом `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона перемагає.
-- **`maintenance`**: очищення сховища сесій + керування зберіганням.
- - `mode`: `warn` лише генерує попередження; `enforce` застосовує очищення.
- - `pruneAfter`: віковий поріг для застарілих записів (типово `30d`).
+- **`mainKey`**: застаріле поле. Runtime завжди використовує `"main"` для основного сегмента прямого чату.
+- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів відповіді між агентами під час обміну agent-to-agent (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжки ping-pong.
+- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перша заборона має пріоритет.
+- **`maintenance`**: елементи керування очищенням сховища сесій і збереженням.
+ - `mode`: `warn` лише виводить попередження; `enforce` застосовує очищення.
+ - `pruneAfter`: поріг віку для застарілих записів (типово `30d`).
- `maxEntries`: максимальна кількість записів у `sessions.json` (типово `500`).
- - `rotateBytes`: ротує `sessions.json`, коли його розмір перевищує це значення (типово `10mb`).
- - `resetArchiveRetention`: термін зберігання архівів транскриптів `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
- - `maxDiskBytes`: необов’язковий жорсткий бюджет дискового простору для каталогу сесій. У режимі `warn` логуються попередження; у режимі `enforce` спочатку видаляються найстаріші артефакти/сесії.
- - `highWaterBytes`: необов’язкова ціль після очищення бюджету. Типово дорівнює `80%` від `maxDiskBytes`.
-- **`threadBindings`**: глобальні типові значення для функцій сесій, прив’язаних до тредів.
+ - `rotateBytes`: ротує `sessions.json`, коли він перевищує цей розмір (типово `10mb`).
+ - `resetArchiveRetention`: строк збереження архівів стенограми `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
+ - `maxDiskBytes`: необов’язковий жорсткий бюджет дискового простору для каталогу сесій. У режимі `warn` він записує попередження; у режимі `enforce` спочатку видаляє найстаріші артефакти/сесії.
+ - `highWaterBytes`: необов’язкова ціль після очищення бюджету. Типово `80%` від `maxDiskBytes`.
+- **`threadBindings`**: глобальні типові значення для можливостей сесій, прив’язаних до потоку.
- `enabled`: головний типовий перемикач (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
- - `idleHours`: типове автоматичне зняття фокусу через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати)
- - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; провайдери можуть перевизначати)
+ - `idleHours`: типове автоматичне зняття фокуса через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати)
+ - `maxAgeHours`: типове жорстке максимальне обмеження віку в годинах (`0` вимикає; провайдери можуть перевизначати)
---
-## Messages
+## Повідомлення
```json5
{
@@ -2066,34 +2067,34 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
Перевизначення для каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`.
-Розв’язання (перемагає найспецифічніше): обліковий запис → канал → глобальне значення. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
+Визначення (найспецифічніше має пріоритет): account → channel → global. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
**Змінні шаблону:**
-| Змінна | Опис | Приклад |
-| ---------------- | ---------------------- | --------------------------- |
-| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
-| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
-| `{provider}` | Назва провайдера | `anthropic` |
-| `{thinkingLevel}`| Поточний рівень thinking | `high`, `low`, `off` |
-| `{identity.name}`| Назва ідентичності агента | (те саме, що `"auto"`) |
+| Змінна | Опис | Приклад |
+| ----------------- | ---------------------- | --------------------------- |
+| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
+| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
+| `{provider}` | Назва провайдера | `anthropic` |
+| `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` |
+| `{identity.name}` | Ім’я identity агента | (те саме, що й `"auto"`) |
-Змінні нечутливі до регістру. `{think}` — псевдонім для `{thinkingLevel}`.
+Змінні нечутливі до регістру. `{think}` — alias для `{thinkingLevel}`.
-### Реакція підтвердження
+### Реакція ack
- Типово використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
- Перевизначення для каналу: `channels..ackReaction`, `channels..accounts..ackReaction`.
-- Порядок розв’язання: обліковий запис → канал → `messages.ackReaction` → резервне значення з identity.
+- Порядок визначення: account → channel → `messages.ackReaction` → резервне значення identity.
- Область: `group-mentions` (типово), `group-all`, `direct`, `all`.
-- `removeAckAfterReply`: видаляє підтвердження після відповіді в Slack, Discord і Telegram.
+- `removeAckAfterReply`: прибирає ack після відповіді в Slack, Discord і Telegram.
- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram.
- У Slack і Discord, якщо значення не задано, реакції статусу залишаються ввімкненими, коли активні реакції підтвердження.
- У Telegram задайте це значення явно як `true`, щоб увімкнути реакції статусу життєвого циклу.
+ У Slack і Discord, якщо значення не встановлено, реакції статусу залишаються ввімкненими, коли активні реакції ack.
+ У Telegram установіть це явно в `true`, щоб увімкнути реакції статусу життєвого циклу.
-### Debounce вхідних повідомлень
+### Debounce для вхідних повідомлень
-Об’єднує швидкі текстові повідомлення від одного відправника в один хід агента. Медіа/вкладення скидаються негайно. Керувальні команди обходять debounce.
+Об’єднує швидкі текстові повідомлення від одного й того самого відправника в один хід агента. Медіа/вкладення скидаються негайно. Команди керування обходять debounce.
### TTS (text-to-speech)
@@ -2136,12 +2137,12 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `auto` керує типовим режимом auto-TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначати локальні налаштування, а `/tts status` показує фактичний стан.
-- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумку.
-- `modelOverrides` типово ввімкнено; `modelOverrides.allowProvider` типово дорівнює `false` (потрібне явне ввімкнення).
-- API-ключі резервно беруться з `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`.
-- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок розв’язання: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`.
-- Коли `openai.baseUrl` вказує на endpoint, що не належить OpenAI, OpenClaw розглядає його як OpenAI-сумісний TTS-сервер і послаблює перевірку моделі/голосу.
+- `auto` керує типовим автоматичним режимом TTS: `off`, `always`, `inbound` або `tagged`. `/tts on|off` може перевизначити локальні налаштування, а `/tts status` показує фактичний стан.
+- `summaryModel` перевизначає `agents.defaults.model.primary` для автоматичного підсумовування.
+- `modelOverrides` типово ввімкнено; `modelOverrides.allowProvider` типово має значення `false` (opt-in).
+- API key повертаються до `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`.
+- `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.
---
@@ -2171,13 +2172,13 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `talk.provider` має відповідати ключу в `talk.providers`, якщо налаштовано кілька провайдерів Talk.
-- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) підтримуються лише для сумісності й автоматично мігруються в `talk.providers.`.
-- Резервні значення для ID голосу беруться з `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
+- `talk.provider` має збігатися з ключем у `talk.providers`, коли налаштовано кілька провайдерів Talk.
+- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності й автоматично мігруються до `talk.providers.`.
+- Voice ID повертаються до `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
- `providers.*.apiKey` приймає відкриті рядки або об’єкти SecretRef.
-- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли не налаштовано API-ключ Talk.
+- Резервний варіант `ELEVENLABS_API_KEY` застосовується лише тоді, коли API key Talk не налаштовано.
- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви.
-- `silenceTimeoutMs` керує тим, скільки режим Talk чекає після мовчання користувача перед надсиланням транскрипту. Якщо не задано, використовується типове вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`).
+- `silenceTimeoutMs` керує тим, скільки режим Talk чекає після тиші користувача перед надсиланням стенограми. Якщо не встановлено, зберігається типове вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`).
---
@@ -2185,22 +2186,22 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### Профілі інструментів
-`tools.profile` задає базовий список дозволених інструментів перед `tools.allow`/`tools.deny`:
+`tools.profile` задає базовий allowlist перед `tools.allow`/`tools.deny`:
-Локальний онбординг типово задає для нових локальних конфігурацій `tools.profile: "coding"`, якщо значення не задано (наявні явні профілі зберігаються).
+Локальний onboarding типово задає для нових локальних конфігурацій `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` | Без обмежень (те саме, що й коли не задано) |
+| Профіль | Містить |
+| ---------- | -------------------------------------------------------------------------------------------------------------------------------- |
+| `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` | Без обмежень (те саме, що й без значення) |
### Групи інструментів
| Група | Інструменти |
| ------------------ | ---------------------------------------------------------------------------------------------------------------------- |
-| `group:runtime` | `exec`, `process`, `code_execution` (`bash` приймається як псевдонім для `exec`) |
+| `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` |
@@ -2211,11 +2212,11 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
| `group:nodes` | `nodes` |
| `group:agents` | `agents_list` |
| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
-| `group:openclaw` | Усі вбудовані інструменти (не включає Plugin провайдерів) |
+| `group:openclaw` | Усі вбудовані інструменти (без provider Plugin) |
### `tools.allow` / `tools.deny`
-Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Нечутлива до регістру, підтримує wildcard `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено.
+Глобальна політика allow/deny для інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard `*`. Застосовується навіть тоді, коли sandbox Docker вимкнено.
```json5
{
@@ -2241,7 +2242,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.elevated`
-Керує підвищеним доступом до `exec` поза sandbox:
+Керує доступом до elevated exec поза sandbox:
```json5
{
@@ -2257,9 +2258,9 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- Перевизначення для окремого агента (`agents.list[].tools.elevated`) може лише ще більше обмежувати.
+- Перевизначення для конкретного агента (`agents.list[].tools.elevated`) може лише додатково обмежувати.
- `/elevated on|off|ask|full` зберігає стан для кожної сесії; вбудовані директиви застосовуються до одного повідомлення.
-- Підвищений `exec` обходить sandboxing і використовує налаштований шлях виходу (`gateway` типово або `node`, коли ціль `exec` — `node`).
+- Elevated `exec` обходить sandbox-ізоляцію й використовує налаштований шлях виходу (`gateway` типово, або `node`, коли ціль exec — `node`).
### `tools.exec`
@@ -2284,7 +2285,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.loopDetection`
Перевірки безпеки циклів інструментів **типово вимкнені**. Установіть `enabled: true`, щоб увімкнути виявлення.
-Налаштування можна визначити глобально в `tools.loopDetection` і перевизначити для окремого агента в `agents.list[].tools.loopDetection`.
+Параметри можна задавати глобально в `tools.loopDetection` і перевизначати для конкретного агента в `agents.list[].tools.loopDetection`.
```json5
{
@@ -2306,11 +2307,11 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
```
- `historySize`: максимальна історія викликів інструментів, що зберігається для аналізу циклів.
-- `warningThreshold`: поріг повторюваного шаблону без прогресу для попереджень.
-- `criticalThreshold`: вищий поріг повторів для блокування критичних циклів.
+- `warningThreshold`: поріг повторюваних шаблонів без прогресу для попереджень.
+- `criticalThreshold`: вищий поріг повторення для блокування критичних циклів.
- `globalCircuitBreakerThreshold`: поріг жорсткої зупинки для будь-якого запуску без прогресу.
- `detectors.genericRepeat`: попереджати про повторні виклики того самого інструмента з тими самими аргументами.
-- `detectors.knownPollNoProgress`: попереджати/блокувати відомі polling-інструменти (`process.poll`, `command_status` тощо).
+- `detectors.knownPollNoProgress`: попереджати/блокувати відомі інструменти poll (`process.poll`, `command_status` тощо).
- `detectors.pingPong`: попереджати/блокувати шаблони чергування пар без прогресу.
- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, валідація завершується помилкою.
@@ -2382,28 +2383,28 @@ 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`: перевизначення id моделі
+- `profile` / `preferredProfile`: вибір профілю з `auth-profiles.json`
-**Запис CLI** (`type: "cli"`):
+**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`: перевизначення для конкретного запису.
-- У разі помилок використовується наступний запис.
+- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для кожного запису.
+- У разі помилки відбувається перехід до наступного запису.
-Автентифікація провайдера дотримується стандартного порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
+Автентифікація провайдера йде у стандартному порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
**Поля асинхронного завершення:**
- `asyncCompletion.directSend`: коли `true`, завершені асинхронні завдання `music_generate`
і `video_generate` спочатку намагаються доставитися безпосередньо в канал. Типове значення: `false`
- (застарілий шлях пробудження сесії запитувача/доставки моделі).
+ (застарілий шлях пробудження сесії запитувача/доставки моделлю).
@@ -2422,7 +2423,7 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
### `tools.sessions`
-Керує тим, на які сесії можуть націлюватися інструменти сесій (`sessions_list`, `sessions_history`, `sessions_send`).
+Керує тим, на які сесії можна націлюватися за допомогою інструментів сесій (`sessions_list`, `sessions_history`, `sessions_send`).
Типове значення: `tree` (поточна сесія + сесії, породжені нею, наприклад subagents).
@@ -2441,9 +2442,9 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
- `self`: лише ключ поточної сесії.
- `tree`: поточна сесія + сесії, породжені поточною сесією (subagents).
-- `agent`: будь-яка сесія, що належить поточному ID агента (може включати інших користувачів, якщо ви запускаєте сесії per-sender під тим самим ID агента).
+- `agent`: будь-яка сесія, що належить поточному id агента (може включати інших користувачів, якщо ви запускаєте сесії per-sender під тим самим id агента).
- `all`: будь-яка сесія. Націлювання між агентами все одно потребує `tools.agentToAgent`.
-- Обмеження sandbox: коли поточна сесія працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
+- Обмеження sandbox: коли поточна сесія працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, visibility примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
@@ -2468,15 +2469,15 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
Примітки:
- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP їх відхиляє.
-- Файли матеріалізуються в дочірньому workspace у `.openclaw/attachments//` із `.manifest.json`.
-- Вміст вкладень автоматично редагується в збереженому transcript.
-- Входи Base64 перевіряються строгими перевірками алфавіту/паддінгу та захистом розміру до декодування.
+- Файли матеріалізуються в workspace дочірньої сесії в `.openclaw/attachments//` із `.manifest.json`.
+- Вміст вкладень автоматично редагується в збереженні стенограми.
+- Base64-вхідні дані перевіряються суворою перевіркою алфавіту/відступів і захистом розміру до декодування.
- Права доступу до файлів: `0700` для каталогів і `0600` для файлів.
-- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише тоді, коли `retainOnSessionKeep: true`.
+- Очищення виконується згідно з політикою `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише тоді, коли `retainOnSessionKeep: true`.
### `tools.experimental`
-Експериментальні прапорці вбудованих інструментів. Типово вимкнено, якщо не застосовується правило автоувімкнення strict-agentic GPT-5.
+Прапорці експериментальних вбудованих інструментів. Типово вимкнені, якщо не спрацьовує правило автоматичного ввімкнення strict-agentic GPT-5.
```json5
{
@@ -2491,8 +2492,8 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
Примітки:
- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи.
-- Типове значення: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для окремого агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цією областю, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
-- Коли інструмент увімкнено, системний промпт також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й утримувала щонайбільше один крок у стані `in_progress`.
+- Типове значення: `false`, якщо тільки `agents.defaults.embeddedPi.executionContract` (або перевизначення для конкретного агента) не встановлено в `"strict-agentic"` для запуску OpenAI або OpenAI Codex сімейства GPT-5. Установіть `true`, щоб примусово ввімкнути інструмент поза цією областю, або `false`, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5.
+- Коли інструмент увімкнено, системний prompt також додає вказівки щодо використання, щоб модель використовувала його лише для суттєвої роботи й тримала не більш як один крок у стані `in_progress`.
### `agents.defaults.subagents`
@@ -2512,16 +2513,16 @@ scripts/sandbox-browser-setup.sh # необов’язковий образ б
}
```
-- `model`: типова модель для породжених субагентів. Якщо не задано, субагенти успадковують модель викликача.
-- `allowAgents`: типовий список дозволених ID цільових агентів для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; типово: лише той самий агент).
-- `runTimeoutSeconds`: типовий тайм-аут (у секундах) для `sessions_spawn`, коли виклик інструмента не містить `runTimeoutSeconds`. `0` означає без тайм-ауту.
-- Політика інструментів для субагентів: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
+- `model`: типова модель для породжених sub-agents. Якщо не встановлено, sub-agents успадковують модель викликувача.
+- `allowAgents`: типовий allowlist цільових id агентів для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; типово: лише той самий агент).
+- `runTimeoutSeconds`: типовий тайм-аут (у секундах) для `sessions_spawn`, коли виклик інструмента не передає `runTimeoutSeconds`. `0` означає відсутність тайм-ауту.
+- Політика інструментів для subagent: `tools.subagents.tools.allow` / `tools.subagents.tools.deny`.
---
-## Власні провайдери та base URL
+## Користувацькі провайдери та base URL
-OpenClaw використовує вбудований каталог моделей. Додавайте власних провайдерів через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`.
+OpenClaw використовує вбудований каталог моделей. Додавайте користувацьких провайдерів через `models.providers` у конфігурації або `~/.openclaw/agents//agent/models.json`.
```json5
{
@@ -2550,45 +2551,45 @@ OpenClaw використовує вбудований каталог модел
}
```
-- Використовуйте `authHeader: true` + `headers` для власних потреб автентифікації.
-- Перевизначайте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий псевдонім змінної середовища).
-- Пріоритет об’єднання для відповідних ID провайдерів:
- - Непорожні значення `baseUrl` з агентського `models.json` мають пріоритет.
- - Непорожні значення `apiKey` з агента мають пріоритет лише тоді, коли цим провайдером не керує SecretRef у поточному контексті конфігурації/auth-profile.
- - Значення `apiKey` провайдера, керовані через SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env-посилань, `secretref-managed` для file/exec-посилань) замість збереження визначених секретів.
- - Значення заголовків провайдера, керовані через SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env-посилань, `secretref-managed` для file/exec-посилань).
+- Використовуйте `authHeader: true` + `headers` для користувацьких потреб автентифікації.
+- Перевизначайте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий alias змінної середовища).
+- Пріоритет об’єднання для відповідних id провайдерів:
+ - Непорожні значення `baseUrl` з agent `models.json` мають пріоритет.
+ - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті config/auth-profile.
+ - Значення `apiKey` провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env-ref, `secretref-managed` для file/exec-ref) замість збереження визначених секретів.
+ - Значення заголовків провайдера, якими керує SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env-ref, `secretref-managed` для file/exec-ref).
- Порожні або відсутні `apiKey`/`baseUrl` агента повертаються до `models.providers` у конфігурації.
- - Для відповідних моделей `contextWindow`/`maxTokens` використовується більше значення між явною конфігурацією та неявними значеннями каталогу.
- - Для відповідних моделей `contextTokens` зберігає явне runtime-обмеження, коли воно є; використовуйте його, щоб обмежити фактичний контекст без зміни рідних метаданих моделі.
+ - Для відповідних моделей `contextWindow`/`maxTokens` використовується вище значення між явною конфігурацією та неявними значеннями каталогу.
+ - Для відповідних моделей `contextTokens` зберігає явне runtime-обмеження, коли воно є; використовуйте це, щоб обмежити фактичний контекст без зміни нативних метаданих моделі.
- Використовуйте `models.mode: "replace"`, коли хочете, щоб конфігурація повністю переписала `models.json`.
- - Збереження маркерів спирається на джерело як джерело істини: маркери записуються з активного знімка конфігурації джерела (до визначення), а не з визначених runtime-значень секретів.
+ - Збереження маркерів є джерелом істини: маркери записуються з активного знімка конфігурації джерела (до визначення значень), а не з визначених секретних значень runtime.
### Деталі полів провайдера
- `models.mode`: поведінка каталогу провайдерів (`merge` або `replace`).
-- `models.providers`: власна карта провайдерів із ключами за ID провайдера.
+- `models.providers`: карта користувацьких провайдерів, ключована за id провайдера.
- `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо).
-- `models.providers.*.apiKey`: облікові дані провайдера (краще використовувати підстановку SecretRef/env).
+- `models.providers.*.apiKey`: облікові дані провайдера (надавайте перевагу SecretRef/підстановці через env).
- `models.providers.*.auth`: стратегія автентифікації (`api-key`, `token`, `oauth`, `aws-sdk`).
- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вбудовує `options.num_ctx` у запити (типово: `true`).
- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, коли це потрібно.
-- `models.providers.*.baseUrl`: базова URL-адреса зовнішнього API.
-- `models.providers.*.headers`: додаткові статичні заголовки для proxy/маршрутизації tenant.
-- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів провайдера моделей.
+- `models.providers.*.baseUrl`: базовий URL API верхнього рівня.
+- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації proxy/tenant.
+- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів провайдера моделі.
- `request.headers`: додаткові заголовки (об’єднуються з типовими значеннями провайдера). Значення приймають SecretRef.
- `request.auth`: перевизначення стратегії автентифікації. Режими: `"provider-default"` (використовувати вбудовану автентифікацію провайдера), `"authorization-bearer"` (із `token`), `"header"` (із `headerName`, `value`, необов’язковим `prefix`).
- `request.proxy`: перевизначення HTTP proxy. Режими: `"env-proxy"` (використовувати змінні середовища `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (із `url`). Обидва режими приймають необов’язковий підоб’єкт `tls`.
- `request.tls`: перевизначення TLS для прямих з’єднань. Поля: `ca`, `cert`, `key`, `passphrase` (усі приймають SecretRef), `serverName`, `insecureSkipVerify`.
- - `request.allowPrivateNetwork`: коли `true`, дозволяє HTTPS до `baseUrl`, якщо DNS визначається в приватні, CGNAT або подібні діапазони, через захист SSRF HTTP fetch провайдера (opt-in оператора для довірених власноруч розміщених OpenAI-сумісних endpoint). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-захист fetch. Типове значення `false`.
+ - `request.allowPrivateNetwork`: коли `true`, дозволяє HTTPS до `baseUrl`, коли DNS визначається у приватні, CGNAT або подібні діапазони, через захист HTTP fetch провайдера (opt-in оператора для довірених self-hosted OpenAI-compatible endpoint). WebSocket використовує той самий `request` для заголовків/TLS, але не цей SSRF-захист fetch. Типове значення `false`.
- `models.providers.*.models`: явні записи каталогу моделей провайдера.
-- `models.providers.*.models.*.contextWindow`: метадані рідного вікна контексту моделі.
-- `models.providers.*.models.*.contextTokens`: необов’язкове runtime-обмеження контексту. Використовуйте це, коли хочете менший фактичний бюджет контексту, ніж рідне `contextWindow` моделі.
-- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` із непорожнім нерідним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає типову поведінку OpenAI.
-- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-сумісних chat-endpoint, що підтримують лише рядки. Коли значення `true`, OpenClaw сплощує масиви `messages[].content`, які містять лише текст, у звичайні рядки перед надсиланням запиту.
-- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань автоматичного виявлення Bedrock.
+- `models.providers.*.models.*.contextWindow`: метадані нативного вікна контексту моделі.
+- `models.providers.*.models.*.contextTokens`: необов’язкове runtime-обмеження контексту. Використовуйте це, коли хочете мати менший фактичний бюджет контексту, ніж нативний `contextWindow` моделі.
+- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це значення в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає типову поведінку OpenAI.
+- `models.providers.*.models.*.compat.requiresStringContent`: необов’язкова підказка сумісності для OpenAI-compatible chat endpoint, які приймають лише рядки. Коли `true`, OpenClaw перетворює масиви чисто текстового `messages[].content` на звичайні рядки перед надсиланням запиту.
+- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань auto-discovery для Bedrock.
- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути/вимкнути неявне виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.region`: регіон AWS для виявлення.
-- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр за ID провайдера для цільового виявлення.
+- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр provider-id для цільового виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: інтервал опитування для оновлення виявлення.
- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне вікно контексту для виявлених моделей.
- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість вихідних токенів для виявлених моделей.
@@ -2629,7 +2630,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.
@@ -2646,7 +2647,7 @@ OpenClaw використовує вбудований каталог модел
}
```
-Задайте `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`). Використовуйте посилання `opencode/...` для каталогу Zen або посилання `opencode-go/...` для каталогу Go. Скорочення: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`.
+Установіть `OPENCODE_API_KEY` (або `OPENCODE_ZEN_API_KEY`). Використовуйте посилання `opencode/...` для каталогу Zen або посилання `opencode-go/...` для каталогу Go. Скорочення: `openclaw onboard --auth-choice opencode-zen` або `openclaw onboard --auth-choice opencode-go`.
@@ -2663,11 +2664,11 @@ OpenClaw використовує вбудований каталог модел
}
```
-Задайте `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` приймаються як псевдоніми. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
+Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` приймаються як alias. Скорочення: `openclaw onboard --auth-choice zai-api-key`.
- Загальний endpoint: `https://api.z.ai/api/paas/v4`
-- Endpoint для кодування (типово): `https://api.z.ai/api/coding/paas/v4`
-- Для загального endpoint визначте власного провайдера з перевизначенням base URL.
+- Coding endpoint (типово): `https://api.z.ai/api/coding/paas/v4`
+- Для загального endpoint визначте користувацького провайдера з перевизначенням base URL.
@@ -2706,11 +2707,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`.
-Власні endpoint Moonshot оголошують сумісність використання потокової передачі на спільному
-транспорті `openai-completions`, і OpenClaw орієнтується на можливості endpoint,
-а не лише на вбудований ID провайдера.
+Нативні endpoint Moonshot заявляють сумісність потокового використання на спільному
+транспорті `openai-completions`, і OpenClaw прив’язує це до можливостей endpoint,
+а не лише до вбудованого id провайдера.
@@ -2732,7 +2733,7 @@ OpenClaw використовує вбудований каталог модел
-
+
```json5
{
@@ -2771,7 +2772,7 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
-
+
```json5
{
@@ -2807,12 +2808,12 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
}
```
-Задайте `MINIMAX_API_KEY`. Скорочення:
+Установіть `MINIMAX_API_KEY`. Скорочення:
`openclaw onboard --auth-choice minimax-global-api` або
`openclaw onboard --auth-choice minimax-cn-api`.
Каталог моделей типово містить лише M2.7.
-На Anthropic-сумісному шляху потокової передачі OpenClaw типово вимикає thinking MiniMax,
-якщо ви явно не задасте `thinking` самостійно. `/fast on` або
+На Anthropic-compatible потоковому шляху OpenClaw типово вимикає thinking MiniMax,
+якщо ви явно не встановите `thinking` самостійно. `/fast on` або
`params.fastMode: true` переписує `MiniMax-M2.7` на
`MiniMax-M2.7-highspeed`.
@@ -2820,7 +2821,7 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
-Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; залишайте hosted моделі об’єднаними для резервного переходу.
+Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; тримайте розміщені моделі об’єднаними для fallback.
@@ -2851,14 +2852,14 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
}
```
-- `allowBundled`: необов’язковий список дозволених лише для bundled Skills (керовані/workspace Skills не зачіпаються).
-- `load.extraDirs`: додаткові спільні корені Skills (найнижчий пріоритет).
-- `install.preferBrew`: коли значення true, віддавати перевагу інсталяторам Homebrew, якщо `brew`
- доступний, перед переходом до інших типів інсталяторів.
-- `install.nodeManager`: пріоритет менеджера Node для специфікацій
- `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`).
-- `entries..enabled: false` вимикає Skill, навіть якщо він bundled/установлений.
-- `entries..apiKey`: зручний параметр для Skills, які оголошують основну env-змінну (відкритий рядок або об’єкт SecretRef).
+- `allowBundled`: необов’язковий allowlist лише для bundled skills (керовані/workspace skills не зачіпаються).
+- `load.extraDirs`: додаткові спільні корені skills (найнижчий пріоритет).
+- `install.preferBrew`: коли true, надавати перевагу інсталяторам Homebrew, якщо `brew`
+ доступний, перш ніж переходити до інших типів інсталяторів.
+- `install.nodeManager`: бажаний node-інсталятор для специфікацій `metadata.openclaw.install`
+ (`npm` | `pnpm` | `yarn` | `bun`).
+- `entries..enabled: false` вимикає skill, навіть якщо він bundled/установлений.
+- `entries..apiKey`: зручне поле для skills, які оголошують основну env-змінну (відкритий рядок або об’єкт SecretRef).
---
@@ -2887,40 +2888,40 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
```
- Завантажується з `~/.openclaw/extensions`, `/.openclaw/extensions` і `plugins.load.paths`.
-- Виявлення приймає нативні Plugin OpenClaw, а також сумісні bundled Codex і bundled Claude, включно з bundled Claude стандартного макета без маніфесту.
-- **Зміни конфігурації потребують перезапуску gateway.**
-- `allow`: необов’язковий список дозволених (завантажуються лише перелічені Plugin). `deny` має пріоритет.
-- `plugins.entries..apiKey`: зручне поле API-ключа на рівні Plugin (коли Plugin це підтримує).
+- Виявлення приймає нативні Plugin OpenClaw, а також сумісні пакети Codex і Claude, включно з пакетами Claude стандартного компонування без manifest.
+- **Зміни конфігурації потребують перезапуску Gateway.**
+- `allow`: необов’язковий allowlist (завантажуються лише перелічені Plugin). `deny` має пріоритет.
+- `plugins.entries..apiKey`: зручне поле API key на рівні Plugin (коли Plugin це підтримує).
- `plugins.entries..env`: карта env-змінних у межах Plugin.
-- `plugins.entries..hooks.allowPromptInjection`: коли `false`, ядро блокує `before_prompt_build` та ігнорує поля, що змінюють промпт, із застарілого `before_agent_start`, зберігаючи водночас застарілі `modelOverride` і `providerOverride`. Застосовується до нативних хуків Plugin і підтримуваних каталогів хуків, що надаються bundled.
-- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для одного запуску фонових субагентів.
-- `plugins.entries..subagent.allowedModels`: необов’язковий список дозволених канонічних цілей `provider/model` для довірених перевизначень субагентів. Використовуйте `"*"`, лише якщо ви свідомо хочете дозволити будь-яку модель.
-- `plugins.entries..config`: об’єкт конфігурації, визначений Plugin (перевіряється схемою нативного Plugin OpenClaw, коли вона доступна).
-- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера web-fetch Firecrawl.
- - `apiKey`: API-ключ Firecrawl (приймає SecretRef). Резервно береться з `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілого `tools.web.fetch.firecrawl.apiKey` або env-змінної `FIRECRAWL_API_KEY`.
- - `baseUrl`: базова URL-адреса API Firecrawl (типово: `https://api.firecrawl.dev`).
+- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` та ігнорує поля legacy `before_agent_start`, що змінюють prompt, зберігаючи legacy `modelOverride` і `providerOverride`. Застосовується до нативних hook Plugin і підтримуваних каталогів hook, наданих пакетами.
+- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому Plugin запитувати перевизначення `provider` і `model` для окремого запуску фонових subagent.
+- `plugins.entries..subagent.allowedModels`: необов’язковий allowlist канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише тоді, коли ви свідомо хочете дозволити будь-яку модель.
+- `plugins.entries..config`: об’єкт конфігурації, визначений Plugin (валідується за схемою нативного Plugin OpenClaw, якщо вона доступна).
+- `plugins.entries.firecrawl.config.webFetch`: параметри провайдера web-fetch Firecrawl.
+ - `apiKey`: API key Firecrawl (приймає SecretRef). Повертається до `plugins.entries.firecrawl.config.webSearch.apiKey`, legacy `tools.web.fetch.firecrawl.apiKey` або env-змінної `FIRECRAWL_API_KEY`.
+ - `baseUrl`: базовий URL API Firecrawl (типово: `https://api.firecrawl.dev`).
- `onlyMainContent`: витягувати лише основний вміст сторінок (типово: `true`).
- `maxAgeMs`: максимальний вік кешу в мілісекундах (типово: `172800000` / 2 дні).
- `timeoutSeconds`: тайм-аут запиту scrape у секундах (типово: `60`).
-- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (веб-пошук Grok).
+- `plugins.entries.xai.config.xSearch`: параметри xAI X Search (Grok web search).
- `enabled`: увімкнути провайдера X Search.
- - `model`: модель Grok для пошуку (наприклад, `"grok-4-1-fast"`).
-- `plugins.entries.memory-core.config.dreaming`: налаштування dreaming пам’яті. Див. [Dreaming](/uk/concepts/dreaming) щодо фаз і порогів.
+ - `model`: модель Grok для пошуку (наприклад `"grok-4-1-fast"`).
+- `plugins.entries.memory-core.config.dreaming`: параметри memory dreaming. Фази й пороги див. у [Dreaming](/uk/concepts/dreaming).
- `enabled`: головний перемикач dreaming (типово `false`).
- - `frequency`: каденція Cron для кожного повного проходу dreaming (типово `"0 3 * * *"`).
- - політика фаз і пороги — це деталі реалізації (не користувацькі ключі конфігурації).
-- Повна конфігурація пам’яті міститься в [Memory configuration reference](/uk/reference/memory-config):
+ - `frequency`: розклад Cron для кожного повного циклу dreaming (типово `"0 3 * * *"`).
+ - політика фаз і пороги — це деталі реалізації (не ключі конфігурації для користувача).
+- Повна конфігурація пам’яті розміщена в [Довіднику з конфігурації пам’яті](/uk/reference/memory-config):
- `agents.defaults.memorySearch.*`
- `memory.backend`
- `memory.citations`
- `memory.qmd.*`
- `plugins.entries.memory-core.config.dreaming`
-- Увімкнені bundled Claude також можуть додавати вбудовані типові значення Pi з `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw.
-- `plugins.slots.memory`: вибрати ID активного Plugin пам’яті або `"none"`, щоб вимкнути Plugin пам’яті.
-- `plugins.slots.contextEngine`: вибрати ID активного Plugin рушія контексту; типово `"legacy"`, якщо ви не встановите й не виберете інший рушій.
+- Увімкнені Plugin-пакети Claude також можуть додавати вбудовані типові значення Pi з `settings.json`; OpenClaw застосовує їх як санітизовані параметри агента, а не як сирі латки конфігурації OpenClaw.
+- `plugins.slots.memory`: вибрати id активного Plugin пам’яті або `"none"`, щоб вимкнути Plugin пам’яті.
+- `plugins.slots.contextEngine`: вибрати id активного Plugin рушія контексту; типово `"legacy"`, якщо ви не встановите й не виберете інший рушій.
- `plugins.installs`: метадані встановлення, якими керує CLI і які використовуються `openclaw plugins update`.
- Містить `source`, `spec`, `sourcePath`, `installPath`, `version`, `resolvedName`, `resolvedVersion`, `resolvedSpec`, `integrity`, `shasum`, `resolvedAt`, `installedAt`.
- - Розглядайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI замість ручного редагування.
+ - Розглядайте `plugins.installs.*` як керований стан; надавайте перевагу командам CLI, а не ручним редагуванням.
Див. [Plugins](/uk/tools/plugin).
@@ -2963,29 +2964,29 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
```
- `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`.
-- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо значення не задано, тож навігація browser типово залишається строгою.
-- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви свідомо довіряєте навігації browser у приватній мережі.
-- У строгому режимі endpoint віддалених CDP-профілів (`profiles.*.cdpUrl`) під час перевірок досяжності/виявлення підпадають під те саме блокування приватної мережі.
-- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім.
-- У строгому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
-- Віддалені профілі працюють лише в режимі attach-only (start/stop/reset вимкнені).
+- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо значення не встановлено, тому навігація Browser типово залишається суворою.
+- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви свідомо довіряєте навігації Browser у приватній мережі.
+- У суворому режимі endpoint віддалених профілів CDP (`profiles.*.cdpUrl`) під час перевірок доступності/виявлення підпадають під те саме блокування приватної мережі.
+- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як legacy alias.
+- У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
+- Віддалені профілі працюють лише в режимі attach-only (start/stop/reset вимкнено).
- `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`.
- Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
- коли ваш провайдер надає прямий DevTools WebSocket URL.
+ Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявив `/json/version`; використовуйте WS(S),
+ коли ваш провайдер дає вам прямий URL DevTools WebSocket.
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися
- на вибраному хості або через підключений browser Node.
+ на вибраному хості або через підключений browser node.
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний
профіль браузера на базі Chromium, наприклад Brave або Edge.
- Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP:
- дії на основі snapshot/ref замість націлювання через CSS-селектори, хуки
- завантаження одного файла, відсутність перевизначення тайм-аутів діалогів, відсутність `wait --load networkidle`,
- а також відсутність `responsebody`, експорту PDF, перехоплення завантажень або пакетних дій.
-- Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно
+ дії на основі snapshot/ref замість націлювання через CSS-селектори, hook
+ завантаження одного файла, без перевизначень тайм-аутів діалогів, без `wait --load networkidle`,
+ а також без `responsebody`, експорту PDF, перехоплення завантажень чи пакетних дій.
+- Локально керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно
задавайте `cdpUrl` лише для віддаленого CDP.
- Порядок автовиявлення: типовий браузер, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Сервіс керування: лише loopback (порт визначається з `gateway.port`, типово `18791`).
-- `extraArgs` додає додаткові прапорці запуску до локального запуску Chromium (наприклад
- `--disable-gpu`, розміри вікна або прапорці налагодження).
+- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад
+ `--disable-gpu`, розмір вікна або діагностичні прапорці).
---
@@ -3003,8 +3004,8 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
}
```
-- `seamColor`: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки режиму Talk тощо).
-- `assistant`: перевизначення ідентичності для Control UI. Якщо не задано, використовується ідентичність активного агента.
+- `seamColor`: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо).
+- `assistant`: перевизначення identity для Control UI. Повертається до identity активного агента.
---
@@ -3074,63 +3075,63 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
- `mode`: `local` (запустити gateway) або `remote` (підключитися до віддаленого gateway). Gateway відмовляється запускатися, якщо не `local`.
-- `port`: єдиний мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`.
+- `port`: один мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`.
- `bind`: `auto`, `loopback` (типово), `lan` (`0.0.0.0`), `tailnet` (лише IP Tailscale) або `custom`.
-- **Застарілі псевдоніми bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хоста (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
-- **Примітка щодо Docker**: типовий bind `loopback` слухає `127.0.0.1` всередині контейнера. За bridge-мережі Docker (`-p 18789:18789`) трафік приходить на `eth0`, тому gateway недосяжний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` із `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
-- **Auth**: типово обов’язкова. Не-loopback bind-и вимагають auth gateway. На практиці це означає спільний token/password або reverse proxy з урахуванням identity із `gateway.auth.mode: "trusted-proxy"`. Майстер онбордингу типово генерує token.
-- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно з SecretRef), явно задайте `gateway.auth.mode` як `token` або `password`. Під час запуску, а також у потоках встановлення/відновлення сервісу, виникає помилка, якщо налаштовано обидва значення, а `mode` не задано.
-- `gateway.auth.mode: "none"`: явний режим без auth. Використовуйте лише для довірених локальних конфігурацій із local loopback; цей варіант навмисно не пропонується в запитах онбордингу.
-- `gateway.auth.mode: "trusted-proxy"`: делегувати auth reverse proxy з урахуванням identity і довіряти заголовкам identity із `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy loopback на тому ж хості не задовольняють auth trusted-proxy.
-- `gateway.auth.allowTailscale`: коли `true`, заголовки identity Tailscale Serve можуть задовольняти auth Control UI/WebSocket (перевіряється через `tailscale whois`). Endpoint HTTP API **не** використовують цю auth за заголовками Tailscale; вони натомість дотримуються звичайного режиму HTTP auth gateway. Цей потік без token припускає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`.
-- `gateway.auth.rateLimit`: необов’язкове обмеження невдалих спроб auth. Застосовується для кожного IP клієнта й для кожної області auth (спільний секрет і token пристрою відстежуються незалежно). Заблоковані спроби повертають `429` + `Retry-After`.
- - На асинхронному шляху Control UI Tailscale Serve невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом збою. Тому паралельні неправильні спроби від того самого клієнта можуть спрацювати на лімітер уже на другому запиті, замість того щоб обидві одночасно пройти як звичайні невідповідності.
- - `gateway.auth.rateLimit.exemptLoopback` типово дорівнює `true`; задайте `false`, якщо свідомо хочете також обмежувати трафік localhost (для тестових конфігурацій або строгих розгортань через proxy).
-- Спроби WS auth із browser-origin завжди обмежуються без винятку для loopback (захист у глибину від browser-атак brute force на localhost).
-- На loopback ці блокування для browser-origin ізолюються за нормалізованим значенням `Origin`,
- тож повторні збої з одного localhost-origin не призводять автоматично
- до блокування іншого origin.
+- **Застарілі alias для bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не alias хостів (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
+- **Примітка для Docker**: типовий bind `loopback` слухає `127.0.0.1` всередині контейнера. За bridge-мережі Docker (`-p 18789:18789`) трафік надходить на `eth0`, тому gateway недоступний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` із `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
+- **Auth**: типово обов’язкова. Bind, відмінні від loopback, потребують auth для gateway. На практиці це означає спільний token/password або identity-aware reverse proxy з `gateway.auth.mode: "trusted-proxy"`. Майстер onboarding типово генерує token.
+- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно з SecretRef), явно встановіть `gateway.auth.mode` в `token` або `password`. Потоки запуску й встановлення/відновлення сервісу завершуються помилкою, коли налаштовано обидва значення, а mode не задано.
+- `gateway.auth.mode: "none"`: явний режим без auth. Використовуйте лише для довірених локальних конфігурацій local loopback; цей варіант навмисно не пропонується в підказках onboarding.
+- `gateway.auth.mode: "trusted-proxy"`: делегувати auth identity-aware reverse proxy та довіряти заголовкам identity від `gateway.trustedProxies` (див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth)). Цей режим очікує **не-loopback** джерело proxy; reverse proxy loopback на тому ж хості не задовольняють auth trusted-proxy.
+- `gateway.auth.allowTailscale`: коли `true`, заголовки identity Tailscale Serve можуть задовольняти auth для Control UI/WebSocket (перевіряється через `tailscale whois`). Endpoint HTTP API **не** використовують цю auth через заголовки Tailscale; натомість вони дотримуються звичайного HTTP-режиму auth gateway. Цей режим без token передбачає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`.
+- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб auth. Застосовується для кожного IP клієнта і для кожної області auth (shared-secret і device-token відстежуються окремо). Заблоковані спроби повертають `429` + `Retry-After`.
+ - В асинхронному шляху Control UI Tailscale Serve невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом помилки. Тому конкурентні невдалі спроби від того самого клієнта можуть спровокувати обмежувач на другому запиті замість того, щоб обидві пройшли як звичайні розбіжності.
+ - `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; установіть `false`, коли ви свідомо хочете також обмежувати localhost-трафік (для тестових конфігурацій або суворих розгортань із proxy).
+- Спроби auth WS з походженням Browser завжди обмежуються без винятку для loopback (захист у глибину від браузерної brute force-атаки на localhost).
+- На loopback ці блокування за походженням Browser ізолюються за нормалізованим
+ значенням `Origin`, тому повторні збої з одного localhost-origin не
+ блокують автоматично інше origin.
- `tailscale.mode`: `serve` (лише tailnet, bind loopback) або `funnel` (публічний, потребує auth).
-- `controlUi.allowedOrigins`: явний список дозволених browser-origin для підключень Gateway WebSocket. Обов’язковий, коли очікуються browser-клієнти з не-loopback origin.
-- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає резервне визначення origin за Host-header для розгортань, які свідомо покладаються на політику origin за Host-header.
-- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`.
-- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське break-glass перевизначення, яке дозволяє відкритий `ws://` до довірених IP приватної мережі; типово відкритий текст і далі дозволено лише для loopback.
-- `gateway.remote.token` / `.password` — це поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують auth gateway.
-- `gateway.push.apns.relay.baseUrl`: базова HTTPS URL-адреса зовнішнього APNs relay, який використовують офіційні/TestFlight iOS-збірки після публікації relay-реєстрацій до gateway. Ця URL-адреса має збігатися з URL relay, скомпільованою в iOS-збірку.
-- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання від gateway до relay у мілісекундах. Типово `10000`.
-- Реєстрації на основі relay делегуються конкретній identity gateway. Спарений застосунок iOS отримує `gateway.identity.get`, включає цю identity до реєстрації relay і передає gateway дозвіл надсилання, прив’язаний до реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію.
+- `controlUi.allowedOrigins`: явний allowlist browser-origin для WebSocket-з’єднань Gateway. Обов’язковий, коли клієнти Browser очікуються з не-loopback origin.
+- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервне визначення origin через заголовок Host для розгортань, що свідомо покладаються на політику origin за заголовком Host.
+- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` `remote.url` має бути `ws://` або `wss://`.
+- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське break-glass перевизначення, яке дозволяє plaintext `ws://` до довірених IP приватної мережі; типово plaintext залишається лише для loopback.
+- `gateway.remote.token` / `.password` — це поля облікових даних віддаленого клієнта. Самі по собі вони не налаштовують auth gateway.
+- `gateway.push.apns.relay.baseUrl`: базовий HTTPS URL для зовнішнього relay APNs, який використовується офіційними/TestFlight збірками iOS після публікації relay-backed реєстрацій у gateway. Цей URL має збігатися з URL relay, скомпільованим у збірці iOS.
+- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання gateway-to-relay у мілісекундах. Типове значення `10000`.
+- Relay-backed реєстрації делегуються конкретній identity gateway. Спарений застосунок iOS викликає `gateway.identity.get`, включає цю identity в relay-реєстрацію та пересилає gateway грант на надсилання в межах цієї реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію.
- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові перевизначення через env для наведеної вище конфігурації relay.
-- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: лише для розробки, обхідний шлях для URL relay HTTP на loopback. У production URL relay мають залишатися на HTTPS.
-- `gateway.channelHealthCheckMinutes`: інтервал монітору здоров’я каналів у хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски монітором здоров’я. Типове значення: `5`.
-- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета в хвилинах. Тримайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. Типове значення: `30`.
-- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітором здоров’я на канал/обліковий запис за ковзну годину. Типове значення: `10`.
-- `channels..healthMonitor.enabled`: вимкнення перезапусків монітором здоров’я для конкретного каналу, зберігаючи глобальний монітор увімкненим.
-- `channels..accounts..healthMonitor.enabled`: перевизначення для окремого облікового запису в багатьохоблікових каналах. Якщо задано, має пріоритет над перевизначенням на рівні каналу.
-- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як резерв лише тоді, коли `gateway.auth.*` не задано.
-- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не визначено, визначення завершується із fail-closed (без маскування резервним `remote`).
-- `trustedProxies`: IP reverse proxy, які завершують TLS або вбудовують заголовки forwarded-client. Указуйте лише ті proxy, які ви контролюєте. Записи loopback і далі коректні для конфігурацій proxy/local-detection на тому ж хості (наприклад, Tailscale Serve або локальний reverse proxy), але вони **не** роблять loopback-запити придатними для `gateway.auth.mode: "trusted-proxy"`.
-- `allowRealIpFallback`: коли `true`, gateway приймає `X-Real-IP`, якщо відсутній `X-Forwarded-For`. Типово `false` для поведінки fail-closed.
-- `gateway.tools.deny`: додаткові імена інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список заборон).
-- `gateway.tools.allow`: вилучає імена інструментів із типового HTTP-списку заборон.
+- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: лише для розробки, аварійний варіант для loopback HTTP relay URL. Production relay URL мають залишатися на HTTPS.
+- `gateway.channelHealthCheckMinutes`: інтервал моніторингу здоров’я каналу в хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски монітором здоров’я. Типове значення: `5`.
+- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета в хвилинах. Зберігайте його більшим або рівним `gateway.channelHealthCheckMinutes`. Типове значення: `30`.
+- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітором здоров’я для каналу/облікового запису за ковзну годину. Типове значення: `10`.
+- `channels..healthMonitor.enabled`: opt-out для конкретного каналу щодо перезапусків монітором здоров’я при збереженні глобального монітора увімкненим.
+- `channels..accounts..healthMonitor.enabled`: перевизначення для конкретного облікового запису в багатoоблікових каналах. Якщо встановлено, має пріоритет над перевизначенням на рівні каналу.
+- Шляхи локальних викликів gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не встановлено.
+- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не визначено, визначення завершується fail-closed (без маскування резервним remote fallback).
+- `trustedProxies`: IP reverse proxy, які завершують TLS або вставляють заголовки пересланого клієнта. Указуйте лише proxy, якими ви керуєте. Записи loopback і далі валідні для виявлення proxy на тому ж хості/локального виявлення (наприклад Tailscale Serve або локальний reverse proxy), але вони **не** роблять loopback-запити придатними для `gateway.auth.mode: "trusted-proxy"`.
+- `allowRealIpFallback`: коли `true`, gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типове значення `false` для fail-closed-поведінки.
+- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список заборон).
+- `gateway.tools.allow`: прибирає назви інструментів із типового списку заборон HTTP.
-### OpenAI-сумісні endpoint
+### OpenAI-compatible endpoint
- Chat Completions: типово вимкнено. Увімкніть через `gateway.http.endpoints.chatCompletions.enabled: true`.
- Responses API: `gateway.http.endpoints.responses.enabled`.
-- Захист URL-входів Responses:
+- Посилення безпеки URL-входу для Responses:
- `gateway.http.endpoints.responses.maxUrlParts`
- `gateway.http.endpoints.responses.files.urlAllowlist`
- `gateway.http.endpoints.responses.images.urlAllowlist`
- Порожні списки allowlist трактуються як незадані; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false`
+ Порожні allowlist трактуються як невстановлені; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false`
і/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL.
-- Необов’язковий заголовок посилення захисту відповіді:
- - `gateway.http.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS-origin, які ви контролюєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
+- Необов’язковий заголовок посилення безпеки відповіді:
+ - `gateway.http.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS-origin, якими ви керуєте; див. [Trusted Proxy Auth](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
### Ізоляція кількох екземплярів
-Запускайте кілька gateway на одному хості з унікальними портами й каталогами стану:
+Запускайте кілька gateway на одному хості з унікальними портами та каталогами стану:
```bash
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \
@@ -3158,11 +3159,11 @@ openclaw gateway --port 19001
}
```
-- `enabled`: вмикає завершення TLS на listener gateway (HTTPS/WSS) (типово: `false`).
-- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовано; лише для local/dev використання.
-- `certPath`: шлях у файловій системі до файла TLS-сертифіката.
-- `keyPath`: шлях у файловій системі до приватного TLS-ключа; тримайте його з обмеженими правами доступу.
-- `caPath`: необов’язковий шлях до CA bundle для перевірки клієнта або власних ланцюжків довіри.
+- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типове значення: `false`).
+- `autoGenerate`: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовано; лише для локального/development використання.
+- `certPath`: шлях у файловій системі до файла сертифіката TLS.
+- `keyPath`: шлях у файловій системі до файла приватного ключа TLS; обмежте права доступу.
+- `caPath`: необов’язковий шлях до пакета CA для перевірки клієнта або користувацьких ланцюгів довіри.
### `gateway.reload`
@@ -3178,13 +3179,13 @@ openclaw gateway --port 19001
}
```
-- `mode`: керує тим, як під час runtime застосовуються зміни конфігурації.
- - `"off"`: ігнорувати live-зміни; зміни потребують явного перезапуску.
+- `mode`: керує тим, як зміни конфігурації застосовуються під час runtime.
+ - `"off"`: ігнорувати зміни наживо; потрібен явний перезапуск.
- `"restart"`: завжди перезапускати процес gateway при зміні конфігурації.
- - `"hot"`: застосовувати зміни в процесі без перезапуску.
- - `"hybrid"` (типово): спочатку пробувати hot reload; якщо потрібно — переходити до перезапуску.
-- `debounceMs`: debounce-вікно в мс перед застосуванням змін конфігурації (невід’ємне ціле число).
-- `deferralTimeoutMs`: максимальний час у мс, щоб чекати завершення поточних операцій перед примусовим перезапуском (типово: `300000` = 5 хвилин).
+ - `"hot"`: застосовувати зміни в межах процесу без перезапуску.
+ - `"hybrid"` (типово): спочатку спробувати hot reload; якщо потрібно, перейти до перезапуску.
+- `debounceMs`: вікно debounce в мс перед застосуванням змін конфігурації (невід’ємне ціле число).
+- `deferralTimeoutMs`: максимальний час у мс очікування поточних операцій перед примусовим перезапуском (типове значення: `300000` = 5 хвилин).
---
@@ -3222,36 +3223,36 @@ openclaw gateway --port 19001
```
Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
-Токени hook у рядку запиту відхиляються.
+Hook token у рядку запиту відхиляються.
Примітки щодо валідації та безпеки:
-- `hooks.enabled=true` потребує непорожній `hooks.token`.
+- `hooks.enabled=true` потребує непорожнього `hooks.token`.
- `hooks.token` має **відрізнятися** від `gateway.auth.token`; повторне використання token Gateway відхиляється.
- `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`.
-- Якщо `hooks.allowRequestSessionKey=true`, обмежуйте `hooks.allowedSessionKeyPrefixes` (наприклад, `["hook:"]`).
+- Якщо `hooks.allowRequestSessionKey=true`, обмежуйте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`).
-**Endpoint-и:**
+**Endpoint:**
- `POST /hooks/wake` → `{ text, mode?: "now"|"next-heartbeat" }`
- `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
- - `sessionKey` із payload запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (типово: `false`).
+ - `sessionKey` з payload запиту приймається лише тоді, коли `hooks.allowRequestSessionKey=true` (типово: `false`).
- `POST /hooks/` → визначається через `hooks.mappings`
-- `match.path` зіставляє підшлях після `/hooks` (наприклад, `/hooks/gmail` → `gmail`).
-- `match.source` зіставляє поле payload для загальних шляхів.
-- Шаблони на кшталт `{{messages[0].subject}}` читають дані з payload.
+- `match.path` відповідає підшляху після `/hooks` (наприклад `/hooks/gmail` → `gmail`).
+- `match.source` відповідає полю payload для загальних шляхів.
+- Шаблони на кшталт `{{messages[0].subject}}` читаються з payload.
- `transform` може вказувати на модуль JS/TS, який повертає дію hook.
- - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та traversal відхиляються).
-- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до типового агента.
+ - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи й traversal відхиляються).
+- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до типового.
- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або пропущено = дозволити всі, `[]` = заборонити всі).
- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків hook-агента без явного `sessionKey`.
-- `allowRequestSessionKey`: дозволити викликачам `/hooks/agent` задавати `sessionKey` (типово: `false`).
-- `allowedSessionKeyPrefixes`: необов’язковий список дозволених префіксів для явних значень `sessionKey` (запит + mapping), наприклад `["hook:"]`.
+- `allowRequestSessionKey`: дозволити викликачам `/hooks/agent` установлювати `sessionKey` (типово: `false`).
+- `allowedSessionKeyPrefixes`: необов’язковий allowlist префіксів для явних значень `sessionKey` (запит + mapping), наприклад `["hook:"]`.
- `deliver: true` надсилає фінальну відповідь у канал; `channel` типово дорівнює `last`.
-- `model` перевизначає LLM для цього запуску hook (має бути дозволена, якщо задано каталог моделей).
+- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо встановлено каталог моделей).
@@ -3283,7 +3284,7 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
---
-## Хост Canvas
+## Canvas host
```json5
{
@@ -3295,18 +3296,18 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- Обслуговує редаговані агентом HTML/CSS/JS і A2UI через HTTP на порту Gateway:
+- Обслуговує HTML/CSS/JS, які агент може редагувати, і A2UI через HTTP на порту Gateway:
- `http://:/__openclaw__/canvas/`
- `http://:/__openclaw__/a2ui/`
-- Лише локально: залишайте `gateway.bind: "loopback"` (типово).
-- Для не-loopback bind-ів маршрути canvas потребують auth Gateway (token/password/trusted-proxy), так само як і інші HTTP-поверхні Gateway.
-- Node WebView зазвичай не надсилають заголовки auth; після спарювання та підключення node Gateway оголошує URL можливостей у межах node для доступу до canvas/A2UI.
+- Лише локально: зберігайте `gateway.bind: "loopback"` (типово).
+- Bind, відмінні від loopback: маршрути canvas потребують auth Gateway (token/password/trusted-proxy), так само, як інші HTTP-поверхні Gateway.
+- Node WebView зазвичай не надсилають заголовки auth; після pair і підключення node Gateway рекламує URL можливостей, обмежені node, для доступу до canvas/A2UI.
- URL можливостей прив’язані до активної WS-сесії node і швидко спливають. Резервний варіант на основі IP не використовується.
-- Вбудовує клієнт live-reload в обслуговуваний HTML.
-- Автоматично створює стартовий `index.html`, якщо каталог порожній.
+- Вбудовує клієнт live-reload у HTML, що обслуговується.
+- Автоматично створює початковий `index.html`, якщо каталог порожній.
- Також обслуговує A2UI за адресою `/__openclaw__/a2ui/`.
- Зміни потребують перезапуску gateway.
-- Вимкніть live reload для великих каталогів або помилок `EMFILE`.
+- Вимкніть live reload для великих каталогів або при помилках `EMFILE`.
---
@@ -3324,8 +3325,8 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- `minimal` (типово): не включати `cliPath` + `sshPort` до TXT-записів.
-- `full`: включати `cliPath` + `sshPort`.
+- `minimal` (типово): не включає `cliPath` + `sshPort` у TXT-записи.
+- `full`: включає `cliPath` + `sshPort`.
- Ім’я хоста типово `openclaw`. Перевизначається через `OPENCLAW_MDNS_HOSTNAME`.
### Wide-area (DNS-SD)
@@ -3338,13 +3339,13 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-Записує unicast-зону DNS-SD у `~/.openclaw/dns/`. Для виявлення між мережами поєднуйте з DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
+Записує unicast DNS-SD zone у `~/.openclaw/dns/`. Для discovery між мережами поєднуйте з DNS-сервером (рекомендовано CoreDNS) + split DNS Tailscale.
Налаштування: `openclaw dns setup --apply`.
---
-## Середовище
+## Environment
### `env` (вбудовані env-змінні)
@@ -3363,10 +3364,10 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- Вбудовані env-змінні застосовуються лише тоді, коли в середовищі процесу відсутній ключ.
-- Файли `.env`: `.env` поточного робочого каталогу + `~/.openclaw/.env` (жоден із них не перевизначає наявні змінні).
-- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашого login shell.
-- Повний пріоритет див. у [Environment](/uk/help/environment).
+- Вбудовані env-змінні застосовуються лише тоді, коли в env процесу немає цього ключа.
+- Файли `.env`: `.env` у CWD + `~/.openclaw/.env` (жоден не перевизначає наявні змінні).
+- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell.
+- Повний порядок пріоритетів див. у [Environment](/uk/help/environment).
### Підстановка env-змінних
@@ -3380,7 +3381,7 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
}
```
-- Зіставляються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
+- Підставляються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
- Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації.
- Екрануйте через `$${VAR}` для буквального `${VAR}`.
- Працює з `$include`.
@@ -3389,7 +3390,7 @@ Auth: `Authorization: Bearer ` або `x-openclaw-token: `.
## Секрети
-SecretRef є адитивними: відкриті значення також і далі працюють.
+Посилання на секрети є додатковими: відкриті значення й далі працюють.
### `SecretRef`
@@ -3405,13 +3406,13 @@ SecretRef є адитивними: відкриті значення також
- шаблон `id` для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
- `id` для `source: "file"`: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`)
- шаблон `id` для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
-- `id` для `source: "exec"` не має містити slash-delimited сегментів шляху `.` або `..` (наприклад, `a/../b` відхиляється)
+- `id` для `source: "exec"` не повинні містити сегменти шляху `.` або `..`, розділені `/` (наприклад `a/../b` відхиляється)
### Підтримувана поверхня облікових даних
- Канонічна матриця: [SecretRef Credential Surface](/uk/reference/secretref-credential-surface)
- `secrets apply` націлюється на підтримувані шляхи облікових даних у `openclaw.json`.
-- Посилання в `auth-profiles.json` включені до runtime-визначення та охоплення аудиту.
+- Посилання в `auth-profiles.json` включені в runtime-визначення та audit coverage.
### Конфігурація провайдерів секретів
@@ -3443,13 +3444,13 @@ SecretRef є адитивними: відкриті значення також
Примітки:
-- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue значення `id` має бути `"value"`).
-- Провайдер `exec` потребує абсолютного шляху `command` і використовує протокольні payload через stdin/stdout.
-- Типово шляхи команд-символічних посилань відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи-символічні посилання з перевіркою шляху визначеної цілі.
-- Якщо налаштовано `trustedDirs`, перевірка довірених каталогів застосовується до шляху визначеної цілі.
+- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (у режимі singleValue `id` має бути `"value"`).
+- Провайдер `exec` потребує абсолютного шляху `command` і використовує protocol payload у stdin/stdout.
+- Типово symlink-шляхи команд відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити symlink-шляхи з перевіркою шляху до визначеної цілі.
+- Якщо налаштовано `trustedDirs`, перевірка trusted-dir застосовується до шляху визначеної цілі.
- Середовище дочірнього процесу `exec` типово мінімальне; явно передавайте потрібні змінні через `passEnv`.
-- SecretRef визначаються під час активації в знімок у пам’яті, після чого шляхи запитів читають лише цей знімок.
-- Під час активації застосовується фільтрація активної поверхні: невизначені посилання на ввімкнених поверхнях призводять до збою запуску/reload, тоді як неактивні поверхні пропускаються з діагностикою.
+- Посилання на секрети визначаються під час активації у знімок у пам’яті, після чого шляхи запитів читають лише цей знімок.
+- Під час активації застосовується фільтрація активної поверхні: невизначені посилання на увімкнених поверхнях призводять до помилки запуску/reload, тоді як неактивні поверхні пропускаються з діагностикою.
---
@@ -3471,10 +3472,10 @@ SecretRef є адитивними: відкриті значення також
}
```
-- Профілі для окремого агента зберігаються в `/auth-profiles.json`.
+- Профілі для конкретного агента зберігаються в `/auth-profiles.json`.
- `auth-profiles.json` підтримує посилання на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних.
-- Профілі режиму OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані профілів auth на основі SecretRef.
-- Статичні runtime-облікові дані надходять із визначених знімків у пам’яті; застарілі статичні записи `auth.json` очищаються при виявленні.
+- Профілі режиму OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані auth-profile на базі SecretRef.
+- Статичні runtime-облікові дані надходять із визначених знімків у пам’яті; застарілі статичні записи `auth.json` очищуються при виявленні.
- Застарілі імпорти OAuth із `~/.openclaw/credentials/oauth.json`.
- Див. [OAuth](/uk/concepts/oauth).
- Поведінка runtime секретів і інструменти `audit/configure/apply`: [Secrets Management](/uk/gateway/secrets).
@@ -3499,24 +3500,24 @@ SecretRef є адитивними: відкриті значення також
}
```
-- `billingBackoffHours`: базова затримка в годинах, коли профіль не проходить через справжні
- помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст про білінг
- усе одно може потрапляти сюди навіть на відповідях `401`/`403`, але текстові
- зіставлювачі, специфічні для провайдера, залишаються в межах свого провайдера (наприклад, OpenRouter
- `Key limit exceeded`). Відтворювані повідомлення HTTP `402` про вікно використання або
- ліміти витрат organization/workspace натомість залишаються на шляху `rate_limit`.
-- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин затримки білінгу для конкретного провайдера.
-- `billingMaxHours`: обмеження в годинах для експоненційного зростання затримки білінгу (типово: `24`).
-- `authPermanentBackoffMinutes`: базова затримка в хвилинах для високовпевнених збоїв `auth_permanent` (типово: `10`).
-- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання затримки `auth_permanent` (типово: `60`).
-- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників затримки (типово: `24`).
-- `overloadedProfileRotations`: максимальна кількість ротацій auth-профілю в межах того самого провайдера для помилок перевантаження перед переходом до резервної моделі (типово: `1`). Форми на кшталт `ModelNotReadyException`, що означають зайнятість провайдера, потрапляють сюди.
+- `billingBackoffHours`: базовий backoff у годинах, коли профіль завершується помилкою через справжні
+ billing-помилки/недостатній кредит (типово: `5`). Явний текст про billing усе ще може
+ потрапити сюди навіть на відповідях `401`/`403`, але текстові
+ matcher провайдера лишаються обмеженими провайдером, якому вони належать (наприклад OpenRouter
+ `Key limit exceeded`). Повторно придатні HTTP `402` повідомлення про вікно використання або
+ spend-limit організації/workspace замість цього лишаються в шляху `rate_limit`.
+- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин billing backoff для конкретного провайдера.
+- `billingMaxHours`: обмеження в годинах для експоненційного зростання billing backoff (типово: `24`).
+- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для high-confidence збоїв `auth_permanent` (типово: `10`).
+- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання backoff `auth_permanent` (типово: `60`).
+- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників backoff (типово: `24`).
+- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для помилок перевантаження перед переходом до model fallback (типово: `1`). Форми провайдера на кшталт `ModelNotReadyException` потрапляють сюди.
- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого провайдера/профілю (типово: `0`).
-- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-профілю в межах того самого провайдера для помилок rate-limit перед переходом до резервної моделі (типово: `1`). До цього кошика rate-limit належить і текст, специфічний для провайдера, такий як `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
+- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для помилок rate-limit перед переходом до model fallback (типово: `1`). Цей bucket rate-limit включає текстові форми провайдера на кшталт `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
---
-## Логування
+## Logging
```json5
{
@@ -3531,10 +3532,10 @@ SecretRef є адитивними: відкриті значення також
}
```
-- Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
-- Задайте `logging.file` для стабільного шляху.
-- `consoleLevel` підвищується до `debug`, коли використовується `--verbose`.
-- `maxFileBytes`: максимальний розмір файла журналу в байтах, після якого запис припиняється (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів.
+- Типовий лог-файл: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
+- Установіть `logging.file` для стабільного шляху.
+- `consoleLevel` підвищується до `debug` при `--verbose`.
+- `maxFileBytes`: максимальний розмір лог-файлу в байтах, після якого записи припиняються (додатне ціле число; типово: `524288000` = 500 MB). Для production-розгортань використовуйте зовнішню ротацію логів.
---
@@ -3572,18 +3573,18 @@ SecretRef є адитивними: відкриті значення також
```
- `enabled`: головний перемикач для виводу інструментування (типово: `true`).
-- `flags`: масив рядків прапорців, що вмикають цільовий вивід журналу (підтримує wildcard, як-от `"telegram.*"` або `"*"`).
-- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислі сесії, поки сесія залишається у стані обробки.
-- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`).
-- `otel.endpoint`: URL колектора для експорту OTel.
+- `flags`: масив рядків-прапорців, що вмикають цільовий вивід логів (підтримує wildcard, як-от `"telegram.*"` або `"*"`).
+- `stuckSessionWarnMs`: поріг віку в мс для виведення попереджень про завислі сесії, поки сесія залишається в стані обробки.
+- `otel.enabled`: вмикає pipeline експорту OpenTelemetry (типово: `false`).
+- `otel.endpoint`: URL collector для експорту OTel.
- `otel.protocol`: `"http/protobuf"` (типово) або `"grpc"`.
- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються із запитами експорту OTel.
- `otel.serviceName`: назва сервісу для атрибутів ресурсу.
-- `otel.traces` / `otel.metrics` / `otel.logs`: увімкнути експорт трасувань, метрик або журналів.
-- `otel.sampleRate`: коефіцієнт семплювання трасувань `0`–`1`.
-- `otel.flushIntervalMs`: інтервал періодичного скидання телеметрії в мс.
-- `cacheTrace.enabled`: логувати знімки cache trace для вбудованих запусків (типово: `false`).
-- `cacheTrace.filePath`: шлях виводу для JSONL cache trace (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
+- `otel.traces` / `otel.metrics` / `otel.logs`: увімкнути експорт trace, metrics або log.
+- `otel.sampleRate`: частота вибірки trace `0`–`1`.
+- `otel.flushIntervalMs`: періодичний інтервал flush телеметрії в мс.
+- `cacheTrace.enabled`: логувати знімки trace кешу для вбудованих запусків (типово: `false`).
+- `cacheTrace.filePath`: шлях виводу для cache trace JSONL (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід cache trace (усі типово: `true`).
---
@@ -3608,7 +3609,7 @@ SecretRef є адитивними: відкриті значення також
- `channel`: канал релізів для встановлень npm/git — `"stable"`, `"beta"` або `"dev"`.
- `checkOnStart`: перевіряти оновлення npm під час запуску gateway (типово: `true`).
-- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (типово: `false`).
+- `auto.enabled`: увімкнути фонове автооновлення для встановлень пакетів (типово: `false`).
- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням stable-каналу (типово: `6`; максимум: `168`).
- `auto.stableJitterHours`: додаткове вікно розподілу розгортання stable-каналу в годинах (типово: `12`; максимум: `168`).
- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу, у годинах (типово: `1`; максимум: `24`).
@@ -3645,21 +3646,21 @@ SecretRef є адитивними: відкриті значення також
```
- `enabled`: глобальний feature gate для ACP (типово: `false`).
-- `dispatch.enabled`: незалежний gate для dispatch ходів сесій ACP (типово: `true`). Установіть `false`, щоб залишити команди ACP доступними, але заблокувати виконання.
-- `backend`: ID типового runtime-backend ACP (має відповідати зареєстрованому runtime Plugin ACP).
-- `defaultAgent`: резервний ID цільового агента ACP, коли spawn-и не задають явну ціль.
-- `allowedAgents`: список дозволених ID агентів для runtime-сесій ACP; порожнє значення означає відсутність додаткових обмежень.
-- `maxConcurrentSessions`: максимальна кількість одночасно активних сесій ACP.
-- `stream.coalesceIdleMs`: idle-вікно скидання в мс для потокового тексту.
-- `stream.maxChunkChars`: максимальний розмір частини перед розбиттям проєкції потокового блока.
-- `stream.repeatSuppression`: пригнічувати повторні рядки статусу/інструментів на хід (типово: `true`).
-- `stream.deliveryMode`: `"live"` передає потоково поступово; `"final_only"` буферизує до термінальних подій ходу.
+- `dispatch.enabled`: незалежний gate для dispatch ходів ACP-сесії (типово: `true`). Установіть `false`, щоб залишити ACP-команди доступними, але заблокувати виконання.
+- `backend`: id типового runtime-бекенда ACP (має збігатися із зареєстрованим Plugin runtime ACP).
+- `defaultAgent`: резервний id цільового агента ACP, коли під час spawn не вказано явну ціль.
+- `allowedAgents`: allowlist id агентів, дозволених для runtime-сесій ACP; порожнє значення означає відсутність додаткових обмежень.
+- `maxConcurrentSessions`: максимальна кількість одночасно активних ACP-сесій.
+- `stream.coalesceIdleMs`: вікно idle flush у мс для потокового тексту.
+- `stream.maxChunkChars`: максимальний розмір частини перед поділом потокової проєкції блока.
+- `stream.repeatSuppression`: пригнічувати повторювані рядки статусу/інструментів для кожного ходу (типово: `true`).
+- `stream.deliveryMode`: `"live"` передає потік поступово; `"final_only"` буферизує до термінальних подій ходу.
- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструментів (типово: `"paragraph"`).
-- `stream.maxOutputChars`: максимальна кількість символів виводу помічника, що проєктується за один хід ACP.
-- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлень ACP.
-- `stream.tagVisibility`: запис із назвами тегів і булевими перевизначеннями видимості для потокових подій.
-- `runtime.ttlMinutes`: idle TTL у хвилинах для працівників сесій ACP до того, як вони підлягатимуть очищенню.
-- `runtime.installCommand`: необов’язкова команда встановлення для запуску під час bootstrap середовища runtime ACP.
+- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, що проєктується за хід ACP.
+- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлення ACP.
+- `stream.tagVisibility`: запис назв тегів у булеві перевизначення видимості для потокових подій.
+- `runtime.ttlMinutes`: idle TTL у хвилинах для worker сесій ACP до моменту, коли вони стають придатними для очищення.
+- `runtime.installCommand`: необов’язкова команда встановлення, яку слід запускати під час bootstrap середовища runtime ACP.
---
@@ -3675,17 +3676,17 @@ SecretRef є адитивними: відкриті значення також
}
```
-- `cli.banner.taglineMode` керує стилем tagline у banner:
- - `"random"` (типово): ротаційні кумедні/сезонні tagline.
- - `"default"`: фіксований нейтральний tagline (`All your chats, one OpenClaw.`).
- - `"off"`: без тексту tagline (назва/версія banner усе одно показуються).
-- Щоб приховати весь banner (а не лише tagline), задайте env `OPENCLAW_HIDE_BANNER=1`.
+- `cli.banner.taglineMode` керує стилем слогана банера:
+ - `"random"` (типово): змінні кумедні/сезонні слогани.
+ - `"default"`: фіксований нейтральний слоган (`All your chats, one OpenClaw.`).
+ - `"off"`: без тексту слогана (назва банера/версія все одно показуються).
+- Щоб приховати весь банер (а не лише слогани), установіть env `OPENCLAW_HIDE_BANNER=1`.
---
## Wizard
-Метадані, записані керованими CLI потоками налаштування (`onboard`, `configure`, `doctor`):
+Метадані, які записують потоки керованого налаштування CLI (`onboard`, `configure`, `doctor`):
```json5
{
@@ -3701,13 +3702,13 @@ SecretRef є адитивними: відкриті значення також
---
-## Ідентичність
+## Identity
-Див. поля identity в `agents.list` у розділі [Значення агентів за замовчуванням](#agent-defaults).
+Див. поля identity в `agents.list` у розділі [Типові значення агента](#agent-defaults).
---
-## Bridge (застарілий, вилучений)
+## Bridge (legacy, видалено)
Поточні збірки більше не містять TCP bridge. Node підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде видалено; `openclaw doctor --fix` може прибрати невідомі ключі).
@@ -3749,11 +3750,11 @@ SecretRef є адитивними: відкриті значення також
}
```
-- `sessionRetention`: як довго зберігати завершені ізольовані сесії запусків Cron перед видаленням із `sessions.json`. Також керує очищенням архівованих видалених транскриптів Cron. Типове значення: `24h`; установіть `false`, щоб вимкнути.
-- `runLog.maxBytes`: максимальний розмір файла журналу на запуск (`cron/runs/.jsonl`) перед обрізанням. Типове значення: `2_000_000` байтів.
-- `runLog.keepLines`: найновіші рядки, що зберігаються, коли спрацьовує обрізання журналу запуску. Типове значення: `2000`.
-- `webhookToken`: bearer token, що використовується для доставки POST до Cron Webhook (`delivery.mode = "webhook"`); якщо не задано, заголовок auth не надсилається.
-- `webhook`: застаріла резервна URL-адреса legacy Webhook (http/https), яка використовується лише для збережених завдань, що все ще мають `notify: true`.
+- `sessionRetention`: як довго зберігати завершені ізольовані сесії запусків cron перед очищенням із `sessions.json`. Також керує очищенням архівованих видалених стенограм cron. Типове значення: `24h`; установіть `false`, щоб вимкнути.
+- `runLog.maxBytes`: максимальний розмір файла журналу одного запуску (`cron/runs/.jsonl`) перед очищенням. Типове значення: `2_000_000` байтів.
+- `runLog.keepLines`: кількість найновіших рядків, що зберігаються, коли спрацьовує очищення журналу запуску. Типове значення: `2000`.
+- `webhookToken`: bearer token, що використовується для доставки cron webhook POST (`delivery.mode = "webhook"`); якщо не вказано, заголовок auth не надсилається.
+- `webhook`: застарілий legacy fallback URL webhook (http/https), який використовується лише для збережених завдань, що досі мають `notify: true`.
### `cron.retry`
@@ -3769,11 +3770,11 @@ SecretRef є адитивними: відкриті значення також
}
```
-- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (типово: `3`; діапазон: `0`–`10`).
-- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 1–10 записів).
-- `retryOn`: типи помилок, що запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Пропустіть, щоб повторювати всі тимчасові типи.
+- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (типове значення: `3`; діапазон: `0`–`10`).
+- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типове значення: `[30000, 60000, 300000]`; 1–10 записів).
+- `retryOn`: типи помилок, які запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Пропустіть, щоб повторювати всі тимчасові типи.
-Застосовується лише до одноразових Cron-завдань. Для повторюваних завдань використовується окрема обробка збоїв.
+Застосовується лише до одноразових cron-завдань. Повторювані завдання використовують окрему обробку збоїв.
### `cron.failureAlert`
@@ -3791,11 +3792,11 @@ SecretRef є адитивними: відкриті значення також
}
```
-- `enabled`: увімкнути сповіщення про збої для Cron-завдань (типово: `false`).
-- `after`: кількість послідовних збоїв до спрацювання сповіщення (додатне ціле число, мінімум: `1`).
-- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число).
-- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` робить POST на налаштований Webhook.
-- `accountId`: необов’язковий ID облікового запису або каналу для визначення області доставки сповіщення.
+- `enabled`: увімкнути попередження про збої для cron-завдань (типово: `false`).
+- `after`: кількість послідовних збоїв перед спрацюванням попередження (додатне ціле число, мінімум: `1`).
+- `cooldownMs`: мінімальна кількість мілісекунд між повторними попередженнями для того самого завдання (невід’ємне ціле число).
+- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` надсилає POST на налаштований webhook.
+- `accountId`: необов’язковий id облікового запису або каналу для обмеження доставки попередження.
### `cron.failureDestination`
@@ -3812,49 +3813,49 @@ SecretRef є адитивними: відкриті значення також
}
```
-- Типова ціль для сповіщень про збої Cron для всіх завдань.
-- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних про ціль.
+- Типове місце призначення для сповіщень про збої cron у всіх завданнях.
+- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних цілі.
- `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки.
-- `to`: явна ціль announce або URL-адреса Webhook. Обов’язково для режиму webhook.
+- `to`: явна announce-ціль або URL webhook. Обов’язково для режиму webhook.
- `accountId`: необов’язкове перевизначення облікового запису для доставки.
-- `delivery.failureDestination` для окремого завдання перевизначає це глобальне типове значення.
-- Коли не задано ні глобальну, ні специфічну для завдання ціль збою, завдання, які вже доставляють через `announce`, під час збою повертаються до цієї основної announce-цілі.
-- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо тільки основний `delivery.mode` самого завдання не дорівнює `"webhook"`.
+- `delivery.failureDestination` для конкретного завдання перевизначає це глобальне типове значення.
+- Коли не встановлено ні глобальне, ні для конкретного завдання місце призначення збою, завдання, які вже доставляють через `announce`, у разі збою повертаються до цієї основної announce-цілі.
+- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо тільки основний `delivery.mode` завдання не дорівнює `"webhook"`.
-Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані виконання Cron відстежуються як [фонові завдання](/uk/automation/tasks).
+Див. [Cron Jobs](/uk/automation/cron-jobs). Ізольовані cron-виконання відстежуються як [фонові завдання](/uk/automation/tasks).
---
## Змінні шаблону моделі медіа
-Placeholder-и шаблону, які розгортаються в `tools.media.models[].args`:
+Заповнювачі шаблону, які розгортаються в `tools.media.models[].args`:
-| Змінна | Опис |
-| ----------------- | ----------------------------------------------- |
-| `{{Body}}` | Повний текст вхідного повідомлення |
-| `{{RawBody}}` | Сирий текст (без обгорток історії/відправника) |
-| `{{BodyStripped}}`| Текст без згадок у групі |
-| `{{From}}` | Ідентифікатор відправника |
-| `{{To}}` | Ідентифікатор цілі |
-| `{{MessageSid}}` | ID повідомлення каналу |
-| `{{SessionId}}` | UUID поточної сесії |
-| `{{IsNewSession}}`| `"true"`, коли створено нову сесію |
-| `{{MediaUrl}}` | Псевдо-URL вхідного медіа |
-| `{{MediaPath}}` | Локальний шлях до медіа |
-| `{{MediaType}}` | Тип медіа (image/audio/document/…) |
-| `{{Transcript}}` | Аудіотранскрипт |
-| `{{Prompt}}` | Визначений медіа-промпт для записів CLI |
-| `{{MaxChars}}` | Визначена максимальна кількість вихідних символів для записів CLI |
-| `{{ChatType}}` | `"direct"` або `"group"` |
-| `{{GroupSubject}}`| Тема групи (best effort) |
+| Змінна | Опис |
+| ----------------- | ------------------------------------------------- |
+| `{{Body}}` | Повне тіло вхідного повідомлення |
+| `{{RawBody}}` | Сире тіло (без обгорток історії/відправника) |
+| `{{BodyStripped}}`| Тіло без групових згадувань |
+| `{{From}}` | Ідентифікатор відправника |
+| `{{To}}` | Ідентифікатор цілі |
+| `{{MessageSid}}` | id повідомлення каналу |
+| `{{SessionId}}` | UUID поточної сесії |
+| `{{IsNewSession}}`| `"true"`, коли створено нову сесію |
+| `{{MediaUrl}}` | Псевдо-URL вхідного медіа |
+| `{{MediaPath}}` | Локальний шлях до медіа |
+| `{{MediaType}}` | Тип медіа (image/audio/document/…) |
+| `{{Transcript}}` | Аудіостенограма |
+| `{{Prompt}}` | Визначений media prompt для CLI-записів |
+| `{{MaxChars}}` | Визначена максимальна кількість вихідних символів для CLI-записів |
+| `{{ChatType}}` | `"direct"` або `"group"` |
+| `{{GroupSubject}}`| Назва групи (best effort) |
| `{{GroupMembers}}`| Попередній перегляд учасників групи (best effort) |
-| `{{SenderName}}` | Відображуване ім’я відправника (best effort) |
-| `{{SenderE164}}` | Номер телефону відправника (best effort) |
+| `{{SenderName}}` | Відображуване ім’я відправника (best effort) |
+| `{{SenderE164}}` | Номер телефону відправника (best effort) |
| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) |
---
-## Включення конфігурації (`$include`)
+## Include конфігурації (`$include`)
Розбивайте конфігурацію на кілька файлів:
@@ -3871,12 +3872,12 @@ Placeholder-и шаблону, які розгортаються в `tools.media
**Поведінка об’єднання:**
-- Один файл: замінює об’єкт, у якому міститься.
-- Масив файлів: глибоко об’єднується за порядком (пізніші значення перевизначають попередні).
+- Один файл: замінює об’єкт-контейнер.
+- Масив файлів: глибоко об’єднується по порядку (пізніші перевизначають раніші).
- Сусідні ключі: об’єднуються після include (перевизначають включені значення).
-- Вкладені include: до 10 рівнів глибини.
-- Шляхи: визначаються відносно файла, що включає, але мають залишатися всередині каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/форми з `../` дозволені лише тоді, коли вони все одно визначаються в межах цієї межі.
-- Помилки: чіткі повідомлення для відсутніх файлів, помилок розбору та циклічних include.
+- Вкладені include: до 10 рівнів вкладеності.
+- Шляхи: визначаються відносно файла, який виконує include, але мають залишатися всередині каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/`../` дозволені лише тоді, коли вони все одно визначаються в межах цього кордону.
+- Помилки: зрозумілі повідомлення для відсутніх файлів, помилок розбору й циклічних include.
---