Gateway
Конфигурация
OpenClaw читает необязательную конфигурацию JSON5 из ~/.openclaw/openclaw.json.
Активный путь конфигурации должен быть обычным файлом. Макеты openclaw.json
с символическими ссылками не поддерживаются для записей, которыми владеет OpenClaw; атомарная запись может заменить
путь вместо сохранения символической ссылки. Если вы храните конфигурацию вне
каталога состояния по умолчанию, укажите OPENCLAW_CONFIG_PATH напрямую на реальный файл.
Если файл отсутствует, OpenClaw использует безопасные значения по умолчанию. Частые причины добавить конфигурацию:
- Подключить каналы и управлять тем, кто может писать боту
- Настроить модели, инструменты, изоляцию или автоматизацию (cron, хуки)
- Настроить сеансы, медиа, сеть или UI
См. полный справочник для всех доступных полей.
Агенты и автоматизация должны использовать config.schema.lookup для точной документации
на уровне полей перед редактированием конфигурации. Используйте эту страницу для практических рекомендаций
и справочник конфигурации для более широкой
карты полей и значений по умолчанию.
Минимальная конфигурация
// ~/.openclaw/openclaw.json{ agents: { defaults: { workspace: "~/.openclaw/workspace" } }, channels: { whatsapp: { allowFrom: ["+15555550123"] } },}Редактирование конфигурации
Интерактивный мастер
openclaw onboard # full onboarding flowopenclaw configure # config wizardCLI (однострочные команды)
openclaw config get agents.defaults.workspaceopenclaw config set agents.defaults.heartbeat.every "2h"openclaw config unset plugins.entries.brave.config.webSearch.apiKeyUI управления
Откройте http://127.0.0.1:18789 и используйте вкладку Конфигурация.
UI управления отображает форму из актуальной схемы конфигурации, включая
метаданные документации полей title / description, а также схемы Plugin и каналов, когда
они доступны, с редактором Raw JSON как запасным вариантом. Для UI
с детализацией и других инструментов Gateway также предоставляет config.schema.lookup, чтобы
получить один узел схемы для заданного пути плюс сводки непосредственных дочерних элементов.
Прямое редактирование
Редактируйте ~/.openclaw/openclaw.json напрямую. Gateway отслеживает файл и применяет изменения автоматически (см. горячую перезагрузку).
Строгая валидация
openclaw config schema выводит каноническую JSON Schema, используемую 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), чтобы применить исправления
Gateway сохраняет доверенную последнюю корректную копию после каждого успешного запуска,
но запуск и горячая перезагрузка не восстанавливают ее автоматически. Если openclaw.json
не проходит валидацию (включая локальную валидацию Plugin), запуск Gateway завершается неудачно или
перезагрузка пропускается, а текущий Runtime сохраняет последнюю принятую конфигурацию.
Запустите openclaw doctor --fix (или --yes), чтобы исправить конфигурацию с префиксом/перезаписью или
восстановить последнюю корректную копию. Продвижение в последнюю корректную копию пропускается, когда
кандидат содержит отредактированные заполнители секретов, такие как ***.
Типовые задачи
Настроить канал (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
Все каналы используют один и тот же шаблон политики личных сообщений:
{ channels: { telegram: { enabled: true, botToken: "123:abc", dmPolicy: "pairing", // pairing | allowlist | open | disabled allowFrom: ["tg:123"], // only for allowlist/open }, },}Выбрать и настроить модели
Задайте основную модель и необязательные резервные варианты:
{ agents: { defaults: { model: { primary: "anthropic/claude-sonnet-4-6", fallbacks: ["openai/gpt-5.4"], }, models: { "anthropic/claude-sonnet-4-6": { alias: "Sonnet" }, "openai/gpt-5.4": { alias: "GPT" }, }, }, },}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); более низкие значения обычно уменьшают использование vision-токенов в запусках с большим количеством скриншотов.- См. CLI моделей для переключения моделей в чате и аварийное переключение модели для ротации авторизации и поведения резервных вариантов.
- Для пользовательских/самостоятельно размещенных провайдеров см. пользовательские провайдеры в справочнике.
Управлять тем, кто может писать боту
Доступ к личным сообщениям управляется для каждого канала через dmPolicy:
"pairing"(по умолчанию): неизвестные отправители получают одноразовый код сопряжения для подтверждения"allowlist": только отправители вallowFrom(или в сопряженном хранилище разрешений)"open": разрешить все входящие личные сообщения (требуетallowFrom: ["*"])"disabled": игнорировать все личные сообщения
Для групп используйте groupPolicy + groupAllowFrom или списки разрешений, специфичные для канала.
См. полный справочник для сведений по каждому каналу.
Настроить фильтрацию упоминаний в групповых чатах
Групповые сообщения по умолчанию требуют упоминания. Настройте шаблоны срабатывания для каждого агента. Обычные ответы в группах/каналах публикуются автоматически; включите путь инструмента сообщений для общих комнат, где агент должен решать, когда говорить:
{ messages: { visibleReplies: "automatic", // set "message_tool" to require message-tool sends everywhere groupChat: { visibleReplies: "message_tool", // opt-in; visible output requires message(action=send) unmentionedInbound: "room_event", // unmentioned always-on group chatter is quiet context }, }, agents: { list: [ { id: "main", groupChat: { mentionPatterns: ["@openclaw", "openclaw"], }, }, ], }, channels: { whatsapp: { groups: { "*": { requireMention: true } }, }, },}- Упоминания из метаданных: нативные @-упоминания (WhatsApp tap-to-mention, Telegram @bot и т. д.)
- Текстовые шаблоны: безопасные regex-шаблоны в
mentionPatterns - Видимые ответы:
messages.visibleRepliesможет требовать отправки через инструмент сообщений глобально;messages.groupChat.visibleRepliesпереопределяет это для групп/каналов. - См. полный справочник для режимов видимых ответов, переопределений по каналам и режима чата с самим собой.
Ограничить Skills для каждого агента
Используйте agents.defaults.skills для общей базовой настройки, затем переопределяйте конкретных
агентов с помощью agents.list[].skills:
{ agents: { defaults: { skills: ["github", "weather"], }, list: [ { id: "writer" }, // inherits github, weather { id: "docs", skills: ["docs-search"] }, // replaces defaults { id: "locked-down", skills: [] }, // no skills ], },}- Не задавайте
agents.defaults.skills, чтобы Skills по умолчанию были без ограничений. - Не задавайте
agents.list[].skills, чтобы наследовать значения по умолчанию. - Установите
agents.list[].skills: [], чтобы отключить Skills. - См. Skills, конфигурацию Skills и справочник конфигурации.
Настроить мониторинг состояния каналов Gateway
Управляйте тем, насколько активно Gateway перезапускает каналы, которые выглядят зависшими:
{ gateway: { channelHealthCheckMinutes: 5, channelStaleEventThresholdMinutes: 30, channelMaxRestartsPerHour: 10, }, channels: { telegram: { healthMonitor: { enabled: false }, accounts: { alerts: { healthMonitor: { enabled: true }, }, }, }, },}- Установите
gateway.channelHealthCheckMinutes: 0, чтобы глобально отключить перезапуски мониторинга состояния. channelStaleEventThresholdMinutesдолжен быть больше или равен интервалу проверки.- Используйте
channels.<provider>.healthMonitor.enabledилиchannels.<provider>.accounts.<id>.healthMonitor.enabled, чтобы отключить автоматические перезапуски для одного канала или учетной записи без отключения глобального монитора. - См. проверки состояния для операционной отладки и полный справочник для всех полей.
Настроить тайм-аут рукопожатия WebSocket Gateway
Дайте локальным клиентам больше времени, чтобы завершить pre-auth рукопожатие WebSocket на нагруженных или маломощных хостах:
{ gateway: { handshakeTimeoutMs: 30000, },}- Значение по умолчанию —
15000миллисекунд. OPENCLAW_HANDSHAKE_TIMEOUT_MSпо-прежнему имеет приоритет для разовых переопределений службы или оболочки.- Сначала предпочтительно исправить задержки запуска/цикла событий; этот параметр предназначен для хостов, которые исправны, но медленны во время прогрева.
Настроить сеансы и сбросы
Сеансы управляют непрерывностью и изоляцией разговоров:
{ session: { dmScope: "per-channel-peer", // recommended for multi-user threadBindings: { enabled: true, idleHours: 24, maxAgeHours: 0, }, reset: { mode: "daily", atHour: 4, idleMinutes: 120, }, },}dmScope:main(общая) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: глобальные значения по умолчанию для маршрутизации сеансов, привязанных к тредам (Discord поддерживает/focus,/unfocus,/agents,/session idleи/session max-age).- См. Управление сеансами для областей действия, связей идентичностей и политики отправки.
- См. полный справочник для всех полей.
Включение изоляции в песочнице
Запускайте сеансы агентов в изолированных средах выполнения песочницы:
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all scope: "agent", // session | agent | shared }, }, },}Сначала соберите образ: из исходного checkout запустите scripts/sandbox-setup.sh, а при установке из npm см. встроенную команду docker build в Песочница § Образы и настройка.
См. Песочница для полного руководства и полный справочник для всех параметров.
Включение push через relay для официальных сборок iOS
Push через relay для публичных сборок App Store использует размещенный relay OpenClaw: https://ios-push-relay.openclaw.ai.
Пользовательские развертывания relay требуют намеренно отдельного пути сборки/развертывания iOS, URL relay которого совпадает с URL relay Gateway. Если вы используете пользовательскую сборку с relay, задайте это в конфигурации Gateway:
{ gateway: { push: { apns: { relay: { baseUrl: "https://relay.example.com", // Optional. Default: 10000 timeoutMs: 10000, }, }, }, },}Эквивалент CLI:
openclaw config set gateway.push.apns.relay.baseUrl https://relay.example.comЧто это делает:
- Позволяет 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 и дайте подключиться сеансам node и оператора.
- Приложение iOS получает идентичность Gateway, регистрируется в relay с помощью App Attest и квитанции приложения, а затем публикует payload
push.apns.registerс поддержкой relay в сопряженный 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. Публичная линия выпуска App Store отклоняет пользовательские переопределения URL relay iOS.
OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueостается обходным вариантом разработки только для local loopback; не сохраняйте URL relay HTTP в конфигурации.
См. Приложение iOS для сквозного потока и Поток аутентификации и доверия для модели безопасности relay.
Настройка Heartbeat (периодические отметки)
{ agents: { defaults: { heartbeat: { every: "30m", target: "last", }, }, },}every: строка длительности (30m,2h). Задайте0m, чтобы отключить.target:last|none|<channel-id>(например,discord,matrix,telegramилиwhatsapp)directPolicy:allow(по умолчанию) илиblockдля целей Heartbeat в стиле личных сообщений- См. Heartbeat для полного руководства.
Настройка заданий Cron
{ cron: { enabled: true, maxConcurrentRuns: 8, // default; cron dispatch + isolated cron agent-turn execution sessionRetention: "24h", runLog: { maxBytes: "2mb", keepLines: 2000, }, },}sessionRetention: удалять завершенные изолированные сеансы запусков изsessions.json(по умолчанию24h; задайтеfalse, чтобы отключить).runLog: очищать сохраняемые строки истории запусков Cron для каждого задания.maxBytesостается допустимым для старых файловых журналов запусков.- См. Задания Cron для обзора функции и примеров CLI.
Настройка Webhook (hooks)
Включите HTTP-эндпоинты Webhook на Gateway:
{ hooks: { enabled: true, token: "shared-secret", path: "/hooks", defaultSessionKey: "hook:ingress", allowRequestSessionKey: false, allowedSessionKeyPrefixes: ["hook:"], mappings: [ { match: { path: "gmail" }, action: "agent", agentId: "main", deliver: true, }, ], },}Примечание по безопасности:
- Рассматривайте все содержимое payload hook/Webhook как недоверенный ввод.
- Используйте выделенный
hooks.token; не используйте повторно активные секреты аутентификации Gateway (gateway.auth.token/OPENCLAW_GATEWAY_TOKENилиgateway.auth.password/OPENCLAW_GATEWAY_PASSWORD). - Аутентификация hook работает только через заголовок (
Authorization: Bearer ...илиx-openclaw-token); токены в строке запроса отклоняются. hooks.pathне может быть/; держите входящий трафик Webhook на выделенном подпути, например/hooks.- Оставляйте флаги обхода небезопасного содержимого отключенными (
hooks.gmail.allowUnsafeExternalContent,hooks.mappings[].allowUnsafeExternalContent), кроме случаев строго ограниченной отладки. - Если вы включаете
hooks.allowRequestSessionKey, также задайтеhooks.allowedSessionKeyPrefixes, чтобы ограничить ключи сеансов, выбранные вызывающей стороной. - Для агентов, управляемых hook, предпочитайте сильные современные уровни моделей и строгую политику инструментов (например, только обмен сообщениями плюс песочница, где возможно).
См. полный справочник для всех параметров сопоставления и интеграции Gmail.
Настройка маршрутизации нескольких агентов
Запускайте несколько изолированных агентов с отдельными рабочими областями и сеансами:
{ agents: { list: [ { id: "home", default: true, workspace: "~/.openclaw/workspace-home" }, { id: "work", workspace: "~/.openclaw/workspace-work" }, ], }, bindings: [ { agentId: "home", match: { channel: "whatsapp", accountId: "personal" } }, { agentId: "work", match: { channel: "whatsapp", accountId: "biz" } }, ],}См. Multi-Agent и полный справочник для правил привязки и профилей доступа для каждого агента.
Разделение конфигурации на несколько файлов ($include)
Используйте $include, чтобы организовать большие конфигурации:
// ~/.openclaw/openclaw.json{ gateway: { port: 18789 }, agents: { $include: "./agents.json5" }, broadcast: { $include: ["./clients/a.json5", "./clients/b.json5"], },}- Один файл: заменяет содержащий объект
- Массив файлов: глубоко объединяется по порядку (поздний имеет приоритет)
- Соседние ключи: объединяются после include (переопределяют включенные значения)
- Вложенные include: поддерживаются до 10 уровней в глубину
- Относительные пути: разрешаются относительно включающего файла
- Формат пути: пути include не должны содержать нулевые байты и должны быть строго короче 4096 символов до и после разрешения
- Записи, принадлежащие OpenClaw: когда запись изменяет только один раздел верхнего уровня,
подкрепленный однофайловым include, например
plugins: { $include: "./plugins.json5" }, OpenClaw обновляет этот включенный файл и оставляетopenclaw.jsonбез изменений - Неподдерживаемая сквозная запись: корневые include, массивы include и include с соседними переопределениями закрываются с ошибкой для записей, принадлежащих OpenClaw, вместо развертывания конфигурации
- Ограничение: пути
$includeдолжны разрешаться внутри каталога, содержащегоopenclaw.json. Чтобы совместно использовать дерево на разных машинах или пользователями, задайтеOPENCLAW_INCLUDE_ROOTSкак список путей (:в POSIX,;в Windows) к дополнительным каталогам, на которые могут ссылаться include. Символические ссылки разрешаются и проверяются повторно, поэтому путь, который лексически находится в каталоге конфигурации, но чей реальный целевой путь выходит за пределы каждого разрешенного корня, все равно отклоняется. - Обработка ошибок: понятные ошибки для отсутствующих файлов, ошибок разбора, циклических include, недопустимого формата пути и чрезмерной длины
Горячая перезагрузка конфигурации
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 |
Отключает наблюдение за файлами. Изменения вступают в силу при следующем ручном перезапуске. |
{ gateway: { reload: { mode: "hybrid", debounceMs: 300 }, },}Что применяется на горячую, а что требует перезапуска
Большинство полей применяются на горячую без простоя. В режиме 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.* (порт, привязка, auth, tailscale, TLS, HTTP) |
Да |
| Инфраструктура | discovery, plugins |
Да |
Планирование перезагрузки
Когда вы редактируете исходный файл, на который ссылается $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 первой точкой для точной
документации и ограничений на уровне полей. Используйте справочник по конфигурации,
когда нужна более широкая карта конфигурации, значения по умолчанию или ссылки на отдельные
справочники подсистем.
Пример частичного патча:
openclaw gateway call config.get --params '{}' # capture payload.hashopenclaw gateway call config.patch --params '{ "raw": "{ channels: { telegram: { groups: { \"*\": { requireMention: false } } } } }", "baseHash": "<hash>"}'И config.apply, и config.patch принимают raw, baseHash, sessionKey,
note и restartDelayMs. baseHash обязателен для обоих методов, когда
конфигурация уже существует.
config.patch также принимает replacePaths — массив путей конфигурации, для которых
замена массива является намеренной. Если патч заменит или удалит существующий массив
с меньшим количеством элементов, Gateway отклонит запись, если этот точный путь не указан
в replacePaths; вложенные массивы внутри элементов массива используют [], например
agents.list[].skills. Это предотвращает незаметную перезапись массивов маршрутизации или allowlist
усеченными снимками config.get. Используйте config.apply, когда вы
намерены заменить всю конфигурацию.
Переменные окружения
OpenClaw читает переменные окружения из родительского процесса, а также из:
.envиз текущего рабочего каталога (если есть)~/.openclaw/.env(глобальный fallback)
Ни один из файлов не переопределяет существующие переменные окружения. Вы также можете задать встроенные переменные окружения в конфигурации:
{ env: { OPENROUTER_API_KEY: "sk-or-...", vars: { GROQ_API_KEY: "gsk-..." }, },}Импорт окружения оболочки (необязательно)
Если включено и ожидаемые ключи не заданы, OpenClaw запускает вашу login shell и импортирует только отсутствующие ключи:
{env: { shellEnv: { enabled: true, timeoutMs: 15000 },},}Эквивалент переменной окружения: OPENCLAW_LOAD_SHELL_ENV=1
Подстановка переменных окружения в значениях конфигурации
Ссылайтесь на переменные окружения в любом строковом значении конфигурации через ${VAR_NAME}:
{gateway: { auth: { token: "${OPENCLAW_GATEWAY_TOKEN}" } },models: { providers: { custom: { apiKey: "${CUSTOM_API_KEY}" } } },}Правила:
- Совпадают только имена в верхнем регистре:
[A-Z_][A-Z0-9_]* - Отсутствующие/пустые переменные вызывают ошибку во время загрузки
- Экранируйте через
$${VAR}для буквального вывода - Работает внутри файлов
$include - Встроенная подстановка:
"${BASE}/v1"→"https://api.example.com/v1"
Ссылки на секреты (env, file, exec)
Для полей, поддерживающих объекты SecretRef, можно использовать:
{models: { providers: { openai: { apiKey: { source: "env", provider: "default", id: "OPENAI_API_KEY" } }, },},skills: { entries: { "image-lab": { apiKey: { source: "file", provider: "filemain", id: "/skills/entries/image-lab/apiKey", }, }, },},channels: { googlechat: { serviceAccountRef: { source: "exec", provider: "vault", id: "channels/googlechat/serviceAccount", }, },},}Подробности SecretRef (включая secrets.providers для env/file/exec) находятся в разделе управление секретами.
Поддерживаемые пути учетных данных перечислены в поверхности учетных данных SecretRef.
См. окружение для полного порядка приоритета и источников.
Полный справочник
Полный справочник по всем полям см. в справочнике по конфигурации.
Связанные материалы: примеры конфигурации · справочник по конфигурации · Doctor