Gateway
Конфігурація
OpenClaw читає необов’язкову конфігурацію JSON5 з ~/.openclaw/openclaw.json. Якщо файл відсутній, OpenClaw використовує безпечні стандартні значення.
Шлях активної конфігурації має вказувати на звичайний файл. Під час запису OpenClaw атомарно замінює його (перейменовує файл у цей шлях), тому для openclaw.json, що є символічним посиланням, буде замінено цільовий файл, а не виконано наскрізний запис — уникайте конфігурацій із символічними посиланнями. Якщо конфігурація зберігається поза стандартним каталогом стану, спрямуйте OPENCLAW_CONFIG_PATH безпосередньо на фактичний файл.
Поширені причини додати конфігурацію:
- Підключити канали та визначити, хто може надсилати повідомлення боту
- Налаштувати моделі, інструменти, ізоляцію або автоматизацію (cron, хуки)
- Налаштувати сеанси, медіа, мережу або інтерфейс користувача
Опис усіх доступних полів див. у повному довіднику.
Агенти й автоматизація мають використовувати config.schema.lookup, щоб отримувати точну
документацію на рівні полів перед редагуванням конфігурації. Використовуйте цю сторінку для практичних вказівок, а
Довідник із конфігурації — для ширшої
карти полів і стандартних значень.
Мінімальна конфігурація
// ~/.openclaw/openclaw.json{ agents: { defaults: { workspace: "~/.openclaw/workspace" } }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}Редагування конфігурації
Інтерактивний майстер
openclaw onboard # повний процес початкового налаштуванняopenclaw configure # майстер конфігураціїCLI (однорядкові команди)
openclaw config get agents.defaults.workspaceopenclaw config set agents.defaults.heartbeat.every "2h"openclaw config unset plugins.entries.brave.config.webSearch.apiKeyІнтерфейс керування
Відкрийте http://127.0.0.1:18789 і скористайтеся вкладкою Config.
Інтерфейс керування формує форму з актуальної схеми конфігурації, включно з метаданими документації
полів title / description, а також схемами плагінів і каналів, коли
вони доступні, і надає редактор Raw JSON як запасний варіант. Для деталізованих
інтерфейсів та інших інструментів Gateway також надає config.schema.lookup, щоб
отримувати один вузол схеми для заданого шляху та зведення його безпосередніх дочірніх вузлів.
Безпосереднє редагування
Редагуйте ~/.openclaw/openclaw.json безпосередньо. Gateway відстежує файл і застосовує зміни автоматично (див. гаряче перезавантаження).
Сувора перевірка
openclaw config schema виводить канонічну JSON Schema, яку використовують інтерфейс керування
та перевірка. config.schema.lookup отримує один вузол для заданого шляху та
зведення дочірніх вузлів для інструментів деталізації. Метадані документації полів title/description
поширюються на вкладені об’єкти, гілки із символом узагальнення (*), елементами масиву ([]) та anyOf/
oneOf/allOf. Схеми плагінів і каналів середовища виконання об’єднуються після
завантаження реєстру маніфестів.
Якщо перевірка завершується невдало:
- Gateway не запускається
- Працюють лише діагностичні команди (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Виконайте
openclaw doctor, щоб переглянути точний перелік проблем - Виконайте
openclaw doctor --fix(--repair— той самий прапорець;--yesпропускає запити підтвердження), щоб застосувати виправлення
Після кожного успішного запуску Gateway зберігає надійну останню відому справну копію,
але запуск і гаряче перезавантаження не відновлюють її автоматично — це робить лише openclaw doctor --fix.
Якщо openclaw.json не проходить перевірку (включно з локальною перевіркою плагіна), запуск
Gateway завершується невдало або перезавантаження пропускається, а поточне середовище виконання зберігає останню прийняту
конфігурацію. Відхилений запис також зберігається як <path>.rejected.<timestamp> для перевірки.
Gateway блокує записи, схожі на випадкове затирання даних: видалення gateway.mode,
втрату блоку meta або зменшення файлу більш ніж удвічі — якщо запис
явно не дозволяє руйнівні зміни. Перенесення до останньої відомої справної копії пропускається, якщо
кандидат містить заповнювач прихованого секрету, як-от *** або [redacted].
Поширені завдання
Налаштувати канал (WhatsApp, Telegram, Discord тощо)
Кожен канал має власний розділ конфігурації в channels.<provider>. Кроки налаштування див. на спеціальній сторінці відповідного каналу:
- Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - iMessage —
channels.imessage - Mattermost —
channels.mattermost - Microsoft Teams —
channels.msteams - Signal —
channels.signal - Slack —
channels.slack - Telegram —
channels.telegram - WhatsApp —
channels.whatsapp
Усі канали використовують однаковий шаблон політики особистих повідомлень:
{ channels: { telegram: { enabled: true, botToken: "123:abc", dmPolicy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["tg:123"], // лише для allowlist/open }, },}Вибрати й налаштувати моделі
Задайте основну модель і необов’язкові резервні моделі:
{ agents: { defaults: { model: { primary: "anthropic/claude-sonnet-4-6", fallbacks: ["openai/gpt-5.4"], }, models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" }, "openai/gpt-5.4": { alias: "GPT" }, }, }, },}agents.defaults.modelsвизначає каталог моделей і слугує списком дозволених значень для/model; записиprovider/*фільтрують/model,/modelsта засоби вибору моделей до вибраних постачальників, водночас і надалі використовуючи динамічне виявлення моделей.- Використовуйте
openclaw config set agents.defaults.models '<json>' --strict-json --merge, щоб додавати записи до списку дозволених, не видаляючи наявні моделі. Звичайні заміни, які видалили б записи, відхиляються, якщо не передати--replace. - Посилання на моделі використовують формат
provider/model(наприклад,anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxкерує зменшенням розміру зображень у транскриптах та інструментах (стандартне значення —1200); менші значення зазвичай скорочують використання токенів комп’ютерного зору під час запусків із великою кількістю знімків екрана.- Відомості про перемикання моделей у чаті див. у CLI моделей, а про ротацію автентифікації та поведінку резервних моделей — у Перемиканні моделей у разі відмови.
- Відомості про власних або самостійно розміщених постачальників див. у розділі Власні постачальники довідника.
Визначити, хто може надсилати повідомлення боту
Доступ до особистих повідомлень контролюється окремо для кожного каналу через dmPolicy (стандартне значення — "pairing"):
"pairing": невідомі відправники отримують одноразовий код сполучення для схвалення"allowlist": дозволено лише відправникам ізallowFrom(або зі сховища дозволених сполучених відправників)"open": дозволити всі вхідні особисті повідомлення (потребуєallowFrom: ["*"])"disabled": ігнорувати всі особисті повідомлення
Для груп використовуйте groupPolicy ("allowlist" | "open" | "disabled") разом із groupAllowFrom або списками дозволених значень для конкретних каналів.
Докладні відомості для кожного каналу див. у повному довіднику.
Налаштувати обробку згадок у груповому чаті
За замовчуванням групові повідомлення потребують згадки. Налаштуйте шаблони активації для кожного агента. Звичайні відповіді в групах і каналах надсилаються автоматично; увімкніть шлях через інструмент повідомлень для спільних кімнат, де агент має вирішувати, коли відповідати:
{ messages: { visibleReplies: "automatic", // встановіть "message_tool", щоб усюди вимагати надсилання через інструмент повідомлень groupChat: { visibleReplies: "message_tool", // за явною згодою; видимий результат потребує message(action=send) unmentionedInbound: "room_event", // групове спілкування без згадок, яке завжди надходить, є тихим контекстом }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw"], }, }, ], }, channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}- Згадки в метаданих: нативні @-згадки (торкніться для згадки у WhatsApp, @bot у Telegram тощо)
- Текстові шаблони: безпечні шаблони регулярних виразів у
mentionPatterns - Видимі відповіді:
messages.visibleRepliesможе глобально вимагати надсилання через інструмент повідомлень;messages.groupChat.visibleRepliesперевизначає це для груп і каналів. - Режими видимих відповідей, перевизначення для окремих каналів і режим чату із собою див. у повному довіднику.
Обмежити Skills для кожного агента
Використовуйте agents.defaults.skills як спільну основу, а потім перевизначайте її для окремих
агентів за допомогою agents.list[].skills:
{ agents: { defaults: { skills: ["github", "weather"], }, list: [ { id: "writer" }, // успадковує github, weather { id: "docs", skills: ["docs-search"] }, // замінює стандартні значення { id: "locked-down", skills: [] }, // без Skills ], },}- Не вказуйте
agents.defaults.skills, щоб Skills за замовчуванням не мали обмежень. - Не вказуйте
agents.list[].skills, щоб успадкувати стандартні значення. - Установіть
agents.list[].skills: [], щоб не використовувати Skills. - Див. Skills, Конфігурація Skills і Довідник із конфігурації.
Налаштувати моніторинг стану каналів Gateway
Визначте, наскільки активно Gateway перезапускатиме канали, що здаються неактивними:
{ gateway: { channelHealthCheckMinutes: 5, channelStaleEventThresholdMinutes: 30, channelMaxRestartsPerHour: 10, }, channels: { telegram: { healthMonitor: { enabled: false }, accounts: { alerts: { healthMonitor: { enabled: true }, }, }, }, },}- Показані значення є стандартними. Установіть
gateway.channelHealthCheckMinutes: 0, щоб глобально вимкнути перезапуски моніторингом стану. channelStaleEventThresholdMinutesмає бути більшим або дорівнювати інтервалу перевірки.- Використовуйте
channels.<provider>.healthMonitor.enabledабоchannels.<provider>.accounts.<id>.healthMonitor.enabled, щоб вимкнути автоматичні перезапуски для одного каналу чи облікового запису, не вимикаючи глобальний моніторинг. - Відомості про діагностику роботи див. у розділі Перевірки стану, а опис усіх полів — у повному довіднику.
Налаштувати час очікування рукостискання WebSocket у Gateway
Надайте локальним клієнтам більше часу для завершення рукостискання WebSocket перед автентифікацією на навантажених або малопотужних хостах:
{ gateway: { handshakeTimeoutMs: 30000, },}- За замовчуванням —
15000мілісекунд. OPENCLAW_HANDSHAKE_TIMEOUT_MSусе ще має пріоритет для одноразових перевизначень служби або оболонки.- Спочатку бажано усунути зависання під час запуску або в циклі подій; цей параметр призначений для справних хостів, які повільно прогріваються.
Налаштування сеансів і скидань
Сеанси керують безперервністю та ізоляцією розмов:
{ session: { dmScope: "per-channel-peer", // рекомендовано для кількох користувачів threadBindings: { enabled: true, idleHours: 24, maxAgeHours: 0, }, reset: { mode: "daily", atHour: 4, idleMinutes: 120, }, },}dmScope:main(спільний) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: глобальні типові параметри маршрутизації сеансів, прив’язаних до гілок./focus,/unfocus,/agents,/session idleі/session max-ageвідповідно прив’язують, відв’язують, показують список і налаштовують це для кожного сеансу (Discord прив’язує гілки, Telegram — теми/розмови).- Відомості про області дії, зв’язки ідентичностей і політику надсилання див. у розділі Керування сеансами.
- Опис усіх полів див. у повному довіднику.
Увімкнення ізоляції в пісочниці
Запускайте сеанси агентів в ізольованих середовищах виконання пісочниці:
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}Спочатку зберіть образ: із робочої копії вихідного коду виконайте scripts/sandbox-setup.sh, а для встановлення з npm див. вбудовану команду docker build у розділі Пісочниця § Образи та налаштування.
Повний посібник див. у розділі Пісочниця, а всі параметри — у повному довіднику.
Увімкнення push-сповіщень через ретранслятор для офіційних збірок iOS
Для push-сповіщень у загальнодоступних збірках з App Store використовується розміщений ретранслятор OpenClaw: https://ios-push-relay.openclaw.ai.
Власні розгортання ретранслятора потребують навмисно відокремленого процесу збирання та розгортання iOS, у якому URL-адреса ретранслятора збігається з URL-адресою ретранслятора Gateway. Якщо використовується власна збірка з ретранслятором, задайте це в конфігурації Gateway:
{ gateway: { push: { apns: { relay: { baseUrl: "https://relay.example.com", // Необов’язково. За замовчуванням: 10000 timeoutMs: 10000, }, }, }, },}Еквівалент у CLI:
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.comРезультат:
- Дає Gateway змогу надсилати
push.test, сигнали пробудження та пробудження для повторного підключення через зовнішній ретранслятор. - Використовує дозвіл на надсилання, обмежений реєстрацією, який передає спарений застосунок iOS. Gateway не потребує токена ретранслятора для всього розгортання.
- Прив’язує кожну реєстрацію через ретранслятор до ідентичності Gateway, з якою спарено застосунок iOS, щоб інший Gateway не міг повторно використати збережену реєстрацію.
- Зберігає пряме використання APNs для локальних або ручних збірок iOS. Надсилання через ретранслятор застосовується лише до офіційно розповсюджуваних збірок, зареєстрованих через ретранслятор.
- Має збігатися з базовою URL-адресою ретранслятора, вбудованою у збірку iOS, щоб трафік реєстрації та надсилання надходив до одного розгортання ретранслятора.
Наскрізний процес:
- Установіть офіційний застосунок iOS.
- Необов’язково: налаштуйте
gateway.push.apns.relay.baseUrlу Gateway лише в разі використання навмисно відокремленої власної збірки з ретранслятором. - Спарте застосунок iOS із Gateway і дозвольте підключитися сеансам Node та оператора.
- Застосунок iOS отримує ідентичність Gateway, реєструється в ретрансляторі за допомогою App Attest і квитанції застосунку, а потім публікує корисне навантаження
push.apns.registerчерез ретранслятор у спареному Gateway. - Gateway зберігає дескриптор ретранслятора й дозвіл на надсилання, а потім використовує їх для
push.test, сигналів пробудження та пробуджень для повторного підключення.
Примітки щодо експлуатації:
- Якщо застосунок iOS перемкнено на інший Gateway, повторно підключіть застосунок, щоб він міг опублікувати нову реєстрацію ретранслятора, прив’язану до цього Gateway.
- Якщо випущено нову збірку iOS, яка використовує інше розгортання ретранслятора, застосунок оновить кешовану реєстрацію ретранслятора замість повторного використання старого джерела ретранслятора.
Примітка щодо сумісності:
OPENCLAW_APNS_RELAY_BASE_URLіOPENCLAW_APNS_RELAY_TIMEOUT_MSусе ще працюють як тимчасові перевизначення через змінні середовища.- Власні URL-адреси ретранслятора Gateway мають збігатися з базовою URL-адресою ретранслятора, вбудованою у збірку iOS; загальнодоступний канал випуску App Store відхиляє перевизначення URL-адреси ретранслятора iOS.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueзалишається аварійним механізмом лише для розробки через зворотний інтерфейс; не зберігайте URL-адреси HTTP-ретранслятора в конфігурації.
Наскрізний процес див. у розділі Застосунок iOS, а модель безпеки ретранслятора — у розділі Процес автентифікації та встановлення довіри.
Налаштування Heartbeat (періодичних перевірок)
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", }, }, },}every: рядок тривалості (30m,2h). Щоб вимкнути, задайте0m. За замовчуванням:30m.target:last|none|<channel-id>(наприклад,discord,matrix,telegramабоwhatsapp)directPolicy:allow(за замовчуванням) абоblockдля цілей Heartbeat у стилі особистих повідомлень- Повний посібник див. у розділі Heartbeat.
Налаштування завдань Cron
{ cron: { enabled: true, maxConcurrentRuns: 8, // за замовчуванням; диспетчеризація Cron + ізольоване виконання ходу агента Cron sessionRetention: "24h", },}sessionRetention: видаляє завершені ізольовані сеанси запуску з рядків сеансів SQLite (за замовчуванням24h; щоб вимкнути, задайтеfalse).- У журналі запусків автоматично зберігаються 2000 найновіших кінцевих рядків для кожного завдання; для втрачених рядків зберігається 24-годинне вікно очищення.
- Огляд функції та приклади CLI див. у розділі Завдання Cron.
Налаштування Webhook (обробників)
Увімкніть кінцеві точки HTTP Webhook у Gateway:
{ hooks: { enabled: true, token: "shared-secret", path: "/hooks", defaultSessionKey: "hook:ingress", allowRequestSessionKey: false, allowedSessionKeyPrefixes: ["hook:"], mappings: [ { match: { path: "gmail" }, action: "agent", agentId: "main", deliver: true, }, ], },}Примітка щодо безпеки:
- Вважайте весь вміст корисного навантаження обробників/Webhook недовіреними вхідними даними.
- Використовуйте окремий
hooks.token; не використовуйте повторно активні секрети автентифікації Gateway (gateway.auth.token/OPENCLAW_GATEWAY_TOKENабоgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Автентифікація обробників виконується лише через заголовки (
Authorization: Bearer ...абоx-openclaw-token); токени в рядку запиту відхиляються. hooks.pathне може бути/; розміщуйте вхідний трафік Webhook в окремому підшляху, наприклад/hooks.- Не вмикайте прапорці обходу перевірки небезпечного вмісту (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), крім випадків суворо обмеженого налагодження. - Якщо ввімкнено
hooks.allowRequestSessionKey, також задайтеhooks.allowedSessionKeyPrefixes, щоб обмежити ключі сеансів, які може вибирати викликач. - Для агентів, керованих обробниками, віддавайте перевагу потужним сучасним рівням моделей і суворій політиці інструментів (наприклад, лише обмін повідомленнями та, де можливо, пісочниця).
Усі параметри зіставлення та інтеграцію з Gmail див. у повному довіднику.
Налаштування маршрутизації між кількома агентами
Запускайте кілька ізольованих агентів з окремими робочими просторами та сеансами:
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}Правила прив’язування та профілі доступу для кожного агента див. у розділах Кілька агентів і повний довідник.
Поділ конфігурації на кілька файлів ($include)
Використовуйте $include для впорядкування великих конфігурацій:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/a.json5", "./clients/b.json5"], },}- Один файл: замінює об’єкт, що його містить
- Масив файлів: глибоко об’єднується за порядком (пізніші мають пріоритет), до 10 рівнів вкладеності
- Сусідні ключі: об’єднуються після включень (перевизначають включені значення)
- Відносні шляхи: визначаються відносно файлу, що виконує включення
- Формат шляху: шляхи включення не повинні містити нульових байтів і мають бути строго коротшими за 4096 символів до та після визначення
- Записи, керовані OpenClaw: коли запис змінює лише один розділ верхнього рівня,
підтримуваний включенням одного файлу, наприклад
plugins: { $include: "./plugins.json5" }, OpenClaw оновлює цей включений файл і залишаєopenclaw.jsonбез змін - Непідтримуваний наскрізний запис: кореневі включення, масиви включень і включення із сусідніми перевизначеннями завершуються відмовою для записів, керованих OpenClaw, замість зведення конфігурації в один файл
- Обмеження: шляхи
$includeмають визначатися в межах каталогу, що міститьopenclaw.json. Щоб спільно використовувати дерево на різних машинах або між користувачами, задайтеOPENCLAW_INCLUDE_ROOTSяк список шляхів (:у POSIX,;у Windows) до додаткових каталогів, на які можуть посилатися включення. Символічні посилання визначаються та перевіряються повторно, тому шлях, який лексично міститься в каталозі конфігурації, але фактична ціль якого виходить за межі всіх дозволених коренів, усе одно відхиляється. - Обробка помилок: чіткі повідомлення про відсутні файли, помилки синтаксичного аналізу, циклічні включення, неправильний формат шляху та надмірну довжину
Гаряче перезавантаження конфігурації
Gateway стежить за ~/.openclaw/openclaw.json і автоматично застосовує зміни — для більшості параметрів ручний перезапуск не потрібен.
Прямі зміни файлу вважаються недовіреними, доки не пройдуть перевірку. Спостерігач чекає,
доки завершаться операції запису тимчасових файлів і перейменування в редакторі, читає остаточний файл та відхиляє
неправильні зовнішні зміни, не перезаписуючи openclaw.json. Для записів конфігурації,
керованих OpenClaw, перед записом використовується та сама перевірка схеми (правила перезапису й відновлення,
що застосовуються до кожного запису, див. у розділі Сувора перевірка).
Якщо з’являється config reload skipped (invalid config) або під час запуску повідомляється Invalid config, перевірте конфігурацію, виконайте openclaw config validate, а потім openclaw doctor --fix для виправлення. Контрольний список див. у розділі Усунення несправностей Gateway.
Режими перезавантаження
| Режим | Поведінка |
|---|---|
hybrid (за замовчуванням) |
Миттєво застосовує безпечні зміни без перезапуску. Автоматично перезапускається для критичних змін. |
hot |
Застосовує без перезапуску лише безпечні зміни. Записує попередження, коли потрібен перезапуск — його виконуєте ви. |
restart |
Перезапускає Gateway за будь-якої зміни конфігурації, безпечної чи ні. |
off |
Вимикає спостереження за файлами. Зміни набувають чинності після наступного ручного перезапуску. |
{ gateway: { reload: { mode: "hybrid", debounceMs: 300 }, },}Що застосовується без перезапуску, а що потребує перезапуску
Більшість полів застосовуються без перезапуску й простою; деякі розділи, що застосовуються без перезапуску, перезапускають лише відповідну
підсистему (канал, cron, heartbeat, монітор стану), а не весь Gateway. У режимі
hybrid зміни, що потребують перезапуску Gateway, обробляються автоматично.
| Категорія | Поля | Чи потрібен перезапуск Gateway? |
|---|---|---|
| Канали | channels.*, web (WhatsApp) — усі вбудовані канали та канали плагінів |
Ні (перезапускає цей канал) |
| Агент і моделі | agent, agents, models, routing |
Ні |
| Автоматизація | hooks, cron, agent.heartbeat |
Ні (перезапускає цю підсистему) |
| Сеанси та повідомлення | session, messages |
Ні |
| Інструменти та медіа | tools, skills, mcp, audio, talk |
Ні |
| Конфігурація плагінів | plugins.entries.*, plugins.allow, plugins.deny, plugins.enabled |
Ні (перезавантажує середовище виконання плагіна) |
| Інтерфейс та інше | ui, logging, identity, bindings |
Ні |
| Сервер Gateway | gateway.* (порт, прив’язка, автентифікація, tailscale, TLS, HTTP, push) |
Так |
| Інфраструктура | discovery, browser, plugins.load, plugins.installs |
Так |
Планування перезавантаження
Коли ви редагуєте вихідний файл, на який посилається $include, OpenClaw планує
перезавантаження на основі структури вихідних файлів, а не сплощеного подання в пам’яті.
Це забезпечує передбачуваність рішень щодо гарячого перезавантаження (застосування без перезапуску чи перезапуск), навіть коли
один розділ верхнього рівня міститься в окремому включеному файлі, як-от
plugins: { $include: "./plugins.json5" }. Планування перезавантаження завершується безпечною відмовою, якщо
структура вихідних файлів неоднозначна.
RPC конфігурації (програмні оновлення)
Для інструментів, які записують конфігурацію через API Gateway, рекомендовано такий процес:
config.schema.lookupдля перевірки одного піддерева (неглибокий вузол схеми та зведення дочірніх елементів)config.getдля отримання поточного знімка разом ізhashconfig.patchдля часткових оновлень (патч злиття JSON: об’єкти зливаються,nullвидаляє, масиви замінюються після явного підтвердження за допомогоюreplacePaths, якщо записи буде видалено)config.applyлише коли потрібно замінити всю конфігураціюupdate.runдля явного самооновлення з перезапуском; додайтеcontinuationMessage, якщо сеанс після перезапуску має виконати один додатковий хідupdate.statusдля перевірки останнього маркера перезапуску після оновлення та версії, що працює після перезапуску
Агенти мають передусім звертатися до config.schema.lookup для отримання точної
документації й обмежень на рівні полів. Використовуйте довідник із конфігурації,
коли потрібна ширша карта конфігурації, значення за замовчуванням або посилання на спеціалізовані
довідники підсистем.
Приклад часткового патча:
openclaw gateway call config.get --params '{}' # отримати payload.hashopenclaw gateway call config.patch --params '{ "raw": "{ channels: { telegram: { groups: { \"*\": { requireMention: false } } } } }", "baseHash": "<hash>"}'І config.apply, і config.patch приймають raw, baseHash, sessionKey,
note та restartDelayMs. baseHash є обов’язковим для обох методів, якщо
файл конфігурації вже існує (під час першого запису без наявної конфігурації перевірка пропускається).
config.patch також приймає replacePaths — масив шляхів конфігурації, для яких
заміна масиву є навмисною. Якщо патч замінює або видаляє наявний масив,
залишаючи менше записів, Gateway відхиляє запис, якщо точного шляху немає
в replacePaths; вкладені масиви всередині елементів масиву використовують [], наприклад
agents.list[].skills. Це запобігає непомітному перезаписуванню масивів маршрутизації або списків дозволів
усіченими знімками config.get. Використовуйте config.apply, коли
потрібно замінити всю конфігурацію.
Змінні середовища
OpenClaw зчитує змінні середовища з батьківського процесу, а також із:
.envу поточному робочому каталозі (якщо наявний)~/.openclaw/.env(глобальний резервний варіант)
Жоден із цих файлів не перевизначає наявні змінні середовища. Також можна задавати вбудовані змінні середовища в конфігурації:
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-..." }, },}Імпорт середовища оболонки (необов’язково)
Якщо цю функцію ввімкнено й очікувані ключі не задано, OpenClaw запускає вашу оболонку входу та імпортує лише відсутні ключі:
{env: { shellEnv: { enabled: true, timeoutMs: 15000 },},}Еквівалентна змінна середовища: OPENCLAW_LOAD_SHELL_ENV=1. Значення timeoutMs за замовчуванням: 15000.
Підставлення змінних середовища у значення конфігурації
Посилайтеся на змінні середовища в будь-якому рядковому значенні конфігурації за допомогою ${VAR_NAME}:
{gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },}Правила:
- Зіставляються лише назви у верхньому регістрі:
[A-Z_][A-Z0-9_]* - Відсутні або порожні змінні спричиняють помилку під час завантаження
- Для буквального виводу екрануйте за допомогою
$${VAR} - Працює у файлах
$include - Вбудоване підставлення:
"${BASE}/v1"→"https://api.example.com/v1"
Посилання на секрети (середовище, файл, виконання)
Для полів, що підтримують об’єкти SecretRef, можна використовувати:
{models: { providers: { openai: { apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" } }, },},skills: { entries: { "image-lab": { apiKey: { source: "file", provider: "filemain", id: "/skills/entries/image-lab/apiKey", }, }, },},channels: { googlechat: { serviceAccountRef: { source: "exec", provider: "vault", id: "channels/googlechat/serviceAccount", }, },},}Докладні відомості про SecretRef (зокрема secrets.providers для env/file/exec) наведено в розділі Керування секретами.
Підтримувані шляхи облікових даних перелічено в розділі Поверхня облікових даних SecretRef.
Повний порядок пріоритетів і джерела див. у розділі Середовище.
Повний довідник
Повний опис усіх полів див. у довіднику з конфігурації.
Пов’язані матеріали: Приклади конфігурації · Довідник із конфігурації · Doctor