chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-02 10:21:23 +00:00
parent d1bd85db57
commit 0d05452e56
3 changed files with 514 additions and 381 deletions

View File

@ -0,0 +1,134 @@
---
read_when:
- Ви маршрутизуєте групові чати до виділених агентів
- Вам потрібна паралельна робота без того, щоб одне тривале завдання блокувало кожен чат
- Ви проєктуєте мультиагентну операційну конфігурацію
sidebarTitle: Specialist lanes
status: active
summary: Запускайте паралельних спеціалізованих агентів, не перевантажуючи спільні ресурси моделі та інструментів
title: Паралельні спеціалізовані напрями
x-i18n:
generated_at: "2026-05-02T10:18:23Z"
model: gpt-5.5
provider: openai
source_hash: b09f10ce4fbd79954a7196fbedb23f9b3f34b459b98eb7a5480f7eeb0bb6be98
source_path: concepts/parallel-specialist-lanes.md
workflow: 16
---
Паралельні спеціалізовані лінії дають одному Gateway змогу спрямовувати різні чати або кімнати до
різних агентів, зберігаючи швидкий користувацький досвід. Суть у тому, щоб розглядати
паралелізм як задачу проєктування для дефіцитних ресурсів, а не просто як «більше агентів».
## Базові принципи
Спеціалізована лінія покращує пропускну здатність лише тоді, коли зменшує конкуренцію за
справжні вузькі місця:
- **Блокування сесій**: лише один запуск має змінювати певну сесію одночасно.
- **Глобальна ємність моделі**: усі видимі запуски чатів усе одно спільно використовують ліміти провайдера.
- **Ємність інструментів**: робота із shell, браузером, мережею та репозиторієм може бути повільнішою
за сам хід моделі.
- **Бюджет контексту**: довгі стенограми роблять кожен майбутній хід повільнішим і менш
сфокусованим.
- **Неоднозначність власності**: дублікати агентів, які виконують ту саму роботу, марнують ємність.
OpenClaw вже серіалізує запуски для кожної сесії та обмежує глобальний паралелізм через
[чергу команд](/uk/concepts/queue). Спеціалізовані лінії додають політику поверх цього:
який агент володіє якою роботою, що лишається в чаті, а що стає фоновою
роботою.
## Рекомендоване впровадження
### Етап 1: контракти ліній + важка фонова робота
Дайте кожній лінії письмовий контракт у її робочому просторі та системному prompt:
- **Призначення**: робота, якою володіє ця лінія.
- **Нецілі**: робота, яку вона має передавати далі замість того, щоб виконувати самостійно.
- **Бюджет чату**: швидкі відповіді залишаються в чаті; довгі завдання слід коротко
підтвердити, а потім виконати у фоновому субагенті або задачі.
- **Правило передачі**: коли роботою володіє інша лінія, скажіть, куди її слід спрямувати, і
надайте стислий підсумок для передачі.
- **Правило ризику інструментів**: віддавайте перевагу найменшій поверхні інструментів, здатній виконати завдання.
Це найдешевший етап, який усуває більшість заторів: одне завдання з кодування більше не
перетворює дослідницьку лінію на патоку, і кожен чат зберігає власний контекст чистим.
### Етап 2: пріоритети та керування конкурентністю
Налаштуйте ємність черги й моделі навколо бізнес-цінності кожної лінії:
```json5
{
agents: {
defaults: {
maxConcurrent: 4,
subagents: { maxConcurrent: 8 },
},
},
messages: {
queue: {
mode: "collect",
debounceMs: 1000,
cap: 20,
drop: "summarize",
},
},
}
```
Використовуйте прямі/особисті чати та агентів production-ops для високопріоритетної роботи. Дозволяйте
дослідженням, чернеткам і пакетному кодуванню переходити у фонові задачі, коли система
завантажена.
### Етап 3: координатор / диспетчер трафіку
Додайте невеликий патерн координатора, коли активні кілька ліній:
- Відстежуйте активні задачі ліній і власників.
- Виявляйте дублікати запитів у різних групах.
- Спрямовуйте підсумки передачі між лініями.
- Показуйте лише блокери, завершені результати та рішення, які має ухвалити людина.
Не починайте з цього. Координатор без контрактів ліній лише координує хаос.
## Мінімальний шаблон контракту лінії
```md
# Lane contract
## Owns
- <job this lane is responsible for>
## Does not own
- <work to hand off>
## Chat budget
- Answer quick questions directly.
- For multi-step, slow, or tool-heavy work: acknowledge briefly, spawn/background
the work, then return the result when complete.
## Handoff
If another lane owns the request, reply with:
- target lane
- objective
- relevant context
- exact next action
## Tool posture
Use the smallest tool surface that can complete the task. Avoid broad shell or
network work unless this lane explicitly owns it.
```
## Пов’язане
- [Маршрутизація між кількома агентами](/uk/concepts/multi-agent)
- [Черга команд](/uk/concepts/queue)
- [Субагенти](/uk/tools/subagents)

View File

@ -1,40 +1,40 @@
---
read_when:
- Вам потрібна точна семантика конфігурації на рівні полів або точні значення за замовчуванням
- Вам потрібна точна семантика конфігурації на рівні полів або значення за замовчуванням
- Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструмента
summary: Довідник з конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
summary: Довідник із конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
title: Довідник із конфігурації
x-i18n:
generated_at: "2026-05-02T09:29:32Z"
generated_at: "2026-05-02T10:18:16Z"
model: gpt-5.5
provider: openai
source_hash: fa8aeec6143ae70905e75f1034005c97c3a72fcaa34f14f61294dece561f4ce6
source_hash: 615dda0385c6a4efb9bfcc010de221b2d799dab73e612f6e4681fd14d45f15d0
source_path: gateway/configuration-reference.md
workflow: 16
---
Основна довідка з конфігурації для `~/.openclaw/openclaw.json`. Огляд, орієнтований на завдання, див. у [Конфігурації](/uk/gateway/configuration).
Основний довідник конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration).
Охоплює основні поверхні конфігурації OpenClaw і посилається назовні, коли підсистема має власну глибшу довідку. Каталоги команд, що належать каналам і plugin, а також глибокі параметри пам'яті/QMD розміщені на власних сторінках, а не на цій.
Охоплює основні поверхні конфігурації OpenClaw і посилається назовні, коли підсистема має власний докладніший довідник. Каталоги команд, що належать каналам і Plugin, а також глибокі параметри памʼяті/QMD розміщені на власних сторінках, а не на цій.
Істина в коді:
Правда коду:
- `openclaw config schema` виводить поточну JSON Schema, що використовується для валідації та Control UI, з об'єднаними метаданими вбудованих/plugin/каналів, коли вони доступні
- `config.schema.lookup` повертає один вузол схеми, обмежений шляхом, для інструментів деталізації
- `openclaw config schema` виводить живу JSON Schema, що використовується для валідації та Control UI, з обʼєднаними метаданими вбудованих/Plugin/каналів, коли вони доступні
- `config.schema.lookup` повертає один вузол схеми з областю дії за шляхом для інструментів деталізації
- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш документації конфігурації щодо поточної поверхні схеми
Шлях пошуку для агента: використовуйте дію інструмента `gateway` `config.schema.lookup` для
Шлях пошуку агента: використовуйте дію інструмента `gateway` `config.schema.lookup` для
точної документації та обмежень на рівні полів перед редагуванням. Використовуйте
[Конфігурацію](/uk/gateway/configuration) для порад, орієнтованих на завдання, а цю сторінку
для ширшої карти полів, значень за замовчуванням і посилань на довідки підсистем.
[Конфігурація](/uk/gateway/configuration) для орієнтованих на завдання настанов, а цю сторінку
для ширшої карти полів, значень за замовчуванням і посилань на довідники підсистем.
Окремі глибокі довідки:
Окремі глибокі довідники:
- [Довідка з конфігурації пам'яті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації Dreaming у `plugins.entries.memory-core.config.dreaming`
- [Slash-команди](/uk/tools/slash-commands) для поточного каталогу вбудованих + bundled команд
- сторінки відповідних власників каналів/plugin для поверхонь команд, специфічних для каналу
- [Довідник конфігурації памʼяті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації dreaming у `plugins.entries.memory-core.config.dreaming`
- [Slash-команди](/uk/tools/slash-commands) для поточного каталогу вбудованих + пакетних команд
- сторінки відповідних каналів/Plugin для поверхонь команд, специфічних для каналів
Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необов'язкові — OpenClaw використовує безпечні значення за замовчуванням, коли їх пропущено.
Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необовʼязкові — OpenClaw використовує безпечні значення за замовчуванням, коли їх пропущено.
---
@ -42,21 +42,21 @@ x-i18n:
Ключі конфігурації для окремих каналів перенесено на окрему сторінку — див.
[Конфігурація — канали](/uk/gateway/config-channels) для `channels.*`,
включно зі Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та іншими
bundled каналами (автентифікація, контроль доступу, кілька акаунтів, керування згадками).
зокрема Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших
пакетних каналів (автентифікація, контроль доступу, кілька облікових записів, керування згадками).
## Значення агента за замовчуванням, multi-agent, сеанси та повідомлення
## Значення агента за замовчуванням, багато агентів, сесії та повідомлення
Перенесено на окрему сторінку — див.
[Конфігурація — агенти](/uk/gateway/config-agents) для:
- `agents.defaults.*` (робоча область, модель, мислення, Heartbeat, пам'ять, медіа, Skills, sandbox)
- `multiAgent.*` (маршрутизація та прив'язки multi-agent)
- `session.*` (життєвий цикл сеансу, Compaction, обрізання)
- `messages.*` (доставка повідомлень, TTS, рендеринг markdown)
- `agents.defaults.*` (робоча область, модель, мислення, heartbeat, памʼять, медіа, skills, sandbox)
- `multiAgent.*` (маршрутизація та привʼязки багатьох агентів)
- `session.*` (життєвий цикл сесії, compaction, pruning)
- `messages.*` (доставка повідомлень, TTS, відтворення markdown)
- `talk.*` (режим Talk)
- `talk.speechLocale`: необов'язковий ідентифікатор локалі BCP 47 для розпізнавання мовлення Talk на iOS/macOS
- `talk.silenceTimeoutMs`: коли не задано, Talk зберігає стандартне вікно паузи платформи перед надсиланням транскрипту (`700 ms on macOS and Android, 900 ms on iOS`)
- `talk.speechLocale`: необовʼязковий ідентифікатор локалі BCP 47 для розпізнавання мовлення Talk на iOS/macOS
- `talk.silenceTimeoutMs`: коли не задано, Talk зберігає стандартне для платформи вікно паузи перед надсиланням транскрипту (`700 ms on macOS and Android, 900 ms on iOS`)
## Інструменти та власні провайдери
@ -66,7 +66,7 @@ bundled каналами (автентифікація, контроль дос
## Моделі
Визначення провайдерів, allowlist моделей і налаштування власного провайдера розміщені в
Визначення провайдерів, списки дозволених моделей і налаштування власних провайдерів розміщені в
[Конфігурація — інструменти та власні провайдери](/uk/gateway/config-tools#custom-providers-and-base-urls).
Корінь `models` також відповідає за глобальну поведінку каталогу моделей.
@ -80,15 +80,16 @@ bundled каналами (автентифікація, контроль дос
```
- `models.mode`: поведінка каталогу провайдера (`merge` або `replace`).
- `models.providers`: мапа власних провайдерів із ключами за id провайдера.
- `models.pricing.enabled`: керує фоновою ініціалізацією цін. Коли
`false`, запуск Gateway пропускає отримання каталогів цін OpenRouter і LiteLLM;
налаштовані значення `models.providers.*.models[].cost` все одно працюють для локальних оцінок вартості.
- `models.providers`: мапа власних провайдерів із ключами за ідентифікатором провайдера.
- `models.pricing.enabled`: керує фоновою ініціалізацією цін, яка
запускається після того, як sidecar-и та канали досягають шляху готовності Gateway. Коли `false`,
Gateway пропускає отримання каталогів цін OpenRouter і LiteLLM; налаштовані
значення `models.providers.*.models[].cost` усе ще працюють для локальних оцінок вартості.
## MCP
Визначення MCP-серверів, керованих OpenClaw, розміщені в `mcp.servers` і
використовуються вбудованим Pi та іншими runtime-адаптерами. Команди `openclaw mcp list`,
споживаються вбудованим Pi та іншими runtime-адаптерами. Команди `openclaw mcp list`,
`show`, `set` і `unset` керують цим блоком без підключення до
цільового сервера під час редагування конфігурації.
@ -114,17 +115,17 @@ bundled каналами (автентифікація, контроль дос
}
```
- `mcp.servers`: іменовані визначення stdio або віддалених MCP-серверів для runtime, які
надають налаштовані MCP-інструменти.
- `mcp.servers`: іменовані stdio або віддалені визначення MCP-серверів для runtime, які
надають налаштовані інструменти MCP.
Віддалені записи використовують `transport: "streamable-http"` або `transport: "sse"`;
`type: "http"` — це CLI-нативний alias, який `openclaw mcp set` і
`type: "http"` є CLI-native псевдонімом, який `openclaw mcp set` і
`openclaw doctor --fix` нормалізують у канонічне поле `transport`.
- `mcp.sessionIdleTtlMs`: TTL простою для bundled MCP runtime, обмежених сеансом.
Одноразові вбудовані запуски запитують очищення після завершення запуску; цей TTL є резервним механізмом для
довготривалих сеансів і майбутніх викликачів.
- Зміни в `mcp.*` застосовуються гаряче шляхом звільнення кешованих MCP runtime сеансу.
Наступне виявлення/використання інструментів відтворює їх із нової конфігурації, тож видалені
записи `mcp.servers` прибираються негайно, а не чекають на TTL простою.
- `mcp.sessionIdleTtlMs`: idle TTL для пакетних MCP-runtime з областю дії сесії.
Одноразові вбудовані запуски запитують очищення наприкінці запуску; цей TTL є резервним механізмом для
довгоживучих сесій і майбутніх викликачів.
- Зміни в `mcp.*` застосовуються гаряче шляхом утилізації кешованих MCP-runtime сесії.
Наступне виявлення/використання інструментів відтворює їх із нової конфігурації, тому вилучені
записи `mcp.servers` прибираються негайно, а не чекають idle TTL.
Див. [MCP](/uk/cli/mcp#openclaw-as-an-mcp-client-registry) і
[CLI-бекенди](/uk/gateway/cli-backends#bundle-mcp-overlays) щодо поведінки runtime.
@ -154,14 +155,14 @@ bundled каналами (автентифікація, контроль дос
}
```
- `allowBundled`: необов'язковий allowlist лише для bundled Skills (керовані/робочі Skills не зачіпаються).
- `allowBundled`: необовʼязковий список дозволів лише для пакетних Skills (керовані/робочі Skills не зачіпаються).
- `load.extraDirs`: додаткові спільні корені Skills (найнижчий пріоритет).
- `install.preferBrew`: коли true, надавати перевагу інсталяторам Homebrew, якщо `brew`
доступний, перед переходом до інших типів інсталяторів.
- `install.nodeManager`: перевага інсталятора node для специфікацій `metadata.openclaw.install`
- `install.preferBrew`: коли true, надавати перевагу інсталяторам Homebrew, коли `brew`
доступний, перш ніж повертатися до інших типів інсталяторів.
- `install.nodeManager`: перевага Node-інсталятора для специфікацій `metadata.openclaw.install`
(`npm` | `pnpm` | `yarn` | `bun`).
- `entries.<skillKey>.enabled: false` вимикає skill, навіть якщо він bundled/встановлений.
- `entries.<skillKey>.apiKey`: зручність для Skills, що оголошують основну змінну env (plaintext string або об'єкт SecretRef).
- `entries.<skillKey>.enabled: false` вимикає Skill, навіть якщо він пакетний/встановлений.
- `entries.<skillKey>.apiKey`: зручність для Skills, які оголошують основну env-змінну (звичайний текстовий рядок або обʼєкт SecretRef).
---
@ -189,41 +190,41 @@ bundled каналами (автентифікація, контроль дос
}
```
- Завантажується з `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions`, а також `plugins.load.paths`.
- Виявлення приймає нативні plugins OpenClaw, а також сумісні Codex bundles і Claude bundles, включно з manifestless Claude bundles зі стандартним layout.
- **Зміни конфігурації потребують перезапуску gateway.**
- `allow`: необов'язковий allowlist (завантажуються лише перелічені plugins). `deny` має пріоритет.
- `plugins.entries.<id>.apiKey`: зручне поле API-ключа на рівні plugin (коли підтримується plugin).
- `plugins.entries.<id>.env`: мапа змінних env, обмежена plugin.
- `plugins.entries.<id>.hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` та ігнорує поля, що змінюють prompt, із legacy `before_agent_start`, зберігаючи legacy `modelOverride` і `providerOverride`. Застосовується до нативних hook plugin і підтримуваних директорій hook, наданих bundle.
- `plugins.entries.<id>.hooks.allowConversationAccess`: коли `true`, довірені небудовані bundled plugins можуть читати сирий вміст розмови з типізованих hook, як-от `llm_input`, `llm_output`, `before_agent_finalize` і `agent_end`.
- `plugins.entries.<id>.subagent.allowModelOverride`: явно довірити цьому plugin запитувати per-run перевизначення `provider` і `model` для фонових запусків subagent.
- `plugins.entries.<id>.subagent.allowedModels`: необов'язковий allowlist канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише тоді, коли навмисно хочете дозволити будь-яку модель.
- `plugins.entries.<id>.config`: об'єкт конфігурації, визначений plugin (валідується нативною схемою plugin OpenClaw, коли доступна).
- Налаштування акаунта/runtime channel plugin розміщені в `channels.<id>` і мають описуватися метаданими `channelConfigs` маніфесту plugin-власника, а не центральним реєстром опцій OpenClaw.
- Завантажуються з `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions`, плюс `plugins.load.paths`.
- Виявлення приймає нативні Plugin OpenClaw, а також сумісні пакети Codex і пакети Claude, зокрема пакети стандартного макета Claude без маніфеста.
- **Зміни конфігурації потребують перезапуску Gateway.**
- `allow`: необовʼязковий список дозволів (завантажуються лише перелічені Plugin). `deny` має перевагу.
- `plugins.entries.<id>.apiKey`: зручне поле API-ключа на рівні Plugin (коли підтримується Plugin).
- `plugins.entries.<id>.env`: мапа env-змінних з областю дії Plugin.
- `plugins.entries.<id>.hooks.allowPromptInjection`: коли `false`, ядро блокує `before_prompt_build` та ігнорує поля, що змінюють prompt, із застарілого `before_agent_start`, водночас зберігаючи застарілі `modelOverride` і `providerOverride`. Застосовується до нативних hooks Plugin і підтримуваних директорій hooks, наданих пакетами.
- `plugins.entries.<id>.hooks.allowConversationAccess`: коли `true`, довірені непакетні Plugin можуть читати сирий вміст розмови з типізованих hooks, таких як `llm_input`, `llm_output`, `before_agent_finalize` і `agent_end`.
- `plugins.entries.<id>.subagent.allowModelOverride`: явно довірити цьому Plugin запитувати перевизначення `provider` і `model` для кожного запуску фонових subagent-запусків.
- `plugins.entries.<id>.subagent.allowedModels`: необовʼязковий список дозволених канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише тоді, коли навмисно хочете дозволити будь-яку модель.
- `plugins.entries.<id>.config`: обʼєкт конфігурації, визначений Plugin (валідується нативною схемою Plugin OpenClaw, коли доступна).
- Налаштування облікових записів/runtime Plugin каналу розміщені в `channels.<id>` і мають описуватися метаданими `channelConfigs` маніфеста відповідного Plugin, а не центральним реєстром опцій OpenClaw.
- `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 `FIRECRAWL_API_KEY`.
- `baseUrl`: базовий URL API Firecrawl (за замовчуванням: `https://api.firecrawl.dev`; self-hosted перевизначення мають вказувати на приватні/внутрішні endpoints).
- `apiKey`: API-ключ Firecrawl (приймає SecretRef). Повертається до `plugins.entries.firecrawl.config.webSearch.apiKey`, застарілого `tools.web.fetch.firecrawl.apiKey` або env-змінної `FIRECRAWL_API_KEY`.
- `baseUrl`: базовий URL API Firecrawl (за замовчуванням: `https://api.firecrawl.dev`; self-hosted перевизначення мають націлюватися на приватні/внутрішні endpoints).
- `onlyMainContent`: витягувати зі сторінок лише основний вміст (за замовчуванням: `true`).
- `maxAgeMs`: максимальний вік кешу в мілісекундах (за замовчуванням: `172800000` / 2 дні).
- `timeoutSeconds`: timeout запиту scrape в секундах (за замовчуванням: `60`).
- `timeoutSeconds`: timeout запиту scrape у секундах (за замовчуванням: `60`).
- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok).
- `enabled`: увімкнути провайдера X Search.
- `enabled`: увімкнути провайдер X Search.
- `model`: модель Grok для використання в пошуку (наприклад, `"grok-4-1-fast"`).
- `plugins.entries.memory-core.config.dreaming`: налаштування memory dreaming. Див. [Dreaming](/uk/concepts/dreaming) щодо фаз і порогів.
- `enabled`: головний перемикач dreaming (за замовчуванням `false`).
- `frequency`: cron-періодичність для кожного повного проходу dreaming (`"0 3 * * *"` за замовчуванням).
- `model`: необов'язкове перевизначення моделі subagent Dream Diary. Потребує `plugins.entries.memory-core.subagent.allowModelOverride: true`; поєднуйте з `allowedModels`, щоб обмежити цілі. Помилки недоступності моделі повторюються один раз із моделлю сеансу за замовчуванням; збої довіри або allowlist не мають тихого fallback.
- політика фаз і пороги є деталями реалізації (не user-facing ключами конфігурації).
- Повна конфігурація пам'яті розміщена в [Довідці з конфігурації пам'яті](/uk/reference/memory-config):
- `frequency`: cron-каденція для кожного повного проходу dreaming (`"0 3 * * *"` за замовчуванням).
- `model`: необовʼязкове перевизначення моделі subagent Dream Diary. Потребує `plugins.entries.memory-core.subagent.allowModelOverride: true`; поєднуйте з `allowedModels`, щоб обмежити цілі. Помилки недоступності моделі повторюються один раз із моделлю сесії за замовчуванням; збої довіри або списку дозволів не мають тихого fallback.
- політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації).
- Повна конфігурація памʼяті розміщена в [Довідник конфігурації памʼяті](/uk/reference/memory-config):
- `agents.defaults.memorySearch.*`
- `memory.backend`
- `memory.citations`
- `memory.qmd.*`
- `plugins.entries.memory-core.config.dreaming`
- Увімкнені Claude bundle plugins також можуть додавати вбудовані значення Pi за замовчуванням із `settings.json`; OpenClaw застосовує їх як санітизовані налаштування агента, а не як сирі патчі конфігурації OpenClaw.
- `plugins.slots.memory`: вибрати id активного memory plugin або `"none"`, щоб вимкнути memory plugins.
- `plugins.slots.contextEngine`: вибрати id активного context engine plugin; за замовчуванням `"legacy"`, якщо ви не встановите й не виберете інший engine.
- Увімкнені пакетні Plugin Claude також можуть додавати вбудовані значення Pi за замовчуванням із `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw.
- `plugins.slots.memory`: виберіть ідентифікатор активного memory Plugin або `"none"`, щоб вимкнути memory Plugin.
- `plugins.slots.contextEngine`: виберіть ідентифікатор активного context engine Plugin; за замовчуванням `"legacy"`, якщо ви не встановите й не виберете інший engine.
Див. [Plugins](/uk/tools/plugin).
@ -276,47 +277,47 @@ bundled каналами (автентифікація, контроль дос
```
- `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`.
- `tabCleanup` звільняє відстежувані вкладки основного агента після часу простою або коли сеанс
перевищує свій ліміт. Установіть `idleMinutes: 0` або `maxTabsPerSession: 0`, щоб
- `tabCleanup` повертає відстежувані вкладки основного агента після часу бездіяльності або коли
сесія перевищує свій ліміт. Установіть `idleMinutes: 0` або `maxTabsPerSession: 0`, щоб
вимкнути ці окремі режими очищення.
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо значення не задано, тому навігація браузера за замовчуванням залишається суворою.
- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви свідомо довіряєте навігації браузера приватною мережею.
- У суворому режимі кінцеві точки віддалених профілів CDP (`profiles.*.cdpUrl`) підпадають під те саме блокування приватної мережі під час перевірок доступності та виявлення.
- `ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як застарілий псевдонім.
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тому навігація браузера за замовчуванням залишається суворою.
- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли навмисно довіряєте навігації браузера в приватній мережі.
- У суворому режимі кінцеві точки віддалених профілів CDP (`profiles.*.cdpUrl`) підпадають під таке саме блокування приватної мережі під час перевірок доступності/виявлення.
- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім.
- У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
- Віддалені профілі працюють лише в режимі підключення (запуск/зупинка/скидання вимкнені).
- Віддалені профілі працюють лише в режимі приєднання (запуск/зупинка/скидання вимкнені).
- `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`.
Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
коли ваш провайдер надає прямий URL WebSocket DevTools.
- `remoteCdpTimeoutMs` і `remoteCdpHandshakeTimeoutMs` застосовуються до віддаленої та
`attachOnly` доступності CDP, а також до запитів відкриття вкладок. Керовані профілі
loopback зберігають локальні стандартні значення CDP.
- Якщо зовнішньо керована служба CDP доступна через loopback, установіть для цього
Використовуйте HTTP(S), коли потрібно, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
коли ваш провайдер надає прямий URL DevTools WebSocket.
- `remoteCdpTimeoutMs` і `remoteCdpHandshakeTimeoutMs` застосовуються до перевірки доступності віддаленого та
`attachOnly` CDP, а також до запитів відкриття вкладок. Керовані профілі loopback
зберігають локальні стандартні значення CDP.
- Якщо зовнішньо керований сервіс CDP доступний через loopback, установіть для цього
профілю `attachOnly: true`; інакше OpenClaw розглядатиме порт loopback як
локально керований профіль браузера й може повідомляти про помилки володіння локальним портом.
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися на
вибраному хості або через підключений браузерний вузол.
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на певний
профіль браузера на базі Chromium, наприклад Brave або Edge.
локальний керований профіль браузера й може повідомляти про помилки володіння локальним портом.
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть приєднуватися на
вибраному хості або через підключений вузол браузера.
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний
профіль браузера на основі Chromium, наприклад Brave або Edge.
- Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP:
дії на основі snapshot/ref замість націлювання CSS-селектором, хуки завантаження
одного файлу, без перевизначень тайм-аутів діалогів, без `wait --load networkidle` і без
дії на основі знімків/ref замість націлювання CSS-селектором, хуки завантаження одного файлу,
без перевизначень тайм-аутів діалогів, без `wait --load networkidle`, а також без
`responsebody`, експорту PDF, перехоплення завантажень або пакетних дій.
- Локально керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; задавайте
`cdpUrl` явно лише для віддаленого CDP.
- Локально керовані профілі можуть задавати `executablePath`, щоб перевизначити глобальний
- Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно
задавайте `cdpUrl` лише для віддаленого CDP.
- Локальні керовані профілі можуть задавати `executablePath`, щоб перевизначити глобальний
`browser.executablePath` для цього профілю. Використовуйте це, щоб запускати один профіль у
Chrome, а інший у Brave.
- Локально керовані профілі використовують `browser.localLaunchTimeoutMs` для HTTP-виявлення Chrome CDP
- Локальні керовані профілі використовують `browser.localLaunchTimeoutMs` для HTTP-виявлення Chrome CDP
після запуску процесу та `browser.localCdpReadyTimeoutMs` для
готовності CDP websocket після запуску. Збільшуйте їх на повільніших хостах, де Chrome
успішно запускається, але перевірки готовності змагаються зі стартом. Обидва значення мають бути
додатними цілими числами до `120000` мс; недійсні значення конфігурації відхиляються.
- Порядок автовиявлення: стандартний браузер, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Порядок автовиявлення: стандартний браузер, якщо він на основі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- `browser.executablePath` і `browser.profiles.<name>.executablePath` обидва
приймають `~` і `~/...` для домашнього каталогу вашої ОС перед запуском Chromium.
`userDataDir` для кожного профілю на профілях `existing-session` також розгортається з тильдою.
- Служба керування: лише loopback (порт виводиться з `gateway.port`, стандартно `18791`).
`userDataDir` окремого профілю в профілях `existing-session` також розгортається з тильдою.
- Сервіс керування: лише loopback (порт виводиться з `gateway.port`, стандартно `18791`).
- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад
`--disable-gpu`, розмір вікна або прапорці налагодження).
@ -336,8 +337,8 @@ bundled каналами (автентифікація, контроль дос
}
```
- `seamColor`: акцентний колір для хрому UI нативного застосунку (відтінок бульбашки Talk Mode тощо).
- `assistant`: перевизначення ідентичності Control UI. Відступає до ідентичності активного агента.
- `seamColor`: акцентний колір для хрому UI нативного застосунку (відтінок бульбашки режиму Talk Mode тощо).
- `assistant`: перевизначення ідентичності Control UI. Повертається до ідентичності активного агента.
---
@ -412,74 +413,66 @@ bundled каналами (автентифікація, контроль дос
}
```
<Accordion title="Докладніше про поля Gateway">
<Accordion title="Gateway field details">
- `mode`: `local` (запустити gateway) або `remote` (підключитися до віддаленого gateway). Gateway відмовляється запускатися, якщо значення не `local`.
- `mode`: `local` (запустити Gateway) або `remote` (підключитися до віддаленого Gateway). Gateway відмовляється запускатися, якщо не встановлено `local`.
- `port`: єдиний мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`.
- `bind`: `auto`, `loopback` (типово), `lan` (`0.0.0.0`), `tailnet` (лише IP Tailscale) або `custom`.
- **Застарілі псевдоніми bind**: використовуйте значення режиму bind у `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хоста (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
- **Примітка щодо Docker**: типовий bind `loopback` слухає на `127.0.0.1` всередині контейнера. З мережевим мостом Docker (`-p 18789:18789`) трафік надходить на `eth0`, тому gateway недоступний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
- **Автентифікація**: типово обов’язкова. Bind не на loopback вимагає автентифікації gateway. На практиці це означає спільний токен/пароль або reverse proxy з підтримкою ідентичності з `gateway.auth.mode: "trusted-proxy"`. Майстер онбордингу типово генерує токен.
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (зокрема SecretRefs), явно задайте `gateway.auth.mode` як `token` або `password`. Потоки запуску та встановлення/ремонту служби завершуються помилкою, коли обидва параметри налаштовані, а режим не задано.
- **Застарілі псевдоніми прив’язки**: використовуйте значення режиму прив’язки в `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хоста (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
- **Примітка щодо Docker**: типова прив’язка `loopback` слухає на `127.0.0.1` усередині контейнера. За мережі Docker bridge (`-p 18789:18789`) трафік надходить через `eth0`, тому Gateway недоступний. Використовуйте `--network host` або встановіть `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах.
- **Автентифікація**: типово обов’язкова. Прив’язки не до loopback потребують автентифікації Gateway. На практиці це означає спільний токен/пароль або reverse proxy з урахуванням ідентичності з `gateway.auth.mode: "trusted-proxy"`. Майстер онбордингу типово генерує токен.
- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (зокрема SecretRefs), явно встановіть `gateway.auth.mode` на `token` або `password`. Потоки запуску й встановлення/ремонту сервісу завершуються помилкою, коли налаштовано обидва значення, а режим не задано.
- `gateway.auth.mode: "none"`: явний режим без автентифікації. Використовуйте лише для довірених налаштувань local loopback; це навмисно не пропонується підказками онбордингу.
- `gateway.auth.mode: "trusted-proxy"`: делегує автентифікацію браузера/користувача reverse proxy з підтримкою ідентичності та довіряє заголовкам ідентичності з `gateway.trustedProxies` (див. [Автентифікація через довірений proxy](/uk/gateway/trusted-proxy-auth)). Цей режим типово очікує джерело proxy **не на loopback**; reverse proxy на loopback того самого хоста вимагають явного `gateway.auth.trustedProxy.allowLoopback = true`. Внутрішні виклики з того самого хоста можуть використовувати `gateway.auth.password` як локальний прямий резервний варіант; `gateway.auth.token` залишається взаємовиключним із режимом trusted-proxy.
- `gateway.auth.allowTailscale`: коли `true`, заголовки ідентичності Tailscale Serve можуть задовольняти автентифікацію інтерфейсу керування/WebSocket (перевіряється через `tailscale whois`). Кінцеві точки HTTP API **не** використовують цю автентифікацію заголовками Tailscale; натомість вони дотримуються звичайного режиму HTTP-автентифікації gateway. Цей потік без токена припускає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`.
- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб автентифікації. Застосовується для кожної IP-адреси клієнта та кожної області автентифікації (shared-secret і device-token відстежуються окремо). Заблоковані спроби повертають `429` + `Retry-After`.
- На асинхронному шляху інтерфейсу керування Tailscale Serve невдалі спроби для тієї самої пари `{scope, clientIp}` серіалізуються перед записом помилки. Тому одночасні неправильні спроби від того самого клієнта можуть спрацювати обмежувачем уже на другому запиті, замість того щоб обидві пройшли як прості невідповідності.
- `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; задайте `false`, коли навмисно хочете обмежувати частоту й для localhost-трафіку (для тестових налаштувань або суворих розгортань proxy).
- Спроби автентифікації WS з браузерного origin завжди обмежуються з вимкненим винятком для loopback (додатковий захист від браузерного перебору localhost).
- На loopback такі блокування з браузерного origin ізольовані за нормалізованим значенням `Origin`,
тому повторні помилки з одного localhost-origin не блокують автоматично
інший origin.
- `tailscale.mode`: `serve` (лише tailnet, bind на loopback) або `funnel` (публічний, вимагає автентифікації).
- `controlUi.allowedOrigins`: явний список дозволених браузерних origin для підключень WebSocket до Gateway. Обов’язковий, коли очікуються браузерні клієнти з origin не на loopback.
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає резервне визначення origin за заголовком Host для розгортань, які навмисно покладаються на політику origin за заголовком Host.
- `gateway.auth.mode: "trusted-proxy"`: делегує автентифікацію браузера/користувача reverse proxy з урахуванням ідентичності та довіряє заголовкам ідентичності від `gateway.trustedProxies` (див. [Автентифікація через довірений проксі](/uk/gateway/trusted-proxy-auth)). Цей режим типово очікує джерело проксі **не з loopback**; reverse proxy на loopback того самого хоста потребують явного `gateway.auth.trustedProxy.allowLoopback = true`. Внутрішні викликачі з того самого хоста можуть використовувати `gateway.auth.password` як локальний прямий резервний варіант; `gateway.auth.token` залишається взаємовиключним із режимом trusted-proxy.
- `gateway.auth.allowTailscale`: коли `true`, заголовки ідентичності Tailscale Serve можуть задовольняти автентифікацію Control UI/WebSocket (перевірено через `tailscale whois`). Ендпоінти HTTP API **не** використовують цю автентифікацію заголовків Tailscale; натомість вони дотримуються звичайного режиму HTTP-автентифікації Gateway. Цей потік без токена припускає, що хост Gateway є довіреним. Типово має значення `true`, коли `tailscale.mode = "serve"`.
- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб автентифікації. Застосовується для кожної IP-адреси клієнта та кожної області автентифікації (shared-secret і device-token відстежуються незалежно). Заблоковані спроби повертають `429` + `Retry-After`.
- На асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом помилки. Тому одночасні невдалі спроби від того самого клієнта можуть спрацювати на обмежувачі вже на другому запиті, замість того щоб обидві пройшли як звичайні невідповідності.
- `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; установіть `false`, коли ви навмисно хочете обмежувати частоту трафіку localhost також (для тестових налаштувань або суворих розгортань проксі).
- Спроби автентифікації WS з browser-origin завжди обмежуються з вимкненим винятком loopback (глибший захист від browser-based перебору localhost).
- На loopback такі блокування browser-origin ізольовані для кожного нормалізованого значення `Origin`, тому повторні невдалі спроби з одного походження localhost не блокують автоматично інше походження.
- `tailscale.mode`: `serve` (лише tailnet, прив’язка loopback) або `funnel` (публічний, потребує автентифікації).
- `controlUi.allowedOrigins`: явний allowlist browser-origin для підключень Gateway WebSocket. Потрібний, коли очікуються браузерні клієнти з джерел не з loopback.
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервне визначення походження за Host-header для розгортань, що навмисно покладаються на політику походження Host-header.
- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`.
- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: аварійне перевизначення середовища процесу на боці клієнта,
яке дозволяє plaintext `ws://` до довірених IP приватної мережі;
типово plaintext лишається дозволеним лише для loopback. Еквівалента в `openclaw.json`
немає, а конфігурація приватної мережі браузера, така як
`browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`, не впливає на клієнтів
WebSocket Gateway.
- `gateway.remote.token` / `.password` — поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують автентифікацію gateway.
- `gateway.push.apns.relay.baseUrl`: базова HTTPS-URL для зовнішнього relay APNs, який використовується офіційними/TestFlight збірками iOS після публікації реєстрацій із підтримкою relay до gateway. Ця URL має збігатися з URL relay, скомпільованою в iOS-збірку.
- `gateway.push.apns.relay.timeoutMs`: таймаут надсилання від gateway до relay у мілісекундах. Типово `10000`.
- Реєстрації з підтримкою relay делегуються конкретній ідентичності gateway. Спарений iOS-застосунок отримує `gateway.identity.get`, включає цю ідентичність у реєстрацію relay і пересилає gateway дозвіл надсилання, обмежений реєстрацією. Інший gateway не може повторно використати цю збережену реєстрацію.
- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові env-перевизначення для наведеної вище конфігурації relay.
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: лише для розробки, аварійний обхід для HTTP-URL relay на loopback. Production-URL relay мають залишатися на HTTPS.
- `gateway.handshakeTimeoutMs`: таймаут WebSocket-рукостискання Gateway до автентифікації в мілісекундах. Типово: `15000`. `OPENCLAW_HANDSHAKE_TIMEOUT_MS` має пріоритет, коли задано. Збільшуйте це значення на навантажених або малопотужних хостах, де локальні клієнти можуть підключатися, поки прогрів запуску ще стабілізується.
- `gateway.channelHealthCheckMinutes`: інтервал моніторингу стану каналу в хвилинах. Задайте `0`, щоб глобально вимкнути перезапуски монітора стану. Типово: `5`.
- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого socket у хвилинах. Тримайте його більшим або рівним `gateway.channelHealthCheckMinutes`. Типово: `30`.
- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітора стану на канал/обліковий запис у ковзній годині. Типово: `10`.
- `channels.<provider>.healthMonitor.enabled`: вимкнення перезапусків монітора стану для окремого каналу з увімкненим глобальним монітором.
- `channels.<provider>.accounts.<accountId>.healthMonitor.enabled`: перевизначення для окремого облікового запису в багатооблікових каналах. Коли задано, має пріоритет над перевизначенням на рівні каналу.
- Локальні шляхи викликів gateway можуть використовувати `gateway.remote.*` як резерв лише тоді, коли `gateway.auth.*` не задано.
- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не розв’язано, розв’язання завершується закрито (без маскування віддаленим резервом).
- `trustedProxies`: IP reverse proxy, які завершують TLS або вставляють заголовки forwarded-client. Вказуйте лише proxy, які ви контролюєте. Записи loopback усе ще чинні для налаштувань proxy/локального виявлення на тому самому хості (наприклад, Tailscale Serve або локальний reverse proxy), але вони **не** роблять loopback-запити придатними для `gateway.auth.mode: "trusted-proxy"`.
- `allowRealIpFallback`: коли `true`, gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типово `false` для поведінки fail-closed.
- `gateway.nodes.pairing.autoApproveCidrs`: необов’язковий список дозволених CIDR/IP для автоматичного схвалення першого спарювання пристрою node без запитаних scopes. Вимкнено, коли не задано. Це не схвалює автоматично спарювання оператора/браузера/інтерфейсу керування/вебчату, а також не схвалює автоматично оновлення ролі, scope, metadata або публічного ключа.
- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування allow/deny для оголошених команд node після спарювання та оцінки списку дозволеного платформою. Використовуйте `allowCommands`, щоб увімкнути небезпечні команди node, як-от `camera.snap`, `camera.clip` і `screen.record`; `denyCommands` вилучає команду, навіть якщо типовий дозвіл платформи або явний allow інакше включив би її. Після того як node змінює свій оголошений список команд, відхиліть і повторно схваліть спарювання цього пристрою, щоб gateway зберіг оновлений знімок команд.
- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список заборон).
- `gateway.tools.allow`: вилучити назви інструментів із типового списку HTTP-заборон.
- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: клієнтське аварійне перевизначення через середовище процесу, яке дозволяє plaintext `ws://` до довірених IP приватної мережі; типово plaintext залишається дозволеним лише для loopback. Еквівалента в `openclaw.json` немає, а конфігурація приватної мережі браузера, як-от `browser.ssrfPolicy.dangerouslyAllowPrivateNetwork`, не впливає на клієнтів Gateway WebSocket.
- `gateway.remote.token` / `.password` — це поля облікових даних віддаленого клієнта. Самі по собі вони не налаштовують автентифікацію Gateway.
- `gateway.push.apns.relay.baseUrl`: базова HTTPS-URL для зовнішнього реле APNs, яке використовують офіційні/TestFlight збірки iOS після публікації реєстрацій із підтримкою реле до Gateway. Ця URL має збігатися з URL реле, скомпільованою в збірку iOS.
- `gateway.push.apns.relay.timeoutMs`: тайм-аут надсилання від Gateway до реле в мілісекундах. Типово `10000`.
- Реєстрації з підтримкою реле делегуються конкретній ідентичності Gateway. Спарений застосунок iOS отримує `gateway.identity.get`, включає цю ідентичність у реєстрацію реле та пересилає Gateway грант надсилання, обмежений реєстрацією. Інший Gateway не може повторно використати цю збережену реєстрацію.
- `OPENCLAW_APNS_RELAY_BASE_URL` / `OPENCLAW_APNS_RELAY_TIMEOUT_MS`: тимчасові перевизначення env для наведеної вище конфігурації реле.
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: виняток лише для розробки для HTTP-URL реле loopback. Виробничі URL реле мають залишатися на HTTPS.
- `gateway.handshakeTimeoutMs`: тайм-аут попереднього до автентифікації рукостискання Gateway WebSocket у мілісекундах. Типово: `15000`. `OPENCLAW_HANDSHAKE_TIMEOUT_MS` має пріоритет, коли задано. Збільшуйте це значення на завантажених або малопотужних хостах, де локальні клієнти можуть підключатися, поки прогрів запуску ще стабілізується.
- `gateway.channelHealthCheckMinutes`: інтервал моніторингу стану каналу в хвилинах. Установіть `0`, щоб глобально вимкнути перезапуски монітора стану. Типово: `5`.
- `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета в хвилинах. Тримайте його більшим або рівним `gateway.channelHealthCheckMinutes`. Типово: `30`.
- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітора стану на канал/обліковий запис за ковзну годину. Типово: `10`.
- `channels.<provider>.healthMonitor.enabled`: відмова на рівні каналу від перезапусків монітора стану з увімкненим глобальним монітором.
- `channels.<provider>.accounts.<accountId>.healthMonitor.enabled`: перевизначення на рівні облікового запису для каналів із кількома обліковими записами. Коли задано, має пріоритет над перевизначенням на рівні каналу.
- Локальні шляхи викликів Gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не задано.
- Якщо `gateway.auth.token` / `gateway.auth.password` явно налаштовано через SecretRef і не розв’язано, розв’язання завершується закрито (без маскування віддаленим резервним варіантом).
- `trustedProxies`: IP-адреси reverse proxy, які завершують TLS або вставляють заголовки forwarded-client. Указуйте лише проксі, які ви контролюєте. Записи loopback усе ще чинні для налаштувань проксі/локального виявлення на тому самому хості (наприклад Tailscale Serve або локальний reverse proxy), але вони **не** роблять запити loopback придатними для `gateway.auth.mode: "trusted-proxy"`.
- `allowRealIpFallback`: коли `true`, Gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типово `false` для fail-closed поведінки.
- `gateway.nodes.pairing.autoApproveCidrs`: необов’язковий allowlist CIDR/IP для автоматичного схвалення першого спарювання пристрою вузла без запитаних областей. Вимкнено, коли не задано. Це не схвалює автоматично спарювання оператора/браузера/Control UI/WebChat, а також не схвалює автоматично оновлення ролі, області, метаданих або відкритого ключа.
- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування дозволів/заборон для оголошених команд вузлів після спарювання та оцінювання платформного allowlist. Використовуйте `allowCommands`, щоб увімкнути небезпечні команди вузлів, як-от `camera.snap`, `camera.clip` і `screen.record`; `denyCommands` вилучає команду, навіть якщо платформне типове значення або явний дозвіл інакше включали б її. Після зміни вузлом оголошеного списку команд відхиліть і повторно схваліть це спарювання пристрою, щоб Gateway зберіг оновлений знімок команд.
- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список заборони).
- `gateway.tools.allow`: вилучити назви інструментів із типового HTTP-списку заборони.
</Accordion>
### OpenAI-сумісні кінцеві точки
### Ендпоінти, сумісні з OpenAI
- Chat Completions: типово вимкнено. Увімкніть за допомогою `gateway.http.endpoints.chatCompletions.enabled: true`.
- Responses API: `gateway.http.endpoints.responses.enabled`.
- Посилення безпеки URL-вводу Responses:
- Посилення URL-вводу Responses:
- `gateway.http.endpoints.responses.maxUrlParts`
- `gateway.http.endpoints.responses.files.urlAllowlist`
- `gateway.http.endpoints.responses.images.urlAllowlist`
Порожні списки дозволених вважаються незаданими; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false`
та/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL.
- Необов’язковий заголовок посилення безпеки відповіді:
- `gateway.http.securityHeaders.strictTransportSecurity` (задавайте лише для HTTPS-origin, які ви контролюєте; див. [Автентифікація через довірений proxy](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
Порожні allowlist вважаються незаданими; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false` та/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL.
- Необов’язковий заголовок посилення відповіді:
- `gateway.http.securityHeaders.strictTransportSecurity` (установлюйте лише для HTTPS-джерел, які ви контролюєте; див. [Автентифікація через довірений проксі](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
### Ізоляція кількох екземплярів
Запускайте кілька gateway на одному хості з унікальними портами й каталогами стану:
Запускайте кілька Gateway на одному хості з унікальними портами та каталогами стану:
```bash
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \
@ -507,10 +500,10 @@ openclaw gateway --port 19001
}
```
- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типово: `false`).
- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, коли явні файли не налаштовані; лише для локального використання/розробки.
- `certPath`: шлях у файловій системі до файлу TLS-сертифіката.
- `keyPath`: шлях у файловій системі до файлу приватного TLS-ключа; тримайте права доступу обмеженими.
- `enabled`: вмикає завершення TLS на слухачі Gateway (HTTPS/WSS) (типово: `false`).
- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, коли явні файли не налаштовано; лише для локального використання/розробки.
- `certPath`: шлях файлової системи до файлу сертифіката TLS.
- `keyPath`: шлях файлової системи до файлу приватного ключа TLS; обмежте права доступу.
- `caPath`: необов’язковий шлях до CA bundle для перевірки клієнтів або власних ланцюгів довіри.
### `gateway.reload`
@ -528,12 +521,12 @@ openclaw gateway --port 19001
```
- `mode`: керує тим, як зміни конфігурації застосовуються під час виконання.
- `"off"`: ігнорувати live-зміни; зміни потребують явного перезапуску.
- `"restart"`: завжди перезапускати процес gateway у разі зміни конфігурації.
- `"hot"`: застосовувати зміни в процесі без перезапуску.
- `"hybrid"` (типово): спочатку спробувати гаряче перезавантаження; за потреби перейти до перезапуску.
- `debounceMs`: debounce-вікно в мс перед застосуванням змін конфігурації (невід’ємне ціле число).
- `deferralTimeoutMs`: необов’язковий максимальний час у мс для очікування операцій у процесі перед примусовим перезапуском. Не вказуйте, щоб використати типове обмежене очікування (`300000`); задайте `0`, щоб чекати безстроково й періодично записувати попередження про ще незавершені операції.
- `"off"`: ігнорувати live-редагування; зміни потребують явного перезапуску.
- `"restart"`: завжди перезапускати процес Gateway у разі зміни конфігурації.
- `"hot"`: застосовувати зміни всередині процесу без перезапуску.
- `"hybrid"` (типово): спочатку спробувати hot reload; за потреби перейти до перезапуску.
- `debounceMs`: вікно debounce у мс перед застосуванням змін конфігурації (невід’ємне ціле число).
- `deferralTimeoutMs`: необов’язковий максимальний час у мс очікування поточних операцій перед примусовим перезапуском. Пропустіть, щоб використовувати типове обмежене очікування (`300000`); установіть `0`, щоб чекати безстроково й періодично логувати попередження про все ще незавершені операції.
---
@ -571,47 +564,47 @@ openclaw gateway --port 19001
```
Автентифікація: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
Токени hook у рядку запиту відхиляються.
Токени хуків у query-string відхиляються.
Примітки щодо валідації та безпеки:
Примітки щодо перевірки та безпеки:
- `hooks.enabled=true` вимагає непорожнього `hooks.token`.
- `hooks.token` має бути **відмінним** від `gateway.auth.token`; повторне використання токена Gateway відхиляється.
- `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`.
- Якщо `hooks.allowRequestSessionKey=true`, обмежте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`).
- Якщо зіставлення або пресет використовує шаблонний `sessionKey`, задайте `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі зіставлення не потребують такого opt-in.
- Якщо зіставлення або пресет використовує шаблонний `sessionKey`, задайте `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі зіставлення не потребують такого явного ввімкнення.
**Кінцеві точки:**
- `POST /hooks/wake``{ text, mode?: "now"|"next-heartbeat" }`
- `POST /hooks/agent``{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
- `sessionKey` з payload запиту приймається лише коли `hooks.allowRequestSessionKey=true` (типово: `false`).
- `POST /hooks/<name>` → розв'язується через `hooks.mappings`
- Значення `sessionKey` зіставлення, відрендерені шаблоном, вважаються наданими ззовні й також потребують `hooks.allowRequestSessionKey=true`.
- `sessionKey` з корисного навантаження запиту приймається лише коли `hooks.allowRequestSessionKey=true` (типово: `false`).
- `POST /hooks/<name>` → розвʼязується через `hooks.mappings`
- Значення `sessionKey` зіставлення, відрендерені з шаблону, вважаються наданими ззовні й також вимагають `hooks.allowRequestSessionKey=true`.
<Accordion title="Подробиці зіставлення">
- `match.path` зіставляє підшлях після `/hooks` (наприклад `/hooks/gmail``gmail`).
- `match.source` зіставляє поле payload для загальних шляхів.
- Шаблони на кшталт `{{messages[0].subject}}` читають із payload.
- `transform` може вказувати на JS/TS-модуль, який повертає дію hook.
- `transform.module` має бути відносним шляхом і лишатися в межах `hooks.transformsDir` (абсолютні шляхи та traversal відхиляються).
- Тримайте `hooks.transformsDir` у `~/.openclaw/hooks/transforms`; директорії Skills у workspace відхиляються. Якщо `openclaw doctor` повідомляє, що цей шлях недійсний, перемістіть модуль transform у директорію hooks transforms або приберіть `hooks.transformsDir`.
- `agentId` маршрутизує до конкретного агента; невідомі ID повертаються до типового.
- `match.path` зіставляє підшлях після `/hooks` (наприклад, `/hooks/gmail``gmail`).
- `match.source` зіставляє поле корисного навантаження для загальних шляхів.
- Шаблони на кшталт `{{messages[0].subject}}` читають дані з корисного навантаження.
- `transform` може вказувати на модуль JS/TS, який повертає дію hook.
- `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та обхід каталогів відхиляються).
- Тримайте `hooks.transformsDir` у `~/.openclaw/hooks/transforms`; каталоги Skills робочої області відхиляються. Якщо `openclaw doctor` повідомляє, що цей шлях недійсний, перемістіть модуль transform до каталогу transforms для hooks або видаліть `hooks.transformsDir`.
- `agentId` спрямовує до конкретного агента; невідомі ідентифікатори повертаються до типового.
- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або пропущено = дозволити всі, `[]` = заборонити всі).
- `defaultSessionKey`: необов'язковий фіксований ключ сесії для запусків агента hook без явного `sessionKey`.
- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і керованим шаблонами ключам сесії зіставлення задавати `sessionKey` (типово: `false`).
- `allowedSessionKeyPrefixes`: необов'язковий allowlist префіксів для явних значень `sessionKey` (запит + зіставлення), наприклад `["hook:"]`. Він стає обов'язковим, коли будь-яке зіставлення або пресет використовує шаблонний `sessionKey`.
- `deliver: true` надсилає фінальну відповідь у канал; `channel` типово дорівнює `last`.
- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо задано каталог моделей).
- `defaultSessionKey`: необовʼязковий фіксований ключ сесії для запусків агента hook без явного `sessionKey`.
- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і ключам сесій зіставлення, керованим шаблонами, задавати `sessionKey` (типово: `false`).
- `allowedSessionKeyPrefixes`: необовʼязковий список дозволених префіксів для явних значень `sessionKey` (запит + зіставлення), наприклад `["hook:"]`. Він стає обовʼязковим, коли будь-яке зіставлення або пресет використовує шаблонний `sessionKey`.
- `deliver: true` надсилає фінальну відповідь до каналу; `channel` типово має значення `last`.
- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо каталог моделей задано).
</Accordion>
### Інтеграція Gmail
- Вбудований пресет Gmail використовує `sessionKey: "hook:gmail:{{messages[0].id}}"`.
- Якщо ви зберігаєте цю маршрутизацію для кожного повідомлення, задайте `hooks.allowRequestSessionKey: true` і обмежте `hooks.allowedSessionKeyPrefixes` відповідно до простору імен Gmail, наприклад `["hook:", "hook:gmail:"]`.
- Якщо вам потрібно `hooks.allowRequestSessionKey: false`, перевизначте пресет статичним `sessionKey` замість типового шаблонного значення.
- Якщо ви зберігаєте цю маршрутизацію для кожного повідомлення, задайте `hooks.allowRequestSessionKey: true` і обмежте `hooks.allowedSessionKeyPrefixes`, щоб вони відповідали простору імен Gmail, наприклад `["hook:", "hook:gmail:"]`.
- Якщо вам потрібен `hooks.allowRequestSessionKey: false`, перевизначте пресет статичним `sessionKey` замість шаблонного типового значення.
```json5
{
@ -639,7 +632,7 @@ openclaw gateway --port 19001
---
## Хост Canvas
## Хост полотна
```json5
{
@ -651,18 +644,18 @@ openclaw gateway --port 19001
}
```
- Обслуговує доступні для редагування агентом HTML/CSS/JS і A2UI через HTTP під портом Gateway:
- Обслуговує редаговані агентом HTML/CSS/JS і A2UI через HTTP на порту Gateway:
- `http://<gateway-host>:<gateway.port>/__openclaw__/canvas/`
- `http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/`
- Лише локально: залишайте `gateway.bind: "loopback"` (типово).
- Прив'язки не до loopback: маршрути canvas потребують автентифікації Gateway (токен/пароль/trusted-proxy), як і інші HTTP-поверхні Gateway.
- Node WebViews зазвичай не надсилають заголовки автентифікації; після pairing і підключення node Gateway оголошує URL можливостей, scoped до node, для доступу до canvas/A2UI.
- URL можливостей прив'язані до активної WS-сесії node і швидко закінчуються. Fallback на основі IP не використовується.
- Лише локально: зберігайте `gateway.bind: "loopback"` (типово).
- Привʼязки не до loopback: маршрути полотна потребують автентифікації Gateway (токен/пароль/довірений проксі), так само як інші HTTP-поверхні Gateway.
- Node WebViews зазвичай не надсилають заголовки автентифікації; після того як вузол спарено й підключено, Gateway оголошує URL можливостей, обмежені вузлом, для доступу до canvas/A2UI.
- URL можливостей привʼязані до активної WS-сесії вузла та швидко спливають. Резервний варіант на основі IP не використовується.
- Вставляє клієнт live-reload в обслуговуваний HTML.
- Автоматично створює стартовий `index.html`, коли порожньо.
- Автоматично створює початковий `index.html`, коли каталог порожній.
- Також обслуговує A2UI за `/__openclaw__/a2ui/`.
- Зміни потребують перезапуску gateway.
- Вимикайте live reload для великих директорій або помилок `EMFILE`.
- Вимкніть live reload для великих каталогів або помилок `EMFILE`.
---
@ -680,11 +673,11 @@ openclaw gateway --port 19001
}
```
- `minimal` (типово): не включати `cliPath` + `sshPort` у TXT-записи.
- `minimal` (типово): пропускати `cliPath` + `sshPort` із записів TXT.
- `full`: включати `cliPath` + `sshPort`.
- Ім'я хоста типово дорівнює системному імені хоста, коли воно є дійсною DNS-міткою, і повертається до `openclaw` інакше. Перевизначте через `OPENCLAW_MDNS_HOSTNAME`.
- Імʼя хоста типово дорівнює системному імені хоста, коли воно є дійсною міткою DNS, із поверненням до `openclaw`. Перевизначте через `OPENCLAW_MDNS_HOSTNAME`.
### Wide-area (DNS-SD)
### Широка зона (DNS-SD)
```json5
{
@ -694,7 +687,7 @@ openclaw gateway --port 19001
}
```
Записує unicast DNS-SD-зону в `~/.openclaw/dns/`. Для виявлення між мережами поєднайте з DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
Записує unicast-зону DNS-SD у `~/.openclaw/dns/`. Для виявлення між мережами поєднайте із DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
Налаштування: `openclaw dns setup --apply`.
@ -702,7 +695,7 @@ openclaw gateway --port 19001
## Середовище
### `env` (inline змінні середовища)
### `env` (вбудовані змінні середовища)
```json5
{
@ -719,14 +712,14 @@ openclaw gateway --port 19001
}
```
- Inline змінні середовища застосовуються лише якщо в process env відсутній ключ.
- Файли `.env`: CWD `.env` + `~/.openclaw/.env` (жоден не перевизначає наявні змінні).
- `shellEnv`: імпортує відсутні очікувані ключі з вашого профілю login shell.
- Див. [Середовище](/uk/help/environment) для повного пріоритету.
- Вбудовані змінні середовища застосовуються лише якщо в середовищі процесу відсутній ключ.
- Файли `.env`: `.env` у CWD + `~/.openclaw/.env` (жоден не перевизначає наявні змінні).
- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell.
- Див. [Середовище](/uk/help/environment) для повного порядку пріоритетів.
### Підстановка змінних середовища
### Підставлення змінних середовища
Посилайтеся на змінні середовища в будь-якому рядку конфігурації через `${VAR_NAME}`:
Посилайтеся на змінні середовища в будь-якому рядку конфігурації за допомогою `${VAR_NAME}`:
```json5
{
@ -738,36 +731,36 @@ openclaw gateway --port 19001
- Зіставляються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
- Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації.
- Екрануйте через `$${VAR}` для буквального `${VAR}`.
- Екрануйте за допомогою `$${VAR}`, щоб отримати буквальний `${VAR}`.
- Працює з `$include`.
---
## Секрети
Посилання на секрети є additive: plaintext значення все ще працюють.
Посилання на секрети є додатковими: plaintext-значення все ще працюють.
### `SecretRef`
Використовуйте одну форму об'єкта:
Використовуйте одну форму обʼєкта:
```json5
{ source: "env" | "file" | "exec", provider: "default", id: "..." }
```
Валідація:
Перевірка:
- шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$`
- шаблон id для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
- Шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$`
- Шаблон id для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
- id для `source: "file"`: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`)
- шаблон id для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
- id для `source: "exec"` не мають містити сегменти шляху `.` або `..`, розділені скісними рисками (наприклад `a/../b` відхиляється)
- Шаблон id для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
- ids для `source: "exec"` не мають містити сегменти шляху `.` або `..`, розділені скісними рисками (наприклад, `a/../b` відхиляється)
### Підтримувана поверхня облікових даних
- Канонічна матриця: [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface)
- `secrets apply` націлюється на підтримувані шляхи облікових даних `openclaw.json`.
- Посилання `auth-profiles.json` включені в runtime resolution і audit coverage.
- Посилання `auth-profiles.json` включені до runtime-розвʼязання та покриття аудиту.
### Конфігурація постачальників секретів
@ -799,14 +792,14 @@ openclaw gateway --port 19001
Примітки:
- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (`id` має бути `"value"` в режимі singleValue).
- Шляхи провайдерів file і exec fail closed, коли перевірка Windows ACL недоступна. Задавайте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити.
- Провайдер `exec` вимагає абсолютного шляху `command` і використовує protocol payloads через stdin/stdout.
- Типово symlink шляхи команд відхиляються. Задайте `allowSymlinkCommand: true`, щоб дозволити symlink шляхи під час валідації розв'язаного цільового шляху.
- Якщо налаштовано `trustedDirs`, перевірка trusted-dir застосовується до розв'язаного цільового шляху.
- Постачальник `file` підтримує `mode: "json"` і `mode: "singleValue"` (`id` має бути `"value"` у режимі singleValue).
- Шляхи постачальників file і exec завершуються відмовою, коли перевірка Windows ACL недоступна. Задавайте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити.
- Постачальник `exec` вимагає абсолютний шлях `command` і використовує протокольні корисні навантаження через stdin/stdout.
- Типово шляхи команд-симлінків відхиляються. Задайте `allowSymlinkCommand: true`, щоб дозволити шляхи-симлінки, водночас перевіряючи розвʼязаний цільовий шлях.
- Якщо `trustedDirs` налаштовано, перевірка довіреного каталогу застосовується до розвʼязаного цільового шляху.
- Дочірнє середовище `exec` типово мінімальне; передавайте потрібні змінні явно через `passEnv`.
- Посилання на секрети розв'язуються під час активації в in-memory snapshot, після чого шляхи запитів читають лише snapshot.
- Фільтрація active-surface застосовується під час активації: нерозв'язані посилання на ввімкнених поверхнях зупиняють startup/reload з помилкою, тоді як неактивні поверхні пропускаються з diagnostics.
- Посилання на секрети розвʼязуються під час активації у знімок у памʼяті, після чого шляхи запитів читають лише цей знімок.
- Фільтрація активної поверхні застосовується під час активації: нерозвʼязані посилання на ввімкнених поверхнях спричиняють збій запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою.
---
@ -829,13 +822,13 @@ openclaw gateway --port 19001
```
- Профілі для кожного агента зберігаються в `<agentDir>/auth-profiles.json`.
- `auth-profiles.json` підтримує refs на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних.
- Застарілі плоскі мапи `auth-profiles.json`, як-от `{ "provider": { "apiKey": "..." } }`, не є runtime-форматом; `openclaw doctor --fix` переписує їх у канонічні API-key-профілі `provider:default` із резервною копією `.legacy-flat.*.bak`.
- Профілі в OAuth-режимі (`auth.profiles.<id>.mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef.
- Статичні runtime облікові дані надходять з in-memory resolved snapshots; застарілі статичні записи `auth.json` очищаються, коли їх виявлено.
- Застарілі OAuth імпорти з `~/.openclaw/credentials/oauth.json`.
- `auth-profiles.json` підтримує посилання на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних.
- Застарілі пласкі мапи `auth-profiles.json`, такі як `{ "provider": { "apiKey": "..." } }`, не є runtime-форматом; `openclaw doctor --fix` переписує їх у канонічні профілі API-key `provider:default` з резервною копією `.legacy-flat.*.bak`.
- Профілі OAuth-режиму (`auth.profiles.<id>.mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef.
- Статичні runtime-облікові дані надходять із розвʼязаних знімків у памʼяті; застарілі статичні записи `auth.json` очищуються під час виявлення.
- Застарілі OAuth імпортуються з `~/.openclaw/credentials/oauth.json`.
- Див. [OAuth](/uk/concepts/oauth).
- Runtime-поведінка секретів і інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets).
- Runtime-поведінка секретів та інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets).
### `auth.cooldowns`
@ -857,15 +850,20 @@ openclaw gateway --port 19001
}
```
- `billingBackoffHours`: базовий backoff у годинах, коли профіль зазнає збою через справжні помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст про білінг усе ще може потрапити сюди навіть у відповідях `401`/`403`, але специфічні для провайдера текстові зіставлення залишаються обмеженими провайдером, якому вони належать (наприклад, OpenRouter `Key limit exceeded`). Повідомлення повторюваного HTTP `402` про вікно використання або ліміти витрат організації/робочого простору натомість залишаються в шляху `rate_limit`.
- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин backoff для білінгу за провайдерами.
- `billingMaxHours`: обмеження в годинах для експоненційного зростання backoff білінгу (типово: `24`).
- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для високодостовірних збоїв `auth_permanent` (типово: `10`).
- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання backoff `auth_permanent` (типово: `60`).
- `failureWindowHours`: рухоме вікно в годинах, що використовується для лічильників backoff (типово: `24`).
- `overloadedProfileRotations`: максимальна кількість ротацій профілів автентифікації того самого провайдера для помилок перевантаження перед перемиканням на резервну модель (типово: `1`). Сюди потрапляють форми зайнятості провайдера, як-от `ModelNotReadyException`.
- `billingBackoffHours`: базова затримка в годинах, коли профіль зазнає невдачі через справжні
помилки billing/insufficient-credit (типово: `5`). Явний текст про billing може
все одно потрапити сюди навіть у відповідях `401`/`403`, але специфічні для провайдера
текстові зіставлювачі залишаються обмеженими провайдером, якому вони належать (наприклад OpenRouter
`Key limit exceeded`). Повторювані HTTP-повідомлення `402` про usage-window або
ліміт витрат організації/робочого простору натомість залишаються в шляху `rate_limit`.
- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин затримки billing для кожного провайдера.
- `billingMaxHours`: обмеження в годинах для експоненційного зростання затримки billing (типово: `24`).
- `authPermanentBackoffMinutes`: базова затримка в хвилинах для високовпевнених збоїв `auth_permanent` (типово: `10`).
- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання затримки `auth_permanent` (типово: `60`).
- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників затримок (типово: `24`).
- `overloadedProfileRotations`: максимальна кількість ротацій auth-профілів того самого провайдера для помилок перевантаження перед переходом до fallback моделі (типово: `1`). Сюди потрапляють форми зайнятості провайдера, як-от `ModelNotReadyException`.
- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого провайдера/профілю (типово: `0`).
- `rateLimitedProfileRotations`: максимальна кількість ротацій профілів автентифікації того самого провайдера для помилок ліміту частоти перед перемиканням на резервну модель (типово: `1`). Цей кошик ліміту частоти включає текст у форматі провайдера, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-профілів того самого провайдера для помилок обмеження швидкості перед переходом до fallback моделі (типово: `1`). Цей кошик обмеження швидкості включає тексти у форматі провайдера, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
---
@ -887,8 +885,8 @@ openclaw gateway --port 19001
- Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
- Задайте `logging.file` для стабільного шляху.
- `consoleLevel` підвищується до `debug`, коли використано `--verbose`.
- `maxFileBytes`: максимальний розмір активного файла журналу в байтах перед ротацією (додатне ціле число; типово: `104857600` = 100 MB). OpenClaw зберігає до п’яти нумерованих архівів поруч з активним файлом.
- `redactSensitive` / `redactPatterns`: маскування за найкращим зусиллям для виводу консолі, файлових журналів, записів журналів OTLP і збереженого тексту транскрипту сесії. `redactSensitive: "off"` вимикає лише цю загальну політику журналів/транскриптів; поверхні безпеки UI/інструментів/діагностики все одно редагують секрети перед виведенням.
- `maxFileBytes`: максимальний розмір активного файлу журналу в байтах перед ротацією (додатне ціле число; типово: `104857600` = 100 MB). OpenClaw зберігає до п’яти пронумерованих архівів поруч з активним файлом.
- `redactSensitive` / `redactPatterns`: best-effort маскування для виводу в консоль, файлових журналів, записів журналів OTLP і збереженого тексту транскрипту сесії. `redactSensitive: "off"` вимикає лише цю загальну політику журналів/транскриптів; поверхні безпеки UI/інструментів/діагностики все одно редагують секрети перед виведенням.
---
@ -937,22 +935,22 @@ openclaw gateway --port 19001
```
- `enabled`: головний перемикач для виводу інструментування (типово: `true`).
- `flags`: масив рядків прапорців, що вмикають цільовий вивід журналів (підтримує шаблони на кшталт `"telegram.*"` або `"*"`).
- `stuckSessionWarnMs`: поріг віку без прогресу в мс для класифікації довготривалих сесій обробки як `session.long_running`, `session.stalled` або `session.stuck`. Відповідь, інструмент, статус, блок і прогрес ACP скидають таймер; повторна діагностика `session.stuck` виконує backoff, доки стан не змінюється.
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`). Повну конфігурацію, каталог сигналів і модель приватності див. у [експорті OpenTelemetry](/uk/gateway/opentelemetry).
- `flags`: масив рядків прапорців, що вмикають цільовий вивід журналів (підтримує шаблони із символами підстановки, як-от `"telegram.*"` або `"*"`).
- `stuckSessionWarnMs`: поріг віку без прогресу в мс для класифікації довготривалих сесій обробки як `session.long_running`, `session.stalled` або `session.stuck`. Відповідь, інструмент, статус, блок і прогрес ACP скидають таймер; повторні діагностики `session.stuck` відступають із затримкою, поки стан не змінюється.
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`). Повну конфігурацію, каталог сигналів і модель приватності див. в [експорті OpenTelemetry](/uk/gateway/opentelemetry).
- `otel.endpoint`: URL колектора для експорту OTel.
- `otel.tracesEndpoint` / `otel.metricsEndpoint` / `otel.logsEndpoint`: необов’язкові OTLP-ендпоїнти для конкретних сигналів. Коли задано, вони перевизначають `otel.endpoint` лише для цього сигналу.
- `otel.tracesEndpoint` / `otel.metricsEndpoint` / `otel.logsEndpoint`: необов’язкові OTLP-ендпоїнти, специфічні для сигналів. Коли задані, вони перевизначають `otel.endpoint` лише для цього сигналу.
- `otel.protocol`: `"http/protobuf"` (типово) або `"grpc"`.
- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються із запитами експорту OTel.
- `otel.serviceName`: назва сервісу для атрибутів ресурсу.
- `otel.serviceName`: ім’я сервісу для атрибутів ресурсу.
- `otel.traces` / `otel.metrics` / `otel.logs`: вмикають експорт трас, метрик або журналів.
- `otel.sampleRate`: частота семплювання трас `0``1`.
- `otel.flushIntervalMs`: інтервал періодичного скидання телеметрії в мс.
- `otel.captureContent`: явне ввімкнення захоплення сирого вмісту для атрибутів span OTEL. Типово вимкнено. Булеве `true` захоплює несистемний вміст повідомлень/інструментів; форма об’єкта дає змогу явно ввімкнути `inputMessages`, `outputMessages`, `toolInputs`, `toolOutputs` і `systemPrompt`.
- `OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental`: перемикач середовища для найновіших експериментальних атрибутів провайдера span GenAI. Типово spans зберігають застарілий атрибут `gen_ai.system` для сумісності; метрики GenAI використовують обмежені семантичні атрибути.
- `OPENCLAW_OTEL_PRELOADED=1`: перемикач середовища для хостів, які вже зареєстрували глобальний OpenTelemetry SDK. Тоді OpenClaw пропускає запуск/завершення SDK, що належить Plugin, зберігаючи діагностичні слухачі активними.
- `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` і `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`: змінні середовища для ендпоїнтів конкретних сигналів, що використовуються, коли відповідний ключ конфігурації не задано.
- `cacheTrace.enabled`: журналювати знімки трасування кешу для вбудованих запусків (типово: `false`).
- `otel.captureContent`: опціональне захоплення сирого вмісту для атрибутів span OTEL. Типово вимкнено. Boolean `true` захоплює несистемний вміст повідомлень/інструментів; форма об’єкта дає змогу явно ввімкнути `inputMessages`, `outputMessages`, `toolInputs`, `toolOutputs` і `systemPrompt`.
- `OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental`: змінна середовища для найновіших експериментальних атрибутів провайдера span GenAI. Типово spans зберігають застарілий атрибут `gen_ai.system` для сумісності; метрики GenAI використовують обмежені семантичні атрибути.
- `OPENCLAW_OTEL_PRELOADED=1`: змінна середовища для хостів, які вже зареєстрували глобальний OpenTelemetry SDK. Тоді OpenClaw пропускає запуск/завершення SDK, що належить Plugin, зберігаючи активними діагностичні слухачі.
- `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` і `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`: змінні середовища ендпоїнтів, специфічні для сигналів, що використовуються, коли відповідний ключ конфігурації не задано.
- `cacheTrace.enabled`: записувати snapshots трасування кешу для вбудованих запусків (типово: `false`).
- `cacheTrace.filePath`: шлях виводу для JSONL трасування кешу (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід трасування кешу (усі типово: `true`).
@ -976,11 +974,11 @@ openclaw gateway --port 19001
}
```
- `channel`: канал випуску для встановлень npm/git — `"stable"`, `"beta"` або `"dev"`.
- `checkOnStart`: перевіряти оновлення npm під час запуску Gateway (типово: `true`).
- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (типово: `false`).
- `channel`: канал релізів для npm/git-інсталяцій`"stable"`, `"beta"` або `"dev"`.
- `checkOnStart`: перевіряти оновлення npm під час запуску gateway (типово: `true`).
- `auto.enabled`: увімкнути фонове автооновлення для пакетних інсталяцій (типово: `false`).
- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням stable-каналу (типово: `6`; макс.: `168`).
- `auto.stableJitterHours`: додаткове вікно розподілу розгортання stable-каналу в годинах (типово: `12`; макс.: `168`).
- `auto.stableJitterHours`: додаткове вікно рознесення розгортання stable-каналу в годинах (типово: `12`; макс.: `168`).
- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу в годинах (типово: `1`; макс.: `24`).
---
@ -1015,22 +1013,22 @@ openclaw gateway --port 19001
```
- `enabled`: глобальний feature gate ACP (типово: `true`; задайте `false`, щоб приховати dispatch ACP і можливості spawn).
- `dispatch.enabled`: незалежний gate для dispatch ходу сесії ACP (типово: `true`). Задайте `false`, щоб зберегти команди ACP доступними, але заблокувати виконання.
- `backend`: стандартний ідентифікатор бекенда середовища виконання ACP (має збігатися із зареєстрованим Plugin середовища виконання ACP).
Спочатку встановіть Plugin бекенда, і якщо задано `plugins.allow`, додайте ідентифікатор Plugin бекенда (наприклад `acpx`), інакше бекенд ACP не завантажиться.
- `defaultAgent`: резервний ідентифікатор цільового агента ACP, коли spawns не вказують явну ціль.
- `allowedAgents`: allowlist ідентифікаторів агентів, дозволених для сесій середовища виконання ACP; порожній означає відсутність додаткового обмеження.
- `dispatch.enabled`: незалежний gate для dispatch ходу сесії ACP (типово: `true`). Задайте `false`, щоб залишити команди ACP доступними, але заблокувати виконання.
- `backend`: типовий id backend середовища виконання ACP (має збігатися із зареєстрованим ACP runtime Plugin).
Спершу встановіть backend Plugin, і якщо задано `plugins.allow`, включіть id backend Plugin (наприклад `acpx`), інакше ACP backend не завантажиться.
- `defaultAgent`: fallback id цільового агента ACP, коли spawn не задає явну ціль.
- `allowedAgents`: allowlist id агентів, дозволених для сесій середовища виконання ACP; порожній означає відсутність додаткових обмежень.
- `maxConcurrentSessions`: максимальна кількість одночасно активних сесій ACP.
- `stream.coalesceIdleMs`: вікно idle flush у мс для потокового тексту.
- `stream.maxChunkChars`: максимальний розмір фрагмента перед поділом проєкції потокового блока.
- `stream.coalesceIdleMs`: idle-вікно скидання в мс для потокового тексту.
- `stream.maxChunkChars`: максимальний розмір фрагмента перед розбиттям проекції потокового блока.
- `stream.repeatSuppression`: пригнічувати повторювані рядки статусу/інструментів за хід (типово: `true`).
- `stream.deliveryMode`: `"live"` транслює інкрементально; `"final_only"` буферизує до термінальних подій ходу.
- `stream.deliveryMode`: `"live"` передає потік інкрементально; `"final_only"` буферизує до термінальних подій ходу.
- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструментів (типово: `"paragraph"`).
- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, що проєктується за хід ACP.
- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, проєктована за хід ACP.
- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлення ACP.
- `stream.tagVisibility`: запис імен тегів у булеві перевизначення видимості для потокових подій.
- `runtime.ttlMinutes`: idle TTL у хвилинах для працівників сесії ACP перед тим, як вони стають придатними для очищення.
- `runtime.installCommand`: необов’язкова команда встановлення для запуску під час bootstrap середовища виконання ACP.
- `stream.tagVisibility`: запис імен тегів до boolean-перевизначень видимості для потокових подій.
- `runtime.ttlMinutes`: idle TTL у хвилинах для workers сесій ACP перед тим, як вони стануть придатними до очищення.
- `runtime.installCommand`: необов’язкова команда встановлення, яку слід виконати під час bootstrap середовища виконання ACP.
---
@ -1046,11 +1044,11 @@ openclaw gateway --port 19001
}
```
- `cli.banner.taglineMode` керує стилем tagline банера:
- `"random"` (типово): змінні смішні/сезонні taglines.
- `"default"`: фіксована нейтральна tagline (`All your chats, one OpenClaw.`).
- `"off"`: без тексту tagline (заголовок/версія банера все одно показуються).
- Щоб приховати весь банер (а не лише taglines), задайте env `OPENCLAW_HIDE_BANNER=1`.
- `cli.banner.taglineMode` керує стилем слогана банера:
- `"random"` (типово): ротаційні кумедні/сезонні слогани.
- `"default"`: фіксований нейтральний слоган (`All your chats, one OpenClaw.`).
- `"off"`: без тексту слогана (назва/версія банера все одно показуються).
- Щоб приховати весь банер (а не лише слогани), задайте env `OPENCLAW_HIDE_BANNER=1`.
---
@ -1074,15 +1072,15 @@ openclaw gateway --port 19001
## Ідентичність
Див. поля ідентичності `agents.list` у [стандартних налаштуваннях агента](/uk/gateway/config-agents#agent-defaults).
Див. поля ідентичності `agents.list` у [типових значеннях агента](/uk/gateway/config-agents#agent-defaults).
---
## Міст (застарілий, вилучено)
## Міст (застарілий, вилучений)
Поточні збірки більше не містять TCP-міст. Nodes підключаються через Gateway WebSocket. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація не проходить, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі).
Поточні збірки більше не включають TCP-міст. Вузли підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде вилучено; `openclaw doctor --fix` може прибрати невідомі ключі).
<Accordion title="Legacy bridge config (historical reference)">
<Accordion title="Конфігурація застарілого моста (історична довідка)">
```json
{
@ -1120,11 +1118,11 @@ openclaw gateway --port 19001
}
```
- `sessionRetention`: як довго зберігати завершені ізольовані сесії запусків cron перед видаленням із `sessions.json`. Також керує очищенням архівованих видалених транскриптів cron. Типово: `24h`; задайте `false`, щоб вимкнути.
- `runLog.maxBytes`: максимальний розмір файла журналу на запуск (`cron/runs/<jobId>.jsonl`) перед обрізанням. Типово: `2_000_000` байтів.
- `sessionRetention`: як довго зберігати завершені ізольовані сесії запусків cron перед обрізанням із `sessions.json`. Також керує очищенням архівованих видалених транскриптів cron. Типово: `24h`; задайте `false`, щоб вимкнути.
- `runLog.maxBytes`: максимальний розмір для кожного файла журналу запуску (`cron/runs/<jobId>.jsonl`) перед обрізанням. Типово: `2_000_000` байтів.
- `runLog.keepLines`: найновіші рядки, що зберігаються, коли запускається обрізання журналу запуску. Типово: `2000`.
- `webhookToken`: bearer-токен, що використовується для доставки cron webhook POST (`delivery.mode = "webhook"`); якщо пропущено, заголовок автентифікації не надсилається.
- `webhook`: застарілий резервний URL webhook (http/https), що використовується лише для збережених завдань, які все ще мають `notify: true`.
- `webhookToken`: bearer-токен, що використовується для доставки cron Webhook POST (`delivery.mode = "webhook"`); якщо не вказано, заголовок auth не надсилається.
- `webhook`: застарілий fallback URL webhook (http/https), що використовується лише для збережених завдань, які все ще мають `notify: true`.
### `cron.retry`
@ -1141,10 +1139,10 @@ openclaw gateway --port 19001
```
- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань у разі тимчасових помилок (за замовчуванням: `3`; діапазон: `0``10`).
- `backoffMs`: масив затримок відступу в мс для кожної повторної спроби (за замовчуванням: `[30000, 60000, 300000]`; 110 записів).
- `retryOn`: типи помилок, які запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Опустіть, щоб повторювати всі тимчасові типи.
- `backoffMs`: масив затримок повторних спроб у мс для кожної спроби (за замовчуванням: `[30000, 60000, 300000]`; 110 записів).
- `retryOn`: типи помилок, що запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Не вказуйте, щоб повторювати всі тимчасові типи.
Застосовується лише до одноразових завдань cron. Повторювані завдання використовують окрему обробку збоїв.
Застосовується лише до одноразових cron-завдань. Повторювані завдання використовують окрему обробку збоїв.
### `cron.failureAlert`
@ -1163,12 +1161,12 @@ openclaw gateway --port 19001
}
```
- `enabled`: увімкнути сповіщення про збої для завдань cron (за замовчуванням: `false`).
- `after`: кількість послідовних збоїв до спрацювання сповіщення (додатне ціле число, мін.: `1`).
- `enabled`: увімкнути сповіщення про збої для cron-завдань (за замовчуванням: `false`).
- `after`: кількість послідовних збоїв перед надсиланням сповіщення (додатне ціле число, мін.: `1`).
- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число).
- `includeSkipped`: враховувати послідовні пропущені запуски в порозі сповіщення (за замовчуванням: `false`). Пропущені запуски відстежуються окремо й не впливають на відступ після помилок виконання.
- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` публікує в налаштований webhook.
- `accountId`: необов’язковий ідентифікатор облікового запису або каналу для обмеження області доставки сповіщення.
- `includeSkipped`: зараховувати послідовні пропущені запуски до порога сповіщення (за замовчуванням: `false`). Пропущені запуски відстежуються окремо й не впливають на затримку повторів після помилок виконання.
- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` публікує в налаштований Webhook.
- `accountId`: необов’язковий ідентифікатор облікового запису або каналу для обмеження області доставки сповіщень.
### `cron.failureDestination`
@ -1186,26 +1184,26 @@ openclaw gateway --port 19001
```
- Типове призначення для сповіщень про збої cron в усіх завданнях.
- `mode`: `"announce"` або `"webhook"`; за замовчуванням `"announce"`, коли є достатньо даних цілі.
- `mode`: `"announce"` або `"webhook"`; за замовчуванням використовується `"announce"`, коли наявно достатньо цільових даних.
- `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки.
- `to`: явна ціль announce або URL webhook. Обов’язково для режиму webhook.
- `to`: явна ціль announce або URL Webhook. Обов’язково для режиму Webhook.
- `accountId`: необов’язкове перевизначення облікового запису для доставки.
- `delivery.failureDestination` на рівні завдання перевизначає це глобальне значення за замовчуванням.
- Коли ні глобальне, ні задане на рівні завдання призначення збою не встановлено, завдання, які вже доставляють через `announce`, у разі збою повертаються до цієї основної цілі announce.
- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо основний `delivery.mode` завдання не дорівнює `"webhook"`.
- `delivery.failureDestination` на рівні завдання перевизначає це глобальне типове значення.
- Коли ні глобальне, ні рівня завдання призначення збою не задано, завдання, які вже доставляють через `announce`, у разі збою повертаються до цієї основної цілі announce.
- `delivery.failureDestination` підтримується лише для завдань `sessionTarget="isolated"`, якщо основний `delivery.mode` завдання не є `"webhook"`.
Див. [Завдання Cron](/uk/automation/cron-jobs). Ізольовані виконання cron відстежуються як [фонові завдання](/uk/automation/tasks).
Див. [Cron-завдання](/uk/automation/cron-jobs). Ізольовані виконання cron відстежуються як [фонові завдання](/uk/automation/tasks).
---
## Змінні шаблону медіамоделі
## Змінні шаблонів медіамоделі
Заповнювачі шаблону, що розгортаються в `tools.media.models[].args`:
| Змінна | Опис |
| ------------------ | ------------------------------------------------- |
| `{{Body}}` | Повний текст вхідного повідомлення |
| `{{RawBody}}` | Необроблений текст (без обгорток історії/відправника) |
| `{{RawBody}}` | Сирий текст (без обгорток історії/відправника) |
| `{{BodyStripped}}` | Текст із вилученими згадками групи |
| `{{From}}` | Ідентифікатор відправника |
| `{{To}}` | Ідентифікатор призначення |
@ -1213,11 +1211,11 @@ openclaw gateway --port 19001
| `{{SessionId}}` | UUID поточної сесії |
| `{{IsNewSession}}` | `"true"`, коли створено нову сесію |
| `{{MediaUrl}}` | Псевдо-URL вхідного медіа |
| `{{MediaPath}}` | Локальний шлях до медіа |
| `{{MediaPath}}` | Локальний шлях медіа |
| `{{MediaType}}` | Тип медіа (зображення/аудіо/документ/…) |
| `{{Transcript}}` | Транскрипт аудіо |
| `{{Prompt}}` | Визначений медіапромпт для записів CLI |
| `{{MaxChars}}` | Визначена максимальна кількість символів виводу для записів CLI |
| `{{Prompt}}` | Розв’язаний медіапромпт для записів CLI |
| `{{MaxChars}}` | Розв’язана максимальна кількість символів виводу для записів CLI |
| `{{ChatType}}` | `"direct"` або `"group"` |
| `{{GroupSubject}}` | Тема групи (за можливості) |
| `{{GroupMembers}}` | Попередній перегляд учасників групи (за можливості) |
@ -1245,17 +1243,17 @@ openclaw gateway --port 19001
**Поведінка злиття:**
- Один файл: замінює об’єкт, що його містить.
- Масив файлів: глибоко зливається по порядку (пізніші значення перевизначають попередні).
- Масив файлів: глибоко зливається за порядком (пізніші перевизначають попередні).
- Сусідні ключі: зливаються після включень (перевизначають включені значення).
- Вкладені включення: до 10 рівнів углиб.
- Шляхи: розв’язуються відносно файлу, що виконує включення, але мають залишатися в межах каталогу конфігурації верхнього рівня (`dirname` файлу `openclaw.json`). Абсолютні форми або форми з `../` дозволені лише тоді, коли вони все одно розв’язуються в цих межах.
- Записи, керовані OpenClaw, які змінюють лише один розділ верхнього рівня, підкріплений включенням одного файлу, записуються наскрізно в цей включений файл. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін.
- Кореневі включення, масиви включень і включення із сусідніми перевизначеннями є лише для читання для записів, керованих OpenClaw; такі записи завершуються закритою помилкою замість вирівнювання конфігурації.
- Шляхи: розв’язуються відносно файлу, що виконує включення, але мають залишатися всередині каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми/форми з `../` дозволені лише тоді, коли вони все одно розв’язуються всередині цієї межі.
- Записи, якими володіє OpenClaw і які змінюють лише один розділ верхнього рівня, підкріплений однофайловим включенням, записуються напряму до цього включеного файлу. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін.
- Кореневі включення, масиви включень і включення із сусідніми перевизначеннями є лише для читання для записів, якими володіє OpenClaw; такі записи завершуються закрито, а не сплощують конфігурацію.
- Помилки: зрозумілі повідомлення для відсутніх файлів, помилок розбору та циклічних включень.
---
овязане: [Конфігурація](/uk/gateway/configuration) · [Приклади конфігурації](/uk/gateway/configuration-examples) · [Діагностика](/uk/gateway/doctor)_
овязане: [Конфігурація](/uk/gateway/configuration) · [Приклади конфігурації](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_
## Пов’язане

View File

@ -5,10 +5,10 @@ read_when:
summary: Як OpenClaw формує контекст промпта та звітує про використання токенів і витрати
title: Використання токенів і витрати
x-i18n:
generated_at: "2026-04-28T11:25:26Z"
generated_at: "2026-05-02T10:18:08Z"
model: gpt-5.5
provider: openai
source_hash: a3807ccae3313a731c2673edace8a5b37dc22259d436a67b4d787e45682dad3c
source_hash: 648c1624aa81e896dacdbdc10784ca10fba2e43114823903da6455e7de512ace
source_path: reference/token-use.md
workflow: 16
---
@ -20,103 +20,103 @@ OpenClaw відстежує **токени**, а не символи. Токен
## Як будується системний промпт
OpenClaw збирає власний системний промпт під час кожного запуску. Він містить:
OpenClaw збирає власний системний промпт під час кожного запуску. Він включає:
- Список інструментів + короткі описи
- Список Skills (лише метадані; інструкції завантажуються на вимогу через `read`).
Компактний блок Skills обмежується `skills.limits.maxSkillsPromptChars`,
з необовязковим перевизначенням для окремого агента в
Компактний блок skills обмежується `skills.limits.maxSkillsPromptChars`,
з необов'язковим перевизначенням для окремого агента в
`agents.list[].skillsLimits.maxSkillsPromptChars`.
- Інструкції для самооновлення
- Робочу область + bootstrap-файли (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md` для нових запусків, плюс `MEMORY.md`, якщо він присутній). Кореневий `memory.md` у нижньому регістрі не інжектиться; це застарілий вхід для відновлення через `openclaw doctor --fix`, коли він поєднаний із `MEMORY.md`. Великі файли обрізаються за `agents.defaults.bootstrapMaxChars` (типово: 12000), а загальна bootstrap-інєкція обмежується `agents.defaults.bootstrapTotalMaxChars` (типово: 60000). Щоденні файли `memory/*.md` не є частиною звичайного bootstrap-промпта; у звичайних ходах вони залишаються доступними на вимогу через інструменти пам’яті, але модельні запуски скидання/старту можуть додати на початок одноразовий блок стартового контексту з нещодавньою щоденною пам’яттю для цього першого ходу. Команди чату `/new` і `/reset` без аргументів підтверджуються без виклику моделі. Стартовий вступ контролюється `agents.defaults.startupContext`.
- Робочий простір + bootstrap-файли (`AGENTS.md`, `SOUL.md`, `TOOLS.md`, `IDENTITY.md`, `USER.md`, `HEARTBEAT.md`, `BOOTSTRAP.md`, коли новий, плюс `MEMORY.md`, коли наявний). Кореневий `memory.md` у нижньому регістрі не ін'єктується; це застарілий вхід для виправлення через `openclaw doctor --fix`, коли він поєднаний із `MEMORY.md`. Великі файли обрізаються за `agents.defaults.bootstrapMaxChars` (типово: 12000), а загальна bootstrap-ін'єкція обмежується `agents.defaults.bootstrapTotalMaxChars` (типово: 60000). Щоденні файли `memory/*.md` не є частиною звичайного bootstrap-промпта; у звичайних ходах вони залишаються доступними на вимогу через інструменти пам'яті, але модельні запуски reset/startup можуть додати перед першим ходом одноразовий блок startup-контексту з нещодавньою щоденною пам'яттю. Прості команди чату `/new` і `/reset` підтверджуються без виклику моделі. Startup-прелюдія керується `agents.defaults.startupContext`.
- Час (UTC + часовий пояс користувача)
- Теги відповіді + поведінку Heartbeat
- Метадані середовища виконання (хост/ОС/модель/мислення)
- Теги відповіді + поведінка Heartbeat
- Метадані runtime (хост/ОС/модель/мислення)
Повний розбір див. у [Системний промпт](/uk/concepts/system-prompt).
## Що враховується у вікні контексту
Усе, що отримує модель, враховується в ліміті контексту:
Усе, що отримує модель, зараховується до ліміту контексту:
- Системний промпт (усі розділи, перелічені вище)
- Історія розмови (повідомлення користувача + асистента)
- Виклики інструментів і результати інструментів
- Вкладення/транскрипти (зображення, аудіо, файли)
- Підсумки Compaction та артефакти обрізання
- Обгортки провайдера або заголовки безпеки (не видимі, але все одно враховуються)
- Підсумки Compaction і артефакти обрізання
- Обгортки провайдера або заголовки безпеки (невидимі, але все одно враховуються)
Деякі поверхні з високим навантаженням середовища виконання мають власні явні обмеження:
Деякі runtime-інтенсивні поверхні мають власні явні обмеження:
- `agents.defaults.contextLimits.memoryGetMaxChars`
- `agents.defaults.contextLimits.memoryGetDefaultLines`
- `agents.defaults.contextLimits.toolResultMaxChars`
- `agents.defaults.contextLimits.postCompactionMaxChars`
Перевизначення для окремих агентів розташовані в `agents.list[].contextLimits`. Ці налаштування
призначені для обмежених фрагментів середовища виконання та інжектованих блоків, якими володіє середовище виконання. Вони
відокремлені від bootstrap-лімітів, лімітів стартового контексту та лімітів промпта Skills.
Перевизначення для окремого агента розміщені під `agents.list[].contextLimits`. Ці перемикачі
призначені для обмежених runtime-фрагментів і runtime-власних ін'єктованих блоків. Вони
відокремлені від bootstrap-лімітів, лімітів startup-контексту та лімітів промпта Skills.
Для зображень OpenClaw зменшує масштаб payload-зображень транскриптів/інструментів перед викликами провайдера.
Налаштовуйте це через `agents.defaults.imageMaxDimensionPx` (типово: `1200`):
Для зображень OpenClaw зменшує масштаб payload-ів зображень із транскриптів/інструментів перед викликами провайдера.
Використовуйте `agents.defaults.imageMaxDimensionPx` (типово: `1200`) для налаштування цього:
- Нижчі значення зазвичай зменшують використання vision-токенів і розмір payload.
- Вищі значення зберігають більше візуальних деталей для OCR/UI-насичених знімків екрана.
Для практичного розбору (за кожним інжектованим файлом, інструментами, Skills і розміром системного промпта) використовуйте `/context list` або `/context detail`. Див. [Контекст](/uk/concepts/context).
Для практичного розбору (за кожним інктованим файлом, інструментами, Skills і розміром системного промпта) використовуйте `/context list` або `/context detail`. Див. [Контекст](/uk/concepts/context).
## Як переглянути поточне використання токенів
Використовуйте це в чаті:
- `/status`**статусна картка з великою кількістю емодзі** з моделлю сесії, використанням контексту,
токенами входу/виходу останньої відповіді та **орієнтовною вартістю** (лише для API-ключа).
- `/usage off|tokens|full` → додає **footer використання для кожної відповіді** до кожної відповіді.
- Зберігається для сесії (як `responseUsage`).
- `/status`**картка стану з багатьма емодзі** з моделлю сеансу, використанням контексту,
токенами введення/виведення останньої відповіді та **орієнтовною вартістю** (лише API-ключ).
- `/usage off|tokens|full` → додає **футер використання для кожної відповіді** до кожної відповіді.
- Зберігається для сеансу (зберігається як `responseUsage`).
- OAuth-автентифікація **приховує вартість** (лише токени).
- `/usage cost` → показує локальний підсумок витрат із журналів сесій OpenClaw.
- `/usage cost` → показує локальний підсумок вартості з журналів сеансу OpenClaw.
Інші поверхні:
- **TUI/Web TUI:** підтримуються `/status` + `/usage`.
- **CLI:** `openclaw status --usage` і `openclaw channels list` показують
нормалізовані вікна квот провайдера (`X% left`, а не витрати на окрему відповідь).
Поточні провайдери вікон використання: Anthropic, GitHub Copilot, Gemini CLI,
нормалізовані вікна квот провайдера (`X% left`, а не вартість за відповідь).
Поточні провайдери з вікнами використання: Anthropic, GitHub Copilot, Gemini CLI,
OpenAI Codex, MiniMax, Xiaomi та z.ai.
Поверхні використання нормалізують поширені нативні псевдоніми полів провайдера перед відображенням.
Для трафіку Responses сімейства OpenAI це включає як `input_tokens` /
`output_tokens`, так і `prompt_tokens` / `completion_tokens`, тому специфічні для транспорту
назви полів не змінюють `/status`, `/usage` або підсумки сесії.
JSON-використання Gemini CLI також нормалізується: текст відповіді береться з `response`, а
`stats.cached` мапиться на `cacheRead` з використанням `stats.input_tokens - stats.cached`,
коли CLI не містить явного поля `stats.input`.
Поверхні використання нормалізують поширені власні псевдоніми полів провайдерів перед показом.
Для трафіку Responses сімейства OpenAI це включає і `input_tokens` /
`output_tokens`, і `prompt_tokens` / `completion_tokens`, тому назви полів, специфічні для транспорту,
не змінюють `/status`, `/usage` або підсумки сеансу.
Використання Gemini CLI JSON також нормалізується: текст відповіді береться з `response`, а
`stats.cached` зіставляється з `cacheRead`, використовуючи `stats.input_tokens - stats.cached`,
коли CLI пропускає явне поле `stats.input`.
Для нативного трафіку Responses сімейства OpenAI псевдоніми використання WebSocket/SSE
нормалізуються так само, а підсумки fallback-яться до нормалізованих входу + виходу, коли
нормалізуються так само, а підсумки повертаються до нормалізованого введення + виведення, коли
`total_tokens` відсутній або дорівнює `0`.
Коли поточний знімок сесії розріджений, `/status` і `session_status` також можуть
відновлювати лічильники токенів/кешу та мітку активної моделі середовища виконання з
найновішого журналу використання транскрипта. Наявні ненульові live-значення все одно мають
пріоритет над fallback-значеннями транскрипта, а більші підсумки транскрипта, орієнтовані на промпт,
можуть перемагати, коли збережені підсумки відсутні або менші.
Автентифікація використання для вікон квот провайдера береться зі спеціальних hook-ів провайдера, коли
вони доступні; інакше OpenClaw fallback-иться до відповідних облікових даних OAuth/API-ключа
з профілів автентифікації, env або конфігурації.
Записи транскрипта асистента зберігають ту саму нормалізовану форму використання, включно з
`usage.cost`, коли для активної моделі налаштовано ціни, а провайдер
повертає метадані використання. Це дає `/usage cost` і статусу сесії на основі транскрипта
стабільне джерело навіть після зникнення live-стану середовища виконання.
Коли поточний знімок сеансу розріджений, `/status` і `session_status` також можуть
відновлювати лічильники токенів/кешу та активну мітку runtime-моделі з
найновішого журналу використання транскрипту. Наявні ненульові live-значення все одно мають
пріоритет над fallback-значеннями транскрипту, а більші промпт-орієнтовані
підсумки транскрипту можуть перемагати, коли збережені підсумки відсутні або менші.
Авторизація використання для вікон квот провайдера береться з провайдер-специфічних хуків, коли
вони доступні; інакше OpenClaw повертається до відповідних облікових даних OAuth/API-ключа
з auth-профілів, env або конфігурації.
Записи транскрипту асистента зберігають ту саму нормалізовану форму використання, включно з
`usage.cost`, коли активна модель має налаштовані ціни, а провайдер
повертає метадані використання. Це дає `/usage cost` і session status на основі транскрипту
стабільне джерело навіть після зникнення live-стану runtime.
OpenClaw тримає облік використання провайдера окремо від поточного знімка контексту.
`usage.total` провайдера може включати кешований вхід, вихід і кілька
модельних викликів циклу інструментів, тому це корисно для витрат і телеметрії, але може завищувати
live-вікно контексту. Відображення контексту й діагностика використовують найновіший знімок промпта
`usage.total` провайдера може включати кешоване введення, виведення та кілька
модельних викликів у циклі інструментів, тому це корисно для вартості й телеметрії, але може завищувати
живе вікно контексту. Відображення контексту та діагностика використовують найновіший знімок промпта
(`promptTokens` або останній виклик моделі, коли знімок промпта
недоступний) для `context.used`.
## Оцінювання витрат (коли показується)
## Оцінка вартості (коли показується)
Витрати оцінюються з конфігурації цін вашої моделі:
Вартість оцінюється з конфігурації цін вашої моделі:
```
models.providers.<provider>.models[].cost
@ -126,36 +126,37 @@ models.providers.<provider>.models[].cost
`cacheWrite`. Якщо ціни відсутні, OpenClaw показує лише токени. OAuth-токени
ніколи не показують вартість у доларах.
Запуск Gateway також виконує необов’язковий фоновий bootstrap цін для
налаштованих посилань на моделі, які ще не мають локальних цін. Цей bootstrap
отримує віддалені каталоги цін OpenRouter і LiteLLM. Установіть
`models.pricing.enabled: false`, щоб пропустити ці стартові завантаження каталогів в офлайн
або обмежених мережах; явні записи `models.providers.*.models[].cost`
і далі керують локальними оцінками витрат.
Після того як sidecars і канали доходять до готового шляху Gateway, OpenClaw запускає
необов'язковий фоновий pricing bootstrap для налаштованих посилань на моделі, які ще
не мають локальних цін. Цей bootstrap отримує віддалені каталоги цін OpenRouter і LiteLLM.
Встановіть `models.pricing.enabled: false`, щоб пропустити ці отримання каталогів
в офлайн- або обмежених мережах; явні записи
`models.providers.*.models[].cost` і далі керують локальними
оцінками вартості.
## Cache TTL і вплив обрізання
## TTL кешу та вплив обрізання
Кешування промптів провайдера застосовується лише в межах вікна cache TTL. OpenClaw може
необов’язково запускати **обрізання cache-ttl**: він обрізає сесію після завершення cache TTL,
а потім скидає вікно кешу, щоб наступні запити могли повторно використовувати
свіжокешований контекст замість повторного кешування всієї історії. Це знижує
витрати на записи в кеш, коли сесія простоює довше за TTL.
Кешування промптів провайдера застосовується лише в межах вікна TTL кешу. OpenClaw може
необов'язково запускати **cache-ttl pruning**: він обрізає сеанс після завершення TTL кешу,
а потім скидає вікно кешу, щоб наступні запити могли повторно використати
щойно кешований контекст замість повторного кешування всієї історії. Це знижує
витрати на запис кешу, коли сеанс простоює довше за TTL.
Налаштуйте це в [Конфігурація Gateway](/uk/gateway/configuration) і перегляньте
деталі поведінки в [Обрізання сесії](/uk/concepts/session-pruning).
Налаштуйте це в [конфігурації Gateway](/uk/gateway/configuration) і див. подробиці
поведінки в [Обрізання сеансу](/uk/concepts/session-pruning).
Heartbeat може тримати кеш **теплим** під час перерв простою. Якщо TTL кешу вашої моделі
становить `1h`, встановлення інтервалу Heartbeat трохи меншим за нього (наприклад, `55m`) може уникнути
повторного кешування повного промпта, зменшуючи витрати на записи в кеш.
Heartbeat може підтримувати кеш **теплим** під час періодів простою. Якщо TTL кешу вашої моделі
становить `1h`, налаштування інтервалу Heartbeat трохи менше за це (наприклад, `55m`) може уникнути
повторного кешування всього промпта, зменшуючи витрати на запис кешу.
У налаштуваннях із кількома агентами ви можете зберігати одну спільну конфігурацію моделі й налаштовувати поведінку кешу
У налаштуваннях з кількома агентами можна тримати одну спільну конфігурацію моделі та налаштовувати поведінку кешу
для кожного агента через `agents.list[].params.cacheRetention`.
Повний покроковий довідник щодо кожного перемикача див. у [Кешування промптів](/uk/reference/prompt-caching).
Повний покроковий довідник за кожним перемикачем див. у [Кешування промптів](/uk/reference/prompt-caching).
Для цін Anthropic API читання з кешу значно дешевші за вхідні
токени, тоді як записи в кеш тарифікуються з вищим множником. Найновіші ставки й TTL-множники див. у цінах Anthropic
на кешування промптів:
Для цін Anthropic API читання кешу значно дешевше за вхідні
токени, а записи кешу виставляються з вищим множником. Актуальні тарифи та множники TTL див. у цінах Anthropic
для кешування промптів:
[https://docs.anthropic.com/docs/build-with-claude/prompt-caching](https://docs.anthropic.com/docs/build-with-claude/prompt-caching)
### Приклад: підтримувати 1h кеш теплим за допомогою Heartbeat
@ -194,12 +195,12 @@ agents:
cacheRetention: "none" # avoid cache writes for bursty notifications
```
`agents.list[].params` зливається поверх `params` вибраної моделі, тож ви можете
`agents.list[].params` об'єднується поверх `params` вибраної моделі, тож ви можете
перевизначити лише `cacheRetention` і успадкувати інші типові значення моделі без змін.
### Приклад: увімкнути beta-заголовок Anthropic 1M context
Вікно контексту Anthropic 1M наразі обмежене beta-доступом. OpenClaw може інжектувати
Вікно контексту Anthropic 1M наразі обмежене beta-доступом. OpenClaw може інктувати
потрібне значення `anthropic-beta`, коли ви вмикаєте `context1m` на підтримуваних моделях Opus
або Sonnet.
@ -212,28 +213,28 @@ agents:
context1m: true
```
Це мапиться на beta-заголовок Anthropic `context-1m-2025-08-07`.
Це зіставляється з beta-заголовком Anthropic `context-1m-2025-08-07`.
Це застосовується лише коли `context1m: true` встановлено в записі цієї моделі.
Це застосовується лише тоді, коли `context1m: true` встановлено в цьому записі моделі.
Вимога: облікові дані мають мати право на використання довгого контексту. Якщо ні,
Anthropic відповість помилкою обмеження швидкості на боці провайдера для цього запиту.
Anthropic відповідає помилкою обмеження швидкості з боку провайдера для цього запиту.
Якщо ви автентифікуєте Anthropic за допомогою OAuth/підпискових токенів (`sk-ant-oat-*`),
OpenClaw пропускає beta-заголовок `context-1m-*`, тому що Anthropic наразі
відхиляє таку комбінацію з HTTP 401.
Якщо ви автентифікуєте Anthropic за допомогою OAuth/subscription-токенів (`sk-ant-oat-*`),
OpenClaw пропускає beta-заголовок `context-1m-*`, оскільки Anthropic наразі
відхиляє цю комбінацію з HTTP 401.
## Поради щодо зменшення токенового навантаження
## Поради для зменшення тиску токенів
- Використовуйте `/compact`, щоб підсумовувати довгі сесії.
- Обрізайте великі виводи інструментів у своїх workflows.
- Зменшуйте `agents.defaults.imageMaxDimensionPx` для сесій із великою кількістю знімків екрана.
- Тримайте описи Skills короткими (список Skills інжектується в промпт).
- Використовуйте `/compact`, щоб підсумовувати довгі сеанси.
- Обрізайте великі виведення інструментів у своїх робочих процесах.
- Зменшуйте `agents.defaults.imageMaxDimensionPx` для сеансів із великою кількістю знімків екрана.
- Тримайте описи skills короткими (список skills ін'єктується в промпт).
- Надавайте перевагу меншим моделям для багатослівної дослідницької роботи.
Точну формулу накладних витрат списку Skills див. у [Skills](/uk/tools/skills).
Точну формулу накладних витрат списку skills див. у [Skills](/uk/tools/skills).
## Повязане
## Пов'язане
- [Використання API та витрати](/uk/reference/api-usage-costs)
- [Кешування промптів](/uk/reference/prompt-caching)