Конфігурація
OpenClaw зчитує необов’язкову конфігурацію з~/.openclaw/openclaw.json.
Якщо файл відсутній, OpenClaw використовує безпечні значення за замовчуванням. Поширені причини додати конфігурацію:
- Підключити канали та керувати тим, хто може надсилати повідомлення боту
- Налаштувати моделі, інструменти, ізоляцію або автоматизацію (Cron, hooks)
- Налаштувати сесії, медіа, мережу або UI
Мінімальна конфігурація
Редагування конфігурації
- Інтерактивний майстер
- CLI (однорядкові команди)
- Control UI
- Пряме редагування
Сувора валідація
Примітки щодо інструментів схеми:openclaw config schemaвиводить ту саму сім’ю JSON Schema, яку використовують Control UI і валідація конфігурації.- Вважайте цей вивід схеми канонічним машиночитаним контрактом для
openclaw.json; цей огляд і довідник конфігурації її узагальнюють. - Значення полів
titleіdescriptionпереносяться у вивід схеми для інструментів редактора та форм. - Вкладені об’єкти, шаблонні (
*) і елементи масивів ([]) успадковують ті самі метадані документації там, де існує відповідна документація поля. - Гілки композиції
anyOf/oneOf/allOfтакож успадковують ті самі метадані документації, тож варіанти union/intersection зберігають ту саму довідку по полях. config.schema.lookupповертає один нормалізований шлях конфігурації з неглибоким вузлом схеми (title,description,type,enum,const, типові межі та подібні поля валідації), відповідні метадані підказок UI і короткі описи безпосередніх дочірніх елементів для інструментів деталізації.- Схеми Plugin/каналів під час виконання об’єднуються, коли gateway може завантажити поточний реєстр маніфестів.
pnpm config:docs:checkвиявляє розбіжності між базовими артефактами конфігурації для документації та поточною поверхнею схеми.
- Gateway не запускається
- Працюють лише діагностичні команди (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Запустіть
openclaw doctor, щоб побачити точні проблеми - Запустіть
openclaw doctor --fix(або--yes), щоб застосувати виправлення
openclaw.json пізніше змінено поза OpenClaw і він більше не проходить валідацію, під час запуску
і гарячого перезавантаження пошкоджений файл зберігається як знімок .clobbered.* із часовою позначкою,
відновлюється остання справна копія, а в журнал записується помітне попередження з причиною відновлення.
Під час наступного ходу головного агента він також отримує попередження системної події про те, що
конфігурацію було відновлено і її не можна бездумно перезаписувати. Просування останньої справної копії
оновлюється після перевіреного запуску та після прийнятих гарячих перезавантажень, зокрема
для записів конфігурації, виконаних самим OpenClaw, якщо хеш збереженого файла все ще збігається з прийнятим
записом. Просування пропускається, коли кандидат містить відредаговані заповнювачі секретів
на кшталт *** або скорочені значення токенів.
Поширені завдання
Налаштувати канал (WhatsApp, Telegram, Discord тощо)
Налаштувати канал (WhatsApp, Telegram, Discord тощо)
Кожен канал має власний розділ конфігурації в
channels.<provider>. Перегляньте окрему сторінку каналу, щоб виконати налаштування:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
Вибрати й налаштувати моделі
Вибрати й налаштувати моделі
Вкажіть основну модель і необов’язкові резервні варіанти:
agents.defaults.modelsвизначає каталог моделей і слугує allowlist для/model.- Посилання на моделі використовують формат
provider/model(наприклад,anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxкерує зменшенням масштабу зображень у транскрипті/інструментах (типове значення1200); менші значення зазвичай зменшують використання vision-токенів у сценаріях із великою кількістю знімків екрана.- Перегляньте Models CLI, щоб перемикати моделі в чаті, і Model Failover, щоб дізнатися про ротацію автентифікації та поведінку резервних варіантів.
- Для користувацьких/self-hosted провайдерів див. Custom providers у довіднику.
Керувати тим, хто може надсилати повідомлення боту
Керувати тим, хто може надсилати повідомлення боту
Доступ до приватних повідомлень контролюється окремо для кожного каналу через
dmPolicy:"pairing"(типово): невідомі відправники отримують одноразовий код сполучення для підтвердження"allowlist": лише відправники зallowFrom(або зі сховища дозволених сполучених користувачів)"open": дозволити всі вхідні приватні повідомлення (потрібноallowFrom: ["*"])"disabled": ігнорувати всі приватні повідомлення
groupPolicy + groupAllowFrom або allowlist, специфічні для каналу.Докладні відомості для кожного каналу див. у повному довіднику.Налаштувати обмеження за згадкою в груповому чаті
Налаштувати обмеження за згадкою в груповому чаті
Повідомлення в групах за замовчуванням вимагають згадки. Налаштуйте шаблони для кожного агента:
- Метадані згадок: нативні @-згадки (WhatsApp tap-to-mention, Telegram @bot тощо)
- Текстові шаблони: безпечні regex-шаблони в
mentionPatterns - Докладніше про перевизначення для кожного каналу та режим self-chat див. у повному довіднику.
Обмежити Skills для агента
Обмежити Skills для агента
Використовуйте
agents.defaults.skills для спільної базової конфігурації, а потім перевизначайте
окремих агентів через agents.list[].skills:- Не вказуйте
agents.defaults.skills, якщо за замовчуванням Skills не мають бути обмежені. - Не вказуйте
agents.list[].skills, щоб успадкувати типові значення. - Установіть
agents.list[].skills: [], щоб не дозволити жодних Skills. - Див. Skills, конфігурацію Skills і довідник конфігурації.
Налаштувати моніторинг стану каналів gateway
Налаштувати моніторинг стану каналів gateway
Керуйте тим, наскільки агресивно gateway перезапускає канали, які виглядають застарілими:
- Установіть
gateway.channelHealthCheckMinutes: 0, щоб глобально вимкнути перезапуски моніторингу стану. channelStaleEventThresholdMinutesмає бути більшим або дорівнювати інтервалу перевірки.- Використовуйте
channels.<provider>.healthMonitor.enabledабоchannels.<provider>.accounts.<id>.healthMonitor.enabled, щоб вимкнути автоперезапуски для одного каналу чи облікового запису без вимкнення глобального монітора. - Див. Health Checks для операційної діагностики та повний довідник для всіх полів.
Налаштувати сесії та скидання
Налаштувати сесії та скидання
Сесії керують безперервністю розмови та ізоляцією:
dmScope:main(спільна) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: глобальні типові значення для маршрутизації сесій, прив’язаних до тредів (Discord підтримує/focus,/unfocus,/agents,/session idleі/session max-age).- Див. Керування сесіями для відомостей про області дії, зв’язки ідентичностей і політику надсилання.
- Усі поля див. у повному довіднику.
Увімкнути ізоляцію
Увімкнути ізоляцію
Запускайте сесії агента в ізольованих runtime ізолятора:Спочатку зберіть образ:
scripts/sandbox-setup.shПовний посібник див. у Sandboxing, а всі параметри — у повному довіднику.Увімкнути push через relay для офіційних збірок iOS
Увімкнути push через relay для офіційних збірок iOS
Push через relay налаштовується в Еквівалент у CLI:Що це робить:
openclaw.json.Укажіть це в конфігурації gateway:- Дозволяє gateway надсилати
push.test, сигнали пробудження і сигнали повторного підключення через зовнішній relay. - Використовує grant на надсилання в межах реєстрації, який пересилає сполучений застосунок iOS. Gateway не потребує relay-токена рівня всього розгортання.
- Прив’язує кожну реєстрацію через relay до ідентичності gateway, з якою було сполучено застосунок iOS, тож інший gateway не може повторно використати збережену реєстрацію.
- Залишає локальні/ручні збірки iOS на прямому APNs. Надсилання через relay застосовується лише до офіційно розповсюджених збірок, що зареєструвалися через relay.
- Має збігатися з базовим URL relay, вбудованим в офіційну/TestFlight збірку iOS, щоб трафік реєстрації та надсилання потрапляв до того самого розгортання relay.
- Установіть офіційну/TestFlight збірку iOS, скомпільовану з тим самим базовим URL relay.
- Налаштуйте
gateway.push.apns.relay.baseUrlу gateway. - Сполучіть застосунок iOS із gateway і дайте змогу підключитися як сесіям node, так і сесіям оператора.
- Застосунок iOS отримує ідентичність gateway, реєструється в relay за допомогою App Attest і квитанції застосунку, а потім публікує payload
push.apns.registerчерез relay до сполученого gateway. - Gateway зберігає relay handle і grant на надсилання, а потім використовує їх для
push.test, сигналів пробудження і сигналів повторного підключення.
- Якщо ви перемикаєте застосунок iOS на інший gateway, перепідключіть застосунок, щоб він міг опублікувати нову relay-реєстрацію, прив’язану до цього gateway.
- Якщо ви випускаєте нову збірку iOS, що вказує на інше розгортання relay, застосунок оновлює свій кешований relay-реєстраційний запис замість повторного використання старого джерела relay.
OPENCLAW_APNS_RELAY_BASE_URLіOPENCLAW_APNS_RELAY_TIMEOUT_MSяк і раніше працюють як тимчасові перевизначення через env.OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueзалишається тимчасовим засобом розробки лише для loopback; не зберігайте HTTP URL relay у конфігурації.
Налаштувати Heartbeat (періодичні перевірки зв’язку)
Налаштувати Heartbeat (періодичні перевірки зв’язку)
every: рядок тривалості (30m,2h). Установіть0m, щоб вимкнути.target:last|none|<channel-id>(наприклад,discord,matrix,telegramабоwhatsapp)directPolicy:allow(типово) абоblockдля цілей Heartbeat у стилі DM- Повний посібник див. у Heartbeat.
Налаштувати Cron-завдання
Налаштувати Cron-завдання
sessionRetention: видаляти завершені ізольовані сесії виконання зsessions.json(типово24h; установітьfalse, щоб вимкнути).runLog: обрізатиcron/runs/<jobId>.jsonlза розміром і кількістю збережених рядків.- Огляд можливостей і приклади CLI див. у Cron jobs.
Налаштувати Webhook-и (hooks)
Налаштувати Webhook-и (hooks)
Увімкніть HTTP-ендпоїнти Webhook у Gateway:Примітка щодо безпеки:
- Вважайте весь вміст payload hook/Webhook недовіреним введенням.
- Використовуйте окремий
hooks.token; не використовуйте повторно спільний токен Gateway. - Автентифікація hook виконується лише через заголовки (
Authorization: Bearer ...абоx-openclaw-token); токени в рядку запиту відхиляються. hooks.pathне може бути/; тримайте вхідний трафік Webhook на окремому підшляху, наприклад/hooks.- Залишайте прапори обходу небезпечного вмісту вимкненими (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), якщо не виконуєте вузькоспрямоване налагодження. - Якщо ви вмикаєте
hooks.allowRequestSessionKey, також установітьhooks.allowedSessionKeyPrefixes, щоб обмежити ключі сесій, які вибирає викликач. - Для агентів, що запускаються через hook, віддавайте перевагу сильним сучасним рівням моделей і суворій політиці інструментів (наприклад, лише обмін повідомленнями плюс ізоляція, де це можливо).
Налаштувати маршрутизацію кількох агентів
Налаштувати маршрутизацію кількох агентів
Запускайте кількох ізольованих агентів з окремими робочими просторами та сесіями:Правила binding та профілі доступу для кожного агента див. у Multi-Agent і повному довіднику.
Розділити конфігурацію на кілька файлів ($include)
Розділити конфігурацію на кілька файлів ($include)
Використовуйте
$include, щоб упорядковувати великі конфігурації:- Один файл: замінює об’єкт-контейнер
- Масив файлів: глибоко зливається по порядку (пізніший має пріоритет)
- Сусідні ключі: зливаються після include-ів (перевизначають включені значення)
- Вкладені include-и: підтримуються до 10 рівнів вкладеності
- Відносні шляхи: обчислюються відносно файла, що включає
- Обробка помилок: зрозумілі помилки для відсутніх файлів, помилок парсингу та циклічних include-ів
Гаряче перезавантаження конфігурації
Gateway відстежує~/.openclaw/openclaw.json і автоматично застосовує зміни — для більшості налаштувань ручний перезапуск не потрібен.
Прямі редагування файла вважаються недовіреними, доки не пройдуть валідацію. Спостерігач чекає,
поки завершаться тимчасові записи/перейменування редактора, зчитує фінальний файл і відхиляє
некоректні зовнішні зміни, відновлюючи останню справну конфігурацію. Власні записи конфігурації OpenClaw
використовують той самий бар’єр схеми перед записом; руйнівні перезаписи на кшталт
видалення gateway.mode або зменшення файла більш ніж наполовину відхиляються
і зберігаються як .rejected.* для перевірки.
Якщо ви бачите Config auto-restored from last-known-good або
config reload restored last-known-good config у логах, перегляньте відповідний
файл .clobbered.* поруч із openclaw.json, виправте відхилений payload, а потім виконайте
openclaw config validate. Контрольний список відновлення див. у усуненні несправностей Gateway.
Режими перезавантаження
| Режим | Поведінка |
|---|---|
hybrid (типово) | Миттєво гаряче застосовує безпечні зміни. Автоматично перезапускається для критичних. |
hot | Гаряче застосовує лише безпечні зміни. Логує попередження, коли потрібен перезапуск — ви обробляєте це самі. |
restart | Перезапускає Gateway за будь-якої зміни конфігурації, безпечної чи ні. |
off | Вимикає відстеження файла. Зміни набирають чинності під час наступного ручного перезапуску. |
Що застосовується гаряче, а що потребує перезапуску
Більшість полів застосовуються гаряче без простою. У режиміhybrid зміни, що потребують перезапуску, обробляються автоматично.
| Категорія | Поля | Потрібен перезапуск? |
|---|---|---|
| Канали | channels.*, web (WhatsApp) — усі вбудовані канали й канали розширень | Ні |
| Агент і моделі | agent, agents, models, routing | Ні |
| Автоматизація | hooks, cron, agent.heartbeat | Ні |
| Сесії та повідомлення | session, messages | Ні |
| Інструменти й медіа | tools, browser, skills, audio, talk | Ні |
| UI та інше | ui, logging, identity, bindings | Ні |
| Сервер Gateway | gateway.* (port, bind, auth, tailscale, TLS, HTTP) | Так |
| Інфраструктура | discovery, canvasHost, plugins | Так |
gateway.reload і gateway.remote є винятками — їх зміна не спричиняє перезапуск.Config RPC (програмні оновлення)
RPC керуючої площини для запису (
config.apply, config.patch, update.run) мають обмеження швидкості: 3 запити за 60 секунд на deviceId+clientIp. У разі обмеження RPC повертає UNAVAILABLE з retryAfterMs.config.schema.lookup: переглянути одне піддерево конфігурації з певною областю шляху з неглибоким вузлом схеми, відповідними метаданими підказок і короткими описами безпосередніх дочірніх елементівconfig.get: отримати поточний знімок + хешconfig.patch: рекомендований шлях часткового оновленняconfig.apply: лише повна заміна конфігураціїupdate.run: явне самооновлення + перезапуск
config.schema.lookup,
а потім config.patch.
config.apply (повна заміна)
config.apply (повна заміна)
Перевіряє + записує повну конфігурацію і перезапускає Gateway за один крок.Параметри:
raw(string) — payload JSON5 для всієї конфігураціїbaseHash(optional) — хеш конфігурації зconfig.get(обов’язковий, якщо конфігурація існує)sessionKey(optional) — ключ сесії для ping пробудження після перезапускуnote(optional) — примітка для restart sentinelrestartDelayMs(optional) — затримка перед перезапуском (типово 2000)
config.patch (часткове оновлення)
config.patch (часткове оновлення)
Зливає часткове оновлення в наявну конфігурацію (семантика JSON merge patch):
- Об’єкти зливаються рекурсивно
nullвидаляє ключ- Масиви замінюються
raw(string) — JSON5 лише з тими ключами, які потрібно змінитиbaseHash(required) — хеш конфігурації зconfig.getsessionKey,note,restartDelayMs— те саме, що й уconfig.apply
config.apply: об’єднання відкладених перезапусків плюс 30-секундний період охолодження між циклами перезапуску.Змінні середовища
OpenClaw зчитує змінні середовища з батьківського процесу, а також із:.envу поточному робочому каталозі (якщо наявний)~/.openclaw/.env(глобальний резервний варіант)
Імпорт shell env (необов’язково)
Імпорт shell env (необов’язково)
Якщо це ввімкнено і очікувані ключі не задані, OpenClaw запускає вашу login shell і імпортує лише відсутні ключі:Еквівалент змінної середовища:
OPENCLAW_LOAD_SHELL_ENV=1Підстановка env var у значеннях конфігурації
Підстановка env var у значеннях конфігурації
Посилайтеся на змінні середовища в будь-якому рядковому значенні конфігурації за допомогою Правила:
${VAR_NAME}:- Зіставляються лише назви у верхньому регістрі:
[A-Z_][A-Z0-9_]* - Відсутні/порожні змінні спричиняють помилку під час завантаження
- Екрануйте як
$${VAR}для буквального виводу - Працює всередині файлів
$include - Вбудована підстановка:
"${BASE}/v1"→"https://api.example.com/v1"
SecretRef (env, file, exec)
SecretRef (env, file, exec)
Для полів, що підтримують об’єкти SecretRef, ви можете використовувати:Докладно про SecretRef (включно з
secrets.providers для env/file/exec) див. у Керування секретами.
Підтримувані шляхи облікових даних наведено в Поверхня облікових даних SecretRef.Повний довідник
Повний довідник по полях див. у Довіднику конфігурації.Пов’язане: Приклади конфігурації · Довідник конфігурації · Doctor