~/.openclaw/openclaw.json.
Активный путь конфигурации должен быть обычным файлом. Макеты openclaw.json
через symlink не поддерживаются для записей, которыми владеет OpenClaw; атомарная запись может заменить
путь вместо сохранения symlink. Если вы храните конфигурацию вне
каталога состояния по умолчанию, укажите OPENCLAW_CONFIG_PATH прямо на реальный файл.
Если файл отсутствует, OpenClaw использует безопасные значения по умолчанию. Частые причины добавить конфигурацию:
- Подключить каналы и управлять тем, кто может писать боту
- Задать модели, инструменты, sandboxing или автоматизацию (cron, хуки)
- Настроить сессии, медиа, сеть или UI
config.schema.lookup для точной документации
на уровне полей перед редактированием конфигурации. Используйте эту страницу для практических задач и
справочник по конфигурации для более широкой
карты полей и значений по умолчанию.
Минимальная конфигурация
Редактирование конфигурации
- Interactive wizard
- CLI (one-liners)
- Control UI
- Direct edit
Строгая валидация
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), чтобы исправить конфигурацию с префиксами/перезаписанными данными или
восстановить последнюю работоспособную копию. Повышение до последней работоспособной копии пропускается, когда
кандидат содержит отредактированные placeholders секретов, такие как ***.
Распространенные задачи
Set up a channel (WhatsApp, Telegram, Discord, etc.)
Set up a channel (WhatsApp, Telegram, Discord, etc.)
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
Choose and configure models
Choose and configure models
agents.defaults.modelsопределяет каталог моделей и действует как allowlist для/model; записиprovider/*фильтруют/model,/modelsи средства выбора моделей до выбранных провайдеров, при этом по-прежнему используя динамическое обнаружение моделей.- Используйте
openclaw config set agents.defaults.models '<json>' --strict-json --merge, чтобы добавить записи allowlist без удаления существующих моделей. Обычные замены, которые удалили бы записи, отклоняются, если не передать--replace. - Ссылки на модели используют формат
provider/model(например,anthropic/claude-opus-4-6). agents.defaults.imageMaxDimensionPxуправляет уменьшением изображений стенограммы/инструментов (по умолчанию1200); более низкие значения обычно уменьшают использование vision-токенов в запусках с большим количеством скриншотов.- См. CLI моделей для переключения моделей в чате и аварийное переключение моделей для ротации auth и поведения резервных вариантов.
- Для пользовательских/самостоятельно размещенных провайдеров см. пользовательские провайдеры в справочнике.
Control who can message the bot
Control who can message the bot
dmPolicy:"pairing"(по умолчанию): неизвестные отправители получают одноразовый код сопряжения для подтверждения"allowlist": только отправители вallowFrom(или в хранилище разрешенных сопряженных отправителей)"open": разрешить все входящие DM (требуетallowFrom: ["*"])"disabled": игнорировать все DM
groupPolicy + groupAllowFrom или allowlist, специфичные для канала.См. полный справочник для подробностей по каждому каналу.Set up group chat mention gating
Set up group chat mention gating
- Упоминания в метаданных: нативные @-упоминания (WhatsApp tap-to-mention, Telegram @bot и т. д.)
- Текстовые шаблоны: безопасные regex-шаблоны в
mentionPatterns - Видимые ответы:
messages.visibleRepliesможет требовать отправки через message-tool глобально;messages.groupChat.visibleRepliesпереопределяет это для групп/каналов. - См. полный справочник по режимам видимых ответов, переопределениям для каналов и режиму чата с самим собой.
Restrict skills per agent
Restrict skills per agent
agents.defaults.skills как общий базовый набор, затем переопределяйте конкретных
агентов через agents.list[].skills:- Опустите
agents.defaults.skills, чтобы Skills по умолчанию были без ограничений. - Опустите
agents.list[].skills, чтобы наследовать значения по умолчанию. - Задайте
agents.list[].skills: [], чтобы Skills отсутствовали. - См. Skills, конфигурация Skills и справочник по конфигурации.
Tune gateway channel health monitoring
Tune gateway channel health monitoring
- Задайте
gateway.channelHealthCheckMinutes: 0, чтобы глобально отключить перезапуски health monitor. channelStaleEventThresholdMinutesдолжен быть больше интервала проверки или равен ему.- Используйте
channels.<provider>.healthMonitor.enabledилиchannels.<provider>.accounts.<id>.healthMonitor.enabled, чтобы отключить автоматические перезапуски для одного канала или аккаунта, не отключая глобальный монитор. - См. проверки работоспособности для операционной отладки и полный справочник по всем полям.
Tune gateway WebSocket handshake timeout
Tune gateway WebSocket handshake timeout
- Значение по умолчанию —
15000миллисекунд. OPENCLAW_HANDSHAKE_TIMEOUT_MSпо-прежнему имеет приоритет для разовых переопределений сервиса или оболочки.- Сначала предпочитайте исправлять задержки запуска/цикла событий; эта настройка предназначена для хостов, которые исправны, но медленны во время прогрева.
Configure sessions and resets
Configure sessions and resets
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 через ретранслятор для официальных сборок iOS
Включить push через ретранслятор для официальных сборок iOS
https://ios-push-relay.openclaw.ai.Пользовательские развертывания ретранслятора требуют намеренно отдельного пути сборки/развертывания iOS, URL ретранслятора которого совпадает с URL ретранслятора Gateway. Если вы используете пользовательскую сборку с ретранслятором, задайте это в конфигурации Gateway:- Позволяет Gateway отправлять
push.test, сигналы пробуждения и пробуждения для переподключения через внешний ретранслятор. - Использует разрешение на отправку в области регистрации, пересланное сопряженным приложением iOS. Gateway не нужен токен ретранслятора на уровне всего развертывания.
- Привязывает каждую регистрацию через ретранслятор к идентичности Gateway, с которым было сопряжено приложение iOS, поэтому другой Gateway не сможет повторно использовать сохраненную регистрацию.
- Оставляет локальные/ручные сборки iOS на прямом APNs. Отправки через ретранслятор применяются только к официальным распространяемым сборкам, зарегистрированным через ретранслятор.
- Должно совпадать с базовым URL ретранслятора, встроенным в сборку iOS, чтобы трафик регистрации и отправки попадал в одно и то же развертывание ретранслятора.
- Установите официальную/TestFlight-сборку iOS.
- Необязательно: настройте
gateway.push.apns.relay.baseUrlна Gateway только при использовании намеренно отдельной пользовательской сборки с ретранслятором. - Сопрягите приложение iOS с Gateway и дайте подключиться как сеансам узла, так и сеансам оператора.
- Приложение 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остается аварийным выходом для разработки только через local loopback; не сохраняйте HTTP URL ретранслятора в конфигурации.
Настроить Heartbeat (периодические проверки)
Настроить Heartbeat (периодические проверки)
every: строка длительности (30m,2h). Задайте0m, чтобы отключить.target:last|none|<channel-id>(например,discord,matrix,telegramилиwhatsapp)directPolicy:allow(по умолчанию) илиblockдля целей Heartbeat в стиле личных сообщений- См. Heartbeat для полного руководства.
Настроить задания Cron
Настроить задания Cron
sessionRetention: удалять завершенные изолированные сеансы запусков изsessions.json(по умолчанию24h; задайтеfalse, чтобы отключить).runLog: удалять сохраненные строки истории запусков Cron для каждого задания.maxBytesостается допустимым для старых журналов запусков на основе файлов.- См. Задания Cron для обзора функции и примеров CLI.
Настроить 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, проходят через тот же шлюз схемы перед записью; разрушительные перезаписи,
такие как удаление gateway.mode или уменьшение файла более чем наполовину, отклоняются и
сохраняются как .rejected.* для проверки.
Если вы видите config reload skipped (invalid config) или запуск сообщает Invalid config, проверьте конфигурацию, выполните openclaw config validate, затем выполните openclaw doctor --fix для исправления. См. Устранение неполадок Gateway
для контрольного списка.
Режимы перезагрузки
| Режим | Поведение |
|---|---|
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, чтобы проверить последний sentinel перезапуска обновления и подтвердить запущенную версию после перезапуска
config.schema.lookup первой точкой обращения за точной
документацией и ограничениями на уровне полей. Используйте Справочник по конфигурации,
когда им нужна более широкая карта конфигурации, значения по умолчанию или ссылки на специальные
справочники подсистем.
config.apply, config.patch, update.run)
ограничены 3 запросами за 60 секунд на deviceId+clientIp. Запросы на перезапуск
объединяются, а затем между циклами перезапуска применяется пауза 30 секунд.
update.status доступен только для чтения, но ограничен администраторами, потому что sentinel перезапуска может
содержать сводки шагов обновления и хвосты вывода команд.config.apply, и config.patch принимают raw, baseHash, sessionKey,
note и restartDelayMs. baseHash обязателен для обоих методов, когда
конфигурация уже существует.
config.patch также принимает replacePaths, массив путей конфигурации, для которых
замена массива является намеренной. Если patch заменит или удалит существующий массив
с меньшим количеством записей, Gateway отклонит запись, если этот точный путь
не указан в replacePaths; вложенные массивы в элементах массива используют [], например
agents.list[].skills. Это не дает усеченным снимкам config.get
незаметно перезаписать массивы маршрутизации или списков разрешений. Используйте config.apply, когда вы
намерены заменить всю конфигурацию.
Переменные окружения
OpenClaw читает переменные окружения из родительского процесса, а также из:.envиз текущего рабочего каталога (если есть)~/.openclaw/.env(глобальный fallback)
Импорт окружения shell (необязательно)
Импорт окружения shell (необязательно)
OPENCLAW_LOAD_SHELL_ENV=1Подстановка переменных окружения в значениях конфигурации
Подстановка переменных окружения в значениях конфигурации
${VAR_NAME}:- Сопоставляются только имена в верхнем регистре:
[A-Z_][A-Z0-9_]* - Отсутствующие или пустые переменные вызывают ошибку во время загрузки
- Экранируйте через
$${VAR}для буквального вывода - Работает внутри файлов
$include - Inline-подстановка:
"${BASE}/v1"→"https://api.example.com/v1"
Ссылки на секреты (env, file, exec)
Ссылки на секреты (env, file, exec)
secrets.providers для env/file/exec) находятся в Управление секретами.
Поддерживаемые пути учетных данных перечислены в Поверхность учетных данных SecretRef.Полный справочник
Полный справочник по всем полям см. в Справочнике по конфигурации.Связанные материалы: Примеры конфигурации · Справочник по конфигурации · Doctor