diff --git a/docs/uk/automation/tasks.md b/docs/uk/automation/tasks.md
index a266601d3..a21063ed0 100644
--- a/docs/uk/automation/tasks.md
+++ b/docs/uk/automation/tasks.md
@@ -1,48 +1,44 @@
---
read_when:
- - Перевірка фонового процесу, що виконується або нещодавно завершився
+ - Перевірка фонової роботи, яка виконується або була нещодавно завершена
- Налагодження збоїв доставки для відокремлених запусків агентів
- - Розуміння того, як фонові запуски пов’язані із сесіями, cron і heartbeat
-summary: Відстеження фонових завдань для запусків ACP, субагентів, ізольованих cron-завдань і CLI-операцій
+ - Розуміння того, як фонові запуски пов’язані із сеансами, cron і heartbeat
+summary: Відстеження фонових завдань для запусків ACP, субагентів, ізольованих cron-завдань і операцій CLI
title: Фонові завдання
x-i18n:
- generated_at: "2026-04-06T00:20:37Z"
+ generated_at: "2026-04-06T02:31:25Z"
model: gpt-5.4
provider: openai
- source_hash: 5fc757b30e2d9c1b5c4d9c8ff21cdc406835af207a83ee6076b63c348ad07781
+ source_hash: 2f56c1ac23237907a090c69c920c09578a2f56f5d8bf750c7f2136c603c8a8ff
source_path: automation/tasks.md
workflow: 15
---
# Фонові завдання
-> **Шукаєте планування?** Див. [Автоматизація й завдання](/uk/automation), щоб вибрати правильний механізм. Ця сторінка описує **відстеження** фонової роботи, а не її планування.
+> **Шукаєте планування?** Перегляньте [Automation & Tasks](/uk/automation), щоб вибрати правильний механізм. Ця сторінка описує **відстеження** фонової роботи, а не її планування.
-Фонові завдання відстежують роботу, що виконується **поза межами вашої основної сесії розмови**:
+Фонові завдання відстежують роботу, яка виконується **поза межами вашого основного сеансу розмови**:
запуски ACP, запуск субагентів, виконання ізольованих cron-завдань і операції, ініційовані через CLI.
-Завдання **не** замінюють сесії, cron-завдання або heartbeat — це **журнал активності**, який фіксує, яка відокремлена робота відбулася, коли саме і чи була вона успішною.
+Завдання **не** замінюють сеанси, cron-завдання або heartbeat — це **журнал активності**, який фіксує, яка відокремлена робота відбулася, коли саме та чи була вона успішною.
-Не кожен запуск агента створює завдання. Цикли heartbeat і звичайний інтерактивний чат — ні. Усі виконання cron, запуски ACP, запуски субагентів і CLI-команди агента — так.
+Не кожен запуск агента створює завдання. Повороти heartbeat і звичайний інтерактивний чат цього не роблять. Усі виконання cron, запуски ACP, запуски субагентів і команди агента CLI це роблять.
## Коротко
-- Завдання — це **записи**, а не планувальники: cron і heartbeat визначають, _коли_ виконується робота, а завдання відстежують, _що сталося_.
-- ACP, субагенти, усі cron-завдання та CLI-операції створюють завдання. Цикли heartbeat — ні.
-- Кожне завдання проходить через `queued → running → terminal` (`succeeded`, `failed`, `timed_out`, `cancelled` або `lost`).
-- Cron-завдання залишаються активними, доки середовище виконання cron усе ще володіє завданням; CLI-завдання з чат-підтримкою залишаються активними лише доки контекст виконання, якому вони належать, усе ще активний.
-- Завершення працює за push-моделлю: відокремлена робота може напряму сповістити або пробудити
- сесію запитувача/heartbeat після завершення, тому цикли опитування стану зазвичай є
- неправильним підходом.
-- Ізольовані запуски cron і завершення субагентів у межах best-effort очищають відстежувані вкладки браузера/процеси для своєї дочірньої сесії перед фінальним обліком очищення.
-- Доставка ізольованого cron пригнічує застарілі проміжні відповіді батьківського процесу, поки
- дочірня робота субагента все ще завершується, і надає перевагу фінальному дочірньому
- виводу, якщо він надходить до доставки.
+- Завдання — це **записи**, а не планувальники: cron і heartbeat вирішують, _коли_ виконується робота, а завдання відстежують, _що сталося_.
+- ACP, субагенти, усі cron-завдання й операції CLI створюють завдання. Повороти heartbeat — ні.
+- Кожне завдання проходить шлях `queued → running → terminal` (`succeeded`, `failed`, `timed_out`, `cancelled` або `lost`).
+- Cron-завдання залишаються активними, поки середовище виконання cron усе ще володіє завданням; CLI-завдання з чат-підкладкою залишаються активними лише доти, доки активний їхній контекст виконання.
+- Завершення працює за принципом push: відокремлена робота може сповістити напряму або пробудити сеанс запитувача/heartbeat після завершення, тому цикли опитування статусу зазвичай є неправильною моделлю.
+- Ізольовані запуски cron і завершення субагентів у міру можливості очищають відстежувані вкладки/процеси браузера для свого дочірнього сеансу перед фінальним обліком очищення.
+- Доставка ізольованого cron пригнічує застарілі проміжні відповіді батьківського процесу, поки ще триває завершення нащадків-субагентів, і надає перевагу фінальному виводу нащадка, якщо він надходить до моменту доставки.
- Сповіщення про завершення доставляються безпосередньо в канал або ставляться в чергу до наступного heartbeat.
- `openclaw tasks list` показує всі завдання; `openclaw tasks audit` виявляє проблеми.
-- Термінальні записи зберігаються 7 днів, а потім автоматично видаляються.
+- Термінальні записи зберігаються 7 днів, після чого автоматично видаляються.
## Швидкий старт
@@ -54,23 +50,23 @@ openclaw tasks list
openclaw tasks list --runtime acp
openclaw tasks list --status running
-# Показати деталі конкретного завдання (за ID, ID запуску або ключем сесії)
+# Показати подробиці конкретного завдання (за ID, ID запуску або ключем сеансу)
openclaw tasks show
-# Скасувати завдання, що виконується (завершує дочірню сесію)
+# Скасувати запущене завдання (завершує дочірній сеанс)
openclaw tasks cancel
# Змінити політику сповіщень для завдання
openclaw tasks notify state_changes
-# Запустити аудит працездатності
+# Запустити перевірку стану
openclaw tasks audit
-# Попередній перегляд або застосування обслуговування
+# Переглянути або застосувати обслуговування
openclaw tasks maintenance
openclaw tasks maintenance --apply
-# Перевірити стан Task Flow
+# Переглянути стан TaskFlow
openclaw tasks flow list
openclaw tasks flow show
openclaw tasks flow cancel
@@ -78,24 +74,24 @@ openclaw tasks flow cancel
## Що створює завдання
-| Джерело | Тип runtime | Коли створюється запис завдання | Типова політика сповіщень |
-| ----------------------- | ----------- | ----------------------------------------------------- | ------------------------- |
-| Фонові запуски ACP | `acp` | Під час запуску дочірньої ACP-сесії | `done_only` |
-| Оркестрація субагентів | `subagent` | Під час запуску субагента через `sessions_spawn` | `done_only` |
-| Cron-завдання (усі типи) | `cron` | Під час кожного виконання cron (основна й ізольована сесія) | `silent` |
-| CLI-операції | `cli` | Команди `openclaw agent`, що виконуються через gateway | `silent` |
-| Медіазавдання агента | `cli` | Запуски `video_generate` із прив’язкою до сесії | `silent` |
+| Джерело | Тип runtime | Коли створюється запис завдання | Політика сповіщень за замовчуванням |
+| ---------------------- | ----------- | ------------------------------------------------------ | ----------------------------------- |
+| Фонові запуски ACP | `acp` | Під час запуску дочірнього сеансу ACP | `done_only` |
+| Оркестрація субагентів | `subagent` | Під час запуску субагента через `sessions_spawn` | `done_only` |
+| Cron-завдання (усі типи) | `cron` | Під час кожного виконання cron (основний сеанс та ізольовані) | `silent` |
+| Операції CLI | `cli` | Команди `openclaw agent`, що виконуються через gateway | `silent` |
+| Медіазавдання агента | `cli` | Запуски `video_generate` із підкладкою сеансу | `silent` |
-Cron-завдання основної сесії типово використовують політику сповіщень `silent` — вони створюють записи для відстеження, але не генерують сповіщень. Ізольовані cron-завдання також типово мають `silent`, але вони помітніші, тому що виконуються у власній сесії.
+Cron-завдання основного сеансу за замовчуванням використовують політику сповіщень `silent` — вони створюють записи для відстеження, але не генерують сповіщень. Ізольовані cron-завдання також за замовчуванням використовують `silent`, але вони помітніші, оскільки виконуються у власному сеансі.
-Запуски `video_generate` із прив’язкою до сесії також використовують політику сповіщень `silent`. Вони все одно створюють записи завдань, але завершення повертається до початкової сесії агента як внутрішнє пробудження, щоб агент міг сам записати наступне повідомлення й прикріпити готове відео.
+Запуски `video_generate` із підкладкою сеансу також використовують політику сповіщень `silent`. Вони все одно створюють записи завдань, але завершення повертається до початкового сеансу агента як внутрішнє пробудження, щоб агент міг сам написати подальше повідомлення та прикріпити готове відео. Якщо ви вмикаєте `tools.media.asyncCompletion.directSend`, асинхронні завершення `music_generate` і `video_generate` спершу намагаються доставити результат напряму в канал, а вже потім повертаються до шляху пробудження сеансу запитувача.
-Поки завдання `video_generate` із прив’язкою до сесії все ще активне, інструмент також працює як запобіжник: повторні виклики `video_generate` у тій самій сесії повертають статус активного завдання замість запуску другого паралельного генерування. Використовуйте `action: "status"`, якщо вам потрібен явний запит прогресу/статусу з боку агента.
+Поки завдання `video_generate` із підкладкою сеансу ще активне, інструмент також виконує роль захисного обмеження: повторні виклики `video_generate` у тому самому сеансі повертають статус активного завдання замість запуску другого паралельного генерування. Використовуйте `action: "status"`, якщо вам потрібен явний запит прогресу/статусу з боку агента.
**Що не створює завдання:**
-- Цикли heartbeat — основна сесія; див. [Heartbeat](/uk/gateway/heartbeat)
-- Звичайні інтерактивні цикли чату
+- Повороти heartbeat — основний сеанс; див. [Heartbeat](/uk/gateway/heartbeat)
+- Звичайні інтерактивні повороти чату
- Прямі відповіді `/command`
## Життєвий цикл завдання
@@ -112,40 +108,38 @@ stateDiagram-v2
running --> lost : session gone > 5 min
```
-| Статус | Що це означає |
-| ----------- | ------------------------------------------------------------------------ |
-| `queued` | Створено, очікує на запуск агента |
-| `running` | Цикл агента активно виконується |
-| `succeeded` | Успішно завершено |
-| `failed` | Завершено з помилкою |
-| `timed_out` | Перевищено налаштований час очікування |
-| `cancelled` | Зупинено оператором через `openclaw tasks cancel` |
+| Статус | Що це означає |
+| ----------- | ------------------------------------------------------------------------- |
+| `queued` | Створене, очікує запуску агента |
+| `running` | Поворот агента активно виконується |
+| `succeeded` | Успішно завершене |
+| `failed` | Завершене з помилкою |
+| `timed_out` | Перевищено налаштований тайм-аут |
+| `cancelled` | Зупинене оператором через `openclaw tasks cancel` |
| `lost` | Runtime втратив авторитетний базовий стан після 5-хвилинного пільгового періоду |
Переходи відбуваються автоматично — коли пов’язаний запуск агента завершується, статус завдання оновлюється відповідно.
-`lost` залежить від runtime:
+`lost` враховує особливості runtime:
-- Завдання ACP: зникли метадані дочірньої ACP-сесії.
-- Завдання субагента: дочірня сесія зникла зі сховища цільового агента.
-- Cron-завдання: середовище виконання cron більше не відстежує завдання як активне.
-- CLI-завдання: ізольовані завдання дочірньої сесії використовують дочірню сесію; CLI-завдання з чат-підтримкою натомість використовують живий контекст виконання, тому завислі рядки сесії каналу/групи/прямих повідомлень не підтримують їх активність.
+- Завдання ACP: зникли метадані дочірнього сеансу ACP.
+- Завдання субагентів: дочірній сеанс зник із цільового сховища агента.
+- Cron-завдання: runtime cron більше не відстежує завдання як активне.
+- CLI-завдання: ізольовані завдання дочірнього сеансу використовують дочірній сеанс; CLI-завдання з чат-підкладкою натомість використовують живий контекст виконання, тож залишкові рядки сеансів каналу/групи/прямих повідомлень не підтримують їх активність.
-## Доставка й сповіщення
+## Доставка та сповіщення
Коли завдання досягає термінального стану, OpenClaw сповіщає вас. Є два шляхи доставки:
-**Пряма доставка** — якщо завдання має цільовий канал (`requesterOrigin`), повідомлення про завершення надсилається безпосередньо в цей канал (Telegram, Discord, Slack тощо). Для завершень субагентів OpenClaw також зберігає прив’язану маршрутизацію потоку/теми, коли це можливо, і може заповнити відсутній `to` / акаунт зі збереженого маршруту сесії запитувача (`lastChannel` / `lastTo` / `lastAccountId`) перед тим, як відмовитися від прямої доставки.
+**Пряма доставка** — якщо завдання має цільовий канал (`requesterOrigin`), повідомлення про завершення надсилається безпосередньо в цей канал (Telegram, Discord, Slack тощо). Для завершень субагентів OpenClaw також зберігає прив’язану маршрутизацію thread/topic, коли це можливо, і може заповнити відсутні `to` / обліковий запис зі збереженого маршруту сеансу запитувача (`lastChannel` / `lastTo` / `lastAccountId`) перед тим, як відмовитися від прямої доставки.
-**Доставка через чергу сесії** — якщо пряма доставка не вдалася або origin не задано, оновлення ставиться в чергу як системна подія в сесії запитувача й з’явиться під час наступного heartbeat.
+**Доставка через чергу сеансу** — якщо пряма доставка не вдалася або походження не задане, оновлення ставиться в чергу як системна подія в сеансі запитувача і з’являється під час наступного heartbeat.
-Завершення завдання запускає негайне пробудження heartbeat, щоб ви швидко побачили результат — вам не потрібно чекати наступного запланованого циклу heartbeat.
+Завершення завдання негайно ініціює пробудження heartbeat, щоб ви швидко побачили результат — вам не потрібно чекати наступного запланованого heartbeat.
-Це означає, що типовий робочий процес базується на push-моделі: запустіть відокремлену роботу один раз, а потім дозвольте
-runtime пробудити або сповістити вас після завершення. Опитуйте стан завдання лише тоді, коли
-потрібні налагодження, втручання або явний аудит.
+Це означає, що типовий робочий процес базується на push: один раз запустіть відокремлену роботу, а потім дозвольте runtime пробудити або сповістити вас після завершення. Опитуйте стан завдання лише тоді, коли вам потрібні налагодження, втручання або явний аудит.
### Політики сповіщень
@@ -153,9 +147,9 @@ runtime пробудити або сповістити вас після зав
| Політика | Що доставляється |
| --------------------- | ----------------------------------------------------------------------- |
-| `done_only` (типово) | Лише термінальний стан (`succeeded`, `failed` тощо) — **це типова поведінка** |
+| `done_only` (default) | Лише термінальний стан (`succeeded`, `failed` тощо) — **це значення за замовчуванням** |
| `state_changes` | Кожен перехід стану й оновлення прогресу |
-| `silent` | Взагалі нічого |
+| `silent` | Нічого |
Змінити політику під час виконання завдання:
@@ -171,7 +165,7 @@ openclaw tasks notify state_changes
openclaw tasks list [--runtime ] [--status ] [--json]
```
-Стовпці виводу: ID завдання, тип, статус, доставка, ID запуску, дочірня сесія, підсумок.
+Стовпці виводу: ID завдання, тип, статус, доставка, ID запуску, дочірній сеанс, підсумок.
### `tasks show`
@@ -179,7 +173,7 @@ openclaw tasks list [--runtime ] [--status ] [--j
openclaw tasks show
```
-Токен lookup приймає ID завдання, ID запуску або ключ сесії. Показує повний запис, включно з часовими даними, станом доставки, помилкою й термінальним підсумком.
+Токен пошуку може бути ID завдання, ID запуску або ключем сеансу. Показує повний запис, включно з часом, станом доставки, помилкою та термінальним підсумком.
### `tasks cancel`
@@ -187,7 +181,7 @@ openclaw tasks show
openclaw tasks cancel
```
-Для завдань ACP і субагентів це завершує дочірню сесію. Статус переходить у `cancelled`, і надсилається сповіщення про доставку.
+Для завдань ACP і субагентів це завершує дочірній сеанс. Статус переходить у `cancelled`, і надсилається сповіщення про доставку.
### `tasks notify`
@@ -201,16 +195,16 @@ openclaw tasks notify
openclaw tasks audit [--json]
```
-Виявляє операційні проблеми. Результати також з’являються в `openclaw status`, коли виявлено проблеми.
+Виявляє операційні проблеми. Якщо виявлено проблеми, результати також з’являються в `openclaw status`.
-| Знахідка | Серйозність | Тригер |
-| ------------------------- | ----------- | ---------------------------------------------------- |
-| `stale_queued` | warn | У стані queued понад 10 хвилин |
-| `stale_running` | error | У стані running понад 30 хвилин |
-| `lost` | error | Зникло runtime-підтверджене володіння завданням |
-| `delivery_failed` | warn | Доставка не вдалася, і політика сповіщень не `silent` |
-| `missing_cleanup` | warn | Термінальне завдання без мітки часу очищення |
-| `inconsistent_timestamps` | warn | Порушення часової шкали (наприклад, завершено до початку) |
+| Виявлена проблема | Серйозність | Умова спрацювання |
+| ------------------------- | ----------- | ------------------------------------------------------- |
+| `stale_queued` | warn | Стан `queued` триває понад 10 хвилин |
+| `stale_running` | error | Стан `running` триває понад 30 хвилин |
+| `lost` | error | Зникло runtime-підкріплене володіння завданням |
+| `delivery_failed` | warn | Доставка не вдалася, а політика сповіщень не `silent` |
+| `missing_cleanup` | warn | Термінальне завдання без позначки часу очищення |
+| `inconsistent_timestamps` | warn | Порушення часової шкали (наприклад, завершено до запуску) |
### `tasks maintenance`
@@ -219,23 +213,21 @@ openclaw tasks maintenance [--json]
openclaw tasks maintenance --apply [--json]
```
-Використовуйте це для попереднього перегляду або застосування звірки, виставлення міток очищення й видалення
-для завдань і стану Task Flow.
+Використовуйте це, щоб переглянути або застосувати звірку, встановлення позначок очищення та видалення для завдань і стану Task Flow.
-Звірка враховує runtime:
+Звірка враховує особливості runtime:
-- Завдання ACP/субагентів перевіряють свою базову дочірню сесію.
-- Cron-завдання перевіряють, чи середовище виконання cron усе ще володіє завданням.
-- CLI-завдання з чат-підтримкою перевіряють базовий активний контекст виконання, а не лише рядок чат-сесії.
+- Завдання ACP/субагентів перевіряють свій базовий дочірній сеанс.
+- Cron-завдання перевіряють, чи runtime cron усе ще володіє завданням.
+- CLI-завдання з чат-підкладкою перевіряють контекст живого виконання-власника, а не лише рядок сеансу чату.
-Очищення після завершення також враховує runtime:
+Очищення після завершення також враховує особливості runtime:
-- Завершення субагента в межах best-effort закриває відстежувані вкладки браузера/процеси для дочірньої сесії перед продовженням оголошення про очищення.
-- Завершення ізольованого cron у межах best-effort закриває відстежувані вкладки браузера/процеси для cron-сесії до повного завершення запуску.
-- Доставка ізольованого cron за потреби очікує завершення дочірніх дій субагента й
- пригнічує застарілий текст підтвердження батьківського процесу замість його оголошення.
-- Доставка завершення субагента надає перевагу останньому видимому тексту асистента; якщо він порожній, використовується очищений останній текст `tool`/`toolResult`, а запуски лише з викликом інструмента, що завершилися тайм-аутом, можуть зводитися до короткого підсумку часткового прогресу.
-- Помилки очищення не приховують реальний результат завдання.
+- Після завершення субагента у міру можливості закриваються відстежувані вкладки/процеси браузера для дочірнього сеансу, перш ніж продовжиться оголошене очищення.
+- Після завершення ізольованого cron у міру можливості закриваються відстежувані вкладки/процеси браузера для cron-сеансу, перш ніж виконання повністю завершиться.
+- Доставка ізольованого cron за потреби чекає на подальші дії дочірніх субагентів і пригнічує застарілий текст підтвердження батьківського процесу замість його оголошення.
+- Доставка завершення субагента надає перевагу останньому видимому тексту помічника; якщо він порожній, використовується очищений останній текст tool/toolResult, а запуски лише з викликом інструмента, що завершилися тайм-аутом, можуть зводитися до короткого підсумку часткового прогресу.
+- Помилки очищення не маскують реальний результат завдання.
### `tasks flow list|show|cancel`
@@ -245,20 +237,19 @@ openclaw tasks flow show [--json]
openclaw tasks flow cancel
```
-Використовуйте це, коли вас цікавить саме оркеструвальний Task Flow,
-а не окремий запис фонового завдання.
+Використовуйте ці команди, коли вас цікавить оркеструвальний Task Flow, а не окремий запис фонового завдання.
## Дошка завдань чату (`/tasks`)
-Використовуйте `/tasks` у будь-якій чат-сесії, щоб побачити фонові завдання, пов’язані з цією сесією. Дошка показує
-активні й нещодавно завершені завдання з runtime, статусом, часовими даними та деталями прогресу або помилки.
+Використовуйте `/tasks` у будь-якому чат-сеансі, щоб побачити фонові завдання, пов’язані з цим сеансом. Дошка показує
+активні й нещодавно завершені завдання з runtime, статусом, часом і подробицями прогресу або помилки.
-Коли в поточній сесії немає видимих пов’язаних завдань, `/tasks` повертається до локальних лічильників завдань агента,
-щоб ви все одно отримали огляд без розкриття деталей інших сесій.
+Коли в поточному сеансі немає видимих пов’язаних завдань, `/tasks` повертається до локальних для агента лічильників завдань,
+щоб ви все одно мали огляд без розкриття подробиць інших сеансів.
-Для повного операторського журналу використовуйте CLI: `openclaw tasks list`.
+Для повного журналу оператора використовуйте CLI: `openclaw tasks list`.
-## Інтеграція зі статусом (навантаження завдань)
+## Інтеграція статусу (тиск завдань)
`openclaw status` містить короткий підсумок завдань:
@@ -270,13 +261,13 @@ Tasks: 3 queued · 2 running · 1 issues
- **active** — кількість `queued` + `running`
- **failures** — кількість `failed` + `timed_out` + `lost`
-- **byRuntime** — розбивка за `acp`, `subagent`, `cron`, `cli`
+- **byRuntime** — розподіл за `acp`, `subagent`, `cron`, `cli`
-І `/status`, і інструмент `session_status` використовують знімок завдань з урахуванням очищення: активним завданням
-надається перевага, застарілі завершені рядки приховуються, а нещодавні збої відображаються лише тоді, коли активної роботи
-вже не залишилося. Це допомагає картці статусу залишатися зосередженою на тому, що важливо саме зараз.
+І `/status`, і інструмент `session_status` використовують знімок завдань з урахуванням очищення: активним завданням надається перевага,
+застарілі завершені рядки приховуються, а нещодавні збої показуються лише тоді, коли активна робота вже не триває.
+Це допомагає картці статусу зосереджуватися на тому, що важливо саме зараз.
-## Зберігання й обслуговування
+## Зберігання та обслуговування
### Де зберігаються завдання
@@ -286,50 +277,50 @@ Tasks: 3 queued · 2 running · 1 issues
$OPENCLAW_STATE_DIR/tasks/runs.sqlite
```
-Реєстр завантажується в пам’ять під час запуску gateway і синхронізує записи в SQLite для збереження після перезапусків.
+Реєстр завантажується в пам’ять під час запуску gateway і синхронізує записи з SQLite для надійності після перезапусків.
### Автоматичне обслуговування
Очищувач запускається кожні **60 секунд** і виконує три дії:
-1. **Звірка** — перевіряє, чи активні завдання все ще мають авторитетну базову підтримку runtime. Завдання ACP/субагентів використовують стан дочірньої сесії, cron-завдання — володіння активним завданням, а CLI-завдання з чат-підтримкою — базовий контекст виконання. Якщо цей базовий стан відсутній понад 5 хвилин, завдання позначається як `lost`.
-2. **Виставлення міток очищення** — установлює часову мітку `cleanupAfter` на термінальних завданнях (`endedAt + 7 days`).
+1. **Звірка** — перевіряє, чи активні завдання все ще мають авторитетне runtime-підкріплення. Завдання ACP/субагентів використовують стан дочірнього сеансу, cron-завдання — володіння активним завданням, а CLI-завдання з чат-підкладкою — контекст виконання-власника. Якщо цей базовий стан відсутній понад 5 хвилин, завдання позначається як `lost`.
+2. **Позначка очищення** — установлює часову позначку `cleanupAfter` для термінальних завдань (`endedAt + 7 days`).
3. **Видалення** — видаляє записи, дата `cleanupAfter` яких уже минула.
-**Термін зберігання**: термінальні записи завдань зберігаються **7 днів**, а потім автоматично видаляються. Налаштування не потрібне.
+**Термін зберігання**: записи термінальних завдань зберігаються **7 днів**, після чого автоматично видаляються. Жодного налаштування не потрібно.
## Як завдання пов’язані з іншими системами
### Завдання і Task Flow
-[Task Flow](/uk/automation/taskflow) — це рівень оркестрації потоків над фоновими завданнями. Один потік може координувати кілька завдань протягом свого життєвого циклу, використовуючи керовані або дзеркальні режими синхронізації. Використовуйте `openclaw tasks`, щоб переглядати окремі записи завдань, і `openclaw tasks flow`, щоб переглядати оркеструвальний потік.
+[Task Flow](/uk/automation/taskflow) — це рівень оркестрації потоків над фоновими завданнями. Протягом свого життєвого циклу один потік може координувати кілька завдань, використовуючи керовані або дзеркальні режими синхронізації. Використовуйте `openclaw tasks` для перевірки окремих записів завдань, а `openclaw tasks flow` — для перевірки оркеструвального потоку.
-Докладніше див. [Task Flow](/uk/automation/taskflow).
+Докладніше див. у [Task Flow](/uk/automation/taskflow).
### Завдання і cron
-**Визначення** cron-завдання зберігається в `~/.openclaw/cron/jobs.json`. **Кожне** виконання cron створює запис завдання — і для основної сесії, і для ізольованої. Cron-завдання основної сесії типово використовують політику сповіщень `silent`, тому вони відстежуються без генерації сповіщень.
+**Визначення** cron-завдання зберігається в `~/.openclaw/cron/jobs.json`. **Кожне** виконання cron створює запис завдання — і для основного сеансу, і для ізольованого. Cron-завдання основного сеансу за замовчуванням використовують політику сповіщень `silent`, тому вони відстежуються без створення сповіщень.
Див. [Cron Jobs](/uk/automation/cron-jobs).
### Завдання і heartbeat
-Запуски heartbeat — це цикли основної сесії; вони не створюють записи завдань. Коли завдання завершується, воно може ініціювати пробудження heartbeat, щоб ви швидко побачили результат.
+Запуски heartbeat — це повороти основного сеансу, вони не створюють записів завдань. Коли завдання завершується, воно може ініціювати пробудження heartbeat, щоб ви швидко побачили результат.
Див. [Heartbeat](/uk/gateway/heartbeat).
-### Завдання і сесії
+### Завдання і сеанси
-Завдання може посилатися на `childSessionKey` (де виконується робота) і `requesterSessionKey` (хто її запустив). Сесії — це контекст розмови; завдання — це відстеження активності поверх нього.
+Завдання може посилатися на `childSessionKey` (де виконується робота) і `requesterSessionKey` (хто її запустив). Сеанси — це контекст розмови; завдання — це відстеження активності поверх нього.
### Завдання і запуски агентів
-`runId` завдання пов’язує його із запуском агента, який виконує роботу. Події життєвого циклу агента (початок, завершення, помилка) автоматично оновлюють статус завдання — вам не потрібно керувати життєвим циклом вручну.
+`runId` завдання пов’язує його із запуском агента, який виконує роботу. Події життєвого циклу агента (запуск, завершення, помилка) автоматично оновлюють статус завдання — вам не потрібно керувати життєвим циклом вручну.
## Пов’язане
-- [Автоматизація й завдання](/uk/automation) — усі механізми автоматизації в одному огляді
+- [Automation & Tasks](/uk/automation) — усі механізми автоматизації в одному огляді
- [Task Flow](/uk/automation/taskflow) — оркестрація потоків над завданнями
-- [Заплановані завдання](/uk/automation/cron-jobs) — планування фонової роботи
-- [Heartbeat](/uk/gateway/heartbeat) — періодичні цикли основної сесії
-- [CLI: Завдання](/cli/index#tasks) — довідка з команд CLI
+- [Scheduled Tasks](/uk/automation/cron-jobs) — планування фонової роботи
+- [Heartbeat](/uk/gateway/heartbeat) — періодичні повороти основного сеансу
+- [CLI: Tasks](/cli/index#tasks) — довідка з команд CLI
diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md
index b832d4c5b..96f23f19e 100644
--- a/docs/uk/gateway/configuration-reference.md
+++ b/docs/uk/gateway/configuration-reference.md
@@ -1,23 +1,23 @@
---
read_when:
- - Вам потрібна точна семантика або значення за замовчуванням для окремих полів конфігурації
- - Ви перевіряєте блоки конфігурації каналів, моделей, gateway або інструментів
+ - Вам потрібні точні семантика або значення за замовчуванням для полів конфігурації
+ - Ви перевіряєте блоки конфігурації каналу, моделі, шлюзу або інструментів
summary: Повний довідник для кожного ключа конфігурації OpenClaw, значень за замовчуванням і налаштувань каналів
title: Довідник з конфігурації
x-i18n:
- generated_at: "2026-04-06T02:29:21Z"
+ generated_at: "2026-04-06T02:36:10Z"
model: gpt-5.4
provider: openai
- source_hash: 266cbb43d9a4b4a3e8839dc8bc6c6d06382ecbbe33210c702f7699b47988123d
+ source_hash: 6aa6b24b593f6f07118817afabea4cc7842aca6b7c5602b45f479b40c1685230
source_path: gateway/configuration-reference.md
workflow: 15
---
# Довідник з конфігурації
-Кожне поле, доступне в `~/.openclaw/openclaw.json`. Огляд, орієнтований на задачі, див. у [Configuration](/uk/gateway/configuration).
+Кожне поле, доступне в `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration).
-Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необов'язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
+Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх пропущено.
---
@@ -27,30 +27,30 @@ x-i18n:
### Доступ до приватних повідомлень і груп
-Усі канали підтримують політики для приватних повідомлень і політики для груп:
+Усі канали підтримують політики для приватних повідомлень і груп:
-| Політика DM | Поведінка |
-| ------------------- | ------------------------------------------------------------- |
-| `pairing` (типово) | Невідомі відправники отримують одноразовий код pairing; власник має схвалити |
-| `allowlist` | Лише відправники в `allowFrom` (або у сховищі дозволів paired) |
-| `open` | Дозволити всі вхідні приватні повідомлення (потрібно `allowFrom: ["*"]`) |
-| `disabled` | Ігнорувати всі вхідні приватні повідомлення |
+| Політика приватних повідомлень | Поведінка |
+| ------------------------------ | -------------------------------------------------------------- |
+| `pairing` (за замовчуванням) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
+| `allowlist` | Лише відправники з `allowFrom` (або зі сховища дозволів для сполучення) |
+| `open` | Дозволити всі вхідні приватні повідомлення (потрібно `allowFrom: ["*"]`) |
+| `disabled` | Ігнорувати всі вхідні приватні повідомлення |
-| Політика груп | Поведінка |
-| --------------------- | ------------------------------------------------------ |
-| `allowlist` (типово) | Лише групи, що відповідають налаштованому allowlist |
-| `open` | Обійти allowlist груп (gating за згадками все одно застосовується) |
-| `disabled` | Блокувати всі повідомлення груп/кімнат |
+| Політика груп | Поведінка |
+| ---------------------- | ------------------------------------------------------- |
+| `allowlist` (за замовчуванням) | Лише групи, що відповідають налаштованому allowlist |
+| `open` | Обійти allowlist груп (обмеження за згадуванням усе ще застосовується) |
+| `disabled` | Блокувати всі повідомлення в групах/кімнатах |
-`channels.defaults.groupPolicy` задає значення за замовчуванням, коли `groupPolicy` у провайдера не встановлено.
-Коди pairing дійсні 1 годину. Кількість очікуючих запитів pairing для приватних повідомлень обмежена **3 на канал**.
-Якщо блок провайдера повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
+`channels.defaults.groupPolicy` встановлює значення за замовчуванням, коли `groupPolicy` постачальника не задано.
+Коди сполучення спливають через 1 годину. Кількість очікувальних запитів на сполучення для приватних повідомлень обмежена **3 на канал**.
+Якщо блок постачальника повністю відсутній (`channels.` відсутній), політика груп під час виконання повертається до `allowlist` (fail-closed) із попередженням під час запуску.
-### Перевизначення моделі для каналу
+### Перевизначення моделей для каналів
-Використовуйте `channels.modelByChannel`, щоб закріпити певні ID каналів за моделлю. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналу застосовується, коли сесія ще не має перевизначення моделі (наприклад, встановленого через `/model`).
+Використовуйте `channels.modelByChannel`, щоб прив’язати конкретні ідентифікатори каналів до моделі. Значення приймають `provider/model` або налаштовані псевдоніми моделей. Відображення каналу застосовується, якщо в сеансу ще немає перевизначення моделі (наприклад, встановленого через `/model`).
```json5
{
@@ -73,7 +73,7 @@ x-i18n:
### Значення каналів за замовчуванням і heartbeat
-Використовуйте `channels.defaults` для спільної поведінки group-policy і heartbeat у різних провайдерів:
+Використовуйте `channels.defaults` для спільної поведінки політики груп і heartbeat між постачальниками:
```json5
{
@@ -91,15 +91,15 @@ x-i18n:
}
```
-- `channels.defaults.groupPolicy`: резервна політика груп, коли `groupPolicy` на рівні провайдера не встановлено.
-- `channels.defaults.contextVisibility`: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення: `all` (типово, включати весь контекст цитат/гілок/історії), `allowlist` (включати контекст лише від відправників з allowlist), `allowlist_quote` (як `allowlist`, але зберігати явний контекст цитати/відповіді). Перевизначення для каналу: `channels..contextVisibility`.
+- `channels.defaults.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`: відображати compact heartbeat у стилі індикатора.
+- `channels.defaults.heartbeat.showAlerts`: включати деградовані/помилкові стани каналів у вивід heartbeat.
+- `channels.defaults.heartbeat.useIndicator`: відображати компактний heartbeat у стилі індикатора.
### WhatsApp
-WhatsApp працює через web-канал gateway (Baileys Web). Він запускається автоматично, коли існує прив'язана сесія.
+WhatsApp працює через вебканал шлюзу (Baileys Web). Він запускається автоматично, коли існує прив’язаний сеанс.
```json5
{
@@ -132,7 +132,7 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
}
```
-
+
```json5
{
@@ -150,10 +150,10 @@ WhatsApp працює через web-канал 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`, якщо він є; інакше — перший налаштований ідентифікатор облікового запису (відсортовано).
+- Необов’язковий `channels.whatsapp.defaultAccount` перевизначає цей резервний вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- Застарілий каталог автентифікації Baileys для одного облікового запису мігрується через `openclaw doctor` у `whatsapp/default`.
+- Перевизначення для окремих облікових записів: `channels.whatsapp.accounts..sendReadReceipts`, `channels.whatsapp.accounts..dmPolicy`, `channels.whatsapp.accounts..allowFrom`.
@@ -182,13 +182,13 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
},
},
customCommands: [
- { command: "backup", description: "Резервна копія Git" },
+ { command: "backup", description: "Git-резервна копія" },
{ command: "generate", description: "Створити зображення" },
],
historyLimit: 50,
replyToMode: "first", // off | first | all | batched
linkPreview: true,
- streaming: "partial", // off | partial | block | progress (типово: off; явно вмикайте, щоб уникнути лімітів rate limits на редагування preview)
+ streaming: "partial", // off | partial | block | progress (за замовчуванням: off; увімкніть явно, щоб уникнути лімітів частоти редагування попередніх переглядів)
actions: { reactions: true, sendMessage: true },
reactionNotifications: "own", // off | own | all
mediaMaxMb: 100,
@@ -211,13 +211,13 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
}
```
-- Токен бота: `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 stream preview використовують `sendMessage` + `editMessageText` (працює в приватних і групових чатах).
-- Політика retry: див. [Retry policy](/uk/concepts/retry).
+- Токен бота: `channels.telegram.botToken` або `channels.telegram.tokenFile` (лише звичайний файл; symlink відхиляються), з `TELEGRAM_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням.
+- Необов’язковий `channels.telegram.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- У конфігураціях із кількома обліковими записами (2+ ідентифікаторів) установіть явний обліковий запис за замовчуванням (`channels.telegram.defaultAccount` або `channels.telegram.accounts.default`), щоб уникнути резервної маршрутизації; `openclaw doctor` попереджає, якщо цього немає або значення некоректне.
+- `configWrites: false` блокує записи конфігурації, ініційовані Telegram (міграції ID супергруп, `/config set|unset`).
+- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для тем форумів (використовуйте канонічний `chatId:topic:topicId` у `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- Попередній перегляд потоку Telegram використовує `sendMessage` + `editMessageText` (працює в приватних і групових чатах).
+- Політика повторних спроб: див. [Retry policy](/uk/concepts/retry).
### Discord
@@ -272,7 +272,7 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
historyLimit: 20,
textChunkLimit: 2000,
chunkMode: "length", // length | newline
- streaming: "off", // off | partial | block | progress (progress відображається як partial у Discord)
+ streaming: "off", // off | partial | block | progress (progress відповідає partial у Discord)
maxLinesPerMessage: 17,
ui: {
components: {
@@ -283,7 +283,7 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
enabled: true,
idleHours: 24,
maxAgeHours: 0,
- spawnSubagentSessions: false, // opt-in для `sessions_spawn({ thread: true })`
+ spawnSubagentSessions: false, // увімкнення для sessions_spawn({ thread: true })
},
voice: {
enabled: true,
@@ -319,36 +319,36 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
}
```
-- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для акаунта за замовчуванням.
-- Прямі вихідні виклики, що передають явний Discord `token`, використовують цей токен для виклику; налаштування retry/політики акаунта все одно беруться з вибраного акаунта в активному runtime snapshot.
-- Необов'язковий `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 thread:
- - `enabled`: перевизначення Discord для функцій сесій, прив'язаних до thread (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив'язана доставка/маршрутизація)
- - `idleHours`: перевизначення Discord для автоматичного unfocus через неактивність у годинах (`0` вимикає)
+- Токен: `channels.discord.token`, з `DISCORD_BOT_TOKEN` як резервним варіантом для облікового запису за замовчуванням.
+- Прямі вихідні виклики, що передають явний Discord `token`, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все ще беруться з вибраного облікового запису в активному знімку середовища виконання.
+- Необов’язковий `channels.discord.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- Використовуйте `user:` (приватне повідомлення) або `channel:` (канал guild) для цілей доставки; звичайні числові ID відхиляються.
+- Slug guild завжди в нижньому регістрі із заміною пробілів на `-`; ключі каналів використовують slugified name (без `#`). Віддавайте перевагу ID guild.
+- Повідомлення, створені ботами, за замовчуванням ігноруються. `allowBots: true` їх увімкне; використовуйте `allowBots: "mentions"`, щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються).
+- `channels.discord.guilds..ignoreOtherMentions` (і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (окрім @everyone/@here).
+- `maxLinesPerMessage` (за замовчуванням 17) розбиває довгі по висоті повідомлення, навіть якщо вони коротші за 2000 символів.
+- `channels.discord.threadBindings` керує маршрутизацією, прив’язаною до тредів Discord:
+ - `enabled`: перевизначення Discord для функцій сеансів, прив’язаних до тредів (`/focus`, `/unfocus`, `/agents`, `/session idle`, `/session max-age` і прив’язана доставка/маршрутизація)
+ - `idleHours`: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (`0` вимикає)
- `maxAgeHours`: перевизначення Discord для жорсткого максимального віку в годинах (`0` вимикає)
- - `spawnSubagentSessions`: перемикач opt-in для автоматичного створення/прив'язки thread через `sessions_spawn({ thread: true })`
-- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив'язки для каналів і thread (використовуйте id каналу/thread у `match.peer.id`). Семантика полів спільна з [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-- `channels.discord.ui.components.accentColor` задає accent color для контейнерів компонентів Discord v2.
-- `channels.discord.voice` вмикає розмови в голосових каналах Discord і необов'язкові перевизначення auto-join + TTS.
-- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються до параметрів DAVE у `@discordjs/voice` (`true` і `24` за замовчуванням).
-- OpenClaw також намагається відновити прийом голосу, виходячи та повторно входячи в голосову сесію після повторних збоїв дешифрування.
-- `channels.discord.streaming` — канонічний ключ режиму stream. Застарілі `streamMode` і булеві значення `streaming` автоматично мігруються.
-- `channels.discord.autoPresence` відображає доступність runtime у presence бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов'язкові перевизначення тексту статусу.
-- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваними name/tag (режим сумісності break-glass).
-- `channels.discord.execApprovals`: доставка native exec approval для Discord і авторизація схвалювачів.
- - `enabled`: `true`, `false` або `"auto"` (типово). У режимі 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`, видаляє approval DM після схвалення, відхилення або тайм-ауту.
+ - `spawnSubagentSessions`: прапорець увімкнення для автоматичного створення/прив’язки тредів через `sessions_spawn({ thread: true })`
+- Записи верхнього рівня `bindings[]` з `type: "acp"` налаштовують постійні ACP-прив’язки для каналів і тредів (використовуйте id каналу/треду в `match.peer.id`). Семантика полів спільна в [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- `channels.discord.ui.components.accentColor` задає колір акценту для контейнерів Discord components v2.
+- `channels.discord.voice` вмикає розмови у голосових каналах Discord і необов’язкові перевизначення auto-join + TTS.
+- `channels.discord.voice.daveEncryption` і `channels.discord.voice.decryptionFailureTolerance` напряму передаються до параметрів DAVE `@discordjs/voice` (за замовчуванням `true` і `24`).
+- OpenClaw додатково намагається відновити голосовий прийом, виходячи та повторно приєднуючись до голосового сеансу після повторних помилок дешифрування.
+- `channels.discord.streaming` — канонічний ключ режиму потоку. Застарілі `streamMode` і булеві значення `streaming` мігруються автоматично.
+- `channels.discord.autoPresence` відображає доступність середовища виконання у presence бота (healthy => online, degraded => idle, exhausted => dnd) і дає змогу необов’язково перевизначати текст статусу.
+- `channels.discord.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінним ім’ям/тегом (режим сумісності аварійного доступу).
+- `channels.discord.execApprovals`: власна доставка схвалень exec і авторизація схвалювачів у Discord.
+ - `enabled`: `true`, `false` або `"auto"` (за замовчуванням). У режимі auto схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
+ - `approvers`: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо не вказано, використовується `commands.ownerAllowFrom`.
+ - `agentFilter`: необов’язковий allowlist ID агентів. Якщо пропустити, схвалення пересилаються для всіх агентів.
+ - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
+ - `target`: куди надсилати підказки для схвалення. `"dm"` (за замовчуванням) надсилає в приватні повідомлення схвалювачів, `"channel"` — в початковий канал, `"both"` — в обидва місця. Коли target містить `"channel"`, кнопками можуть користуватися лише визначені схвалювачі.
+ - `cleanupAfterResolve`: коли `true`, видаляє приватні повідомлення зі схваленням після схвалення, відмови або тайм-ауту.
-**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, типово), `all` (усі повідомлення), `allowlist` (із `guilds..users` для всіх повідомлень).
+**Режими сповіщень про реакції:** `off` (немає), `own` (повідомлення бота, за замовчуванням), `all` (усі повідомлення), `allowlist` (від `guilds..users` для всіх повідомлень).
### Google Chat
@@ -379,11 +379,11 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
}
```
-- JSON сервісного акаунта: inline (`serviceAccount`) або через файл (`serviceAccountFile`).
-- Також підтримується SecretRef для сервісного акаунта (`serviceAccountRef`).
-- Резервні env: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
+- JSON облікового запису служби: вбудовано (`serviceAccount`) або через файл (`serviceAccountFile`).
+- Також підтримується SecretRef облікового запису служби (`serviceAccountRef`).
+- Резервні змінні середовища: `GOOGLE_CHAT_SERVICE_ACCOUNT` або `GOOGLE_CHAT_SERVICE_ACCOUNT_FILE`.
- Використовуйте `spaces/` або `users/` для цілей доставки.
-- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінюваним email principal (режим сумісності break-glass).
+- `channels.googlechat.dangerouslyAllowNameMatching` знову вмикає зіставлення за змінним email principal (режим сумісності аварійного доступу).
### Slack
@@ -433,8 +433,8 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
typingReaction: "hourglass_flowing_sand",
textChunkLimit: 4000,
chunkMode: "length",
- streaming: "partial", // off | partial | block | progress (режим preview)
- nativeStreaming: true, // використовувати native streaming API Slack, коли streaming=partial
+ streaming: "partial", // off | partial | block | progress (режим попереднього перегляду)
+ nativeStreaming: true, // використовувати нативний API потокової передачі Slack, коли streaming=partial
mediaMaxMb: 20,
execApprovals: {
enabled: "auto", // true | false | "auto"
@@ -448,34 +448,34 @@ WhatsApp працює через web-канал gateway (Baileys Web). Він з
}
```
-- **Socket mode** вимагає і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резервні env для акаунта за замовчуванням).
-- **HTTP mode** вимагає `botToken` плюс `signingSecret` (у корені або для окремого акаунта).
-- `botToken`, `appToken`, `signingSecret` і `userToken` приймають відкриті
- рядки або об'єкти SecretRef.
-- Snapshot-и Slack акаунтів показують поля джерела/стану облікових даних, як-от
- `botTokenSource`, `botTokenStatus`, `appTokenStatus`, а в HTTP mode —
- `signingSecretStatus`. `configured_unavailable` означає, що акаунт
- налаштовано через SecretRef, але поточний шлях команди/runtime не зміг
+- **Socket mode** вимагає і `botToken`, і `appToken` (`SLACK_BOT_TOKEN` + `SLACK_APP_TOKEN` як резерв через змінні середовища для облікового запису за замовчуванням).
+- **HTTP mode** вимагає `botToken` плюс `signingSecret` (у корені або для окремого облікового запису).
+- `botToken`, `appToken`, `signingSecret` і `userToken` приймають звичайні
+ рядки або об’єкти SecretRef.
+- Знімки облікових записів Slack показують поля джерела/статусу для кожного облікового запису, такі як
+ `botTokenSource`, `botTokenStatus`, `appTokenStatus` і, у HTTP mode,
+ `signingSecretStatus`. `configured_unavailable` означає, що обліковий запис
+ налаштовано через SecretRef, але поточний шлях команди/середовища виконання не зміг
визначити значення секрету.
-- `configWrites: false` блокує записи конфігурації, ініційовані зі Slack.
-- Необов'язковий `channels.slack.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з ID налаштованого акаунта.
-- `channels.slack.streaming` — канонічний ключ режиму stream. Застарілі `streamMode` і булеві значення `streaming` автоматично мігруються.
-- Використовуйте `user:` (DM) або `channel:` для цілей доставки.
+- `configWrites: false` блокує записи конфігурації, ініційовані Slack.
+- Необов’язковий `channels.slack.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- `channels.slack.streaming` — канонічний ключ режиму потоку. Застарілі `streamMode` і булеві значення `streaming` мігруються автоматично.
+- Використовуйте `user:` (приватне повідомлення) або `channel:` для цілей доставки.
-**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `all`, `allowlist` (з `reactionAllowlist`).
-**Ізоляція thread-сесій:** `thread.historyScope` — окремо для thread (типово) або спільно для каналу. `thread.inheritParent` копіює transcript батьківського каналу в нові thread.
+**Ізоляція сеансів тредів:** `thread.historyScope` — для кожного треду (за замовчуванням) або спільний для каналу. `thread.inheritParent` копіює стенограму батьківського каналу в нові треди.
-- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а після завершення видаляє її. Використовуйте shortcode емодзі Slack, наприклад `"hourglass_flowing_sand"`.
-- `channels.slack.execApprovals`: доставка native exec approval для Slack і авторизація схвалювачів. Та сама схема, що і в Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
+- `typingReaction` додає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте скорочений код emoji Slack, наприклад `"hourglass_flowing_sand"`.
+- `channels.slack.execApprovals`: власна доставка схвалень exec і авторизація схвалювачів у Slack. Та сама схема, що й у Discord: `enabled` (`true`/`false`/`"auto"`), `approvers` (ID користувачів Slack), `agentFilter`, `sessionFilter` і `target` (`"dm"`, `"channel"` або `"both"`).
-| Група дій | Типово | Примітки |
-| ------------- | --------- | ------------------------ |
-| reactions | увімкнено | Реагувати + перелік реакцій |
-| messages | увімкнено | Читання/надсилання/редагування/видалення |
-| pins | увімкнено | Закріпити/відкріпити/перелік |
-| memberInfo | увімкнено | Інформація про учасника |
-| emojiList | увімкнено | Список користувацьких емодзі |
+| Група дій | За замовчуванням | Примітки |
+| ----------- | ---------------- | ------------------------ |
+| reactions | увімкнено | Реагувати + перелік реакцій |
+| messages | увімкнено | Читати/надсилати/редагувати/видаляти |
+| pins | увімкнено | Закріпити/відкріпити/перелік |
+| memberInfo | увімкнено | Інформація про учасника |
+| emojiList | увімкнено | Список користувацьких emoji |
### Mattermost
@@ -496,10 +496,10 @@ Mattermost постачається як plugin: `openclaw plugins install @open
"team-channel-id": { requireMention: false },
},
commands: {
- native: true, // opt-in
+ native: true, // увімкнення за бажанням
nativeSkills: true,
callbackPath: "/api/channels/mattermost/command",
- // Необов'язковий явний URL для reverse-proxy/публічних розгортань
+ // Необов’язкова явна URL-адреса для розгортань із reverse proxy/публічним доступом
callbackUrl: "https://gateway.example.com/api/channels/mattermost/command",
},
textChunkLimit: 4000,
@@ -509,23 +509,23 @@ Mattermost постачається як plugin: `openclaw plugins install @open
}
```
-Режими чату: `oncall` (відповідати на @-згадки, типово), `onmessage` (на кожне повідомлення), `onchar` (на повідомлення, що починаються з trigger-префікса).
+Режими чату: `oncall` (відповідати на @-згадування, за замовчуванням), `onmessage` (кожне повідомлення), `onchar` (повідомлення, що починаються з тригерного префікса).
-Коли native-команди Mattermost увімкнено:
+Коли увімкнено нативні команди Mattermost:
-- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повним URL.
-- `commands.callbackUrl` має вказувати на endpoint OpenClaw gateway і бути доступним із сервера Mattermost.
-- Native slash callback автентифікуються токенами для кожної команди, які Mattermost повертає
- під час реєстрації slash-команди. Якщо реєстрація не вдається або жодна
- команда не активована, OpenClaw відхиляє callback з повідомленням
+- `commands.callbackPath` має бути шляхом (наприклад `/api/channels/mattermost/command`), а не повною URL-адресою.
+- `commands.callbackUrl` має вказувати на endpoint шлюзу OpenClaw і бути досяжним із сервера Mattermost.
+- Зворотні виклики нативних slash-команд автентифікуються за допомогою токенів окремих команд, які Mattermost повертає
+ під час реєстрації slash-команд. Якщо реєстрація не вдається або не
+ активовано жодної команди, OpenClaw відхиляє зворотні виклики з
`Unauthorized: invalid command token.`
-- Для приватних/tailnet/internal хостів callback Mattermost може вимагати, щоб
- `ServiceSettings.AllowedUntrustedInternalConnections` містив callback host/domain.
- Використовуйте значення host/domain, а не повні URL.
-- `channels.mattermost.configWrites`: дозволяти або забороняти записи конфігурації, ініційовані з Mattermost.
+- Для приватних/tailnet/internal хостів зворотних викликів Mattermost може вимагати,
+ щоб `ServiceSettings.AllowedUntrustedInternalConnections` містив хост/домен зворотного виклику.
+ Використовуйте значення хосту/домену, а не повні URL-адреси.
+- `channels.mattermost.configWrites`: дозволити або заборонити записи конфігурації, ініційовані Mattermost.
- `channels.mattermost.requireMention`: вимагати `@mention` перед відповіддю в каналах.
-- `channels.mattermost.groups..requireMention`: перевизначення gating за згадками для окремого каналу (`"*"` для типового).
-- Необов'язковий `channels.mattermost.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з ID налаштованого акаунта.
+- `channels.mattermost.groups..requireMention`: перевизначення обмеження згадуванням для каналу (`"*"` для значення за замовчуванням).
+- Необов’язковий `channels.mattermost.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
### Signal
@@ -534,7 +534,7 @@ Mattermost постачається як plugin: `openclaw plugins install @open
channels: {
signal: {
enabled: true,
- account: "+15555550123", // необов'язкова прив'язка до акаунта
+ account: "+15555550123", // необов’язкова прив’язка облікового запису
dmPolicy: "pairing",
allowFrom: ["+15551234567", "uuid:123e4567-e89b-12d3-a456-426614174000"],
configWrites: true,
@@ -546,15 +546,15 @@ Mattermost постачається як plugin: `openclaw plugins install @open
}
```
-**Режими сповіщень про реакції:** `off`, `own` (типово), `all`, `allowlist` (із `reactionAllowlist`).
+**Режими сповіщень про реакції:** `off`, `own` (за замовчуванням), `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` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
### BlueBubbles
-BlueBubbles — рекомендований шлях для iMessage (підтримується plugin, налаштовується в `channels.bluebubbles`).
+BlueBubbles — рекомендований шлях для iMessage (на основі plugin, налаштовується в `channels.bluebubbles`).
```json5
{
@@ -562,21 +562,21 @@ BlueBubbles — рекомендований шлях для iMessage (підт
bluebubbles: {
enabled: true,
dmPolicy: "pairing",
- // serverUrl, password, webhookPath, керування групами та розширені дії:
+ // serverUrl, password, webhookPath, елементи керування групами та розширені дії:
// див. /channels/bluebubbles
},
},
}
```
-- Ключові шляхи core, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
-- Необов'язковий `channels.bluebubbles.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з ID налаштованого акаунта.
-- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив'язувати розмови BlueBubbles до постійних ACP-сесій. Використовуйте дескриптор BlueBubbles або рядок цілі (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-- Повну конфігурацію каналу BlueBubbles задокументовано в [BlueBubbles](/uk/channels/bluebubbles).
+- Основні шляхи ключів, описані тут: `channels.bluebubbles`, `channels.bluebubbles.dmPolicy`.
+- Необов’язковий `channels.bluebubbles.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови BlueBubbles до постійних ACP-сеансів. Використовуйте handle або target string BlueBubbles (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
+- Повна конфігурація каналу BlueBubbles описана в [BlueBubbles](/uk/channels/bluebubbles).
### iMessage
-OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Не потрібні ні daemon, ні порт.
+OpenClaw запускає `imsg rpc` (JSON-RPC поверх stdio). Жоден daemon або порт не потрібен.
```json5
{
@@ -600,17 +600,17 @@ OpenClaw запускає `imsg rpc` (JSON-RPC через stdio). Не потр
}
```
-- Необов'язковий `channels.imessage.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з ID налаштованого акаунта.
+- Необов’язковий `channels.imessage.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
-- Потрібен Full Disk Access до бази Messages DB.
-- Віддавайте перевагу цілям `chat_id:`. Щоб отримати список чатів, використовуйте `imsg chats --limit 20`.
-- `cliPath` може вказувати на SSH wrapper; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
-- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи до вхідних вкладень (типово: `/Users/*/Library/Messages/Attachments`).
-- SCP використовує сувору перевірку host key, тому переконайтеся, що ключ 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).
+- Потрібен Full Disk Access до бази даних Messages.
+- Віддавайте перевагу цілям `chat_id:`. Використовуйте `imsg chats --limit 20`, щоб переглянути список чатів.
+- `cliPath` може вказувати на SSH-обгортку; задайте `remoteHost` (`host` або `user@host`) для отримання вкладень через SCP.
+- `attachmentRoots` і `remoteAttachmentRoots` обмежують шляхи вхідних вкладень (за замовчуванням: `/Users/*/Library/Messages/Attachments`).
+- SCP використовує строгу перевірку ключа хоста, тому переконайтеся, що ключ relay host уже існує в `~/.ssh/known_hosts`.
+- `channels.imessage.configWrites`: дозволити або заборонити записи конфігурації, ініційовані iMessage.
+- Записи верхнього рівня `bindings[]` з `type: "acp"` можуть прив’язувати розмови iMessage до постійних ACP-сеансів. Використовуйте нормалізований handle або явну ціль чату (`chat_id:*`, `chat_guid:*`, `chat_identifier:*`) у `match.peer.id`. Спільна семантика полів: [ACP Agents](/uk/tools/acp-agents#channel-specific-settings).
-
+
```bash
#!/usr/bin/env bash
@@ -621,7 +621,7 @@ exec ssh -T gateway-host imsg "$@"
### Matrix
-Matrix підтримується як extension і налаштовується в `channels.matrix`.
+Matrix працює через extension і налаштовується в `channels.matrix`.
```json5
{
@@ -651,24 +651,24 @@ Matrix підтримується як extension і налаштовується
}
```
-- Автентифікація токеном використовує `accessToken`; автентифікація паролем використовує `userId` + `password`.
-- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані акаунти можуть перевизначати його через `channels.matrix.accounts..proxy`.
+- Автентифікація токеном використовує `accessToken`; автентифікація паролем — `userId` + `password`.
+- `channels.matrix.proxy` маршрутизує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані облікові записи можуть перевизначити його через `channels.matrix.accounts..proxy`.
- `channels.matrix.allowPrivateNetwork` дозволяє приватні/internal homeserver. `proxy` і `allowPrivateNetwork` — незалежні елементи керування.
-- `channels.matrix.defaultAccount` вибирає бажаний акаунт у багатоакаунтних конфігураціях.
-- `channels.matrix.execApprovals`: доставка native exec approval для Matrix і авторизація схвалювачів.
- - `enabled`: `true`, `false` або `"auto"` (типово). У режимі auto схвалення exec активуються, коли схвалювачів можна визначити через `approvers` або `commands.ownerAllowFrom`.
- - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати exec-запити.
- - `agentFilter`: необов'язковий allowlist ID агентів. Якщо пропущено, пересилаються схвалення для всіх агентів.
- - `sessionFilter`: необов'язкові шаблони ключів сесій (підрядок або regex).
- - `target`: куди надсилати запити на схвалення. `"dm"` (типово), `"channel"` (вихідна кімната) або `"both"`.
- - Перевизначення для окремого акаунта: `channels.matrix.accounts..execApprovals`.
-- `channels.matrix.dm.sessionScope` керує тим, як DM Matrix групуються в сесії: `per-user` (типово) спільний за маршрутизованим peer, а `per-room` ізолює кожну DM-кімнату.
-- Перевірки стану Matrix і live directory lookup використовують ту саму політику proxy, що й runtime-трафік.
-- Повну конфігурацію Matrix, правила таргетингу і приклади налаштування задокументовано в [Matrix](/uk/channels/matrix).
+- `channels.matrix.defaultAccount` вибирає бажаний обліковий запис у конфігураціях із кількома обліковими записами.
+- `channels.matrix.execApprovals`: власна доставка схвалень exec і авторизація схвалювачів у Matrix.
+ - `enabled`: `true`, `false` або `"auto"` (за замовчуванням). У режимі auto схвалення exec активуються, коли схвалювачів можна визначити з `approvers` або `commands.ownerAllowFrom`.
+ - `approvers`: ID користувачів Matrix (наприклад `@owner:example.org`), яким дозволено схвалювати запити exec.
+ - `agentFilter`: необов’язковий allowlist ID агентів. Якщо пропустити, схвалення пересилаються для всіх агентів.
+ - `sessionFilter`: необов’язкові шаблони ключів сеансів (підрядок або regex).
+ - `target`: куди надсилати підказки для схвалення. `"dm"` (за замовчуванням), `"channel"` (початкова кімната) або `"both"`.
+ - Перевизначення для окремих облікових записів: `channels.matrix.accounts..execApprovals`.
+- `channels.matrix.dm.sessionScope` керує тим, як приватні повідомлення Matrix групуються в сеанси: `per-user` (за замовчуванням) спільно використовує маршрутизований peer, а `per-room` ізолює кожну кімнату приватних повідомлень.
+- Перевірки статусу Matrix і пошук живого каталогу використовують ту саму політику proxy, що й трафік середовища виконання.
+- Повна конфігурація Matrix, правила націлювання та приклади налаштування описані в [Matrix](/uk/channels/matrix).
### Microsoft Teams
-Microsoft Teams підтримується як extension і налаштовується в `channels.msteams`.
+Microsoft Teams працює через extension і налаштовується в `channels.msteams`.
```json5
{
@@ -683,12 +683,12 @@ Microsoft Teams підтримується як extension і налаштову
}
```
-- Ключові шляхи core, описані тут: `channels.msteams`, `channels.msteams.configWrites`.
-- Повну конфігурацію Teams (облікові дані, webhook, політики DM/груп, перевизначення для окремих team/channel) задокументовано в [Microsoft Teams](/uk/channels/msteams).
+- Основні шляхи ключів, описані тут: `channels.msteams`, `channels.msteams.configWrites`.
+- Повна конфігурація Teams (облікові дані, webhook, політика приватних повідомлень/груп, перевизначення для team/channel) описана в [Microsoft Teams](/uk/channels/msteams).
### IRC
-IRC підтримується як extension і налаштовується в `channels.irc`.
+IRC працює через extension і налаштовується в `channels.irc`.
```json5
{
@@ -709,13 +709,13 @@ IRC підтримується як extension і налаштовується в
}
```
-- Ключові шляхи core, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
-- Необов'язковий `channels.irc.defaultAccount` перевизначає вибір акаунта за замовчуванням, якщо він збігається з ID налаштованого акаунта.
-- Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в [IRC](/uk/channels/irc).
+- Основні шляхи ключів, описані тут: `channels.irc`, `channels.irc.dmPolicy`, `channels.irc.configWrites`, `channels.irc.nickserv.*`.
+- Необов’язковий `channels.irc.defaultAccount` перевизначає вибір облікового запису за замовчуванням, коли він відповідає налаштованому ідентифікатору облікового запису.
+- Повна конфігурація каналу IRC (host/port/TLS/channels/allowlist/обмеження згадуванням) описана в [IRC](/uk/channels/irc).
-### Багатоакаунтність (усі канали)
+### Багатообліковість (усі канали)
-Запускайте кілька акаунтів на канал (кожен зі своїм `accountId`):
+Запускайте кілька облікових записів на канал (кожен зі своїм `accountId`):
```json5
{
@@ -737,27 +737,27 @@ IRC підтримується як extension і налаштовується в
```
- `default` використовується, коли `accountId` пропущено (CLI + маршрутизація).
-- Env-токени застосовуються лише до акаунта **default**.
-- Базові налаштування каналу застосовуються до всіх акаунтів, якщо вони не перевизначені для окремих акаунтів.
-- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен акаунт до іншого агента.
-- Якщо ви додаєте не-default акаунт через `openclaw channels add` (або onboarding каналу), поки ще використовуєте однокористувацьку конфігурацію верхнього рівня для каналу, OpenClaw спочатку переносить значення верхнього рівня, прив'язані до одного акаунта, у map акаунтів каналу, щоб початковий акаунт продовжив працювати. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default-ціль.
-- Наявні bindings лише на рівні каналу (без `accountId`) і далі відповідають акаунту default; bindings з прив'язкою до акаунта залишаються необов'язковими.
-- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи верхньорівневі однокористувацькі значення, прив'язані до акаунта, у promoted account, вибраний для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default-ціль.
+- Токени зі змінних середовища застосовуються лише до облікового запису **default**.
+- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для окремих облікових записів.
+- Використовуйте `bindings[].match.accountId`, щоб маршрутизувати кожен обліковий запис до іншого агента.
+- Якщо ви додаєте не-default обліковий запис через `openclaw channels add` (або через онбординг каналу), поки все ще перебуваєте на конфігурації каналу верхнього рівня для одного облікового запису, OpenClaw спочатку переносить значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у мапу облікових записів каналу, щоб початковий обліковий запис продовжував працювати. Більшість каналів переміщують їх у `channels..accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default ціль.
+- Наявні прив’язки лише для каналу (без `accountId`) продовжують відповідати обліковому запису default; прив’язки для окремих облікових записів залишаються необов’язковими.
+- `openclaw doctor --fix` також виправляє змішані форми, переміщуючи верхньорівневі значення для одного облікового запису, прив’язані до облікового запису, до просунутого облікового запису, вибраного для цього каналу. Більшість каналів використовують `accounts.default`; Matrix натомість може зберегти наявну відповідну іменовану/default ціль.
-### Інші extension-канали
+### Інші канали extension
-Багато extension-каналів налаштовуються як `channels.` і документуються на своїх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
-Повний індекс каналів див. у [Channels](/uk/channels).
+Багато каналів extension налаштовуються як `channels.` і описані на їхніх окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
+Див. повний індекс каналів: [Channels](/uk/channels).
-### Gating за згадками в групових чатах
+### Обмеження згадуванням у групових чатах
-Для групових повідомлень типово **потрібна згадка** (metadata mention або безпечні regex-шаблони). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage.
+Повідомлення в групах за замовчуванням **вимагають згадування** (згадування в метаданих або безпечні шаблони regex). Застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage.
-**Типи згадок:**
+**Типи згадувань:**
-- **Metadata mention**: нативні @-згадки платформи. Ігноруються в режимі self-chat у WhatsApp.
-- **Текстові шаблони**: безпечні regex-шаблони в `agents.list[].groupChat.mentionPatterns`. Некоректні шаблони та небезпечне вкладене повторення ігноруються.
-- Gating за згадками застосовується лише тоді, коли виявлення можливе (нативні згадки або щонайменше один шаблон).
+- **Згадування в метаданих**: нативні @-згадування платформи. Ігноруються в режимі self-chat WhatsApp.
+- **Текстові шаблони**: безпечні шаблони regex у `agents.list[].groupChat.mentionPatterns`. Некоректні шаблони й небезпечні вкладені повтори ігноруються.
+- Обмеження згадуванням застосовується лише тоді, коли виявлення можливе (нативні згадування або принаймні один шаблон).
```json5
{
@@ -770,9 +770,9 @@ IRC підтримується як extension і налаштовується в
}
```
-`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначати його через `channels..historyLimit` (або для окремого акаунта). Установіть `0`, щоб вимкнути.
+`messages.groupChat.historyLimit` задає глобальне значення за замовчуванням. Канали можуть перевизначити його через `channels..historyLimit` (або для окремого облікового запису). Встановіть `0`, щоб вимкнути.
-#### Ліміти історії для приватних повідомлень
+#### Ліміти історії приватних повідомлень
```json5
{
@@ -787,13 +787,13 @@ IRC підтримується як extension і налаштовується в
}
```
-Порядок визначення: перевизначення для конкретного DM → значення провайдера за замовчуванням → без ліміту (зберігається все).
+Порядок розв’язання: перевизначення для окремого приватного чату → значення за замовчуванням постачальника → без обмеження (зберігається все).
-Підтримуються: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
+Підтримується: `telegram`, `whatsapp`, `discord`, `slack`, `signal`, `imessage`, `msteams`.
#### Режим self-chat
-Додайте свій власний номер до `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
+Включіть власний номер у `allowFrom`, щоб увімкнути режим self-chat (ігнорує нативні @-згадування, відповідає лише на текстові шаблони):
```json5
{
@@ -814,18 +814,18 @@ IRC підтримується як extension і налаштовується в
}
```
-### Команди (обробка команд чату)
+### Commands (обробка команд у чаті)
```json5
{
commands: {
- native: "auto", // реєструвати native-команди, коли це підтримується
- text: true, // розбирати /commands у повідомленнях чату
+ native: "auto", // реєструвати нативні команди, коли підтримується
+ text: true, // парсити /commands у повідомленнях чату
bash: false, // дозволити ! (псевдонім: /bash)
bashForegroundMs: 2000,
config: false, // дозволити /config
debug: false, // дозволити /debug
- restart: false, // дозволити /restart + інструмент перезапуску gateway
+ restart: false, // дозволити /restart + інструмент перезапуску шлюзу
allowFrom: {
"*": ["user1"],
discord: ["user:123"],
@@ -835,28 +835,28 @@ IRC підтримується як extension і налаштовується в
}
```
-
+
- Текстові команди мають бути **окремими** повідомленнями з початковим `/`.
-- `native: "auto"` вмикає native-команди для Discord/Telegram, а для Slack залишає вимкненими.
+- `native: "auto"` вмикає нативні команди для Discord/Telegram, залишає Slack вимкненим.
- Перевизначення для каналу: `channels.discord.commands.native` (bool або `"auto"`). `false` очищає раніше зареєстровані команди.
- `channels.telegram.customCommands` додає додаткові записи меню бота Telegram.
-- `bash: true` вмикає `! ` для оболонки хоста. Потрібні `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`.
-- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів gateway `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; read-only `/config show` залишається доступним для звичайних клієнтів оператора з правом запису.
-- `channels..configWrites` контролює мутації конфігурації для кожного каналу (типово: true).
-- Для багатоакаунтних каналів `channels..accounts..configWrites` також контролює записи, що націлені на цей акаунт (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`).
-- `allowFrom` задається для кожного провайдера. Якщо його встановлено, це **єдине** джерело авторизації (allowlist/pairing каналу і `useAccessGroups` ігноруються).
-- `useAccessGroups: false` дозволяє командам обходити політики access-group, коли `allowFrom` не встановлено.
+- `bash: true` вмикає `! ` для команд оболонки хоста. Потрібно `tools.elevated.enabled` і відправник у `tools.elevated.allowFrom.`.
+- `config: true` вмикає `/config` (читання/запис `openclaw.json`). Для клієнтів шлюзу `chat.send` постійні записи `/config set|unset` також потребують `operator.admin`; лише читання `/config show` залишається доступним для звичайних операторських клієнтів із правом запису.
+- `channels..configWrites` контролює мутації конфігурації для кожного каналу (за замовчуванням: true).
+- Для багатооблікових каналів `channels..accounts..configWrites` також контролює записи, що націлені на цей обліковий запис (наприклад `/allowlist --config --account ` або `/config set channels..accounts....`).
+- `allowFrom` задається окремо для постачальника. Якщо вказано, це **єдине** джерело авторизації (allowlist каналів/сполучення і `useAccessGroups` ігноруються).
+- `useAccessGroups: false` дозволяє командам обходити політики груп доступу, коли `allowFrom` не задано.
---
-## Типові параметри агентів
+## Значення агентів за замовчуванням
### `agents.defaults.workspace`
-Типове значення: `~/.openclaw/workspace`.
+За замовчуванням: `~/.openclaw/workspace`.
```json5
{
@@ -866,7 +866,7 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.repoRoot`
-Необов'язковий корінь репозиторію, що показується в рядку Runtime системного prompt. Якщо не встановлено, OpenClaw автоматично визначає його, піднімаючись вгору від workspace.
+Необов’язковий корінь репозиторію, що показується в рядку Runtime системного prompt. Якщо не задано, OpenClaw визначає його автоматично, піднімаючись вгору від workspace.
```json5
{
@@ -876,7 +876,7 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.skills`
-Необов'язковий типовий allowlist Skills для агентів, які не задають
+Необов’язковий allowlist Skills за замовчуванням для агентів, які не задають
`agents.list[].skills`.
```json5
@@ -885,18 +885,18 @@ IRC підтримується як extension і налаштовується в
defaults: { skills: ["github", "weather"] },
list: [
{ id: "writer" }, // успадковує github, weather
- { id: "docs", skills: ["docs-search"] }, // замінює типові
- { id: "locked-down", skills: [] }, // без skills
+ { id: "docs", skills: ["docs-search"] }, // замінює значення за замовчуванням
+ { id: "locked-down", skills: [] }, // без Skills
],
},
}
```
-- Пропустіть `agents.defaults.skills`, щоб типово не обмежувати Skills.
-- Пропустіть `agents.list[].skills`, щоб успадкувати типові значення.
-- Установіть `agents.list[].skills: []`, щоб вимкнути всі skills.
-- Непорожній список `agents.list[].skills` є остаточним набором для цього агента; він
- не об'єднується з типовими значеннями.
+- Пропустіть `agents.defaults.skills`, щоб за замовчуванням Skills не обмежувалися.
+- Пропустіть `agents.list[].skills`, щоб успадкувати значення за замовчуванням.
+- Установіть `agents.list[].skills: []`, щоб не було жодних Skills.
+- Непорожній список `agents.list[].skills` — це остаточний набір для цього агента; він
+ не зливається зі значеннями за замовчуванням.
### `agents.defaults.skipBootstrap`
@@ -910,7 +910,7 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.bootstrapMaxChars`
-Максимальна кількість символів у кожному bootstrap-файлі workspace до обрізання. Типове значення: `20000`.
+Максимальна кількість символів на bootstrap-файл workspace до обрізання. За замовчуванням: `20000`.
```json5
{
@@ -920,7 +920,7 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.bootstrapTotalMaxChars`
-Максимальна загальна кількість символів, що додаються з усіх bootstrap-файлів workspace. Типове значення: `150000`.
+Максимальна загальна кількість символів, що вставляються в усі bootstrap-файли workspace. За замовчуванням: `150000`.
```json5
{
@@ -930,12 +930,12 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.bootstrapPromptTruncationWarning`
-Керує текстом попередження, видимим агенту, коли bootstrap-контекст обрізано.
-Типове значення: `"once"`.
+Керує видимим для агента попереджувальним текстом, коли bootstrap-контекст обрізано.
+За замовчуванням: `"once"`.
-- `"off"`: ніколи не додавати текст попередження в системний prompt.
-- `"once"`: додавати попередження один раз для кожного унікального підпису обрізання (рекомендовано).
-- `"always"`: додавати попередження під час кожного запуску, коли є обрізання.
+- `"off"`: ніколи не вставляти текст попередження в system prompt.
+- `"once"`: вставляти попередження один раз для кожного унікального підпису обрізання (рекомендовано).
+- `"always"`: вставляти попередження при кожному запуску, якщо є обрізання.
```json5
{
@@ -945,10 +945,10 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.imageMaxDimensionPx`
-Максимальний розмір у пікселях для довшої сторони зображення в блоках transcript/tool перед викликами провайдера.
-Типове значення: `1200`.
+Максимальний розмір у пікселях для найдовшої сторони зображення в блоках зображень transcript/tool перед викликами постачальника.
+За замовчуванням: `1200`.
-Нижчі значення зазвичай зменшують використання vision-token і розмір payload запиту для запусків із великою кількістю скриншотів.
+Нижчі значення зазвичай зменшують використання vision-token і розмір payload запиту для запусків із великою кількістю знімків екрана.
Вищі значення зберігають більше візуальних деталей.
```json5
@@ -959,7 +959,7 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.userTimezone`
-Часовий пояс для контексту системного prompt (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста.
+Часовий пояс для контексту system prompt (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста.
```json5
{
@@ -969,7 +969,7 @@ IRC підтримується як extension і налаштовується в
### `agents.defaults.timeFormat`
-Формат часу в системному prompt. Типове значення: `auto` (налаштування ОС).
+Формат часу в system prompt. За замовчуванням: `auto` (налаштування ОС).
```json5
{
@@ -1007,7 +1007,7 @@ IRC підтримується як extension і налаштовується в
primary: "anthropic/claude-opus-4-6",
fallbacks: ["openai/gpt-5.4-mini"],
},
- params: { cacheRetention: "long" }, // глобальні типові параметри провайдера
+ params: { cacheRetention: "long" }, // глобальні параметри постачальника за замовчуванням
pdfMaxBytesMb: 10,
pdfMaxPages: 20,
thinkingDefault: "low",
@@ -1022,43 +1022,43 @@ IRC підтримується як extension і налаштовується в
}
```
-- `model`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
+- `model`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- Форма рядка задає лише основну модель.
- - Форма об'єкта задає основну модель плюс впорядковані резервні моделі failover.
-- `imageModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
- - Використовується шляхом інструмента `image` як його конфігурація vision-model.
- - Також використовується для резервної маршрутизації, коли вибрана/типова модель не може приймати вхідні зображення.
-- `imageGenerationModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
- - Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею tools/plugins, що генерує зображення.
+ - Форма об’єкта задає основну модель плюс впорядковані failover-моделі.
+- `imageModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
+ - Використовується шляхом інструмента `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` усе одно може визначити значення провайдера за замовчуванням на основі автентифікації. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації зображень у порядку provider-id.
-- `musicGenerationModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
- - Використовується спільною можливістю генерації музики і вбудованим інструментом `music_generate`.
+ - Якщо ви напряму вибираєте 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` усе одно може визначити значення провайдера за замовчуванням на основі автентифікації. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації музики у порядку provider-id.
- - Якщо ви безпосередньо вибираєте `provider/model`, також налаштуйте відповідну автентифікацію/ключ API провайдера.
-- `videoGenerationModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
- - Використовується спільною можливістю генерації відео і вбудованим інструментом `video_generate`.
+ - Якщо пропущено, `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` усе одно може визначити значення провайдера за замовчуванням на основі автентифікації. Спочатку він пробує поточного провайдера за замовчуванням, а потім решту зареєстрованих провайдерів генерації відео у порядку provider-id.
- - Якщо ви безпосередньо вибираєте `provider/model`, також налаштуйте відповідну автентифікацію/ключ API провайдера.
- - Вбудований провайдер генерації відео Qwen наразі підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня провайдера `size`, `aspectRatio`, `resolution`, `audio` і `watermark`.
-- `pdfModel`: приймає або рядок (`"provider/model"`), або об'єкт (`{ primary, fallbacks }`).
+ - Якщо пропущено, `video_generate` все одно може вивести значення постачальника за замовчуванням на основі автентифікації. Спочатку він пробує поточного постачальника за замовчуванням, а потім решту зареєстрованих постачальників генерації відео в порядку provider-id.
+ - Якщо ви напряму вибираєте provider/model, налаштуйте й відповідну автентифікацію постачальника/API key.
+ - Постачальник генерації відео Qwen у комплекті наразі підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри рівня постачальника `size`, `aspectRatio`, `resolution`, `audio` та `watermark`.
+- `pdfModel`: приймає або рядок (`"provider/model"`), або об’єкт (`{ primary, fallbacks }`).
- Використовується інструментом `pdf` для маршрутизації моделі.
- - Якщо пропущено, інструмент PDF повертається до `imageModel`, а потім до визначеної моделі сесії/типової моделі.
-- `pdfMaxBytesMb`: типовий ліміт розміру PDF для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику.
-- `pdfMaxPages`: типова максимальна кількість сторінок, які враховуються в режимі резервного видобування в інструменті `pdf`.
-- `verboseDefault`: типовий рівень verbose для агентів. Значення: `"off"`, `"on"`, `"full"`. Типове значення: `"off"`.
-- `elevatedDefault`: типовий рівень elevated-output для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. Типове значення: `"on"`.
-- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо ви пропускаєте провайдера, OpenClaw спочатку пробує alias, потім унікальний збіг налаштованого провайдера для цього точного model id, і лише потім повертається до налаштованого провайдера за замовчуванням (застаріла поведінка сумісності, тому надавайте перевагу явному `provider/model`). Якщо цей провайдер більше не надає налаштовану модель за замовчуванням, OpenClaw повертається до першого налаштованого провайдера/моделі, замість того щоб показувати застаріле значення типового провайдера, який уже видалено.
-- `models`: налаштований каталог моделей і allowlist для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для провайдера, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`).
-- `params`: глобальні типові параметри провайдера, що застосовуються до всіх моделей. Установлюються в `agents.defaults.params` (наприклад `{ cacheRetention: "long" }`).
-- Пріоритет об'єднання `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається через `agents.defaults.models["provider/model"].params` (для окремої моделі), а потім `agents.list[].params` (для відповідного agent id) перевизначає за ключем. Докладніше див. [Prompt Caching](/uk/reference/prompt-caching).
-- Засоби запису конфігурації, які змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об'єкта і по можливості зберігають наявні списки fallback.
-- `maxConcurrent`: максимальна кількість паралельних запусків агентів у різних сесіях (кожна сесія все одно серіалізується). Типове значення: 4.
+ - Якщо пропущено, інструмент PDF повертається до `imageModel`, а потім до визначеної моделі сеансу/типової моделі.
+- `pdfMaxBytesMb`: ліміт розміру PDF за замовчуванням для інструмента `pdf`, коли `maxBytesMb` не передано під час виклику.
+- `pdfMaxPages`: максимальна кількість сторінок за замовчуванням, що розглядаються в резервному режимі витягування для інструмента `pdf`.
+- `verboseDefault`: рівень verbose за замовчуванням для агентів. Значення: `"off"`, `"on"`, `"full"`. За замовчуванням: `"off"`.
+- `elevatedDefault`: рівень elevated-output за замовчуванням для агентів. Значення: `"off"`, `"on"`, `"ask"`, `"full"`. За замовчуванням: `"on"`.
+- `model.primary`: формат `provider/model` (наприклад `openai/gpt-5.4`). Якщо ви пропустите постачальника, OpenClaw спочатку спробує alias, потім унікальний збіг точного model id серед налаштованих постачальників, і лише потім повернеться до налаштованого постачальника за замовчуванням (застаріла сумісна поведінка, тому віддавайте перевагу явному `provider/model`). Якщо цей постачальник більше не надає налаштовану модель за замовчуванням, OpenClaw повернеться до першої налаштованої provider/model замість того, щоб показувати застаріле значення постачальника за замовчуванням, якого вже немає.
+- `models`: налаштований каталог моделей і allowlist для `/model`. Кожен запис може містити `alias` (скорочення) і `params` (специфічні для постачальника, наприклад `temperature`, `maxTokens`, `cacheRetention`, `context1m`).
+- `params`: глобальні параметри постачальника за замовчуванням, що застосовуються до всіх моделей. Задаються в `agents.defaults.params` (наприклад `{ cacheRetention: "long" }`).
+- Пріоритет злиття `params` (конфігурація): `agents.defaults.params` (глобальна база) перевизначається `agents.defaults.models["provider/model"].params` (для моделі), а потім `agents.list[].params` (для відповідного agent id) перевизначає за ключем. Докладно див. [Prompt Caching](/uk/reference/prompt-caching).
+- Засоби запису конфігурації, що змінюють ці поля (наприклад `/models set`, `/models set-image` і команди додавання/видалення fallback), зберігають канонічну форму об’єкта й за можливості зберігають наявні списки fallback.
+- `maxConcurrent`: максимальна кількість паралельних запусків агентів між сеансами (кожен сеанс усе ще серіалізований). За замовчуванням: 4.
-**Вбудовані скорочення alias** (застосовуються лише коли модель є в `agents.defaults.models`):
+**Вбудовані скорочені alias** (застосовуються лише тоді, коли модель є в `agents.defaults.models`):
| Alias | Модель |
| ------------------- | -------------------------------------- |
@@ -1071,14 +1071,14 @@ IRC підтримується як extension і налаштовується в
| `gemini-flash` | `google/gemini-3-flash-preview` |
| `gemini-flash-lite` | `google/gemini-3.1-flash-lite-preview` |
-Ваші налаштовані alias завжди мають пріоритет над типовими.
+Ваші налаштовані alias завжди мають пріоритет над значеннями за замовчуванням.
-Для моделей Z.AI GLM-4.x thinking mode вмикається автоматично, якщо ви не задасте `--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.
-- Сесії підтримуються, коли встановлено `sessionArg`.
-- Пряме передавання зображень підтримується, коли `imageArg` приймає шляхи до файлів.
+- Сеанси підтримуються, коли встановлено `sessionArg`.
+- Наскрізна передача зображень підтримується, коли `imageArg` приймає шляхи до файлів.
### `agents.defaults.heartbeat`
@@ -1092,12 +1092,12 @@ IRC підтримується як extension і налаштовується в
every: "30m", // 0m вимикає
model: "openai/gpt-5.4-mini",
includeReasoning: false,
- lightContext: false, // типово: false; true залишає тільки HEARTBEAT.md серед bootstrap-файлів workspace
- isolatedSession: false, // типово: false; true запускає кожний heartbeat у свіжій сесії (без історії розмови)
+ lightContext: false, // за замовчуванням: false; true залишає лише HEARTBEAT.md з bootstrap-файлів workspace
+ isolatedSession: false, // за замовчуванням: false; true запускає кожен heartbeat у свіжому сеансі (без історії розмови)
session: "main",
to: "+15555550123",
- directPolicy: "allow", // allow (типово) | block
- target: "none", // типово: none | варіанти: last | whatsapp | telegram | discord | ...
+ directPolicy: "allow", // allow (за замовчуванням) | block
+ target: "none", // за замовчуванням: none | варіанти: last | whatsapp | telegram | discord | ...
prompt: "Прочитай HEARTBEAT.md, якщо він існує...",
ackMaxChars: 300,
suppressToolErrorWarnings: false,
@@ -1107,13 +1107,13 @@ IRC підтримується як extension і налаштовується в
}
```
-- `every`: рядок тривалості (ms/s/m/h). Типове значення: `30m` (автентифікація API-key) або `1h` (OAuth-автентифікація). Установіть `0m`, щоб вимкнути.
-- `suppressToolErrorWarnings`: коли true, пригнічує payload-и попереджень про помилки інструментів під час запусків heartbeat.
-- `directPolicy`: політика прямої доставки/доставки в DM. `allow` (типово) дозволяє доставку до direct-target. `block` пригнічує доставку до direct-target і генерує `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`, щоб вимкнути.
+- `suppressToolErrorWarnings`: коли true, пригнічує payload попереджень про помилки інструментів під час запусків heartbeat.
+- `directPolicy`: політика прямої доставки/доставки в приватні повідомлення. `allow` (за замовчуванням) дозволяє доставку на пряму ціль. `block` пригнічує доставку на пряму ціль і видає `reason=dm-blocked`.
+- `lightContext`: коли true, heartbeat-запуски використовують полегшений bootstrap-контекст і зберігають лише `HEARTBEAT.md` із bootstrap-файлів workspace.
+- `isolatedSession`: коли true, кожен heartbeat-запуск відбувається у свіжому сеансі без попередньої історії розмов. Той самий шаблон ізоляції, що й cron `sessionTarget: "isolated"`. Зменшує витрати токенів на один heartbeat приблизно зі ~100K до ~2-5K токенів.
+- Для окремого агента: задайте `agents.list[].heartbeat`. Якщо будь-який агент визначає `heartbeat`, heartbeat запускаються **лише для цих агентів**.
+- Heartbeat виконує повні ходи агента — коротші інтервали спалюють більше токенів.
### `agents.defaults.compaction`
@@ -1126,15 +1126,15 @@ IRC підтримується як extension і налаштовується в
timeoutSeconds: 900,
reserveTokensFloor: 24000,
identifierPolicy: "strict", // strict | off | custom
- identifierInstructions: "Зберігайте deployment ID, ticket ID і пари host:port точно без змін.", // використовується, коли identifierPolicy=custom
+ identifierInstructions: "Точно зберігай deployment ID, ticket ID і пари host:port.", // використовується, коли identifierPolicy=custom
postCompactionSections: ["Session Startup", "Red Lines"], // [] вимикає повторне вставлення
- model: "openrouter/anthropic/claude-sonnet-4-6", // необов'язкове перевизначення моделі лише для compaction
- notifyUser: true, // надсилати коротке сповіщення, коли починається compaction (типово: false)
+ model: "openrouter/anthropic/claude-sonnet-4-6", // необов’язкове перевизначення моделі лише для compaction
+ notifyUser: true, // надіслати коротке повідомлення, коли compaction починається (за замовчуванням: false)
memoryFlush: {
enabled: true,
softThresholdTokens: 6000,
- systemPrompt: "Сесія наближається до compaction. Збережіть довготривалу пам'ять зараз.",
- prompt: "Запишіть будь-які довготривалі нотатки в memory/YYYY-MM-DD.md; відповідайте точним silent token NO_REPLY, якщо зберігати нічого.",
+ systemPrompt: "Сеанс наближається до compaction. Збережи тривалі спогади зараз.",
+ prompt: "Запиши будь-які довготривалі нотатки в memory/YYYY-MM-DD.md; відповідай точним тихим токеном NO_REPLY, якщо зберігати нічого.",
},
},
},
@@ -1142,18 +1142,18 @@ IRC підтримується як extension і налаштовується в
}
```
-- `mode`: `default` або `safeguard` (chunked summarization для довгої історії). Див. [Compaction](/uk/concepts/compaction).
-- `timeoutSeconds`: максимальна кількість секунд для однієї операції compaction, після якої OpenClaw її перериває. Типове значення: `900`.
-- `identifierPolicy`: `strict` (типово), `off` або `custom`. `strict` додає вбудовану інструкцію зі збереження opaque identifier під час summarization для compaction.
-- `identifierInstructions`: необов'язковий власний текст для збереження identifier, який використовується, коли `identifierPolicy=custom`.
-- `postCompactionSections`: необов'язкові назви секцій H2/H3 із AGENTS.md, які треба повторно вставити після compaction. Типово `["Session Startup", "Red Lines"]`; установіть `[]`, щоб вимкнути повторне вставлення. Якщо поле не задане або явно встановлене в цю типову пару, старі заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант.
-- `model`: необов'язкове перевизначення `provider/model-id` лише для summarization під час compaction. Використовуйте це, коли основна сесія має залишатися на одній моделі, а зведення compaction мають виконуватись на іншій; якщо не встановлено, compaction використовує основну модель сесії.
-- `notifyUser`: коли `true`, надсилає користувачеві коротке повідомлення, коли починається compaction (наприклад, "Compacting context..."). Типово вимкнено, щоб compaction проходив непомітно.
-- `memoryFlush`: тихий agentic turn перед auto-compaction для збереження довготривалої пам'яті. Пропускається, коли workspace доступний лише для читання.
+- `mode`: `default` або `safeguard` (узагальнення довгої історії шматками). Див. [Compaction](/uk/concepts/compaction).
+- `timeoutSeconds`: максимальна кількість секунд, відведених на одну операцію compaction, після чого OpenClaw її перериває. За замовчуванням: `900`.
+- `identifierPolicy`: `strict` (за замовчуванням), `off` або `custom`. `strict` додає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час узагальнення compaction.
+- `identifierInstructions`: необов’язковий користувацький текст щодо збереження ідентифікаторів, який використовується, коли `identifierPolicy=custom`.
+- `postCompactionSections`: необов’язкові назви секцій H2/H3 з AGENTS.md для повторного вставлення після compaction. За замовчуванням `["Session Startup", "Red Lines"]`; встановіть `[]`, щоб вимкнути повторне вставлення. Якщо не задано або явно встановлено цю пару за замовчуванням, старі заголовки `Every Session`/`Safety` також приймаються як застарілий резервний варіант.
+- `model`: необов’язкове перевизначення `provider/model-id` лише для узагальнення compaction. Використовуйте це, коли основний сеанс має залишатися на одній моделі, але підсумки compaction повинні виконуватися на іншій; якщо не задано, compaction використовує основну модель сеансу.
+- `notifyUser`: коли `true`, надсилає користувачеві коротке повідомлення, коли починається compaction (наприклад, `"Compacting context..."`). За замовчуванням вимкнено, щоб compaction залишався тихим.
+- `memoryFlush`: тихий агентний хід перед auto-compaction для збереження довговічної пам’яті. Пропускається, коли workspace доступний лише для читання.
### `agents.defaults.contextPruning`
-Обрізає **старі результати інструментів** із контексту в пам'яті перед надсиланням до LLM. **Не** змінює історію сесії на диску.
+Обрізає **старі результати інструментів** із контексту в пам’яті перед надсиланням до LLM. **Не** змінює історію сеансу на диску.
```json5
{
@@ -1161,7 +1161,7 @@ IRC підтримується як extension і налаштовується в
defaults: {
contextPruning: {
mode: "cache-ttl", // off | cache-ttl
- ttl: "1h", // тривалість (ms/s/m/h), типова одиниця: хвилини
+ ttl: "1h", // тривалість (ms/s/m/h), одиниця за замовчуванням: хвилини
keepLastAssistants: 3,
softTrimRatio: 0.3,
hardClearRatio: 0.5,
@@ -1177,23 +1177,23 @@ IRC підтримується як extension і налаштовується в
-- `mode: "cache-ttl"` вмикає проходи pruning.
-- `ttl` керує тим, як часто pruning може запускатися знову (після останнього cache touch).
-- Pruning спочатку виконує soft-trim для завеликих результатів інструментів, а потім за потреби повністю очищає старіші результати інструментів.
+- `mode: "cache-ttl"` вмикає проходи обрізання.
+- `ttl` визначає, як часто обрізання може запускатися знову (після останнього торкання кешу).
+- Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім, якщо потрібно, повністю очищає старіші результати інструментів.
-**Soft-trim** зберігає початок + кінець і вставляє `...` посередині.
+**М’яке скорочення** зберігає початок і кінець та вставляє `...` посередині.
-**Hard-clear** замінює весь результат інструмента на placeholder.
+**Повне очищення** замінює весь результат інструмента заповнювачем.
Примітки:
-- Блоки зображень ніколи не обрізаються й не очищаються.
-- Співвідношення базуються на символах (приблизно), а не на точних token counts.
-- Якщо існує менше ніж `keepLastAssistants` повідомлень assistant, pruning пропускається.
+- Блоки зображень ніколи не обрізаються і не очищаються.
+- Коефіцієнти ґрунтуються на символах (приблизно), а не на точній кількості токенів.
+- Якщо є менше ніж `keepLastAssistants` повідомлень асистента, обрізання пропускається.
-Докладніше про поведінку див. у [Session Pruning](/uk/concepts/session-pruning).
+Докладно про поведінку див. [Session Pruning](/uk/concepts/session-pruning).
### Block streaming
@@ -1211,11 +1211,11 @@ IRC підтримується як extension і налаштовується в
}
```
-- Канали, відмінні від Telegram, вимагають явного `*.blockStreaming: true`, щоб увімкнути block replies.
-- Перевизначення для каналу: `channels..blockStreamingCoalesce` (і варіанти для окремих акаунтів). Для Signal/Slack/Discord/Google Chat типово `minChars: 1500`.
-- `humanDelay`: випадкова пауза між block replies. `natural` = 800–2500ms. Перевизначення для агента: `agents.list[].humanDelay`.
+- Канали, окрім Telegram, потребують явного `*.blockStreaming: true`, щоб увімкнути блокові відповіді.
+- Перевизначення для каналів: `channels..blockStreamingCoalesce` (і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat за замовчуванням `minChars: 1500`.
+- `humanDelay`: випадкова пауза між блоковими відповідями. `natural` = 800–2500ms. Перевизначення для агента: `agents.list[].humanDelay`.
-Подробиці про поведінку і розбиття на chunk див. у [Streaming](/uk/concepts/streaming).
+Про поведінку й деталі chunking див. [Streaming](/uk/concepts/streaming).
### Індикатори набору тексту
@@ -1230,16 +1230,16 @@ IRC підтримується як extension і налаштовується в
}
```
-- Типові значення: `instant` для приватних чатів/згадок, `message` для групових чатів без згадки.
-- Перевизначення для сесії: `session.typingMode`, `session.typingIntervalSeconds`.
+- За замовчуванням: `instant` для приватних чатів/згадувань, `message` для групових чатів без згадування.
+- Перевизначення для сеансу: `session.typingMode`, `session.typingIntervalSeconds`.
-Докладніше див. у [Typing Indicators](/uk/concepts/typing-indicators).
+Див. [Typing Indicators](/uk/concepts/typing-indicators).
### `agents.defaults.sandbox`
-Необов'язкове sandboxing для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
+Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у [Sandboxing](/uk/gateway/sandboxing).
```json5
{
@@ -1285,7 +1285,7 @@ IRC підтримується як extension і налаштовується в
identityFile: "~/.ssh/id_ed25519",
certificateFile: "~/.ssh/id_ed25519-cert.pub",
knownHostsFile: "~/.ssh/known_hosts",
- // Також підтримуються SecretRef / inline contents:
+ // SecretRef / вбудований вміст також підтримуються:
// identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" },
// certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" },
// knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" },
@@ -1334,52 +1334,52 @@ IRC підтримується як extension і налаштовується в
}
```
-
+
**Backend:**
-- `docker`: локальний runtime Docker (типово)
-- `ssh`: загальний віддалений runtime на базі SSH
-- `openshell`: runtime OpenShell
+- `docker`: локальне середовище Docker (за замовчуванням)
+- `ssh`: загальне віддалене середовище на основі SSH
+- `openshell`: середовище OpenShell
-Коли вибрано `backend: "openshell"`, специфічні для runtime налаштування
-переміщуються до `plugins.entries.openshell.config`.
+Коли вибрано `backend: "openshell"`, налаштування, специфічні для середовища виконання, переміщуються до
+`plugins.entries.openshell.config`.
**Конфігурація SSH backend:**
-- `target`: SSH target у форматі `user@host[:port]`
-- `command`: команда SSH client (типово: `ssh`)
-- `workspaceRoot`: абсолютний віддалений корінь для workspace на рівні scope
-- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, що передаються в OpenSSH
-- `identityData` / `certificateData` / `knownHostsData`: inline contents або SecretRef, які OpenClaw materializes у тимчасові файли під час runtime
-- `strictHostKeyChecking` / `updateHostKeys`: параметри політики host-key OpenSSH
+- `target`: SSH-ціль у форматі `user@host[:port]`
+- `command`: команда SSH-клієнта (за замовчуванням: `ssh`)
+- `workspaceRoot`: абсолютний віддалений корінь, що використовується для workspace за областями
+- `identityFile` / `certificateFile` / `knownHostsFile`: наявні локальні файли, які передаються OpenSSH
+- `identityData` / `certificateData` / `knownHostsData`: вбудований вміст або SecretRef, які OpenClaw матеріалізує в тимчасові файли під час виконання
+- `strictHostKeyChecking` / `updateHostKeys`: параметри політики ключів хоста OpenSSH
-**Пріоритет SSH auth:**
+**Пріоритет автентифікації SSH:**
- `identityData` має пріоритет над `identityFile`
- `certificateData` має пріоритет над `certificateFile`
- `knownHostsData` має пріоритет над `knownHostsFile`
-- Значення `*Data` на основі SecretRef визначаються з активного snapshot runtime секретів перед стартом sandbox-сесії
+- Значення `*Data` на основі SecretRef визначаються з активного знімка середовища виконання secrets до початку сеансу sandbox
**Поведінка SSH backend:**
-- засіває віддалений workspace один раз після create або recreate
-- потім підтримує віддалений SSH workspace як канонічний
-- маршрутизує `exec`, файлові інструменти і media path через SSH
-- не синхронізує автоматично віддалені зміни назад на хост
-- не підтримує sandbox browser container
+- один раз засіває віддалений workspace після створення або повторного створення
+- потім зберігає віддалений SSH workspace канонічним
+- маршрутизує `exec`, файлові інструменти й media paths через SSH
+- не синхронізує віддалені зміни назад на хост автоматично
+- не підтримує браузерні контейнери sandbox
**Доступ до workspace:**
-- `none`: sandbox workspace для кожного scope у `~/.openclaw/sandboxes`
+- `none`: sandbox workspace для кожної області під `~/.openclaw/sandboxes`
- `ro`: sandbox workspace в `/workspace`, workspace агента монтується лише для читання в `/agent`
-- `rw`: workspace агента монтується для читання/запису в `/workspace`
+- `rw`: workspace агента монтується на читання/запис у `/workspace`
-**Scope:**
+**Область:**
-- `session`: контейнер + workspace для окремої сесії
-- `agent`: один контейнер + workspace на агента (типово)
-- `shared`: спільний контейнер і workspace (без ізоляції між сесіями)
+- `session`: контейнер + workspace для кожного сеансу
+- `agent`: один контейнер + workspace на агента (за замовчуванням)
+- `shared`: спільний контейнер і workspace (без ізоляції між сеансами)
**Конфігурація plugin OpenShell:**
@@ -1394,10 +1394,10 @@ IRC підтримується як extension і налаштовується в
from: "openclaw",
remoteWorkspaceDir: "/sandbox",
remoteAgentWorkspaceDir: "/agent",
- gateway: "lab", // необов'язково
- gatewayEndpoint: "https://lab.example", // необов'язково
- policy: "strict", // необов'язковий ID політики OpenShell
- providers: ["openai"], // необов'язково
+ gateway: "lab", // необов’язково
+ gatewayEndpoint: "https://lab.example", // необов’язково
+ policy: "strict", // необов’язковий id політики OpenShell
+ providers: ["openai"], // необов’язково
autoProviders: true,
timeoutSeconds: 120,
},
@@ -1409,30 +1409,30 @@ IRC підтримується як extension і налаштовується в
**Режим OpenShell:**
-- `mirror`: засіяти remote з local перед exec, синхронізувати назад після exec; локальний workspace залишається канонічним
-- `remote`: засіяти remote один раз, коли створюється sandbox, а потім віддалений workspace залишається канонічним
+- `mirror`: засіяти віддалене середовище з локального перед exec, синхронізувати назад після exec; локальний workspace залишається канонічним
+- `remote`: один раз засіяти віддалене середовище, коли створюється sandbox, а потім зберігати віддалений workspace канонічним
-У режимі `remote` локальні редагування на хості, зроблені поза OpenClaw, не синхронізуються автоматично в sandbox після початкового засівання.
-Транспорт — SSH до sandbox OpenShell, але plugin керує життєвим циклом sandbox і необов'язковою mirror sync.
+У режимі `remote` локальні редагування хоста, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку засівання.
+Транспортом є SSH до sandbox OpenShell, але plugin володіє життєвим циклом sandbox і необов’язковою дзеркальною синхронізацією.
-**`setupCommand`** запускається один раз після створення контейнера (через `sh -lc`). Потрібні вихід у мережу, записуваний root і користувач root.
+**`setupCommand`** запускається один раз після створення контейнера (через `sh -lc`). Потрібні вихід у мережу, записуваний корінь і root user.
-**Для контейнерів типово встановлено `network: "none"`** — задайте `"bridge"` (або власну bridge-мережу), якщо агенту потрібен вихід назовні.
-`"host"` заблоковано. `"container:"` типово заблоковано, якщо ви явно не встановите
-`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (break-glass).
+**Для контейнерів за замовчуванням встановлено `network: "none"`** — встановіть `"bridge"` (або користувацьку bridge network), якщо агенту потрібен вихідний доступ.
+`"host"` заблоковано. `"container:"` заблоковано за замовчуванням, якщо ви явно не встановите
+`sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true` (аварійний доступ).
-**Вхідні вкладення** поміщаються в `media/inbound/*` в активному workspace.
+**Вхідні вкладення** розміщуються в `media/inbound/*` в активному workspace.
-**`docker.binds`** монтує додаткові каталоги хоста; глобальні й per-agent binds об'єднуються.
+**`docker.binds`** монтує додаткові каталоги хоста; глобальні та для окремих агентів binds зливаються.
-**Sandboxed browser** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC додається в системний prompt. Не потребує `browser.enabled` в `openclaw.json`.
-Доступ спостерігача через noVNC типово використовує VNC auth, а OpenClaw видає URL з короткоживучим токеном (замість того щоб показувати пароль у спільному URL).
+**Браузер у sandbox** (`sandbox.browser.enabled`): Chromium + CDP у контейнері. URL noVNC вставляється в system prompt. Не потребує `browser.enabled` в `openclaw.json`.
+Доступ спостерігача noVNC за замовчуванням використовує автентифікацію VNC, а OpenClaw видає URL із короткоживучим токеном (замість того, щоб показувати пароль у спільному URL).
-- `allowHostControl: false` (типово) блокує для sandboxed-сесій націлення на browser хоста.
-- `network` типово `openclaw-sandbox-browser` (окрема bridge-мережа). Установлюйте `bridge` лише коли явно потрібна глобальна bridge-підключеність.
-- `cdpSourceRange` може обмежувати вхідний CDP на рівні контейнера певним діапазоном CIDR (наприклад `172.21.0.1/32`).
-- `sandbox.browser.binds` монтує додаткові каталоги хоста лише до контейнера sandbox browser. Якщо встановлено (включно з `[]`), замінює `docker.binds` для контейнера browser.
-- Типові параметри запуску визначено в `scripts/sandbox-browser-entrypoint.sh` і налаштовано для контейнерних хостів:
+- `allowHostControl: false` (за замовчуванням) блокує націлювання sandbox-сеансів на браузер хоста.
+- `network` за замовчуванням — `openclaw-sandbox-browser` (виділена bridge network). Встановлюйте `bridge`, лише якщо вам явно потрібна глобальна bridge connectivity.
+- `cdpSourceRange` може необов’язково обмежувати вхідний CDP на межі контейнера до CIDR-діапазону (наприклад `172.21.0.1/32`).
+- `sandbox.browser.binds` монтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо задано (включно з `[]`), він замінює `docker.binds` для контейнера браузера.
+- Значення запуску за замовчуванням визначені в `scripts/sandbox-browser-entrypoint.sh` і налаштовані для контейнерних хостів:
- `--remote-debugging-address=127.0.0.1`
- `--remote-debugging-port=`
- `--user-data-dir=${HOME}/.chrome`
@@ -1449,28 +1449,28 @@ IRC підтримується як extension і налаштовується в
- `--renderer-process-limit=2`
- `--no-zygote`
- `--metrics-recording-only`
- - `--disable-extensions` (типово увімкнено)
+ - `--disable-extensions` (увімкнено за замовчуванням)
- `--disable-3d-apis`, `--disable-software-rasterizer` і `--disable-gpu`
- типово ввімкнені й можуть бути вимкнені через
- `OPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0`, якщо потрібне використання WebGL/3D.
- - `OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0` знову вмикає 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`.
- - Типові значення є базовими для контейнерного image; щоб змінити їх, використовуйте власний browser image з власним
- entrypoint.
+ `OPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=`; установіть `0`, щоб використати
+ значення процесного ліміту Chromium за замовчуванням.
+ - а також `--no-sandbox` і `--disable-setuid-sandbox`, коли увімкнено `noSandbox`.
+ - Значення за замовчуванням — це базова конфігурація образу контейнера; використовуйте кастомний
+ образ браузера з кастомним entrypoint, щоб змінити значення контейнера за замовчуванням.
-Browser sandboxing і `sandbox.docker.binds` наразі підтримуються лише для Docker.
+Ізоляція браузера та `sandbox.docker.binds` наразі підтримуються лише для Docker.
-Побудова образів:
+Зібрати образи:
```bash
-scripts/sandbox-setup.sh # основний sandbox image
-scripts/sandbox-browser-setup.sh # необов'язковий browser image
+scripts/sandbox-setup.sh # основний образ sandbox
+scripts/sandbox-browser-setup.sh # необов’язковий образ браузера
```
### `agents.list` (перевизначення для окремого агента)
@@ -1482,15 +1482,15 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
{
id: "main",
default: true,
- name: "Main Agent",
+ name: "Головний агент",
workspace: "~/.openclaw/workspace",
agentDir: "~/.openclaw/agents/main/agent",
model: "anthropic/claude-opus-4-6", // або { primary, fallbacks }
- thinkingDefault: "high", // перевизначення рівня thinking для агента
- reasoningDefault: "on", // перевизначення видимості reasoning для агента
- fastModeDefault: false, // перевизначення fast mode для агента
- params: { cacheRetention: "none" }, // перевизначає відповідні defaults.models params за ключами
- skills: ["docs-search"], // замінює agents.defaults.skills, якщо задано
+ thinkingDefault: "high", // перевизначення рівня thinking для окремого агента
+ reasoningDefault: "on", // перевизначення видимості reasoning для окремого агента
+ fastModeDefault: false, // перевизначення fast mode для окремого агента
+ params: { cacheRetention: "none" }, // перевизначає ключі matching defaults.models params
+ skills: ["docs-search"], // замінює agents.defaults.skills, коли задано
identity: {
name: "Samantha",
theme: "helpful sloth",
@@ -1521,26 +1521,26 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
}
```
-- `id`: стабільний ID агента (обов'язково).
-- `default`: якщо встановлено для кількох, перемагає перший (логуватиметься попередження). Якщо не встановлено ніде, default — перший елемент у списку.
-- `model`: форма рядка перевизначає лише `primary`; форма об'єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron jobs, що перевизначають лише `primary`, і далі успадковують типові fallback, якщо ви не встановите `fallbacks: []`.
-- `params`: stream-параметри для окремого агента, що об'єднуються поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для специфічних для агента перевизначень на кшталт `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей.
-- `skills`: необов'язковий allowlist Skills для окремого агента. Якщо поле пропущено, агент успадковує `agents.defaults.skills`, якщо його встановлено; явний список замінює типові значення, а не об'єднується з ними, і `[]` означає відсутність skills.
-- `thinkingDefault`: необов'язковий типовий рівень thinking для агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, якщо не встановлено перевизначення для окремого повідомлення або сесії.
-- `reasoningDefault`: необов'язкове типове значення видимості reasoning для агента (`on | off | stream`). Застосовується, якщо немає перевизначення reasoning для окремого повідомлення або сесії.
-- `fastModeDefault`: необов'язкове типове значення fast mode для агента (`true | false`). Застосовується, якщо немає перевизначення fast-mode для окремого повідомлення або сесії.
-- `runtime`: необов'язковий дескриптор runtime для агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент має типово використовувати сесії ACP harness.
-- `identity.avatar`: шлях відносно workspace, URL `http(s)` або URI `data:`.
-- `identity` виводить типові значення: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`.
-- `subagents.allowAgents`: allowlist ID агентів для `sessions_spawn` (`["*"]` = будь-який; типово: лише той самий агент).
-- Запобіжник успадкування sandbox: якщо сесія запитувача працює в sandbox, `sessions_spawn` відхиляє цілі, які запускались би без sandbox.
-- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, у яких пропущено `agentId` (вимагає явного вибору профілю; типово: false).
+- `id`: стабільний id агента (обов’язково).
+- `default`: коли встановлено кілька, перший має пріоритет (записується попередження). Якщо жоден не встановлено, за замовчуванням використовується перший запис списку.
+- `model`: форма рядка перевизначає лише `primary`; форма об’єкта `{ primary, fallbacks }` перевизначає обидва (`[]` вимикає глобальні fallback). Cron jobs, які перевизначають лише `primary`, усе ще успадковують fallback за замовчуванням, якщо ви не задасте `fallbacks: []`.
+- `params`: параметри потоку для окремого агента, злиті поверх вибраного запису моделі в `agents.defaults.models`. Використовуйте це для перевизначень на рівні агента, таких як `cacheRetention`, `temperature` або `maxTokens`, не дублюючи весь каталог моделей.
+- `skills`: необов’язковий allowlist Skills для окремого агента. Якщо пропущено, агент успадковує `agents.defaults.skills`, коли вони задані; явний список замінює значення за замовчуванням замість злиття, а `[]` означає відсутність Skills.
+- `thinkingDefault`: необов’язковий рівень thinking за замовчуванням для окремого агента (`off | minimal | low | medium | high | xhigh | adaptive`). Перевизначає `agents.defaults.thinkingDefault` для цього агента, коли не задано перевизначення для окремого повідомлення або сеансу.
+- `reasoningDefault`: необов’язкове значення видимості reasoning за замовчуванням для окремого агента (`on | off | stream`). Застосовується, коли не задано перевизначення reasoning для окремого повідомлення або сеансу.
+- `fastModeDefault`: необов’язкове значення fast mode за замовчуванням для окремого агента (`true | false`). Застосовується, коли не задано перевизначення fast mode для окремого повідомлення або сеансу.
+- `runtime`: необов’язковий дескриптор runtime для окремого агента. Використовуйте `type: "acp"` з типовими значеннями `runtime.acp` (`agent`, `backend`, `mode`, `cwd`), коли агент повинен за замовчуванням використовувати сеанси ACP harness.
+- `identity.avatar`: шлях відносно workspace, `http(s)` URL або `data:` URI.
+- `identity` виводить значення за замовчуванням: `ackReaction` з `emoji`, `mentionPatterns` з `name`/`emoji`.
+- `subagents.allowAgents`: allowlist id агентів для `sessions_spawn` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
+- Захист успадкування sandbox: якщо сеанс-запитувач працює в sandbox, `sessions_spawn` відхиляє цілі, які запускалися б без sandbox.
+- `subagents.requireAgentId`: коли true, блокує виклики `sessions_spawn`, у яких пропущено `agentId` (змушує до явного вибору профілю; за замовчуванням: false).
---
-## Маршрутизація між кількома агентами
+## Маршрутизація між агентами
-Запускайте кількох ізольованих агентів в одному Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent).
+Запускайте кілька ізольованих агентів в одному Gateway. Див. [Multi-Agent](/uk/concepts/multi-agent).
```json5
{
@@ -1557,27 +1557,27 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
}
```
-### Поля match у binding
+### Поля збігу прив’язок
-- `type` (необов'язково): `route` для звичайної маршрутизації (якщо `type` відсутній, типово `route`), `acp` для постійних ACP-прив'язок розмов.
-- `match.channel` (обов'язково)
-- `match.accountId` (необов'язково; `*` = будь-який акаунт; якщо пропущено = акаунт за замовчуванням)
-- `match.peer` (необов'язково; `{ kind: direct|group|channel, id }`)
-- `match.guildId` / `match.teamId` (необов'язково; специфічні для каналу)
-- `acp` (необов'язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }`
+- `type` (необов’язково): `route` для звичайної маршрутизації (відсутній type означає route), `acp` для постійних ACP-прив’язок розмов.
+- `match.channel` (обов’язково)
+- `match.accountId` (необов’язково; `*` = будь-який обліковий запис; пропущено = обліковий запис за замовчуванням)
+- `match.peer` (необов’язково; `{ kind: direct|group|channel, id }`)
+- `match.guildId` / `match.teamId` (необов’язково; специфічно для каналу)
+- `acp` (необов’язково; лише для `type: "acp"`): `{ mode, label, cwd, backend }`
-**Детермінований порядок match:**
+**Детермінований порядок збігу:**
1. `match.peer`
2. `match.guildId`
3. `match.teamId`
-4. `match.accountId` (точний збіг, без peer/guild/team)
+4. `match.accountId` (точний, без peer/guild/team)
5. `match.accountId: "*"` (на весь канал)
6. Агент за замовчуванням
-У межах кожного рівня перемагає перший запис `bindings`, що збігся.
+У межах кожного рівня перший запис `bindings`, що збігся, має пріоритет.
-Для записів `type: "acp"` OpenClaw визначає відповідність за точною ідентичністю розмови (`match.channel` + акаунт + `match.peer.id`) і не використовує наведений вище порядок route binding.
+Для записів `type: "acp"` OpenClaw виконує зіставлення за точною ідентичністю розмови (`match.channel` + account + `match.peer.id`) і не використовує наведений вище порядок рівнів route binding.
### Профілі доступу для окремих агентів
@@ -1599,7 +1599,7 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
-
+
```json5
{
@@ -1628,7 +1628,7 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
-
+
```json5
{
@@ -1674,7 +1674,7 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
-Докладніше про пріоритети див. у [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools).
+Докладно про пріоритети див. [Multi-Agent Sandbox & Tools](/uk/tools/multi-agent-sandbox-tools).
---
@@ -1700,19 +1700,19 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
},
resetTriggers: ["/new", "/reset"],
store: "~/.openclaw/agents/{agentId}/sessions/sessions.json",
- parentForkMaxTokens: 100000, // пропускати fork батьківської thread вище цього token count (0 вимикає)
+ parentForkMaxTokens: 100000, // пропускати fork батьківського треду вище цього числа токенів (0 вимикає)
maintenance: {
mode: "warn", // warn | enforce
pruneAfter: "30d",
maxEntries: 500,
rotateBytes: "10mb",
resetArchiveRetention: "30d", // тривалість або false
- maxDiskBytes: "500mb", // необов'язковий жорсткий бюджет
- highWaterBytes: "400mb", // необов'язкова ціль очищення
+ maxDiskBytes: "500mb", // необов’язковий жорсткий бюджет
+ highWaterBytes: "400mb", // необов’язкова ціль очищення
},
threadBindings: {
enabled: true,
- idleHours: 24, // типове автоматичне unfocus через неактивність у годинах (`0` вимикає)
+ idleHours: 24, // типовий авто-unfocus через неактивність у годинах (`0` вимикає)
maxAgeHours: 0, // типовий жорсткий максимальний вік у годинах (`0` вимикає)
},
mainKey: "main", // застаріле (runtime завжди використовує "main")
@@ -1725,37 +1725,37 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
}
```
-
+
-- **`scope`**: базова стратегія групування session для контекстів групового чату.
- - `per-sender` (типово): кожен відправник отримує ізольовану session у контексті каналу.
- - `global`: усі учасники в контексті каналу спільно використовують одну session (використовуйте лише там, де потрібен спільний контекст).
-- **`dmScope`**: як групуються DM.
- - `main`: усі DM спільно використовують головну session.
- - `per-peer`: ізоляція за id відправника між каналами.
- - `per-channel-peer`: ізоляція за каналом + відправником (рекомендовано для inbox з кількома користувачами).
- - `per-account-channel-peer`: ізоляція за акаунтом + каналом + відправником (рекомендовано для багатоакаунтності).
-- **`identityLinks`**: мапа канонічних id до provider-prefixed peer для спільного використання session між каналами.
-- **`reset`**: основна політика reset. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує те, що закінчиться раніше.
-- **`resetByType`**: перевизначення за типом (`direct`, `group`, `thread`). Застарілий `dm` приймається як alias для `direct`.
-- **`parentForkMaxTokens`**: максимальне значення `totalTokens` батьківської session, дозволене під час створення forked thread session (типово `100000`).
- - Якщо батьківське `totalTokens` перевищує це значення, OpenClaw запускає свіжу thread session замість успадкування transcript history батьківської session.
- - Установіть `0`, щоб вимкнути цей запобіжник і завжди дозволяти parent forking.
-- **`mainKey`**: застаріле поле. Runtime тепер завжди використовує `"main"` для головного кошика direct-chat.
-- **`agentToAgent.maxPingPongTurns`**: максимальна кількість взаємних reply-back turns між агентами під час обміну агент-до-агента (ціле число, діапазон: `0`–`5`). `0` вимикає ping-pong chaining.
-- **`sendPolicy`**: зіставлення за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перший deny має пріоритет.
-- **`maintenance`**: очищення session-store + елементи керування зберіганням.
+- **`scope`**: базова стратегія групування сеансів для контекстів групових чатів.
+ - `per-sender` (за замовчуванням): кожен відправник отримує ізольований сеанс у контексті каналу.
+ - `global`: усі учасники в контексті каналу спільно використовують один сеанс (використовуйте лише тоді, коли потрібен спільний контекст).
+- **`dmScope`**: як групуються приватні повідомлення.
+ - `main`: усі приватні повідомлення спільно використовують головний сеанс.
+ - `per-peer`: ізолювати за id відправника між каналами.
+ - `per-channel-peer`: ізолювати за каналом + відправником (рекомендовано для вхідних скриньок із кількома користувачами).
+ - `per-account-channel-peer`: ізолювати за обліковим записом + каналом + відправником (рекомендовано для багатообліковості).
+- **`identityLinks`**: мапа канонічних id до peer із префіксами постачальників для спільного використання сеансів між каналами.
+- **`reset`**: основна політика скидання. `daily` скидає о `atHour` за місцевим часом; `idle` скидає після `idleMinutes`. Якщо налаштовано обидва, спрацьовує той, що настане раніше.
+- **`resetByType`**: перевизначення для типів (`direct`, `group`, `thread`). Застарілий `dm` приймається як alias для `direct`.
+- **`parentForkMaxTokens`**: максимальна дозволена кількість `totalTokens` у батьківському сеансі при створенні forked thread session (за замовчуванням `100000`).
+ - Якщо `totalTokens` батьківського сеансу вищий за це значення, OpenClaw починає новий thread session замість успадкування історії transcript батьківського сеансу.
+ - Установіть `0`, щоб вимкнути цей захист і завжди дозволяти fork від батьківського сеансу.
+- **`mainKey`**: застаріле поле. Runtime тепер завжди використовує `"main"` для основного кошика приватного чату.
+- **`agentToAgent.maxPingPongTurns`**: максимальна кількість зворотних ходів між агентами під час обміну agent-to-agent (ціле число, діапазон: `0`–`5`). `0` вимикає ланцюжки ping-pong.
+- **`sendPolicy`**: збіг за `channel`, `chatType` (`direct|group|channel`, із застарілим alias `dm`), `keyPrefix` або `rawKeyPrefix`. Перший deny має пріоритет.
+- **`maintenance`**: очищення й керування збереженням для session-store.
- `mode`: `warn` лише виводить попередження; `enforce` застосовує очищення.
- - `pruneAfter`: поріг віку для застарілих записів (типово `30d`).
- - `maxEntries`: максимальна кількість записів у `sessions.json` (типово `500`).
- - `rotateBytes`: ротація `sessions.json`, коли його розмір перевищує це значення (типово `10mb`).
- - `resetArchiveRetention`: час зберігання архівів transcript `*.reset.`. Типово дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
- - `maxDiskBytes`: необов'язковий бюджет дискового простору для каталогу сесій. У режимі `warn` логуються попередження; у режимі `enforce` спочатку видаляються найстаріші артефакти/сесії.
- - `highWaterBytes`: необов'язкова ціль після очищення за бюджетом. Типово `80%` від `maxDiskBytes`.
-- **`threadBindings`**: глобальні типові значення для функцій session, прив'язаних до thread.
- - `enabled`: головний перемикач за замовчуванням (провайдери можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
- - `idleHours`: типове автоматичне unfocus через неактивність у годинах (`0` вимикає; провайдери можуть перевизначати)
- - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; провайдери можуть перевизначати)
+ - `pruneAfter`: поріг віку для застарілих записів (за замовчуванням `30d`).
+ - `maxEntries`: максимальна кількість записів у `sessions.json` (за замовчуванням `500`).
+ - `rotateBytes`: ротує `sessions.json`, коли він перевищує цей розмір (за замовчуванням `10mb`).
+ - `resetArchiveRetention`: час збереження для архівів transcript `*.reset.`. За замовчуванням дорівнює `pruneAfter`; установіть `false`, щоб вимкнути.
+ - `maxDiskBytes`: необов’язковий бюджет дискового простору для каталогу сеансів. У режимі `warn` лише пише попередження; у режимі `enforce` спершу видаляє найстаріші артефакти/сеанси.
+ - `highWaterBytes`: необов’язкова ціль після очищення бюджету. За замовчуванням `80%` від `maxDiskBytes`.
+- **`threadBindings`**: глобальні значення за замовчуванням для функцій сеансів, прив’язаних до тредів.
+ - `enabled`: головний перемикач за замовчуванням (постачальники можуть перевизначати; Discord використовує `channels.discord.threadBindings.enabled`)
+ - `idleHours`: типовий автоматичний unfocus через неактивність у годинах (`0` вимикає; постачальники можуть перевизначати)
+ - `maxAgeHours`: типовий жорсткий максимальний вік у годинах (`0` вимикає; постачальники можуть перевизначати)
@@ -1793,36 +1793,36 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
### Префікс відповіді
-Перевизначення для каналу/акаунта: `channels..responsePrefix`, `channels..accounts..responsePrefix`.
+Перевизначення для каналу/облікового запису: `channels..responsePrefix`, `channels..accounts..responsePrefix`.
-Порядок визначення (найспецифічніше перемагає): акаунт → канал → глобальне значення. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
+Порядок розв’язання (найспецифічніше перемагає): account → channel → global. `""` вимикає й зупиняє каскад. `"auto"` виводить `[{identity.name}]`.
-**Шаблонні змінні:**
+**Змінні шаблону:**
-| Змінна | Опис | Приклад |
-| ----------------- | ------------------------ | --------------------------- |
-| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
+| Змінна | Опис | Приклад |
+| ----------------- | ----------------------- | --------------------------- |
+| `{model}` | Коротка назва моделі | `claude-opus-4-6` |
| `{modelFull}` | Повний ідентифікатор моделі | `anthropic/claude-opus-4-6` |
-| `{provider}` | Назва провайдера | `anthropic` |
+| `{provider}` | Назва постачальника | `anthropic` |
| `{thinkingLevel}` | Поточний рівень thinking | `high`, `low`, `off` |
-| `{identity.name}` | Назва identity агента | (те саме, що `"auto"`) |
+| `{identity.name}` | Ім’я identity агента | (те саме, що `"auto"`) |
Змінні нечутливі до регістру. `{think}` — alias для `{thinkingLevel}`.
-### Ack reaction
+### Реакція підтвердження
-- Типово використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
+- За замовчуванням використовується `identity.emoji` активного агента, інакше `"👀"`. Установіть `""`, щоб вимкнути.
- Перевизначення для каналу: `channels..ackReaction`, `channels..accounts..ackReaction`.
-- Порядок визначення: акаунт → канал → `messages.ackReaction` → резервне значення з identity.
-- Scope: `group-mentions` (типово), `group-all`, `direct`, `all`.
-- `removeAckAfterReply`: видаляє ack після відповіді в Slack, Discord і Telegram.
+- Порядок розв’язання: account → channel → `messages.ackReaction` → резерв із identity.
+- Область: `group-mentions` (за замовчуванням), `group-all`, `direct`, `all`.
+- `removeAckAfterReply`: видаляє реакцію підтвердження після відповіді в Slack, Discord і Telegram.
- `messages.statusReactions.enabled`: вмикає реакції статусу життєвого циклу в Slack, Discord і Telegram.
- У Slack і Discord, якщо значення не задано, статусні реакції залишаються ввімкненими, коли активні ack reaction.
- У Telegram установіть це явно в `true`, щоб увімкнути реакції статусу життєвого циклу.
+ У Slack і Discord, якщо не задано, реакції статусу залишаються ввімкненими, коли активні реакції підтвердження.
+ У Telegram явно встановіть `true`, щоб увімкнути реакції статусу життєвого циклу.
-### Вхідний debounce
+### Debounce для вхідних повідомлень
-Об'єднує швидкі текстові повідомлення від одного відправника в один хід агента. Media/вкладення скидаються негайно. Керуючі команди обходять debouncing.
+Об’єднує швидкі послідовні текстові повідомлення від одного відправника в один хід агента. Media/вкладення скидаються негайно. Керувальні команди обходять debounce.
### TTS (text-to-speech)
@@ -1865,18 +1865,18 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
}
```
-- `auto` керує автоматичним TTS. `/tts off|always|inbound|tagged` перевизначає для кожної session.
-- `summaryModel` перевизначає `agents.defaults.model.primary` для auto-summary.
-- `modelOverrides` типово увімкнено; `modelOverrides.allowProvider` типово `false` (потрібен opt-in).
-- 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-compatible TTS server і послаблює перевірку model/voice.
+- `auto` керує auto-TTS. `/tts off|always|inbound|tagged` перевизначає значення для сеансу.
+- `summaryModel` перевизначає `agents.defaults.model.primary` для авто-підсумку.
+- `modelOverrides` увімкнено за замовчуванням; `modelOverrides.allowProvider` за замовчуванням `false` (увімкнення за бажанням).
+- API keys резервно беруться з `ELEVENLABS_API_KEY`/`XI_API_KEY` і `OPENAI_API_KEY`.
+- `openai.baseUrl` перевизначає endpoint OpenAI TTS. Порядок розв’язання: конфігурація, потім `OPENAI_TTS_BASE_URL`, потім `https://api.openai.com/v1`.
+- Коли `openai.baseUrl` вказує на endpoint не OpenAI, OpenClaw трактує його як OpenAI-compatible TTS server і послаблює перевірку model/voice.
---
## Talk
-Типові параметри для режиму Talk (macOS/iOS/Android).
+Типові значення для Talk mode (macOS/iOS/Android).
```json5
{
@@ -1900,13 +1900,13 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
}
```
-- `talk.provider` має збігатися з ключем у `talk.providers`, якщо налаштовано кілька провайдерів Talk.
-- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності і автоматично мігруються в `talk.providers.`.
-- Voice ID повертаються до `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
-- `providers.*.apiKey` приймає відкриті рядки або об'єкти SecretRef.
-- Резервне значення `ELEVENLABS_API_KEY` застосовується лише тоді, коли ключ API для Talk не налаштовано.
-- `providers.*.voiceAliases` дозволяє директивам Talk використовувати дружні назви.
-- `silenceTimeoutMs` визначає, як довго режим Talk чекає після тиші користувача перед надсиланням transcript. Якщо не задано, зберігається типове для платформи вікно паузи (`700 ms на macOS і Android, 900 ms на iOS`).
+- `talk.provider` має відповідати ключу в `talk.providers`, коли налаштовано кілька постачальників Talk.
+- Застарілі плоскі ключі Talk (`talk.voiceId`, `talk.voiceAliases`, `talk.modelId`, `talk.outputFormat`, `talk.apiKey`) призначені лише для сумісності та автоматично мігруються до `talk.providers.`.
+- Voice ID резервно беруться з `ELEVENLABS_VOICE_ID` або `SAG_VOICE_ID`.
+- `providers.*.apiKey` приймає звичайні рядки або об’єкти SecretRef.
+- Резерв із `ELEVENLABS_API_KEY` застосовується лише тоді, коли не налаштовано жодного API key Talk.
+- `providers.*.voiceAliases` дає змогу директивам Talk використовувати дружні назви.
+- `silenceTimeoutMs` визначає, скільки Talk mode чекає після тиші користувача перед надсиланням transcript. Якщо не задано, зберігається стандартне вікно паузи платформи (`700 ms на macOS і Android, 900 ms на iOS`).
---
@@ -1914,16 +1914,16 @@ scripts/sandbox-browser-setup.sh # необов'язковий browser image
### Профілі інструментів
-`tools.profile` задає базовий allowlist перед `tools.allow`/`tools.deny`:
+`tools.profile` встановлює базовий allowlist перед `tools.allow`/`tools.deny`:
-Local onboarding типово встановлює для нових локальних конфігурацій `tools.profile: "coding"`, якщо це поле не задане (існуючі явно задані профілі зберігаються).
+Локальний онбординг у нових локальних конфігураціях за замовчуванням ставить `tools.profile: "coding"`, якщо значення не задано (наявні явні профілі зберігаються).
-| Профіль | Містить |
+| Профіль | Включає |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `minimal` | лише `session_status` |
| `coding` | `group:fs`, `group:runtime`, `group:web`, `group:sessions`, `group:memory`, `cron`, `image`, `image_generate`, `video_generate` |
| `messaging` | `group:messaging`, `sessions_list`, `sessions_history`, `sessions_send`, `session_status` |
-| `full` | Без обмежень (те саме, що й незадане значення) |
+| `full` | Без обмежень (те саме, що не задано) |
### Групи інструментів
@@ -1940,11 +1940,11 @@ Local onboarding типово встановлює для нових локал
| `group:nodes` | `nodes` |
| `group:agents` | `agents_list` |
| `group:media` | `image`, `image_generate`, `video_generate`, `tts` |
-| `group:openclaw` | Усі вбудовані інструменти (без provider plugin) |
+| `group:openclaw` | Усі вбудовані інструменти (крім provider plugins) |
### `tools.allow` / `tools.deny`
-Глобальна політика allow/deny для інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard `*`. Застосовується, навіть коли Docker sandbox вимкнено.
+Глобальна політика дозволу/заборони інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard `*`. Застосовується навіть тоді, коли Docker sandbox вимкнено.
```json5
{
@@ -1954,7 +1954,7 @@ Local onboarding типово встановлює для нових локал
### `tools.byProvider`
-Додатково обмежує інструменти для певних провайдерів або моделей. Порядок: базовий профіль → профіль провайдера → allow/deny.
+Додатково обмежує інструменти для конкретних постачальників або моделей. Порядок: базовий профіль → профіль постачальника → allow/deny.
```json5
{
@@ -1970,7 +1970,7 @@ Local onboarding типово встановлює для нових локал
### `tools.elevated`
-Керує elevated-доступом до exec поза sandbox:
+Керує elevated exec-доступом поза sandbox:
```json5
{
@@ -1986,9 +1986,9 @@ Local onboarding типово встановлює для нових локал
}
```
-- Перевизначення для окремого агента (`agents.list[].tools.elevated`) може лише ще більше обмежити доступ.
-- `/elevated on|off|ask|full` зберігає стан для кожної session; inline directives застосовуються лише до одного повідомлення.
-- Elevated `exec` обходить sandboxing і використовує налаштований escape path (`gateway` за замовчуванням або `node`, коли ціль exec — `node`).
+- Перевизначення для окремого агента (`agents.list[].tools.elevated`) може лише додатково обмежувати.
+- `/elevated on|off|ask|full` зберігає стан для кожного сеансу; вбудовані директиви застосовуються лише до одного повідомлення.
+- Elevated `exec` обходить sandboxing і використовує налаштований escape path (`gateway` за замовчуванням або `node`, коли ціллю exec є `node`).
### `tools.exec`
@@ -2012,8 +2012,8 @@ Local onboarding типово встановлює для нових локал
### `tools.loopDetection`
-Перевірки безпеки від циклів інструментів **типово вимкнено**. Установіть `enabled: true`, щоб увімкнути виявлення.
-Налаштування можна визначити глобально в `tools.loopDetection` і перевизначити для окремого агента в `agents.list[].tools.loopDetection`.
+Перевірки безпеки від циклів інструментів **за замовчуванням вимкнені**. Установіть `enabled: true`, щоб увімкнути виявлення.
+Налаштування можна визначати глобально в `tools.loopDetection` і перевизначати для окремого агента в `agents.list[].tools.loopDetection`.
```json5
{
@@ -2036,12 +2036,12 @@ Local onboarding типово встановлює для нових локал
- `historySize`: максимальна історія викликів інструментів, що зберігається для аналізу циклів.
- `warningThreshold`: поріг повторюваного шаблону без прогресу для попереджень.
-- `criticalThreshold`: вищий поріг повторень для блокування критичних циклів.
-- `globalCircuitBreakerThreshold`: поріг жорсткої зупинки для будь-якого запуску без прогресу.
+- `criticalThreshold`: вищий поріг повторення для блокування критичних циклів.
+- `globalCircuitBreakerThreshold`: жорсткий поріг зупинки для будь-якого запуску без прогресу.
- `detectors.genericRepeat`: попереджати про повторні виклики того самого інструмента з тими самими аргументами.
-- `detectors.knownPollNoProgress`: попереджати/блокувати відомі інструменти poll (`process.poll`, `command_status` тощо).
-- `detectors.pingPong`: попереджати/блокувати чергування пар шаблонів без прогресу.
-- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, перевірка не проходить.
+- `detectors.knownPollNoProgress`: попереджати/блокувати відомі poll-інструменти (`process.poll`, `command_status` тощо).
+- `detectors.pingPong`: попереджати/блокувати чергування парних шаблонів без прогресу.
+- Якщо `warningThreshold >= criticalThreshold` або `criticalThreshold >= globalCircuitBreakerThreshold`, перевірка завершується помилкою.
### `tools.web`
@@ -2051,14 +2051,14 @@ Local onboarding типово встановлює для нових локал
web: {
search: {
enabled: true,
- apiKey: "brave_api_key", // або BRAVE_API_KEY env
+ apiKey: "brave_api_key", // або змінна середовища BRAVE_API_KEY
maxResults: 5,
timeoutSeconds: 30,
cacheTtlMinutes: 15,
},
fetch: {
enabled: true,
- provider: "firecrawl", // необов'язково; пропустіть для auto-detect
+ provider: "firecrawl", // необов’язково; пропустіть для авто-визначення
maxChars: 50000,
maxCharsCap: 50000,
maxResponseBytes: 2000000,
@@ -2075,13 +2075,16 @@ Local onboarding типово встановлює для нових локал
### `tools.media`
-Налаштовує розуміння вхідних медіа (image/audio/video):
+Налаштовує розуміння вхідних медіа (зображення/аудіо/відео):
```json5
{
tools: {
media: {
concurrency: 2,
+ asyncCompletion: {
+ directSend: false, // увімкнення за бажанням: надсилати завершені асинхронні music/video напряму в канал
+ },
audio: {
enabled: true,
maxBytes: 20971520,
@@ -2104,12 +2107,12 @@ Local onboarding типово встановлює для нових локал
}
```
-
+
-**Запис провайдера** (`type: "provider"` або пропущено):
+**Запис постачальника** (`type: "provider"` або пропущено):
-- `provider`: ID API-провайдера (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
-- `model`: перевизначення model id
+- `provider`: id API-постачальника (`openai`, `anthropic`, `google`/`gemini`, `groq` тощо)
+- `model`: перевизначення id моделі
- `profile` / `preferredProfile`: вибір профілю `auth-profiles.json`
**CLI-запис** (`type: "cli"`):
@@ -2119,11 +2122,17 @@ Local onboarding типово встановлює для нових локал
**Спільні поля:**
-- `capabilities`: необов'язковий список (`image`, `audio`, `video`). Типові значення: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
+- `capabilities`: необов’язковий список (`image`, `audio`, `video`). За замовчуванням: `openai`/`anthropic`/`minimax` → image, `google` → image+audio+video, `groq` → audio.
- `prompt`, `maxChars`, `maxBytes`, `timeoutSeconds`, `language`: перевизначення для окремого запису.
-- У разі помилки використовується наступний запис.
+- Після збоїв використовується наступний запис.
-Автентифікація провайдера слідує стандартному порядку: `auth-profiles.json` → env vars → `models.providers.*.apiKey`.
+Автентифікація постачальника дотримується стандартного порядку: `auth-profiles.json` → змінні середовища → `models.providers.*.apiKey`.
+
+**Поля async completion:**
+
+- `asyncCompletion.directSend`: коли `true`, завершені асинхронні завдання `music_generate`
+ і `video_generate` спершу намагаються доставлятися прямо в канал. За замовчуванням: `false`
+ (застарілий шлях requester-session wake/model-delivery).
@@ -2142,9 +2151,9 @@ Local onboarding типово встановлює для нових локал
### `tools.sessions`
-Керує тим, на які session можуть націлюватися session tools (`sessions_list`, `sessions_history`, `sessions_send`).
+Керує тим, які сеанси можуть бути ціллю для session tools (`sessions_list`, `sessions_history`, `sessions_send`).
-Типове значення: `tree` (поточна session + session, створені нею, наприклад subagents).
+За замовчуванням: `tree` (поточний сеанс + сеанси, породжені ним, наприклад subagents).
```json5
{
@@ -2159,23 +2168,23 @@ Local onboarding типово встановлює для нових локал
Примітки:
-- `self`: лише поточний ключ session.
-- `tree`: поточна session + session, створені поточною session (subagents).
-- `agent`: будь-яка session, що належить поточному agent id (може включати інших користувачів, якщо ви використовуєте per-sender session під тим самим agent id).
-- `all`: будь-яка session. Націлення між агентами все одно вимагає `tools.agentToAgent`.
-- Обмеження sandbox: коли поточна session працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово встановлюється в `tree`, навіть якщо `tools.sessions.visibility="all"`.
+- `self`: лише поточний ключ сеансу.
+- `tree`: поточний сеанс + сеанси, породжені поточним сеансом (subagents).
+- `agent`: будь-який сеанс, що належить поточному agent id (може включати інших користувачів, якщо ви запускаєте сеанси per-sender під тим самим agent id).
+- `all`: будь-який сеанс. Націлювання між агентами все одно потребує `tools.agentToAgent`.
+- Обмеження sandbox: коли поточний сеанс працює в sandbox і `agents.defaults.sandbox.sessionToolsVisibility="spawned"`, видимість примусово стає `tree`, навіть якщо `tools.sessions.visibility="all"`.
### `tools.sessions_spawn`
-Керує підтримкою inline-вкладень для `sessions_spawn`.
+Керує підтримкою вбудованих вкладень для `sessions_spawn`.
```json5
{
tools: {
sessions_spawn: {
attachments: {
- enabled: false, // opt-in: установіть true, щоб дозволити inline file attachments
- maxTotalBytes: 5242880, // 5 MB сумарно для всіх файлів
+ enabled: false, // увімкнення за бажанням: установіть true, щоб дозволити вбудовані файлові вкладення
+ maxTotalBytes: 5242880, // 5 MB загалом для всіх файлів
maxFiles: 50,
maxFileBytes: 1048576, // 1 MB на файл
retainOnSessionKeep: false, // зберігати вкладення, коли cleanup="keep"
@@ -2188,15 +2197,15 @@ Local onboarding типово встановлює для нових локал
Примітки:
- Вкладення підтримуються лише для `runtime: "subagent"`. Runtime ACP їх відхиляє.
-- Файли materialize у дочірньому workspace в `.openclaw/attachments//` з `.manifest.json`.
-- Вміст вкладень автоматично redacted із збереження transcript.
-- Вхідні дані Base64 перевіряються суворою перевіркою алфавіту/падингу і запобіжником розміру до декодування.
-- Права доступу до файлів: `0700` для каталогів і `0600` для файлів.
-- Очищення слідує політиці `cleanup`: `delete` завжди видаляє вкладення; `keep` зберігає їх лише коли `retainOnSessionKeep: true`.
+- Файли матеріалізуються в child workspace у `.openclaw/attachments//` разом із `.manifest.json`.
+- Вміст вкладень автоматично редагується під час збереження transcript.
+- Входи base64 перевіряються суворими перевірками алфавіту/заповнення й захистом розміру до декодування.
+- Права доступу для каталогів — `0700`, для файлів — `0600`.
+- Очищення дотримується політики `cleanup`: `delete` завжди видаляє вкладення; `keep` залишає їх лише тоді, коли `retainOnSessionKeep: true`.
### `tools.experimental`
-Експериментальні прапорці для вбудованих інструментів. Типово вимкнені, якщо не застосовується правило автоматичного ввімкнення для певного runtime.
+Експериментальні прапорці вбудованих інструментів. За замовчуванням вимкнені, якщо не застосовується правило автоматичного ввімкнення, специфічне для runtime.
```json5
{
@@ -2211,8 +2220,8 @@ Local onboarding типово встановлює для нових локал
Примітки:
- `planTool`: вмикає структурований інструмент `update_plan` для відстеження нетривіальної багатокрокової роботи.
-- Типове значення: `false` для провайдерів, відмінних від OpenAI. Для запусків OpenAI та OpenAI Codex він вмикається автоматично.
-- Коли ввімкнено, системний prompt також додає інструкції з використання, щоб модель застосовувала його лише для суттєвої роботи й тримала не більше одного кроку в стані `in_progress`.
+- За замовчуванням: `false` для постачальників, відмінних від OpenAI. Для запусків OpenAI і OpenAI Codex він увімкнений автоматично.
+- Коли увімкнено, system prompt також додає вказівки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й тримала не більш ніж один крок у стані `in_progress`.
### `agents.defaults.subagents`
@@ -2232,21 +2241,21 @@ Local onboarding типово встановлює для нових локал
}
```
-- `model`: типова модель для створених sub-agent. Якщо пропущено, sub-agent успадковують модель викликуча.
-- `allowAgents`: типовий allowlist цільових ID агентів для `sessions_spawn`, коли агент-запитувач не задає власне `subagents.allowAgents` (`["*"]` = будь-який; типово: лише той самий агент).
-- `runTimeoutSeconds`: типовий тайм-аут (у секундах) для `sessions_spawn`, коли виклик інструмента не передає `runTimeoutSeconds`. `0` означає відсутність тайм-ауту.
+- `model`: модель за замовчуванням для породжених sub-agents. Якщо не задано, sub-agents успадковують модель викликувача.
+- `allowAgents`: типовий allowlist id цільових агентів для `sessions_spawn`, коли агент-запитувач не задає власний `subagents.allowAgents` (`["*"]` = будь-який; за замовчуванням: лише той самий агент).
+- `runTimeoutSeconds`: timeout за замовчуванням (у секундах) для `sessions_spawn`, коли виклик інструмента не передає `runTimeoutSeconds`. `0` означає без timeout.
- Політика інструментів для 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
{
models: {
- mode: "merge", // merge (типово) | replace
+ mode: "merge", // merge (за замовчуванням) | replace
providers: {
"custom-proxy": {
baseUrl: "http://localhost:4000/v1",
@@ -2270,48 +2279,48 @@ OpenClaw використовує вбудований каталог модел
}
```
-- Використовуйте `authHeader: true` + `headers` для власних сценаріїв автентифікації.
+- Використовуйте `authHeader: true` + `headers` для нестандартних потреб автентифікації.
- Перевизначайте корінь конфігурації агента через `OPENCLAW_AGENT_DIR` (або `PI_CODING_AGENT_DIR`, застарілий alias змінної середовища).
-- Пріоритет об'єднання для провайдерів із тим самим ID:
- - Непорожні значення `baseUrl` з `models.json` агента мають пріоритет.
- - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей провайдер не керується через SecretRef у поточному контексті config/auth-profile.
- - Значення `apiKey` провайдерів, керованих через SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs) замість збереження визначених секретів.
- - Значення header провайдера, керовані через SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs).
- - Порожні або відсутні `apiKey`/`baseUrl` агента повертаються до `models.providers` у конфігурації.
- - Для збігу моделей `contextWindow`/`maxTokens` використовується більше значення між явною конфігурацією та неявними значеннями каталогу.
- - Для збігу моделей `contextTokens` зберігається явне runtime-обмеження, якщо воно задане; використовуйте його, щоб обмежити ефективний контекст, не змінюючи нативні метадані моделі.
+- Пріоритет злиття для matching provider IDs:
+ - Непорожні значення `baseUrl` з agent `models.json` мають пріоритет.
+ - Непорожні значення `apiKey` агента мають пріоритет лише тоді, коли цей постачальник не керується через SecretRef у поточному контексті config/auth-profile.
+ - Значення `apiKey` постачальника, керовані через SecretRef, оновлюються з маркерів джерела (`ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs), а не через збереження визначених секретів.
+ - Значення заголовків постачальника, керовані через SecretRef, оновлюються з маркерів джерела (`secretref-env:ENV_VAR_NAME` для env refs, `secretref-managed` для file/exec refs).
+ - Порожні або відсутні `apiKey`/`baseUrl` агента резервно беруться з `models.providers` у конфігурації.
+ - Для matching model `contextWindow`/`maxTokens` використовується більше значення між явною конфігурацією та неявними значеннями каталогу.
+ - Для matching model `contextTokens` явний runtime cap зберігається, якщо він наявний; використовуйте його, щоб обмежити ефективний контекст без зміни нативних метаданих моделі.
- Використовуйте `models.mode: "replace"`, коли хочете, щоб конфігурація повністю переписала `models.json`.
- - Збереження маркерів є джерело-орієнтованим: маркери записуються з активного snapshot джерельної конфігурації (до визначення), а не з визначених runtime-значень секретів.
+ - Збереження маркерів є джерелозалежним: маркери записуються з активного знімка конфігурації джерела (до розв’язання), а не з визначених runtime secret values.
-### Деталі полів провайдера
+### Відомості про поля постачальника
-- `models.mode`: поведінка каталогу провайдерів (`merge` або `replace`).
-- `models.providers`: мапа власних провайдерів, ключована provider id.
+- `models.mode`: поведінка каталогу постачальників (`merge` або `replace`).
+- `models.providers`: мапа користувацьких постачальників, ключована за id постачальника.
- `models.providers.*.api`: адаптер запитів (`openai-completions`, `openai-responses`, `anthropic-messages`, `google-generative-ai` тощо).
-- `models.providers.*.apiKey`: облікові дані провайдера (переважно SecretRef/env substitution).
-- `models.providers.*.auth`: стратегія auth (`api-key`, `token`, `oauth`, `aws-sdk`).
-- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` додавати `options.num_ctx` до запитів (типово: `true`).
+- `models.providers.*.apiKey`: облікові дані постачальника (віддавайте перевагу SecretRef/env substitution).
+- `models.providers.*.auth`: стратегія автентифікації (`api-key`, `token`, `oauth`, `aws-sdk`).
+- `models.providers.*.injectNumCtxForOpenAICompat`: для Ollama + `openai-completions` вставляє `options.num_ctx` у запити (за замовчуванням: `true`).
- `models.providers.*.authHeader`: примусово передавати облікові дані в заголовку `Authorization`, коли це потрібно.
- `models.providers.*.baseUrl`: base URL upstream API.
-- `models.providers.*.headers`: додаткові статичні заголовки для маршрутизації proxy/tenant.
+- `models.providers.*.headers`: додаткові статичні заголовки для proxy/tenant routing.
- `models.providers.*.request`: перевизначення транспорту для HTTP-запитів model-provider.
- - `request.headers`: додаткові заголовки (об'єднуються з типовими значеннями провайдера). Значення приймають SecretRef.
- - `request.auth`: перевизначення стратегії auth. Режими: `"provider-default"` (використовувати вбудовану auth провайдера), `"authorization-bearer"` (з `token`), `"header"` (з `headerName`, `value`, необов'язковим `prefix`).
- - `request.proxy`: перевизначення HTTP proxy. Режими: `"env-proxy"` (використовувати env vars `HTTP_PROXY`/`HTTPS_PROXY`), `"explicit-proxy"` (з `url`). Обидва режими приймають необов'язковий підоб'єкт `tls`.
- - `request.tls`: перевизначення TLS для прямих підключень. Поля: `ca`, `cert`, `key`, `passphrase` (усі приймають SecretRef), `serverName`, `insecureSkipVerify`.
-- `models.providers.*.models`: явні записи каталогу моделей провайдера.
-- `models.providers.*.models.*.contextWindow`: метадані нативного вікна контексту моделі.
-- `models.providers.*.models.*.contextTokens`: необов'язкове runtime-обмеження контексту. Використовуйте його, якщо хочете менший ефективний бюджет контексту, ніж нативний `contextWindow` моделі.
-- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов'язкова compatibility hint. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (host не `api.openai.com`) OpenClaw примусово встановлює це в `false` під час runtime. Порожній/пропущений `baseUrl` зберігає типову поведінку OpenAI.
-- `plugins.entries.amazon-bedrock.config.discovery`: кореневий блок налаштувань auto-discovery Bedrock.
+ - `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`.
+- `models.providers.*.models`: явні записи каталогу моделей постачальника.
+- `models.providers.*.models.*.contextWindow`: метадані нативного контекстного вікна моделі.
+- `models.providers.*.models.*.contextTokens`: необов’язковий runtime context cap. Використовуйте це, коли хочете менший ефективний бюджет контексту, ніж нативне `contextWindow` моделі.
+- `models.providers.*.models.*.compat.supportsDeveloperRole`: необов’язкова підказка сумісності. Для `api: "openai-completions"` з непорожнім ненативним `baseUrl` (хост не `api.openai.com`) OpenClaw примусово встановлює це в `false` під час виконання. Порожній/відсутній `baseUrl` зберігає поведінку OpenAI за замовчуванням.
+- `plugins.entries.amazon-bedrock.config.discovery`: корінь налаштувань auto-discovery Bedrock.
- `plugins.entries.amazon-bedrock.config.discovery.enabled`: увімкнути/вимкнути неявне discovery.
-- `plugins.entries.amazon-bedrock.config.discovery.region`: регіон AWS для discovery.
-- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов'язковий фільтр provider-id для цільового discovery.
+- `plugins.entries.amazon-bedrock.config.discovery.region`: AWS region для discovery.
+- `plugins.entries.amazon-bedrock.config.discovery.providerFilter`: необов’язковий фільтр provider-id для цільового discovery.
- `plugins.entries.amazon-bedrock.config.discovery.refreshInterval`: інтервал опитування для оновлення discovery.
-- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне вікно контексту для знайдених моделей.
-- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість вихідних токенів для знайдених моделей.
+- `plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow`: резервне context window для виявлених моделей.
+- `plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens`: резервна максимальна кількість вихідних токенів для виявлених моделей.
-### Приклади провайдерів
+### Приклади постачальників
@@ -2381,11 +2390,11 @@ OpenClaw використовує вбудований каталог модел
}
```
-Установіть `ZAI_API_KEY`. `z.ai/*` і `z-ai/*` — прийнятні alias. Скорочення: `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 для coding (типовий): `https://api.z.ai/api/coding/paas/v4`
-- Для загального endpoint визначте власного провайдера з перевизначенням base URL.
+- Coding endpoint (за замовчуванням): `https://api.z.ai/api/coding/paas/v4`
+- Для загального endpoint визначте користувацького постачальника з перевизначенням base URL.
@@ -2426,9 +2435,9 @@ OpenClaw використовує вбудований каталог модел
Для endpoint у Китаї: `baseUrl: "https://api.moonshot.cn/v1"` або `openclaw onboard --auth-choice moonshot-api-key-cn`.
-Нативні endpoint Moonshot оголошують сумісність використання streaming на спільному
-транспорті `openai-completions`, і OpenClaw тепер визначає це за можливостями
-endpoint, а не лише за вбудованим provider id.
+Нативні endpoints Moonshot повідомляють про сумісність використання streaming на спільному
+транспорті `openai-completions`, і OpenClaw тепер визначає це за можливостями endpoint,
+а не лише за вбудованим provider id.
@@ -2446,7 +2455,7 @@ endpoint, а не лише за вбудованим provider id.
}
```
-Сумісний з Anthropic, вбудований провайдер. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`.
+Сумісний з Anthropic, вбудований постачальник. Скорочення: `openclaw onboard --auth-choice kimi-code-api-key`.
@@ -2485,7 +2494,7 @@ endpoint, а не лише за вбудованим provider id.
}
```
-Base URL має не містити `/v1` (клієнт Anthropic додає його сам). Скорочення: `openclaw onboard --auth-choice synthetic-api-key`.
+Base URL не повинен містити `/v1` (клієнт Anthropic додає його сам). Скорочення: `openclaw onboard --auth-choice synthetic-api-key`.
@@ -2528,9 +2537,9 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
Установіть `MINIMAX_API_KEY`. Скорочення:
`openclaw onboard --auth-choice minimax-global-api` або
`openclaw onboard --auth-choice minimax-cn-api`.
-Каталог моделей тепер типово використовує лише M2.7.
-На Anthropic-compatible streaming path OpenClaw типово вимикає MiniMax thinking,
-якщо ви явно самі не задасте `thinking`. `/fast on` або
+Каталог моделей тепер за замовчуванням використовує лише M2.7.
+На сумісному з Anthropic streaming path OpenClaw вимикає thinking MiniMax
+за замовчуванням, якщо ви явно не встановите `thinking` самостійно. `/fast on` або
`params.fastMode: true` переписує `MiniMax-M2.7` на
`MiniMax-M2.7-highspeed`.
@@ -2538,7 +2547,7 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
-Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; залишайте hosted-моделі об'єднаними для fallback.
+Див. [Local Models](/uk/gateway/local-models). Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; зберігайте хостовані моделі в режимі merge як резерв.
@@ -2549,83 +2558,4 @@ Base URL має не містити `/v1` (клієнт Anthropic додає й
```json5
{
skills: {
- allowBundled: ["gemini", "peekaboo"],
- load: {
- extraDirs: ["~/Projects/agent-scripts/skills"],
- },
- install: {
- preferBrew: true,
- nodeManager: "npm", // npm | pnpm | yarn | bun
- },
- entries: {
- "image-lab": {
- apiKey: { source: "env", provider: "default", id: "GEMINI_API_KEY" }, // або відкритий рядок
- env: { GEMINI_API_KEY: "GEMINI_KEY_HERE" },
- },
- peekaboo: { enabled: true },
- sag: { enabled: false },
- },
- },
-}
-```
-
-- `allowBundled`: необов'язковий allowlist лише для bundled Skills (managed/workspace skills не зачіпаються).
-- `load.extraDirs`: додаткові спільні корені skills (найнижчий пріоритет).
-- `install.preferBrew`: коли true, віддавати перевагу інсталяторам Homebrew, якщо доступний `brew`,
- перш ніж переходити до інших типів інсталятора.
-- `install.nodeManager`: бажаний node installer для специфікацій `metadata.openclaw.install`
- (`npm` | `pnpm` | `yarn` | `bun`).
-- `entries..enabled: false` вимикає skill, навіть якщо він bundled/installed.
-- `entries..apiKey`: зручне поле API-ключа для skills, які оголошують основну env variable (відкритий рядок або об'єкт SecretRef).
-
----
-
-## Plugins
-
-```json5
-{
- plugins: {
- enabled: true,
- allow: ["voice-call"],
- deny: [],
- load: {
- paths: ["~/Projects/oss/voice-call-extension"],
- },
- entries: {
- "voice-call": {
- enabled: true,
- hooks: {
- allowPromptInjection: false,
- },
- config: { provider: "twilio" },
- },
- },
- },
-}
-```
-
-- Завантажуються з `~/.openclaw/extensions`, `/.openclaw/extensions` і `plugins.load.paths`.
-- Discovery приймає нативні OpenClaw plugins, а також сумісні збірки Codex і Claude, включно з bundle Claude стандартного layout без manifest.
-- **Зміни конфігурації вимагають перезапуску gateway.**
-- `allow`: необов'язковий allowlist (завантажуються лише перелічені plugins). `deny` має пріоритет.
-- `plugins.entries..apiKey`: зручне поле API-ключа на рівні plugin (коли plugin це підтримує).
-- `plugins.entries..env`: мапа env vars у межах plugin.
-- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` і ігнорує поля legacy `before_agent_start`, що мутують prompt, зберігаючи при цьому legacy `modelOverride` і `providerOverride`. Застосовується до native plugin hooks і підтримуваних каталогів hooks, що надаються bundle.
-- `plugins.entries..subagent.allowModelOverride`: явно довіряти цьому plugin запитувати перевизначення `provider` і `model` для окремого запуску background subagent.
-- `plugins.entries..subagent.allowedModels`: необов'язковий allowlist канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише тоді, коли свідомо хочете дозволити будь-яку модель.
-- `plugins.entries..config`: об'єкт конфігурації, визначений plugin (перевіряється нативною схемою OpenClaw plugin, якщо вона доступна).
-- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера web-fetch Firecrawl.
- - `apiKey`: API-ключ Firecrawl (приймає SecretRef). Повертається до `plugins.entries.firecrawl.config.webSearch.apiKey`, legacy `tools.web.fetch.firecrawl.apiKey` або env var `FIRECRAWL_API_KEY`.
- - `baseUrl`: base URL API Firecrawl (типово: `https://api.firecrawl.dev`).
- - `onlyMainContent`: витягати зі сторінок лише основний вміст (типово: `true`).
- - `maxAgeMs`: максимальний вік кешу в мілісекундах (типово: `172800000` / 2 дні).
- - `timeoutSeconds`: тайм-аут scrape-запиту в секундах (типово: `60`).
-- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok).
- - `enabled`: увімкнути провайдера X Search.
- - `model`: модель Grok для пошуку (наприклад `"grok-4-1-fast"`).
-- `plugins.entries.memory-core.config.dreaming`: налаштування memory dreaming (експериментально). Про фази й пороги див. [Dreaming](/uk/concepts/dreaming).
- - `enabled`: головний перемикач dreaming (типово `false`).
- - `frequency`: cron cadence для кожного повного проходу dreaming (`"0 3 * * *"` за замовчуванням).
- - політика фаз і пороги — це деталі реалізації (не користувацькі ключі конфігурації).
-- Увімкнені Claude bundle plugins також можуть додавати вбудовані типові налаштування Pi з `settings.json`; OpenClaw застосовує їх як санітизовані налаштування агентів, а не як сирі патчі конфігурації OpenClaw.
-- `plugins.sl
\ No newline at end of file
+ allowBundled:
\ No newline at end of file