~/.openclaw/openclaw.json.
Активний шлях конфігурації має бути звичайним файлом. Макети openclaw.json
із символьними посиланнями не підтримуються для записів, якими володіє OpenClaw; атомарний запис може замінити
шлях замість збереження символьного посилання. Якщо ви зберігаєте конфігурацію поза
стандартним каталогом стану, спрямуйте OPENCLAW_CONFIG_PATH безпосередньо на реальний файл.
Якщо файл відсутній, OpenClaw використовує безпечні значення за замовчуванням. Типові причини додати конфігурацію:
- Під’єднати канали й керувати тим, хто може писати боту
- Налаштувати моделі, інструменти, ізоляцію або автоматизацію (cron, hooks)
- Налаштувати сесії, медіа, мережу або UI
config.schema.lookup для точних
документів на рівні полів перед редагуванням конфігурації. Використовуйте цю сторінку для орієнтованих на завдання порад і
довідник із конфігурації для ширшої
карти полів і значень за замовчуванням.
Мінімальна конфігурація
Редагування конфігурації
- Інтерактивний майстер
- CLI (однорядкові команди)
- Control UI
- Пряме редагування
Строга валідація
openclaw config schema виводить канонічну JSON Schema, яку використовують Control UI
і валідація. config.schema.lookup отримує один вузол, обмежений шляхом, плюс
зведення дочірніх елементів для інструментів деталізації. Метадані документації полів title/description
передаються через вкладені об’єкти, wildcard (*), елементи масиву ([]) і гілки anyOf/
oneOf/allOf. Схеми runtime plugin і каналів об’єднуються, коли
завантажено реєстр маніфестів.
Коли валідація не проходить:
- Gateway не завантажується
- Працюють лише діагностичні команди (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Запустіть
openclaw doctor, щоб побачити точні проблеми - Запустіть
openclaw doctor --fix(або--yes), щоб застосувати виправлення
openclaw.json
не проходить валідацію (включно з локальною валідацією plugin), запуск Gateway завершується невдачею або
перезавантаження пропускається, а поточний runtime зберігає останню прийняту конфігурацію.
Запустіть openclaw doctor --fix (або --yes), щоб виправити конфігурацію з префіксами/перезаписами або
відновити останню відому справну копію. Підвищення до останньої відомої справної копії пропускається, коли
кандидат містить редаговані заповнювачі секретів, як-от ***.
Типові завдання
Налаштувати канал (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визначає каталог моделей і діє як список дозволених для/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керує зменшенням масштабу зображень у transcript/tool (типово1200); нижчі значення зазвичай зменшують використання vision-token у запусках із великою кількістю скриншотів.- Дивіться Models CLI для перемикання моделей у чаті та Model Failover для ротації автентифікації й поведінки резервування.
- Для власних/self-hosted провайдерів дивіться Custom providers у довіднику.
Керувати тим, хто може писати боту
Керувати тим, хто може писати боту
dmPolicy:"pairing"(типово): невідомі відправники отримують одноразовий код сполучення для схвалення"allowlist": лише відправники вallowFrom(або в сховищі дозволених після сполучення)"open": дозволити всі вхідні DM (потребуєallowFrom: ["*"])"disabled": ігнорувати всі DM
groupPolicy + groupAllowFrom або списки дозволених, специфічні для каналу.Дивіться повний довідник для подробиць щодо кожного каналу.Налаштувати обмеження згадок у груповому чаті
Налаштувати обмеження згадок у груповому чаті
- Згадки в метаданих: нативні @-згадки (WhatsApp tap-to-mention, Telegram @bot тощо)
- Текстові шаблони: безпечні regex-шаблони в
mentionPatterns - Видимі відповіді:
messages.visibleRepliesможе глобально вимагати надсилання через message-tool;messages.groupChat.visibleRepliesперевизначає це для груп/каналів. - Дивіться повний довідник для режимів видимих відповідей, перевизначень для кожного каналу та режиму 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.channelHealthCheckMinutes: 0, щоб глобально вимкнути перезапуски монітора справності. channelStaleEventThresholdMinutesмає бути більшим або рівним інтервалу перевірки.- Використовуйте
channels.<provider>.healthMonitor.enabledабоchannels.<provider>.accounts.<id>.healthMonitor.enabled, щоб вимкнути автоматичні перезапуски для одного каналу чи облікового запису без вимкнення глобального монітора. - Дивіться Health Checks для операційного налагодження та повний довідник для всіх полів.
Налаштувати тайм-аут WebSocket-рукостискання gateway
Налаштувати тайм-аут WebSocket-рукостискання gateway
- Типове значення —
15000мілісекунд. OPENCLAW_HANDSHAKE_TIMEOUT_MSусе ще має пріоритет для одноразових перевизначень сервісу або shell.- Спершу краще виправити зависання запуску/event-loop; цей параметр призначений для хостів, які справні, але повільні під час прогрівання.
Налаштувати сесії та скидання
Налаштувати сесії та скидання
dmScope:main(спільний) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: глобальні стандартні значення для маршрутизації сесій, прив’язаних до потоків (Discord підтримує/focus,/unfocus,/agents,/session idleі/session max-age).- Див. Керування сесіями щодо областей дії, зв’язків ідентичностей і політики надсилання.
- Див. повний довідник для всіх полів.
Увімкнути пісочницю
Увімкнути пісочницю
scripts/sandbox-setup.sh, або з npm-інсталяції див. вбудовану команду docker build у Пісочниця § Образи та налаштування.Див. Пісочниця для повного посібника та повний довідник для всіх параметрів.Увімкнути push через relay для офіційних збірок iOS
Увімкнути push через relay для офіційних збірок iOS
https://ios-push-relay.openclaw.ai.Власні розгортання relay потребують навмисно окремого шляху збірки/розгортання iOS, URL relay якого збігається з URL relay Gateway. Якщо ви використовуєте власну збірку relay, задайте це в конфігурації Gateway:- Дає Gateway змогу надсилати
push.test, сигнали пробудження та пробудження для повторного підключення через зовнішній relay. - Використовує дозвіл на надсилання з областю реєстрації, переданий спареною програмою iOS. Gateway не потребує токена relay для всього розгортання.
- Прив’язує кожну реєстрацію через relay до ідентичності Gateway, з якою була спарена програма iOS, щоб інший Gateway не міг повторно використати збережену реєстрацію.
- Залишає локальні/ручні збірки iOS на прямих APNs. Надсилання через relay застосовуються лише до офіційно розповсюджених збірок, зареєстрованих через relay.
- Має збігатися з базовим URL relay, вбудованим у збірку iOS, щоб трафік реєстрації та надсилання доходив до того самого розгортання relay.
- Установіть офіційну програму iOS.
- Необов’язково: налаштуйте
gateway.push.apns.relay.baseUrlна Gateway лише під час використання навмисно окремої власної збірки relay. - Спаруйте програму iOS із Gateway і дозвольте підключитися як сесіям вузла, так і оператора.
- Програма iOS отримує ідентичність Gateway, реєструється в relay за допомогою App Attest плюс квитанції програми, а потім публікує підтримане relay корисне навантаження
push.apns.registerу спарений Gateway. - Gateway зберігає дескриптор relay і дозвіл на надсилання, а потім використовує їх для
push.test, сигналів пробудження та пробуджень для повторного підключення.
- Якщо ви перемикаєте програму iOS на інший Gateway, повторно підключіть програму, щоб вона могла опублікувати нову реєстрацію relay, прив’язану до цього Gateway.
- Якщо ви випускаєте нову збірку iOS, що вказує на інше розгортання relay, програма оновлює свою кешовану реєстрацію relay замість повторного використання старого джерела relay.
OPENCLAW_APNS_RELAY_BASE_URLіOPENCLAW_APNS_RELAY_TIMEOUT_MSусе ще працюють як тимчасові перевизначення env.- Власні URL relay Gateway мають збігатися з базовим URL relay, вбудованим у збірку iOS. Публічний release lane App Store відхиляє власні перевизначення URL relay iOS.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueзалишається лише для розробки на loopback; не зберігайте URL HTTP relay у конфігурації.
Налаштувати Heartbeat (періодичні check-in)
Налаштувати Heartbeat (періодичні check-in)
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 для кожного завдання.maxBytesзалишається прийнятим для старіших файлових журналів запусків.- Див. Завдання Cron для огляду функції та прикладів CLI.
Налаштувати вебхуки (hooks)
Налаштувати вебхуки (hooks)
- Розглядайте весь вміст корисного навантаження hook/webhook як недовірений ввід.
- Використовуйте окремий
hooks.token; не використовуйте повторно активні секрети автентифікації Gateway (gateway.auth.token/OPENCLAW_GATEWAY_TOKENабоgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Автентифікація hook працює лише через заголовки (
Authorization: Bearer ...абоx-openclaw-token); токени в query string відхиляються. hooks.pathне може бути/; тримайте вхідний трафік webhook на окремому підшляху, наприклад/hooks.- Тримайте прапорці обходу небезпечного вмісту вимкненими (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), якщо не виконуєте вузько обмежене налагодження. - Якщо ви вмикаєте
hooks.allowRequestSessionKey, також задайтеhooks.allowedSessionKeyPrefixes, щоб обмежити ключі сесій, вибрані викликачем. - Для агентів, керованих hook, надавайте перевагу сильним сучасним рівням моделей і суворій політиці інструментів (наприклад, лише messaging плюс пісочниця, де можливо).
Налаштувати маршрутизацію кількох агентів
Налаштувати маршрутизацію кількох агентів
Розділити конфігурацію на кілька файлів ($include)
Розділити конфігурацію на кілька файлів ($include)
$include, щоб упорядковувати великі конфігурації:- Один файл: замінює об’єкт, що його містить
- Масив файлів: глибоко об’єднується за порядком (пізніші мають пріоритет)
- Сусідні ключі: об’єднуються після include (перевизначають включені значення)
- Вкладені include: підтримуються до 10 рівнів углиб
- Відносні шляхи: розв’язуються відносно файлу, що включає
- Формат шляху: шляхи include не мають містити null bytes і мають бути строго коротшими за 4096 символів до та після розв’язання
- Записи, якими володіє OpenClaw: коли запис змінює лише один розділ верхнього рівня,
підкріплений include одного файлу, наприклад
plugins: { $include: "./plugins.json5" }, OpenClaw оновлює цей включений файл і залишаєopenclaw.jsonбез змін - Непідтримуваний наскрізний запис: кореневі include, масиви include та include із сусідніми перевизначеннями завершуються закритою помилкою для записів, якими володіє OpenClaw, замість сплющення конфігурації
- Обмеження: шляхи
$includeмають розв’язуватися під каталогом, що міститьopenclaw.json. Щоб спільно використовувати дерево між машинами або користувачами, задайтеOPENCLAW_INCLUDE_ROOTSяк список шляхів (:у POSIX,;у Windows) до додаткових каталогів, на які можуть посилатися include. Symlink розв’язуються та перевіряються повторно, тому шлях, який лексично перебуває в каталозі конфігурації, але чия реальна ціль виходить за межі кожного дозволеного кореня, усе одно відхиляється. - Обробка помилок: зрозумілі помилки для відсутніх файлів, помилок розбору, циклічних include, недійсного формату шляху та надмірної довжини
Гаряче перезавантаження конфігурації
Gateway стежить за~/.openclaw/openclaw.json і застосовує зміни автоматично - ручний перезапуск для більшості налаштувань не потрібен.
Пряме редагування файлів вважається недовіреним, доки воно не пройде перевірку. Watcher чекає,
поки вщухне churn тимчасових записів/перейменувань редактора, читає фінальний файл і відхиляє
недійсні зовнішні редагування без перезапису openclaw.json. Записи конфігурації,
якими володіє OpenClaw, використовують той самий schema gate перед записом; руйнівні clobber, як-от
видалення gateway.mode або зменшення файлу більш ніж наполовину, відхиляються і
зберігаються як .rejected.* для перевірки.
Якщо ви бачите config reload skipped (invalid config) або під час запуску повідомляється Invalid config, перевірте конфігурацію, запустіть openclaw config validate, а потім запустіть openclaw doctor --fix для ремонту. Див. Усунення несправностей Gateway
для checklist.
Режими перезавантаження
| Режим | Поведінка |
|---|---|
hybrid (стандартно) | Миттєво гаряче застосовує безпечні зміни. Автоматично перезапускається для критичних. |
hot | Гаряче застосовує лише безпечні зміни. Записує попередження, коли потрібен перезапуск - ви виконуєте його. |
restart | Перезапускає Gateway за будь-якої зміни конфігурації, безпечної чи ні. |
off | Вимикає спостереження за файлами. Зміни набувають чинності після наступного ручного перезапуску. |
Що застосовується гаряче, а що потребує перезапуску
Більшість полів застосовуються гаряче без простою. У режиміhybrid зміни, що потребують перезапуску, обробляються автоматично.
| Категорія | Поля | Потрібен перезапуск? |
|---|---|---|
| Канали | channels.*, web (WhatsApp) - усі вбудовані та Plugin-канали | Ні |
| Агент і моделі | agent, agents, models, routing | Ні |
| Автоматизація | hooks, cron, agent.heartbeat | Ні |
| Сесії та повідомлення | session, messages | Ні |
| Інструменти та медіа | tools, browser, skills, mcp, audio, talk | Ні |
| UI та інше | ui, logging, identity, bindings | Ні |
| Сервер Gateway | gateway.* (порт, прив’язка, автентифікація, Tailscale, TLS, HTTP) | Так |
| Інфраструктура | discovery, plugins | Так |
gateway.reload і gateway.remote є винятками - їх зміна не запускає перезапуск.Планування перезавантаження
Коли ви редагуєте вихідний файл, на який є посилання через$include, OpenClaw планує
перезавантаження на основі авторської структури джерела, а не сплющеного подання в пам’яті.
Це зберігає передбачуваність рішень гарячого перезавантаження (гаряче застосування проти перезапуску), навіть коли
один розділ верхнього рівня міститься у власному включеному файлі, наприклад
plugins: { $include: "./plugins.json5" }. Планування перезавантаження завершується закритою відмовою, якщо
структура джерела неоднозначна.
Config RPC (програмні оновлення)
Для інструментів, які записують конфігурацію через API Gateway, віддавайте перевагу такому процесу:config.schema.lookup, щоб переглянути одне піддерево (поверхневий вузол схеми + зведення дочірніх елементів)config.get, щоб отримати поточний знімок разом ізhashconfig.patchдля часткових оновлень (JSON merge patch: об’єкти об’єднуються,nullвидаляє, масиви замінюються, коли це явно підтверджено черезreplacePaths, якщо записи буде видалено)config.applyлише коли ви маєте намір замінити всю конфігураціюupdate.runдля явного самооновлення з перезапуском; додайтеcontinuationMessage, коли після перезапуску сесія має виконати один додатковий хідupdate.status, щоб переглянути останній маркер перезапуску оновлення та перевірити запущену версію після перезапуску
config.schema.lookup як першу точку для точних
документів і обмежень на рівні полів. Використовуйте Довідник конфігурації,
коли потрібна ширша карта конфігурації, стандартні значення або посилання на окремі
довідники підсистем.
config.apply, config.patch, update.run) мають
ліміт частоти: 3 запити за 60 секунд на deviceId+clientIp. Запити на перезапуск
об’єднуються, а потім застосовується 30-секундна пауза між циклами перезапуску.
update.status доступний лише для читання, але обмежений адміністратором, оскільки маркер перезапуску може
містити зведення кроків оновлення та кінцеві фрагменти виводу команд.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(глобальний резервний варіант)
Імпорт середовища оболонки (необов’язково)
Імпорт середовища оболонки (необов’язково)
OPENCLAW_LOAD_SHELL_ENV=1Підстановка змінних середовища у значеннях конфігурації
Підстановка змінних середовища у значеннях конфігурації
${VAR_NAME}:- Зіставляються лише імена у верхньому регістрі:
[A-Z_][A-Z0-9_]* - Відсутні або порожні змінні спричиняють помилку під час завантаження
- Екрануйте за допомогою
$${VAR}для буквального виводу - Працює всередині файлів
$include - Вбудована підстановка:
"${BASE}/v1"→"https://api.example.com/v1"
Посилання на секрети (env, file, exec)
Посилання на секрети (env, file, exec)
secrets.providers для env/file/exec) наведено в Керуванні секретами.
Підтримувані шляхи облікових даних перелічено в Поверхні облікових даних SecretRef.Повний довідник
Повний довідник за всіма полями див. у Довіднику конфігурації.Пов’язано: Приклади конфігурації · Довідник конфігурації · Doctor