Довідник основної конфігурації дляDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json. Огляд, орієнтований на завдання, див. у Конфігурація.
Охоплює основні поверхні конфігурації OpenClaw і містить посилання на окремі глибші довідники, коли підсистема має власний. Каталоги команд, що належать каналам і плагінам, а також поглиблені параметри пам’яті/QMD розміщені на власних сторінках, а не тут.
Правда в коді:
openclaw config schemaдрукує актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими bundled/plugin/channel, коли вони доступніconfig.schema.lookupповертає один вузол схеми з областю дії за шляхом для інструментів деталізаціїpnpm config:docs:check/pnpm config:docs:genперевіряють базовий хеш документації конфігурації щодо поточної поверхні схеми
gateway config.schema.lookup для
точної документації й обмежень на рівні полів перед редагуванням. Використовуйте
Конфігурація для настанов, орієнтованих на завдання, а цю сторінку
для ширшої карти полів, значень за замовчуванням і посилань на довідники підсистем.
Окремі поглиблені довідники:
- Довідник конфігурації пам’яті для
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationsі конфігурації Dreaming уplugins.entries.memory-core.config.dreaming - Slash commands для поточного вбудованого + bundled каталогу команд
- сторінки відповідних каналів/плагінів для поверхонь команд, специфічних для каналів
Канали
Ключі конфігурації для окремих каналів перенесено на окрему сторінку - див. Конфігурація - канали дляchannels.*,
зокрема Slack, Discord, Telegram, WhatsApp, Matrix, iMessage та інших
bundled каналів (автентифікація, контроль доступу, кілька облікових записів, gating згадок).
Значення агента за замовчуванням, multi-agent, сесії та повідомлення
Перенесено на окрему сторінку - див. Конфігурація - агенти для:agents.defaults.*(робоча область, модель, thinking, Heartbeat, пам’ять, медіа, Skills, sandbox)multiAgent.*(multi-agent маршрутизація та прив’язки)session.*(життєвий цикл сесії, Compaction, pruning)messages.*(доставка повідомлень, TTS, рендеринг markdown)talk.*(режим Talk)talk.consultThinkingLevel: перевизначення рівня thinking для повного запуску агента OpenClaw за realtime consults Control UI Talktalk.consultFastMode: одноразове перевизначення fast-mode для realtime consults Control UI Talktalk.speechLocale: необов’язковий ідентифікатор локалі BCP 47 для розпізнавання мовлення Talk на iOS/macOStalk.silenceTimeoutMs: якщо не задано, Talk зберігає стандартне для платформи вікно паузи перед надсиланням транскрипту (700 ms on macOS and Android, 900 ms on iOS)
Інструменти та користувацькі провайдери
Політики інструментів, експериментальні перемикачі, конфігурацію інструментів на базі провайдерів і налаштування користувацького провайдера / базової URL-адреси перенесено на окрему сторінку - див. Конфігурація - інструменти та користувацькі провайдери.Моделі
Визначення провайдерів, allowlists моделей і налаштування користувацьких провайдерів розміщені в Конфігурація - інструменти та користувацькі провайдери. Коріньmodels також відповідає за глобальну поведінку каталогу моделей.
models.mode: поведінка каталогу провайдерів (mergeабоreplace).models.providers: мапа користувацьких провайдерів із ключами за provider id.models.providers.*.localService: необов’язковий менеджер процесів on-demand для локальних серверів моделей. OpenClaw перевіряє налаштований health endpoint, запускає абсолютнуcommand, коли потрібно, чекає готовності, а потім надсилає запит до моделі. Див. Локальні сервіси моделей.models.pricing.enabled: керує фоновим pricing bootstrap, який запускається після того, як sidecars і канали досягають ready path Gateway. Колиfalse, Gateway пропускає отримання каталогів цін OpenRouter і LiteLLM; налаштовані значенняmodels.providers.*.models[].costі далі працюють для локальних оцінок вартості.
MCP
Визначення MCP-серверів, керованих OpenClaw, розміщені вmcp.servers і
використовуються embedded Pi та іншими runtime-адаптерами. Команди openclaw mcp list,
show, set і unset керують цим блоком без підключення до
цільового сервера під час редагування конфігурації.
mcp.servers: іменовані stdio або remote визначення MCP-серверів для середовищ виконання, які надають налаштовані MCP-інструменти. Remote записи використовуютьtransport: "streamable-http"абоtransport: "sse";type: "http"— це CLI-native псевдонім, якийopenclaw mcp setіopenclaw doctor --fixнормалізують у канонічне полеtransport.mcp.sessionIdleTtlMs: idle TTL для session-scoped bundled MCP runtimes. Одноразові embedded запуски запитують очищення наприкінці запуску; цей TTL є запобіжником для довготривалих сесій і майбутніх викликачів.- Зміни в
mcp.*застосовуються гаряче через disposing cached session MCP runtimes. Наступне виявлення/використання інструмента створює їх заново з нової конфігурації, тому видалені записиmcp.serversприбираються негайно, а не чекають idle TTL.
Skills
allowBundled: необов’язковий allowlist лише для bundled skills (managed/workspace skills не зачіпаються).load.extraDirs: додаткові спільні корені skills (найнижчий пріоритет).load.allowSymlinkTargets: довірені реальні корені цілей, у які можуть resolve симлінки skills, коли посилання розміщене поза налаштованим вихідним коренем.install.preferBrew: коли true, надавати перевагу інсталяторам Homebrew, якщоbrewдоступний, перед fallback до інших типів інсталяторів.install.nodeManager: бажаний node installer для специфікаційmetadata.openclaw.install(npm|pnpm|yarn|bun).install.allowUploadedArchives: дозволити довіреним клієнтам Gatewayoperator.adminвстановлювати приватні zip-архіви, staged черезskills.upload.*(за замовчуванням: false). Це вмикає лише шлях uploaded-archive; звичайні встановлення ClawHub цього не потребують.entries.<skillKey>.enabled: falseвимикає skill, навіть якщо він bundled/installed.entries.<skillKey>.apiKey: зручне поле для skills, що оголошують primary env var (plaintext string або об’єкт SecretRef).
Плагіни
- Завантажуються з
~/.openclaw/extensions,<workspace>/.openclaw/extensions, а такожplugins.load.paths. - Discovery приймає native OpenClaw plugins, а також сумісні Codex bundles і Claude bundles, зокрема manifestless Claude default-layout bundles.
- Зміни конфігурації потребують перезапуску gateway.
allow: необов’язковий allowlist (завантажуються лише перелічені plugins).denyмає пріоритет.bundledDiscovery: за замовчуванням має значення"allowlist"для нових конфігурацій, тож непорожнійplugins.allowтакож обмежує bundled provider plugins, зокрема web-search runtime providers. Doctor записує"compat"для мігрованих legacy allowlist конфігурацій, щоб зберегти наявну поведінку bundled provider, доки ви не ввімкнете новий режим.plugins.entries.<id>.apiKey: зручне поле API key на рівні plugin (коли підтримується plugin).plugins.entries.<id>.env: мапа змінних середовища з областю дії plugin.plugins.entries.<id>.hooks.allowPromptInjection: колиfalse, core блокуєbefore_prompt_buildта ігнорує prompt-mutating поля з legacybefore_agent_start, зберігаючи legacymodelOverrideіproviderOverride. Застосовується до native plugin hooks і підтримуваних hook-директорій, наданих bundle.plugins.entries.<id>.hooks.allowConversationAccess: колиtrue, довірені non-bundled plugins можуть читати raw conversation content із typed hooks, як-отllm_input,llm_output,before_model_resolve,before_agent_reply,before_agent_run,before_agent_finalizeіagent_end.plugins.entries.<id>.subagent.allowModelOverride: явно довіряє цьому plugin запитувати per-run перевизначенняproviderіmodelдля background subagent runs.plugins.entries.<id>.subagent.allowedModels: необов’язковий allowlist канонічних цілейprovider/modelдля trusted subagent overrides. Використовуйте"*"лише тоді, коли навмисно хочете дозволити будь-яку модель.plugins.entries.<id>.llm.allowModelOverride: явно довіряє цьому plugin запитувати перевизначення моделі дляapi.runtime.llm.complete.plugins.entries.<id>.llm.allowedModels: необов’язковий allowlist канонічних цілейprovider/modelдля trusted plugin LLM completion overrides. Використовуйте"*"лише тоді, коли навмисно хочете дозволити будь-яку модель.plugins.entries.<id>.llm.allowAgentIdOverride: явно довіряє цьому plugin запускатиapi.runtime.llm.completeдля non-default agent id.plugins.entries.<id>.config: config object, визначений plugin (валідується native OpenClaw plugin schema, коли доступна).- Налаштування облікового запису/runtime для channel plugin розміщуються в
channels.<id>і мають описуватися метаданимиchannelConfigsу manifest відповідного plugin, а не центральним реєстром опцій OpenClaw.
Конфігурація plugin Codex harness
Bundled plugincodex відповідає за native Codex app-server harness settings у
plugins.entries.codex.config. Див.
Довідник Codex harness для повної поверхні конфігурації
та Codex harness для runtime model.
codexPlugins застосовується лише до сесій, які вибирають native Codex harness.
Він не вмикає Codex plugins для Pi, звичайних запусків OpenAI provider, ACP
conversation bindings або будь-якого non-Codex harness.
plugins.entries.codex.config.codexPlugins.enabled: вмикає нативну підтримку plugin/app Codex для harness Codex. Типово:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: типова політика руйнівних дій для перенесених запитів plugin app. Типово:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: вмикає перенесений запис Plugin, коли глобальнийcodexPlugins.enabledтакож має значення true. Типово:trueдля явних записів.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: стабільна ідентичність маркетплейсу. V1 підтримує лише"openai-curated".plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: стабільна ідентичність Plugin Codex з міграції, наприклад"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: перевизначення політики руйнівних дій для окремого Plugin. Якщо пропущено, використовується глобальне значенняallow_destructive_actions.
codexPlugins.enabled — це глобальна директива ввімкнення. Явні записи Plugin,
записані міграцією, є довговічним набором права на встановлення та виправлення.
plugins["*"] не підтримується, перемикача install немає, а локальні
значення marketplacePath навмисно не є полями конфігурації, бо вони
залежать від хоста.
Перевірки готовності app/list кешуються на одну годину та оновлюються
асинхронно, коли стають застарілими. Конфігурація app потоку Codex обчислюється під час
встановлення сесії harness Codex, а не на кожному ході; використовуйте /new, /reset або перезапуск Gateway
після зміни конфігурації нативних Plugin.
plugins.entries.firecrawl.config.webFetch: налаштування провайдера веб-отримання Firecrawl.apiKey: ключ API Firecrawl (приймає SecretRef). Повертається доplugins.entries.firecrawl.config.webSearch.apiKey, застарілогоtools.web.fetch.firecrawl.apiKeyабо змінної середовищаFIRECRAWL_API_KEY.baseUrl: базова URL-адреса API Firecrawl (типово:https://api.firecrawl.dev; самостійно розгорнуті перевизначення мають спрямовуватися на приватні/внутрішні кінцеві точки).onlyMainContent: витягувати зі сторінок лише основний вміст (типово:true).maxAgeMs: максимальний вік кешу в мілісекундах (типово:172800000/ 2 дні).timeoutSeconds: таймаут запиту скрейпінгу в секундах (типово:60).
plugins.entries.xai.config.xSearch: налаштування xAI X Search (вебпошук Grok).enabled: увімкнути провайдера X Search.model: модель Grok для пошуку (наприклад,"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: налаштування memory dreaming. Див. Dreaming щодо фаз і порогів.enabled: головний перемикач dreaming (типовоfalse).frequency: cron-частота для кожного повного проходу dreaming ("0 3 * * *"за замовчуванням).model: необов’язкове перевизначення моделі під-агента Dream Diary. Потребуєplugins.entries.memory-core.subagent.allowModelOverride: true; поєднуйте зallowedModels, щоб обмежити цілі. Помилки недоступності моделі повторюються один раз із типовою моделлю сесії; помилки довіри або allowlist не повертаються назад мовчки.- політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації).
- Повна конфігурація пам’яті міститься в довіднику конфігурації пам’яті:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Увімкнені пакетні Plugin Claude також можуть додавати вбудовані типові значення Pi із
settings.json; OpenClaw застосовує їх як очищені налаштування агента, а не як сирі патчі конфігурації OpenClaw. plugins.slots.memory: виберіть ідентифікатор активного Plugin пам’яті або"none", щоб вимкнути Plugin пам’яті.plugins.slots.contextEngine: виберіть ідентифікатор активного Plugin рушія контексту; типово"legacy", якщо ви не встановите й не виберете інший рушій.
Зобов’язання
commitments керує виведеною подальшою пам’яттю: OpenClaw може виявляти контрольні звернення з ходів розмови й доставляти їх через запуски heartbeat.
commitments.enabled: увімкнути приховане LLM-витягування, зберігання та доставку heartbeat для виведених подальших зобов’язань. Типово:false.commitments.maxPerDay: максимальна кількість виведених подальших зобов’язань, доставлених за сесію агента протягом ковзного дня. Типово:3.
Браузер
evaluateEnabled: falseвимикаєact:evaluateіwait --fn.tabCleanupзвільняє відстежувані вкладки основного агента після простою або коли сесія перевищує свій ліміт. УстановітьidleMinutes: 0абоmaxTabsPerSession: 0, щоб вимкнути ці окремі режими очищення.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застосовуються до віддаленої таattachOnlyCDP-досяжності, а також до запитів відкриття вкладок. Керовані loopback профілі зберігають локальні типові значення CDP.- Якщо зовнішньо керована CDP-служба досяжна через loopback, установіть для цього
профілю
attachOnly: true; інакше OpenClaw трактує loopback-порт як локальний керований профіль браузера й може повідомляти про помилки володіння локальним портом. - Профілі
existing-sessionвикористовують Chrome MCP замість CDP і можуть приєднуватися на вибраному хості або через під’єднаний браузерний вузол. - Профілі
existing-sessionможуть задаватиuserDataDir, щоб спрямуватися на конкретний профіль браузера на основі Chromium, як-от Brave або Edge. - Профілі
existing-sessionзберігають поточні обмеження маршруту Chrome MCP: дії на основі snapshot/ref замість націлювання CSS-селекторами, хуки завантаження одного файлу, без перевизначень таймауту діалогів, безwait --load networkidleі безresponsebody, експорту PDF, перехоплення завантажень або пакетних дій. - Локальні керовані профілі
openclawавтоматично призначаютьcdpPortіcdpUrl; задавайтеcdpUrlявно лише для віддаленого CDP. - Локальні керовані профілі можуть задавати
executablePath, щоб перевизначити глобальнийbrowser.executablePathдля цього профілю. Використовуйте це, щоб запускати один профіль у Chrome, а інший у Brave. - Локальні керовані профілі використовують
browser.localLaunchTimeoutMsдля HTTP-виявлення Chrome CDP після запуску процесу таbrowser.localCdpReadyTimeoutMsдля готовності CDP websocket після запуску. Збільшуйте їх на повільніших хостах, де Chrome запускається успішно, але перевірки готовності змагаються зі стартом. Обидва значення мають бути додатними цілими числами до120000мс; недійсні значення конфігурації відхиляються. - Порядок автовиявлення: типовий браузер, якщо він на основі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
browser.executablePathіbrowser.profiles.<name>.executablePathобидва приймають~і~/...для домашнього каталогу вашої ОС перед запуском Chromium.userDataDirдля окремого профілю в профіляхexisting-sessionтакож розгортається з тильдою.- Служба керування: лише loopback (порт похідний від
gateway.port, типово18791). extraArgsдодає додаткові прапорці запуску до локального старту Chromium (наприклад--disable-gpu, розмір вікна або прапорці налагодження).
UI
seamColor: акцентний колір для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо).assistant: перевизначення ідентичності Control UI. Повертається до ідентичності активного агента.
Gateway
Відомості про поля Gateway
Відомості про поля Gateway
mode:local(запускати Gateway) абоremote(підключатися до віддаленого Gateway). Gateway відмовляється запускатися, якщо значення неlocal.port: один мультиплексований порт для WS + HTTP. Пріоритет:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(типово),lan(0.0.0.0),tailnet(лише IP Tailscale) абоcustom.- Застарілі псевдоніми bind: використовуйте значення режиму bind у
gateway.bind(auto,loopback,lan,tailnet,custom), а не псевдоніми хоста (0.0.0.0,127.0.0.1,localhost,::,::1). - Примітка щодо Docker: типовий bind
loopbackслухає на127.0.0.1усередині контейнера. З bridge-мережею Docker (-p 18789:18789) трафік надходить наeth0, тому Gateway недоступний. Використовуйте--network hostабо встановітьbind: "lan"(абоbind: "custom"зcustomBindHost: "0.0.0.0"), щоб слухати на всіх інтерфейсах. - Автентифікація: типово обов’язкова. Bind не на loopback потребують автентифікації Gateway. На практиці це означає спільний токен/пароль або identity-aware reverse proxy з
gateway.auth.mode: "trusted-proxy". Майстер onboarding типово генерує токен. - Якщо налаштовано і
gateway.auth.token, іgateway.auth.password(зокрема SecretRefs), явно встановітьgateway.auth.modeнаtokenабоpassword. Потоки запуску та встановлення/відновлення сервісу завершуються помилкою, коли налаштовано обидва параметри, а режим не задано. gateway.auth.mode: "none": явний режим без автентифікації. Використовуйте лише для довірених налаштувань local loopback; це навмисно не пропонується в onboarding prompts.gateway.auth.mode: "trusted-proxy": делегує автентифікацію браузера/користувача identity-aware reverse proxy та довіряє identity headers зgateway.trustedProxies(див. Автентифікація через довірений проксі). Цей режим типово очікує джерело проксі не на loopback; reverse proxy на loopback того самого хоста потребують явногоgateway.auth.trustedProxy.allowLoopback = true. Внутрішні викликачі з того самого хоста можуть використовуватиgateway.auth.passwordяк локальний прямий fallback;gateway.auth.tokenлишається взаємовиключним із режимом trusted-proxy.gateway.auth.allowTailscale: колиtrue, identity headers Tailscale Serve можуть задовольнити автентифікацію Control UI/WebSocket (перевірено черезtailscale whois). Кінцеві точки HTTP API не використовують цю автентифікацію через заголовки Tailscale; натомість вони дотримуються звичайного режиму HTTP-автентифікації Gateway. Цей потік без токена припускає, що хост Gateway є довіреним. Типовоtrue, колиtailscale.mode = "serve".gateway.auth.rateLimit: необов’язковий обмежувач невдалих спроб автентифікації. Застосовується на IP клієнта й на scope автентифікації (shared-secret і device-token відстежуються незалежно). Заблоковані спроби повертають429+Retry-After.- На async-шляху Tailscale Serve Control UI невдалі спроби для того самого
{scope, clientIp}серіалізуються перед записом помилки. Тому одночасні невдалі спроби від того самого клієнта можуть спрацювати на обмежувач уже на другому запиті, замість того щоб обидві пройшли як звичайні невідповідності. gateway.auth.rateLimit.exemptLoopbackтипово має значенняtrue; встановітьfalse, коли навмисно хочете обмежувати частоту також для localhost-трафіку (для тестових налаштувань або строгих proxy-розгортань).
- На async-шляху Tailscale Serve Control UI невдалі спроби для того самого
- Спроби WS-автентифікації з browser-origin завжди throttled з вимкненим звільненням для loopback (defense-in-depth проти браузерного brute force на localhost).
- На loopback такі browser-origin lockouts ізольовані для кожного нормалізованого значення
Origin, тому повторні невдалі спроби з одного localhost origin не блокують автоматично інший origin. tailscale.mode:serve(лише tailnet, bind на loopback) абоfunnel(публічний, потребує автентифікації).tailscale.preserveFunnel: колиtrueіtailscale.mode = "serve", OpenClaw перевіряєtailscale funnel statusперед повторним застосуванням Serve під час запуску й пропускає його, якщо зовні налаштований маршрут Funnel уже покриває порт Gateway. Типовоfalse.controlUi.allowedOrigins: явний allowlist browser-origin для підключень Gateway WebSocket. Потрібний, коли браузерні клієнти очікуються з origins не на loopback.controlUi.chatMessageMaxWidth: необов’язкова max-width для згрупованих повідомлень чату Control UI. Приймає обмежені значення ширини CSS, як-от960px,82%,min(1280px, 82%)іcalc(100% - 2rem).controlUi.dangerouslyAllowHostHeaderOriginFallback: небезпечний режим, який вмикає fallback origin за Host-header для розгортань, що навмисно покладаються на політику origin за Host-header.remote.transport:ssh(типово) абоdirect(ws/wss). Дляdirectзначенняremote.urlмає бутиws://абоwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: break-glass override на рівні process-environment клієнта, який дозволяє plaintextws://до довірених IP приватної мережі; типово plaintext лишається дозволеним лише для loopback. Еквівалента вopenclaw.jsonнемає, а конфігурація приватної мережі браузера, як-отbrowser.ssrfPolicy.dangerouslyAllowPrivateNetwork, не впливає на клієнтів Gateway WebSocket.gateway.remote.token/.password— це поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують автентифікацію Gateway.gateway.push.apns.relay.baseUrl: базова HTTPS URL для зовнішнього APNs relay, який використовують офіційні/TestFlight iOS-збірки після публікації relay-backed реєстрацій у Gateway. Ця URL має збігатися з relay URL, скомпільованою в iOS-збірку.gateway.push.apns.relay.timeoutMs: таймаут надсилання з Gateway до relay у мілісекундах. Типово10000.- Relay-backed реєстрації делегуються конкретній ідентичності Gateway. Спарений iOS-застосунок отримує
gateway.identity.get, включає цю ідентичність у relay-реєстрацію та передає Gateway send grant, прив’язаний до реєстрації. Інший Gateway не може повторно використати цю збережену реєстрацію. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: тимчасові env overrides для конфігурації relay вище.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: development-only escape hatch для loopback HTTP relay URLs. Production relay URLs мають лишатися на HTTPS.gateway.handshakeTimeoutMs: таймаут pre-auth рукостискання Gateway WebSocket у мілісекундах. Типово:15000.OPENCLAW_HANDSHAKE_TIMEOUT_MSмає пріоритет, коли встановлено. Збільште це значення на завантажених або малопотужних хостах, де локальні клієнти можуть підключатися, поки startup warmup ще стабілізується.gateway.channelHealthCheckMinutes: інтервал health-monitor каналу у хвилинах. Встановіть0, щоб глобально вимкнути перезапуски health-monitor. Типово:5.gateway.channelStaleEventThresholdMinutes: поріг stale-socket у хвилинах. Тримайте його більшим або рівнимgateway.channelHealthCheckMinutes. Типово:30.gateway.channelMaxRestartsPerHour: максимальна кількість перезапусків health-monitor на канал/акаунт у ковзну годину. Типово:10.channels.<provider>.healthMonitor.enabled: вимкнення перезапусків health-monitor для окремого каналу зі збереженням увімкненого глобального монітора.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: override для окремого акаунта в multi-account каналах. Коли встановлено, має пріоритет над override на рівні каналу.- Локальні шляхи виклику Gateway можуть використовувати
gateway.remote.*як fallback лише колиgateway.auth.*не задано. - Якщо
gateway.auth.token/gateway.auth.passwordявно налаштовано через SecretRef і не resolved, resolution fails closed (без masking через remote fallback). trustedProxies: IP reverse proxy, які terminate TLS або inject forwarded-client headers. Вказуйте лише проксі, якими ви керуєте. Loopback entries усе ще чинні для same-host proxy/local-detection налаштувань (наприклад, Tailscale Serve або локальний reverse proxy), але вони не роблять loopback requests придатними дляgateway.auth.mode: "trusted-proxy".allowRealIpFallback: колиtrue, Gateway приймаєX-Real-IP, якщоX-Forwarded-Forвідсутній. Типовоfalseдля fail-closed поведінки.gateway.nodes.pairing.autoApproveCidrs: необов’язковий CIDR/IP allowlist для автоматичного схвалення першого pairing node device без requested scopes. Вимкнено, коли не задано. Це не auto-approve pairing operator/browser/Control UI/WebChat і не auto-approve role, scope, metadata або public-key upgrades.gateway.nodes.allowCommands/gateway.nodes.denyCommands: глобальне allow/deny shaping для declared node commands після pairing та оцінки platform allowlist. ВикористовуйтеallowCommands, щоб opt into небезпечні node commands, як-отcamera.snap,camera.clipіscreen.record;denyCommandsвилучає команду, навіть якщо platform default або explicit allow інакше включили б її. Після того як node змінить свій declared command list, відхиліть і повторно схваліть pairing цього пристрою, щоб Gateway зберіг оновлений command snapshot.gateway.tools.deny: додаткові назви tools, заблоковані для HTTPPOST /tools/invoke(розширює default deny list).gateway.tools.allow: вилучає назви tools із default HTTP deny list.
OpenAI-сумісні кінцеві точки
- Chat Completions: типово вимкнено. Увімкніть через
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Посилення захисту URL-input для Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistПорожні allowlists вважаються не заданими; використовуйтеgateway.http.endpoints.responses.files.allowUrl=falseта/абоgateway.http.endpoints.responses.images.allowUrl=false, щоб вимкнути URL fetching.
- Необов’язковий header для response hardening:
gateway.http.securityHeaders.strictTransportSecurity(встановлюйте лише для HTTPS origins, якими ви керуєте; див. Автентифікація через довірений проксі)
Ізоляція кількох екземплярів
Запускайте кілька Gateway на одному хості з унікальними портами та state dirs:--dev (використовує ~/.openclaw-dev + порт 19001), --profile <name> (використовує ~/.openclaw-<name>).
Див. Кілька Gateway.
gateway.tls
enabled: вмикає TLS termination на listener Gateway (HTTPS/WSS) (типово:false).autoGenerate: auto-generates локальну самопідписану пару cert/key, коли явні файли не налаштовані; лише для local/dev використання.certPath: шлях у файловій системі до файлу TLS-сертифіката.keyPath: шлях у файловій системі до файлу приватного TLS-ключа; тримайте дозволи обмеженими.caPath: необов’язковий шлях до CA bundle для client verification або custom trust chains.
gateway.reload
mode: керує тим, як config edits застосовуються під час runtime."off": ігнорувати live edits; зміни потребують явного перезапуску."restart": завжди перезапускати процес Gateway при зміні config."hot": застосовувати зміни in-process без перезапуску."hybrid"(типово): спершу пробувати hot reload; fallback to restart, якщо потрібно.
debounceMs: debounce window у ms перед застосуванням config changes (невід’ємне ціле число).deferralTimeoutMs: необов’язковий максимальний час у ms для очікування in-flight operations перед примусовим перезапуском або channel hot reload. Опустіть, щоб використати default bounded wait (300000); встановіть0, щоб чекати необмежено й логувати періодичні still-pending warnings.
Хуки
Authorization: Bearer <token> або x-openclaw-token: <token>.
Токени Hook у рядку запиту відхиляються.
Нотатки щодо перевірки та безпеки:
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. Статичні ключі зіставлення не потребують цього явного ввімкнення.
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeyіз корисного навантаження запиту приймається лише колиhooks.allowRequestSessionKey=true(за замовчуванням:false).
POST /hooks/<name>→ вирішується черезhooks.mappings- Значення
sessionKeyзіставлення, відтворені з шаблону, вважаються наданими ззовні й також потребуютьhooks.allowRequestSessionKey=true.
- Значення
Деталі зіставлення
Деталі зіставлення
match.pathзіставляє підшлях після/hooks(наприклад,/hooks/gmail→gmail).match.sourceзіставляє поле корисного навантаження для загальних шляхів.- Шаблони на кшталт
{{messages[0].subject}}читають дані з корисного навантаження. transformможе вказувати на модуль JS/TS, який повертає дію Hook.transform.moduleмає бути відносним шляхом і залишатися в межахhooks.transformsDir(абсолютні шляхи та обхід каталогів відхиляються).- Тримайте
hooks.transformsDirу межах~/.openclaw/hooks/transforms; каталоги workspace Skills відхиляються. Якщоopenclaw doctorповідомляє, що цей шлях недійсний, перемістіть модуль перетворення до каталогу перетворень Hook або видалітьhooks.transformsDir.
agentIdспрямовує до конкретного агента; невідомі ID повертаються до типового.allowedAgentIds: обмежує явну маршрутизацію (*або пропущено = дозволити всі,[]= заборонити всі).defaultSessionKey: необов’язковий фіксований ключ сесії для запусків агента Hook без явногоsessionKey.allowRequestSessionKey: дозволяє викликачам/hooks/agentі керованим шаблонами ключам сесії зіставлень задаватиsessionKey(за замовчуванням:false).allowedSessionKeyPrefixes: необов’язковий список дозволених префіксів для явних значеньsessionKey(запит + зіставлення), наприклад["hook:"]. Він стає обов’язковим, коли будь-яке зіставлення або пресет використовує шаблоннийsessionKey.deliver: trueнадсилає фінальну відповідь у канал;channelза замовчуванням має значенняlast.modelперевизначає LLM для цього запуску Hook (модель має бути дозволена, якщо каталог моделей задано).
Інтеграція Gmail
- Вбудований пресет Gmail використовує
sessionKey: "hook:gmail:{{messages[0].id}}". - Якщо ви зберігаєте цю маршрутизацію для кожного повідомлення, задайте
hooks.allowRequestSessionKey: trueі обмежтеhooks.allowedSessionKeyPrefixesвідповідно до простору імен Gmail, наприклад["hook:", "hook:gmail:"]. - Якщо вам потрібне
hooks.allowRequestSessionKey: false, перевизначте пресет статичнимsessionKeyзамість шаблонного значення за замовчуванням.
- Gateway автоматично запускає
gog gmail watch serveпід час завантаження, коли це налаштовано. ЗадайтеOPENCLAW_SKIP_GMAIL_WATCHER=1, щоб вимкнути. - Не запускайте окремий
gog gmail watch serveпоряд із Gateway.
Хост Plugin Canvas
- Обслуговує редаговані агентом HTML/CSS/JS і A2UI через HTTP під портом Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Лише локально: залишайте
gateway.bind: "loopback"(за замовчуванням). - Прив’язки не до loopback: маршрути canvas потребують автентифікації Gateway (токен/пароль/довірений проксі), так само як інші HTTP-поверхні Gateway.
- WebView Node зазвичай не надсилають заголовки автентифікації; після сполучення й підключення вузла Gateway оголошує URL можливостей, scoped до вузла, для доступу до canvas/A2UI.
- URL можливостей прив’язані до активної WS-сесії вузла й швидко спливають. Резервний варіант на основі IP не використовується.
- Вставляє клієнт live-reload в обслуговуваний HTML.
- Автоматично створює початковий
index.html, коли порожньо. - Також обслуговує A2UI за адресою
/__openclaw__/a2ui/. - Зміни потребують перезапуску Gateway.
- Вимкніть live reload для великих каталогів або помилок
EMFILE.
Виявлення
mDNS (Bonjour)
minimal(за замовчуванням, коли ввімкнено вбудований Pluginbonjour): пропускаєcliPath+sshPortу записах TXT.full: включаєcliPath+sshPort; багатоадресна реклама LAN все одно потребує ввімкненого вбудованого Pluginbonjour.off: пригнічує багатоадресну рекламу LAN без зміни ввімкнення Plugin.- Вбудований Plugin
bonjourавтоматично запускається на хостах macOS і вмикається вручну на Linux, Windows і контейнеризованих розгортаннях Gateway. - Ім’я хоста за замовчуванням дорівнює системному імені хоста, коли воно є дійсною DNS-міткою, з поверненням до
openclaw. Перевизначте за допомогоюOPENCLAW_MDNS_HOSTNAME.
Wide-area (DNS-SD)
~/.openclaw/dns/. Для виявлення між мережами поєднайте з DNS-сервером (рекомендовано CoreDNS) + Tailscale split DNS.
Налаштування: openclaw dns setup --apply.
Середовище
env (вбудовані змінні середовища)
- Вбудовані змінні середовища застосовуються лише тоді, коли в середовищі процесу немає відповідного ключа.
- Файли
.env:.envу CWD +~/.openclaw/.env(жоден із них не перевизначає наявні змінні). shellEnv: імпортує відсутні очікувані ключі з профілю вашої login shell.- Повний порядок пріоритету див. у Середовище.
Підстановка змінних середовища
Посилайтеся на змінні середовища в будь-якому рядку конфігурації за допомогою${VAR_NAME}:
- Зіставляються лише імена у верхньому регістрі:
[A-Z_][A-Z0-9_]*. - Відсутні або порожні змінні спричиняють помилку під час завантаження конфігурації.
- Екрануйте за допомогою
$${VAR}для літерального${VAR}. - Працює з
$include.
Секрети
Посилання на секрети є додатковими: значення у відкритому тексті й надалі працюють.SecretRef
Використовуйте одну форму об’єкта:
- Шаблон
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відхиляється)
Підтримувана поверхня облікових даних
- Канонічна матриця: Поверхня облікових даних SecretRef
- Цілі
secrets applyпідтримують шляхи облікових данихopenclaw.json. - Посилання
auth-profiles.jsonвключено до runtime-розв’язання та покриття аудиту.
Конфігурація постачальників секретів
- Постачальник
fileпідтримуєmode: "json"іmode: "singleValue"(idмає бути"value"у режимі singleValue). - Шляхи постачальників file та exec fail closed, коли перевірка Windows ACL недоступна. Установлюйте
allowInsecurePath: trueлише для довірених шляхів, які неможливо перевірити. - Постачальник
execпотребує абсолютного шляхуcommandі використовує protocol payloads через stdin/stdout. - За замовчуванням шляхи команд через symlink відхиляються. Установіть
allowSymlinkCommand: true, щоб дозволити шляхи symlink із перевіркою розв’язаного цільового шляху. - Якщо налаштовано
trustedDirs, перевірка trusted-dir застосовується до розв’язаного цільового шляху. - Дочірнє середовище
execза замовчуванням мінімальне; передавайте потрібні змінні явно черезpassEnv. - Посилання на секрети розв’язуються під час активації у знімок у пам’яті, після чого шляхи запитів читають лише цей знімок.
- Фільтрація active-surface застосовується під час активації: нерозв’язані посилання на увімкнених поверхнях призводять до помилки запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою.
Сховище автентифікації
- Профілі для кожного агента зберігаються в
<agentDir>/auth-profiles.json. auth-profiles.jsonпідтримує посилання на рівні значень (keyRefдляapi_key,tokenRefдляtoken) для статичних режимів облікових даних.- Застарілі плоскі мапи
auth-profiles.json, як-от{ "provider": { "apiKey": "..." } }, не є runtime-форматом;openclaw doctor --fixпереписує їх у канонічні API-key профіліprovider:defaultіз резервною копією.legacy-flat.*.bak. - Профілі режиму OAuth (
auth.profiles.<id>.mode = "oauth") не підтримують облікові дані auth-profile на основі SecretRef. - Статичні runtime-облікові дані беруться з розв’язаних знімків у пам’яті; застарілі статичні записи
auth.jsonочищаються, коли їх виявлено. - Застарілі імпорти OAuth беруться з
~/.openclaw/credentials/oauth.json. - Див. OAuth.
- Runtime-поведінка секретів та інструменти
audit/configure/apply: Керування секретами.
auth.cooldowns
billingBackoffHours: базова затримка повтору в годинах, коли профіль зазнає невдачі через справжні помилки виставлення рахунків/нестачі кредитів (за замовчуванням:5). Явний текст про виставлення рахунків може все ще потрапити сюди навіть у відповідях401/403, але специфічні для провайдера зіставники тексту залишаються обмеженими провайдером, якому вони належать (наприклад OpenRouterKey limit exceeded). Повторювані повідомлення HTTP402про вікно використання або ліміт витрат організації/робочого простору натомість залишаються в шляхуrate_limit.billingBackoffHoursByProvider: необов’язкові перевизначення кількості годин затримки виставлення рахунків для окремих провайдерів.billingMaxHours: обмеження в годинах для експоненційного зростання затримки виставлення рахунків (за замовчуванням:24).authPermanentBackoffMinutes: базова затримка повтору в хвилинах для високодостовірних збоївauth_permanent(за замовчуванням:10).authPermanentMaxMinutes: обмеження в хвилинах для зростання затримкиauth_permanent(за замовчуванням:60).failureWindowHours: рухоме вікно в годинах, що використовується для лічильників затримки повторів (за замовчуванням:24).overloadedProfileRotations: максимальна кількість ротацій профілів автентифікації того самого провайдера для помилок перевантаження перед переходом до резервної моделі (за замовчуванням:1). Сюди потрапляють форми зайнятості провайдера, такі якModelNotReadyException.overloadedBackoffMs: фіксована затримка перед повторною спробою ротації перевантаженого провайдера/профілю (за замовчуванням:0).rateLimitedProfileRotations: максимальна кількість ротацій профілів автентифікації того самого провайдера для помилок обмеження частоти перед переходом до резервної моделі (за замовчуванням:1). Цей кошик обмеження частоти включає текст у формі провайдера, як-отToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceededіresource exhausted.
Журналювання
- Стандартний файл журналу:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Задайте
logging.fileдля стабільного шляху. consoleLevelпідвищується доdebug, коли використано--verbose.maxFileBytes: максимальний розмір активного файлу журналу в байтах перед ротацією (додатне ціле число; за замовчуванням:104857600= 100 МБ). OpenClaw зберігає до п’яти нумерованих архівів поруч з активним файлом.redactSensitive/redactPatterns: маскування за принципом найкращого зусилля для виводу в консоль, файлових журналів, записів журналу OTLP і збереженого тексту транскрипту сеансу.redactSensitive: "off"вимикає лише цю загальну політику журналів/транскриптів; поверхні безпеки UI/інструментів/діагностики все одно редагують секрети перед виведенням.
Діагностика
enabled: головний перемикач для інструментального виводу (за замовчуванням:true).flags: масив рядків прапорців, які вмикають цільовий журнальний вивід (підтримує символи підстановки, як-от"telegram.*"або"*").stuckSessionWarnMs: поріг віку без прогресу в мс для класифікації довготривалих сеансів обробки якsession.long_running,session.stalledабоsession.stuck. Відповідь, інструмент, статус, блок і прогрес ACP скидають таймер; повторювана діагностикаsession.stuckвідступає, доки стан не змінюється.stuckSessionAbortMs: поріг віку без прогресу в мс, після якого придатна застрягла активна робота може бути аварійно осушена для відновлення. Якщо не задано, OpenClaw використовує безпечніше розширене вікно вбудованого запуску щонайменше 10 хвилин і 5xstuckSessionWarnMs.otel.enabled: вмикає конвеєр експорту OpenTelemetry (за замовчуванням:false). Повну конфігурацію, каталог сигналів і модель приватності див. у експорті 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).
Оновлення
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).
ACP
enabled: глобальний шлюз функції ACP (за замовчуванням:true; задайтеfalse, щоб приховати диспетчеризацію ACP і можливості створення).dispatch.enabled: незалежний шлюз для диспетчеризації ходу сеансу ACP (за замовчуванням:true). Задайтеfalse, щоб залишити команди ACP доступними, але блокувати виконання.backend: стандартний ідентифікатор бекенда середовища виконання ACP (має відповідати зареєстрованому Plugin середовища виконання ACP). Спочатку встановіть Plugin бекенда, і якщо заданоplugins.allow, додайте ідентифікатор Plugin бекенда (наприкладacpx), інакше бекенд ACP не завантажиться.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.
CLI
cli.banner.taglineModeкерує стилем слогана банера:"random"(за замовчуванням): ротаційні кумедні/сезонні слогани."default": фіксований нейтральний слоган (All your chats, one OpenClaw.)."off": без тексту слогана (назва/версія банера все одно показуються).
- Щоб приховати весь банер (а не лише слогани), задайте змінну середовища
OPENCLAW_HIDE_BANNER=1.
Майстер
Метадані, записані потоками керованого налаштування CLI (onboard, configure, doctor):
Ідентичність
Див. поля ідентичностіagents.list у стандартних налаштуваннях агента.
Міст (застарілий, вилучено)
Поточні збірки більше не містять TCP-міст. Nodes підключаються через WebSocket Gateway. Ключіbridge.* більше не є частиною схеми конфігурації (перевірка не проходить, доки їх не вилучено; openclaw doctor --fix може прибрати невідомі ключі).
Legacy bridge config (historical reference)
Legacy bridge config (historical reference)
Cron
sessionRetention: як довго зберігати завершені ізольовані сеанси запусків cron перед видаленням ізsessions.json. Також керує очищенням архівованих стенограм видалених cron. Типово:24h; установітьfalse, щоб вимкнути.runLog.maxBytes: максимальний розмір одного файла журналу запуску (cron/runs/<jobId>.jsonl) перед обрізанням. Типово:2_000_000байтів.runLog.keepLines: найновіші рядки, що зберігаються, коли спрацьовує обрізання журналу запусків. Типово:2000.webhookToken: bearer-токен, що використовується для доставки cron Webhook через POST (delivery.mode = "webhook"); якщо пропущено, заголовок автентифікації не надсилається.webhook: застаріла резервна URL-адреса Webhook (http/https), що використовується лише для збережених завдань, які досі маютьnotify: true.
cron.retry
maxAttempts: максимальна кількість повторних спроб для одноразових завдань у разі тимчасових помилок (типово:3; діапазон:0-10).backoffMs: масив затримок відступу в мс для кожної повторної спроби (типово:[30000, 60000, 300000]; 1-10 записів).retryOn: типи помилок, що запускають повторні спроби -"rate_limit","overloaded","network","timeout","server_error". Пропустіть, щоб повторювати всі тимчасові типи.
cron.failureAlert
enabled: увімкнути сповіщення про збої для завдань cron (типово:false).after: кількість послідовних збоїв перед надсиланням сповіщення (додатне ціле число, мінімум:1).cooldownMs: мінімальна кількість мілісекунд між повторними сповіщеннями для того самого завдання (невід’ємне ціле число).includeSkipped: зараховувати послідовно пропущені запуски до порогу сповіщення (типово:false). Пропущені запуски відстежуються окремо й не впливають на відступ для помилок виконання.mode: режим доставки -"announce"надсилає через повідомлення каналу;"webhook"публікує в налаштований Webhook.accountId: необов’язковий ідентифікатор облікового запису або каналу для обмеження області доставки сповіщень.
cron.failureDestination
- Типове призначення для сповіщень про збої 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".
Змінні шаблону медіамоделі
Заповнювачі шаблону, що розгортаються вtools.media.models[].args:
| Змінна | Опис |
|---|---|
{{Body}} | Повне тіло вхідного повідомлення |
{{RawBody}} | Сире тіло (без обгорток історії/відправника) |
{{BodyStripped}} | Тіло з вилученими згадками групи |
{{From}} | Ідентифікатор відправника |
{{To}} | Ідентифікатор призначення |
{{MessageSid}} | Ідентифікатор повідомлення каналу |
{{SessionId}} | UUID поточного сеансу |
{{IsNewSession}} | "true", коли створено новий сеанс |
{{MediaUrl}} | Псевдо-URL вхідного медіа |
{{MediaPath}} | Локальний шлях до медіа |
{{MediaType}} | Тип медіа (image/audio/document/…) |
{{Transcript}} | Стенограма аудіо |
{{Prompt}} | Розв’язана медіапідказка для записів CLI |
{{MaxChars}} | Розв’язана максимальна кількість символів виводу для записів CLI |
{{ChatType}} | "direct" або "group" |
{{GroupSubject}} | Тема групи (за можливості) |
{{GroupMembers}} | Попередній перегляд учасників групи (за можливості) |
{{SenderName}} | Відображуване ім’я відправника (за можливості) |
{{SenderE164}} | Номер телефону відправника (за можливості) |
{{Provider}} | Підказка постачальника (whatsapp, telegram, discord тощо) |
Включення конфігурації ($include)
Розділіть конфігурацію на кілька файлів:
- Один файл: замінює об’єкт-контейнер.
- Масив файлів: глибоко зливається по порядку (пізніші перевизначають попередні).
- Сусідні ключі: зливаються після включень (перевизначають включені значення).
- Вкладені включення: до 10 рівнів углиб.
- Шляхи: розв’язуються відносно файла, що включає, але мають залишатися всередині каталогу конфігурації верхнього рівня (
dirnameдляopenclaw.json). Абсолютні форми/форми з../дозволені лише тоді, коли вони все одно розв’язуються всередині цієї межі. - Записи, керовані OpenClaw, які змінюють лише один розділ верхнього рівня, підтриманий однофайловим включенням, записуються безпосередньо в цей включений файл. Наприклад,
plugins installоновлюєplugins: { $include: "./plugins.json5" }уplugins.json5і залишаєopenclaw.jsonбез змін. - Кореневі включення, масиви включень і включення із сусідніми перевизначеннями доступні лише для читання для записів, керованих OpenClaw; такі записи завершуються помилкою замість згортання конфігурації.
- Помилки: зрозумілі повідомлення для відсутніх файлів, помилок розбору та циклічних включень.
Пов’язано: Конфігурація · Приклади конфігурації · Doctor