~/.openclaw/openclaw.json. Якщо файл відсутній, OpenClaw використовує безпечні стандартні значення.
Шлях активної конфігурації має вказувати на звичайний файл. Під час запису OpenClaw атомарно замінює його (перейменовує файл у цей шлях), тому для openclaw.json, що є символічним посиланням, буде замінено цільовий файл, а не виконано наскрізний запис — уникайте конфігурацій із символічними посиланнями. Якщо конфігурація зберігається поза стандартним каталогом стану, спрямуйте OPENCLAW_CONFIG_PATH безпосередньо на фактичний файл.
Поширені причини додати конфігурацію:
- Підключити канали та визначити, хто може надсилати повідомлення боту
- Налаштувати моделі, інструменти, ізоляцію або автоматизацію (cron, хуки)
- Налаштувати сеанси, медіа, мережу або інтерфейс користувача
config.schema.lookup, щоб отримувати точну
документацію на рівні полів перед редагуванням конфігурації. Використовуйте цю сторінку для практичних вказівок, а
Довідник із конфігурації — для ширшої
карти полів і стандартних значень.
Мінімальна конфігурація
Редагування конфігурації
- Інтерактивний майстер
- CLI (однорядкові команди)
- Інтерфейс керування
- Безпосереднє редагування
Сувора перевірка
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пропускає запити підтвердження), щоб застосувати виправлення
openclaw doctor --fix.
Якщо openclaw.json не проходить перевірку (включно з локальною перевіркою плагіна), запуск
Gateway завершується невдало або перезавантаження пропускається, а поточне середовище виконання зберігає останню прийняту
конфігурацію. Відхилений запис також зберігається як <path>.rejected.<timestamp> для перевірки.
Gateway блокує записи, схожі на випадкове затирання даних: видалення gateway.mode,
втрату блоку meta або зменшення файлу більш ніж удвічі — якщо запис
явно не дозволяє руйнівні зміни. Перенесення до останньої відомої справної копії пропускається, якщо
кандидат містить заповнювач прихованого секрету, як-от *** або [redacted].
Поширені завдання
Налаштувати канал (WhatsApp, Telegram, Discord тощо)
Налаштувати канал (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
Вибрати й налаштувати моделі
Вибрати й налаштувати моделі
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 або списками дозволених значень для конкретних каналів.Докладні відомості для кожного каналу див. у повному довіднику.Налаштувати обробку згадок у груповому чаті
Налаштувати обробку згадок у груповому чаті
- Згадки в метаданих: нативні @-згадки (торкніться для згадки у WhatsApp, @bot у Telegram тощо)
- Текстові шаблони: безпечні шаблони регулярних виразів у
mentionPatterns - Видимі відповіді:
messages.visibleRepliesможе глобально вимагати надсилання через інструмент повідомлень;messages.groupChat.visibleRepliesперевизначає це для груп і каналів. - Режими видимих відповідей, перевизначення для окремих каналів і режим чату із собою див. у повному довіднику.
Обмежити 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, щоб вимкнути автоматичні перезапуски для одного каналу чи облікового запису, не вимикаючи глобальний моніторинг. - Відомості про діагностику роботи див. у розділі Перевірки стану, а опис усіх полів — у повному довіднику.
Налаштувати час очікування рукостискання WebSocket у Gateway
Налаштувати час очікування рукостискання WebSocket у Gateway
- За замовчуванням —
15000мілісекунд. OPENCLAW_HANDSHAKE_TIMEOUT_MSусе ще має пріоритет для одноразових перевизначень служби або оболонки.- Спочатку бажано усунути зависання під час запуску або в циклі подій; цей параметр призначений для справних хостів, які повільно прогріваються.
Налаштування сеансів і скидань
Налаштування сеансів і скидань
dmScope:main(спільний) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: глобальні типові параметри маршрутизації сеансів, прив’язаних до гілок./focus,/unfocus,/agents,/session idleі/session max-ageвідповідно прив’язують, відв’язують, показують список і налаштовують це для кожного сеансу (Discord прив’язує гілки, Telegram — теми/розмови).- Відомості про області дії, зв’язки ідентичностей і політику надсилання див. у розділі Керування сеансами.
- Опис усіх полів див. у повному довіднику.
Увімкнення ізоляції в пісочниці
Увімкнення ізоляції в пісочниці
scripts/sandbox-setup.sh, а для встановлення з npm див. вбудовану команду docker build у розділі Пісочниця § Образи та налаштування.Повний посібник див. у розділі Пісочниця, а всі параметри — у повному довіднику.Увімкнення push-сповіщень через ретранслятор для офіційних збірок iOS
Увімкнення push-сповіщень через ретранслятор для офіційних збірок iOS
https://ios-push-relay.openclaw.ai.Власні розгортання ретранслятора потребують навмисно відокремленого процесу збирання та розгортання iOS, у якому URL-адреса ретранслятора збігається з URL-адресою ретранслятора Gateway. Якщо використовується власна збірка з ретранслятором, задайте це в конфігурації Gateway:- Дає 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-ретранслятора в конфігурації.
Налаштування Heartbeat (періодичних перевірок)
Налаштування Heartbeat (періодичних перевірок)
every: рядок тривалості (30m,2h). Щоб вимкнути, задайте0m. За замовчуванням:30m.target:last|none|<channel-id>(наприклад,discord,matrix,telegramабоwhatsapp)directPolicy:allow(за замовчуванням) абоblockдля цілей Heartbeat у стилі особистих повідомлень- Повний посібник див. у розділі Heartbeat.
Налаштування завдань Cron
Налаштування завдань Cron
sessionRetention: видаляє завершені ізольовані сеанси запуску з рядків сеансів SQLite (за замовчуванням24h; щоб вимкнути, задайтеfalse).- У журналі запусків автоматично зберігаються 2000 найновіших кінцевих рядків для кожного завдання; для втрачених рядків зберігається 24-годинне вікно очищення.
- Огляд функції та приклади CLI див. у розділі Завдання Cron.
Налаштування Webhook (обробників)
Налаштування Webhook (обробників)
- Вважайте весь вміст корисного навантаження обробників/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, щоб обмежити ключі сеансів, які може вибирати викликач. - Для агентів, керованих обробниками, віддавайте перевагу потужним сучасним рівням моделей і суворій політиці інструментів (наприклад, лише обмін повідомленнями та, де можливо, пісочниця).
Налаштування маршрутизації між кількома агентами
Налаштування маршрутизації між кількома агентами
Поділ конфігурації на кілька файлів ($include)
Поділ конфігурації на кілька файлів ($include)
$include для впорядкування великих конфігурацій:- Один файл: замінює об’єкт, що його містить
- Масив файлів: глибоко об’єднується за порядком (пізніші мають пріоритет), до 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.
Режими перезавантаження
Що застосовується без перезапуску, а що потребує перезапуску
Більшість полів застосовуються без перезапуску й простою; деякі розділи, що застосовуються без перезапуску, перезапускають лише відповідну підсистему (канал, cron, heartbeat, монітор стану), а не весь Gateway. У режиміhybrid зміни, що потребують перезапуску Gateway, обробляються автоматично.
gateway.reload і gateway.remote є винятками в межах gateway.* — їх зміна не спричиняє перезапуск. Окремі плагіни також можуть перевизначати цю таблицю: завантажений плагін може оголосити власні префікси конфігурації, що спричиняють перезапуск (наприклад, вбудований плагін Canvas перезапускає Gateway для plugins.enabled, plugins.allow і plugins.deny, а не лише для власного plugins.entries.canvas), тому фактична поведінка залежить від того, які плагіни активні.Планування перезавантаження
Коли ви редагуєте вихідний файл, на який посилається$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 для отримання точної
документації й обмежень на рівні полів. Використовуйте довідник із конфігурації,
коли потрібна ширша карта конфігурації, значення за замовчуванням або посилання на спеціалізовані
довідники підсистем.
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. Значення timeoutMs за замовчуванням: 15000.Підставлення змінних середовища у значення конфігурації
Підставлення змінних середовища у значення конфігурації
${VAR_NAME}:- Зіставляються лише назви у верхньому регістрі:
[A-Z_][A-Z0-9_]* - Відсутні або порожні змінні спричиняють помилку під час завантаження
- Для буквального виводу екрануйте за допомогою
$${VAR} - Працює у файлах
$include - Вбудоване підставлення:
"${BASE}/v1"→"https://api.example.com/v1"
Посилання на секрети (середовище, файл, виконання)
Посилання на секрети (середовище, файл, виконання)
secrets.providers для env/file/exec) наведено в розділі Керування секретами.
Підтримувані шляхи облікових даних перелічено в розділі Поверхня облікових даних SecretRef.Повний довідник
Повний опис усіх полів див. у довіднику з конфігурації.Пов’язані матеріали: Приклади конфігурації · Довідник із конфігурації · Doctor