chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-01 23:21:37 +00:00
parent ac2ed368cb
commit b375246497
4 changed files with 537 additions and 536 deletions

View File

@ -1,179 +1,179 @@
---
read_when:
- Вам потрібен точний покроковий опис циклу агента або подій життєвого циклу
- Ви змінюєте постановку сеансів у чергу, записи транскриптів або поведінку блокування запису сеансу
- Ви змінюєте постановку сесій у чергу, операції запису транскрипту або поведінку блокування запису сесії
summary: Життєвий цикл циклу агента, потоки та семантика очікування
title: Цикл агента
x-i18n:
generated_at: "2026-04-30T18:26:41Z"
generated_at: "2026-05-01T23:18:12Z"
model: gpt-5.5
provider: openai
source_hash: 5466893253e1f82482284ff82db56f4c3fca018bf12e4114fad76d37cad954df
source_hash: dbb0bd7989c9ab5606cabeb632c1d0542b31cb60283c50ae945836f55024bbc1
source_path: concepts/agent-loop.md
workflow: 16
---
Агентний цикл — це повний “справжній” запуск агента: приймання → збирання контексту → інференс моделі →
виконання інструментів → потокові відповіді → збереження. Це канонічний шлях, який перетворює повідомлення
Агентний цикл — це повний «реальний» запуск агента: приймання → збирання контексту → інференс моделі →
виконання інструментів → потокові відповіді → збереження. Це авторитетний шлях, який перетворює повідомлення
на дії та фінальну відповідь, водночас підтримуючи узгоджений стан сесії.
В OpenClaw цикл — це один серіалізований запуск на сесію, який випускає події життєвого циклу та потоку,
поки модель думає, викликає інструменти й потоково передає вивід. У цьому документі пояснено, як цей автентичний цикл
з’єднано від початку до кінця.
В OpenClaw цикл — це один серіалізований запуск на сесію, який надсилає події життєвого циклу та потоку,
коли модель міркує, викликає інструменти й транслює вивід. У цьому документі пояснено, як цей автентичний цикл
з’єднано наскрізно.
## Точки входу
- RPC Gateway: `agent` і `agent.wait`.
- Gateway RPC: `agent` і `agent.wait`.
- CLI: команда `agent`.
## Як це працює (на високому рівні)
1. RPC `agent` перевіряє параметри, визначає сесію (sessionKey/sessionId), зберігає метадані сесії та негайно повертає `{ runId, acceptedAt }`.
1. `agent` RPC перевіряє параметри, визначає сесію (sessionKey/sessionId), зберігає метадані сесії, одразу повертає `{ runId, acceptedAt }`.
2. `agentCommand` запускає агента:
- визначає типові значення моделі + thinking/verbose/trace
- визначає модель + типові значення thinking/verbose/trace
- завантажує знімок Skills
- викликає `runEmbeddedPiAgent` (середовище виконання pi-agent-core)
- випускає **кінець/помилку життєвого циклу**, якщо вбудований цикл не випускає таку подію
- надсилає **завершення/помилку життєвого циклу**, якщо вбудований цикл цього не зробив
3. `runEmbeddedPiAgent`:
- серіалізує запуски через черги для кожної сесії + глобальні черги
- визначає модель + профіль авторизації та створює сесію pi
- підписується на події pi й потоково передає дельти асистента/інструментів
- серіалізує запуски через черги на сесію + глобальні черги
- визначає модель + профіль автентифікації та будує pi-сесію
- підписується на pi-події та транслює дельти асистента/інструментів
- застосовує тайм-аут -> перериває запуск, якщо його перевищено
- для ходів сервера застосунку Codex перериває прийнятий хід, який припиняє створювати прогрес сервера застосунку до термінальної події
- повертає корисні навантаження + метадані використання
- для ходів app-server Codex перериває прийнятий хід, який перестає створювати прогрес app-server до термінальної події
- повертає payload-и + метадані використання
4. `subscribeEmbeddedPiSession` з’єднує події pi-agent-core з потоком OpenClaw `agent`:
- події інструментів => `stream: "tool"`
- дельти асистента => `stream: "assistant"`
- події життєвого циклу => `stream: "lifecycle"` (`phase: "start" | "end" | "error"`)
5. `agent.wait` використовує `waitForAgentRun`:
- очікує на **кінець/помилку життєвого циклу** для `runId`
- очікує **завершення/помилки життєвого циклу** для `runId`
- повертає `{ status: ok|error|timeout, startedAt, endedAt, error? }`
## Постановка в чергу + конкурентність
## Черги + конкурентність
- Запуски серіалізуються за ключем сесії (лінія сесії) і, за потреби, через глобальну лінію.
- Це запобігає гонкам інструментів/сесій і зберігає узгодженість історії сесії.
- Канали обміну повідомленнями можуть вибирати режими черги (collect/steer/followup), які подають роботу в цю систему ліній.
- Запуски серіалізуються за ключем сесії (смуга сесії) і, за потреби, через глобальну смугу.
- Це запобігає гонкам інструментів/сесій і підтримує узгоджену історію сесії.
- Канали обміну повідомленнями можуть вибирати режими черги (collect/steer/followup), які подають роботу в цю систему смуг.
Див. [Черга команд](/uk/concepts/queue).
- Записи транскрипту також захищені блокуванням запису сесії на файлі сесії. Блокування
враховує процеси та базується на файлі, тож виявляє авторів запису, які обходять внутрішньопроцесну чергу або надходять
враховує процеси й базується на файлі, тому воно виявляє записувачів, які обходять внутрішньопроцесну чергу або надходять
з іншого процесу.
- Блокування запису сесії за замовчуванням не є реентерабельними. Якщо допоміжна функція навмисно вкладає отримання
того самого блокування, зберігаючи одного логічного автора запису, вона має явно ввімкнути це через
- Блокування запису сесії типово не є реентерабельними. Якщо помічник навмисно вкладає отримання
того самого блокування, зберігаючи одного логічного записувача, він має явно ввімкнути це через
`allowReentrant: true`.
## Підготовка сесії + робочої області
## Підготовка сесії + робочого простору
- Робоча область визначається та створюється; запуски в пісочниці можуть переспрямовуватися до кореня робочої області пісочниці.
- Skills завантажуються (або повторно використовуються зі знімка) та ін’єктуються в середовище й промпт.
- Файли початкового завантаження/контексту визначаються та ін’єктуються у звіт системного промпта.
- Робочий простір визначається і створюється; sandbox-запуски можуть перенаправлятися до кореня sandbox-робочого простору.
- Skills завантажуються (або повторно використовуються зі знімка) та впроваджуються в env і промпт.
- Bootstrap/context-файли визначаються та впроваджуються у звіт системного промпта.
- Отримується блокування запису сесії; `SessionManager` відкривається та готується до початку потокової передачі. Будь-який
подальший шлях переписування транскрипту, Compaction або скорочення має отримати те саме блокування перед відкриттям або
зміненням файлу транскрипту.
пізніший шлях переписування транскрипту, ущільнення або обрізання має отримати те саме блокування перед відкриттям або
зміною файлу транскрипту.
## Збирання промпта + системний промпт
- Системний промпт будується з базового промпта OpenClaw, промпта Skills, контексту початкового завантаження та перевизначень для конкретного запуску.
- Застосовуються специфічні для моделі обмеження та резерв токенів для Compaction.
- Системний промпт будується з базового промпта OpenClaw, промпта Skills, bootstrap-контексту та перевизначень для конкретного запуску.
- Застосовуються специфічні для моделі ліміти й резерв токенів для ущільнення.
- Див. [Системний промпт](/uk/concepts/system-prompt), щоб дізнатися, що бачить модель.
## Точки хуків (де можна перехоплювати)
## Точки перехоплення (де можна втрутитися)
OpenClaw має дві системи хуків:
- **Внутрішні хуки** (хуки Gateway): подієво-керовані скрипти для команд і подій життєвого циклу.
- **Хуки Plugin**: точки розширення всередині життєвого циклу агента/інструментів і конвеєра gateway.
- **Внутрішні хуки** (хуки Gateway): подієві скрипти для команд і подій життєвого циклу.
- **Plugin-хуки**: точки розширення всередині життєвого циклу агента/інструмента та конвеєра gateway.
### Внутрішні хуки (хуки Gateway)
- **`agent:bootstrap`**: запускається під час створення файлів початкового завантаження до фіналізації системного промпта.
Використовуйте це, щоб додавати/видаляти файли контексту початкового завантаження.
- **Хуки команд**: `/new`, `/reset`, `/stop` та інші події команд (див. документ про хуки).
- **`agent:bootstrap`**: запускається під час побудови bootstrap-файлів до фіналізації системного промпта.
Використовуйте це, щоб додавати/видаляти файли bootstrap-контексту.
- **Командні хуки**: `/new`, `/reset`, `/stop` та інші командні події (див. документ про хуки).
Див. [Хуки](/uk/automation/hooks) для налаштування та прикладів.
### Хуки Plugin (життєвий цикл агента + gateway)
### Plugin-хуки (життєвий цикл агента + gateway)
Вони виконуються всередині циклу агента або конвеєра gateway:
- **`before_model_resolve`**: запускається до сесії (без `messages`), щоб детерміновано перевизначити провайдера/модель перед визначенням моделі.
- **`before_prompt_build`**: запускається після завантаження сесії (з `messages`), щоб ін’єктувати `prependContext`, `systemPrompt`, `prependSystemContext` або `appendSystemContext` перед надсиланням промпта. Використовуйте `prependContext` для динамічного тексту на хід і поля системного контексту для стабільних вказівок, які мають перебувати в просторі системного промпта.
- **`before_agent_start`**: застарілий хук сумісності, який може запускатися в будь-якій фазі; надавайте перевагу явним хукам вище.
- **`before_agent_reply`**: запускається після inline-дій і перед викликом LLM, дозволяючи Plugin взяти хід на себе й повернути синтетичну відповідь або повністю приглушити хід.
- **`before_model_resolve`**: виконується до сесії (без `messages`), щоб детерміновано перевизначити провайдера/модель перед визначенням моделі.
- **`before_prompt_build`**: виконується після завантаження сесії (з `messages`), щоб впровадити `prependContext`, `systemPrompt`, `prependSystemContext` або `appendSystemContext` перед надсиланням промпта. Використовуйте `prependContext` для динамічного тексту на хід, а поля системного контексту — для стабільних настанов, які мають бути в просторі системного промпта.
- **`before_agent_start`**: застарілий хук сумісності, який може виконуватися в будь-якій фазі; віддавайте перевагу явним хукам вище.
- **`before_agent_reply`**: виконується після inline-дій і перед викликом LLM, дозволяючи Plugin перебрати хід і повернути синтетичну відповідь або повністю приглушити хід.
- **`agent_end`**: перевіряє фінальний список повідомлень і метадані запуску після завершення.
- **`before_compaction` / `after_compaction`**: спостерігає за циклами Compaction або додає до них анотації.
- **`before_compaction` / `after_compaction`**: спостерігає за циклами ущільнення або анотує їх.
- **`before_tool_call` / `after_tool_call`**: перехоплює параметри/результати інструментів.
- **`before_install`**: перевіряє вбудовані результати сканування та за потреби блокує інсталяції Skills або Plugin.
- **`tool_result_persist`**: синхронно трансформує результати інструментів перед записом у транскрипт сесії, що належить OpenClaw.
- **`before_install`**: перевіряє результати вбудованого сканування і, за потреби, блокує встановлення skill або Plugin.
- **`tool_result_persist`**: синхронно трансформує результати інструментів перед записом у транскрипт сесії, яким володіє OpenClaw.
- **`message_received` / `message_sending` / `message_sent`**: хуки вхідних + вихідних повідомлень.
- **`session_start` / `session_end`**: межі життєвого циклу сесії.
- **`gateway_start` / `gateway_stop`**: події життєвого циклу gateway.
Правила рішень хуків для вихідних/інструментальних захистів:
Правила рішень хуків для вихідних/інструментальних запобіжників:
- `before_tool_call`: `{ block: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `before_tool_call`: `{ block: false }` не виконує дій і не скасовує попереднє блокування.
- `before_tool_call`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `before_install`: `{ block: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `before_install`: `{ block: false }` не виконує дій і не скасовує попереднє блокування.
- `before_install`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `message_sending`: `{ cancel: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `message_sending`: `{ cancel: false }` не виконує дій і не скасовує попереднє скасування.
- `message_sending`: `{ cancel: false }` нічого не робить і не скасовує попереднє скасування.
Див. [Хуки Plugin](/uk/plugins/hooks) для API хуків і подробиць реєстрації.
Див. [Plugin-хуки](/uk/plugins/hooks) для API хуків і деталей реєстрації.
Тестові обв’язки можуть адаптувати ці хуки по-різному. Тестова обв’язка сервера застосунку Codex зберігає
хуки Plugin OpenClaw як контракт сумісності для документованих дзеркальних
поверхонь, тоді як нативні хуки Codex залишаються окремим нижчорівневим механізмом Codex.
Harness-и можуть адаптувати ці хуки по-різному. Harness app-server Codex зберігає
Plugin-хуки OpenClaw як контракт сумісності для задокументованих дзеркальних
поверхонь, тоді як нативні хуки Codex залишаються окремим нижчерівневим механізмом Codex.
## Потокова передача + часткові відповіді
- Дельти асистента потоково передаються з pi-agent-core і випускаються як події `assistant`.
- Потокова передача блоків може випускати часткові відповіді або на `text_end`, або на `message_end`.
- Потокова передача міркувань може випускатися як окремий потік або як блокові відповіді.
- Див. [Потокова передача](/uk/concepts/streaming) щодо поведінки фрагментації та блокових відповідей.
- Дельти асистента транслюються з pi-agent-core і надсилаються як події `assistant`.
- Потокова передача блоків може надсилати часткові відповіді або на `text_end`, або на `message_end`.
- Потокова передача міркувань може надсилатися як окремий потік або як блокові відповіді.
- Див. [Потокова передача](/uk/concepts/streaming) про поведінку фрагментації та блокових відповідей.
## Виконання інструментів + інструменти обміну повідомленнями
- Події початку/оновлення/завершення інструментів випускаються в потоці `tool`.
- Результати інструментів очищаються за розміром і корисними навантаженнями зображень перед журналюванням/випуском.
- Надсилання інструментів обміну повідомленнями відстежуються, щоб пригнічувати дублікати підтверджень асистента.
- Події start/update/end інструментів надсилаються в потоці `tool`.
- Результати інструментів очищуються за розміром і image payload-и — перед журналюванням/надсиланням.
- Надсилання інструментами повідомлень відстежується, щоб приглушити дубльовані підтвердження асистента.
## Формування відповіді + пригнічення
## Формування відповіді + приглушення
- Фінальні корисні навантаження збираються з:
- тексту асистента (і необов’язкового міркування)
- Фінальні payload-и збираються з:
- тексту асистента (та необов’язкового міркування)
- inline-зведень інструментів (коли verbose + дозволено)
- тексту помилки асистента, коли модель завершується з помилкою
- Точний тихий токен `NO_REPLY` / `no_reply` фільтрується з вихідних
корисних навантажень.
- Дублікати інструментів обміну повідомленнями вилучаються з фінального списку корисних навантажень.
- Якщо не залишається корисних навантажень, придатних для відображення, і інструмент завершився з помилкою, випускається резервна відповідь про помилку інструмента
(якщо інструмент обміну повідомленнями вже не надіслав видиму користувачу відповідь).
- тексту помилки асистента, коли модель повертає помилку
- Точний silent token `NO_REPLY` / `no_reply` фільтрується з вихідних
payload-ів.
- Дублікати інструментів обміну повідомленнями видаляються з фінального списку payload-ів.
- Якщо не залишилося жодних придатних до рендерингу payload-ів, а інструмент завершився з помилкою, надсилається fallback-відповідь про помилку інструмента
(якщо інструмент обміну повідомленнями ще не надіслав видиму користувачу відповідь).
## Compaction + повторні спроби
- Автоматичний Compaction випускає події потоку `compaction` і може запустити повторну спробу.
- Під час повторної спроби буфери в пам’яті та зведення інструментів скидаються, щоб уникнути дублювання виводу.
- Див. [Compaction](/uk/concepts/compaction) щодо конвеєра Compaction.
- Автоматичне ущільнення надсилає події потоку `compaction` і може запускати повторну спробу.
- Під час повторної спроби буфери в пам’яті та зведення інструментів скидаються, щоб уникнути дубльованого виводу.
- Див. [Compaction](/uk/concepts/compaction) про конвеєр ущільнення.
## Потоки подій (сьогодні)
- `lifecycle`: випускається `subscribeEmbeddedPiSession` (і як резервний варіант `agentCommand`)
- `lifecycle`: надсилається `subscribeEmbeddedPiSession` (і як fallback через `agentCommand`)
- `assistant`: потокові дельти з pi-agent-core
- `tool`: потокові події інструментів з pi-agent-core
## Обробка чат-каналу
## Обробка чат-каналів
- Дельти асистента буферизуються в чат-повідомлення `delta`.
- Чат `final` випускається на **кінці/помилці життєвого циклу**.
- Чат `final` надсилається на **завершення/помилку життєвого циклу**.
## Тайм-аути
- Типове значення `agent.wait`: 30 с (лише очікування). Параметр `timeoutMs` перевизначає.
- Середовище виконання агента: типове значення `agents.defaults.timeoutSeconds` — 172800 с (48 годин); застосовується в таймері переривання `runEmbeddedPiAgent`.
- Середовище виконання Cron: ізольований агентний хід `timeoutSeconds` належить cron. Планувальник запускає цей таймер, коли починається виконання, перериває базовий запуск у налаштований граничний момент, а потім виконує обмежене очищення перед записом тайм-ауту, щоб застаріла дочірня сесія не могла заблокувати лінію.
- Відновлення застряглої сесії: з увімкненою діагностикою `diagnostics.stuckSessionWarnMs` виявляє тривалі сесії `processing`. Активні вбудовані запуски, активні операції відповідей і активні завдання лінії сесії за замовчуванням залишаються лише попередженнями; якщо діагностика не показує активної роботи для сесії, сторожовий механізм звільняє зачеплену лінію сесії, щоб робота запуску в черзі могла спорожнитися.
- Тайм-аут простою моделі: OpenClaw перериває запит до моделі, коли до завершення вікна простою не надходять фрагменти відповіді. `models.providers.<id>.timeoutSeconds` розширює цей сторожовий механізм простою для повільних локальних/самостійно розміщених провайдерів; інакше OpenClaw використовує `agents.defaults.timeoutSeconds`, коли його налаштовано, з типовим обмеженням у 120 с. Запуски, ініційовані Cron, без явного тайм-ауту моделі або агента вимикають сторожовий механізм простою та покладаються на зовнішній тайм-аут cron.
- Тайм-аут HTTP-запиту провайдера: `models.providers.<id>.timeoutSeconds` застосовується до HTTP-запитів моделі цього провайдера, включно з підключенням, заголовками, тілом, тайм-аутом запиту SDK, загальною обробкою переривання захищеного fetch і сторожовим механізмом простою потоку моделі. Використовуйте це для повільних локальних/самостійно розміщених провайдерів, як-от Ollama, перед підвищенням тайм-ауту всього середовища виконання агента.
- Середовище виконання агента: типове значення `agents.defaults.timeoutSeconds` — 172800 с (48 годин); застосовується таймером переривання в `runEmbeddedPiAgent`.
- Середовище виконання Cron: ізольований agent-turn `timeoutSeconds` належить cron. Планувальник запускає цей таймер на початку виконання, перериває базовий запуск у налаштований дедлайн, а потім виконує обмежене очищення перед записом тайм-ауту, щоб застаріла дочірня сесія не могла залишити смугу завислою.
- Діагностика життєздатності сесії: коли діагностику ввімкнено, `diagnostics.stuckSessionWarnMs` класифікує довгі сесії `processing`. Активні вбудовані запуски, виклики моделі та виклики інструментів повідомляються як `session.long_running`; активна робота без недавнього прогресу повідомляється як `session.stalled`; `session.stuck` зарезервовано для застарілого обліку сесії без активної роботи, і лише цей шлях звільняє відповідну смугу сесії, щоб робота запуску в черзі могла просунутися.
- Тайм-аут простою моделі: OpenClaw перериває запит до моделі, коли в межах вікна простою не надходять фрагменти відповіді. `models.providers.<id>.timeoutSeconds` розширює цей idle watchdog для повільних локальних/self-hosted провайдерів; інакше OpenClaw використовує `agents.defaults.timeoutSeconds`, коли його налаштовано, з типовим обмеженням 120 с. Запуски, ініційовані Cron, без явного тайм-ауту моделі або агента вимикають idle watchdog і покладаються на зовнішній тайм-аут cron.
- Тайм-аут HTTP-запиту провайдера: `models.providers.<id>.timeoutSeconds` застосовується до HTTP-fetch-ів моделі цього провайдера, включно з connect, headers, body, SDK request timeout, total guarded-fetch abort handling і model stream idle watchdog. Використовуйте це для повільних локальних/self-hosted провайдерів, таких як Ollama, перш ніж підвищувати тайм-аут усього середовища виконання агента.
## Де все може завершитися раніше
@ -185,7 +185,7 @@ OpenClaw має дві системи хуків:
## Пов’язане
- [Інструменти](/uk/tools) — доступні інструменти агента
- [Хуки](/uk/automation/hooks) — подієво-керовані скрипти, що запускаються подіями життєвого циклу агента
- [Хуки](/uk/automation/hooks) — подієві скрипти, що запускаються подіями життєвого циклу агента
- [Compaction](/uk/concepts/compaction) — як підсумовуються довгі розмови
- [Затвердження Exec](/uk/tools/exec-approvals) — шлюзи затвердження для команд оболонки
- [Thinking](/uk/tools/thinking) — налаштування рівня thinking/міркування
- [Підтвердження Exec](/uk/tools/exec-approvals) — шлюзи підтвердження для shell-команд
- [Thinking](/uk/tools/thinking) — конфігурація рівня мислення/міркування

View File

@ -2,33 +2,33 @@
read_when:
- Зміна виконання автовідповідей або паралельності
- Пояснення режимів /queue або поведінки спрямування повідомлень
summary: Режими черги автовідповідей, значення за замовчуванням і перевизначення для окремих сеансів
summary: Режими черги автовідповідей, стандартні значення та перевизначення для окремих сеансів
title: Черга команд
x-i18n:
generated_at: "2026-04-30T18:26:36Z"
generated_at: "2026-05-01T23:18:08Z"
model: gpt-5.5
provider: openai
source_hash: fbf1bb1ffd4ce06fa138f63e31651b8821226d9c95dd6b93d68326a5fb91fdd0
source_hash: b3b24643eea9c8f374b041b251675a1a3c6567306dca07001b4ba82d20391eb1
source_path: concepts/queue.md
workflow: 16
---
Ми серіалізуємо вхідні запуски автовідповідей (усі канали) через невелику внутрішньопроцесну чергу, щоб запобігти конфліктам між кількома запусками агента, водночас зберігаючи безпечний паралелізм між сесіями.
Ми серіалізуємо вхідні запуски автовідповідей (усі канали) через невелику внутрішньопроцесну чергу, щоб запобігти зіткненню кількох запусків агента, водночас дозволяючи безпечний паралелізм між сесіями.
## Чому
## Навіщо
- Запуски автовідповідей можуть бути дорогими (виклики LLM) і можуть конфліктувати, коли кілька вхідних повідомлень надходять майже одночасно.
- Серіалізація уникає конкуренції за спільні ресурси (файли сесій, журнали, stdin CLI) і зменшує ймовірність досягнення лімітів швидкості upstream.
- Серіалізація уникає конкуренції за спільні ресурси (файли сесій, журнали, CLI stdin) і зменшує ймовірність upstream-лімітів частоти.
## Як це працює
- FIFO-черга з урахуванням lane обробляє кожну lane з налаштовуваним обмеженням конкурентності (типово 1 для неналаштованих lane; main типово має 4, subagent — 8).
- `runEmbeddedPiAgent` ставить у чергу за **ключем сесії** (lane `session:<key>`), щоб гарантувати лише один активний запуск на сесію.
- Кожен запуск сесії потім ставиться в **глобальну lane** (`main` за замовчуванням), тож загальний паралелізм обмежується `agents.defaults.maxConcurrent`.
- Коли увімкнено докладне журналювання, поставлені в чергу запуски виводять коротке повідомлення, якщо чекали понад ~2 с перед стартом.
- Індикатори набору все одно спрацьовують одразу під час додавання в чергу (коли це підтримує канал), тож користувацький досвід не змінюється, поки ми чекаємо своєї черги.
- FIFO-черга з урахуванням смуг обробляє кожну смугу з налаштовуваним обмеженням конкурентності (типово 1 для неналаштованих смуг; main типово має 4, subagent — 8).
- `runEmbeddedPiAgent` ставить у чергу за **ключем сесії** (смуга `session:<key>`), щоб гарантувати лише один активний запуск на сесію.
- Кожен запуск сесії потім ставиться в **глобальну смугу** (`main` типово), тож загальний паралелізм обмежується `agents.defaults.maxConcurrent`.
- Коли ввімкнено докладне журналювання, запуски в черзі виводять коротке сповіщення, якщо чекали понад ~2 с перед стартом.
- Індикатори введення все одно спрацьовують одразу під час додавання в чергу (коли це підтримує канал), тож досвід користувача не змінюється, поки ми чекаємо своєї черги.
## Значення за замовчуванням
## Типові значення
Коли не задано, усі поверхні вхідних каналів використовують:
@ -37,30 +37,30 @@ x-i18n:
- `cap: 20`
- `drop: "summarize"`
`steer` є типовим режимом, бо він зберігає активний хід моделі швидким без
запуску другого запуску сесії. Він обробляє всі steering-повідомлення, що надійшли
`steer` є типовим, бо він зберігає активний хід моделі чутливим без
запуску другої сесії. Він обробляє всі керівні повідомлення, які надійшли
до наступної межі моделі. Якщо поточний запуск не може приймати steering,
OpenClaw повертається до запису followup у черзі.
OpenClaw повертається до запису в черзі followup.
## Режими черги
Вхідні повідомлення можуть спрямовувати поточний запуск, чекати наступного ходу followup або робити і те, й інше:
Вхідні повідомлення можуть спрямовувати поточний запуск, чекати наступного ходу або робити обидва:
- `steer`: ставить steering-повідомлення в чергу активного runtime. Pi доставляє всі очікувані steering-повідомлення **після того, як поточний хід асистента завершить виконання своїх викликів інструментів**, перед наступним викликом LLM; app-server Codex отримує один пакетний `turn/steer`. Якщо запуск не перебуває в активному streaming або steering недоступний, OpenClaw повертається до запису followup у черзі.
- `queue` (застарілий): старий steering по одному повідомленню. Pi доставляє одне повідомлення steering із черги на кожній межі моделі; app-server Codex отримує окремі запити `turn/steer`. Надавайте перевагу `steer`, якщо вам не потрібна попередня серіалізована поведінка.
- `steer`: ставить steering-повідомлення в активне середовище виконання. Pi доставляє всі очікувані steering-повідомлення **після того, як поточний хід асистента завершить виконання своїх викликів інструментів**, перед наступним викликом LLM; Codex app-server отримує один пакетний `turn/steer`. Якщо запуск не виконує активний streaming або steering недоступний, OpenClaw повертається до запису в черзі followup.
- `queue` (застарілий): старий steering по одному повідомленню. Pi доставляє одне повідомлення steering з черги на кожній межі моделі; Codex app-server отримує окремі запити `turn/steer`. Віддавайте перевагу `steer`, якщо вам не потрібна попередня серіалізована поведінка.
- `followup`: ставить кожне повідомлення в чергу для пізнішого ходу агента після завершення поточного запуску.
- `collect`: об’єднує повідомлення з черги в **один** хід followup після тихого вікна. Якщо повідомлення спрямовані в різні канали/треди, вони обробляються окремо, щоб зберегти маршрутизацію.
- `steer-backlog` (також `steer+backlog`): спрямовує зараз **і** зберігає те саме повідомлення для ходу followup.
- `collect`: об’єднує повідомлення в черзі в **один** наступний хід після тихого вікна. Якщо повідомлення спрямовані до різних каналів/гілок, вони обробляються окремо, щоб зберегти маршрутизацію.
- `steer-backlog` (також `steer+backlog`): спрямовує зараз **і** зберігає те саме повідомлення для наступного ходу.
- `interrupt` (застарілий): перериває активний запуск для цієї сесії, а потім запускає найновіше повідомлення.
Steer-backlog означає, що після спрямованого запуску можна отримати відповідь followup, тому
на streaming-поверхнях це може виглядати як дублікати. Надавайте перевагу `collect`/`steer`, якщо хочете
Steer-backlog означає, що ви можете отримати наступну відповідь після спрямованого запуску, тож
streaming-поверхні можуть виглядати як дублікати. Віддавайте перевагу `collect`/`steer`, якщо хочете
одну відповідь на кожне вхідне повідомлення.
Про специфічні для runtime часові характеристики та поведінку залежностей див.
Для специфічної для середовища виконання поведінки таймінгів і залежностей див.
[Черга steering](/uk/concepts/queue-steering).
Налаштуйте глобально або для кожного каналу через `messages.queue`:
Налаштуйте глобально або для окремого каналу через `messages.queue`:
```json5
{
@ -80,29 +80,29 @@ Steer-backlog означає, що після спрямованого запу
Параметри застосовуються до `followup`, `collect` і `steer-backlog` (а також до `steer` або застарілого `queue`, коли steering повертається до followup):
- `debounceMs`: тихе вікно перед обробкою поставлених у чергу followup. Числа без одиниць — це мілісекунди; одиниці `ms`, `s`, `m`, `h` і `d` приймаються параметрами `/queue`.
- `debounceMs`: тихе вікно перед обробкою наступних повідомлень у черзі. Голі числа означають мілісекунди; одиниці `ms`, `s`, `m`, `h` і `d` приймаються параметрами `/queue`.
- `cap`: максимальна кількість повідомлень у черзі на сесію. Значення нижче `1` ігноруються.
- `drop: "summarize"`: типово. За потреби відкидає найстаріші записи черги, зберігає компактні підсумки та вставляє їх як синтетичний prompt followup.
- `drop: "summarize"`: типово. За потреби відкидає найстаріші записи черги, зберігає стислі підсумки та вставляє їх як синтетичний prompt для followup.
- `drop: "old"`: за потреби відкидає найстаріші записи черги без збереження підсумків.
- `drop: "new"`: відхиляє найновіше повідомлення, коли черга вже заповнена.
Типово: `debounceMs: 500`, `cap: 20`, `drop: summarize`.
## Пріоритет
## Пріоритетність
Для вибору режиму OpenClaw визначає:
1. Inline або збережене перевизначення `/queue` для сесії.
1. Вбудоване або збережене посесійне перевизначення `/queue`.
2. `messages.queue.byChannel.<channel>`.
3. `messages.queue.mode`.
4. Типовий `steer`.
Для параметрів inline або збережені параметри `/queue` мають пріоритет над конфігурацією. Потім
застосовуються debounce для каналу (`messages.queue.debounceMsByChannel`), типові значення debounce
Plugin, глобальні параметри `messages.queue` і вбудовані типові значення. `cap` і `drop` є глобальними/сесійними параметрами, а не конфігураційними
ключами для кожного каналу.
Для параметрів вбудовані або збережені параметри `/queue` мають перевагу над конфігурацією. Потім
застосовуються специфічний для каналу debounce (`messages.queue.debounceMsByChannel`), типові значення
debounce для plugin, глобальні параметри `messages.queue` і вбудовані типові значення. `cap` і `drop` є
глобальними/сесійними параметрами, а не ключами поканальної конфігурації.
## Перевизначення для сесії
## Посесійні перевизначення
- Надішліть `/queue <mode>` як окрему команду, щоб зберегти режим для поточної сесії.
- Параметри можна комбінувати: `/queue collect debounce:0.5s cap:25 drop:summarize`
@ -110,18 +110,18 @@ Plugin, глобальні параметри `messages.queue` і вбудова
## Область дії та гарантії
- Застосовується до запусків агентів автовідповіді в усіх вхідних каналах, які використовують reply pipeline Gateway (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat тощо).
- Типова lane (`main`) є процесно-глобальною для вхідних повідомлень і основних Heartbeat; задайте `agents.defaults.maxConcurrent`, щоб дозволити кілька сесій паралельно.
- Можуть існувати додаткові lane (наприклад, `cron`, `cron-nested`, `nested`, `subagent`), щоб фонові завдання могли виконуватися паралельно, не блокуючи вхідні відповіді. Ізольовані ходи cron-агента утримують слот `cron`, поки їхнє внутрішнє виконання агента використовує `cron-nested`; обидва використовують `cron.maxConcurrentRuns`. Спільні не-cron потоки `nested` зберігають власну поведінку lane. Ці відокремлені запуски відстежуються як [фонові завдання](/uk/automation/tasks).
- Lane для сесії гарантують, що лише один запуск агента одночасно торкається певної сесії.
- Без зовнішніх залежностей або фонових worker-тредів; чистий TypeScript + promises.
- Застосовується до запусків агентів автовідповідей у всіх вхідних каналах, що використовують конвеєр відповідей Gateway (WhatsApp web, Telegram, Slack, Discord, Signal, iMessage, webchat тощо).
- Типова смуга (`main`) є процесно-глобальною для вхідних повідомлень + основних Heartbeat; задайте `agents.defaults.maxConcurrent`, щоб дозволити кілька сесій паралельно.
- Можуть існувати додаткові смуги (наприклад, `cron`, `cron-nested`, `nested`, `subagent`), щоб фонові завдання могли виконуватися паралельно, не блокуючи вхідні відповіді. Ізольовані ходи cron-агента утримують слот `cron`, доки їхнє внутрішнє виконання агента використовує `cron-nested`; обидва використовують `cron.maxConcurrentRuns`. Спільні не-cron потоки `nested` зберігають власну поведінку смуги. Ці відокремлені запуски відстежуються як [фонові завдання](/uk/automation/tasks).
- Посесійні смуги гарантують, що лише один запуск агента торкається певної сесії одночасно.
- Без зовнішніх залежностей або фонових worker-потоків; чисті TypeScript + promises.
## Усунення несправностей
- Якщо команди здаються завислими, увімкніть докладні журнали та шукайте рядки “queued for …ms”, щоб підтвердити, що черга обробляється.
- Якщо вам потрібна глибина черги, увімкніть докладні журнали та стежте за рядками часу черги.
- Запуски app-server Codex, які приймають хід, а потім перестають виводити прогрес, перериваються адаптером Codex, щоб активна lane сесії могла звільнитися замість очікування timeout зовнішнього запуску.
- Коли діагностику увімкнено, сесії, що залишаються в `processing` довше за `diagnostics.stuckSessionWarnMs`, записують попередження про завислу сесію. Активні вбудовані запуски, активні операції відповіді та активні завдання lane типово залишаються лише попередженнями; застарілий startup-облік без активної роботи сесії може звільнити відповідну lane сесії, щоб робота з черги продовжилася.
- Якщо здається, що команди зависли, увімкніть докладні журнали й шукайте рядки “queued for …ms”, щоб підтвердити, що черга обробляється.
- Якщо вам потрібна глибина черги, увімкніть докладні журнали й стежте за рядками таймінгів черги.
- Запуски Codex app-server, які приймають хід, а потім припиняють виводити прогрес, перериваються адаптером Codex, щоб активна смуга сесії могла звільнитися замість очікування тайм-ауту зовнішнього запуску.
- Коли діагностику ввімкнено, сесії, що залишаються в `processing` після `diagnostics.stuckSessionWarnMs`, класифікуються за поточною активністю. Активна робота журналюється як `session.long_running`; активна робота без нещодавнього прогресу журналюється як `session.stalled`; `session.stuck` зарезервовано для застарілого обліку сесій без активної роботи, і лише цей шлях може звільнити відповідну смугу сесії, щоб робота в черзі обробилася.
## Пов’язане

View File

@ -1,58 +1,58 @@
---
read_when:
- Вам потрібна точна семантика конфігурації на рівні полів або значення за замовчуванням
- Вам потрібні точна семантика конфігурації на рівні полів або значення за замовчуванням
- Ви перевіряєте блоки конфігурації каналу, моделі, Gateway або інструмента
summary: Довідник конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем
title: Довідник із конфігурації
summary: Довідник з конфігурації Gateway для основних ключів OpenClaw, стандартних значень і посилань на спеціалізовані довідники підсистем
title: Довідник із налаштування
x-i18n:
generated_at: "2026-04-29T01:48:49Z"
generated_at: "2026-05-01T23:18:17Z"
model: gpt-5.5
provider: openai
source_hash: 83fd28b7d6a2e670ab97aac206bb14343bd887da3236c6135d7958cc6e97b735
source_hash: d5e167fb8f9670e206a7b3794c8a2b1cf269fc7ad816c2feae00d1309edd1d54
source_path: gateway/configuration-reference.md
workflow: 16
---
Довідник основної конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration).
Основний довідник конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Configuration](/uk/gateway/configuration).
Охоплює основні поверхні конфігурації OpenClaw і містить посилання на глибші довідники, коли підсистема має власний. Каталоги команд, якими володіють канали й plugin, а також поглиблені параметри пам’яті/QMD розміщені на власних сторінках, а не на цій.
Охоплює основні поверхні конфігурації OpenClaw і посилається на окремі довші довідники, коли підсистема має власну детальнішу документацію. Каталоги команд, що належать каналам і plugins, а також глибокі налаштування пам’яті/QMD розміщені на власних сторінках, а не на цій.
Джерело істини в коді:
Істина в коді:
- `openclaw config schema` виводить актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими вбудованих/plugin/каналів, коли вони доступні
- `config.schema.lookup` повертає один вузол схеми з областю дії за шляхом для інструментів деталізації
- `openclaw config schema` друкує актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими bundled/plugin/channel, коли вони доступні
- `config.schema.lookup` повертає один вузол схеми, обмежений шляхом, для інструментів деталізації
- `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш документації конфігурації щодо поточної поверхні схеми
Шлях пошуку агента: використовуйте дію інструмента `gateway` `config.schema.lookup` для
точної документації та обмежень на рівні полів перед редагуванням. Використовуйте
[Конфігурація](/uk/gateway/configuration) для орієнтованих на завдання настанов, а цю сторінку
для ширшої карти полів, значень за замовчуванням і посилань на довідники підсистем.
точної документації та обмежень на рівні поля перед редагуванням. Використовуйте
[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 для поверхонь команд, специфічних для каналів
- [Slash commands](/uk/tools/slash-commands) для поточного вбудованого + bundled каталогу команд
- сторінки каналів/plugins-власників для поверхонь команд, специфічних для каналів
Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, коли їх пропущено.
Формат конфігурації — **JSON5** (дозволені коментарі + кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні стандартні значення, коли їх пропущено.
---
## Канали
Ключі конфігурації для окремих каналів перенесено на спеціальну сторінку — див.
[Конфігурація — канали](/uk/gateway/config-channels) для `channels.*`,
Ключі конфігурації для окремих каналів перенесено на окрему сторінку — див.
[Configuration — channels](/uk/gateway/config-channels) для `channels.*`,
зокрема Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших
bundled каналів (автентифікація, контроль доступу, кілька облікових записів, шлюзування згадок).
bundled каналів (автентифікація, контроль доступу, кілька облікових записів, шлюз згадок).
## Стандартні параметри агента, кілька агентів, сеанси та повідомлення
## Стандартні значення агента, кілька агентів, сеанси та повідомлення
Перенесено на спеціальну сторінку — див.
[Конфігурація — агенти](/uk/gateway/config-agents) для:
Перенесено на окрему сторінку — див.
[Configuration — agents](/uk/gateway/config-agents) для:
- `agents.defaults.*` (робочий простір, модель, thinking, heartbeat, пам’ять, медіа, skills, sandbox)
- `agents.defaults.*` (робоча область, модель, thinking, heartbeat, пам’ять, медіа, skills, sandbox)
- `multiAgent.*` (маршрутизація та прив’язки кількох агентів)
- `session.*` (життєвий цикл сеансу, compaction, pruning)
- `session.*` (життєвий цикл сеансу, compaction, обрізання)
- `messages.*` (доставка повідомлень, TTS, рендеринг markdown)
- `talk.*` (режим Talk)
- `talk.speechLocale`: необов’язковий ідентифікатор локалі BCP 47 для розпізнавання мовлення Talk на iOS/macOS
@ -60,15 +60,15 @@ bundled каналів (автентифікація, контроль дост
## Інструменти та користувацькі провайдери
Політику інструментів, експериментальні перемикачі, конфігурацію інструментів на базі провайдерів і налаштування користувацького
провайдера / базового URL перенесено на спеціальну сторінку — див.
[Конфігурація — інструменти та користувацькі провайдери](/uk/gateway/config-tools).
Політику інструментів, експериментальні перемикачі, конфігурацію інструментів на базі провайдерів і налаштування користувацьких
провайдерів / базових URL перенесено на окрему сторінку — див.
[Configuration — tools and custom providers](/uk/gateway/config-tools).
## Моделі
Визначення провайдерів, списки дозволених моделей і налаштування користувацьких провайдерів розміщені в
[Конфігурація — інструменти та користувацькі провайдери](/uk/gateway/config-tools#custom-providers-and-base-urls).
Корінь `models` також володіє глобальною поведінкою каталогу моделей.
Визначення провайдерів, allowlists моделей і налаштування користувацьких провайдерів розміщені в
[Configuration — tools and custom providers](/uk/gateway/config-tools#custom-providers-and-base-urls).
Корінь `models` також відповідає за глобальну поведінку каталогу моделей.
```json5
{
@ -79,17 +79,17 @@ bundled каналів (автентифікація, контроль дост
}
```
- `models.mode`: поведінка каталогу провайдера (`merge` або `replace`).
- `models.providers`: мапа користувацьких провайдерів, ключована за id провайдера.
- `models.pricing.enabled`: керує фоновим bootstrap ціноутворення. Коли
- `models.mode`: поведінка каталогу провайдерів (`merge` або `replace`).
- `models.providers`: мапа користувацьких провайдерів із ключами за id провайдера.
- `models.pricing.enabled`: керує фоновим завантаженням цін. Коли
`false`, запуск Gateway пропускає отримання каталогів цін OpenRouter і LiteLLM;
налаштовані значення `models.providers.*.models[].cost` усе ще працюють для локальних
налаштовані значення `models.providers.*.models[].cost` і далі працюють для локальних
оцінок вартості.
## MCP
Визначення MCP-серверів, керовані OpenClaw, розміщені в `mcp.servers` і
використовуються вбудованим Pi та іншими runtime-адаптерами. Команди `openclaw mcp list`,
Визначення MCP-серверів, керованих OpenClaw, розміщені в `mcp.servers` і
споживаються вбудованим Pi та іншими runtime-адаптерами. Команди `openclaw mcp list`,
`show`, `set` і `unset` керують цим блоком без підключення до
цільового сервера під час редагування конфігурації.
@ -115,20 +115,20 @@ bundled каналів (автентифікація, контроль дост
}
```
- `mcp.servers`: іменовані визначення stdio або віддалених MCP-серверів для runtime, які
- `mcp.servers`: іменовані stdio або віддалені визначення MCP-серверів для runtime, які
надають налаштовані MCP-інструменти.
Віддалені записи використовують `transport: "streamable-http"` або `transport: "sse"`;
`type: "http"` — CLI-native псевдонім, який `openclaw mcp set` і
`type: "http"`це CLI-native псевдонім, який `openclaw mcp set` і
`openclaw doctor --fix` нормалізують у канонічне поле `transport`.
- `mcp.sessionIdleTtlMs`: TTL бездіяльності для bundled MCP runtime з областю дії сеансу.
Одноразові вбудовані запуски запитують очищення наприкінці виконання; цей TTL є резервним механізмом для
- `mcp.sessionIdleTtlMs`: idle TTL для session-scoped bundled MCP runtime.
Одноразові вбудовані запуски запитують очищення після завершення запуску; цей TTL є запасним механізмом для
довготривалих сеансів і майбутніх викликачів.
- Зміни в `mcp.*` застосовуються наживо через утилізацію кешованих MCP runtime сеансу.
Наступне виявлення/використання інструмента відтворює їх із нової конфігурації, тому видалені
записи `mcp.servers` прибираються негайно, а не чекають TTL бездіяльності.
- Зміни в `mcp.*` застосовуються гаряче через dispose кешованих session 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-поведінки.
[CLI backends](/uk/gateway/cli-backends#bundle-mcp-overlays) щодо runtime-поведінки.
## Skills
@ -155,14 +155,14 @@ bundled каналів (автентифікація, контроль дост
}
```
- `allowBundled`: необов’язковий список дозволених лише для bundled skills (керовані/workspace skills не зачіпаються).
- `allowBundled`: необов’язковий allowlist лише для bundled skills (керовані/робочі skills не зачіпаються).
- `load.extraDirs`: додаткові спільні корені skill (найнижчий пріоритет).
- `install.preferBrew`: коли `true`, надає перевагу інсталяторам Homebrew, якщо `brew`
доступний, перед переходом до інших типів інсталяторів.
- `install.preferBrew`: коли true, надавати перевагу інсталяторам Homebrew, коли `brew` є
доступним, перш ніж переходити до інших типів інсталяторів.
- `install.nodeManager`: перевага node-інсталятора для специфікацій `metadata.openclaw.install`
(`npm` | `pnpm` | `yarn` | `bun`).
- `entries.<skillKey>.enabled: false` вимикає skill, навіть якщо він bundled/installed.
- `entries.<skillKey>.apiKey`: зручне поле для skills, що оголошують основну env var (звичайний текстовий рядок або об’єкт SecretRef).
- `entries.<skillKey>.apiKey`: зручність для skills, що оголошують основну env var (plaintext string або об’єкт SecretRef).
---
@ -190,31 +190,31 @@ bundled каналів (автентифікація, контроль дост
}
```
- Завантажується з `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions`, а також `plugins.load.paths`.
- Виявлення приймає native OpenClaw plugins, а також сумісні Codex bundles і Claude bundles, зокрема manifestless Claude default-layout bundles.
- Завантажуються з `~/.openclaw/extensions`, `<workspace>/.openclaw/extensions`, а також `plugins.load.paths`.
- Discovery приймає нативні OpenClaw plugins, а також сумісні Codex bundles і Claude bundles, зокрема manifestless Claude default-layout bundles.
- **Зміни конфігурації потребують перезапуску gateway.**
- `allow`: необов’язковий список дозволених (завантажуються лише перелічені plugins). `deny` має пріоритет.
- `allow`: необов’язковий allowlist (завантажуються лише перелічені plugins). `deny` має пріоритет.
- `plugins.entries.<id>.apiKey`: зручне поле API-ключа на рівні plugin (коли підтримується plugin).
- `plugins.entries.<id>.env`: мапа env var з областю дії plugin.
- `plugins.entries.<id>.hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` та ігнорує поля, що змінюють prompt, зі застарілого `before_agent_start`, водночас зберігаючи застарілі `modelOverride` і `providerOverride`. Застосовується до native plugin hooks і підтримуваних директорій hooks, наданих bundle.
- `plugins.entries.<id>.hooks.allowConversationAccess`: коли `true`, довірені non-bundled plugins можуть читати raw conversation content із типізованих hooks, таких як `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`: необов’язковий список дозволених канонічних цілей `provider/model` для довірених subagent override. Використовуйте `"*"` лише тоді, коли навмисно хочете дозволити будь-яку модель.
- `plugins.entries.<id>.config`: визначений plugin об’єкт конфігурації (валідується native OpenClaw plugin schema, коли доступна).
- Налаштування облікових записів/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`, застарілого `tools.web.fetch.firecrawl.apiKey` або env var `FIRECRAWL_API_KEY`.
- `baseUrl`: базовий URL API Firecrawl (за замовчуванням: `https://api.firecrawl.dev`).
- `onlyMainContent`: витягувати зі сторінок лише основний вміст (за замовчуванням: `true`).
- `maxAgeMs`: максимальний вік кешу в мілісекундах (за замовчуванням: `172800000` / 2 дні).
- `timeoutSeconds`: тайм-аут scrape-запиту в секундах (за замовчуванням: `60`).
- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (Grok web search).
- `enabled`: увімкнути провайдера X Search.
- `plugins.entries.<id>.env`: мапа env var, обмежена plugin.
- `plugins.entries.<id>.hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` та ігнорує поля, що змінюють prompt, із legacy `before_agent_start`, зберігаючи legacy `modelOverride` і `providerOverride`. Застосовується до нативних plugin hooks і підтримуваних каталогів hooks, наданих bundle.
- `plugins.entries.<id>.hooks.allowConversationAccess`: коли `true`, довірені non-bundled plugins можуть читати raw conversation content із typed hooks, таких як `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 (валідується нативною схемою OpenClaw plugin, коли вона доступна).
- Налаштування облікових записів/runtime для channel plugin розміщені в `channels.<id>` і мають описуватися метаданими `channelConfigs` маніфесту plugin-власника, а не центральним реєстром опцій OpenClaw.
- `plugins.entries.firecrawl.config.webFetch`: налаштування провайдера веб-отримання Firecrawl.
- `apiKey`: API-ключ Firecrawl (приймає SecretRef). Використовує fallback до `plugins.entries.firecrawl.config.webSearch.apiKey`, legacy `tools.web.fetch.firecrawl.apiKey` або env var `FIRECRAWL_API_KEY`.
- `baseUrl`: базовий URL API Firecrawl (стандартно: `https://api.firecrawl.dev`).
- `onlyMainContent`: витягувати зі сторінок лише основний вміст (стандартно: `true`).
- `maxAgeMs`: максимальний вік кешу в мілісекундах (стандартно: `172800000` / 2 дні).
- `timeoutSeconds`: timeout запиту scrape у секундах (стандартно: `60`).
- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (вебпошук Grok).
- `enabled`: увімкнути провайдер X Search.
- `model`: модель Grok для використання в пошуку (наприклад, `"grok-4-1-fast"`).
- `plugins.entries.memory-core.config.dreaming`: налаштування memory dreaming. Див. [Dreaming](/uk/concepts/dreaming) щодо фаз і порогів.
- `enabled`: головний перемикач dreaming (за замовчуванням `false`).
- `frequency`: cron-частота для кожного повного проходу dreaming (`"0 3 * * *"` за замовчуванням).
- `model`: необов’язкове перевизначення моделі subagent Dream Diary. Потребує `plugins.entries.memory-core.subagent.allowModelOverride: true`; поєднуйте з `allowedModels`, щоб обмежити цілі. Помилки недоступності моделі повторюються один раз із моделлю сеансу за замовчуванням; помилки довіри або allowlist не мають тихого fallback.
- `enabled`: головний перемикач dreaming (стандартно `false`).
- `frequency`: cron cadence для кожного повного проходу dreaming (`"0 3 * * *"` стандартно).
- `model`: необов’язкове перевизначення моделі subagent Dream Diary. Потребує `plugins.entries.memory-core.subagent.allowModelOverride: true`; поєднуйте з `allowedModels`, щоб обмежити цілі. Помилки недоступності моделі повторюються один раз зі стандартною моделлю сеансу; помилки довіри або allowlist не переходять на fallback мовчки.
- політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації).
- Повна конфігурація пам’яті розміщена в [Довіднику конфігурації пам’яті](/uk/reference/memory-config):
- `agents.defaults.memorySearch.*`
@ -222,9 +222,9 @@ bundled каналів (автентифікація, контроль дост
- `memory.citations`
- `memory.qmd.*`
- `plugins.entries.memory-core.config.dreaming`
- Увімкнені Claude bundle plugins також можуть додавати вбудовані стандартні параметри Pi з `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як raw OpenClaw config patches.
- `plugins.slots.memory`: вибрати id активного memory plugin або `"none"`, щоб вимкнути memory plugins.
- `plugins.slots.contextEngine`: вибрати id активного context engine plugin; за замовчуванням `"legacy"`, якщо ви не встановите й не виберете інший engine.
- Увімкнені Claude bundle plugins також можуть додавати вбудовані стандартні значення Pi з `settings.json`; OpenClaw застосовує їх як очищені налаштування агента, а не як raw patches конфігурації OpenClaw.
- `plugins.slots.memory`: виберіть id активного memory plugin або `"none"`, щоб вимкнути memory plugins.
- `plugins.slots.contextEngine`: виберіть id активного context engine plugin; стандартно `"legacy"`, якщо ви не встановите й не виберете інший engine.
Див. [Plugins](/uk/tools/plugin).
@ -277,48 +277,48 @@ bundled каналів (автентифікація, контроль дост
```
- `evaluateEnabled: false` вимикає `act:evaluate` і `wait --fn`.
- `tabCleanup` звільняє відстежувані вкладки основного агента після простою або коли
- `tabCleanup` звільняє відстежувані вкладки основного агента після часу простою або коли
сесія перевищує свій ліміт. Установіть `idleMinutes: 0` або `maxTabsPerSession: 0`, щоб
вимкнути ці окремі режими очищення.
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, коли не задано, тому навігація браузера за замовчуванням залишається суворою.
- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, якщо не задано, тому навігація браузера за замовчуванням залишається суворою.
- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви навмисно довіряєте навігації браузера приватною мережею.
- У суворому режимі віддалені кінцеві точки профілів CDP (`profiles.*.cdpUrl`) підлягають такому самому блокуванню приватної мережі під час перевірок досяжності/виявлення.
- `ssrfPolicy.allowPrivateNetwork` і далі підтримується як застарілий псевдонім.
- У суворому режимі віддалені кінцеві точки профілів CDP (`profiles.*.cdpUrl`) підпадають під те саме блокування приватної мережі під час перевірок досяжності/виявлення.
- `ssrfPolicy.allowPrivateNetwork` залишається підтримуваним як застарілий псевдонім.
- У суворому режимі використовуйте `ssrfPolicy.hostnameAllowlist` і `ssrfPolicy.allowedHostnames` для явних винятків.
- Віддалені профілі працюють лише в режимі приєднання (start/stop/reset вимкнено).
- Віддалені профілі працюють лише в режимі приєднання (запуск/зупинка/скидання вимкнені).
- `profiles.*.cdpUrl` приймає `http://`, `https://`, `ws://` і `wss://`.
Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявляв `/json/version`; використовуйте WS(S),
коли ваш провайдер надає вам прямий DevTools WebSocket URL.
коли ваш провайдер надає прямий URL DevTools WebSocket.
- `remoteCdpTimeoutMs` і `remoteCdpHandshakeTimeoutMs` застосовуються до досяжності віддаленого та
`attachOnly` CDP, а також до запитів відкриття вкладок. Керовані профілі loopback
зберігають локальні типові значення CDP.
- Якщо зовнішньо керована служба CDP досяжна через loopback, установіть для цього
профілю `attachOnly: true`; інакше OpenClaw розглядає порт loopback як
- Якщо зовнішньо керований сервіс CDP доступний через loopback, установіть для цього
профілю `attachOnly: true`; інакше OpenClaw трактує порт loopback як
локальний керований профіль браузера й може повідомляти про помилки володіння локальним портом.
- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть приєднуватися на
вибраному хості або через підключений вузол браузера.
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на певний
профіль браузера на основі Chromium, наприклад Brave або Edge.
- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний
профіль браузера на базі Chromium, наприклад Brave або Edge.
- Профілі `existing-session` зберігають поточні обмеження маршруту Chrome MCP:
дії на основі snapshot/ref замість націлювання CSS-селекторами, хуки завантаження одного файла,
без перевизначень тайм-аутів діалогів, без `wait --load networkidle`, а також без
дії на основі snapshot/ref замість націлювання CSS-селекторами, хуки завантаження
одного файлу, без перевизначень тайм-аутів діалогів, без `wait --load networkidle` і без
`responsebody`, експорту PDF, перехоплення завантажень або пакетних дій.
- Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; явно
задавайте `cdpUrl` лише для віддаленого CDP.
- Локальні керовані профілі `openclaw` автоматично призначають `cdpPort` і `cdpUrl`; задавайте
`cdpUrl` явно лише для віддаленого CDP.
- Локальні керовані профілі можуть задавати `executablePath`, щоб перевизначити глобальний
`browser.executablePath` для цього профілю. Використовуйте це, щоб запускати один профіль у
Chrome, а інший у Brave.
- Локальні керовані профілі використовують `browser.localLaunchTimeoutMs` для HTTP-виявлення Chrome CDP
після запуску процесу та `browser.localCdpReadyTimeoutMs` для
готовності CDP websocket після запуску. Збільшуйте їх на повільніших хостах, де Chrome
запускається успішно, але перевірки готовності випереджають запуск. Обидва значення мають бути
додатними цілими числами до `120000` мс; недійсні значення конфігурації відхиляються.
- Порядок автовиявлення: браузер за замовчуванням, якщо він на основі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
готовності websocket CDP після запуску. Збільшуйте їх на повільніших хостах, де Chrome
успішно запускається, але перевірки готовності випереджають старт. Обидва значення мають бути
додатними цілими числами до `120000` мс; некоректні значення конфігурації відхиляються.
- Порядок автовиявлення: типовий браузер, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- `browser.executablePath` і `browser.profiles.<name>.executablePath` обидва
приймають `~` і `~/...` для домашнього каталогу вашої ОС перед запуском Chromium.
Профільний `userDataDir` у профілях `existing-session` також розгортається з тильдою.
- Служба керування: лише loopback (порт виводиться з `gateway.port`, типово `18791`).
- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад,
`userDataDir` для окремого профілю в профілях `existing-session` також розгортається з тильдою.
- Сервіс керування: лише loopback (порт походить від `gateway.port`, типово `18791`).
- `extraArgs` додає додаткові прапорці запуску до локального старту Chromium (наприклад
`--disable-gpu`, розмір вікна або прапорці налагодження).
---
@ -337,8 +337,8 @@ bundled каналів (автентифікація, контроль дост
}
```
- `seamColor`: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо).
- `assistant`: перевизначення ідентичності Control UI. Повертається до ідентичності активного агента.
- `seamColor`: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки режиму розмови тощо).
- `assistant`: перевизначення ідентичності Control UI. Резервно використовує ідентичність активного агента.
---
@ -413,66 +413,67 @@ bundled каналів (автентифікація, контроль дост
}
```
<Accordion title="Gateway field details">
<Accordion title="Докладні відомості про поля Gateway">
- `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`.
- **Застарілі псевдоніми прив’язки**: використовуйте значення режиму прив’язки в `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хоста (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
- **Примітка щодо Docker**: типова прив’язка `loopback` прослуховує `127.0.0.1` всередині контейнера. З мережевим мостом Docker (`-p 18789:18789`) трафік надходить на `eth0`, тому Gateway недосяжний. Використовуйте `--network host` або задайте `bind: "lan"` (чи `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб прослуховувати всі інтерфейси.
- **Автентифікація**: типово обов’язкова. Прив’язки не до loopback вимагають автентифікації Gateway. На практиці це означає спільний токен/пароль або реверсний проксі з підтримкою ідентифікації з `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"`: делегує автентифікацію браузера/користувача реверсному проксі з підтримкою ідентифікації та довіряє заголовкам ідентичності від `gateway.trustedProxies` (див. [автентифікацію довіреного проксі](/uk/gateway/trusted-proxy-auth)). Цей режим типово очікує джерело проксі **не з loopback**; реверсні проксі на тому самому хості через 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-адреси клієнта й кожної області автентифікації (спільний секрет і токен пристрою відстежуються незалежно). Заблоковані спроби повертають `429` + `Retry-After`.
- На асинхронному шляху інтерфейсу керування Tailscale Serve невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом помилки. Тому одночасні неправильні спроби від того самого клієнта можуть спрацювати на обмежувач уже на другому запиті, замість того щоб обидві пройти як звичайні невідповідності.
- `gateway.auth.rateLimit.exemptLoopback` типово має значення `true`; задайте `false`, коли навмисно хочете обмежувати також трафік localhost (для тестових налаштувань або суворих розгортань проксі).
- Спроби WS-автентифікації з браузерного походження завжди обмежуються з вимкненим винятком для loopback (додатковий захист від браузерного перебору localhost).
- На loopback такі блокування з браузерного походження ізольовані за нормалізованим значенням `Origin`, тому повторні невдачі з одного походження localhost не блокують автоматично інше походження.
- `tailscale.mode`: `serve` (лише tailnet, прив’язка loopback) або `funnel` (публічний, потребує автентифікації).
- `controlUi.allowedOrigins`: явний список дозволених браузерних походжень для підключень Gateway WebSocket. Обов’язковий, коли очікуються браузерні клієнти з походжень не з loopback.
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, що вмикає резервне визначення походження за заголовком Host для розгортань, які навмисно покладаються на політику походження за заголовком Host.
- **Застарілі псевдоніми прив’язки**: використовуйте значення режиму прив’язки в `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хостів (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`).
- **Примітка щодо Docker**: типова прив’язка `loopback` слухає `127.0.0.1` всередині контейнера. За мережевого мосту Docker (`-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` (див. [Автентифікація через довірений проксі](/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`.
- На асинхронному шляху Control UI Tailscale Serve невдалі спроби для тієї самої пари `{scope, clientIp}` серіалізуються перед записом помилки. Тому одночасні невдалі спроби від того самого клієнта можуть спрацювати обмежувач уже на другому запиті, замість того щоб обидві пройшли як прості невідповідності.
- `gateway.auth.rateLimit.exemptLoopback` типово `true`; встановіть `false`, коли ви навмисно хочете також обмежувати трафік localhost (для тестових налаштувань або суворих розгортань проксі).
- Спроби автентифікації WS із браузерного origin завжди обмежуються з вимкненим винятком для loopback (додатковий захист від перебору localhost з браузера).
- На loopback ці блокування з браузерного origin ізольовані для кожного нормалізованого значення `Origin`, тому повторні невдачі з одного localhost origin не блокують автоматично інший origin.
- `tailscale.mode`: `serve` (лише tailnet, прив’язка loopback) або `funnel` (публічно, вимагає автентифікації).
- `controlUi.allowedOrigins`: явний allowlist браузерних origin для підключень Gateway WebSocket. Обов’язково, коли браузерні клієнти очікуються з origin не з loopback.
- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервне визначення origin за заголовком Host для розгортань, що навмисно покладаються на політику origin за заголовком Host.
- `remote.transport`: `ssh` (типово) або `direct` (ws/wss). Для `direct` значення `remote.url` має бути `ws://` або `wss://`.
- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: перевизначення через середовище процесу на клієнтському боці для аварійного доступу, яке дозволяє відкритий текст `ws://` до довірених IP-адрес приватної мережі; типово відкритий текст залишається дозволеним лише для 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`: тимчасові перевизначення через змінні середовища для наведеної вище конфігурації ретранслятора.
- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: аварійний варіант лише для розробки для HTTP-URL ретранслятора через loopback. Виробничі URL ретранслятора мають залишатися на HTTPS.
- `gateway.handshakeTimeoutMs`: тайм-аут попереднього до автентифікації рукостискання Gateway WebSocket у мілісекундах. Типово: `15000`. `OPENCLAW_HANDSHAKE_TIMEOUT_MS` має пріоритет, якщо задано. Збільшуйте це значення на завантажених або малопотужних хостах, де локальні клієнти можуть підключатися, поки прогрів запуску ще завершується.
- `gateway.channelHealthCheckMinutes`: інтервал монітора стану каналу в хвилинах. Задайте `0`, щоб глобально вимкнути перезапуски монітора стану. Типово: `5`.
- `OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1`: аварійне перевизначення середовища процесу на стороні клієнта, яке дозволяє відкритий `ws://` до довірених IP приватної мережі; типово відкритий текст залишається дозволеним лише для 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`: escape hatch лише для розробки для 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-адреси реверсних проксі, які завершують TLS або додають заголовки переспрямованого клієнта. Вказуйте лише проксі, які ви контролюєте. Записи loopback усе ще допустимі для налаштувань проксі/локального виявлення на тому самому хості (наприклад, Tailscale Serve або локальний реверсний проксі), але вони **не** роблять запити loopback придатними для `gateway.auth.mode: "trusted-proxy"`.
- `allowRealIpFallback`: коли `true`, Gateway приймає `X-Real-IP`, якщо `X-Forwarded-For` відсутній. Типово `false` для поведінки із закритою відмовою.
- `gateway.nodes.pairing.autoApproveCidrs`: необов’язковий список дозволених CIDR/IP для автоматичного схвалення першого спарювання пристрою Node без запитаних областей доступу. Вимкнено, якщо не задано. Це не схвалює автоматично спарювання оператора/браузера/інтерфейсу керування/WebChat і не схвалює автоматично оновлення ролі, області доступу, метаданих або відкритого ключа.
- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування дозволів/заборон для оголошених команд Node після спарювання й оцінювання списку дозволів платформи. Використовуйте `allowCommands`, щоб дозволити небезпечні команди Node, як-от `camera.snap`, `camera.clip` і `screen.record`; `denyCommands` вилучає команду, навіть якщо типове значення платформи або явний дозвіл інакше включали б її. Після того як Node змінює свій оголошений список команд, відхиліть і повторно схваліть спарювання цього пристрою, щоб Gateway зберіг оновлений знімок команд.
- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список заборон).
- `gateway.tools.allow`: вилучити назви інструментів із типового списку заборон HTTP.
- `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 або вставляють заголовки пересланого клієнта. Вказуйте лише проксі, які ви контролюєте. Записи 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 для автоматичного схвалення першого спарювання пристрою node без запитаних областей. Вимкнено, коли не задано. Це не схвалює автоматично спарювання оператора/браузера/Control UI/WebChat, а також не схвалює автоматично оновлення ролі, області, метаданих або відкритого ключа.
- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування allow/deny для оголошених команд node після спарювання та оцінювання allowlist платформи. Використовуйте `allowCommands`, щоб увімкнути небезпечні команди node, як-от `camera.snap`, `camera.clip` і `screen.record`; `denyCommands` вилучає команду, навіть якщо типовий дозвіл платформи або явний allow інакше включав би її. Після того як node змінює свій оголошений список команд, відхиліть і повторно схваліть це спарювання пристрою, щоб Gateway зберіг оновлений знімок команд.
- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список deny).
- `gateway.tools.allow`: вилучає назви інструментів із типового HTTP deny list.
</Accordion>
### OpenAI-сумісні кінцеві точки
### Сумісні з OpenAI кінцеві точки
- Chat Completions: типово вимкнено. Увімкніть через `gateway.http.endpoints.chatCompletions.enabled: true`.
- 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.
Порожні 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.http.securityHeaders.strictTransportSecurity` (встановлюйте лише для HTTPS origin, які ви контролюєте; див. [Автентифікація через довірений проксі](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts))
### Ізоляція кількох екземплярів
Запускайте кілька Gateway на одному хості з унікальними портами й каталогами стану:
Запускайте кілька Gateway на одному хості з унікальними портами та каталогами стану:
```bash
OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \
@ -482,7 +483,7 @@ openclaw gateway --port 19001
Зручні прапорці: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile <name>` (використовує `~/.openclaw-<name>`).
Див. [кілька Gateway](/uk/gateway/multiple-gateways).
Див. [Кілька Gateway](/uk/gateway/multiple-gateways).
### `gateway.tls`
@ -501,10 +502,10 @@ openclaw gateway --port 19001
```
- `enabled`: вмикає завершення TLS на слухачі Gateway (HTTPS/WSS) (типово: `false`).
- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, коли явні файли не налаштовані; лише для локального використання/розробки.
- `certPath`: шлях файлової системи до файла сертифіката TLS.
- `keyPath`: шлях файлової системи до файла приватного ключа TLS; обмежте права доступу.
- `caPath`: необов’язковий шлях до пакета CA для перевірки клієнтів або користувацьких ланцюжків довіри.
- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, коли явні файли не налаштовано; лише для локального використання/розробки.
- `certPath`: шлях у файловій системі до файлу TLS-сертифіката.
- `keyPath`: шлях у файловій системі до файлу приватного TLS-ключа; тримайте доступ обмеженим.
- `caPath`: необов’язковий шлях до CA bundle для перевірки клієнтів або користувацьких ланцюжків довіри.
### `gateway.reload`
@ -521,12 +522,12 @@ openclaw gateway --port 19001
```
- `mode`: керує тим, як зміни конфігурації застосовуються під час виконання.
- `"off"`: ігнорувати живі редагування; зміни потребують явного перезапуску.
- `"restart"`: завжди перезапускати процес Gateway під час зміни конфігурації.
- `"hot"`: застосовувати зміни в межах процесу без перезапуску.
- `"hybrid"` (типово): спершу спробувати гаряче перезавантаження; за потреби перейти до перезапуску.
- `debounceMs`: вікно усунення брязкоту в мс перед застосуванням змін конфігурації (невід’ємне ціле число).
- `deferralTimeoutMs`: необов’язковий максимальний час у мс очікування операцій у процесі перед примусовим перезапуском. Опустіть, щоб використати типове обмежене очікування (`300000`); задайте `0`, щоб чекати безстроково й періодично журналювати попередження про все ще незавершені операції.
- `"off"`: ігнорувати live-зміни; зміни потребують явного перезапуску.
- `"restart"`: завжди перезапускати процес Gateway у разі зміни конфігурації.
- `"hot"`: застосовувати зміни в процесі без перезапуску.
- `"hybrid"` (типово): спочатку спробувати hot reload; повернутися до перезапуску, якщо потрібно.
- `debounceMs`: вікно debounce у мс перед застосуванням змін конфігурації (невід’ємне ціле число).
- `deferralTimeoutMs`: необов’язковий максимальний час у мс очікування операцій у процесі перед примусовим перезапуском. Пропустіть, щоб використати типове обмежене очікування (`300000`); встановіть `0`, щоб чекати безстроково та періодично логувати попередження про все ще незавершені операції.
---
@ -564,11 +565,11 @@ openclaw gateway --port 19001
```
Автентифікація: `Authorization: Bearer <token>` або `x-openclaw-token: <token>`.
Токени хуків у рядку запиту відхиляються.
Токени хуків у query string відхиляються.
Нотатки щодо валідації та безпеки:
Примітки щодо перевірки та безпеки:
- `hooks.enabled=true` вимагає непорожній `hooks.token`.
- `hooks.enabled=true` потребує непорожнього `hooks.token`.
- `hooks.token` має бути **відмінним** від `gateway.auth.token`; повторне використання токена Gateway відхиляється.
- `hooks.path` не може бути `/`; використовуйте окремий підшлях, наприклад `/hooks`.
- Якщо `hooks.allowRequestSessionKey=true`, обмежте `hooks.allowedSessionKeyPrefixes` (наприклад `["hook:"]`).
@ -578,32 +579,32 @@ openclaw gateway --port 19001
- `POST /hooks/wake``{ text, mode?: "now"|"next-heartbeat" }`
- `POST /hooks/agent``{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }`
- `sessionKey` з тіла запиту приймається лише коли `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="Mapping details">
<Accordion title="Подробиці зіставлення">
- `match.path` зіставляє підшлях після `/hooks` (наприклад `/hooks/gmail``gmail`).
- `match.source` зіставляє поле payload для загальних шляхів.
- Шаблони на кшталт `{{messages[0].subject}}` читають дані з payload.
- `transform` може вказувати на модуль JS/TS, який повертає дію hook.
- `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та обхід каталогів відхиляються).
- `agentId` спрямовує до конкретного агента; невідомі ID повертаються до типового.
- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або пропущено = дозволити всі, `[]` = заборонити всі).
- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків hook-агента без явного `sessionKey`.
- `match.source` зіставляє поле корисного навантаження для загальних шляхів.
- Шаблони на кшталт `{{messages[0].subject}}` читають дані з корисного навантаження.
- `transform` може вказувати на модуль JS/TS, що повертає дію хука.
- `transform.module` має бути відносним шляхом і лишатися в межах `hooks.transformsDir` (абсолютні шляхи та обхід каталогів відхиляються).
- `agentId` маршрутизує до конкретного агента; невідомі ідентифікатори повертаються до типового.
- `allowedAgentIds`: обмежує явну маршрутизацію (`*` або відсутнє значення = дозволити всіх, `[]` = заборонити всіх).
- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків агента хуком без явного `sessionKey`.
- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і керованим шаблонами ключам сесій зіставлення задавати `sessionKey` (типово: `false`).
- `allowedSessionKeyPrefixes`: необов’язковий список дозволених префіксів для явних значень `sessionKey` (запит + зіставлення), наприклад `["hook:"]`. Він стає обов’язковим, коли будь-яке зіставлення або пресет використовує шаблонний `sessionKey`.
- `deliver: true` надсилає фінальну відповідь у канал; `channel` типово має значення `last`.
- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо каталог моделей задано).
- `model` перевизначає LLM для цього запуску хука (має бути дозволено, якщо задано каталог моделей).
</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
{
@ -627,7 +628,7 @@ openclaw gateway --port 19001
```
- Gateway автоматично запускає `gog gmail watch serve` під час завантаження, коли це налаштовано. Задайте `OPENCLAW_SKIP_GMAIL_WATCHER=1`, щоб вимкнути.
- Не запускайте окремий `gog gmail watch serve` паралельно з Gateway.
- Не запускайте окремий `gog gmail watch serve` поруч із Gateway.
---
@ -643,13 +644,13 @@ 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 (токен/пароль/довірений проксі), як і інші HTTP-поверхні Gateway.
- Node WebViews зазвичай не надсилають заголовки автентифікації; після спарення та підключення node Gateway оголошує URL можливостей із областю дії node для доступу до canvas/A2UI.
- URL можливостей прив’язані до активної WS-сесії node і швидко спливають. Резервний варіант на основі IP не використовується.
- Лише локально: залишайте `gateway.bind: "loopback"` (типово).
- Прив’язки не до loopback: маршрути canvas потребують автентифікації Gateway (токен/пароль/довірений проксі), так само як інші HTTP-поверхні Gateway.
- WebViews Node зазвичай не надсилають заголовки автентифікації; після створення пари з вузлом і підключення Gateway оголошує URL-адреси можливостей, обмежені вузлом, для доступу до canvas/A2UI.
- URL-адреси можливостей прив’язані до активної WS-сесії вузла й швидко спливають. Резервний варіант на основі IP не використовується.
- Вставляє клієнт live-reload в обслуговуваний HTML.
- Автоматично створює початковий `index.html`, коли порожньо.
- Також обслуговує A2UI за `/__openclaw__/a2ui/`.
@ -672,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`.
### Глобальна область (DNS-SD)
### Глобальна мережа (DNS-SD)
```json5
{
@ -686,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`.
@ -694,7 +695,7 @@ openclaw gateway --port 19001
## Середовище
### `env` (вбудовані змінні env)
### `env` (вбудовані змінні середовища)
```json5
{
@ -712,13 +713,13 @@ openclaw gateway --port 19001
```
- Вбудовані змінні середовища застосовуються лише якщо в середовищі процесу відсутній ключ.
- Файли `.env`: CWD `.env` + `~/.openclaw/.env` (жоден не перевизначає наявні змінні).
- Файли `.env`: `.env` у CWD + `~/.openclaw/.env` (жоден не перевизначає наявні змінні).
- `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell.
- Повний порядок пріоритету див. у [Середовище](/uk/help/environment).
- Див. [Середовище](/uk/help/environment) для повного порядку пріоритетів.
### Підстановка змінних середовища
Посилайтеся на змінні середовища в будь-якому рядку конфігурації через `${VAR_NAME}`:
Посилайтеся на змінні середовища в будь-якому рядку конфігурації за допомогою `${VAR_NAME}`:
```json5
{
@ -728,9 +729,9 @@ openclaw gateway --port 19001
}
```
- Збігаються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
- Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації.
- Екрануйте через `$${VAR}` для буквального `${VAR}`.
- Зіставляються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`.
- Відсутні або порожні змінні спричиняють помилку під час завантаження конфігурації.
- Екрануйте як `$${VAR}` для буквального `${VAR}`.
- Працює з `$include`.
---
@ -750,18 +751,18 @@ openclaw gateway --port 19001
Валідація:
- Шаблон `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: "env"`: `^[A-Z][A-Z0-9_]{0,127}$`
- `id` для `source: "file"`: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`)
- Шаблон `id` для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$`
- `id` для `source: "exec"` не мають містити розділені скісними рисками сегменти шляху `.` або `..` (наприклад, `a/../b` буде відхилено)
### Підтримувана поверхня облікових даних
- Канонічна матриця: [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface)
- `secrets apply` націлюється на підтримувані шляхи облікових даних `openclaw.json`.
- Посилання `auth-profiles.json` включені до runtime-вирішення й audit-покриття.
- Посилання `auth-profiles.json` включені до розв’язання під час виконання та покриття аудиту.
### Конфігурація провайдерів секретів
### Конфігурація постачальників секретів
```json5
{
@ -791,18 +792,18 @@ openclaw gateway --port 19001
Примітки:
- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (`id` має бути `"value"` у режимі singleValue).
- Шляхи провайдерів file і exec закрито відмовляють, коли перевірка ACL Windows недоступна. Встановлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити.
- Провайдер `exec` вимагає абсолютний шлях `command` і використовує protocol payloads через stdin/stdout.
- За замовчуванням шляхи команд-симлінків відхиляються. Встановіть `allowSymlinkCommand: true`, щоб дозволити шляхи симлінків із валідацією розв’язаного цільового шляху.
- Постачальник `file` підтримує `mode: "json"` і `mode: "singleValue"` (`id` має бути `"value"` у режимі singleValue).
- Шляхи постачальників file та exec аварійно завершуються із закритою поведінкою, коли перевірка Windows ACL недоступна. Установлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити.
- Постачальник `exec` вимагає абсолютний шлях `command` і використовує протокольні payload-и через stdin/stdout.
- За замовчуванням шляхи команд через symlink відхиляються. Установіть `allowSymlinkCommand: true`, щоб дозволити шляхи symlink із валідацією розв’язаного цільового шляху.
- Якщо налаштовано `trustedDirs`, перевірка довіреного каталогу застосовується до розв’язаного цільового шляху.
- Дочірнє середовище `exec` за замовчуванням мінімальне; передавайте потрібні змінні явно через `passEnv`.
- Посилання на секрети під час активації розв’язуються в in-memory snapshot, після чого шляхи запитів читають лише snapshot.
- Фільтрація активної поверхні застосовується під час активації: нерозв’язані посилання на ввімкнених поверхнях спричиняють збій startup/reload, тоді як неактивні поверхні пропускаються з діагностикою.
- Посилання на секрети розв’язуються під час активації в snapshot у пам’яті, після чого шляхи запитів читають лише snapshot.
- Фільтрація активної поверхні застосовується під час активації: нерозв’язані посилання на увімкнених поверхнях спричиняють збій запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою.
---
## Сховище auth
## Сховище автентифікації
```json5
{
@ -820,14 +821,14 @@ openclaw gateway --port 19001
}
```
- Профілі для кожного агента зберігаються в `<agentDir>/auth-profiles.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-облікові дані надходять з in-memory resolved snapshots; застарілі статичні записи `auth.json` очищуються після виявлення.
- Застарілі OAuth імпортуються з `~/.openclaw/credentials/oauth.json`.
- Профілі для окремих агентів зберігаються в `<agentDir>/auth-profiles.json`.
- `auth-profiles.json` підтримує посилання на рівні значень (`keyRef` для `api_key`, `tokenRef` для `token`) для статичних режимів облікових даних.
- Застарілі плоскі мапи `auth-profiles.json`, як-от `{ "provider": { "apiKey": "..." } }`, не є форматом під час виконання; `openclaw doctor --fix` переписує їх у канонічні API-key профілі `provider:default` з резервною копією `.legacy-flat.*.bak`.
- Профілі в режимі OAuth (`auth.profiles.<id>.mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef.
- Статичні облікові дані під час виконання надходять із розв’язаних snapshot-ів у пам’яті; застарілі статичні записи `auth.json` очищаються під час виявлення.
- Застарілі імпорти OAuth беруться з `~/.openclaw/credentials/oauth.json`.
- Див. [OAuth](/uk/concepts/oauth).
- Runtime-поведінка секретів та інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets).
- Поведінка секретів під час виконання та інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets).
### `auth.cooldowns`
@ -849,24 +850,24 @@ openclaw gateway --port 19001
}
```
- `billingBackoffHours`: базова затримка повтору в годинах, коли профіль зазнає збою через справжні
помилки billing/insufficient-credit (за замовчуванням: `5`). Явний текст про billing може
все одно потрапити сюди навіть у відповідях `401`/`403`, але провайдер-специфічні текстові
матчери залишаються обмеженими провайдером, якому вони належать (наприклад OpenRouter
`Key limit exceeded`). Retryable HTTP `402` usage-window або
повідомлення про organization/workspace spend-limit натомість залишаються у шляху `rate_limit`.
- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин billing backoff для кожного провайдера.
- `billingMaxHours`: обмеження в годинах для експоненційного зростання billing backoff (за замовчуванням: `24`).
- `authPermanentBackoffMinutes`: базова затримка повтору в хвилинах для високонадійних збоїв `auth_permanent` (за замовчуванням: `10`).
- `authPermanentMaxMinutes`: обмеження в хвилинах для зростання backoff `auth_permanent` (за замовчуванням: `60`).
- `failureWindowHours`: ковзне вікно в годинах, яке використовується для лічильників backoff (за замовчуванням: `24`).
- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для помилок перевантаження перед переходом до model fallback (за замовчуванням: `1`). Форми provider-busy, як-от `ModelNotReadyException`, потрапляють сюди.
- `overloadedBackoffMs`: фіксована затримка перед повтором ротації перевантаженого провайдера/профілю (за замовчуванням: `0`).
- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile того самого провайдера для помилок rate-limit перед переходом до model fallback (за замовчуванням: `1`). Цей rate-limit bucket включає провайдер-подібний текст, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
- `billingBackoffHours`: базовий backoff у годинах, коли профіль зазнає збою через справжні
помилки білінгу/недостатнього кредиту (за замовчуванням: `5`). Явний текст про білінг
усе ще може потрапити сюди навіть у відповідях `401`/`403`, але специфічні для постачальника
текстові зіставники залишаються обмеженими постачальником, якому вони належать (наприклад OpenRouter
`Key limit exceeded`). Повторювані HTTP `402` повідомлення про usage-window або
обмеження витрат організації/робочого простору натомість залишаються у шляху `rate_limit`.
- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин backoff для білінгу за постачальниками.
- `billingMaxHours`: ліміт у годинах для експоненційного зростання backoff для білінгу (за замовчуванням: `24`).
- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для високодостовірних збоїв `auth_permanent` (за замовчуванням: `10`).
- `authPermanentMaxMinutes`: ліміт у хвилинах для зростання backoff `auth_permanent` (за замовчуванням: `60`).
- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників backoff (за замовчуванням: `24`).
- `overloadedProfileRotations`: максимальна кількість ротацій auth-profile того самого постачальника для помилок перевантаження перед переходом до резервної моделі (за замовчуванням: `1`). Форми зайнятості постачальника, як-от `ModelNotReadyException`, потрапляють сюди.
- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого постачальника/профілю (за замовчуванням: `0`).
- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-profile того самого постачальника для помилок rate-limit перед переходом до резервної моделі (за замовчуванням: `1`). Цей кошик rate-limit включає текст у формі постачальника, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`.
---
## Логування
## Журналювання
```json5
{
@ -884,8 +885,8 @@ openclaw gateway --port 19001
- Стандартний файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`.
- Задайте `logging.file` для стабільного шляху.
- `consoleLevel` підвищується до `debug`, коли використано `--verbose`.
- `maxFileBytes`: максимальний розмір активного файлу журналу в байтах перед ротацією (додатне ціле число; стандартно: `104857600` = 100 МБ). OpenClaw зберігає до п’яти нумерованих архівів поруч з активним файлом.
- `redactSensitive` / `redactPatterns`: маскування за принципом найкращих зусиль для виводу в консоль, файлових журналів, записів журналу OTLP і збереженого тексту стенограми сесії. `redactSensitive: "off"` вимикає лише цю загальну політику журналів/стенограм; поверхні безпеки UI/інструментів/діагностики все одно редагують секрети перед надсиланням.
- `maxFileBytes`: максимальний розмір активного файлу журналу в байтах перед ротацією (додатне ціле число; типово: `104857600` = 100 MB). OpenClaw зберігає до п’яти нумерованих архівів поруч з активним файлом.
- `redactSensitive` / `redactPatterns`: маскування на основі найкращих зусиль для виводу в консоль, файлових журналів, записів журналу OTLP і збереженого тексту стенограми сеансу. `redactSensitive: "off"` вимикає лише цю загальну політику журналів/стенограм; поверхні безпеки UI/інструментів/діагностики все одно редагують секрети перед надсиланням.
---
@ -933,25 +934,25 @@ openclaw gateway --port 19001
}
```
- `enabled`: головний перемикач для виводу інструментації (стандартно: `true`).
- `flags`: масив рядків прапорців, що вмикають цільовий журнальний вивід (підтримує шаблони на кшталт `"telegram.*"` або `"*"`).
- `stuckSessionWarnMs`: віковий поріг у мс для надсилання попереджень про завислі сесії, поки сесія лишається в стані обробки.
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (стандартно: `false`). Повну конфігурацію, каталог сигналів і модель приватності див. в [експорті OpenTelemetry](/uk/gateway/opentelemetry).
- `otel.endpoint`: URL колектора для експорту OTel.
- `otel.tracesEndpoint` / `otel.metricsEndpoint` / `otel.logsEndpoint`: необов’язкові специфічні для сигналів кінцеві точки OTLP. Якщо задано, вони перевизначають `otel.endpoint` лише для цього сигналу.
- `otel.protocol`: `"http/protobuf"` (стандартно) або `"grpc"`.
- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються з запитами експорту OTel.
- `enabled`: головний перемикач для виводу інструментації (типово: `true`).
- `flags`: масив рядків прапорців, що вмикають цільовий вивід журналів (підтримує символи-джокери, як-от `"telegram.*"` або `"*"`).
- `stuckSessionWarnMs`: поріг віку в мс для класифікації довготривалих сеансів обробки як `session.long_running`, `session.stalled` або `session.stuck`.
- `otel.enabled`: вмикає конвеєр експорту OpenTelemetry (типово: `false`). Повну конфігурацію, каталог сигналів і модель приватності див. у [експорті OpenTelemetry](/uk/gateway/opentelemetry).
- `otel.endpoint`: URL збирача для експорту OTel.
- `otel.tracesEndpoint` / `otel.metricsEndpoint` / `otel.logsEndpoint`: необов’язкові кінцеві точки OTLP для окремих сигналів. Якщо задано, вони перевизначають `otel.endpoint` лише для цього сигналу.
- `otel.protocol`: `"http/protobuf"` (типово) або `"grpc"`.
- `otel.headers`: додаткові заголовки метаданих HTTP/gRPC, що надсилаються із запитами експорту OTel.
- `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`: змінна середовища для хостів, які вже зареєстрували глобальний SDK OpenTelemetry. Тоді OpenClaw пропускає запуск/завершення SDK, що належить plugin, зберігаючи діагностичних слухачів активними.
- `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` і `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`: змінні середовища кінцевих точок для окремих сигналів, що використовуються, коли відповідний ключ конфігурації не задано.
- `cacheTrace.enabled`: записувати знімки трасування кешу для вбудованих запусків (стандартно: `false`).
- `cacheTrace.filePath`: шлях виводу для JSONL трасування кешу (стандартно: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід трасування кешу (усі стандартно: `true`).
- `otel.sampleRate`: частота вибірки трас `0``1`.
- `otel.flushIntervalMs`: періодичний інтервал скидання телеметрії в мс.
- `otel.captureContent`: явне ввімкнення захоплення необробленого вмісту для атрибутів діапазонів OTEL. Типово вимкнено. Булеве `true` захоплює вміст повідомлень/інструментів, що не є системним; форма об’єкта дає змогу явно ввімкнути `inputMessages`, `outputMessages`, `toolInputs`, `toolOutputs` і `systemPrompt`.
- `OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental`: перемикач середовища для найновіших експериментальних атрибутів постачальника діапазонів GenAI. Типово діапазони зберігають застарілий атрибут `gen_ai.system` для сумісності; метрики GenAI використовують обмежені семантичні атрибути.
- `OPENCLAW_OTEL_PRELOADED=1`: перемикач середовища для хостів, які вже зареєстрували глобальний SDK OpenTelemetry. Тоді OpenClaw пропускає запуск/зупинку SDK, що належить плагіну, зберігаючи активними діагностичні слухачі.
- `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`, `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` і `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT`: змінні середовища для кінцевих точок окремих сигналів, що використовуються, коли відповідний ключ конфігурації не задано.
- `cacheTrace.enabled`: записувати знімки трасування кешу для вбудованих запусків (типово: `false`).
- `cacheTrace.filePath`: шлях виводу для JSONL трасування кешу (типово: `$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl`).
- `cacheTrace.includeMessages` / `includePrompt` / `includeSystem`: керують тим, що включається у вивід трасування кешу (усі типово: `true`).
---
@ -974,11 +975,11 @@ openclaw gateway --port 19001
```
- `channel`: канал випусків для встановлень npm/git — `"stable"`, `"beta"` або `"dev"`.
- `checkOnStart`: перевіряти оновлення npm під час запуску Gateway (стандартно: `true`).
- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (стандартно: `false`).
- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням у stable-каналі (стандартно: `6`; максимум: `168`).
- `auto.stableJitterHours`: додаткове вікно розподілу розгортання stable-каналу в годинах (стандартно: `12`; максимум: `168`).
- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу, у годинах (стандартно: `1`; максимум: `24`).
- `checkOnStart`: перевіряти оновлення npm під час запуску Gateway (типово: `true`).
- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (типово: `false`).
- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням у стабільному каналі (типово: `6`; макс.: `168`).
- `auto.stableJitterHours`: додаткове вікно розподілу розгортання стабільного каналу в годинах (типово: `12`; макс.: `168`).
- `auto.betaCheckIntervalHours`: як часто виконуються перевірки бета-каналу, у годинах (типово: `1`; макс.: `24`).
---
@ -1011,23 +1012,23 @@ openclaw gateway --port 19001
}
```
- `enabled`: глобальний функціональний gate ACP (стандартно: `true`; задайте `false`, щоб приховати можливості dispatch і spawn ACP).
- `dispatch.enabled`: незалежний gate для dispatch ходу сесії ACP (стандартно: `true`). Задайте `false`, щоб залишити команди ACP доступними, але заблокувати виконання.
- `backend`: стандартний ідентифікатор backend середовища виконання ACP (має відповідати зареєстрованому ACP runtime plugin).
Якщо задано `plugins.allow`, включіть ідентифікатор backend plugin (наприклад, `acpx`), інакше bundled стандартний plugin не завантажиться.
- `defaultAgent`: резервний ідентифікатор цільового агента ACP, коли spawns не вказують явну ціль.
- `allowedAgents`: allowlist ідентифікаторів агентів, дозволених для сесій середовища виконання ACP; порожнє значення означає відсутність додаткового обмеження.
- `maxConcurrentSessions`: максимальна кількість одночасно активних сесій ACP.
- `stream.coalesceIdleMs`: вікно idle flush у мс для потокового тексту.
- `stream.maxChunkChars`: максимальний розмір фрагмента перед поділом проєкції потокового блока.
- `stream.repeatSuppression`: пригнічувати повторювані рядки статусу/інструментів у межах ходу (стандартно: `true`).
- `stream.deliveryMode`: `"live"` передає потік поступово; `"final_only"` буферизує до термінальних подій ходу.
- `stream.hiddenBoundarySeparator`: розділювач перед видимим текстом після прихованих подій інструментів (стандартно: `"paragraph"`).
- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, що проєктується за хід ACP.
- `stream.maxSessionUpdateChars`: максимальна кількість символів для проєктованих рядків статусу/оновлення ACP.
- `stream.tagVisibility`: запис імен тегів для булевих перевизначень видимості потокових подій.
- `runtime.ttlMinutes`: idle TTL у хвилинах для worker сесій ACP перед тим, як вони стають придатними для очищення.
- `runtime.installCommand`: необов’язкова команда встановлення для запуску під час початкового налаштування середовища виконання ACP.
- `enabled`: глобальний функціональний шлюз ACP (типово: `true`; задайте `false`, щоб приховати диспетчеризацію ACP і можливості запуску).
- `dispatch.enabled`: незалежний шлюз для диспетчеризації ходу сеансу ACP (типово: `true`). Задайте `false`, щоб залишити команди ACP доступними, але заблокувати виконання.
- `backend`: типовий ідентифікатор бекенда середовища виконання ACP (має збігатися із зареєстрованим плагіном середовища виконання ACP).
Якщо задано `plugins.allow`, включіть ідентифікатор бекенд-плагіна (наприклад `acpx`), інакше вбудований типовий плагін не завантажиться.
- `defaultAgent`: резервний ідентифікатор цільового агента ACP, коли запуски не вказують явну ціль.
- `allowedAgents`: список дозволених ідентифікаторів агентів для сеансів середовища виконання ACP; порожнє значення означає відсутність додаткового обмеження.
- `maxConcurrentSessions`: максимальна кількість одночасно активних сеансів ACP.
- `stream.coalesceIdleMs`: вікно скидання під час простою в мс для потокового тексту.
- `stream.maxChunkChars`: максимальний розмір фрагмента перед поділом проєкції потокового блоку.
- `stream.repeatSuppression`: пригнічувати повторювані рядки статусу/інструментів у межах одного ходу (типово: `true`).
- `stream.deliveryMode`: `"live"` передає потік поступово; `"final_only"` буферизує до завершальних подій ходу.
- `stream.hiddenBoundarySeparator`: роздільник перед видимим текстом після прихованих подій інструментів (типово: `"paragraph"`).
- `stream.maxOutputChars`: максимальна кількість символів виводу асистента, спроєктованих на один хід ACP.
- `stream.maxSessionUpdateChars`: максимальна кількість символів для спроєктованих рядків статусу/оновлення ACP.
- `stream.tagVisibility`: запис назв тегів у булеві перевизначення видимості для потокових подій.
- `runtime.ttlMinutes`: TTL простою в хвилинах для робітників сеансу ACP перед можливим очищенням.
- `runtime.installCommand`: необов’язкова команда встановлення, яку потрібно виконати під час початкового налаштування середовища виконання ACP.
---
@ -1043,17 +1044,17 @@ openclaw gateway --port 19001
}
```
- `cli.banner.taglineMode` керує стилем слогана банера:
- `"random"` (стандартно): ротаційні смішні/сезонні слогани.
- `cli.banner.taglineMode` керує стилем слогану банера:
- `"random"` (типово): ротаційні жартівливі/сезонні слогани.
- `"default"`: фіксований нейтральний слоган (`All your chats, one OpenClaw.`).
- `"off"`: без тексту слогана (заголовок/версія банера все одно показуються).
- `"off"`: без тексту слогану (назва/версія банера все одно показуються).
- Щоб приховати весь банер (а не лише слогани), задайте змінну середовища `OPENCLAW_HIDE_BANNER=1`.
---
## Майстер
Метадані, записані керованими потоками налаштування CLI (`onboard`, `configure`, `doctor`):
Метадані, які записують керовані потоки налаштування CLI (`onboard`, `configure`, `doctor`):
```json5
{
@ -1071,15 +1072,15 @@ openclaw gateway --port 19001
## Ідентичність
Див. поля ідентичності `agents.list` у [стандартних параметрах агента](/uk/gateway/config-agents#agent-defaults).
Див. поля ідентичності `agents.list` у [типових значеннях агента](/uk/gateway/config-agents#agent-defaults).
---
## Bridge (застаріле, вилучено)
## Міст (застаріле, вилучено)
Поточні збірки більше не містять TCP bridge. Nodes підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (перевірка не проходить, доки їх не вилучено; `openclaw doctor --fix` може видалити невідомі ключі).
Поточні збірки більше не містять TCP-міст. Nodes підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (перевірка не пройде, доки їх не буде вилучено; `openclaw doctor --fix` може видалити невідомі ключі).
<Accordion title="Конфігурація legacy bridge (історична довідка)">
<Accordion title="Застаріла конфігурація мосту (історична довідка)">
```json
{
@ -1117,11 +1118,11 @@ openclaw gateway --port 19001
}
```
- `sessionRetention`: як довго зберігати завершені ізольовані сесії запуску cron перед обрізанням із `sessions.json`. Також керує очищенням архівованих видалених стенограм cron. Стандартно: `24h`; задайте `false`, щоб вимкнути.
- `runLog.maxBytes`: максимальний розмір кожного файлу журналу запуску (`cron/runs/<jobId>.jsonl`) перед обрізанням. Стандартно: `2_000_000` байтів.
- `runLog.keepLines`: найновіші рядки, які зберігаються, коли спрацьовує обрізання журналу запуску. Стандартно: `2000`.
- `webhookToken`: bearer token, що використовується для доставки cron webhook POST (`delivery.mode = "webhook"`); якщо пропущено, заголовок авторизації не надсилається.
- `webhook`: застарілий legacy fallback URL webhook (http/https), що використовується лише для збережених завдань, які все ще мають `notify: true`.
- `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`.
### `cron.retry`
@ -1137,8 +1138,8 @@ openclaw gateway --port 19001
}
```
- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (стандартно: `3`; діапазон: `0``10`).
- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (стандартно: `[30000, 60000, 300000]`; 110 записів).
- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань у разі тимчасових помилок (типово: `3`; діапазон: `0``10`).
- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 110 записів).
- `retryOn`: типи помилок, що запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Пропустіть, щоб повторювати всі тимчасові типи.
Застосовується лише до одноразових завдань cron. Повторювані завдання використовують окрему обробку збоїв.
@ -1160,12 +1161,12 @@ openclaw gateway --port 19001
}
```
- `enabled`: увімкнути сповіщення про збої для завдань cron (стандартно: `false`).
- `after`: послідовні збої перед спрацюванням сповіщення (додатне ціле число, мінімум: `1`).
- `enabled`: увімкнути сповіщення про збої для завдань cron (типово: `false`).
- `after`: послідовні збої перед спрацюванням сповіщення (додатне ціле число, мін.: `1`).
- `cooldownMs`: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число).
- `includeSkipped`: враховувати послідовні пропущені запуски в порозі сповіщення (стандартно: `false`). Пропущені запуски відстежуються окремо й не впливають на backoff помилок виконання.
- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` публікує до налаштованого webhook.
- `accountId`: необов’язковий ідентифікатор акаунта або каналу для обмеження області доставки сповіщень.
- `includeSkipped`: враховувати послідовні пропущені запуски в поріг сповіщення (типово: `false`). Пропущені запуски відстежуються окремо й не впливають на backoff помилок виконання.
- `mode`: режим доставки — `"announce"` надсилає через повідомлення каналу; `"webhook"` надсилає POST до налаштованого Webhook.
- `accountId`: необов’язковий ідентифікатор облікового запису або каналу для обмеження області доставки сповіщень.
### `cron.failureDestination`
@ -1182,28 +1183,28 @@ openclaw gateway --port 19001
}
```
- Типове призначення для сповіщень про збої cron в усіх завданнях.
- `mode`: `"announce"` або `"webhook"`; типово `"announce"`, коли є достатньо даних цілі.
- Типове призначення для сповіщень про збої Cron в усіх завданнях.
- `mode`: `"announce"` або `"webhook"`; типовим є `"announce"`, коли існує достатньо даних цілі.
- `channel`: перевизначення каналу для доставки announce. `"last"` повторно використовує останній відомий канал доставки.
- `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`:
Заповнювачі шаблону, що розгортаються в `tools.media.models[].args`:
| Змінна | Опис |
| ------------------ | ------------------------------------------------- |
| `{{Body}}` | Повне тіло вхідного повідомлення |
| `{{RawBody}}` | Сире тіло (без обгорток історії/відправника) |
| `{{BodyStripped}}` | Тіло з вилученими згадками груп |
| `{{RawBody}}` | Необроблене тіло (без обгорток історії/відправника) |
| `{{BodyStripped}}` | Тіло з видаленими груповими згадками |
| `{{From}}` | Ідентифікатор відправника |
| `{{To}}` | Ідентифікатор призначення |
| `{{MessageSid}}` | ID повідомлення каналу |
@ -1213,13 +1214,13 @@ openclaw gateway --port 19001
| `{{MediaPath}}` | Локальний шлях до медіа |
| `{{MediaType}}` | Тип медіа (зображення/аудіо/документ/…) |
| `{{Transcript}}` | Транскрипт аудіо |
| `{{Prompt}}` | Визначений медіапромпт для записів CLI |
| `{{MaxChars}}` | Визначена максимальна кількість символів виводу для записів CLI |
| `{{Prompt}}` | Вирішений медіапромпт для записів CLI |
| `{{MaxChars}}` | Вирішена максимальна кількість символів виводу для записів CLI |
| `{{ChatType}}` | `"direct"` або `"group"` |
| `{{GroupSubject}}` | Тема групи (за можливості) |
| `{{GroupMembers}}` | Попередній перегляд учасників групи (за можливості) |
| `{{SenderName}}` | Відображуване ім’я відправника (за можливості) |
| `{{SenderE164}}` | Номер телефону відправника (за можливості) |
| `{{GroupSubject}}` | Тема групи (найкращими зусиллями) |
| `{{GroupMembers}}` | Попередній перегляд учасників групи (найкращими зусиллями) |
| `{{SenderName}}` | Відображуване ім’я відправника (найкращими зусиллями) |
| `{{SenderE164}}` | Номер телефону відправника (найкращими зусиллями) |
| `{{Provider}}` | Підказка провайдера (whatsapp, telegram, discord тощо) |
---
@ -1242,13 +1243,13 @@ 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; такі записи завершуються закритою відмовою замість вирівнювання конфігурації.
- Помилки: зрозумілі повідомлення для відсутніх файлів, помилок аналізу та циклічних включень.
---

View File

@ -1,38 +1,38 @@
---
read_when:
- Ви хочете надсилати дані про використання моделей OpenClaw, потік повідомлень або метрики сесій до колектора OpenTelemetry
- Ви налаштовуєте traces, метрики або журнали для Grafana, Datadog, Honeycomb, New Relic, Tempo чи іншого OTLP-бекенда
- Вам потрібні точні назви метрик, spans або форми атрибутів, щоб створювати інформаційні панелі чи сповіщення
summary: Експортуйте діагностику OpenClaw до будь-якого колектора OpenTelemetry через Plugin diagnostics-otel (OTLP/HTTP)
- Ви хочете надсилати дані про використання моделей OpenClaw, потік повідомлень або метрики сеансів до колектора OpenTelemetry
- Ви підключаєте трейси, метрики або журнали до Grafana, Datadog, Honeycomb, New Relic, Tempo або іншого OTLP-бекенда
- Вам потрібні точні назви метрик, назви спанів або структури атрибутів, щоб створювати дашборди чи сповіщення
summary: Експортуйте діагностичні дані OpenClaw до будь-якого колектора OpenTelemetry через Plugin diagnostics-otel (OTLP/HTTP)
title: Експорт OpenTelemetry
x-i18n:
generated_at: "2026-04-27T08:31:11Z"
model: gpt-5.4
generated_at: "2026-05-01T23:18:23Z"
model: gpt-5.5
provider: openai
source_hash: e9d06589d281223ebb57e76f6f19441d30c138b9f7b0636198ab7bae5fad3c8a
source_hash: 6afa805f9212571b325e00badff15d58fdc16be1b60c3f41dc7801e4241ed092
source_path: gateway/opentelemetry.md
workflow: 15
workflow: 16
---
OpenClaw експортує діагностику через вбудований Plugin `diagnostics-otel`
за допомогою **OTLP/HTTP (protobuf)**. Будь-який колектор або бекенд, що приймає OTLP/HTTP,
працює без змін у коді. Для локальних файлових журналів і способів їх читання див.
працює без змін у коді. Про локальні файлові журнали та як їх читати див.
[Журналювання](/uk/logging).
## Як це працює разом
- **Події діагностики** — це структуровані внутрішньопроцесні записи, які видають
Gateway і вбудовані plugins для запусків моделей, потоку повідомлень, сесій, черг
- **Діагностичні події** — це структуровані внутрішньопроцесні записи, які випускають
Gateway і вбудовані plugins для запусків моделей, потоку повідомлень, сеансів, черг,
та exec.
- **Plugin `diagnostics-otel`** підписується на ці події та експортує їх як
OpenTelemetry **метрики**, **traces** і **журнали** через OTLP/HTTP.
- **Виклики провайдера** отримують заголовок W3C `traceparent` із довіреного
контексту span виклику моделі OpenClaw, якщо транспорт провайдера приймає
користувацькі заголовки. Контекст trace, який видає Plugin, не поширюється.
- Експортери підключаються лише тоді, коли ввімкнено і поверхню діагностики, і plugin,
OpenTelemetry **метрики**, **трейси** та **журнали** через OTLP/HTTP.
- **Виклики провайдерів** отримують заголовок W3C `traceparent` від належного OpenClaw
контексту span для виклику моделі, коли транспорт провайдера приймає користувацькі
заголовки. Контекст трасування, випущений Plugin, не поширюється.
- Експортери підключаються лише тоді, коли ввімкнені і поверхня діагностики, і Plugin,
тому внутрішньопроцесні витрати за замовчуванням залишаються майже нульовими.
## Швидкий початок
## Швидкий старт
```json5
{
@ -59,7 +59,7 @@ OpenClaw експортує діагностику через вбудовани
}
```
Ви також можете ввімкнути plugin з CLI:
Ви також можете ввімкнути Plugin з CLI:
```bash
openclaw plugins enable diagnostics-otel
@ -71,14 +71,14 @@ openclaw plugins enable diagnostics-otel
## Експортовані сигнали
| Signal | Що в нього входить |
| Сигнал | Що до нього входить |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Metrics** | Лічильники та гістограми для використання токенів, вартості, тривалості запуску, потоку повідомлень, смуг черги, стану сесії, exec і тиску пам’яті. |
| **Traces** | Spans для використання моделей, викликів моделей, життєвого циклу harness, виконання інструментів, exec, обробки webhook/повідомлень, збирання контексту та циклів інструментів. |
| **Logs** | Структуровані записи `logging.file`, експортовані через OTLP, коли ввімкнено `diagnostics.otel.logs`. |
| **Метрики** | Лічильники та гістограми для використання токенів, вартості, тривалості запуску, потоку повідомлень, смуг черг, стану сеансу, exec і тиску пам’яті. |
| **Трейси** | Spans для використання моделей, викликів моделей, життєвого циклу harness, виконання інструментів, exec, обробки webhook/повідомлень, складання контексту та циклів інструментів. |
| **Журнали** | Структуровані записи `logging.file`, експортовані через OTLP, коли ввімкнено `diagnostics.otel.logs`. |
Перемикайте `traces`, `metrics` і `logs` незалежно. Усі три параметри за замовчуванням
увімкнені, коли `diagnostics.otel.enabled` має значення true.
Перемикайте `traces`, `metrics` і `logs` незалежно. Усі три за замовчуванням увімкнені,
коли `diagnostics.otel.enabled` має значення true.
## Довідник конфігурації
@ -99,7 +99,7 @@ openclaw plugins enable diagnostics-otel
metrics: true,
logs: true,
sampleRate: 0.2, // root-span sampler, 0.0..1.0
flushIntervalMs: 60000, // interval exportu метрик (мінімум 1000ms)
flushIntervalMs: 60000, // metric export interval (min 1000ms)
captureContent: {
enabled: false,
inputMessages: false,
@ -115,71 +115,71 @@ openclaw plugins enable diagnostics-otel
### Змінні середовища
| Variable | Призначення |
| Змінна | Призначення |
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Перевизначає `diagnostics.otel.endpoint`. Якщо значення вже містить `/v1/traces`, `/v1/metrics` або `/v1/logs`, воно використовується як є. |
| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` / `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` / `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Перевизначення кінцевих точок для окремих сигналів, що використовуються, коли не задано відповідний ключ конфігурації `diagnostics.otel.*Endpoint`. Конфігурація для конкретного сигналу має пріоритет над env для конкретного сигналу, яке має пріоритет над спільною кінцевою точкою. |
| `OTEL_SERVICE_NAME` | Перевизначає `diagnostics.otel.serviceName`. |
| `OTEL_EXPORTER_OTLP_PROTOCOL` | Перевизначає wire protocol (сьогодні враховується лише `http/protobuf`). |
| `OTEL_SEMCONV_STABILITY_OPT_IN` | Установіть значення `gen_ai_latest_experimental`, щоб видавати найновіший експериментальний атрибут span GenAI (`gen_ai.provider.name`) замість застарілого `gen_ai.system`. Метрики GenAI завжди використовують обмежені семантичні атрибути з низькою кардинальністю незалежно від цього. |
| `OPENCLAW_OTEL_PRELOADED` | Установіть значення `1`, якщо інший preload або host process уже зареєстрував глобальний SDK OpenTelemetry. Тоді plugin пропустить власний життєвий цикл NodeSDK, але все одно підключить слухачі діагностики та врахує `traces`/`metrics`/`logs`. |
| `OTEL_EXPORTER_OTLP_ENDPOINT` | Перевизначає `diagnostics.otel.endpoint`. Якщо значення вже містить `/v1/traces`, `/v1/metrics` або `/v1/logs`, воно використовується як є. |
| `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT` / `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT` / `OTEL_EXPORTER_OTLP_LOGS_ENDPOINT` | Перевизначення кінцевих точок для окремих сигналів, які використовуються, коли відповідний ключ конфігурації `diagnostics.otel.*Endpoint` не задано. Конфігурація для окремого сигналу має пріоритет над env для окремого сигналу, а той має пріоритет над спільною кінцевою точкою. |
| `OTEL_SERVICE_NAME` | Перевизначає `diagnostics.otel.serviceName`. |
| `OTEL_EXPORTER_OTLP_PROTOCOL` | Перевизначає мережевий протокол (сьогодні враховується лише `http/protobuf`). |
| `OTEL_SEMCONV_STABILITY_OPT_IN` | Установіть `gen_ai_latest_experimental`, щоб випускати найновіший експериментальний атрибут span GenAI (`gen_ai.provider.name`) замість застарілого `gen_ai.system`. Метрики GenAI завжди використовують обмежені семантичні атрибути з низькою кардинальністю незалежно від цього. |
| `OPENCLAW_OTEL_PRELOADED` | Установіть `1`, коли інший preload або хост-процес уже зареєстрував глобальний OpenTelemetry SDK. Тоді Plugin пропускає власний життєвий цикл NodeSDK, але все одно підключає діагностичні слухачі та враховує `traces`/`metrics`/`logs`. |
## Конфіденційність і захоплення вмісту
## Приватність і захоплення вмісту
Необроблений вміст моделі/інструментів **не** експортується за замовчуванням. Spans містять
обмежені ідентифікатори (канал, провайдер, модель, категорію помилки, ідентифікатори запитів
лише у вигляді хешів) і ніколи не включають текст prompt, текст відповіді, вхідні дані
інструментів, вихідні дані інструментів або ключі сесії.
Сирий вміст моделі/інструментів **не** експортується за замовчуванням. Spans містять обмежені
ідентифікатори (канал, провайдер, модель, категорія помилки, ідентифікатори запитів лише як хеш)
і ніколи не містять текст prompt, текст відповіді, входи інструментів, виходи інструментів або
ключі сеансів.
Вихідні запити до моделі можуть містити заголовок W3C `traceparent`. Цей заголовок
генерується лише з контексту trace діагностики, що належить OpenClaw, для активного
виклику моделі. Наявні заголовки `traceparent`, передані викликачем, замінюються, тому plugins або
користувацькі параметри провайдера не можуть підробити походження cross-service trace.
Вихідні запити до моделей можуть містити заголовок W3C `traceparent`. Цей заголовок
генерується лише з діагностичного контексту трасування, що належить OpenClaw, для активного
виклику моделі. Наявні заголовки `traceparent`, надані викликачем, замінюються, тому plugins або
користувацькі параметри провайдера не можуть підробити міжсервісне походження трасування.
Установлюйте `diagnostics.otel.captureContent.*` у значення `true` лише тоді, коли ваш колектор
і політика зберігання схвалені для тексту prompt, відповіді, інструментів або system prompt.
Кожен вкладений ключ вмикається окремо:
Установлюйте `diagnostics.otel.captureContent.*` у `true` лише тоді, коли ваш колектор і
політика зберігання схвалені для тексту prompt, відповіді, інструменту або системного prompt.
Кожен підключ окремо вмикається явно:
- `inputMessages` — вміст prompt користувача.
- `outputMessages` — вміст відповіді моделі.
- `toolInputs` — payload аргументів інструментів.
- `toolOutputs` — payload результатів інструментів.
- `systemPrompt` — зібраний system/developer prompt.
- `toolInputs` — payload аргументів інструменту.
- `toolOutputs` — payload результатів інструменту.
- `systemPrompt` — зібраний системний/developer prompt.
Коли ввімкнено будь-який вкладений ключ, spans моделей та інструментів отримують обмежені,
відредаговані атрибути `openclaw.content.*` лише для цього класу.
Коли ввімкнено будь-який підключ, spans моделі й інструментів отримують обмежені, відредаговані
атрибути `openclaw.content.*` лише для цього класу.
## Семплювання та скидання
- **Traces:** `diagnostics.otel.sampleRate` (лише root-span, `0.0` відкидає всі,
- **Трейси:** `diagnostics.otel.sampleRate` (лише root-span, `0.0` відкидає всі,
`1.0` зберігає всі).
- **Metrics:** `diagnostics.otel.flushIntervalMs` (мінімум `1000`).
- **Logs:** OTLP logs враховують `logging.level` (рівень файлового журналу). Вони використовують
шлях редагування діагностичних log record, а не форматування консолі. Для інсталяцій із
великим обсягом даних слід надавати перевагу семплюванню/фільтрації в колекторі OTLP, а не локальному семплюванню.
- **Кореляція файлових журналів:** JSONL-файли журналів містять верхньорівневі `traceId`,
`spanId`, `parentSpanId` і `traceFlags`, коли виклик журналу несе чинний діагностичний
контекст trace, що дозволяє процесорам журналів поєднувати локальні рядки журналу з
- **Метрики:** `diagnostics.otel.flushIntervalMs` (мінімум `1000`).
- **Журнали:** журнали OTLP враховують `logging.level` (рівень файлового журналу). Вони використовують
шлях редагування діагностичних записів журналу, а не форматування консолі. Інсталяціям із великим обсягом
слід надавати перевагу семплюванню/фільтруванню колектора OTLP замість локального семплювання.
- **Кореляція файлових журналів:** JSONL-файлові журнали містять верхньорівневі `traceId`,
`spanId`, `parentSpanId` і `traceFlags`, коли виклик журналювання несе чинний
діагностичний контекст трасування, що дає змогу обробникам журналів поєднувати локальні рядки журналу з
експортованими spans.
- **Кореляція запитів:** HTTP-запити Gateway і кадри WebSocket створюють внутрішню
область trace запиту. Журнали й події діагностики в цій області за замовчуванням
успадковують trace запиту, тоді як spans запуску агента та виклику моделі
створюються як дочірні, щоб заголовки провайдера `traceparent` залишалися в межах того самого trace.
- **Кореляція запитів:** HTTP-запити Gateway і кадри WebSocket створюють
внутрішню область трасування запиту. Журнали й діагностичні події всередині цієї області
за замовчуванням успадковують трасування запиту, тоді як spans запусків агентів і викликів моделей
створюються як дочірні, щоб заголовки `traceparent` провайдера залишалися в тому самому трасуванні.
## Експортовані метрики
### Використання моделі
### Використання моделей
- `openclaw.tokens` (лічильник, attrs: `openclaw.token`, `openclaw.channel`, `openclaw.provider`, `openclaw.model`, `openclaw.agent`)
- `openclaw.cost.usd` (лічильник, attrs: `openclaw.channel`, `openclaw.provider`, `openclaw.model`)
- `openclaw.run.duration_ms` (гістограма, attrs: `openclaw.channel`, `openclaw.provider`, `openclaw.model`)
- `openclaw.context.tokens` (гістограма, attrs: `openclaw.context`, `openclaw.channel`, `openclaw.provider`, `openclaw.model`)
- `gen_ai.client.token.usage` (гістограма, метрика семантичних угод GenAI, attrs: `gen_ai.token.type` = `input`/`output`, `gen_ai.provider.name`, `gen_ai.operation.name`, `gen_ai.request.model`)
- `gen_ai.client.operation.duration` (гістограма, секунди, метрика семантичних угод GenAI, attrs: `gen_ai.provider.name`, `gen_ai.operation.name`, `gen_ai.request.model`, необов’язково `error.type`)
- `gen_ai.client.token.usage` (гістограма, метрика семантичних конвенцій GenAI, attrs: `gen_ai.token.type` = `input`/`output`, `gen_ai.provider.name`, `gen_ai.operation.name`, `gen_ai.request.model`)
- `gen_ai.client.operation.duration` (гістограма, секунди, метрика семантичних конвенцій GenAI, attrs: `gen_ai.provider.name`, `gen_ai.operation.name`, `gen_ai.request.model`, необов’язковий `error.type`)
- `openclaw.model_call.duration_ms` (гістограма, attrs: `openclaw.provider`, `openclaw.model`, `openclaw.api`, `openclaw.transport`, а також `openclaw.errorCategory` і `openclaw.failureKind` для класифікованих помилок)
- `openclaw.model_call.request_bytes` (гістограма, розмір у байтах UTF-8 фінального payload запиту до моделі; без необробленого вмісту payload)
- `openclaw.model_call.response_bytes` (гістограма, розмір у байтах UTF-8 потокових подій відповіді моделі; без необробленого вмісту відповіді)
- `openclaw.model_call.time_to_first_byte_ms` (гістограма, час до першої потокової події відповіді)
- `openclaw.model_call.request_bytes` (гістограма, розмір фінального payload запиту до моделі у байтах UTF-8; без сирого вмісту payload)
- `openclaw.model_call.response_bytes` (гістограма, розмір подій потокової відповіді моделі у байтах UTF-8; без сирого вмісту відповіді)
- `openclaw.model_call.time_to_first_byte_ms` (гістограма, час, що минув до першої події потокової відповіді)
### Потік повідомлень
@ -192,20 +192,20 @@ openclaw plugins enable diagnostics-otel
- `openclaw.message.delivery.started` (лічильник, attrs: `openclaw.channel`, `openclaw.delivery.kind`)
- `openclaw.message.delivery.duration_ms` (гістограма, attrs: `openclaw.channel`, `openclaw.delivery.kind`, `openclaw.outcome`, `openclaw.errorCategory`)
### Черги та сесії
### Черги та сеанси
- `openclaw.queue.lane.enqueue` (лічильник, attrs: `openclaw.lane`)
- `openclaw.queue.lane.dequeue` (лічильник, attrs: `openclaw.lane`)
- `openclaw.queue.depth` (гістограма, attrs: `openclaw.lane` або `openclaw.channel=heartbeat`)
- `openclaw.queue.wait_ms` (гістограма, attrs: `openclaw.lane`)
- `openclaw.session.state` (лічильник, attrs: `openclaw.state`, `openclaw.reason`)
- `openclaw.session.stuck` (лічильник, attrs: `openclaw.state`)
- `openclaw.session.stuck_age_ms` (гістограма, attrs: `openclaw.state`)
- `openclaw.session.stuck` (лічильник, attrs: `openclaw.state`; випускається лише для обліку застарілих сеансів без активної роботи)
- `openclaw.session.stuck_age_ms` (гістограма, attrs: `openclaw.state`; випускається лише для обліку застарілих сеансів без активної роботи)
- `openclaw.run.attempt` (лічильник, attrs: `openclaw.attempt`)
### Життєвий цикл Harness
### Життєвий цикл harness
- `openclaw.harness.duration_ms` (гістограма, attrs: `openclaw.harness.id`, `openclaw.harness.plugin`, `openclaw.outcome`, `openclaw.harness.phase` у разі помилок)
- `openclaw.harness.duration_ms` (гістограма, attrs: `openclaw.harness.id`, `openclaw.harness.plugin`, `openclaw.outcome`, `openclaw.harness.phase` для помилок)
### Exec
@ -213,27 +213,27 @@ openclaw plugins enable diagnostics-otel
### Внутрішня діагностика (пам’ять і цикл інструментів)
- `openclaw.memory.heap_used_bytes` (гістограма, attrs: `openclaw.memory.kind`)
- `openclaw.memory.heap_used_bytes` (гістограма, атрибути: `openclaw.memory.kind`)
- `openclaw.memory.rss_bytes` (гістограма)
- `openclaw.memory.pressure` (лічильник, attrs: `openclaw.memory.level`)
- `openclaw.tool.loop.iterations` (лічильник, attrs: `openclaw.toolName`, `openclaw.outcome`)
- `openclaw.tool.loop.duration_ms` (гістограма, attrs: `openclaw.toolName`, `openclaw.outcome`)
- `openclaw.memory.pressure` (лічильник, атрибути: `openclaw.memory.level`)
- `openclaw.tool.loop.iterations` (лічильник, атрибути: `openclaw.toolName`, `openclaw.outcome`)
- `openclaw.tool.loop.duration_ms` (гістограма, атрибути: `openclaw.toolName`, `openclaw.outcome`)
## Експортовані spans
## Експортовані спани
- `openclaw.model.usage`
- `openclaw.channel`, `openclaw.provider`, `openclaw.model`
- `openclaw.tokens.*` (input/output/cache_read/cache_write/total)
- `gen_ai.system` за замовчуванням або `gen_ai.provider.name`, якщо ввімкнено найновіші семантичні угоди GenAI
- `gen_ai.system` за замовчуванням або `gen_ai.provider.name`, коли увімкнено найновіші семантичні конвенції GenAI
- `gen_ai.request.model`, `gen_ai.operation.name`, `gen_ai.usage.*`
- `openclaw.run`
- `openclaw.outcome`, `openclaw.channel`, `openclaw.provider`, `openclaw.model`, `openclaw.errorCategory`
- `openclaw.model.call`
- `gen_ai.system` за замовчуванням або `gen_ai.provider.name`, якщо ввімкнено найновіші семантичні угоди GenAI
- `gen_ai.system` за замовчуванням або `gen_ai.provider.name`, коли увімкнено найновіші семантичні конвенції GenAI
- `gen_ai.request.model`, `gen_ai.operation.name`, `openclaw.provider`, `openclaw.model`, `openclaw.api`, `openclaw.transport`
- `openclaw.errorCategory` і необов’язковий `openclaw.failureKind` у разі помилок
- `openclaw.errorCategory` і необов’язковий `openclaw.failureKind` для помилок
- `openclaw.model_call.request_bytes`, `openclaw.model_call.response_bytes`, `openclaw.model_call.time_to_first_byte_ms`
- `openclaw.provider.request_id_hash` (обмежений хеш на основі SHA для upstream request id провайдера; необроблені id не експортуються)
- `openclaw.provider.request_id_hash` (обмежений хеш на основі SHA для ідентифікатора запиту upstream-провайдера; необроблені ідентифікатори не експортуються)
- `openclaw.harness.run`
- `openclaw.harness.id`, `openclaw.harness.plugin`, `openclaw.outcome`, `openclaw.provider`, `openclaw.model`, `openclaw.channel`
- Після завершення: `openclaw.harness.result_classification`, `openclaw.harness.yield_detected`, `openclaw.harness.items.started`, `openclaw.harness.items.completed`, `openclaw.harness.items.active`
@ -253,27 +253,27 @@ openclaw plugins enable diagnostics-otel
- `openclaw.session.stuck`
- `openclaw.state`, `openclaw.ageMs`, `openclaw.queueDepth`
- `openclaw.context.assembled`
- `openclaw.prompt.size`, `openclaw.history.size`, `openclaw.context.tokens`, `openclaw.errorCategory` (без вмісту prompt, history, response або session key)
- `openclaw.prompt.size`, `openclaw.history.size`, `openclaw.context.tokens`, `openclaw.errorCategory` (без вмісту промпта, історії, відповіді або session-key)
- `openclaw.tool.loop`
- `openclaw.toolName`, `openclaw.outcome`, `openclaw.iterations`, `openclaw.errorCategory` (без повідомлень циклу, params або виводу інструмента)
- `openclaw.toolName`, `openclaw.outcome`, `openclaw.iterations`, `openclaw.errorCategory` (без повідомлень циклу, параметрів або виводу інструмента)
- `openclaw.memory.pressure`
- `openclaw.memory.level`, `openclaw.memory.heap_used_bytes`, `openclaw.memory.rss_bytes`
Якщо захоплення вмісту явно ввімкнено, spans моделей та інструментів також можуть
включати обмежені, відредаговані атрибути `openclaw.content.*` для конкретних
класів вмісту, які ви ввімкнули.
Коли захоплення вмісту явно ввімкнено, спани моделі та інструментів також можуть
містити обмежені, відредаговані атрибути `openclaw.content.*` для конкретних
класів вмісту, які ви вибрали.
## Каталог подій діагностики
## Каталог діагностичних подій
Наведені нижче події є основою для метрик і spans вище. Plugins також можуть підписуватися
Наведені нижче події забезпечують метрики та спани вище. Plugins також можуть підписуватися
на них напряму без експорту OTLP.
**Використання моделі**
- `model.usage` — токени, вартість, тривалість, контекст, провайдер/модель/канал,
id сесії. `usage` — це облік провайдера/ходу для вартості й телеметрії;
`context.used` — це поточний знімок prompt/контексту, який може бути меншим за
`usage.total` провайдера, коли задіяно кешований ввід або виклики циклу інструментів.
ідентифікатори сесій. `usage` — це облік провайдера/ходу для вартості й телеметрії;
`context.used` — це поточний знімок промпта/контексту, і він може бути нижчим за
провайдерський `usage.total`, коли задіяно кешований ввід або виклики tool-loop.
**Потік повідомлень**
@ -284,29 +284,29 @@ openclaw plugins enable diagnostics-otel
**Черга та сесія**
- `queue.lane.enqueue` / `queue.lane.dequeue`
- `session.state` / `session.stuck`
- `run.attempt`
- `session.state` / `session.long_running` / `session.stalled` / `session.stuck`
- `run.attempt` / `run.progress`
- `diagnostic.heartbeat` (агреговані лічильники: webhooks/queue/session)
**Життєвий цикл Harness**
**Життєвий цикл harness**
- `harness.run.started` / `harness.run.completed` / `harness.run.error`
життєвий цикл agent harness для кожного запуску. Включає `harnessId`, необов’язковий
`pluginId`, провайдера/модель/канал і id запуску. Завершення додає
життєвий цикл для кожного запуску agent harness. Містить `harnessId`, необов’язковий
`pluginId`, провайдер/модель/канал і ідентифікатор запуску. Завершення додає
`durationMs`, `outcome`, необов’язкові `resultClassification`, `yieldDetected`
та лічильники `itemLifecycle`. Помилки додають `phase`
і лічильники `itemLifecycle`. Помилки додають `phase`
(`prepare`/`start`/`send`/`resolve`/`cleanup`), `errorCategory` і
необов’язковий `cleanupFailed`.
**Exec**
- `exec.process.completed` — кінцевий результат, тривалість, ціль, режим, код
виходу та тип збою. Текст команди й робочі каталоги не
- `exec.process.completed` — кінцевий результат термінала, тривалість, ціль, режим, код
виходу та тип відмови. Текст команди й робочі каталоги не
включаються.
## Без експортера
Ви можете залишити події діагностики доступними для plugins або користувацьких sinks без
Ви можете залишити діагностичні події доступними для Plugins або власних приймачів без
запуску `diagnostics-otel`:
```json5
@ -315,8 +315,8 @@ openclaw plugins enable diagnostics-otel
}
```
Для цільового налагоджувального виводу без підвищення `logging.level` використовуйте
прапорці діагностики. Прапорці нечутливі до регістру та підтримують wildcard-вирази (наприклад, `telegram.*` або
Для цільового налагоджувального виводу без підвищення `logging.level` використовуйте діагностичні
прапорці. Прапорці не чутливі до регістру й підтримують символи узагальнення (наприклад, `telegram.*` або
`*`):
```json5
@ -325,15 +325,15 @@ openclaw plugins enable diagnostics-otel
}
```
Або як одноразове перевизначення через env:
Або як одноразове перевизначення env:
```bash
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway
```
Вивід прапорців надходить до стандартного файла журналу (`logging.file`) і все ще
Вивід прапорців потрапляє у стандартний файл журналу (`logging.file`) і все одно
редагується через `logging.redactSensitive`. Повний посібник:
[Прапорці діагностики](/uk/diagnostics/flags).
[Діагностичні прапорці](/uk/diagnostics/flags).
## Вимкнення
@ -348,8 +348,8 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway
## Пов’язане
- [Журналювання](/uk/logging) — файлові журнали, вивід у консоль, tailing у CLI та вкладка Logs у Control UI
- [Журналювання](/uk/logging) — файлові журнали, консольний вивід, відстеження через CLI та вкладка Logs у Control UI
- [Внутрішні механізми журналювання Gateway](/uk/gateway/logging) — стилі журналів WS, префікси підсистем і захоплення консолі
- [Прапорці діагностики](/uk/diagnostics/flags) — цільові прапорці журналів налагодження
- [Експорт діагностики](/uk/gateway/diagnostics) — інструмент operator support bundle (окремо від експорту OTEL)
- [Діагностичні прапорці](/uk/diagnostics/flags) — цільові прапорці налагоджувального журналу
- [Експорт діагностики](/uk/gateway/diagnostics) — інструмент support-bundle для операторів (окремо від експорту OTEL)
- [Довідник конфігурації](/uk/gateway/configuration-reference#diagnostics) — повний довідник полів `diagnostics.*`