На этой странице
На этой странице
Gateway
Конфигурация
OpenClaw считывает необязательную конфигурацию JSON5 из ~/.openclaw/openclaw.json. Если файл отсутствует, OpenClaw использует безопасные значения по умолчанию.
Активный путь конфигурации должен указывать на обычный файл. При записи OpenClaw атомарно заменяет его (переименовывая файл в указанный путь), поэтому для openclaw.json, являющегося символической ссылкой, будет заменён целевой файл, а не выполнена сквозная запись — избегайте конфигураций с символическими ссылками. Если конфигурация хранится вне каталога состояния по умолчанию, задайте в OPENCLAW_CONFIG_PATH прямой путь к фактическому файлу.
Распространённые причины добавить конфигурацию:
- Подключить каналы и настроить, кто может отправлять сообщения боту
- Настроить модели, инструменты, изоляцию или автоматизацию (cron, хуки)
- Настроить сеансы, медиа, сеть или пользовательский интерфейс
Все доступные поля описаны в полном справочнике.
Перед изменением конфигурации агенты и средства автоматизации должны использовать config.schema.lookup
для получения точной документации по отдельным полям. Эта страница содержит практические инструкции,
а справочник по конфигурации — более полную
карту полей и значений по умолчанию.
Минимальная конфигурация
Редактирование конфигурации
Интерактивный мастер
CLI (однострочные команды)
Панель управления
Откройте http://127.0.0.1:18789 и перейдите на вкладку Config.
Панель управления формирует форму на основе актуальной схемы конфигурации, включая метаданные
документации полей title / description, а также схемы плагинов и каналов, если
они доступны, и предоставляет редактор Raw JSON как резервный вариант. Для интерфейсов
с детализацией и других инструментов Gateway также предоставляет config.schema.lookup, позволяющий
получить один узел схемы для заданного пути и сводные данные о его непосредственных дочерних элементах.
Прямое редактирование
Отредактируйте ~/.openclaw/openclaw.json напрямую. Gateway отслеживает файл и автоматически применяет изменения (см. горячую перезагрузку).
Строгая проверка
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отключает запросы подтверждения), чтобы применить исправления
После каждого успешного запуска Gateway сохраняет доверенную копию последней
работоспособной конфигурации, однако при запуске и горячей перезагрузке она не восстанавливается
автоматически — это выполняет только openclaw doctor --fix. Если openclaw.json не проходит проверку
(включая локальную проверку плагина), Gateway не запускается либо перезагрузка пропускается, а текущая
среда выполнения продолжает использовать последнюю принятую конфигурацию. Отклонённая запись также
сохраняется как <path>.rejected.<timestamp> для анализа.
Gateway блокирует записи, похожие на случайную перезапись: удаление gateway.mode,
потерю блока meta или сокращение файла более чем наполовину, — если запись
явно не разрешает деструктивные изменения. Кандидат не становится последней работоспособной
конфигурацией, если он содержит отредактированный заполнитель секрета, например
*** или [redacted].
Распространённые задачи
Настройка канала (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 для отдельных агентов
Используйте agents.defaults.skills как общую базовую конфигурацию, а затем переопределяйте её
для отдельных агентов с помощью agents.list[].skills:
- Чтобы по умолчанию не ограничивать Skills, не указывайте
agents.defaults.skills. - Чтобы наследовать значения по умолчанию, не указывайте
agents.list[].skills. - Чтобы отключить Skills, задайте
agents.list[].skills: []. - См. Skills, конфигурацию Skills и справочник по конфигурации.
Настройка мониторинга состояния каналов Gateway
Настройте интенсивность перезапуска каналов, которые выглядят неактивными:
- Показанные значения используются по умолчанию. Задайте
gateway.channelHealthCheckMinutes: 0, чтобы глобально отключить перезапуски по результатам мониторинга состояния. channelStaleEventThresholdMinutesдолжно быть больше или равно интервалу проверки.- Используйте
channels.<provider>.healthMonitor.enabledилиchannels.<provider>.accounts.<id>.healthMonitor.enabled, чтобы отключить автоматические перезапуски для отдельного канала или учётной записи, не отключая глобальный мониторинг. - Сведения об эксплуатационной диагностике см. в разделе «Проверки состояния», а описание всех полей — в полном справочнике.
Настройка тайм-аута рукопожатия WebSocket в Gateway
Предоставьте локальным клиентам больше времени для завершения предварительного WebSocket-рукопожатия до аутентификации на загруженных или маломощных узлах:
- По умолчанию —
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-уведомлений в общедоступных сборках из App Store используется размещённый ретранслятор OpenClaw: https://ios-push-relay.openclaw.ai.
Для собственных развёртываний ретранслятора требуется намеренно отдельный путь сборки и развёртывания iOS, в котором URL ретранслятора совпадает с URL ретранслятора Gateway. Если используется собственная сборка с ретранслятором, задайте в конфигурации Gateway следующее:
Эквивалентная команда CLI:
Результат:
- Позволяет Gateway отправлять
push.test, сигналы пробуждения и сигналы пробуждения для переподключения через внешний ретранслятор. - Использует разрешение на отправку, ограниченное регистрацией и переданное сопряжённым приложением iOS. Gateway не требуется токен ретранслятора для всего развёртывания.
- Привязывает каждую регистрацию через ретранслятор к идентификатору Gateway, с которым сопряжено приложение iOS, чтобы другой Gateway не мог повторно использовать сохранённую регистрацию.
- Для локальных и вручную собранных версий iOS сохраняется прямая отправка через APNs. Отправка через ретранслятор применяется только к официально распространяемым сборкам, зарегистрированным через ретранслятор.
- Должен совпадать с базовым 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остаётся предназначенным только для loopback аварийным вариантом для разработки; не сохраняйте URL ретранслятора HTTP в конфигурации.
Сквозной процесс см. в разделе Приложение iOS, а модель безопасности ретранслятора — в разделе Процесс аутентификации и установления доверия.
Настройка Heartbeat (периодических проверок)
every: строка длительности (30m,2h). Чтобы отключить, задайте0m. По умолчанию:30m.target:last|none|<channel-id>(например,discord,matrix,telegramилиwhatsapp)directPolicy:allow(по умолчанию) илиblockдля целей Heartbeat в стиле личных сообщений- Полное руководство см. в разделе Heartbeat.
Настройка заданий Cron
sessionRetention: удаляет завершённые изолированные сеансы запусков из строк сеансов SQLite (по умолчанию24h; чтобы отключить, задайтеfalse).- В истории запусков автоматически сохраняются 2000 новейших конечных строк для каждого задания; для потерянных строк сохраняется 24-часовое окно очистки.
- Обзор возможностей и примеры CLI см. в разделе Задания Cron.
Настройка вебхуков (хуков)
Включите конечные точки HTTP-вебхуков на Gateway:
Примечание по безопасности:
- Считайте всё содержимое полезной нагрузки хука или вебхука недоверенными входными данными.
- Используйте отдельный
hooks.token; не используйте повторно активные секреты аутентификации Gateway (gateway.auth.token/OPENCLAW_GATEWAY_TOKENилиgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Аутентификация хуков выполняется только через заголовок (
Authorization: Bearer ...илиx-openclaw-token); токены в строке запроса отклоняются. hooks.pathне может быть/; размещайте входящие вебхуки в отдельном подпути, например/hooks.- Не включайте флаги обхода проверки небезопасного содержимого (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), кроме случаев строго ограниченной отладки. - Если включён
hooks.allowRequestSessionKey, также задайтеhooks.allowedSessionKeyPrefixes, чтобы ограничить выбираемые вызывающей стороной ключи сеансов. - Для агентов, запускаемых хуками, рекомендуется использовать мощные современные уровни моделей и строгую политику инструментов (например, только обмен сообщениями и, где возможно, песочницу).
Все параметры сопоставления и интеграцию с Gmail см. в полном справочнике.
Настройка маршрутизации между несколькими агентами
Запускайте несколько изолированных агентов с отдельными рабочими пространствами и сеансами:
Правила привязки и профили доступа отдельных агентов см. в разделах Несколько агентов и полный справочник.
Разделение конфигурации на несколько файлов ($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.
Режимы перезагрузки
| Режим | Поведение |
|---|---|
hybrid (по умолчанию) |
Мгновенно применяет безопасные изменения без перезапуска. Автоматически перезапускает систему при критических изменениях. |
hot |
Применяет без перезапуска только безопасные изменения. Если требуется перезапуск, записывает предупреждение в журнал — перезапуск выполняется вручную. |
restart |
Перезапускает Gateway при любом изменении конфигурации, независимо от его безопасности. |
off |
Отключает отслеживание файлов. Изменения вступают в силу при следующем ручном перезапуске. |
Какие изменения применяются без перезапуска, а какие требуют его
Большинство полей применяются без перезапуска и простоя; при изменении некоторых разделов
перезапускается только соответствующая подсистема (канал, Cron, Heartbeat, монитор работоспособности),
а не весь Gateway. В режиме hybrid изменения, требующие перезапуска Gateway,
обрабатываются автоматически.
| Категория | Поля | Требуется перезапуск Gateway? |
|---|---|---|
| Каналы | channels.*, web (WhatsApp) — все встроенные каналы и каналы плагинов |
Нет (перезапускается этот канал) |
| Агент и модели | agent, agents, models, routing |
Нет |
| Автоматизация | hooks, cron, agent.heartbeat |
Нет (перезапускается эта подсистема) |
| Сеансы и сообщения | session, messages |
Нет |
| Инструменты и медиафайлы | tools, skills, mcp, audio, talk |
Нет |
| Конфигурация плагинов | plugins.entries.*, plugins.allow, plugins.deny, plugins.enabled |
Нет (среда выполнения плагинов перезагружается) |
| Интерфейс и прочее | ui, logging, identity, bindings |
Нет |
| Сервер Gateway | gateway.* (порт, привязка, аутентификация, Tailscale, TLS, HTTP, push-уведомления) |
Да |
| Инфраструктура | discovery, browser, plugins.load, plugins.installs |
Да |
Планирование перезагрузки
При редактировании исходного файла, указанного через $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 принимают raw, baseHash, sessionKey,
note и restartDelayMs. Если файл конфигурации уже существует, baseHash обязателен для обоих
методов (при первой записи без существующей конфигурации эта проверка пропускается).
config.patch также принимает replacePaths — массив путей конфигурации, для которых
замена массива является намеренной. Если патч заменяет или удаляет существующий массив,
оставляя меньше элементов, Gateway отклоняет запись, если соответствующий точный путь
не указан в replacePaths; для вложенных массивов внутри элементов массива используется [],
например agents.list[].skills. Это предотвращает незаметную перезапись массивов маршрутизации
или списков разрешений усечёнными снимками config.get. Используйте config.apply,
если требуется заменить всю конфигурацию.
Переменные окружения
OpenClaw считывает переменные окружения из родительского процесса, а также из следующих источников:
.envиз текущего рабочего каталога (при наличии)~/.openclaw/.env(глобальный резервный источник)
Ни один из этих файлов не переопределяет существующие переменные окружения. Их также можно задать непосредственно в конфигурации:
Импорт окружения оболочки (необязательно)
Если эта функция включена и ожидаемые ключи не заданы, OpenClaw запускает оболочку входа и импортирует только отсутствующие ключи:
Эквивалентная переменная окружения: OPENCLAW_LOAD_SHELL_ENV=1. Значение timeoutMs по умолчанию: 15000.
Подстановка переменных окружения в значениях конфигурации
Ссылайтесь на переменные окружения в любом строковом значении конфигурации с помощью ${VAR_NAME}:
Правила:
- Распознаются только имена в верхнем регистре:
[A-Z_][A-Z0-9_]* - Отсутствующие или пустые переменные вызывают ошибку при загрузке
- Для буквального вывода экранируйте с помощью
$${VAR} - Работает внутри файлов
$include - Встроенная подстановка:
"${BASE}/v1"→"https://api.example.com/v1"
Ссылки на секреты (окружение, файл, выполнение команды)
Для полей, поддерживающих объекты SecretRef, можно использовать:
Подробные сведения о SecretRef (включая secrets.providers для env/file/exec) приведены в разделе Управление секретами.
Поддерживаемые пути учётных данных перечислены в разделе Поверхность учётных данных SecretRef.
Полные сведения о приоритетах и источниках см. в разделе Окружение.
Полный справочник
Полный справочник по каждому полю см. в разделе Справочник по конфигурации.
См. также: Примеры конфигурации · Справочник по конфигурации · Doctor