diff --git a/docs/uk/gateway/configuration-reference.md b/docs/uk/gateway/configuration-reference.md index c27fd7442..da89d2449 100644 --- a/docs/uk/gateway/configuration-reference.md +++ b/docs/uk/gateway/configuration-reference.md @@ -5,33 +5,33 @@ read_when: summary: Довідник конфігурації Gateway для основних ключів OpenClaw, значень за замовчуванням і посилань на окремі довідники підсистем title: Довідник із конфігурації x-i18n: - generated_at: "2026-04-28T22:58:35Z" + generated_at: "2026-04-29T01:48:49Z" model: gpt-5.5 provider: openai - source_hash: ed99df1a7ec858e79380704e29d1a31e7b10f0429aa928d205503f7ea97187b8 + source_hash: 83fd28b7d6a2e670ab97aac206bb14343bd887da3236c6135d7958cc6e97b735 source_path: gateway/configuration-reference.md workflow: 16 --- -Довідник основної конфігурації для `~/.openclaw/openclaw.json`. Огляд, орієнтований на завдання, див. у [Конфігурація](/uk/gateway/configuration). +Довідник основної конфігурації для `~/.openclaw/openclaw.json`. Для огляду, орієнтованого на завдання, див. [Конфігурація](/uk/gateway/configuration). -Охоплює основні поверхні конфігурації OpenClaw і дає посилання назовні, коли підсистема має власний глибший довідник. Каталоги команд, що належать каналам і plugin, а також поглиблені налаштування пам’яті/QMD розміщено на власних сторінках, а не тут. +Охоплює основні поверхні конфігурації OpenClaw і містить посилання на глибші довідники, коли підсистема має власний. Каталоги команд, якими володіють канали й plugin, а також поглиблені параметри пам’яті/QMD розміщені на власних сторінках, а не на цій. Джерело істини в коді: -- `openclaw config schema` друкує актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими вбудованих/plugin/каналів, коли вони доступні -- `config.schema.lookup` повертає один вузол схеми, обмежений шляхом, для інструментів деталізації +- `openclaw config schema` виводить актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими вбудованих/plugin/каналів, коли вони доступні +- `config.schema.lookup` повертає один вузол схеми з областю дії за шляхом для інструментів деталізації - `pnpm config:docs:check` / `pnpm config:docs:gen` перевіряють базовий хеш документації конфігурації щодо поточної поверхні схеми Шлях пошуку агента: використовуйте дію інструмента `gateway` `config.schema.lookup` для точної документації та обмежень на рівні полів перед редагуванням. Використовуйте -[Конфігурація](/uk/gateway/configuration) для порад, орієнтованих на завдання, а цю сторінку +[Конфігурація](/uk/gateway/configuration) для орієнтованих на завдання настанов, а цю сторінку для ширшої карти полів, значень за замовчуванням і посилань на довідники підсистем. Окремі поглиблені довідники: - [Довідник конфігурації пам’яті](/uk/reference/memory-config) для `agents.defaults.memorySearch.*`, `memory.qmd.*`, `memory.citations` і конфігурації dreaming у `plugins.entries.memory-core.config.dreaming` -- [Slash-команди](/uk/tools/slash-commands) для поточного вбудованого + bundled каталогу команд +- [Slash-команди](/uk/tools/slash-commands) для поточного каталогу вбудованих + bundled команд - сторінки відповідних каналів/plugin для поверхонь команд, специфічних для каналів Формат конфігурації — **JSON5** (дозволені коментарі та кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, коли їх пропущено. @@ -40,35 +40,35 @@ x-i18n: ## Канали -Ключі конфігурації для окремих каналів перенесено на окрему сторінку — див. +Ключі конфігурації для окремих каналів перенесено на спеціальну сторінку — див. [Конфігурація — канали](/uk/gateway/config-channels) для `channels.*`, зокрема Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших -bundled каналів (автентифікація, контроль доступу, кілька облікових записів, обмеження за згадками). +bundled каналів (автентифікація, контроль доступу, кілька облікових записів, шлюзування згадок). -## Значення агента за замовчуванням, багатоагентність, сесії та повідомлення +## Стандартні параметри агента, кілька агентів, сеанси та повідомлення -Перенесено на окрему сторінку — див. +Перенесено на спеціальну сторінку — див. [Конфігурація — агенти](/uk/gateway/config-agents) для: -- `agents.defaults.*` (робоча область, модель, мислення, heartbeat, пам’ять, медіа, skills, sandbox) -- `multiAgent.*` (багатоагентна маршрутизація та прив’язки) -- `session.*` (життєвий цикл сесії, compaction, pruning) +- `agents.defaults.*` (робочий простір, модель, thinking, heartbeat, пам’ять, медіа, skills, sandbox) +- `multiAgent.*` (маршрутизація та прив’язки кількох агентів) +- `session.*` (життєвий цикл сеансу, compaction, pruning) - `messages.*` (доставка повідомлень, TTS, рендеринг markdown) - `talk.*` (режим Talk) - `talk.speechLocale`: необов’язковий ідентифікатор локалі BCP 47 для розпізнавання мовлення Talk на iOS/macOS - - `talk.silenceTimeoutMs`: коли не задано, Talk зберігає стандартне для платформи вікно паузи перед надсиланням транскрипту (`700 ms on macOS and Android, 900 ms on iOS`) + - `talk.silenceTimeoutMs`: коли не задано, Talk зберігає стандартне вікно паузи платформи перед надсиланням транскрипту (`700 ms on macOS and Android, 900 ms on iOS`) -## Інструменти та власні провайдери +## Інструменти та користувацькі провайдери -Політика інструментів, експериментальні перемикачі, конфігурація інструментів із підтримкою провайдера та налаштування -власного провайдера / базового URL перенесено на окрему сторінку — див. -[Конфігурація — інструменти та власні провайдери](/uk/gateway/config-tools). +Політику інструментів, експериментальні перемикачі, конфігурацію інструментів на базі провайдерів і налаштування користувацького +провайдера / базового URL перенесено на спеціальну сторінку — див. +[Конфігурація — інструменти та користувацькі провайдери](/uk/gateway/config-tools). ## Моделі -Визначення провайдерів, списки дозволених моделей і налаштування власного провайдера наведено в -[Конфігурація — інструменти та власні провайдери](/uk/gateway/config-tools#custom-providers-and-base-urls). -Корінь `models` також відповідає за глобальну поведінку каталогу моделей. +Визначення провайдерів, списки дозволених моделей і налаштування користувацьких провайдерів розміщені в +[Конфігурація — інструменти та користувацькі провайдери](/uk/gateway/config-tools#custom-providers-and-base-urls). +Корінь `models` також володіє глобальною поведінкою каталогу моделей. ```json5 { @@ -80,16 +80,16 @@ bundled каналів (автентифікація, контроль дост ``` - `models.mode`: поведінка каталогу провайдера (`merge` або `replace`). -- `models.providers`: мапа власних провайдерів із ключами за ідентифікатором провайдера. -- `models.pricing.enabled`: керує фоновою ініціалізацією цін. Коли +- `models.providers`: мапа користувацьких провайдерів, ключована за id провайдера. +- `models.pricing.enabled`: керує фоновим bootstrap ціноутворення. Коли `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` керують цим блоком без підключення до цільового сервера під час редагування конфігурації. @@ -116,19 +116,19 @@ bundled каналів (автентифікація, контроль дост ``` - `mcp.servers`: іменовані визначення stdio або віддалених MCP-серверів для runtime, які - відкривають налаштовані MCP-інструменти. + надають налаштовані 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`: idle TTL для bundled MCP runtime, обмежених сесією. - Одноразові вбудовані запуски запитують очищення після завершення запуску; цей TTL є резервним механізмом для - довгоживучих сесій і майбутніх викликачів. -- Зміни в `mcp.*` застосовуються гаряче через звільнення кешованих MCP runtime сесії. - Наступне виявлення/використання інструмента створює їх заново з нової конфігурації, тому вилучені - записи `mcp.servers` прибираються негайно, а не чекають на idle TTL. +- `mcp.sessionIdleTtlMs`: TTL бездіяльності для bundled MCP runtime з областю дії сеансу. + Одноразові вбудовані запуски запитують очищення наприкінці виконання; цей TTL є резервним механізмом для + довготривалих сеансів і майбутніх викликачів. +- Зміни в `mcp.*` застосовуються наживо через утилізацію кешованих MCP runtime сеансу. + Наступне виявлення/використання інструмента відтворює їх із нової конфігурації, тому видалені + записи `mcp.servers` прибираються негайно, а не чекають TTL бездіяльності. Див. [MCP](/uk/cli/mcp#openclaw-as-an-mcp-client-registry) і -[CLI-бекенди](/uk/gateway/cli-backends#bundle-mcp-overlays) щодо поведінки runtime. +[CLI-бекенди](/uk/gateway/cli-backends#bundle-mcp-overlays) щодо runtime-поведінки. ## Skills @@ -155,14 +155,14 @@ bundled каналів (автентифікація, контроль дост } ``` -- `allowBundled`: необов’язковий список дозволів лише для bundled skills (managed/workspace skills не зачіпаються). +- `allowBundled`: необов’язковий список дозволених лише для bundled skills (керовані/workspace skills не зачіпаються). - `load.extraDirs`: додаткові спільні корені skill (найнижчий пріоритет). -- `install.preferBrew`: коли `true`, віддає перевагу інсталяторам Homebrew, якщо `brew` є - доступним, перед переходом до інших типів інсталяторів. -- `install.nodeManager`: бажаний node-інсталятор для специфікацій `metadata.openclaw.install` +- `install.preferBrew`: коли `true`, надає перевагу інсталяторам Homebrew, якщо `brew` + доступний, перед переходом до інших типів інсталяторів. +- `install.nodeManager`: перевага node-інсталятора для специфікацій `metadata.openclaw.install` (`npm` | `pnpm` | `yarn` | `bun`). - `entries..enabled: false` вимикає skill, навіть якщо він bundled/installed. -- `entries..apiKey`: зручне поле для skills, що оголошують основну змінну середовища (plain-text рядок або об’єкт SecretRef). +- `entries..apiKey`: зручне поле для skills, що оголошують основну env var (звичайний текстовий рядок або об’єкт SecretRef). --- @@ -191,40 +191,40 @@ bundled каналів (автентифікація, контроль дост ``` - Завантажується з `~/.openclaw/extensions`, `/.openclaw/extensions`, а також `plugins.load.paths`. -- Виявлення приймає нативні OpenClaw plugins, а також сумісні bundles Codex і bundles Claude, зокрема bundles стандартного макета Claude без маніфеста. +- Виявлення приймає native OpenClaw plugins, а також сумісні Codex bundles і Claude bundles, зокрема manifestless Claude default-layout bundles. - **Зміни конфігурації потребують перезапуску gateway.** -- `allow`: необов’язковий список дозволів (завантажуються лише перелічені plugins). `deny` має перевагу. +- `allow`: необов’язковий список дозволених (завантажуються лише перелічені plugins). `deny` має пріоритет. - `plugins.entries..apiKey`: зручне поле API-ключа на рівні plugin (коли підтримується plugin). -- `plugins.entries..env`: мапа змінних середовища в області plugin. -- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` і ігнорує поля, що змінюють prompt, зі старого `before_agent_start`, водночас зберігаючи старі `modelOverride` і `providerOverride`. Застосовується до нативних hooks plugin і підтримуваних директорій hook, наданих bundle. -- `plugins.entries..hooks.allowConversationAccess`: коли `true`, довірені non-bundled plugins можуть читати сирий вміст розмови з типізованих hooks, таких як `llm_input`, `llm_output`, `before_agent_finalize` і `agent_end`. -- `plugins.entries..subagent.allowModelOverride`: явно довірити цьому plugin запитувати per-run перевизначення `provider` і `model` для фонових запусків subagent. -- `plugins.entries..subagent.allowedModels`: необов’язковий список дозволених канонічних цілей `provider/model` для довірених перевизначень subagent. Використовуйте `"*"` лише тоді, коли навмисно хочете дозволити будь-яку модель. -- `plugins.entries..config`: об’єкт конфігурації, визначений plugin (валідується схемою нативного OpenClaw plugin, коли доступна). -- Налаштування облікового запису/runtime channel plugin розміщуються в `channels.` і мають описуватися метаданими `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` або змінної середовища `FIRECRAWL_API_KEY`. +- `plugins.entries..env`: мапа env var з областю дії plugin. +- `plugins.entries..hooks.allowPromptInjection`: коли `false`, core блокує `before_prompt_build` та ігнорує поля, що змінюють prompt, зі застарілого `before_agent_start`, водночас зберігаючи застарілі `modelOverride` і `providerOverride`. Застосовується до native plugin hooks і підтримуваних директорій hooks, наданих bundle. +- `plugins.entries..hooks.allowConversationAccess`: коли `true`, довірені non-bundled plugins можуть читати raw conversation content із типізованих hooks, таких як `llm_input`, `llm_output`, `before_agent_finalize` і `agent_end`. +- `plugins.entries..subagent.allowModelOverride`: явно довіряє цьому plugin запитувати per-run перевизначення `provider` і `model` для фонових запусків subagent. +- `plugins.entries..subagent.allowedModels`: необов’язковий список дозволених канонічних цілей `provider/model` для довірених subagent override. Використовуйте `"*"` лише тоді, коли навмисно хочете дозволити будь-яку модель. +- `plugins.entries..config`: визначений plugin об’єкт конфігурації (валідується native OpenClaw plugin schema, коли доступна). +- Налаштування облікових записів/runtime каналів plugin розміщуються в `channels.` і мають описуватися метаданими `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). +- `plugins.entries.xai.config.xSearch`: налаштування xAI X Search (Grok web search). - `enabled`: увімкнути провайдера X Search. - - `model`: модель Grok для пошуку (наприклад, `"grok-4-1-fast"`). + - `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`, щоб обмежити цілі. Помилки недоступності моделі повторюються один раз із моделлю сесії за замовчуванням; збої довіри або списку дозволів не повертаються непомітно до запасного варіанта. + - `frequency`: cron-частота для кожного повного проходу dreaming (`"0 3 * * *"` за замовчуванням). + - `model`: необов’язкове перевизначення моделі subagent Dream Diary. Потребує `plugins.entries.memory-core.subagent.allowModelOverride: true`; поєднуйте з `allowedModels`, щоб обмежити цілі. Помилки недоступності моделі повторюються один раз із моделлю сеансу за замовчуванням; помилки довіри або allowlist не мають тихого fallback. - політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації). -- Повна конфігурація пам’яті наведена в [Довідник конфігурації пам’яті](/uk/reference/memory-config): +- Повна конфігурація пам’яті розміщена в [Довіднику конфігурації пам’яті](/uk/reference/memory-config): - `agents.defaults.memorySearch.*` - `memory.backend` - `memory.citations` - `memory.qmd.*` - `plugins.entries.memory-core.config.dreaming` -- Увімкнені plugins Claude bundle також можуть додавати вбудовані значення Pi за замовчуванням із `settings.json`; OpenClaw застосовує їх як санітизовані налаштування агента, а не як сирі патчі конфігурації OpenClaw. -- `plugins.slots.memory`: вибрати ідентифікатор активного memory plugin або `"none"`, щоб вимкнути memory plugins. -- `plugins.slots.contextEngine`: вибрати ідентифікатор активного context engine plugin; за замовчуванням `"legacy"`, якщо ви не встановите й не виберете інший engine. +- Увімкнені 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. Див. [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: true` лише тоді, коли ви свідомо довіряєте навігації браузера приватною мережею. -- У суворому режимі віддалені кінцеві точки профілів CDP (`profiles.*.cdpUrl`) підлягають тому самому блокуванню приватної мережі під час перевірок доступності/виявлення. -- `ssrfPolicy.allowPrivateNetwork` лишається підтримуваним як застарілий псевдонім. +- `ssrfPolicy.dangerouslyAllowPrivateNetwork` вимкнено, коли не задано, тому навігація браузера за замовчуванням залишається суворою. +- Установлюйте `ssrfPolicy.dangerouslyAllowPrivateNetwork: true` лише тоді, коли ви навмисно довіряєте навігації браузера приватною мережею. +- У суворому режимі віддалені кінцеві точки профілів 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), - коли ваш провайдер надає прямий URL WebSocket DevTools. -- `remoteCdpTimeoutMs` і `remoteCdpHandshakeTimeoutMs` застосовуються до віддаленої та - `attachOnly` доступності CDP, а також до запитів відкриття вкладок. Керовані профілі - local loopback зберігають локальні типові значення CDP. -- Якщо зовні керований сервіс CDP доступний через loopback, установіть для цього - профілю `attachOnly: true`; інакше OpenClaw вважатиме порт loopback - локальним керованим профілем браузера й може повідомляти про помилки володіння локальним портом. -- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть підключатися на + коли ваш провайдер надає вам прямий DevTools WebSocket URL. +- `remoteCdpTimeoutMs` і `remoteCdpHandshakeTimeoutMs` застосовуються до досяжності віддаленого та + `attachOnly` CDP, а також до запитів відкриття вкладок. Керовані профілі loopback + зберігають локальні типові значення CDP. +- Якщо зовнішньо керована служба CDP досяжна через loopback, установіть для цього + профілю `attachOnly: true`; інакше OpenClaw розглядає порт loopback як + локальний керований профіль браузера й може повідомляти про помилки володіння локальним портом. +- Профілі `existing-session` використовують Chrome MCP замість CDP і можуть приєднуватися на вибраному хості або через підключений вузол браузера. -- Профілі `existing-session` можуть задавати `userDataDir`, щоб націлитися на конкретний - профіль браузера на основі Chromium, як-от Brave або Edge. +- Профілі `existing-session` можуть задавати `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` для + після запуску процесу та `browser.localCdpReadyTimeoutMs` для готовності CDP websocket після запуску. Збільшуйте їх на повільніших хостах, де Chrome - успішно стартує, але перевірки готовності випереджають запуск. Обидва значення мають бути + запускається успішно, але перевірки готовності випереджають запуск. Обидва значення мають бути додатними цілими числами до `120000` мс; недійсні значення конфігурації відхиляються. -- Порядок автовиявлення: типовий браузер, якщо він на основі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. +- Порядок автовиявлення: браузер за замовчуванням, якщо він на основі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary. - `browser.executablePath` і `browser.profiles..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 інтерфейсу нативного застосунку (відтінок бульбашки Talk Mode тощо). -- `assistant`: перевизначення ідентичності Control UI. За замовчуванням використовується ідентичність активного агента. +- `seamColor`: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо). +- `assistant`: перевизначення ідентичності Control UI. Повертається до ідентичності активного агента. --- @@ -413,66 +413,66 @@ bundled каналів (автентифікація, контроль дост } ``` - + - `mode`: `local` (запустити Gateway) або `remote` (підключитися до віддаленого Gateway). Gateway відмовляється запускатися, якщо значення не `local`. -- `port`: один мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`. +- `port`: єдиний мультиплексований порт для WS + HTTP. Пріоритет: `--port` > `OPENCLAW_GATEWAY_PORT` > `gateway.port` > `18789`. - `bind`: `auto`, `loopback` (типово), `lan` (`0.0.0.0`), `tailnet` (лише IP Tailscale) або `custom`. - **Застарілі псевдоніми прив’язки**: використовуйте значення режиму прив’язки в `gateway.bind` (`auto`, `loopback`, `lan`, `tailnet`, `custom`), а не псевдоніми хоста (`0.0.0.0`, `127.0.0.1`, `localhost`, `::`, `::1`). -- **Примітка щодо Docker**: типова прив’язка `loopback` слухає `127.0.0.1` усередині контейнера. За мережі Docker bridge (`-p 18789:18789`) трафік надходить на `eth0`, тому gateway недосяжний. Використовуйте `--network host` або задайте `bind: "lan"` (або `bind: "custom"` з `customBindHost: "0.0.0.0"`), щоб слухати на всіх інтерфейсах. -- **Автентифікація**: обов’язкова за замовчуванням. Прив’язки не через loopback вимагають автентифікації gateway. На практиці це означає спільний токен/пароль або зворотний проксі з підтримкою ідентичності з `gateway.auth.mode: "trusted-proxy"`. Майстер початкового налаштування типово генерує токен. -- Якщо налаштовано і `gateway.auth.token`, і `gateway.auth.password` (включно із SecretRefs), явно задайте `gateway.auth.mode` як `token` або `password`. Запуск і потоки встановлення/відновлення сервісу завершуються помилкою, коли налаштовано обидва значення, а режим не задано. +- **Примітка щодо 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 можуть задовольняти автентифікацію Control UI/WebSocket (перевірено через `tailscale whois`). Кінцеві точки HTTP API **не** використовують цю автентифікацію за заголовком Tailscale; натомість вони дотримуються звичайного режиму HTTP-автентифікації gateway. Цей потік без токена припускає, що хост gateway є довіреним. Типово `true`, коли `tailscale.mode = "serve"`. -- `gateway.auth.rateLimit`: необов’язковий обмежувач невдалих спроб автентифікації. Застосовується для кожної IP-адреси клієнта та кожної області автентифікації (shared-secret і device-token відстежуються незалежно). Заблоковані спроби повертають `429` + `Retry-After`. - - На асинхронному шляху Tailscale Serve Control UI невдалі спроби для того самого `{scope, clientIp}` серіалізуються перед записом помилки. Тому паралельні помилкові спроби від того самого клієнта можуть увімкнути обмежувач уже на другому запиті, замість того щоб обидві пройшли як звичайні невідповідності. - - `gateway.auth.rateLimit.exemptLoopback` типово дорівнює `true`; задайте `false`, коли ви навмисно хочете обмежувати частоту також для трафіку localhost (для тестових налаштувань або суворих розгортань із проксі). -- Спроби WS-автентифікації з браузерного origin завжди обмежуються за частотою з вимкненим винятком для loopback (додатковий захист від браузерного перебору localhost). -- На loopback ці блокування за браузерним origin ізольовані для кожного нормалізованого значення `Origin`, тому повторні помилки з одного origin localhost не блокують автоматично інший origin. -- `tailscale.mode`: `serve` (лише tailnet, прив’язка loopback) або `funnel` (публічно, потребує автентифікації). -- `controlUi.allowedOrigins`: явний список дозволених браузерних origin для підключень Gateway WebSocket. Потрібний, коли очікуються браузерні клієнти з origin не через loopback. -- `controlUi.dangerouslyAllowHostHeaderOriginFallback`: небезпечний режим, який вмикає резервне визначення origin із заголовка Host для розгортань, що навмисно покладаються на політику origin із заголовка Host. +- `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. - `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`: тимчасові перевизначення через змінні середовища для наведеної вище конфігурації ретранслятора. +- `OPENCLAW_APNS_RELAY_ALLOW_HTTP=true`: аварійний варіант лише для розробки для HTTP-URL ретранслятора через loopback. Виробничі URL ретранслятора мають залишатися на HTTPS. +- `gateway.handshakeTimeoutMs`: тайм-аут попереднього до автентифікації рукостискання Gateway WebSocket у мілісекундах. Типово: `15000`. `OPENCLAW_HANDSHAKE_TIMEOUT_MS` має пріоритет, якщо задано. Збільшуйте це значення на завантажених або малопотужних хостах, де локальні клієнти можуть підключатися, поки прогрів запуску ще завершується. +- `gateway.channelHealthCheckMinutes`: інтервал монітора стану каналу в хвилинах. Задайте `0`, щоб глобально вимкнути перезапуски монітора стану. Типово: `5`. - `gateway.channelStaleEventThresholdMinutes`: поріг застарілого сокета в хвилинах. Тримайте це значення більшим або рівним `gateway.channelHealthCheckMinutes`. Типово: `30`. -- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітором стану для каналу/облікового запису за рухому годину. Типово: `10`. -- `channels..healthMonitor.enabled`: вимкнення перезапусків монітором стану для окремого каналу зі збереженням увімкненого глобального монітора. -- `channels..accounts..healthMonitor.enabled`: перевизначення для окремого облікового запису в багатоканальних облікових записах. Коли задано, має пріоритет над перевизначенням на рівні каналу. -- Локальні шляхи виклику gateway можуть використовувати `gateway.remote.*` як резервний варіант лише тоді, коли `gateway.auth.*` не задано. +- `gateway.channelMaxRestartsPerHour`: максимальна кількість перезапусків монітора стану на канал/обліковий запис за ковзну годину. Типово: `10`. +- `channels..healthMonitor.enabled`: вимкнення перезапусків монітора стану для окремого каналу за збереження ввімкненого глобального монітора. +- `channels..accounts..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 для автоматичного схвалення першого спарювання пристрою вузла без запитаних областей доступу. Вимкнено, якщо не задано. Це не схвалює автоматично спарювання оператора/браузера/Control UI/WebChat і не схвалює автоматично оновлення ролі, області доступу, метаданих або публічного ключа. -- `gateway.nodes.allowCommands` / `gateway.nodes.denyCommands`: глобальне формування дозволів/заборон для оголошених команд вузла після спарювання та оцінки списку дозволів платформи. Використовуйте `allowCommands`, щоб увімкнути небезпечні команди вузла, як-от `camera.snap`, `camera.clip` і `screen.record`; `denyCommands` вилучає команду, навіть якщо типовий дозвіл платформи або явний дозвіл інакше включав би її. Після зміни вузлом свого оголошеного списку команд відхиліть і повторно схваліть спарювання цього пристрою, щоб gateway зберіг оновлений знімок команд. -- `gateway.tools.deny`: додаткові назви інструментів, заблоковані для HTTP `POST /tools/invoke` (розширює типовий список заборони). -- `gateway.tools.allow`: вилучає назви інструментів із типового HTTP-списку заборони. +- `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. ### 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. -- Необов’язковий заголовок посилення захисту відповіді: - - `gateway.http.securityHeaders.strictTransportSecurity` (задавайте лише для HTTPS-origin, які ви контролюєте; див. [Автентифікація через довірений проксі](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts)) + Порожні списки дозволів вважаються незаданими; використовуйте `gateway.http.endpoints.responses.files.allowUrl=false` і/або `gateway.http.endpoints.responses.images.allowUrl=false`, щоб вимкнути отримання URL. +- Необов’язковий заголовок посиленого захисту відповіді: + - `gateway.http.securityHeaders.strictTransportSecurity` (задавайте лише для HTTPS-походжень, які ви контролюєте; див. [автентифікацію довіреного проксі](/uk/gateway/trusted-proxy-auth#tls-termination-and-hsts)) ### Ізоляція кількох екземплярів -Запустіть кілька gateway на одному хості з унікальними портами й каталогами стану: +Запускайте кілька Gateway на одному хості з унікальними портами й каталогами стану: ```bash OPENCLAW_CONFIG_PATH=~/.openclaw/a.json \ @@ -482,7 +482,7 @@ openclaw gateway --port 19001 Зручні прапорці: `--dev` (використовує `~/.openclaw-dev` + порт `19001`), `--profile ` (використовує `~/.openclaw-`). -Див. [Кілька Gateway](/uk/gateway/multiple-gateways). +Див. [кілька Gateway](/uk/gateway/multiple-gateways). ### `gateway.tls` @@ -500,11 +500,11 @@ openclaw gateway --port 19001 } ``` -- `enabled`: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типово: `false`). -- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, коли явні файли не налаштовано; лише для локального використання/розробки. -- `certPath`: шлях у файловій системі до файлу TLS-сертифіката. -- `keyPath`: шлях у файловій системі до файлу приватного TLS-ключа; обмежте дозволи. -- `caPath`: необов’язковий шлях до пакета CA для перевірки клієнтів або користувацьких ланцюгів довіри. +- `enabled`: вмикає завершення TLS на слухачі Gateway (HTTPS/WSS) (типово: `false`). +- `autoGenerate`: автоматично генерує локальну самопідписану пару сертифікат/ключ, коли явні файли не налаштовані; лише для локального використання/розробки. +- `certPath`: шлях файлової системи до файла сертифіката TLS. +- `keyPath`: шлях файлової системи до файла приватного ключа TLS; обмежте права доступу. +- `caPath`: необов’язковий шлях до пакета CA для перевірки клієнтів або користувацьких ланцюжків довіри. ### `gateway.reload` @@ -514,19 +514,19 @@ openclaw gateway --port 19001 reload: { mode: "hybrid", // off | restart | hot | hybrid debounceMs: 500, - deferralTimeoutMs: 0, + deferralTimeoutMs: 300000, }, }, } ``` - `mode`: керує тим, як зміни конфігурації застосовуються під час виконання. - - `"off"`: ігнорувати живі зміни; зміни потребують явного перезапуску. - - `"restart"`: завжди перезапускати процес gateway під час зміни конфігурації. - - `"hot"`: застосовувати зміни в процесі без перезапуску. - - `"hybrid"` (типово): спочатку спробувати гаряче перезавантаження; за потреби перейти до перезапуску. -- `debounceMs`: вікно debounce у мс перед застосуванням змін конфігурації (невід’ємне ціле число). -- `deferralTimeoutMs`: необов’язковий максимальний час у мс очікування поточних операцій перед примусовим перезапуском. Пропустіть або задайте `0`, щоб чекати безстроково й періодично журналювати попередження про операції, що все ще очікують. + - `"off"`: ігнорувати живі редагування; зміни потребують явного перезапуску. + - `"restart"`: завжди перезапускати процес Gateway під час зміни конфігурації. + - `"hot"`: застосовувати зміни в межах процесу без перезапуску. + - `"hybrid"` (типово): спершу спробувати гаряче перезавантаження; за потреби перейти до перезапуску. +- `debounceMs`: вікно усунення брязкоту в мс перед застосуванням змін конфігурації (невід’ємне ціле число). +- `deferralTimeoutMs`: необов’язковий максимальний час у мс очікування операцій у процесі перед примусовим перезапуском. Опустіть, щоб використати типове обмежене очікування (`300000`); задайте `0`, щоб чекати безстроково й періодично журналювати попередження про все ще незавершені операції. --- @@ -566,13 +566,13 @@ openclaw gateway --port 19001 Автентифікація: `Authorization: Bearer ` або `x-openclaw-token: `. Токени хуків у рядку запиту відхиляються. -Примітки щодо перевірки та безпеки: +Нотатки щодо валідації та безпеки: -- `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:"]`). -- Якщо мапінг або пресет використовує шаблонний `sessionKey`, задайте `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі мапінгу не потребують цього явного ввімкнення. +- Якщо зіставлення або пресет використовує шаблонний `sessionKey`, задайте `hooks.allowedSessionKeyPrefixes` і `hooks.allowRequestSessionKey=true`. Статичні ключі зіставлення не потребують цього явного ввімкнення. **Кінцеві точки:** @@ -580,30 +580,30 @@ openclaw gateway --port 19001 - `POST /hooks/agent` → `{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }` - `sessionKey` з тіла запиту приймається лише коли `hooks.allowRequestSessionKey=true` (типово: `false`). - `POST /hooks/` → визначається через `hooks.mappings` - - Значення `sessionKey` мапінгу, згенеровані з шаблону, вважаються наданими ззовні й також потребують `hooks.allowRequestSessionKey=true`. + - Значення `sessionKey` зіставлення, відтворені з шаблону, вважаються наданими ззовні й також потребують `hooks.allowRequestSessionKey=true`. - `match.path` зіставляє підшлях після `/hooks` (наприклад `/hooks/gmail` → `gmail`). -- `match.source` зіставляє поле тіла запиту для загальних шляхів. -- Шаблони на кшталт `{{messages[0].subject}}` читають дані з тіла запиту. -- `transform` може вказувати на JS/TS-модуль, що повертає дію хука. - - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та вихід за межі каталогу відхиляються). -- `agentId` маршрутизує до конкретного агента; невідомі ідентифікатори повертаються до типового. +- `match.source` зіставляє поле payload для загальних шляхів. +- Шаблони на кшталт `{{messages[0].subject}}` читають дані з payload. +- `transform` може вказувати на модуль JS/TS, який повертає дію hook. + - `transform.module` має бути відносним шляхом і залишатися в межах `hooks.transformsDir` (абсолютні шляхи та обхід каталогів відхиляються). +- `agentId` спрямовує до конкретного агента; невідомі ID повертаються до типового. - `allowedAgentIds`: обмежує явну маршрутизацію (`*` або пропущено = дозволити всі, `[]` = заборонити всі). -- `defaultSessionKey`: необов'язковий фіксований ключ сесії для запусків агента хуком без явного `sessionKey`. -- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і керованим шаблонами ключам сесій мапінгу задавати `sessionKey` (типово: `false`). -- `allowedSessionKeyPrefixes`: необов'язковий список дозволених префіксів для явних значень `sessionKey` (запит + мапінг), наприклад `["hook:"]`. Він стає обов'язковим, коли будь-який мапінг або пресет використовує шаблонний `sessionKey`. +- `defaultSessionKey`: необов’язковий фіксований ключ сесії для запусків hook-агента без явного `sessionKey`. +- `allowRequestSessionKey`: дозволяє викликачам `/hooks/agent` і керованим шаблонами ключам сесій зіставлення задавати `sessionKey` (типово: `false`). +- `allowedSessionKeyPrefixes`: необов’язковий список дозволених префіксів для явних значень `sessionKey` (запит + зіставлення), наприклад `["hook:"]`. Він стає обов’язковим, коли будь-яке зіставлення або пресет використовує шаблонний `sessionKey`. - `deliver: true` надсилає фінальну відповідь у канал; `channel` типово має значення `last`. -- `model` перевизначає LLM для цього запуску хука (має бути дозволено, якщо задано каталог моделей). +- `model` перевизначає LLM для цього запуску hook (має бути дозволено, якщо каталог моделей задано). ### Інтеграція 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 { @@ -631,7 +631,7 @@ openclaw gateway --port 19001 --- -## Хост Canvas +## Хост canvas ```json5 { @@ -643,18 +643,18 @@ openclaw gateway --port 19001 } ``` -- Надає доступ до редагованих агентом HTML/CSS/JS і A2UI через HTTP під портом Gateway: +- Обслуговує редаговані агентом HTML/CSS/JS та A2UI через HTTP на порту Gateway: - `http://:/__openclaw__/canvas/` - `http://:/__openclaw__/a2ui/` - Лише локально: залиште `gateway.bind: "loopback"` (типово). -- Прив'язки не до loopback: маршрути canvas потребують автентифікації Gateway (токен/пароль/довірений проксі), як і інші HTTP-поверхні Gateway. -- Node WebViews зазвичай не надсилають заголовки автентифікації; після створення пари з вузлом і підключення Gateway оголошує URL можливостей, обмежені вузлом, для доступу до canvas/A2UI. -- URL можливостей прив'язані до активної WS-сесії вузла й швидко спливають. Резервний варіант на основі IP не використовується. -- Вставляє клієнт live-reload в HTML, що надається. -- Автоматично створює стартовий `index.html`, коли каталог порожній. -- Також надає A2UI за адресою `/__openclaw__/a2ui/`. +- Прив’язки не до loopback: маршрути canvas потребують автентифікації Gateway (токен/пароль/довірений проксі), як і інші HTTP-поверхні Gateway. +- Node WebViews зазвичай не надсилають заголовки автентифікації; після спарення та підключення node Gateway оголошує URL можливостей із областю дії node для доступу до canvas/A2UI. +- URL можливостей прив’язані до активної WS-сесії node і швидко спливають. Резервний варіант на основі IP не використовується. +- Вставляє клієнт live-reload в обслуговуваний HTML. +- Автоматично створює початковий `index.html`, коли порожньо. +- Також обслуговує A2UI за `/__openclaw__/a2ui/`. - Зміни потребують перезапуску gateway. -- Вимикайте live reload для великих каталогів або помилок `EMFILE`. +- Вимкніть live reload для великих каталогів або помилок `EMFILE`. --- @@ -672,11 +672,11 @@ openclaw gateway --port 19001 } ``` -- `minimal` (типово): не включати `cliPath` + `sshPort` у TXT-записи. -- `full`: включати `cliPath` + `sshPort`. -- Ім'я хоста типово дорівнює системному імені хоста, якщо воно є коректною DNS-міткою, інакше використовується `openclaw`. Перевизначте через `OPENCLAW_MDNS_HOSTNAME`. +- `minimal` (типово): пропускає `cliPath` + `sshPort` у TXT-записах. +- `full`: включає `cliPath` + `sshPort`. +- Ім’я хоста типово дорівнює системному імені хоста, коли воно є дійсною DNS-міткою, і повертається до `openclaw` інакше. Перевизначте через `OPENCLAW_MDNS_HOSTNAME`. -### Широка область (DNS-SD) +### Глобальна область (DNS-SD) ```json5 { @@ -694,7 +694,7 @@ openclaw gateway --port 19001 ## Середовище -### `env` (вбудовані env vars) +### `env` (вбудовані змінні env) ```json5 { @@ -711,12 +711,12 @@ openclaw gateway --port 19001 } ``` -- Вбудовані змінні середовища застосовуються лише якщо в середовищі процесу немає ключа. -- Файли `.env`: `.env` у CWD + `~/.openclaw/.env` (жоден не перевизначає наявні змінні). +- Вбудовані змінні середовища застосовуються лише якщо в середовищі процесу відсутній ключ. +- Файли `.env`: CWD `.env` + `~/.openclaw/.env` (жоден не перевизначає наявні змінні). - `shellEnv`: імпортує відсутні очікувані ключі з профілю вашої login shell. - Повний порядок пріоритету див. у [Середовище](/uk/help/environment). -### Підставлення змінних середовища +### Підстановка змінних середовища Посилайтеся на змінні середовища в будь-якому рядку конфігурації через `${VAR_NAME}`: @@ -728,9 +728,9 @@ openclaw gateway --port 19001 } ``` -- Збігаються лише імена у верхньому регістрі: `[A-Z_][A-Z0-9_]*`. +- Збігаються лише назви у верхньому регістрі: `[A-Z_][A-Z0-9_]*`. - Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації. -- Екрануйте через `$${VAR}` для літерального `${VAR}`. +- Екрануйте через `$${VAR}` для буквального `${VAR}`. - Працює з `$include`. --- @@ -749,19 +749,19 @@ openclaw gateway --port 19001 Валідація: -- шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$` -- шаблон id для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$` +- Шаблон `provider`: `^[a-z][a-z0-9_-]{0,63}$` +- Шаблон id для `source: "env"`: `^[A-Z][A-Z0-9_]{0,127}$` - id для `source: "file"`: абсолютний JSON pointer (наприклад `"/providers/openai/apiKey"`) -- шаблон id для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$` -- id для `source: "exec"` не повинні містити розділені скісними рисками сегменти шляху `.` або `..` (наприклад `a/../b` відхиляється) +- Шаблон id для `source: "exec"`: `^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$` +- id для `source: "exec"` не мають містити розділені скісними рисками сегменти шляху `.` або `..` (наприклад `a/../b` відхиляється) ### Підтримувана поверхня облікових даних - Канонічна матриця: [Поверхня облікових даних SecretRef](/uk/reference/secretref-credential-surface) -- `secrets apply` спрямовується на підтримувані шляхи облікових даних `openclaw.json`. -- Посилання `auth-profiles.json` включені до runtime-розв’язання та покриття аудиту. +- `secrets apply` націлюється на підтримувані шляхи облікових даних `openclaw.json`. +- Посилання `auth-profiles.json` включені до runtime-вирішення й audit-покриття. -### Конфігурація постачальників секретів +### Конфігурація провайдерів секретів ```json5 { @@ -791,18 +791,18 @@ openclaw gateway --port 19001 Примітки: -- Постачальник `file` підтримує `mode: "json"` і `mode: "singleValue"` (`id` має бути `"value"` у режимі singleValue). -- Шляхи постачальників file та exec завершуються відмовою, коли перевірка Windows ACL недоступна. Встановлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити. -- Постачальник `exec` вимагає абсолютний шлях `command` і використовує протокольні payload-и через stdin/stdout. -- За замовчуванням шляхи команд через symlink відхиляються. Встановіть `allowSymlinkCommand: true`, щоб дозволити шляхи symlink із валідацією розв’язаного цільового шляху. +- Провайдер `file` підтримує `mode: "json"` і `mode: "singleValue"` (`id` має бути `"value"` у режимі singleValue). +- Шляхи провайдерів file і exec закрито відмовляють, коли перевірка ACL Windows недоступна. Встановлюйте `allowInsecurePath: true` лише для довірених шляхів, які неможливо перевірити. +- Провайдер `exec` вимагає абсолютний шлях `command` і використовує protocol payloads через stdin/stdout. +- За замовчуванням шляхи команд-симлінків відхиляються. Встановіть `allowSymlinkCommand: true`, щоб дозволити шляхи симлінків із валідацією розв’язаного цільового шляху. - Якщо налаштовано `trustedDirs`, перевірка довіреного каталогу застосовується до розв’язаного цільового шляху. -- Дочірнє середовище `exec` за замовчуванням мінімальне; явно передавайте потрібні змінні через `passEnv`. -- Посилання на секрети розв’язуються під час активації у знімок у пам’яті, після чого шляхи запитів читають лише цей знімок. -- Під час активації застосовується фільтрація активної поверхні: нерозв’язані посилання на ввімкнених поверхнях спричиняють збій запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою. +- Дочірнє середовище `exec` за замовчуванням мінімальне; передавайте потрібні змінні явно через `passEnv`. +- Посилання на секрети під час активації розв’язуються в in-memory snapshot, після чого шляхи запитів читають лише snapshot. +- Фільтрація активної поверхні застосовується під час активації: нерозв’язані посилання на ввімкнених поверхнях спричиняють збій startup/reload, тоді як неактивні поверхні пропускаються з діагностикою. --- -## Сховище автентифікації +## Сховище auth ```json5 { @@ -821,13 +821,13 @@ openclaw gateway --port 19001 ``` - Профілі для кожного агента зберігаються в `/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..mode = "oauth"`) не підтримують облікові дані auth-профілів на основі SecretRef. -- Статичні runtime-облікові дані надходять із розв’язаних знімків у пам’яті; застарілі статичні записи `auth.json` очищаються після виявлення. -- Застарілі OAuth-імпорти беруться з `~/.openclaw/credentials/oauth.json`. +- `auth-profiles.json` підтримує посилання рівня значень (`keyRef` для `api_key`, `tokenRef` для `token`) для режимів статичних облікових даних. +- Застарілі пласкі мапи `auth-profiles.json`, як-от `{ "provider": { "apiKey": "..." } }`, не є runtime-форматом; `openclaw doctor --fix` переписує їх у канонічні профілі API-key `provider:default` із резервною копією `.legacy-flat.*.bak`. +- Профілі режиму OAuth (`auth.profiles..mode = "oauth"`) не підтримують облікові дані auth-profile на основі SecretRef. +- Статичні runtime-облікові дані надходять з in-memory resolved snapshots; застарілі статичні записи `auth.json` очищуються після виявлення. +- Застарілі OAuth імпортуються з `~/.openclaw/credentials/oauth.json`. - Див. [OAuth](/uk/concepts/oauth). -- Runtime-поведінка секретів і інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets). +- Runtime-поведінка секретів та інструменти `audit/configure/apply`: [Керування секретами](/uk/gateway/secrets). ### `auth.cooldowns` @@ -849,24 +849,24 @@ openclaw gateway --port 19001 } ``` -- `billingBackoffHours`: базовий backoff у годинах, коли профіль дає збій через справжні - помилки білінгу/недостатнього кредиту (типово: `5`). Явний текст про білінг може - все одно потрапити сюди навіть у відповідях `401`/`403`, але специфічні для постачальника - text matcher-и залишаються обмеженими постачальником, якому вони належать (наприклад OpenRouter - `Key limit exceeded`). Повторювані повідомлення HTTP `402` про вікно використання або - ліміт витрат організації/робочого простору натомість залишаються в шляху `rate_limit`. -- `billingBackoffHoursByProvider`: необов’язкові перевизначення годин billing backoff для кожного постачальника. -- `billingMaxHours`: верхня межа в годинах для експоненційного зростання billing backoff (типово: `24`). -- `authPermanentBackoffMinutes`: базовий backoff у хвилинах для високодостовірних збоїв `auth_permanent` (типово: `10`). -- `authPermanentMaxMinutes`: верхня межа в хвилинах для зростання backoff `auth_permanent` (типово: `60`). -- `failureWindowHours`: ковзне вікно в годинах, що використовується для лічильників backoff (типово: `24`). -- `overloadedProfileRotations`: максимальна кількість ротацій auth-профілів того самого постачальника для помилок перевантаження перед перемиканням на fallback моделі (типово: `1`). Сюди потрапляють форми зайнятості постачальника, як-от `ModelNotReadyException`. -- `overloadedBackoffMs`: фіксована затримка перед повторною спробою ротації перевантаженого постачальника/профілю (типово: `0`). -- `rateLimitedProfileRotations`: максимальна кількість ротацій auth-профілів того самого постачальника для помилок обмеження швидкості перед перемиканням на fallback моделі (типово: `1`). Цей bucket обмеження швидкості включає текст, сформований постачальниками, як-от `Too many concurrent requests`, `ThrottlingException`, `concurrency limit reached`, `workers_ai ... quota limit exceeded` і `resource exhausted`. +- `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`. --- -## Журналювання +## Логування ```json5 { @@ -881,11 +881,11 @@ openclaw gateway --port 19001 } ``` -- Типовий файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`. +- Стандартний файл журналу: `/tmp/openclaw/openclaw-YYYY-MM-DD.log`. - Задайте `logging.file` для стабільного шляху. -- `consoleLevel` підвищується до `debug`, коли вказано `--verbose`. -- `maxFileBytes`: максимальний розмір активного файлу журналу в байтах перед ротацією (додатне ціле число; типово: `104857600` = 100 MB). OpenClaw зберігає до п’яти нумерованих архівів поруч з активним файлом. -- `redactSensitive` / `redactPatterns`: евристичне маскування для виводу в консоль, файлових журналів, записів журналу OTLP і збереженого тексту транскрипту сеансу. `redactSensitive: "off"` вимикає лише цю загальну політику журналів/транскриптів; UI, інструменти та діагностичні поверхні безпеки все одно редагують секрети перед передаванням. +- `consoleLevel` підвищується до `debug`, коли використано `--verbose`. +- `maxFileBytes`: максимальний розмір активного файлу журналу в байтах перед ротацією (додатне ціле число; стандартно: `104857600` = 100 МБ). OpenClaw зберігає до п’яти нумерованих архівів поруч з активним файлом. +- `redactSensitive` / `redactPatterns`: маскування за принципом найкращих зусиль для виводу в консоль, файлових журналів, записів журналу OTLP і збереженого тексту стенограми сесії. `redactSensitive: "off"` вимикає лише цю загальну політику журналів/стенограм; поверхні безпеки UI/інструментів/діагностики все одно редагують секрети перед надсиланням. --- @@ -933,25 +933,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. -- `otel.serviceName`: назва служби для атрибутів ресурсу. +- `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. +- `otel.serviceName`: назва сервісу для атрибутів ресурсу. - `otel.traces` / `otel.metrics` / `otel.logs`: увімкнути експорт трас, метрик або журналів. - `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, що належить 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.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`). --- @@ -974,11 +974,11 @@ openclaw gateway --port 19001 ``` - `channel`: канал випусків для встановлень npm/git — `"stable"`, `"beta"` або `"dev"`. -- `checkOnStart`: перевіряти оновлення npm під час запуску Gateway (типово: `true`). -- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (типово: `false`). -- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням стабільного каналу (типово: `6`; максимум: `168`). -- `auto.stableJitterHours`: додаткове вікно розподілу розгортання стабільного каналу в годинах (типово: `12`; максимум: `168`). -- `auto.betaCheckIntervalHours`: як часто виконуються перевірки бета-каналу в годинах (типово: `1`; максимум: `24`). +- `checkOnStart`: перевіряти оновлення npm під час запуску Gateway (стандартно: `true`). +- `auto.enabled`: увімкнути фонове автооновлення для пакетних встановлень (стандартно: `false`). +- `auto.stableDelayHours`: мінімальна затримка в годинах перед автоматичним застосуванням у stable-каналі (стандартно: `6`; максимум: `168`). +- `auto.stableJitterHours`: додаткове вікно розподілу розгортання stable-каналу в годинах (стандартно: `12`; максимум: `168`). +- `auto.betaCheckIntervalHours`: як часто виконуються перевірки beta-каналу, у годинах (стандартно: `1`; максимум: `24`). --- @@ -1011,23 +1011,23 @@ openclaw gateway --port 19001 } ``` -- `enabled`: глобальний функціональний шлюз ACP (типово: `true`; задайте `false`, щоб приховати диспетчеризацію ACP і можливості створення). -- `dispatch.enabled`: незалежний шлюз для диспетчеризації кроків сеансу ACP (типово: `true`). Задайте `false`, щоб залишити команди ACP доступними, але заблокувати виконання. -- `backend`: типовий ідентифікатор бекенда середовища виконання ACP (має відповідати зареєстрованому runtime Plugin ACP). - Якщо задано `plugins.allow`, додайте ідентифікатор бекенд-Plugin (наприклад, `acpx`), інакше вбудований типовий Plugin не завантажиться. -- `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. +- `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. --- @@ -1044,7 +1044,7 @@ openclaw gateway --port 19001 ``` - `cli.banner.taglineMode` керує стилем слогана банера: - - `"random"` (типово): змінні смішні/сезонні слогани. + - `"random"` (стандартно): ротаційні смішні/сезонні слогани. - `"default"`: фіксований нейтральний слоган (`All your chats, one OpenClaw.`). - `"off"`: без тексту слогана (заголовок/версія банера все одно показуються). - Щоб приховати весь банер (а не лише слогани), задайте змінну середовища `OPENCLAW_HIDE_BANNER=1`. @@ -1053,7 +1053,7 @@ openclaw gateway --port 19001 ## Майстер -Метадані, які записуються керованими потоками налаштування CLI (`onboard`, `configure`, `doctor`): +Метадані, записані керованими потоками налаштування CLI (`onboard`, `configure`, `doctor`): ```json5 { @@ -1071,15 +1071,15 @@ openclaw gateway --port 19001 ## Ідентичність -Див. поля ідентичності `agents.list` у розділі [Типові значення агента](/uk/gateway/config-agents#agent-defaults). +Див. поля ідентичності `agents.list` у [стандартних параметрах агента](/uk/gateway/config-agents#agent-defaults). --- -## Міст (застаріле, видалено) +## Bridge (застаріле, вилучено) -Поточні збірки більше не містять TCP-міст. Nodes підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (перевірка не проходить, доки їх не буде видалено; `openclaw doctor --fix` може прибрати невідомі ключі). +Поточні збірки більше не містять TCP bridge. Nodes підключаються через WebSocket Gateway. Ключі `bridge.*` більше не є частиною схеми конфігурації (перевірка не проходить, доки їх не вилучено; `openclaw doctor --fix` може видалити невідомі ключі). - + ```json { @@ -1117,11 +1117,11 @@ openclaw gateway --port 19001 } ``` -- `sessionRetention`: як довго зберігати завершені ізольовані сеанси запусків Cron перед обрізанням із `sessions.json`. Також керує очищенням архівованих видалених транскриптів Cron. Типово: `24h`; задайте `false`, щоб вимкнути. -- `runLog.maxBytes`: максимальний розмір кожного файлу журналу запуску (`cron/runs/.jsonl`) перед обрізанням. Типово: `2_000_000` байтів. -- `runLog.keepLines`: найновіші рядки, що зберігаються, коли запускається обрізання журналу запуску. Типово: `2000`. -- `webhookToken`: bearer-токен, що використовується для доставки POST Cron Webhook (`delivery.mode = "webhook"`); якщо пропущено, заголовок автентифікації не надсилається. -- `webhook`: застарілий резервний URL Webhook (http/https), який використовується лише для збережених завдань, що все ще мають `notify: true`. +- `sessionRetention`: як довго зберігати завершені ізольовані сесії запуску cron перед обрізанням із `sessions.json`. Також керує очищенням архівованих видалених стенограм cron. Стандартно: `24h`; задайте `false`, щоб вимкнути. +- `runLog.maxBytes`: максимальний розмір кожного файлу журналу запуску (`cron/runs/.jsonl`) перед обрізанням. Стандартно: `2_000_000` байтів. +- `runLog.keepLines`: найновіші рядки, які зберігаються, коли спрацьовує обрізання журналу запуску. Стандартно: `2000`. +- `webhookToken`: bearer token, що використовується для доставки cron webhook POST (`delivery.mode = "webhook"`); якщо пропущено, заголовок авторизації не надсилається. +- `webhook`: застарілий legacy fallback URL webhook (http/https), що використовується лише для збережених завдань, які все ще мають `notify: true`. ### `cron.retry` @@ -1137,11 +1137,11 @@ openclaw gateway --port 19001 } ``` -- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань у разі тимчасових помилок (типово: `3`; діапазон: `0`–`10`). -- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (типово: `[30000, 60000, 300000]`; 1–10 записів). +- `maxAttempts`: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (стандартно: `3`; діапазон: `0`–`10`). +- `backoffMs`: масив затримок backoff у мс для кожної повторної спроби (стандартно: `[30000, 60000, 300000]`; 1–10 записів). - `retryOn`: типи помилок, що запускають повторні спроби — `"rate_limit"`, `"overloaded"`, `"network"`, `"timeout"`, `"server_error"`. Пропустіть, щоб повторювати всі тимчасові типи. -Застосовується лише до одноразових завдань Cron. Повторювані завдання використовують окрему обробку збоїв. +Застосовується лише до одноразових завдань cron. Повторювані завдання використовують окрему обробку збоїв. ### `cron.failureAlert` @@ -1160,12 +1160,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"` публікує до налаштованого webhook. +- `accountId`: необов’язковий ідентифікатор акаунта або каналу для обмеження області доставки сповіщень. ### `cron.failureDestination` @@ -1182,22 +1182,22 @@ openclaw gateway --port 19001 } ``` -- Типове призначення для сповіщень про збої Cron в усіх завданнях. +- Типове призначення для сповіщень про збої 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`: | Змінна | Опис | | ------------------ | ------------------------------------------------- | @@ -1213,8 +1213,8 @@ openclaw gateway --port 19001 | `{{MediaPath}}` | Локальний шлях до медіа | | `{{MediaType}}` | Тип медіа (зображення/аудіо/документ/…) | | `{{Transcript}}` | Транскрипт аудіо | -| `{{Prompt}}` | Вирішений медіа-промпт для записів CLI | -| `{{MaxChars}}` | Вирішена максимальна кількість символів виводу для записів CLI | +| `{{Prompt}}` | Визначений медіапромпт для записів CLI | +| `{{MaxChars}}` | Визначена максимальна кількість символів виводу для записів CLI | | `{{ChatType}}` | `"direct"` або `"group"` | | `{{GroupSubject}}` | Тема групи (за можливості) | | `{{GroupMembers}}` | Попередній перегляд учасників групи (за можливості) | @@ -1242,19 +1242,19 @@ openclaw gateway --port 19001 **Поведінка злиття:** - Один файл: замінює об’єкт, що його містить. -- Масив файлів: глибоко зливається за порядком (пізніші значення перевизначають попередні). +- Масив файлів: глибоко зливається за порядком (пізніші перевизначають попередні). - Сусідні ключі: зливаються після включень (перевизначають включені значення). - Вкладені включення: до 10 рівнів углиб. -- Шляхи: вирішуються відносно файлу, що виконує включення, але мають залишатися всередині каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми та форми з `../` дозволені лише тоді, коли вони все одно вирішуються всередині цієї межі. -- Записи, якими володіє OpenClaw і які змінюють лише один розділ верхнього рівня, підкріплений однофайловим включенням, записуються наскрізно до цього включеного файлу. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін. -- Кореневі включення, масиви включень і включення із сусідніми перевизначеннями доступні лише для читання для записів, якими володіє OpenClaw; такі записи завершуються закритою помилкою замість розгортання конфігурації. +- Шляхи: визначаються відносно файлу, що виконує включення, але мають залишатися всередині каталогу конфігурації верхнього рівня (`dirname` для `openclaw.json`). Абсолютні форми та форми з `../` дозволені лише тоді, коли вони все одно розв’язуються всередині цієї межі. +- Записи, керовані OpenClaw, які змінюють лише один розділ верхнього рівня, підкріплений включенням одного файлу, записуються безпосередньо в цей включений файл. Наприклад, `plugins install` оновлює `plugins: { $include: "./plugins.json5" }` у `plugins.json5` і залишає `openclaw.json` без змін. +- Кореневі включення, масиви включень і включення із сусідніми перевизначеннями доступні лише для читання для записів, керованих OpenClaw; такі записи завершуються закритою помилкою замість сплющення конфігурації. - Помилки: зрозумілі повідомлення для відсутніх файлів, помилок розбору та циклічних включень. --- _Пов’язано: [Конфігурація](/uk/gateway/configuration) · [Приклади конфігурації](/uk/gateway/configuration-examples) · [Doctor](/uk/gateway/doctor)_ -## Пов’язане +## Пов’язано - [Конфігурація](/uk/gateway/configuration) - [Приклади конфігурації](/uk/gateway/configuration-examples)