chore(i18n): refresh uk translations

This commit is contained in:
openclaw-docs-i18n[bot] 2026-05-05 03:09:42 +00:00
parent 4f6e92f19c
commit 0712ac0fe9
3 changed files with 531 additions and 501 deletions

View File

@ -1,180 +1,180 @@
---
read_when:
- Вам потрібен точний покроковий опис циклу агента або подій життєвого циклу
- Ви змінюєте постановку сеансів у чергу, запис транскриптів або поведінку блокування запису сеансу
- Ви змінюєте поведінку постановки сеансів у чергу, записування транскриптів або блокування запису сеансу.
summary: Життєвий цикл циклу агента, потоки та семантика очікування
title: Цикл агента
x-i18n:
generated_at: "2026-05-03T17:25:12Z"
generated_at: "2026-05-05T03:06:20Z"
model: gpt-5.5
provider: openai
source_hash: 1bdd8e98710dce6412f499c37d2d74445f44f93142364c30993de517fdea6c56
source_hash: 1c7031a2b70e7a891f51fa127df6f04663db81400715717f50dd840a3fa5b745
source_path: concepts/agent-loop.md
workflow: 16
---
Агентний цикл — це повний «реальний» запуск агента: приймання → складання контексту → інференс моделі →
виконання інструментів → потокові відповіді → збереження стану. Це авторитетний шлях, який перетворює повідомлення
на дії та фінальну відповідь, водночас підтримуючи узгодженість стану сеансу.
Агентний цикл — це повний «реальний» запуск агента: приймання → збирання контексту → інференс моделі →
виконання інструментів → потокові відповіді → збереження. Це авторитетний шлях, який перетворює повідомлення
на дії та фінальну відповідь, водночас підтримуючи узгоджений стан сеансу.
В OpenClaw цикл — це один серіалізований запуск на сеанс, який видає події життєвого циклу й потоку,
поки модель думає, викликає інструменти та потоково передає вивід. Цей документ пояснює, як цей автентичний цикл
з’єднано наскрізно.
В OpenClaw цикл — це один серіалізований запуск на сеанс, який випускає події життєвого циклу та потоку,
поки модель думає, викликає інструменти й передає вивід потоково. У цьому документі пояснено, як цей автентичний цикл
з’єднано від початку до кінця.
## Точки входу
- Gateway RPC: `agent` і `agent.wait`.
- CLI: команда `agent`.
## Як це працює (на високому рівні)
## Як це працює (загальний огляд)
1. RPC `agent` перевіряє параметри, визначає сеанс (sessionKey/sessionId), зберігає метадані сеансу, негайно повертає `{ runId, acceptedAt }`.
2. `agentCommand` запускає агента:
- визначає модель + типові значення для thinking/verbose/trace
- завантажує знімок skills
- визначає модель і стандартні значення thinking/verbose/trace
- завантажує знімок Skills
- викликає `runEmbeddedPiAgent` (середовище виконання pi-agent-core)
- видає **end/error життєвого циклу**, якщо вбудований цикл не видає жодної з цих подій
- випускає **завершення/помилку життєвого циклу**, якщо вбудований цикл не випускає таку подію
3. `runEmbeddedPiAgent`:
- серіалізує запуски через черги на сеанс + глобальні черги
- визначає модель + профіль автентифікації та будує сеанс pi
- підписується на події pi й потоково передає дельти асистента/інструментів
- застосовує тайм-аут -> перериває запуск у разі перевищення
- для ходів сервера застосунку Codex перериває прийнятий хід, який перестає створювати прогрес сервера застосунку до термінальної події
- повертає payloads + метадані використання
4. `subscribeEmbeddedPiSession` мостить події pi-agent-core до потоку `agent` OpenClaw:
- серіалізує запуски через черги на рівні сеансу та глобальні черги
- визначає модель і профіль автентифікації та створює сеанс Pi
- підписується на події Pi й передає дельти асистента/інструментів потоково
- забезпечує тайм-аут -> перериває запуск, якщо його перевищено
- для ходів 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`:
- чекає на **end/error життєвого циклу** для `runId`
- очікує **завершення/помилки життєвого циклу** для `runId`
- повертає `{ status: ok|error|timeout, startedAt, endedAt, error? }`
## Черги + конкурентність
## Черги + паралельність
- Запуски серіалізуються за ключем сеансу (лінія сеансу) і, за потреби, через глобальну лінію.
- Це запобігає гонкам інструментів/сеансу та підтримує узгодженість історії сеансу.
- Канали повідомлень можуть вибирати режими черг (collect/steer/followup), які подаються в цю систему ліній.
- Це запобігає перегонам інструментів/сеансів і підтримує узгоджену історію сеансу.
- Канали повідомлень можуть вибирати режими черги (collect/steer/followup), які подають роботу в цю систему ліній.
Див. [Черга команд](/uk/concepts/queue).
- Записи транскрипту також захищені блокуванням запису сеансу на файлі сеансу. Блокування
враховує процеси й базується на файлах, тому воно перехоплює записувачі, які обходять внутрішньопроцесну чергу або надходять
з іншого процесу. Записувачі транскрипту сеансу чекають до `session.writeLock.acquireTimeoutMs`
перед тим, як повідомити, що сеанс зайнятий; типове значення — `60000` мс.
- Блокування запису сеансу типово не є реентерабельними. Якщо допоміжна функція навмисно вкладає отримання
того самого блокування, зберігаючи одного логічного записувача, вона має явно ввімкнути це через
- Записи транскрипту також захищені блокуванням запису сеансу у файлі сеансу. Блокування
враховує процеси й базується на файлах, тому воно виявляє записувачів, які обходять внутрішньопроцесну чергу або надходять
з іншого процесу. Записувачі транскрипту сеансу очікують до `session.writeLock.acquireTimeoutMs`
перед тим, як повідомити, що сеанс зайнятий; стандартне значення — `60000` мс.
- Блокування запису сеансу за замовчуванням не є повторно вхідними. Якщо допоміжний компонент навмисно вкладає отримання
того самого блокування, зберігаючи одного логічного записувача, він має явно ввімкнути це через
`allowReentrant: true`.
## Підготовка сеансу + робочого простору
- Робочий простір визначається та створюється; ізольовані запуски можуть перенаправлятися до кореня робочого простору пісочниці.
- Skills завантажуються (або повторно використовуються зі знімка) та вводяться в env і prompt.
- Файли bootstrap/context визначаються та вводяться у звіт системного prompt.
- Отримується блокування запису сеансу; `SessionManager` відкривається та готується до потокової передачі. Будь-який
подальший шлях переписування транскрипту, Compaction або обрізання має взяти те саме блокування перед відкриттям або
змінюванням файлу транскрипту.
- Робочий простір визначається й створюється; ізольовані запуски можуть перенаправлятися до кореня робочого простору пісочниці.
- Skills завантажуються (або повторно використовуються зі знімка) та ін’єктуються в середовище і prompt.
- Bootstrap/context-файли визначаються та ін’єктуються у звіт системного prompt.
- Отримується блокування запису сеансу; `SessionManager` відкривається й готується до початку потокової передачі. Будь-який
подальший шлях переписування транскрипту, Compaction або обрізання має отримати те саме блокування перед відкриттям або
зміною файлу транскрипту.
## Складання prompt + системний prompt
## Збирання prompt + системний prompt
- Системний prompt будується з базового prompt OpenClaw, prompt skills, bootstrap-контексту та перевизначень для окремого запуску.
- Застосовуються специфічні для моделі ліміти й резерв токенів для Compaction.
- Системний prompt будується з базового prompt OpenClaw, prompt Skills, bootstrap-контексту та перевизначень для конкретного запуску.
- Застосовуються модельні ліміти та резерв токенів для Compaction.
- Див. [Системний prompt](/uk/concepts/system-prompt), щоб дізнатися, що бачить модель.
## Точки hook (де можна перехопити)
## Точки хуків (де можна перехопити)
OpenClaw має дві системи hook:
OpenClaw має дві системи хуків:
- **Внутрішні hooks** (Gateway hooks): подієво-керовані скрипти для команд і подій життєвого циклу.
- **Plugin hooks**: точки розширення всередині життєвого циклу агента/інструментів і конвеєра Gateway.
- **Внутрішні хуки** (хуки Gateway): подієво-керовані скрипти для команд і подій життєвого циклу.
- **Хуки Plugin**: точки розширення всередині життєвого циклу агента/інструмента та конвеєра gateway.
### Внутрішні hooks (Gateway hooks)
### Внутрішні хуки (хуки Gateway)
- **`agent:bootstrap`**: виконується під час побудови bootstrap-файлів до фіналізації системного prompt.
Використовуйте це, щоб додавати/видаляти bootstrap-контекстні файли.
- **Командні hooks**: `/new`, `/reset`, `/stop` та інші події команд (див. документ Hooks).
- **`agent:bootstrap`**: виконується під час створення bootstrap-файлів до фіналізації системного prompt.
Використовуйте це, щоб додавати/видаляти файли bootstrap-контексту.
- **Командні хуки**: `/new`, `/reset`, `/stop` та інші події команд (див. документ про хуки).
Див. [Hooks](/uk/automation/hooks) для налаштування та прикладів.
Див. [Хуки](/uk/automation/hooks) для налаштування та прикладів.
### Plugin hooks (життєвий цикл агента + gateway)
### Хуки Plugin (життєвий цикл агента + gateway)
Вони виконуються всередині циклу агента або конвеєра gateway:
- **`before_model_resolve`**: виконується перед сеансом (без `messages`), щоб детерміновано перевизначити provider/model перед визначенням моделі.
- **`before_prompt_build`**: виконується після завантаження сеансу (з `messages`), щоб вставити `prependContext`, `systemPrompt`, `prependSystemContext` або `appendSystemContext` перед надсиланням prompt. Використовуйте `prependContext` для динамічного тексту на хід і поля системного контексту для стабільних вказівок, які мають перебувати в просторі системного prompt.
- **`before_agent_start`**: застарілий hook сумісності, який може виконуватися в будь-якій фазі; надавайте перевагу явним hooks вище.
- **`before_agent_reply`**: виконується після inline-дій і перед викликом LLM, даючи plugin змогу взяти хід на себе й повернути синтетичну відповідь або повністю заглушити хід.
- **`before_model_resolve`**: виконується перед сеансом (без `messages`), щоб детерміновано перевизначити провайдера/модель до визначення моделі.
- **`before_prompt_build`**: виконується після завантаження сеансу (з `messages`), щоб ін’єктувати `prependContext`, `systemPrompt`, `prependSystemContext` або `appendSystemContext` до надсилання prompt. Використовуйте `prependContext` для динамічного тексту на хід і поля системного контексту для стабільних настанов, які мають бути в просторі системного prompt.
- **`before_agent_start`**: застарілий хук сумісності, який може виконуватися в будь-якій фазі; віддавайте перевагу явним хукам вище.
- **`before_agent_reply`**: виконується після inline-дій і перед викликом LLM, даючи Plugin змогу забрати хід і повернути синтетичну відповідь або повністю заглушити хід.
- **`agent_end`**: перевіряє фінальний список повідомлень і метадані запуску після завершення.
- **`before_compaction` / `after_compaction`**: спостерігають за циклами Compaction або анотують їх.
- **`before_compaction` / `after_compaction`**: спостерігають або анотують цикли Compaction.
- **`before_tool_call` / `after_tool_call`**: перехоплюють параметри/результати інструментів.
- **`before_install`**: перевіряє вбудовані результати сканування й за потреби блокує встановлення skill або plugin.
- **`tool_result_persist`**: синхронно трансформує результати інструментів перед записом у транскрипт сеансу, що належить OpenClaw.
- **`message_received` / `message_sending` / `message_sent`**: hooks вхідних + вихідних повідомлень.
- **`before_install`**: перевіряє результати вбудованого сканування та за потреби блокує встановлення Skills або Plugin.
- **`tool_result_persist`**: синхронно трансформує результати інструментів перед записом у транскрипт сеансу, яким володіє OpenClaw.
- **`message_received` / `message_sending` / `message_sent`**: хуки вхідних і вихідних повідомлень.
- **`session_start` / `session_end`**: межі життєвого циклу сеансу.
- **`gateway_start` / `gateway_stop`**: події життєвого циклу gateway.
Правила ухвалення рішень hook для outbound/tool guards:
Правила рішень хуків для вихідних/інструментальних запобіжників:
- `before_tool_call`: `{ block: true }` є термінальним і зупиняє обробники нижчого пріоритету.
- `before_tool_call`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `before_install`: `{ block: true }` є термінальним і зупиняє обробники нижчого пріоритету.
- `before_install`: `{ block: false }` нічого не робить і не скасовує попереднє блокування.
- `message_sending`: `{ cancel: true }` є термінальним і зупиняє обробники нижчого пріоритету.
- `message_sending`: `{ cancel: false }` нічого не робить і не скасовує попереднє скасування.
- `before_tool_call`: `{ block: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `before_tool_call`: `{ block: false }` не виконує дій і не скасовує попереднє блокування.
- `before_install`: `{ block: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `before_install`: `{ block: false }` не виконує дій і не скасовує попереднє блокування.
- `message_sending`: `{ cancel: true }` є термінальним і зупиняє обробники з нижчим пріоритетом.
- `message_sending`: `{ cancel: false }` не виконує дій і не скасовує попереднє скасування.
Див. [Plugin hooks](/uk/plugins/hooks) для API hook і деталей реєстрації.
Див. [Хуки Plugin](/uk/plugins/hooks) для API хуків і деталей реєстрації.
Harnesses можуть адаптувати ці hooks інакше. Harness сервера застосунку Codex зберігає
OpenClaw plugin hooks як контракт сумісності для документованих дзеркальних
поверхонь, тоді як нативні hooks 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`.
- Потокова передача reasoning може випускатися як окремий потік або як блокові відповіді.
- Див. [Потокова передача](/uk/concepts/streaming) щодо фрагментації та поведінки блокових відповідей.
## Виконання інструментів + інструменти повідомлень
- Події початку/оновлення/завершення інструментів видаються в потоці `tool`.
- Результати інструментів очищуються за розміром і payloads зображень перед журналюванням/видаванням.
- Надсилання інструментів повідомлень відстежуються, щоб придушувати дубльовані підтвердження асистента.
- Події старту/оновлення/завершення інструмента випускаються в потік `tool`.
- Результати інструментів очищуються за розміром і image-payload-ами перед логуванням/випуском.
- Надсилання інструментами повідомлень відстежується, щоб пригнічувати дублікати підтверджень асистента.
## Формування відповіді + придушення
## Формування відповідей + пригнічення
- Фінальні payloads складаються з:
- тексту асистента (і необов’язкового міркування)
- Фінальні payload-и збираються з:
- тексту асистента (і необов’язкового reasoning)
- inline-підсумків інструментів (коли verbose + дозволено)
- тексту помилки асистента, коли модель завершується з помилкою
- Точний тихий токен `NO_REPLY` / `no_reply` фільтрується з вихідних
payloads.
- Дублікати інструментів повідомлень видаляються з фінального списку payload.
- Якщо не залишається жодного придатного до рендерингу payload і інструмент завершився з помилкою, видається резервна відповідь про помилку інструмента
- тексту помилки асистента, коли модель завершується помилкою
- Точний silent token `NO_REPLY` / `no_reply` фільтрується з вихідних
payload-ів.
- Дублікати інструментів повідомлень вилучаються з фінального списку payload-ів.
- Якщо не залишається payload-ів, які можна відрендерити, і інструмент завершився помилкою, випускається fallback-відповідь з помилкою інструмента
(якщо інструмент повідомлень уже не надіслав видиму для користувача відповідь).
## Compaction + повторні спроби
- Автоматична Compaction видає потокові події `compaction` і може запускати повторну спробу.
- Під час повторної спроби буфери в пам’яті та підсумки інструментів скидаються, щоб уникнути дубльованого виводу.
- Див. [Compaction](/uk/concepts/compaction) для конвеєра Compaction.
- Автоматична Compaction випускає події потоку `compaction` і може запустити повторну спробу.
- Під час повторної спроби буфери в пам’яті та підсумки інструментів скидаються, щоб уникнути дублювання виводу.
- Див. [Compaction](/uk/concepts/compaction) щодо конвеєра Compaction.
## Потоки подій (сьогодні)
- `lifecycle`: видається `subscribeEmbeddedPiSession` (і як резервний варіант `agentCommand`)
- `lifecycle`: випускається `subscribeEmbeddedPiSession` (і як fallback через `agentCommand`)
- `assistant`: потокові дельти з pi-agent-core
- `tool`: потокові події інструментів з pi-agent-core
## Обробка чат-каналу
## Обробка чат-каналів
- Дельти асистента буферизуються в чат-повідомлення `delta`.
- Чат `final` видається на **end/error життєвого циклу**.
- Чат `final` випускається на **завершення/помилку життєвого циклу**.
## Тайм-аути
- Типове значення `agent.wait`: 30 с (лише очікування). Параметр `timeoutMs` перевизначає.
- Середовище виконання агента: типове значення `agents.defaults.timeoutSeconds` — 172800 с (48 годин); застосовується таймером переривання в `runEmbeddedPiAgent`.
- Середовище виконання Cron: ізольований agent-turn `timeoutSeconds` належить cron. Планувальник запускає цей таймер, коли починається виконання, перериває базовий запуск у налаштований крайній термін, а потім виконує обмежене очищення перед записом тайм-ауту, щоб застарілий дочірній сеанс не міг утримувати лінію заблокованою.
- Діагностика активності сеансу: коли діагностику ввімкнено, `diagnostics.stuckSessionWarnMs` класифікує довгі сеанси `processing`, у яких не спостерігається відповідь, інструмент, статус, блок або прогрес ACP. Активні вбудовані запуски, виклики моделі та виклики інструментів повідомляються як `session.long_running`; активна робота без нещодавнього прогресу повідомляється як `session.stalled`; `session.stuck` зарезервовано для застарілого обліку сеансу без активної роботи. Застарілий облік сеансу негайно звільняє відповідну лінію сеансу; зупинені вбудовані запуски перериваються зі зливанням лише після розширеного вікна без прогресу (щонайменше 10 хвилин і 5x поріг попередження), щоб робота в черзі могла відновитися без обривання просто повільних запусків. Повторні діагностичні повідомлення `session.stuck` застосовують backoff, доки сеанс залишається незмінним.
- Тайм-аут простою моделі: OpenClaw перериває запит до моделі, коли до завершення вікна простою не надходять фрагменти відповіді. `models.providers.<id>.timeoutSeconds` розширює цей idle watchdog для повільних локальних/самостійно розгорнутих providers; інакше OpenClaw використовує `agents.defaults.timeoutSeconds`, коли налаштовано, типово обмежуючи до 120 с. Запуски, ініційовані Cron, без явного тайм-ауту моделі або агента вимикають idle watchdog і покладаються на зовнішній тайм-аут cron.
- Тайм-аут HTTP-запиту provider: `models.providers.<id>.timeoutSeconds` застосовується до HTTP-запитів моделі цього provider, включно з connect, headers, body, тайм-аутом запиту SDK, загальною обробкою переривання guarded-fetch і idle watchdog потоку моделі. Використовуйте це для повільних локальних/самостійно розгорнутих providers, як-от Ollama, перед підвищенням тайм-ауту всього середовища виконання агента.
- Стандартне значення `agent.wait`: 30 с (лише очікування). Параметр `timeoutMs` перевизначає його.
- Середовище виконання агента: стандартне значення `agents.defaults.timeoutSeconds` — 172800 с (48 годин); застосовується таймером переривання в `runEmbeddedPiAgent`.
- Середовище виконання Cron: `timeoutSeconds` ізольованого ходу агента належить cron. Планувальник запускає цей таймер, коли починається виконання, перериває базовий запуск у налаштований deadline, а потім виконує обмежене очищення перед записом тайм-ауту, щоб застарілий дочірній сеанс не міг залишити лінію заблокованою.
- Діагностика життєздатності сеансу: коли діагностику ввімкнено, `diagnostics.stuckSessionWarnMs` класифікує довгі сеанси `processing`, у яких не спостерігається відповіді, інструмента, статусу, блоку або прогресу ACP. Активні вбудовані запуски, виклики моделі та виклики інструментів повідомляються як `session.long_running`; активна робота без нещодавнього прогресу повідомляється як `session.stalled`; `session.stuck` зарезервовано для застарілого обліку сеансів без активної роботи. Застарілий облік сеансів негайно звільняє відповідну лінію сеансу; завислі вбудовані запуски перериваються з дренуванням лише після `diagnostics.stuckSessionAbortMs` (стандартно: щонайменше 10 хвилин і 5x порогу попередження), щоб робота в черзі могла відновитися без обривання просто повільних запусків. Відновлення випускає структуровані запитані/завершені результати, а діагностичний стан позначається як idle лише якщо те саме покоління processing усе ще актуальне. Повторні діагностики `session.stuck` застосовують backoff, доки сеанс залишається незмінним.
- Тайм-аут простою моделі: OpenClaw перериває запит до моделі, коли до завершення idle-вікна не надходять фрагменти відповіді. `models.providers.<id>.timeoutSeconds` розширює цей idle-watchdog для повільних local/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. Використовуйте це для повільних local/self-hosted провайдерів, таких як Ollama, перш ніж підвищувати тайм-аут усього середовища виконання агента.
## Де все може завершитися раніше
@ -186,7 +186,7 @@ OpenClaw plugin hooks як контракт сумісності для доку
## Пов’язане
- [Інструменти](/uk/tools) — доступні інструменти агента
- [Hooks](/uk/automation/hooks) — подієво-керовані скрипти, що запускаються подіями життєвого циклу агента
- [Хуки](/uk/automation/hooks) — подієво-керовані скрипти, які запускаються подіями життєвого циклу агента
- [Compaction](/uk/concepts/compaction) — як підсумовуються довгі розмови
- [Схвалення Exec](/uk/tools/exec-approvals) — брами схвалення для shell-команд
- [Thinking](/uk/tools/thinking) — налаштування рівня мислення/міркування
- [Схвалення Exec](/uk/tools/exec-approvals) — шлюзи схвалення для shell-команд
- [Thinking](/uk/tools/thinking) — конфігурація рівня thinking/reasoning

File diff suppressed because it is too large Load Diff

View File

@ -1,36 +1,36 @@
---
read_when:
- Ви хочете надсилати дані про використання моделі OpenClaw, потік повідомлень або метрики сеансів до колектора OpenTelemetry
- Ви підключаєте трейси, метрики або журнали до Grafana, Datadog, Honeycomb, New Relic, Tempo або іншого OTLP-бекенду
- Вам потрібні точні назви метрик, назви спанів або структури атрибутів для створення панелей моніторингу чи сповіщень
- Ви підключаєте трейси, метрики або логи до Grafana, Datadog, Honeycomb, New Relic, Tempo або іншого OTLP-бекенду
- Вам потрібні точні назви метрик, назви спанів або структури атрибутів, щоб створювати панелі моніторингу чи сповіщення.
summary: Експортуйте діагностику OpenClaw до будь-якого колектора OpenTelemetry через Plugin diagnostics-otel (OTLP/HTTP)
title: Експорт OpenTelemetry
x-i18n:
generated_at: "2026-05-04T02:07:41Z"
generated_at: "2026-05-05T03:06:28Z"
model: gpt-5.5
provider: openai
source_hash: d0b5be99b29fe5f13132b03cfeaf3ce978ee16f29e307aa76769bc414b5ca35f
source_hash: b5030b8b16624f114e31838d3a055c24e8a23a6c77d63495a445cb9f2e227b6a
source_path: gateway/opentelemetry.md
workflow: 16
---
OpenClaw експортує діагностику через офіційний Plugin `diagnostics-otel`
OpenClaw експортує діагностику через офіційний `diagnostics-otel` Plugin
за допомогою **OTLP/HTTP (protobuf)**. Будь-який колектор або бекенд, що приймає OTLP/HTTP,
працює без змін у коді. Про локальні файлові журнали та як їх читати див.
працює без змін у коді. Про локальні файлові журнали та те, як їх читати, див.
[Журналювання](/uk/logging).
## Як це працює разом
- **Діагностичні події** — це структуровані внутрішньопроцесні записи, які
Gateway і вбудовані Plugins створюють для запусків моделей, потоку повідомлень, сесій, черг
та exec.
- **Plugin `diagnostics-otel`** підписується на ці події та експортує їх як
OpenTelemetry **метрики**, **трейси** та **журнали** через OTLP/HTTP.
- **Виклики провайдера** отримують заголовок W3C `traceparent` від довіреного
контексту span виклику моделі OpenClaw, коли транспорт провайдера приймає користувацькі
Gateway і вбудовані plugins створюють для запусків моделей, потоку повідомлень, сесій, черг
і exec.
- **`diagnostics-otel` Plugin** підписується на ці події та експортує їх як
OpenTelemetry **метрики**, **трейси** і **журнали** через OTLP/HTTP.
- **Виклики провайдера** отримують W3C-заголовок `traceparent` із довіреного
контексту span виклику моделі OpenClaw, коли транспорт провайдера приймає власні
заголовки. Контекст трасування, створений Plugin, не поширюється.
- Експортери підключаються лише тоді, коли ввімкнено і діагностичну поверхню, і Plugin,
тому внутрішньопроцесна вартість за замовчуванням залишається близькою до нуля.
тому внутрішньопроцесні витрати за замовчуванням залишаються майже нульовими.
## Швидкий старт
@ -65,7 +65,7 @@ openclaw plugins install clawhub:@openclaw/diagnostics-otel
}
```
Ви також можете ввімкнути Plugin з CLI:
Ви також можете ввімкнути Plugin із CLI:
```bash
openclaw plugins enable diagnostics-otel
@ -77,9 +77,9 @@ openclaw plugins enable diagnostics-otel
## Експортовані сигнали
| Сигнал | Що до нього потрапляє |
| Сигнал | Що до нього входить |
| ----------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| **Метрики** | Лічильники та гістограми для використання токенів, вартості, тривалості запуску, потоку повідомлень, смуг черг, стану сесій, exec і тиску памʼяті. |
| **Метрики** | Лічильники та гістограми для використання токенів, вартості, тривалості запуску, потоку повідомлень, смуг черг, стану сесії, exec і тиску на пам’ять. |
| **Трейси** | Spans для використання моделі, викликів моделі, життєвого циклу harness, виконання інструментів, exec, обробки webhook/повідомлень, складання контексту та циклів інструментів. |
| **Журнали** | Структуровані записи `logging.file`, експортовані через OTLP, коли ввімкнено `diagnostics.otel.logs`. |
@ -124,53 +124,53 @@ openclaw plugins enable diagnostics-otel
| Змінна | Призначення |
| ----------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `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` | Перевизначення endpoint для конкретного сигналу, що використовуються, коли відповідний ключ конфігурації `diagnostics.otel.*Endpoint` не задано. Конфігурація для конкретного сигналу має пріоритет над env для конкретного сигналу, а він має пріоритет над спільним endpoint. |
| `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`, щоб створювати найновіший експериментальний атрибут GenAI span (`gen_ai.provider.name`) замість застарілого `gen_ai.system`. Метрики GenAI завжди використовують обмежені семантичні атрибути з низькою кардинальністю. |
| `OPENCLAW_OTEL_PRELOADED` | Установіть `1`, коли інший preload або хост-процес уже зареєстрував глобальний OpenTelemetry SDK. Тоді Plugin пропускає власний життєвий цикл NodeSDK, але все одно підключає діагностичних слухачів і враховує `traces`/`metrics`/`logs`. |
| `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`, коли інше попереднє завантаження або хост-процес уже зареєстрував глобальний OpenTelemetry SDK. Тоді Plugin пропускає власний життєвий цикл NodeSDK, але все одно підключає діагностичні слухачі та враховує `traces`/`metrics`/`logs`. |
## Приватність і захоплення вмісту
Сирий вміст моделі/інструмента **не** експортується за замовчуванням. Spans містять обмежені
ідентифікатори (канал, провайдер, модель, категорія помилки, ідентифікатори запитів лише у вигляді хешу)
і ніколи не включають текст prompt, текст відповіді, вхідні дані інструмента, вихідні дані інструмента або
Необроблений вміст моделі/інструменту **не** експортується за замовчуванням. Spans містять обмежені
ідентифікатори (канал, провайдер, модель, категорія помилки, ідентифікатори запитів лише у вигляді хешів)
і ніколи не містять текст запиту, текст відповіді, вхідні дані інструменту, вихідні дані інструменту або
ключі сесії.
Вихідні запити моделі можуть включати заголовок W3C `traceparent`. Цей заголовок
Вихідні запити до моделі можуть містити W3C-заголовок `traceparent`. Цей заголовок
створюється лише з діагностичного контексту трасування, що належить OpenClaw, для активного виклику моделі.
Наявні заголовки `traceparent`, надані викликачем, замінюються, тому Plugins або
користувацькі параметри провайдера не можуть підробити міжсервісне походження трейсу.
Наявні заголовки `traceparent`, передані викликачем, замінюються, тому plugins або
власні параметри провайдера не можуть підробити походження міжсервісного трасування.
Установлюйте `diagnostics.otel.captureContent.*` у `true` лише тоді, коли ваш колектор і
політика зберігання схвалені для тексту prompt, відповіді, інструмента або системного prompt.
політика зберігання схвалені для тексту запитів, відповідей, інструментів або системних запитів.
Кожен підключ є окремим opt-in:
- `inputMessages` — вміст prompt користувача.
- `inputMessages` — вміст запиту користувача.
- `outputMessages` — вміст відповіді моделі.
- `toolInputs` — payload аргументів інструмента.
- `toolOutputs` — payload результатів інструмента.
- `systemPrompt` — зібраний системний/developer prompt.
- `toolInputs` — payload аргументів інструменту.
- `toolOutputs` — payload результатів інструменту.
- `systemPrompt` — зібраний системний/developer-запит.
Коли будь-який підключ увімкнено, spans моделі та інструментів отримують обмежені, відредаговані
Коли ввімкнено будь-який підключ, spans моделі та інструментів отримують обмежені, відредаговані
атрибути `openclaw.content.*` лише для цього класу.
## Семплування та скидання
## Семплювання та скидання
- **Трейси:** `diagnostics.otel.sampleRate` (лише root-span, `0.0` відкидає всі,
`1.0` зберігає всі).
- **Метрики:** `diagnostics.otel.flushIntervalMs` (мінімум `1000`).
- **Журнали:** журнали OTLP враховують `logging.level` (рівень файлового журналу). Вони використовують
шлях редагування діагностичних log-record, а не форматування консолі. Інсталяціям із великим обсягом
слід надавати перевагу семплуванню/фільтрації в колекторі OTLP замість локального семплування.
- **Кореляція файлових журналів:** JSONL файлові журнали містять top-level `traceId`,
`spanId`, `parentSpanId` і `traceFlags`, коли виклик журналу має дійсний
діагностичний контекст трасування, що дає змогу процесорам журналів поєднувати локальні рядки журналу з
варто віддавати перевагу семплюванню/фільтрації в OTLP-колекторі замість локального семплювання.
- **Кореляція файлових журналів:** файлові журнали JSONL містять поля верхнього рівня `traceId`,
`spanId`, `parentSpanId` і `traceFlags`, коли виклик журналу несе валідний
діагностичний контекст трасування, що дає змогу обробникам журналів поєднувати локальні рядки журналу з
експортованими spans.
- **Кореляція запитів:** HTTP-запити Gateway і кадри WebSocket створюють
внутрішню область трасування запиту. Журнали та діагностичні події в цій області
успадковують трасування запиту за замовчуванням, а spans запуску агента та виклику моделі
створюються як дочірні, щоб заголовки `traceparent` провайдера залишалися в тому самому трейсi.
за замовчуванням успадковують трасування запиту, тоді як spans запуску агента та виклику моделі
створюються як дочірні, щоб заголовки `traceparent` провайдера залишалися в тому самому trace.
## Експортовані метрики
@ -181,11 +181,11 @@ openclaw plugins enable diagnostics-otel
- `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`, optional `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` (гістограма, час, що минув до першої події потокової відповіді)
- `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` (гістограма, час, що минув до першої потокової події відповіді)
### Потік повідомлень
@ -205,35 +205,42 @@ openclaw plugins enable diagnostics-otel
- `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`)
### Телеметрія життєздатності сесії
`diagnostics.stuckSessionWarnMs` — це поріг віку без прогресу для діагностики
життєздатності сесії. Сесія `processing` не наближається до цього порога,
поки OpenClaw спостерігає прогрес відповіді, інструмента, статусу, блоку або ACP runtime.
Typing keepalives не враховуються як прогрес, тому мовчазну модель або harness все ще можна
виявити.
життєздатності сесії. Сесія `processing` не наближається до цього порогу,
поки OpenClaw спостерігає прогрес відповіді, інструменту, статусу, блоку або виконання ACP.
Typing keepalives не враховуються як прогрес, тому мовчазну модель або harness
усе одно можна виявити.
OpenClaw класифікує сесії за роботою, яку він усе ще може спостерігати:
OpenClaw класифікує сесії за роботою, яку все ще може спостерігати:
- `session.long_running`: активна вбудована робота, виклики моделі або виклики інструментів
досі просуваються.
досі виконуються.
- `session.stalled`: активна робота існує, але активний запуск не повідомляв
про нещодавній прогрес. Завислі вбудовані запуски спочатку залишаються лише для спостереження, а потім
переходять до abort-drain після щонайменше 10 хвилин і 5x `diagnostics.stuckSessionWarnMs`
без прогресу, щоб поставлені в чергу ходи позаду lane могли відновитися.
- `session.stuck`: застарілий облік сесії без активної роботи. Це негайно звільняє
відповідну session lane.
про нещодавній прогрес. Застряглі вбудовані запуски спочатку залишаються лише для спостереження, а потім
виконують abort-drain після `diagnostics.stuckSessionAbortMs` без прогресу, щоб поставлені в чергу
звернення за цією смугою могли відновитися. Якщо значення не задано, поріг переривання за замовчуванням
становить безпечніше розширене вікно щонайменше 10 хвилин і 5x
`diagnostics.stuckSessionWarnMs`.
- `session.stuck`: застарілий облік сеансу без активної роботи. Це негайно звільняє
відповідну смугу сеансу.
Лише `session.stuck` генерує лічильник `openclaw.session.stuck`,
Відновлення створює структуровані події `session.recovery.requested` і
`session.recovery.completed`. Діагностичний стан сеансу позначається як неактивний
лише після результату відновлення, що змінює стан (`aborted` або `released`), і лише якщо
те саме покоління обробки досі є поточним.
Лише `session.stuck` створює лічильник `openclaw.session.stuck`,
гістограму `openclaw.session.stuck_age_ms` і span `openclaw.session.stuck`.
Повторні діагностичні події `session.stuck` сповільнюються, доки сесія
залишається незмінною, тому панелі моніторингу мають сповіщати про сталі
зростання, а не про кожен Heartbeat tick. Налаштування конфігурації та значення за замовчуванням див.
у [довіднику конфігурації](/uk/gateway/configuration-reference#diagnostics).
Повторні діагностики `session.stuck` відступають, доки сеанс залишається
незмінним, тому dashboards мають сповіщати про стале зростання, а не про кожен
тик Heartbeat. Про параметр конфігурації та значення за замовчуванням див.
[Довідник конфігурації](/uk/gateway/configuration-reference#diagnostics).
### Життєвий цикл harness
@ -243,7 +250,7 @@ OpenClaw класифікує сесії за роботою, яку він ус
- `openclaw.exec.duration_ms` (гістограма, атрибути: `openclaw.exec.target`, `openclaw.exec.mode`, `openclaw.outcome`, `openclaw.failureKind`)
### Внутрішня діагностика (пам’ять і цикл інструментів)
### Внутрішні діагностичні дані (памʼять і цикл інструментів)
- `openclaw.memory.heap_used_bytes` (гістограма, атрибути: `openclaw.memory.kind`)
- `openclaw.memory.rss_bytes` (гістограма)
@ -256,20 +263,20 @@ OpenClaw класифікує сесії за роботою, яку він ус
- `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-провайдера; необроблені ідентифікатори не експортуються)
- `openclaw.provider.request_id_hash` (обмежений SHA-based hash ідентифікатора запиту до upstream provider; raw ids не експортуються)
- `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`
- У разі помилки: `openclaw.harness.phase`, `openclaw.errorCategory`, необовязковий `openclaw.harness.cleanup_failed`
- У разі помилки: `openclaw.harness.phase`, `openclaw.errorCategory`, необовʼязковий `openclaw.harness.cleanup_failed`
- `openclaw.tool.execution`
- `gen_ai.tool.name`, `openclaw.toolName`, `openclaw.errorCategory`, `openclaw.tool.params.*`
- `openclaw.exec`
@ -285,27 +292,27 @@ OpenClaw класифікує сесії за роботою, яку він ус
- `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` (без prompt, history, response або вмісту session-key)
- `openclaw.tool.loop`
- `openclaw.toolName`, `openclaw.outcome`, `openclaw.iterations`, `openclaw.errorCategory` (без повідомлень циклу, параметрів або виводу інструменту)
- `openclaw.toolName`, `openclaw.outcome`, `openclaw.iterations`, `openclaw.errorCategory` (без повідомлень циклу, параметрів або виводу інструмента)
- `openclaw.memory.pressure`
- `openclaw.memory.level`, `openclaw.memory.heap_used_bytes`, `openclaw.memory.rss_bytes`
Коли capture вмісту явно ввімкнено, spans моделі та інструментів також можуть
містити обмежені й відредаговані атрибути `openclaw.content.*` для конкретних
класів вмісту, які ви вибрали.
Коли захоплення вмісту явно ввімкнено, spans моделі та інструментів також можуть
містити обмежені, редаговані атрибути `openclaw.content.*` для конкретних
класів вмісту, які ви ввімкнули.
## Каталог діагностичних подій
Наведені нижче події підтримують метрики та spans вище. Plugins також можуть
підписуватися на них напряму без експорту OTLP.
Події нижче забезпечують метрики та spans вище. Плагіни також можуть підписуватися
на них напряму без експорту OTLP.
**Використання моделі**
- `model.usage` — токени, вартість, тривалість, контекст, provider/model/channel,
ідентифікатори сесії. `usage` — це облік провайдера/ходу для вартості й телеметрії;
ідентифікатори сеансів. `usage` — це облік provider/turn для вартості й телеметрії;
`context.used` — це поточний знімок prompt/context і може бути нижчим за
provider `usage.total`, коли задіяні кешований ввід або виклики tool-loop.
provider `usage.total`, коли задіяні кешований вхід або виклики tool-loop.
**Потік повідомлень**
@ -313,7 +320,7 @@ OpenClaw класифікує сесії за роботою, яку він ус
- `message.queued` / `message.processed`
- `message.delivery.started` / `message.delivery.completed` / `message.delivery.error`
**Черга та сесія**
**Черга та сеанс**
- `queue.lane.enqueue` / `queue.lane.dequeue`
- `session.state` / `session.long_running` / `session.stalled` / `session.stuck`
@ -323,22 +330,22 @@ OpenClaw класифікує сесії за роботою, яку він ус
**Життєвий цикл harness**
- `harness.run.started` / `harness.run.completed` / `harness.run.error`
життєвий цикл кожного запуску для agent harness. Містить `harnessId`, необовязковий
життєвий цикл кожного запуску для harness агента. Містить `harnessId`, необовʼязковий
`pluginId`, provider/model/channel і run id. Завершення додає
`durationMs`, `outcome`, необовязкові `resultClassification`, `yieldDetected`
`durationMs`, `outcome`, необовʼязкові `resultClassification`, `yieldDetected`
і лічильники `itemLifecycle`. Помилки додають `phase`
(`prepare`/`start`/`send`/`resolve`/`cleanup`), `errorCategory` і
необовязковий `cleanupFailed`.
необовʼязковий `cleanupFailed`.
**Exec**
- `exec.process.completed`підсумковий результат термінала, тривалість, target, mode, exit
code і failure kind. Текст команди та робочі каталоги не
- `exec.process.completed`кінцевий результат, тривалість, ціль, режим, код виходу
і тип збою. Текст команди та робочі каталоги не
включаються.
## Без експортера
Ви можете залишити діагностичні події доступними для Plugins або користувацьких sinks без
Ви можете залишити діагностичні події доступними для плагінів або власних приймачів без
запуску `diagnostics-otel`:
```json5
@ -347,8 +354,8 @@ OpenClaw класифікує сесії за роботою, яку він ус
}
```
Для цільового debug-виводу без підвищення `logging.level` використовуйте діагностичні
прапорці. Прапорці не чутливі до регістру та підтримують wildcards (наприклад, `telegram.*` або
Для цільового debug output без підвищення `logging.level` використовуйте діагностичні
flags. Flags нечутливі до регістру та підтримують wildcards (наприклад, `telegram.*` або
`*`):
```json5
@ -357,15 +364,15 @@ OpenClaw класифікує сесії за роботою, яку він ус
}
```
Або як одноразове перевизначення через env:
Або як одноразове перевизначення env:
```bash
OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway
```
Вивід прапорців надходить до стандартного log-файлу (`logging.file`) і все одно
Вивід flag надходить до стандартного файлу журналу (`logging.file`) і все одно
редагується через `logging.redactSensitive`. Повний посібник:
[діагностичні прапорці](/uk/diagnostics/flags).
[Діагностичні flags](/uk/diagnostics/flags).
## Вимкнення
@ -378,10 +385,10 @@ OPENCLAW_DIAGNOSTICS=telegram.http,telegram.payload openclaw gateway
Ви також можете не додавати `diagnostics-otel` до `plugins.allow` або виконати
`openclaw plugins disable diagnostics-otel`.
## Повязане
## Повʼязане
- [Журналювання](/uk/logging) — файлові журнали, консольний вивід, CLI tailing і вкладка журналів Control UI
- [Внутрішнє журналювання Gateway](/uk/gateway/logging) — стилі журналів WS, префікси підсистем і capture консолі
- [Діагностичні прапорці](/uk/diagnostics/flags) — цільові прапорці debug-log
- [Внутрішні механізми журналювання Gateway](/uk/gateway/logging) — стилі журналів WS, префікси підсистем і захоплення консолі
- [Діагностичні flags](/uk/diagnostics/flags) — цільові flags debug-log
- [Експорт діагностики](/uk/gateway/diagnostics) — інструмент support-bundle для операторів (окремо від експорту OTEL)
- [Довідник конфігурації](/uk/gateway/configuration-reference#diagnostics) — повна довідка полів `diagnostics.*`
- [Довідник конфігурації](/uk/gateway/configuration-reference#diagnostics) — повний довідник полів `diagnostics.*`