Конфігурація
OpenClaw читає необов’язкову конфігурацію з~/.openclaw/openclaw.json.
Якщо файл відсутній, OpenClaw використовує безпечні типові значення. Типові причини додати конфігурацію:
- Підключити канали та визначити, хто може надсилати повідомлення боту
- Задати моделі, інструменти, sandboxing або автоматизацію (cron, hooks)
- Налаштувати сесії, медіа, мережу або UI
Мінімальна конфігурація
Редагування конфігурації
- Інтерактивний майстер
- CLI (однорядкові команди)
- Control UI
- Пряме редагування
Сувора валідація
Примітки щодо інструментів схем:openclaw config schemaвиводить ту саму сім’ю JSON Schema, яку використовують Control UI і валідація конфігурації.- Значення полів
titleіdescriptionпереносяться у вивід схеми для інструментів редакторів і форм. - Вкладені об’єкти, wildcard-записи (
*) і записи елементів масиву ([]) успадковують ті самі метадані документації, коли існує відповідна документація поля. - Гілки композиції
anyOf/oneOf/allOfтакож успадковують ті самі метадані документації, тому варіанти union/intersection зберігають ту саму довідку по полях. config.schema.lookupповертає один нормалізований шлях конфігурації з неглибоким вузлом схеми (title,description,type,enum,const, типові обмеження та подібні поля валідації), підібраними метаданими UI hints і зведеннями для безпосередніх дочірніх елементів для інструментів drill-down.- Runtime-схеми plugins/каналів об’єднуються, коли gateway може завантажити поточний реєстр маніфестів.
- Gateway не запускається
- Працюють лише діагностичні команди (
openclaw doctor,openclaw logs,openclaw health,openclaw status) - Виконайте
openclaw doctor, щоб побачити точні проблеми - Виконайте
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визначає каталог моделей і слугує allowlist для/model.- Посилання на моделі використовують формат
provider/model(наприкладanthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxкерує зменшенням розміру зображень у транскриптах/інструментах (типово1200); менші значення зазвичай зменшують використання vision-token у запусках з великою кількістю скриншотів.- Перемикання моделей у чаті див. у Models CLI, а ротацію auth і поведінку резервних варіантів — у Model Failover.
- Для кастомних/self-hosted провайдерів див. Custom providers у довіднику.
Керування тим, хто може надсилати повідомлення боту
Керування тим, хто може надсилати повідомлення боту
Доступ до DM керується для кожного каналу через
dmPolicy:"pairing"(типово): невідомі відправники отримують одноразовий код pairing для схвалення"allowlist": лише відправники зallowFrom(або зі сховища paired allow)"open": дозволити всі вхідні DM (потрібноallowFrom: ["*"])"disabled": ігнорувати всі DM
groupPolicy + groupAllowFrom або allowlist, специфічні для каналу.Докладніше для кожного каналу див. у повному довіднику.Налаштування gating згадувань у групових чатах
Налаштування gating згадувань у групових чатах
Для групових повідомлень типово потрібне згадування. Налаштуйте шаблони для кожного агента:
- Метадані згадувань: нативні @-згадування (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 config і Довідник конфігурації.
Налаштування моніторингу стану каналів gateway
Налаштування моніторингу стану каналів gateway
Керуйте тим, наскільки агресивно gateway перезапускає канали, які виглядають застарілими:
- Задайте
gateway.channelHealthCheckMinutes: 0, щоб глобально вимкнути перезапуски за health-monitor. channelStaleEventThresholdMinutesмає бути більшим або рівним інтервалу перевірки.- Використовуйте
channels.<provider>.healthMonitor.enabledабоchannels.<provider>.accounts.<id>.healthMonitor.enabled, щоб вимкнути автоперезапуски для одного каналу або облікового запису без вимкнення глобального монітора. - Для операційного налагодження див. Health Checks, а всі поля — у повному довіднику.
Налаштування сесій і скидань
Налаштування сесій і скидань
Сесії керують безперервністю розмови та ізоляцією:
dmScope:main(shared) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: глобальні типові значення для маршрутизації сесій, прив’язаних до thread (Discord підтримує/focus,/unfocus,/agents,/session idleі/session max-age).- Про області видимості, зв’язки ідентичності та політику надсилання див. Керування сесіями.
- Усі поля див. в повному довіднику.
Увімкнення sandboxing
Увімкнення sandboxing
Запускайте сесії агентів в ізольованих Docker-контейнерах:Спочатку зберіть образ:
scripts/sandbox-setup.shПовний посібник див. у Sandboxing, а всі параметри — у повному довіднику.Увімкнення push через relay для офіційних збірок iOS
Увімкнення push через relay для офіційних збірок iOS
Push через relay налаштовується в Еквівалент у CLI:Що це дає:
openclaw.json.Задайте це в конфігурації gateway:- Дає gateway змогу надсилати
push.test, wake-поштовхи та reconnect wakes через зовнішній relay. - Використовує грант надсилання в межах реєстрації, який пересилає спарений застосунок iOS. Gateway не потрібен relay-token для всього розгортання.
- Прив’язує кожну реєстрацію через 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 та operator.
- Застосунок iOS отримує ідентичність gateway, реєструється в relay через App Attest і app receipt, а потім публікує relay-backed payload
push.apns.registerу спарений gateway. - Gateway зберігає relay handle і send grant, а потім використовує їх для
push.test, wake-поштовхів і reconnect wakes.
- Якщо ви переключите застосунок iOS на інший gateway, перепідключіть застосунок, щоб він міг опублікувати нову relay-реєстрацію, прив’язану до цього gateway.
- Якщо ви випустите нову збірку iOS, яка вказує на інше розгортання relay, застосунок оновить кешовану relay-реєстрацію замість повторного використання старого relay origin.
OPENCLAW_APNS_RELAY_BASE_URLіOPENCLAW_APNS_RELAY_TIMEOUT_MSі далі працюють як тимчасові перевизначення через env.OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueзалишається loopback-only аварійним варіантом для dev; не зберігайте HTTP relay URL у конфігурації.
Налаштування 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 jobs
Налаштування cron jobs
sessionRetention: очищення завершених ізольованих сесій запусків ізsessions.json(типово24h; задайтеfalse, щоб вимкнути).runLog: очищенняcron/runs/<jobId>.jsonlза розміром і кількістю збережених рядків.- Огляд функцій і приклади CLI див. у Cron jobs.
Налаштування вебхуків (hooks)
Налаштування вебхуків (hooks)
Увімкніть HTTP webhook-ендпоїнти на Gateway:Примітка з безпеки:
- Вважайте весь вміст payload hooks/webhooks недовіреним входом.
- Використовуйте окремий
hooks.token; не використовуйте спільний токен Gateway повторно. - Автентифікація hooks працює лише через заголовки (
Authorization: Bearer ...абоx-openclaw-token); токени в query string відхиляються. hooks.pathне може бути/; використовуйте для webhook ingress окремий підшлях, наприклад/hooks.- Тримайте прапорці обходу небезпечного вмісту вимкненими (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), якщо не виконуєте вузькоспрямоване налагодження. - Якщо ви вмикаєте
hooks.allowRequestSessionKey, також задайтеhooks.allowedSessionKeyPrefixes, щоб обмежити session key, які може вибирати викликач. - Для агентів, керованих через hooks, віддавайте перевагу сильним сучасним model tiers і суворій політиці інструментів (наприклад лише обмін повідомленнями плюс sandboxing, де це можливо).
Налаштування маршрутизації з кількома агентами
Налаштування маршрутизації з кількома агентами
Запускайте кілька ізольованих агентів з окремими workspace і session:Правила bindings і профілі доступу для окремих агентів див. у Multi-Agent і повному довіднику.
Розділення конфігурації на кілька файлів ($include)
Розділення конфігурації на кілька файлів ($include)
Використовуйте
$include, щоб організувати великі конфігурації:- Один файл: замінює об’єкт, у якому міститься
- Масив файлів: deep-merge у заданому порядку (пізніший перемагає)
- Сусідні ключі: об’єднуються після includes (перевизначають включені значення)
- Вкладені includes: підтримуються до 10 рівнів вкладеності
- Відносні шляхи: визначаються відносно файлу, що включає
- Обробка помилок: зрозумілі помилки для відсутніх файлів, помилок парсингу та циклічних include
Гаряче перезавантаження конфігурації
Gateway стежить за~/.openclaw/openclaw.json і автоматично застосовує зміни — для більшості налаштувань ручний перезапуск не потрібен.
Режими перезавантаження
| Режим | Поведінка |
|---|---|
hybrid (типово) | Миттєво гаряче застосовує безпечні зміни. Для критичних автоматично перезапускається. |
hot | Гаряче застосовує лише безпечні зміни. Коли потрібен перезапуск, пише попередження — ви обробляєте це самі. |
restart | Перезапускає Gateway при будь-якій зміні конфігурації, безпечній чи ні. |
off | Вимикає стеження за файлом. Зміни набирають чинності після наступного ручного перезапуску. |
Що застосовується гаряче, а що потребує перезапуску
Більшість полів застосовуються гаряче без простою. У режиміhybrid зміни, які вимагають перезапуску, обробляються автоматично.
| Категорія | Поля | Потрібен перезапуск? |
|---|---|---|
| Канали | channels.*, web (WhatsApp) — усі вбудовані канали та канали extensions | Ні |
| Агенти й моделі | 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 — винятки: їхня зміна не викликає перезапуск.RPC конфігурації (програмні оновлення)
RPC керуючої площини для запису (
config.apply, config.patch, update.run) мають rate limit 3 запити за 60 секунд для кожного deviceId+clientIp. При спрацюванні ліміту RPC повертає UNAVAILABLE з retryAfterMs.config.schema.lookup: перевірити одне піддерево конфігурації, обмежене шляхом, з неглибоким вузлом схеми, підібраними метаданими hints і зведеннями безпосередніх дочірніх елементівconfig.get: отримати поточний snapshot + hashconfig.patch: бажаний шлях часткового оновленняconfig.apply: лише повна заміна конфігураціїupdate.run: явне self-update + restart
config.schema.lookup,
а потім config.patch.
config.apply (повна заміна)
config.apply (повна заміна)
Перевіряє + записує повну конфігурацію та перезапускає Gateway одним кроком.Параметри:
raw(string) — JSON5 payload для всієї конфігураціїbaseHash(необов’язково) — hash конфігурації зconfig.get(обов’язково, коли конфігурація існує)sessionKey(необов’язково) — ключ сесії для ping після перезапускуnote(необов’язково) — примітка для restart sentinelrestartDelayMs(необов’язково) — затримка перед перезапуском (типово 2000)
config.patch (часткове оновлення)
config.patch (часткове оновлення)
Об’єднує часткове оновлення з наявною конфігурацією (семантика JSON merge patch):
- Об’єкти об’єднуються рекурсивно
nullвидаляє ключ- Масиви замінюються
raw(string) — JSON5 лише з ключами, які потрібно змінитиbaseHash(обов’язково) — hash конфігурації зconfig.getsessionKey,note,restartDelayMs— ті самі, що вconfig.apply
config.apply: об’єднання очікуваних перезапусків плюс затримка 30 секунд між циклами перезапуску.Змінні середовища
OpenClaw читає env vars із батьківського процесу, а також із:.envу поточній робочій теці (якщо існує)~/.openclaw/.env(глобальне резервне значення)
Імпорт shell env (необов’язково)
Імпорт shell env (необов’язково)
Якщо ввімкнено і очікувані ключі не задано, OpenClaw запускає ваш login shell і імпортує лише відсутні ключі:Еквівалент env var:
OPENCLAW_LOAD_SHELL_ENV=1Підстановка env var у значеннях конфігурації
Підстановка env var у значеннях конфігурації
Посилайтеся на env vars у будь-якому string-значенні конфігурації через Правила:
${VAR_NAME}:- Зіставляються лише назви у верхньому регістрі:
[A-Z_][A-Z0-9_]* - Відсутні/порожні vars викликають помилку під час завантаження
- Екрануйте через
$${VAR}для буквального виводу - Працює всередині файлів
$include - Вбудована підстановка:
"${BASE}/v1"→"https://api.example.com/v1"
Secret refs (env, file, exec)
Secret refs (env, file, exec)
Для полів, які підтримують об’єкти SecretRef, ви можете використовувати:Докладно про SecretRef (включно з
secrets.providers для env/file/exec) див. у Керування секретами.
Підтримувані шляхи облікових даних перелічено в Поверхня облікових даних SecretRef.Повний довідник
Повний довідник по полях див. у Довідник конфігурації.Пов’язане: Приклади конфігурації · Довідник конфігурації · Doctor