Gateway
Configuration — агенты
Ключи конфигурации уровня агента в agents.*, multiAgent.*, session.*,
messages.* и talk.*. Для каналов, инструментов, среды выполнения Gateway и других
ключей верхнего уровня см. справочник по конфигурации.
Значения агентов по умолчанию
agents.defaults.workspace
По умолчанию: OPENCLAW_WORKSPACE_DIR, если задано, иначе ~/.openclaw/workspace.
{ agents: { defaults: { workspace: "~/.openclaw/workspace" } },}Явное значение agents.defaults.workspace имеет приоритет над
OPENCLAW_WORKSPACE_DIR. Используйте переменную окружения, чтобы направить агентов
по умолчанию в смонтированное рабочее пространство, когда не хотите записывать этот путь в конфигурацию.
agents.defaults.repoRoot
Необязательный корень репозитория, отображаемый в строке Runtime системного промпта. Если не задан, OpenClaw определяет его автоматически, поднимаясь вверх от рабочего пространства.
{ agents: { defaults: { repoRoot: "~/Projects/openclaw" } },}agents.defaults.skills
Необязательный список разрешенных 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 отсутствовали. - Непустой список
agents.list[].skillsявляется итоговым набором для этого агента; он не объединяется со значениями по умолчанию.
agents.defaults.skipBootstrap
Отключает автоматическое создание файлов начальной загрузки рабочего пространства (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
{ agents: { defaults: { skipBootstrap: true } },}agents.defaults.skipOptionalBootstrapFiles
Пропускает создание выбранных необязательных файлов рабочего пространства, но продолжает записывать обязательные файлы начальной загрузки. Допустимые значения: SOUL.md, USER.md, HEARTBEAT.md и IDENTITY.md.
{ agents: { defaults: { skipOptionalBootstrapFiles: ["SOUL.md", "USER.md"], }, },}agents.defaults.contextInjection
Управляет тем, когда файлы начальной загрузки рабочего пространства внедряются в системный промпт. По умолчанию: "always".
"continuation-skip": безопасные ходы продолжения (после завершенного ответа ассистента) пропускают повторное внедрение начальной загрузки рабочего пространства, уменьшая размер промпта. Запуски Heartbeat и повторные попытки после Compaction по-прежнему перестраивают контекст."never": отключает начальную загрузку рабочего пространства и внедрение контекстных файлов на каждом ходе. Используйте это только для агентов, которые полностью управляют жизненным циклом своего промпта (пользовательские контекстные движки, нативные среды выполнения, которые строят собственный контекст, или специализированные рабочие процессы без начальной загрузки). Ходы Heartbeat и восстановления после Compaction также пропускают внедрение.
{ agents: { defaults: { contextInjection: "continuation-skip" } },}Переопределение для отдельного агента: agents.list[].contextInjection. Пропущенные значения наследуют
agents.defaults.contextInjection.
agents.defaults.bootstrapMaxChars
Максимум символов на файл начальной загрузки рабочего пространства до усечения. По умолчанию: 20000.
{ agents: { defaults: { bootstrapMaxChars: 20000 } },}Переопределение для отдельного агента: agents.list[].bootstrapMaxChars. Пропущенные значения наследуют
agents.defaults.bootstrapMaxChars.
agents.defaults.bootstrapTotalMaxChars
Максимальное суммарное число символов, внедряемых из всех файлов начальной загрузки рабочего пространства. По умолчанию: 60000.
{ agents: { defaults: { bootstrapTotalMaxChars: 60000 } },}Переопределение для отдельного агента: agents.list[].bootstrapTotalMaxChars. Пропущенные значения
наследуют agents.defaults.bootstrapTotalMaxChars.
Переопределения профиля начальной загрузки для отдельных агентов
Используйте переопределения профиля начальной загрузки для отдельного агента, когда одному агенту требуется поведение
внедрения промпта, отличное от общих значений по умолчанию. Пропущенные поля наследуются из
agents.defaults.
{ agents: { defaults: { contextInjection: "continuation-skip", bootstrapMaxChars: 20000, bootstrapTotalMaxChars: 60000, }, list: [ { id: "strict-worker", contextInjection: "always", bootstrapMaxChars: 50000, bootstrapTotalMaxChars: 300000, }, ], },}agents.defaults.bootstrapPromptTruncationWarning
Управляет видимым агенту уведомлением в системном промпте, когда контекст начальной загрузки усечен.
По умолчанию: "always".
"off": никогда не внедрять текст уведомления об усечении в системный промпт."once": внедрять краткое уведомление один раз для каждой уникальной сигнатуры усечения."always": внедрять краткое уведомление при каждом запуске, когда есть усечение (рекомендуется).
Подробные исходные/внедренные счетчики и поля настройки конфигурации остаются в диагностике, например в отчетах о контексте/статусе и журналах; обычный пользовательский/исполнительный контекст WebChat получает только краткое уведомление о восстановлении.
{ agents: { defaults: { bootstrapPromptTruncationWarning: "always" } }, // off | once | always}Карта владения бюджетами контекста
В OpenClaw есть несколько больших бюджетов промпта/контекста, и они намеренно разделены по подсистемам, а не проходят через один общий регулятор.
agents.defaults.bootstrapMaxChars/agents.defaults.bootstrapTotalMaxChars: обычное внедрение начальной загрузки рабочего пространства.agents.defaults.startupContext.*: одноразовая прелюдия сброса/запуска модельного прогона, включая недавние ежедневные файлыmemory/*.md. Простые команды чата/newи/resetподтверждаются без вызова модели.skills.limits.*: компактный список Skills, внедряемый в системный промпт.agents.defaults.contextLimits.*: ограниченные фрагменты среды выполнения и внедренные блоки, принадлежащие среде выполнения.memory.qmd.limits.*: размер индексированного фрагмента поиска по памяти и внедрения.
Используйте соответствующее переопределение для отдельного агента только тогда, когда одному агенту нужен другой бюджет:
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextInjectionagents.list[].bootstrapMaxCharsagents.list[].bootstrapTotalMaxCharsagents.list[].contextLimits.*
agents.defaults.startupContext
Управляет стартовой прелюдией первого хода, внедряемой при модельных прогонах сброса/запуска.
Простые команды чата /new и /reset подтверждают сброс без вызова
модели, поэтому они не загружают эту прелюдию.
{ agents: { defaults: { startupContext: { enabled: true, applyOn: ["new", "reset"], dailyMemoryDays: 2, maxFileBytes: 16384, maxFileChars: 1200, maxTotalChars: 2800, }, }, },}agents.defaults.contextLimits
Общие значения по умолчанию для ограниченных поверхностей контекста среды выполнения.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, memoryGetDefaultLines: 120, postCompactionMaxChars: 1800, }, }, },}memoryGetMaxChars: ограничение фрагментаmemory_getпо умолчанию до добавления метаданных усечения и уведомления о продолжении.memoryGetDefaultLines: окно строкmemory_getпо умолчанию, когдаlinesопущено.toolResultMaxChars: расширенный потолок результатов живых инструментов, используемый для сохраненных результатов и восстановления при переполнении. Оставьте незаданным для автоматического ограничения модельного контекста:16000символов ниже 100K токенов,32000символов при 100K+ токенов и64000символов при 200K+ токенов. Явные значения до1000000принимаются для моделей с длинным контекстом, но эффективное ограничение все равно ограничено примерно 30% от окна контекста модели.openclaw doctor --deepвыводит эффективное ограничение, а doctor предупреждает только тогда, когда явное переопределение устарело или не имеет эффекта.postCompactionMaxChars: ограничение фрагмента AGENTS.md, используемое при внедрении обновления после Compaction.
agents.list[].contextLimits
Переопределение для отдельного агента для общих регуляторов contextLimits. Пропущенные поля наследуют
agents.defaults.contextLimits.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, }, }, list: [ { id: "tiny-local", contextLimits: { memoryGetMaxChars: 6000, toolResultMaxChars: 8000, // advanced ceiling for this agent }, }, ], },}skills.limits.maxSkillsPromptChars
Глобальное ограничение компактного списка Skills, внедряемого в системный промпт. Это
не влияет на чтение файлов SKILL.md по требованию.
{ skills: { limits: { maxSkillsPromptChars: 18000, }, },}agents.list[].skillsLimits.maxSkillsPromptChars
Переопределение бюджета промпта Skills для отдельного агента.
{ agents: { list: [ { id: "tiny-local", skillsLimits: { maxSkillsPromptChars: 6000, }, }, ], },}agents.defaults.imageMaxDimensionPx
Максимальный размер в пикселях для самой длинной стороны изображения в блоках изображений транскрипта/инструмента перед вызовами провайдера.
По умолчанию: 1200.
Более низкие значения обычно уменьшают использование vision-токенов и размер полезной нагрузки запроса для прогонов с большим количеством скриншотов. Более высокие значения сохраняют больше визуальных деталей.
{ agents: { defaults: { imageMaxDimensionPx: 1200 } },}agents.defaults.imageQuality
Предпочтение сжатия/детализации image-инструмента для изображений, загруженных из файловых путей, URL и медиа-ссылок.
По умолчанию: auto.
OpenClaw адаптирует лестницу изменения размера к выбранной модели изображений. Например, Claude Opus 4.8, OpenAI GPT-5.5, Qwen VL и размещенные vision-модели Llama 4 могут использовать более крупные изображения, чем старые/стандартные vision-пути с высокой детализацией, а ходы с несколькими изображениями сжимаются агрессивнее в режиме auto, чтобы контролировать стоимость токенов и задержку.
Значения:
auto: адаптироваться к ограничениям модели и количеству изображений.efficient: предпочитать меньшие изображения для снижения расхода токенов и байтов.balanced: использовать стандартную промежуточную лестницу.high: сохранять больше деталей для скриншотов, диаграмм и изображений документов.
{ agents: { defaults: { imageQuality: "auto" } },}agents.defaults.userTimezone
Часовой пояс для контекста системного промпта (не для временных меток сообщений). Использует часовой пояс хоста как запасной вариант.
{ agents: { defaults: { userTimezone: "America/Chicago" } },}agents.defaults.timeFormat
Формат времени в системном промпте. По умолчанию: auto (настройка ОС).
{ agents: { defaults: { timeFormat: "auto" } }, // auto | 12 | 24}agents.defaults.model
{ agents: { defaults: { models: { "anthropic/claude-opus-4-6": { alias: "opus" }, "minimax/MiniMax-M2.7": { alias: "minimax" }, }, model: { primary: "anthropic/claude-opus-4-6", fallbacks: ["minimax/MiniMax-M2.7"], }, imageModel: { primary: "openrouter/qwen/qwen-2.5-vl-72b-instruct:free", fallbacks: ["openrouter/google/gemini-2.0-flash-vision:free"], }, imageGenerationModel: { primary: "openai/gpt-image-2", fallbacks: ["google/gemini-3.1-flash-image-preview"], }, videoGenerationModel: { primary: "qwen/wan2.6-t2v", fallbacks: ["qwen/wan2.6-i2v"], }, pdfModel: { primary: "anthropic/claude-opus-4-6", fallbacks: ["openai/gpt-5.4-mini"], }, params: { cacheRetention: "long" }, // global default provider params pdfMaxBytesMb: 10, pdfMaxPages: 20, thinkingDefault: "low", verboseDefault: "off", toolProgressDetail: "explain", reasoningDefault: "off", elevatedDefault: "on", timeoutSeconds: 600, mediaMaxMb: 5, contextTokens: 200000, maxConcurrent: 3, }, },}model: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Строковая форма задает только основную модель.
- Объектная форма задает основную модель и упорядоченные модели для аварийного переключения.
imageModel: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Используется путем инструмента
imageкак его конфигурация модели зрения. - Также используется как резервная маршрутизация, когда выбранная/стандартная модель не может принимать изображения на вход.
- Предпочитайте явные ссылки
provider/model. Простые ID принимаются для совместимости; если простой ID однозначно совпадает с настроенной записью, поддерживающей изображения, вmodels.providers.*.models, OpenClaw дополняет его этим провайдером. Неоднозначные настроенные совпадения требуют явного префикса провайдера.
- Используется путем инструмента
imageGenerationModel: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Используется общей возможностью генерации изображений и любой будущей поверхностью инструмента/плагина, которая генерирует изображения.
- Типичные значения:
google/gemini-3.1-flash-image-previewдля нативной генерации изображений Gemini,fal/fal-ai/flux/devдля fal,openai/gpt-image-2для OpenAI Images илиopenai/gpt-image-1.5для вывода PNG/WebP OpenAI с прозрачным фоном. - Если вы выбираете провайдера/модель напрямую, также настройте соответствующую аутентификацию провайдера (например,
GEMINI_API_KEYилиGOOGLE_API_KEYдляgoogle/*,OPENAI_API_KEYили OpenAI Codex OAuth дляopenai/gpt-image-2/openai/gpt-image-1.5,FAL_KEYдляfal/*). - Если параметр опущен,
image_generateвсе равно может вывести стандартного провайдера, подкрепленного аутентификацией. Сначала он пробует текущего стандартного провайдера, затем остальных зарегистрированных провайдеров генерации изображений в порядке ID провайдера.
musicGenerationModel: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Используется общей возможностью генерации музыки и встроенным инструментом
music_generate. - Типичные значения:
google/lyria-3-clip-preview,google/lyria-3-pro-previewилиminimax/music-2.6. - Если параметр опущен,
music_generateвсе равно может вывести стандартного провайдера, подкрепленного аутентификацией. Сначала он пробует текущего стандартного провайдера, затем остальных зарегистрированных провайдеров генерации музыки в порядке ID провайдера. - Если вы выбираете провайдера/модель напрямую, также настройте соответствующую аутентификацию/API-ключ провайдера.
- Используется общей возможностью генерации музыки и встроенным инструментом
videoGenerationModel: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Используется общей возможностью генерации видео и встроенным инструментом
video_generate. - Типичные значения:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashилиqwen/wan2.7-r2v. - Если параметр опущен,
video_generateвсе равно может вывести стандартного провайдера, подкрепленного аутентификацией. Сначала он пробует текущего стандартного провайдера, затем остальных зарегистрированных провайдеров генерации видео в порядке ID провайдера. - Если вы выбираете провайдера/модель напрямую, также настройте соответствующую аутентификацию/API-ключ провайдера.
- Официальный плагин генерации видео Qwen поддерживает до 1 выходного видео, 1 входного изображения, 4 входных видео, длительность 10 секунд и параметры уровня провайдера
size,aspectRatio,resolution,audioиwatermark.
- Используется общей возможностью генерации видео и встроенным инструментом
pdfModel: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Используется инструментом
pdfдля маршрутизации моделей. - Если параметр опущен, инструмент PDF переходит к
imageModel, затем к разрешенной модели сеанса/стандартной модели.
- Используется инструментом
pdfMaxBytesMb: стандартный лимит размера PDF для инструментаpdf, когдаmaxBytesMbне передан во время вызова.pdfMaxPages: стандартное максимальное число страниц, учитываемых резервным режимом извлечения в инструментеpdf.verboseDefault: стандартный уровень подробности для агентов. Значения:"off","on","full". По умолчанию:"off".toolProgressDetail: режим детализации для сводок инструментов/verboseи строк инструментов в черновиках прогресса. Значения:"explain"(по умолчанию, компактные человекочитаемые метки) или"raw"(добавляет необработанную команду/детали, когда доступны).agents.list[].toolProgressDetailдля конкретного агента переопределяет это значение по умолчанию.reasoningDefault: стандартная видимость рассуждений для агентов. Значения:"off","on","stream".agents.list[].reasoningDefaultдля конкретного агента переопределяет это значение по умолчанию. Настроенные стандартные значения рассуждений применяются только для владельцев, авторизованных отправителей или операторско-административных контекстов Gateway, когда не задано переопределение рассуждений для сообщения или сеанса.elevatedDefault: стандартный уровень повышенного вывода для агентов. Значения:"off","on","ask","full". По умолчанию:"on".model.primary: форматprovider/model(например,openai/gpt-5.5для доступа через API-ключ OpenAI или Codex OAuth). Если вы опускаете провайдера, OpenClaw сначала пробует псевдоним, затем уникальное совпадение настроенного провайдера для этого точного ID модели и только потом возвращается к настроенному стандартному провайдеру (устаревшее поведение совместимости, поэтому предпочитайте явныйprovider/model). Если этот провайдер больше не предоставляет настроенную стандартную модель, OpenClaw возвращается к первой настроенной паре провайдер/модель вместо того, чтобы показывать устаревшее значение по умолчанию удаленного провайдера.models: настроенный каталог моделей и allowlist для/model. Каждая запись может включатьalias(сокращение) иparams(специфичные для провайдера, напримерtemperature,maxTokens,cacheRetention,context1m,responsesServerCompaction,responsesCompactThreshold, маршрутизация OpenRouterprovider,chat_template_kwargs,extra_body/extraBody).- Используйте записи
provider/*, такие как"openai/*": {}или"vllm/*": {}, чтобы показывать все обнаруженные модели для выбранных провайдеров без ручного перечисления каждого ID модели. - Добавьте
agentRuntimeв записьprovider/*, когда каждая динамически обнаруженная модель для этого провайдера должна использовать один и тот же рантайм. Точная политика рантаймаprovider/modelвсе равно имеет приоритет над wildcard. - Безопасные правки: используйте
openclaw config set agents.defaults.models '<json>' --strict-json --merge, чтобы добавлять записи.config setотклоняет замены, которые удалили бы существующие записи allowlist, если не передать--replace. - Потоки настройки/onboarding с областью провайдера объединяют выбранные модели провайдера в эту карту и сохраняют уже настроенных несвязанных провайдеров.
- Для прямых моделей OpenAI Responses серверная Compaction включается автоматически. Используйте
params.responsesServerCompaction: false, чтобы прекратить внедрениеcontext_management, илиparams.responsesCompactThreshold, чтобы переопределить порог. См. серверную Compaction OpenAI.
- Используйте записи
params: глобальные стандартные параметры провайдера, применяемые ко всем моделям. Задаются вagents.defaults.params(например,{ cacheRetention: "long" }).- Приоритет слияния
params(конфигурация):agents.defaults.params(глобальная база) переопределяетсяagents.defaults.models["provider/model"].params(для модели), затемagents.list[].params(для совпадающего ID агента) переопределяет по ключу. Подробнее см. кэширование промптов. models.providers.openrouter.params.provider: стандартная политика маршрутизации провайдеров для всего OpenRouter. OpenClaw передает ее в объектproviderзапроса OpenRouter;agents.defaults.models["openrouter/<model>"].params.providerдля конкретной модели и параметры агента переопределяют по ключу. См. маршрутизацию провайдеров OpenRouter.params.extra_body/params.extraBody: расширенный сквозной JSON, объединяемый в тела запросовapi: "openai-completions"для OpenAI-совместимых прокси. Если он конфликтует с сгенерированными ключами запроса, дополнительное тело имеет приоритет; ненативные маршруты completions все равно затем удаляют OpenAI-onlystore.params.chat_template_kwargs: аргументы chat-template для vLLM/OpenAI-совместимых систем, объединяемые в верхнеуровневые тела запросовapi: "openai-completions". Дляvllm/nemotron-3-*с выключенным мышлением встроенный плагин vLLM автоматически отправляетenable_thinking: falseиforce_nonempty_content: true; явныеchat_template_kwargsпереопределяют сгенерированные значения по умолчанию, аextra_body.chat_template_kwargsвсе равно имеет окончательный приоритет. Настроенные модели мышления vLLM Qwen и Nemotron предоставляют бинарные варианты/think(off,on) вместо многоуровневой шкалы усилия.compat.thinkingFormat: стиль полезной нагрузки мышления, совместимый с OpenAI. Используйте"together"для стиля Togetherreasoning.enabled,"qwen"для стиля Qwen с верхнеуровневымenable_thinkingили"qwen-chat-template"дляchat_template_kwargs.enable_thinkingна бэкендах семейства Qwen, которые поддерживают kwargs chat-template уровня запроса, таких как vLLM. OpenClaw отображает отключенное мышление вfalse, а включенное мышление вtrue; настроенные модели vLLM Qwen предоставляют бинарные варианты/thinkдля этих форматов.compat.supportedReasoningEfforts: список уровней reasoning effort для конкретной модели, совместимый с OpenAI. Включайте"xhigh"для пользовательских конечных точек, которые действительно принимают его; тогда OpenClaw показывает/think xhighв меню команд, строках сеансов Gateway, валидации патча сеанса, валидации CLI агента и валидацииllm-taskдля этой настроенной пары провайдер/модель. Используйтеcompat.reasoningEffortMap, когда бэкенду нужно специфичное для провайдера значение для канонического уровня.params.preserveThinking: опциональное включение только для Z.AI для сохраненного мышления. Когда включено и мышление активно, OpenClaw отправляетthinking.clear_thinking: falseи повторно воспроизводит предыдущийreasoning_content; см. мышление Z.AI и сохраненное мышление.localService: необязательный менеджер процессов уровня провайдера для локальных/self-hosted серверов моделей. Когда выбранная модель принадлежит этому провайдеру, OpenClaw проверяетhealthUrl(илиbaseUrl + "/models"), запускаетcommandсargs, если конечная точка недоступна, ждет доreadyTimeoutMs, затем отправляет запрос модели.commandдолжен быть абсолютным путем.idleStopMs: 0оставляет процесс запущенным до выхода OpenClaw; положительное значение останавливает процесс, запущенный OpenClaw, после указанного числа миллисекунд простоя. См. локальные сервисы моделей.- Политика рантайма относится к провайдерам или моделям, а не к
agents.defaults. Используйтеmodels.providers.<provider>.agentRuntimeдля правил на уровне всего провайдера илиagents.defaults.models["provider/model"].agentRuntime/agents.list[].models["provider/model"].agentRuntimeдля правил конкретной модели. Агентские модели OpenAI у официального провайдера OpenAI по умолчанию выбирают Codex. - Писатели конфигурации, которые изменяют эти поля (например,
/models set,/models set-imageи команды добавления/удаления резервных моделей), сохраняют каноническую объектную форму и по возможности сохраняют существующие списки резервных моделей. maxConcurrent: максимальное число параллельных запусков агентов между сеансами (каждый сеанс все равно сериализован). По умолчанию: 4.
Политика рантайма
{ models: { providers: { openai: { agentRuntime: { id: "codex" }, }, }, }, agents: { defaults: { model: "openai/gpt-5.5", models: { "anthropic/claude-opus-4-8": { agentRuntime: { id: "claude-cli" }, }, "vllm/*": { agentRuntime: { id: "openclaw" }, }, }, }, },}id:"auto","openclaw", id зарегистрированной обвязки плагина или поддерживаемый псевдоним CLI-бэкенда. Встроенный плагин Codex регистрируетcodex; встроенный плагин Anthropic предоставляет CLI-бэкендclaude-cli.id: "auto"позволяет зарегистрированным обвязкам плагинов забирать поддерживаемые ходы и использует OpenClaw, когда ни одна обвязка не совпадает. Явная среда выполнения плагина, напримерid: "codex", требует эту обвязку и завершается отказом, если она недоступна или дает сбой.id: "pi"принимается только как устаревший псевдоним дляopenclaw, чтобы сохранить выпущенные конфигурации из v2026.5.22 и более ранних версий. Новая конфигурация должна использоватьopenclaw.- Приоритет среды выполнения: сначала точная политика модели (
agents.list[].models["provider/model"],agents.defaults.models["provider/model"]илиmodels.providers.<provider>.models[]), затемagents.list[]/agents.defaults.models["provider/*"], затем политика всего провайдера вmodels.providers.<provider>.agentRuntime. - Ключи среды выполнения всего агента являются устаревшими.
agents.defaults.agentRuntime,agents.list[].agentRuntime, закрепления среды выполнения сеанса иOPENCLAW_AGENT_RUNTIMEигнорируются при выборе среды выполнения. Запуститеopenclaw doctor --fix, чтобы удалить устаревшие значения. - Агентские модели OpenAI по умолчанию используют обвязку Codex;
agentRuntime.id: "codex"для провайдера/модели остается допустимым, если вы хотите указать это явно. - Для развертываний Claude CLI предпочитайте
model: "anthropic/claude-opus-4-8"плюс привязанный к моделиagentRuntime.id: "claude-cli". Устаревшие ссылки на моделиclaude-cli/claude-opus-4-7по-прежнему работают для совместимости, но новая конфигурация должна сохранять канонический выбор провайдера/модели и помещать бэкенд выполнения в политику среды выполнения провайдера/модели. - Это управляет только выполнением текстовых агентских ходов. Генерация медиа, зрение, PDF, музыка, видео и TTS по-прежнему используют свои настройки провайдера/модели.
Встроенные сокращения псевдонимов (применяются только когда модель находится в agents.defaults.models):
| Псевдоним | Модель |
|---|---|
opus |
anthropic/claude-opus-4-6 |
sonnet |
anthropic/claude-sonnet-4-6 |
gpt |
openai/gpt-5.5 |
gpt-mini |
openai/gpt-5.4-mini |
gpt-nano |
openai/gpt-5.4-nano |
gemini |
google/gemini-3.1-pro-preview |
gemini-flash |
google/gemini-3-flash-preview |
gemini-flash-lite |
google/gemini-3.1-flash-lite |
Ваши настроенные псевдонимы всегда имеют приоритет над значениями по умолчанию.
Модели Z.AI GLM-4.x автоматически включают режим размышления, если вы не зададите --thinking off или самостоятельно не определите agents.defaults.models["zai/<model>"].params.thinking.
Модели Z.AI по умолчанию включают tool_stream для потоковой передачи вызовов инструментов. Задайте agents.defaults.models["zai/<model>"].params.tool_stream в false, чтобы отключить это.
Anthropic Claude Opus 4.8 в OpenClaw по умолчанию оставляет размышление выключенным; когда адаптивное размышление явно включено, принадлежащее провайдеру значение effort по умолчанию у Anthropic равно high. Для моделей Claude 4.6 по умолчанию используется adaptive, если явный уровень размышления не задан.
agents.defaults.cliBackends
Необязательные CLI-бэкенды для резервных запусков только с текстом (без вызовов инструментов). Полезно как запасной вариант, когда API-провайдеры дают сбой.
{ agents: { defaults: { cliBackends: { "claude-cli": { command: "/opt/homebrew/bin/claude", }, "my-cli": { command: "my-cli", args: ["--json"], output: "json", modelArg: "--model", sessionArg: "--session", sessionMode: "existing", systemPromptArg: "--system", // Or use systemPromptFileArg when the CLI accepts a prompt file flag. systemPromptWhen: "first", imageArg: "--image", imageMode: "repeat", }, }, }, },}- CLI-бэкенды ориентированы на текст; инструменты всегда отключены.
- Сеансы поддерживаются, когда задан
sessionArg. - Сквозная передача изображений поддерживается, когда
imageArgпринимает пути к файлам. reseedFromRawTranscriptWhenUncompacted: trueпозволяет бэкенду восстанавливать безопасные инвалидированные сеансы из ограниченного хвоста сырой стенограммы OpenClaw до того, как появится первая сводка Compaction. Изменения профиля аутентификации или эпохи учетных данных по-прежнему никогда не выполняют повторное заполнение из сырой стенограммы.
agents.defaults.promptOverlays
Независимые от провайдера наложения промпта, применяемые по семейству моделей на поверхностях промпта, собранных OpenClaw. Id моделей семейства GPT-5 получают общий контракт поведения на маршрутах OpenClaw/провайдера; personality управляет только дружественным слоем стиля взаимодействия. Нативные маршруты сервера приложения Codex сохраняют базовые/модельные инструкции, принадлежащие Codex, вместо этого наложения OpenClaw GPT-5, а OpenClaw отключает встроенную personality Codex для нативных потоков.
{ agents: { defaults: { promptOverlays: { gpt5: { personality: "friendly", // friendly | on | off }, }, }, },}"friendly"(по умолчанию) и"on"включают дружественный слой стиля взаимодействия."off"отключает только дружественный слой; помеченный контракт поведения GPT-5 остается включенным.- Устаревший
plugins.entries.openai.config.personalityпо-прежнему читается, когда эта общая настройка не задана.
agents.defaults.heartbeat
Периодические запуски Heartbeat.
{ agents: { defaults: { heartbeat: { every: "30m", // 0m disables model: "openai/gpt-5.4-mini", includeReasoning: false, includeSystemPromptSection: true, // default: true; false omits the Heartbeat section from the system prompt lightContext: false, // default: false; true keeps only HEARTBEAT.md from workspace bootstrap files isolatedSession: false, // default: false; true runs each heartbeat in a fresh session (no conversation history) skipWhenBusy: false, // default: false; true also waits for this agent's subagent/nested lanes session: "main", to: "+15555550123", directPolicy: "allow", // allow (default) | block target: "none", // default: none | options: last | whatsapp | telegram | discord | ... prompt: "Read HEARTBEAT.md if it exists...", ackMaxChars: 300, suppressToolErrorWarnings: false, timeoutSeconds: 45, }, }, },}every: строка длительности (ms/s/m/h). По умолчанию:30m(аутентификация по API-ключу) или1h(аутентификация OAuth). Задайте0m, чтобы отключить.includeSystemPromptSection: когда false, опускает раздел Heartbeat из системного промпта и пропускает внедрениеHEARTBEAT.mdв начальный контекст. По умолчанию:true.suppressToolErrorWarnings: когда true, подавляет полезные нагрузки предупреждений об ошибках инструментов во время запусков Heartbeat.timeoutSeconds: максимальное время в секундах, разрешенное для агентского хода Heartbeat до его прерывания. Оставьте незаданным, чтобы использоватьagents.defaults.timeoutSeconds, когда он задан, иначе применяется cadence Heartbeat с ограничением 600 секунд.directPolicy: политика прямой доставки/DM.allow(по умолчанию) разрешает доставку прямым целям.blockподавляет доставку прямым целям и выдаетreason=dm-blocked.lightContext: когда true, запуски Heartbeat используют облегченный начальный контекст и сохраняют толькоHEARTBEAT.mdиз начальных файлов рабочей области.isolatedSession: когда true, каждый Heartbeat запускается в свежем сеансе без предыдущей истории разговора. Та же схема изоляции, что и у cronsessionTarget: "isolated". Снижает стоимость токенов на один Heartbeat примерно со 100K до 2-5K токенов.skipWhenBusy: когда true, запуски Heartbeat откладываются на дополнительных занятых линиях этого агента: его собственной привязанной к ключу сеанса работе субагента или вложенной команды. Линии Cron всегда откладывают Heartbeat, даже без этого флага.- Для отдельного агента: задайте
agents.list[].heartbeat. Когда любой агент определяетheartbeat, Heartbeat запускают только эти агенты. - Heartbeat выполняют полные агентские ходы — более короткие интервалы расходуют больше токенов.
agents.defaults.compaction
{ agents: { defaults: { compaction: { mode: "safeguard", // default | safeguard provider: "my-provider", // id of a registered compaction provider plugin (optional) timeoutSeconds: 180, reserveTokensFloor: 24000, keepRecentTokens: 50000, identifierPolicy: "strict", // strict | off | custom identifierInstructions: "Preserve deployment IDs, ticket IDs, and host:port pairs exactly.", // used when identifierPolicy=custom qualityGuard: { enabled: true, maxRetries: 1 }, midTurnPrecheck: { enabled: false }, // optional tool-loop pressure check postCompactionSections: ["Session Startup", "Red Lines"], // opt in to AGENTS.md section reinjection model: "openrouter/anthropic/claude-sonnet-4-6", // optional compaction-only model override truncateAfterCompaction: true, // rotate to a smaller successor JSONL after compaction maxActiveTranscriptBytes: "20mb", // optional preflight local compaction trigger notifyUser: true, // send brief notices when compaction starts and completes (default: false) memoryFlush: { enabled: true, model: "ollama/qwen3:8b", // optional memory-flush-only model override softThresholdTokens: 6000, systemPrompt: "Session nearing compaction. Store durable memories now.", prompt: "Write any lasting notes to memory/YYYY-MM-DD.md; reply with the exact silent token NO_REPLY if nothing to store.", }, }, }, },}mode:defaultилиsafeguard(фрагментированное суммирование для длинных историй). См. Compaction.provider: идентификатор зарегистрированного plugin-провайдера compaction. Если задан, вызываетсяsummarize()провайдера вместо встроенного LLM-суммирования. При сбое выполняется откат к встроенному варианту. Задание провайдера принудительно включаетmode: "safeguard". См. Compaction.timeoutSeconds: максимальное число секунд, разрешенное для одной операции compaction, прежде чем OpenClaw прервет ее. По умолчанию:180.keepRecentTokens: бюджет точки отсечения агента для сохранения самого свежего хвоста транскрипта без изменений. Ручной/compactучитывает это значение, когда оно задано явно; иначе ручная compaction является жесткой контрольной точкой.identifierPolicy:strict(по умолчанию),offилиcustom.strictдобавляет встроенные инструкции по сохранению непрозрачных идентификаторов перед суммированием compaction.identifierInstructions: необязательный пользовательский текст для сохранения идентификаторов, используемый приidentifierPolicy=custom.qualityGuard: проверки с повтором при некорректно сформированном выводе для safeguard-сводок. Включено по умолчанию в режиме safeguard; задайтеenabled: false, чтобы пропустить аудит.midTurnPrecheck: необязательная проверка нагрузки цикла инструментов. Когдаenabled: true, OpenClaw проверяет нагрузку на контекст после добавления результатов инструментов и перед следующим вызовом модели. Если контекст больше не помещается, он прерывает текущую попытку до отправки промпта и повторно использует существующий путь восстановления precheck, чтобы усечь результаты инструментов или выполнить compaction и повторить попытку. Работает с обоими режимами compaction:defaultиsafeguard. По умолчанию: отключено.postCompactionSections: необязательные имена разделов H2/H3 из AGENTS.md для повторной вставки после compaction. Повторная вставка отключена, если значение не задано или равно[]. Явное задание["Session Startup", "Red Lines"]включает эту пару и сохраняет устаревший fallbackEvery Session/Safety. Включайте это только тогда, когда дополнительный контекст стоит риска дублирования проектных инструкций, уже захваченных в сводке compaction.model: необязательныйprovider/model-idили простой псевдоним изagents.defaults.modelsтолько для суммирования compaction. Простые псевдонимы разрешаются до отправки; настроенные буквальные идентификаторы моделей сохраняют приоритет при коллизиях. Используйте это, когда основной сеанс должен сохранить одну модель, а сводки compaction должны выполняться на другой; если не задано, compaction использует основную модель сеанса.maxActiveTranscriptBytes: необязательный порог в байтах (numberили строки вроде"20mb"), который запускает обычную локальную compaction перед запуском, когда активный JSONL превышает порог. ТребуетtruncateAfterCompaction, чтобы успешная compaction могла ротировать транскрипт в меньший последующий файл. Отключено, если не задано или равно0.notifyUser: когдаtrue, отправляет пользователю краткие уведомления при запуске compaction и после ее завершения (например, "Compacting context..." и "Compaction complete"). По умолчанию отключено, чтобы compaction выполнялась без уведомлений.memoryFlush: тихий агентный ход перед auto-compaction для сохранения долговременных воспоминаний. Задайтеmodelточным провайдером/моделью, напримерollama/qwen3:8b, когда этот служебный ход должен оставаться на локальной модели; переопределение не наследует fallback-цепочку активного сеанса. Пропускается, когда рабочая область доступна только для чтения.
agents.defaults.runRetries
Границы итераций повторов внешнего цикла запуска для встроенной среды выполнения агента, чтобы предотвратить бесконечные циклы выполнения при восстановлении после сбоев. Обратите внимание, что эта настройка сейчас применяется только к встроенной среде выполнения агента, а не к средам выполнения ACP или CLI.
{ agents: { defaults: { runRetries: { base: 24, perProfile: 8, min: 32, max: 160, }, }, list: [ { id: "main", runRetries: { max: 50 }, // optional per-agent overrides }, ], },}base: базовое число итераций повторов запуска для внешнего цикла запуска. По умолчанию:24.perProfile: дополнительные итерации повторов запуска, предоставляемые каждому кандидату fallback-профиля. По умолчанию:8.min: минимальный абсолютный предел итераций повторов запуска. По умолчанию:32.max: максимальный абсолютный предел итераций повторов запуска для предотвращения неконтролируемого выполнения. По умолчанию:160.
agents.defaults.contextPruning
Обрезает старые результаты инструментов из контекста в памяти перед отправкой в LLM. Не изменяет историю сеанса на диске.
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", // off | cache-ttl ttl: "1h", // duration (ms/s/m/h), default unit: minutes keepLastAssistants: 3, softTrimRatio: 0.3, hardClearRatio: 0.5, minPrunableToolChars: 50000, softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }, hardClear: { enabled: true, placeholder: "[Old tool result content cleared]" }, tools: { deny: ["browser", "canvas"] }, }, }, },}поведение режима cache-ttl
mode: "cache-ttl"включает проходы обрезки.ttlуправляет тем, как часто обрезка может запускаться снова (после последнего обращения к кэшу).- Обрезка сначала мягко усекает слишком большие результаты инструментов, затем при необходимости полностью очищает более старые результаты инструментов.
softTrimRatioиhardClearRatioпринимают значения от0.0до1.0; проверка конфигурации отклоняет значения вне этого диапазона.
Мягкое усечение сохраняет начало + конец и вставляет ... в середину.
Полная очистка заменяет весь результат инструмента заполнителем.
Примечания:
- Блоки изображений никогда не усекаются и не очищаются.
- Коэффициенты основаны на символах (приблизительно), а не на точном числе токенов.
- Если сообщений assistant меньше, чем
keepLastAssistants, обрезка пропускается.
См. Обрезка сеанса для подробностей поведения.
Блочная потоковая передача
{ agents: { defaults: { blockStreamingDefault: "off", // on | off blockStreamingBreak: "text_end", // text_end | message_end blockStreamingChunk: { minChars: 800, maxChars: 1200 }, blockStreamingCoalesce: { idleMs: 1000 }, humanDelay: { mode: "natural" }, // off | natural | custom (use minMs/maxMs) }, },}- Каналы, не относящиеся к Telegram, требуют явного
*.blockStreaming: true, чтобы включить блочные ответы. - Переопределения каналов:
channels.<channel>.blockStreamingCoalesce(и варианты для отдельных аккаунтов). Signal/Slack/Discord/Google Chat по умолчанию используютminChars: 1500. humanDelay: случайная пауза между блочными ответами.natural= 800-2500 мс. Переопределение для агента:agents.list[].humanDelay.
См. Потоковая передача для подробностей поведения и разбиения на фрагменты.
Индикаторы набора текста
{ agents: { defaults: { typingMode: "instant", // never | instant | thinking | message typingIntervalSeconds: 6, }, },}- По умолчанию:
instantдля прямых чатов/упоминаний,messageдля групповых чатов без упоминания. - Переопределения для сеанса:
session.typingMode,session.typingIntervalSeconds.
См. индикаторы набора.
agents.defaults.sandbox
Необязательная изоляция для встроенного агента. Полное руководство см. в разделе изоляция.
{ agents: { defaults: { sandbox: { mode: "non-main", // off | non-main | all backend: "docker", // docker | ssh | openshell scope: "agent", // session | agent | shared workspaceAccess: "none", // none | ro | rw workspaceRoot: "~/.openclaw/sandboxes", docker: { image: "openclaw-sandbox:bookworm-slim", containerPrefix: "openclaw-sbx-", workdir: "/workspace", readOnlyRoot: true, tmpfs: ["/tmp", "/var/tmp", "/run"], network: "none", user: "1000:1000", capDrop: ["ALL"], env: { LANG: "C.UTF-8" }, setupCommand: "apt-get update && apt-get install -y git curl jq", pidsLimit: 256, memory: "1g", memorySwap: "2g", cpus: 1, ulimits: { nofile: { soft: 1024, hard: 2048 }, nproc: 256, }, seccompProfile: "/path/to/seccomp.json", apparmorProfile: "openclaw-sandbox", dns: ["1.1.1.1", "8.8.8.8"], extraHosts: ["internal.service:10.0.0.5"], binds: ["/home/user/source:/source:rw"], }, ssh: { target: "user@gateway-host:22", command: "ssh", workspaceRoot: "/tmp/openclaw-sandboxes", strictHostKeyChecking: true, updateHostKeys: true, identityFile: "~/.ssh/id_ed25519", certificateFile: "~/.ssh/id_ed25519-cert.pub", knownHostsFile: "~/.ssh/known_hosts", // SecretRefs / inline contents also supported: // identityData: { source: "env", provider: "default", id: "SSH_IDENTITY" }, // certificateData: { source: "env", provider: "default", id: "SSH_CERTIFICATE" }, // knownHostsData: { source: "env", provider: "default", id: "SSH_KNOWN_HOSTS" }, }, browser: { enabled: false, image: "openclaw-sandbox-browser:bookworm-slim", network: "openclaw-sandbox-browser", cdpPort: 9222, cdpSourceRange: "172.21.0.1/32", vncPort: 5900, noVncPort: 6080, headless: false, enableNoVnc: true, allowHostControl: false, autoStart: true, autoStartTimeoutMs: 12000, }, prune: { idleHours: 24, maxAgeDays: 7, }, }, }, }, tools: { sandbox: { tools: { allow: [ "exec", "process", "read", "write", "edit", "apply_patch", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", ], deny: ["browser", "canvas", "nodes", "cron", "discord", "gateway"], }, }, },}Сведения об изоляции
Бэкенд:
docker: локальная среда выполнения Docker (по умолчанию)ssh: универсальная удаленная среда выполнения на базе SSHopenshell: среда выполнения OpenShell
Когда выбран backend: "openshell", параметры, специфичные для среды выполнения, переносятся в
plugins.entries.openshell.config.
Конфигурация бэкенда SSH:
target: цель SSH в форматеuser@host[:port]command: команда клиента SSH (по умолчанию:ssh)workspaceRoot: абсолютный удаленный корень, используемый для рабочих пространств по областиidentityFile/certificateFile/knownHostsFile: существующие локальные файлы, передаваемые в OpenSSHidentityData/certificateData/knownHostsData: встроенное содержимое или SecretRefs, которые OpenClaw материализует во временные файлы во время выполненияstrictHostKeyChecking/updateHostKeys: параметры политики ключей хоста OpenSSH
Приоритет аутентификации SSH:
identityDataимеет приоритет надidentityFilecertificateDataимеет приоритет надcertificateFileknownHostsDataимеет приоритет надknownHostsFile- Значения
*Dataна базе SecretRef разрешаются из активного снимка среды выполнения секретов до запуска сеанса изоляции
Поведение бэкенда SSH:
- однократно заполняет удаленное рабочее пространство после создания или повторного создания
- затем поддерживает удаленное рабочее пространство SSH как каноническое
- маршрутизирует
exec, файловые инструменты и пути к медиа через SSH - не синхронизирует удаленные изменения обратно на хост автоматически
- не поддерживает браузерные контейнеры изоляции
Доступ к рабочему пространству:
none: рабочее пространство изоляции для области под~/.openclaw/sandboxesro: рабочее пространство изоляции в/workspace, рабочее пространство агента смонтировано только для чтения в/agentrw: рабочее пространство агента смонтировано для чтения/записи в/workspace
Область:
session: контейнер и рабочее пространство для каждого сеансаagent: один контейнер и рабочее пространство на агента (по умолчанию)shared: общий контейнер и рабочее пространство (без межсеансовой изоляции)
Конфигурация Plugin OpenShell:
{plugins: { entries: { openshell: { enabled: true, config: { mode: "mirror", // mirror | remote from: "openclaw", remoteWorkspaceDir: "/sandbox", remoteAgentWorkspaceDir: "/agent", gateway: "lab", // необязательно gatewayEndpoint: "https://lab.example", // необязательно policy: "strict", // необязательный идентификатор политики OpenShell providers: ["openai"], // необязательно autoProviders: true, timeoutSeconds: 120, }, }, },},}Режим OpenShell:
mirror: заполняет удаленную среду из локальной перед выполнением, синхронизирует обратно после выполнения; локальная рабочая область остается каноническойremote: заполняет удаленную среду один раз при создании песочницы, затем сохраняет удаленную рабочую область канонической
В режиме remote локальные изменения на хосте, сделанные вне OpenClaw, не синхронизируются в песочницу автоматически после этапа заполнения.
Транспортом служит SSH в песочницу OpenShell, но Plugin управляет жизненным циклом песочницы и необязательной зеркальной синхронизацией.
setupCommand выполняется один раз после создания контейнера (через sh -lc). Требует сетевой исходящий доступ, записываемый корневой каталог, пользователя root.
По умолчанию для контейнеров используется network: "none" — установите "bridge" (или пользовательскую мостовую сеть), если агенту нужен исходящий доступ.
"host" заблокирован. "container:<id>" по умолчанию заблокирован, если вы явно не зададите
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (аварийный обход).
Ходы сервера приложений Codex в активной песочнице OpenClaw используют эту же настройку исходящего доступа для своего нативного сетевого доступа в режиме кода.
Входящие вложения размещаются в media/inbound/* в активной рабочей области.
docker.binds монтирует дополнительные каталоги хоста; глобальные привязки и привязки для отдельных агентов объединяются.
Изолированный браузер (sandbox.browser.enabled): Chromium + CDP в контейнере. URL noVNC внедряется в системный промпт. Не требует browser.enabled в openclaw.json.
Доступ наблюдателя noVNC по умолчанию использует VNC-аутентификацию, а OpenClaw выдает URL с короткоживущим токеном (вместо раскрытия пароля в общем URL).
allowHostControl: false(по умолчанию) блокирует для изолированных сеансов возможность нацеливаться на браузер хоста.networkпо умолчанию равноopenclaw-sandbox-browser(выделенная мостовая сеть). Устанавливайтеbridgeтолько когда вам явно нужна глобальная мостовая связность.cdpSourceRangeнеобязательно ограничивает входящий CDP-доступ на границе контейнера диапазоном CIDR (например,172.21.0.1/32).sandbox.browser.bindsмонтирует дополнительные каталоги хоста только в контейнер изолированного браузера. Если задано (включая[]), заменяетdocker.bindsдля контейнера браузера.- Значения запуска по умолчанию определены в
scripts/sandbox-browser-entrypoint.shи настроены для контейнерных хостов: --remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(включено по умолчанию)--disable-3d-apis,--disable-software-rasterizerи--disable-gpuвключены по умолчанию и могут быть отключены с помощьюOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0, если требуется использование WebGL/3D.OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0снова включает расширения, если ваш рабочий процесс зависит от них.--renderer-process-limit=2можно изменить с помощьюOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; установите0, чтобы использовать лимит процессов Chromium по умолчанию.- плюс
--no-sandbox, когда включенnoSandbox. - Значения по умолчанию являются базовой линией образа контейнера; используйте пользовательский образ браузера с пользовательской точкой входа, чтобы изменить значения контейнера по умолчанию.
Изоляция браузера и sandbox.docker.binds доступны только для Docker.
Сборка образов (из исходного checkout):
scripts/sandbox-setup.sh # основной образ песочницыscripts/sandbox-browser-setup.sh # необязательный образ браузераДля установок npm без исходного checkout см. Изоляция § Образы и настройка с inline-командами docker build.
agents.list (переопределения для отдельных агентов)
Используйте agents.list[].tts, чтобы задать агенту собственного провайдера TTS, голос, модель,
стиль или режим auto-TTS. Блок агента глубоко объединяется поверх глобального
messages.tts, поэтому общие учетные данные могут оставаться в одном месте, а отдельные
агенты переопределяют только нужные им поля голоса или провайдера. Переопределение активного агента
применяется к автоматическим устным ответам, /tts audio, /tts status и
инструменту агента tts. См. Преобразование текста в речь
с примерами провайдеров и приоритетом.
{ agents: { list: [ { id: "main", default: true, name: "Main Agent", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // или { primary, fallbacks } thinkingDefault: "high", // переопределение уровня мышления для отдельного агента reasoningDefault: "on", // переопределение видимости рассуждений для отдельного агента fastModeDefault: false, // переопределение быстрого режима для отдельного агента params: { cacheRetention: "none" }, // переопределяет совпадающие params defaults.models по ключу tts: { providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, skills: ["docs-search"], // заменяет agents.defaults.skills, если задано identity: { name: "Samantha", theme: "helpful sloth", emoji: "🦥", avatar: "avatars/samantha.png", }, groupChat: { mentionPatterns: ["@openclaw"] }, sandbox: { mode: "off" }, runtime: { type: "acp", acp: { agent: "codex", backend: "acpx", mode: "persistent", cwd: "/workspace/openclaw", }, }, subagents: { allowAgents: ["*"] }, tools: { profile: "coding", allow: ["browser"], deny: ["canvas"], elevated: { enabled: true }, }, }, ], },}id: стабильный идентификатор агента (обязательно).default: когда задано несколько, выигрывает первый (записывается предупреждение). Если не задан ни один, первая запись списка становится значением по умолчанию.model: строковая форма задает строгую основную модель для отдельного агента без резервной модели; объектная форма{ primary }также строгая, если вы не добавитеfallbacks. Используйте{ primary, fallbacks: [...] }, чтобы включить для этого агента резервные варианты, или{ primary, fallbacks: [] }, чтобы явно задать строгое поведение. Задания Cron, которые переопределяют толькоprimary, все равно наследуют резервные варианты по умолчанию, если вы не зададитеfallbacks: [].params: параметры потока для отдельного агента, объединяемые поверх выбранной записи модели вagents.defaults.models. Используйте это для агент-специфичных переопределений вродеcacheRetention,temperatureилиmaxTokensбез дублирования всего каталога моделей.tts: необязательные переопределения преобразования текста в речь для отдельного агента. Блок глубоко объединяется поверхmessages.tts, поэтому храните общие учетные данные провайдеров и политику резервирования вmessages.tts, а здесь задавайте только значения, специфичные для персоны, например провайдера, голос, модель, стиль или автоматический режим.skills: необязательный список разрешенных Skills для отдельного агента. Если опущено, агент наследуетagents.defaults.skills, когда он задан; явный список заменяет значения по умолчанию вместо объединения, а[]означает отсутствие Skills.thinkingDefault: необязательный уровень мышления по умолчанию для отдельного агента (off | minimal | low | medium | high | xhigh | adaptive | max). Переопределяетagents.defaults.thinkingDefaultдля этого агента, когда не задано переопределение для сообщения или сеанса. Выбранный профиль провайдера/модели управляет допустимыми значениями; для Google Geminiadaptiveсохраняет динамическое мышление на стороне провайдера (thinkingLevelопущен в Gemini 3/3.1,thinkingBudget: -1в Gemini 2.5).reasoningDefault: необязательная видимость рассуждений по умолчанию для отдельного агента (on | off | stream). Переопределяетagents.defaults.reasoningDefaultдля этого агента, когда не задано переопределение рассуждений для сообщения или сеанса.fastModeDefault: необязательное значение по умолчанию для быстрого режима ("auto" | true | false). Применяется, когда не задано переопределение быстрого режима для сообщения или сеанса.models: необязательные переопределения каталога моделей/среды выполнения для отдельного агента, индексированные полными идентификаторамиprovider/model. Используйтеmodels["provider/model"].agentRuntimeдля исключений среды выполнения отдельного агента.runtime: необязательный дескриптор среды выполнения для отдельного агента. Используйтеtype: "acp"с настройками по умолчаниюruntime.acp(agent,backend,mode,cwd), когда агент должен по умолчанию использовать сеансы ACP harness.identity.avatar: путь относительно рабочей области, URLhttp(s)или URIdata:.- Локальные файлы изображений
identity.avatarс путями относительно рабочей области ограничены 2 МБ. URLhttp(s)и URIdata:не проверяются локальным ограничением размера файла. identityвыводит значения по умолчанию:ackReactionизemoji,mentionPatternsизname/emoji.subagents.allowAgents: список разрешенных идентификаторов настроенных агентов для явных целейsessions_spawn.agentId(["*"]= любая настроенная цель; по умолчанию: только тот же агент). Включите идентификатор запрашивающего, когда должны быть разрешены самонацеленные вызовыagentId. Устаревшие записи, конфигурация агента для которых была удалена, отклоняютсяsessions_spawnи опускаются изagents_list; запуститеopenclaw doctor --fix, чтобы очистить их, или добавьте минимальную записьagents.list[], если эта цель должна оставаться доступной для запуска с наследованием значений по умолчанию.- Защита наследования песочницы: если сеанс запрашивающего изолирован в песочнице,
sessions_spawnотклоняет цели, которые запускались бы без песочницы. subagents.requireAgentId: когда true, блокирует вызовыsessions_spawn, в которых опущенagentId(принуждает к явному выбору профиля; по умолчанию: false).
Маршрутизация нескольких агентов
Запускайте несколько изолированных агентов внутри одного Gateway. См. Несколько агентов.
{ 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" } }, ],}Поля сопоставления привязки
type(необязательно):routeдля обычной маршрутизации (отсутствующий тип по умолчанию означает route),acpдля постоянных привязок разговоров ACP.match.channel(обязательно)match.accountId(необязательно;*= любая учетная запись; опущено = учетная запись по умолчанию)match.peer(необязательно;{ kind: direct|group|channel, id })match.guildId/match.teamId(необязательно; зависит от канала)acp(необязательно; только дляtype: "acp"):{ mode, label, cwd, backend }
Детерминированный порядок сопоставления:
match.peermatch.guildIdmatch.teamIdmatch.accountId(точное совпадение, без peer/guild/team)match.accountId: "*"(на весь канал)- Агент по умолчанию
Внутри каждого уровня выигрывает первая совпадающая запись bindings.
Для записей type: "acp" OpenClaw разрешает по точной идентичности разговора (match.channel + учетная запись + match.peer.id) и не использует указанный выше порядок уровней привязки маршрутов.
Профили доступа для отдельных агентов
Полный доступ (без песочницы)
{agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off" }, }, ],},}Инструменты только для чтения + рабочая область
{agents: { list: [ { id: "family", workspace: "~/.openclaw/workspace-family", sandbox: { mode: "all", scope: "agent", workspaceAccess: "ro" }, tools: { allow: [ "read", "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", ], deny: ["write", "edit", "apply_patch", "exec", "process", "browser"], }, }, ],},}Без доступа к файловой системе (только сообщения)
{agents: { list: [ { id: "public", workspace: "~/.openclaw/workspace-public", sandbox: { mode: "all", scope: "agent", workspaceAccess: "none" }, tools: { allow: [ "sessions_list", "sessions_history", "sessions_send", "sessions_spawn", "session_status", "whatsapp", "telegram", "slack", "discord", "gateway", ], deny: [ "read", "write", "edit", "apply_patch", "exec", "process", "browser", "canvas", "nodes", "cron", "gateway", "image", ], }, }, ],},}См. песочницу и инструменты для нескольких агентов, где описаны детали приоритетов.
Сеанс
{ session: { scope: "per-sender", dmScope: "main", // main | per-peer | per-channel-peer | per-account-channel-peer identityLinks: { alice: ["telegram:123456789", "discord:987654321012345678"], }, reset: { mode: "daily", // daily | idle atHour: 4, idleMinutes: 60, }, resetByType: { thread: { mode: "daily", atHour: 4 }, direct: { mode: "idle", idleMinutes: 240 }, group: { mode: "idle", idleMinutes: 120 }, }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", maintenance: { mode: "enforce", // enforce (default) | warn pruneAfter: "30d", maxEntries: 500, resetArchiveRetention: "30d", // duration or false maxDiskBytes: "500mb", // optional hard budget highWaterBytes: "400mb", // optional cleanup target }, threadBindings: { enabled: true, idleHours: 24, // default inactivity auto-unfocus in hours (`0` disables) maxAgeHours: 0, // default hard max age in hours (`0` disables) }, mainKey: "main", // legacy (runtime always uses "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], default: "allow", }, },}Сведения о полях сеанса
scope: базовая стратегия группировки сеансов для контекстов группового чата.per-sender(по умолчанию): каждый отправитель получает изолированный сеанс внутри контекста канала.global: все участники в контексте канала используют один общий сеанс (используйте только когда требуется общий контекст).dmScope: как группируются личные сообщения.main: все личные сообщения используют основной сеанс.per-peer: изоляция по id отправителя между каналами.per-channel-peer: изоляция по каналу + отправителю (рекомендуется для многопользовательских входящих).per-account-channel-peer: изоляция по аккаунту + каналу + отправителю (рекомендуется для нескольких аккаунтов).identityLinks: сопоставляет канонические id с одноранговыми участниками с префиксом поставщика для совместного использования сеансов между каналами. Команды Dock, такие как/dock_discord, используют то же сопоставление, чтобы переключить маршрут ответа активного сеанса на другого связанного участника канала; см. стыковку каналов.reset: основная политика сброса.dailyсбрасывает в локальное времяatHour;idleсбрасывает послеidleMinutes. Если настроены оба варианта, срабатывает тот, срок которого истекает раньше. Свежесть ежедневного сброса используетsessionStartedAtстроки сеанса; свежесть сброса по бездействию используетlastInteractionAt. Фоновые/системные записи событий, такие как Heartbeat, пробуждения Cron, уведомления exec и служебный учет Gateway, могут обновлятьupdatedAt, но не поддерживают свежесть ежедневных/неактивных сеансов.resetByType: переопределения по типам (direct,group,thread). Устаревшееdmпринимается как псевдоним дляdirect.mainKey: устаревшее поле. Среда выполнения всегда использует"main"для основного сегмента прямого чата.agentToAgent.maxPingPongTurns: максимальное число ответных ходов между агентами во время обменов агент-агент (целое число, диапазон:0-20, по умолчанию:5).0отключает цепочку ping-pong.sendPolicy: сопоставление поchannel,chatType(direct|group|channel, с устаревшим псевдонимомdm),keyPrefixилиrawKeyPrefix. Первый запрет имеет приоритет.maintenance: элементы управления очисткой и удержанием хранилища сеансов.mode:enforceприменяет очистку и используется по умолчанию;warnтолько выводит предупреждения.pruneAfter: порог возраста для устаревших записей (по умолчанию30d).maxEntries: максимальное количество записей вsessions.json(по умолчанию500). Среда выполнения записывает пакетную очистку с небольшим буфером верхнего порога для лимитов производственного размера;openclaw sessions cleanup --enforceприменяет лимит немедленно.- Краткоживущие сеансы проверок model-run в Gateway используют фиксированное удержание
24h, но очистка зависит от давления: она удаляет устаревшие строгие строки проверок model-run только при достижении давления обслуживания/лимита записей сеансов. Подходят только строгие явные ключи проверок, соответствующиеagent:*:explicit:model-run-<uuid>; обычные прямые, групповые, потоковые, cron, hook, Heartbeat, ACP и сеансы субагентов не наследуют это 24-часовое удержание. Когда запускается очистка model-run, она выполняется перед более широкой очисткой устаревших записейpruneAfterи лимитомmaxEntries. rotateBytes: устарело и игнорируется;openclaw doctor --fixудаляет его из старых конфигураций.resetArchiveRetention: удержание архивов расшифровок*.reset.<timestamp>. По умолчанию равноpruneAfter; установитеfalse, чтобы отключить.maxDiskBytes: необязательный дисковый бюджет каталога сеансов. В режимеwarnзаписывает предупреждения в журнал; в режимеenforceсначала удаляет самые старые артефакты/сеансы.highWaterBytes: необязательная цель после очистки бюджета. По умолчанию равно80%отmaxDiskBytes.threadBindings: глобальные значения по умолчанию для возможностей сеансов, привязанных к веткам.enabled: основной переключатель по умолчанию (поставщики могут переопределять; Discord используетchannels.discord.threadBindings.enabled)idleHours: авторасфокусировка по умолчанию после бездействия в часах (0отключает; поставщики могут переопределять)maxAgeHours: жесткий максимальный возраст по умолчанию в часах (0отключает; поставщики могут переопределять)spawnSessions: стандартный шлюз для создания привязанных к веткам рабочих сеансов изsessions_spawnи ACP-порождений веток. По умолчаниюtrue, когда привязки веток включены; поставщики/аккаунты могут переопределять.defaultSpawnContext: стандартный нативный контекст субагента для порождений, привязанных к веткам ("fork"или"isolated"). По умолчанию"fork".
Сообщения
{ messages: { responsePrefix: "🦞", // or "auto" ackReaction: "👀", ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all removeAckAfterReply: false, queue: { mode: "followup", // steer | followup | collect | interrupt debounceMs: 500, cap: 20, drop: "summarize", // old | new | summarize byChannel: { whatsapp: "followup", telegram: "followup", }, }, inbound: { debounceMs: 2000, // 0 disables byChannel: { whatsapp: 5000, slack: 1500, }, }, },}Префикс ответа
Переопределения для канала/аккаунта: channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Разрешение (побеждает наиболее конкретное): аккаунт → канал → глобальное. "" отключает и останавливает каскад. "auto" выводит [{identity.name}].
Переменные шаблона:
| Переменная | Описание | Пример |
|---|---|---|
{model} |
Короткое имя модели | claude-opus-4-6 |
{modelFull} |
Полный идентификатор модели | anthropic/claude-opus-4-6 |
{provider} |
Имя поставщика | anthropic |
{thinkingLevel} |
Текущий уровень мышления | high, low, off |
{identity.name} |
Имя идентичности агента | (то же, что "auto") |
Переменные не чувствительны к регистру. {think} — псевдоним для {thinkingLevel}.
Реакция подтверждения
- По умолчанию используется
identity.emojiактивного агента, иначе"👀". Установите"", чтобы отключить. - Переопределения для канала:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Порядок разрешения: аккаунт → канал →
messages.ackReaction→ резервное значение идентичности. - Область:
group-mentions(по умолчанию),group-all,direct,all. removeAckAfterReply: удаляет подтверждение после ответа в каналах, поддерживающих реакции, таких как Slack, Discord, Telegram, WhatsApp и iMessage.messages.statusReactions.enabled: включает реакции статуса жизненного цикла в Slack, Discord, Telegram и WhatsApp. В Slack и Discord неустановленное значение сохраняет реакции статуса включенными, когда активны реакции подтверждения. В Telegram и WhatsApp явно установитеtrue, чтобы включить реакции статуса жизненного цикла.messages.statusReactions.emojis: переопределяет ключи эмодзи жизненного цикла:queued,thinking,compacting,tool,coding,web,deploy,build,concierge,done,error,stallSoftиstallHard. Telegram разрешает только фиксированный набор реакций, поэтому неподдерживаемые настроенные эмодзи откатываются к ближайшему поддерживаемому варианту статуса для этого чата.
Дебаунс входящих сообщений
Объединяет быстрые текстовые сообщения от одного отправителя в один ход агента. Медиа/вложения сбрасывают буфер немедленно. Управляющие команды обходят дебаунс.
TTS (синтез речи)
{ messages: { tts: { auto: "always", // off | always | inbound | tagged mode: "final", // final | all provider: "elevenlabs", summaryModel: "openai/gpt-5.4-mini", modelOverrides: { enabled: true }, maxTextLength: 4000, timeoutMs: 30000, prefsPath: "~/.openclaw/settings/tts.json", providers: { elevenlabs: { apiKey: "elevenlabs_api_key", baseUrl: "https://api.elevenlabs.io", speakerVoiceId: "voice_id", modelId: "eleven_multilingual_v2", seed: 42, applyTextNormalization: "auto", languageCode: "en", voiceSettings: { stability: 0.5, similarityBoost: 0.75, style: 0.0, useSpeakerBoost: true, speed: 1.0, }, }, microsoft: { speakerVoice: "en-US-AvaMultilingualNeural", lang: "en-US", outputFormat: "audio-24khz-48kbitrate-mono-mp3", }, openai: { apiKey: "openai_api_key", baseUrl: "https://api.openai.com/v1", model: "gpt-4o-mini-tts", speakerVoice: "alloy", }, }, }, },}autoуправляет режимом auto-TTS по умолчанию:off,always,inboundилиtagged./tts on|offможет переопределять локальные настройки, а/tts statusпоказывает фактическое состояние.summaryModelпереопределяетagents.defaults.model.primaryдля автоматической сводки.modelOverridesвключен по умолчанию;modelOverrides.allowProviderпо умолчанию равенfalse(требует явного включения).- API-ключи используют резервные значения
ELEVENLABS_API_KEY/XI_API_KEYиOPENAI_API_KEY. - Встроенные поставщики речи принадлежат Plugin. Если задан
plugins.allow, включите каждый Plugin поставщика TTS, который хотите использовать, напримерmicrosoftдля Edge TTS. Устаревший идентификатор поставщикаedgeпринимается как псевдоним дляmicrosoft. providers.openai.baseUrlпереопределяет конечную точку OpenAI TTS. Порядок разрешения: конфигурация, затемOPENAI_TTS_BASE_URL, затемhttps://api.openai.com/v1.- Когда
providers.openai.baseUrlуказывает на конечную точку не OpenAI, OpenClaw рассматривает ее как OpenAI-совместимый сервер TTS и ослабляет проверку модели/голоса.
Talk
Значения по умолчанию для режима Talk (macOS/iOS/Android).
{ talk: { provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "elevenlabs_voice_id", voiceAliases: { Clawd: "EXAVITQu4vr4xnSDxMaL", Roger: "CwhRBWXzGAHq8TQ4Fs17", }, modelId: "eleven_v3", outputFormat: "mp3_44100_128", apiKey: "elevenlabs_api_key", }, mlx: { modelId: "mlx-community/Soprano-80M-bf16", }, system: {}, }, consultThinkingLevel: "low", consultFastMode: true, speechLocale: "ru-RU", silenceTimeoutMs: 1500, interruptOnSpeech: true, realtime: { provider: "openai", providers: { openai: { model: "gpt-realtime-2", speakerVoice: "cedar", }, }, instructions: "Speak warmly and keep answers brief.", mode: "realtime", transport: "webrtc", brain: "agent-consult", }, },}talk.providerдолжен соответствовать ключу вtalk.providers, когда настроено несколько поставщиков Talk.- Устаревшие плоские ключи Talk (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) существуют только для совместимости. Запуститеopenclaw doctor --fix, чтобы переписать сохраненную конфигурацию вtalk.providers.<provider>. - Идентификаторы голосов используют резервные значения
ELEVENLABS_VOICE_IDилиSAG_VOICE_ID. providers.*.apiKeyпринимает строки открытого текста или объекты SecretRef.- Резервное значение
ELEVENLABS_API_KEYприменяется только когда API-ключ Talk не настроен. providers.*.voiceAliasesпозволяет директивам Talk использовать удобные имена.providers.mlx.modelIdвыбирает репозиторий Hugging Face, используемый локальным помощником MLX на macOS. Если не указано, macOS используетmlx-community/Soprano-80M-bf16.- Воспроизведение MLX на macOS выполняется через встроенный помощник
openclaw-mlx-tts, если он присутствует, или через исполняемый файл вPATH;OPENCLAW_MLX_TTS_BINпереопределяет путь к помощнику для разработки. consultThinkingLevelуправляет уровнем thinking для полного запуска агента OpenClaw за вызовами Control UI Talk realtimeopenclaw_agent_consult. Оставьте незаданным, чтобы сохранить обычное поведение сеанса/модели.consultFastModeзадает одноразовое переопределение fast-mode для realtime-консультаций Control UI Talk без изменения обычной настройки fast-mode сеанса.speechLocaleзадает идентификатор локали BCP 47, используемый распознаванием речи Talk на iOS/macOS. Оставьте незаданным, чтобы использовать значение устройства по умолчанию.silenceTimeoutMsуправляет тем, как долго режим Talk ждет после молчания пользователя перед отправкой транскрипта. Если не задано, сохраняется окно паузы платформы по умолчанию (700 ms on macOS and Android, 900 ms on iOS).realtime.instructionsдобавляет системные инструкции для поставщика к встроенному realtime-промпту OpenClaw, чтобы можно было настраивать голосовой стиль без потери стандартных указанийopenclaw_agent_consult.realtime.consultRoutingуправляет резервной маршрутизацией реле Gateway, когда realtime-поставщик создает финальный пользовательский транскрипт безopenclaw_agent_consult:provider-directсохраняет прямые ответы поставщика, аforce-agent-consultмаршрутизирует финализированный запрос через OpenClaw.
Связанные материалы
- Справочник по конфигурации — все остальные ключи конфигурации
- Конфигурация — распространенные задачи и быстрая настройка
- Примеры конфигурации