Gateway
Конфигурация — агенты
Ключи конфигурации уровня агента в разделах agents.*, multiAgent.*, session.*,
messages.* и talk.*. Сведения о каналах, инструментах, среде выполнения Gateway и других
ключах верхнего уровня см. в справочнике по конфигурации.
Значения по умолчанию для агентов
agents.defaults.workspace
По умолчанию: OPENCLAW_WORKSPACE_DIR, если задано; в противном случае — ~/.openclaw/workspace (или ~/.openclaw/workspace-<profile>, если для OPENCLAW_PROFILE задан профиль, отличный от профиля по умолчанию).
{ agents: { defaults: { workspace: "~/.openclaw/workspace" } },}Явно заданное значение agents.defaults.workspace имеет приоритет над
OPENCLAW_WORKSPACE_DIR. Используйте переменную среды, чтобы направить агентов по умолчанию
в подключённое рабочее пространство, если не хотите записывать этот путь в конфигурацию.
agents.defaults.repoRoot
Необязательный корень репозитория, отображаемый в строке Runtime системного промпта. Если он не задан, OpenClaw автоматически определяет его, двигаясь вверх от рабочего пространства.
{ agents: { defaults: { repoRoot: "~/Projects/openclaw" } },}agents.defaults.skills
Необязательный список разрешённых навыков по умолчанию для агентов, у которых не задано
agents.list[].skills.
{ agents: { defaults: { skills: ["github", "weather"] }, list: [ { id: "writer" }, // наследует github, weather { id: "docs", skills: ["docs-search"] }, // заменяет значения по умолчанию { id: "locked-down", skills: [] }, // без навыков ], },}- Не указывайте
agents.defaults.skills, чтобы по умолчанию разрешить все навыки. - Не указывайте
agents.list[].skills, чтобы наследовать значения по умолчанию. - Укажите
agents.list[].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
Пропускает создание выбранных необязательных файлов рабочего пространства, но по-прежнему записывает обязательные файлы начальной настройки (AGENTS.md, TOOLS.md, BOOTSTRAP.md). Допустимые значения: 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 / bootstrapTotalMaxChars |
Обычное внедрение начальной настройки рабочего пространства |
agents.defaults.startupContext.* |
Однократная вводная часть запуска модели при сбросе или запуске, включая недавние ежедневные файлы memory/*.md. Команды обычного чата /new и /reset подтверждаются без вызова модели |
skills.limits.* |
Компактный список навыков, внедряемый в системный промпт |
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, // расширенный предел для этого агента }, }, ], },}skills.limits.maxSkillsPromptChars
Глобальное ограничение для компактного списка навыков, внедряемого в системный промпт. Оно
не влияет на чтение файлов SKILL.md по запросу.
{ skills: { limits: { maxSkillsPromptChars: 18000 } },}agents.list[].skillsLimits.maxSkillsPromptChars
Переопределение бюджета промпта навыков для отдельного агента.
{ agents: { list: [{ id: "tiny-local", skillsLimits: { maxSkillsPromptChars: 6000 } }], },}agents.defaults.imageMaxDimensionPx
Максимальный размер в пикселях для самой длинной стороны изображения в блоках изображений расшифровки или инструмента перед вызовами провайдера.
По умолчанию: 1200.
Меньшие значения обычно сокращают расход токенов компьютерного зрения и размер полезной нагрузки запросов при запусках с большим количеством снимков экрана. Большие значения сохраняют больше визуальных деталей.
{ agents: { defaults: { imageMaxDimensionPx: 1200 } },}agents.defaults.imageQuality
Предпочтение сжатия и детализации инструмента изображений для изображений, загруженных из путей к файлам, URL-адресов и ссылок на медиафайлы.
По умолчанию: auto.
OpenClaw адаптирует последовательность размеров к выбранной модели изображений. Например, Claude Opus 4.8, OpenAI GPT-5.6 Sol, Qwen VL и размещённые модели компьютерного зрения Llama 4 могут использовать изображения большего размера, чем старые или используемые по умолчанию пути компьютерного зрения с высокой детализацией, тогда как ходы с несколькими изображениями сжимаются более агрессивно в режиме 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"], }, utilityModel: "openai/gpt-5.4-mini", 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" }, // глобальные параметры провайдера по умолчанию pdfMaxBytesMb: 10, pdfMaxPages: 20, thinkingDefault: "low", verboseDefault: "off", toolProgressDetail: "explain", reasoningDefault: "off", elevatedDefault: "on", timeoutSeconds: 600, mediaMaxMb: 5, contextTokens: 200000, maxConcurrent: 4, }, },}model: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Строковая форма задаёт только основную модель.
- Объектная форма задаёт основную модель и упорядоченный список резервных моделей.
utilityModel: необязательная ссылка или псевдонимprovider/modelдля коротких внутренних задач. В настоящее время используется для создания заголовков сеансов Control UI, тем личных сообщений Telegram, автоматически создаваемых веток Discord и описаний в черновиках хода выполнения. Если параметр не задан, OpenClaw использует объявленную основным провайдером модель по умолчанию для небольших задач, если она существует (OpenAI →gpt-5.6-luna, Anthropic →claude-haiku-4-5); в противном случае задачи создания заголовков используют основную модель агента, а описания остаются отключёнными. ЗадайтеutilityModel: "", чтобы полностью отключить маршрутизацию вспомогательных задач.agents.list[].utilityModelпереопределяет значение по умолчанию (пустое значение для отдельного агента отключает эту функцию для него), а переопределение модели для конкретной операции имеет приоритет над обоими значениями. Вспомогательные задачи выполняют отдельные обращения к модели и отправляют выбранному провайдеру модели содержимое, относящееся к конкретной задаче. При создании заголовка панели управления отправляется не более первых 1 000 символов первого сообщения, не являющегося командой; при создании описаний отправляются входящий запрос и краткие отредактированные сводки по инструментам. Выберите провайдера, соответствующего требованиям к стоимости и обработке данных.imageModel: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Используется в пути инструмента
imageкак конфигурация модели компьютерного зрения, если активная модель не может принимать изображения. Модели со встроенной поддержкой компьютерного зрения вместо этого получают непосредственно загруженные байты изображения. - Также используется для резервной маршрутизации, когда выбранная модель или модель по умолчанию не может принимать изображения.
- Предпочтительно явно указывать ссылки
provider/model. Для совместимости допускаются идентификаторы без префикса; если такой идентификатор однозначно соответствует настроенной записи с поддержкой изображений в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для вывода OpenAI в формате PNG/WebP с прозрачным фоном. - Если провайдер или модель выбираются напрямую, также настройте соответствующую аутентификацию провайдера (например,
GEMINI_API_KEYилиGOOGLE_API_KEYдляgoogle/*,OPENAI_API_KEYили OAuth OpenAI Codex дляopenai/gpt-image-2/openai/gpt-image-1.5,FAL_KEYдляfal/*). - Если параметр не указан,
image_generateвсё равно может определить используемого по умолчанию провайдера с настроенной аутентификацией. Сначала проверяется текущий провайдер по умолчанию, затем остальные зарегистрированные провайдеры создания изображений в порядке идентификаторов провайдеров.
musicGenerationModel: принимает либо строку ("provider/model"), либо объект ({ primary, fallbacks }).- Используется общей функцией создания музыки и встроенным инструментом
music_generate. - Типичные значения:
google/lyria-3-clip-preview,google/lyria-3-pro-previewилиminimax/music-2.6. - Если параметр не указан,
music_generateвсё равно может определить используемого по умолчанию провайдера с настроенной аутентификацией. Сначала проверяется текущий провайдер по умолчанию, затем остальные зарегистрированные провайдеры создания музыки в порядке идентификаторов провайдеров. - Если провайдер или модель выбираются напрямую, также настройте соответствующую аутентификацию или ключ 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всё равно может определить используемого по умолчанию провайдера с настроенной аутентификацией. Сначала проверяется текущий провайдер по умолчанию, затем остальные зарегистрированные провайдеры создания видео в порядке идентификаторов провайдеров. - Если провайдер или модель выбираются напрямую, также настройте соответствующую аутентификацию или ключ 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.6-solдля доступа через OAuth Codex). Если провайдер не указан, OpenClaw сначала пытается найти псевдоним, затем — единственное соответствие среди настроенных провайдеров для этого точного идентификатора модели и лишь после этого использует настроенного провайдера по умолчанию (устаревшее поведение совместимости, поэтому предпочтительно явно указыватьprovider/model). Если этот провайдер больше не предоставляет настроенную модель по умолчанию, OpenClaw вместо сообщения об устаревшем значении по умолчанию удалённого провайдера использует первую настроенную пару провайдер/модель.models: настроенный каталог и список разрешённых моделей для/model. Каждая запись может содержатьalias(сокращение) иparams(зависит от провайдера; например,temperature,maxTokens,cacheRetention,context1m,responsesServerCompaction,responsesCompactThreshold, маршрутизация OpenRouterprovider,chat_template_kwargs,extra_body/extraBody).- Используйте записи
provider/*, например"openai/*": {}или"vllm/*": {}, чтобы отображать все обнаруженные модели выбранных провайдеров без ручного перечисления каждого идентификатора модели. - Добавьте
agentRuntimeв записьprovider/*, если все динамически обнаруженные модели этого провайдера должны использовать одну среду выполнения. Точная политика среды выполненияprovider/modelпо-прежнему имеет приоритет над шаблоном. - Безопасное редактирование: используйте
openclaw config set agents.defaults.models '<json>' --strict-json --mergeдля добавления записей.config setотклоняет замены, которые удалили бы существующие записи списка разрешённых, если не передан--replace. - Ограниченные провайдером процессы настройки и первоначальной конфигурации объединяют модели выбранного провайдера с этой картой и сохраняют уже настроенные несвязанные провайдеры.
- Для моделей, напрямую использующих 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(для соответствующего идентификатора агента) переопределяет значения по ключам. Подробности см. в разделе Кэширование промптов. 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. При конфликте с созданными ключами запроса дополнительное тело имеет приоритет; маршруты дополнений, не являющиеся нативными, после этого всё равно удаляют предназначенный только для OpenAI параметрstore.params.chat_template_kwargs: аргументы шаблона чата, совместимые с 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"дляreasoning.enabledв стиле Together,"qwen"для параметра верхнего уровняenable_thinkingв стиле Qwen или"qwen-chat-template"дляchat_template_kwargs.enable_thinkingв серверных системах семейства Qwen, поддерживающих аргументы шаблона чата на уровне запроса, например vLLM. OpenClaw сопоставляет отключённое мышление сfalse, а включённое — сtrue; настроенные модели vLLM Qwen предоставляют для этих форматов бинарный выбор/think.compat.supportedReasoningEfforts: список уровней интенсивности рассуждений, совместимый с 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: необязательный диспетчер процессов уровня провайдера для локальных или самостоятельно размещённых серверов моделей. Когда выбранная модель принадлежит этому провайдеру, 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для правил конкретной модели. Один лишь префикс провайдера или модели никогда не выбирает среду запуска. Если среда выполнения не задана или имеет значениеauto, OpenAI может неявно выбрать Codex только для точного официального маршрута HTTPS Platform Responses или ChatGPT Responses без заданного автором переопределения запроса. См. Неявная агентская среда выполнения OpenAI. - Средства записи конфигурации, изменяющие эти поля (например,
/models set,/models set-imageи команды добавления или удаления резервных вариантов), сохраняют каноническую объектную форму и по возможности сохраняют существующие списки резервных вариантов. maxConcurrent: максимальное количество параллельных запусков агентов в разных сеансах (при этом в каждом сеансе запуски по-прежнему выполняются последовательно). Значение по умолчанию:4.
Политика среды выполнения
{ models: { providers: { openai: { agentRuntime: { id: "codex" }, }, }, }, agents: { defaults: { model: "openai/gpt-5.6-sol", models: { "anthropic/claude-opus-4-8": { agentRuntime: { id: "claude-cli" }, }, "vllm/*": { agentRuntime: { id: "openclaw" }, }, }, }, },}id:"auto","openclaw", идентификатор зарегистрированной среды плагина или поддерживаемый псевдоним бэкенда CLI. Встроенный плагин Codex регистрируетcodex; встроенный плагин Anthropic предоставляет бэкенд CLIclaude-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, чтобы удалить устаревшие значения. - Подходящие точные официальные HTTPS-маршруты OpenAI Responses/ChatGPT без явно заданного переопределения запроса могут неявно использовать среду Codex.
agentRuntime.id: "codex"провайдера или модели делает Codex обязательным с запретом при сбое, но не обеспечивает совместимость несовместимого маршрута. - Для развертываний Claude CLI рекомендуется использовать
model: "anthropic/claude-opus-4-8"вместе сagentRuntime.id: "claude-cli"на уровне модели. Устаревшие ссылкиclaude-cli/<model>по-прежнему работают для совместимости, но в новых конфигурациях выбор провайдера и модели должен оставаться каноническим, а бэкенд выполнения следует указывать в политике среды выполнения провайдера или модели. - Это управляет только выполнением текстовых ходов агента. Генерация медиа, обработка изображений, PDF, музыки и видео, а также TTS по-прежнему используют собственные настройки провайдера и модели.
Встроенные сокращенные псевдонимы (применяются только в том случае, если модель указана в agents.defaults.models):
| Псевдоним | Модель |
|---|---|
opus |
anthropic/claude-opus-4-8 |
sonnet |
anthropic/claude-sonnet-4-6 |
gpt |
openai/gpt-5.4 |
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.
В OpenClaw для Anthropic Claude Opus 4.8 рассуждения по умолчанию отключены; если адаптивные рассуждения включены явно, принадлежащее провайдеру 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", // Или используйте systemPromptFileArg, когда CLI принимает флаг файла с промптом. systemPromptWhen: "first", imageArg: "--image", imageMode: "repeat", }, }, }, },}- Бэкенды CLI ориентированы прежде всего на текст; инструменты всегда отключены.
- Сеансы поддерживаются, когда задано
sessionArg. - Сквозная передача изображений поддерживается, когда
imageArgпринимает пути к файлам. reseedFromRawTranscriptWhenUncompacted: trueпозволяет бэкенду безопасно восстанавливать признанные недействительными сеансы из ограниченного хвоста необработанной расшифровки OpenClaw до появления первой сводки Compaction. Изменения профиля аутентификации или эпохи учетных данных по-прежнему никогда не приводят к повторной инициализации из необработанных данных.
agents.defaults.promptOverlays
Независимые от провайдера наложения промптов, применяемые по семейству моделей к поверхностям промптов, сформированным OpenClaw. Идентификаторы моделей семейства GPT-5 получают общий контракт поведения во всех маршрутах OpenClaw и провайдеров; personality управляет только слоем дружелюбного стиля взаимодействия. Нативные маршруты сервера приложений Codex сохраняют базовые инструкции и инструкции модели, принадлежащие Codex, вместо этого наложения OpenClaw для GPT-5, а для нативных потоков OpenClaw отключает встроенную индивидуальность 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 отключает model: "openai/gpt-5.4-mini", includeReasoning: false, includeSystemPromptSection: true, // по умолчанию: true; false исключает раздел Heartbeat из системного промпта lightContext: false, // по умолчанию: false; true сохраняет только HEARTBEAT.md из файлов начальной загрузки рабочей области isolatedSession: false, // по умолчанию: false; true запускает каждый Heartbeat в новом сеансе (без истории разговора) skipWhenBusy: false, // по умолчанию: false; true также ожидает завершения подагентских/вложенных линий этого агента session: "main", to: "+15555550123", directPolicy: "allow", // allow (по умолчанию) | block target: "none", // по умолчанию: none | варианты: last | whatsapp | telegram | discord | ... prompt: "Прочитайте HEARTBEAT.md, если он существует...", 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, когда он задан; в противном случае — интервал Heartbeat с ограничением в 600 секунд.directPolicy: политика прямой доставки или доставки в личные сообщения.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", // идентификатор зарегистрированного плагина — провайдера Compaction (необязательно) timeoutSeconds: 180, reserveTokensFloor: 24000, keepRecentTokens: 50000, recentTurnsPreserve: 3, maxHistoryShare: 0.7, identifierPolicy: "strict", // strict | off | custom identifierInstructions: "Точно сохраняйте идентификаторы развертываний, идентификаторы заявок и пары хост:порт.", // используется, когда identifierPolicy=custom qualityGuard: { enabled: true, maxRetries: 1 }, midTurnPrecheck: { enabled: false }, // необязательная проверка нагрузки цикла инструментов postIndexSync: "async", // off | async | await postCompactionSections: ["Session Startup", "Red Lines"], // явно включает повторное внедрение разделов AGENTS.md model: "openrouter/anthropic/claude-sonnet-4-6", // необязательное переопределение модели только для Compaction truncateAfterCompaction: true, // после Compaction выполняет ротацию на меньший последующий JSONL maxActiveTranscriptBytes: "20mb", // необязательный триггер предварительной локальной Compaction notifyUser: true, // уведомляет о начале/завершении Compaction и ухудшении сброса памяти (по умолчанию: false) memoryFlush: { enabled: true, model: "ollama/qwen3:8b", // необязательное переопределение модели только для сброса памяти softThresholdTokens: 6000, forceFlushTranscriptBytes: "2mb", systemPrompt: "Сеанс приближается к Compaction. Сохраните долговременные воспоминания сейчас.", prompt: "Запишите все долговременные заметки в memory/YYYY-MM-DD.md; если сохранять нечего, ответьте точным беззвучным токеном NO_REPLY.", }, }, }, },}mode:defaultилиsafeguard(поэтапное суммирование длинных историй). См. Compaction.provider: идентификатор зарегистрированного плагина — поставщика Compaction. Если задан, вместо встроенного суммирования с помощью LLM вызываетсяsummarize()поставщика. При сбое используется встроенный механизм. Задание поставщика принудительно включаетmode: "safeguard". См. Compaction.timeoutSeconds: максимальное количество секунд, отведённое на одну операцию Compaction, после которого OpenClaw её прерывает. По умолчанию:180.reserveTokens: резерв токенов, сохраняемый доступным для вывода модели и будущих результатов инструментов после Compaction. Когда размер контекстного окна модели известен, OpenClaw ограничивает эффективный резерв, чтобы он не мог израсходовать бюджет промпта.reserveTokensFloor: минимальный резерв, обеспечиваемый встроенной средой выполнения. Установите0, чтобы отключить нижний предел. Этот предел по-прежнему ограничивается активным контекстным окном.keepRecentTokens: бюджет агента для точки отсечения, позволяющий дословно сохранить самую последнюю часть транскрипта. Ручной/compactучитывает его, если значение задано явно; в противном случае ручная Compaction является жёсткой контрольной точкой.recentTurnsPreserve: количество последних реплик пользователя и ассистента, сохраняемых дословно вне защитного суммирования. По умолчанию:3.maxHistoryShare: максимальная доля общего бюджета контекста, разрешённая для сохраняемой истории после Compaction (диапазон0.1-0.9).identifierPolicy:strict(по умолчанию),offилиcustom.strictдобавляет в начало встроенные указания по сохранению непрозрачных идентификаторов во время суммирования Compaction.identifierInstructions: необязательный пользовательский текст о сохранении идентификаторов, используемый приidentifierPolicy=custom.qualityGuard: проверки защитных сводок с повторной попыткой при некорректном выводе. По умолчанию включены в защитном режиме; задайтеenabled: false, чтобы пропустить проверку.midTurnPrecheck: необязательная проверка нагрузки цикла инструментов. Приenabled: trueOpenClaw проверяет нагрузку на контекст после добавления результатов инструментов и перед следующим вызовом модели. Если контекст больше не помещается, текущая попытка прерывается до отправки промпта, после чего существующий путь восстановления предварительной проверки повторно используется для усечения результатов инструментов либо выполнения Compaction и повторной попытки. Работает с режимами Compactiondefaultиsafeguard. По умолчанию отключено.postIndexSync: режим переиндексации памяти сеанса после Compaction. По умолчанию:"async". Используйте"await"для максимальной актуальности,"async"для уменьшения задержки Compaction или"off"только тогда, когда синхронизация памяти сеанса выполняется в другом месте.postCompactionSections: необязательные названия разделов H2/H3 из AGENTS.md для повторного внедрения после Compaction. Повторное внедрение отключено, если значение не задано или равно[]. Явное задание["Session Startup", "Red Lines"]включает эту пару и сохраняет прежний резервный вариантEvery Session/Safety. Включайте это только тогда, когда дополнительный контекст оправдывает риск дублирования указаний проекта, уже содержащихся в сводке Compaction.model: необязательныйprovider/model-idили простой псевдоним изagents.defaults.models, используемый только для суммирования Compaction. Простые псевдонимы разрешаются перед диспетчеризацией; при коллизиях настроенные буквальные идентификаторы моделей имеют приоритет. Используйте это, когда основной сеанс должен продолжать использовать одну модель, а сводки Compaction должны создаваться другой; если значение не задано, Compaction использует основную модель сеанса.truncateAfterCompaction: выполняет ротацию активного транскрипта сеанса после Compaction, чтобы последующие реплики загружали только сводку и несуммированный остаток, а предыдущий полный транскрипт сохранялся в архиве. Предотвращает неограниченный рост активного транскрипта в длительных сеансах. По умолчанию:false.maxActiveTranscriptBytes: необязательный порог в байтах (numberили строки наподобие"20mb"), запускающий обычную локальную Compaction перед выполнением, когда история транскрипта превышает этот порог. ТребуетtruncateAfterCompaction, чтобы после успешной Compaction можно было выполнить ротацию на меньший последующий транскрипт. Отключено, если значение не задано или равно0.notifyUser: приtrueотправляет пользователю краткие уведомления об обслуживании контекста: при начале и завершении Compaction (например, «Выполняется Compaction контекста...» и «Compaction завершена»), а также когда исчерпаны попытки сброса памяти перед Compaction и ответ продолжается в ухудшенном режиме (например, «Временный сбой обслуживания памяти; формирование ответа продолжается.»). По умолчанию отключено, чтобы не показывать эти уведомления.memoryFlush: скрытая агентная реплика перед автоматической Compaction для сохранения долговременных воспоминаний. Задайтеmodelкак точного поставщика и модель, напримерollama/qwen3:8b, если эта служебная реплика должна оставаться на локальной модели; переопределение не наследует активную цепочку резервных моделей сеанса.forceFlushTranscriptBytesпринудительно выполняет сброс, когда размер транскрипта достигает порога, даже если счётчики токенов устарели. Пропускается, если рабочая область доступна только для чтения.
agents.defaults.runRetries
Границы итераций повторных попыток внешнего цикла выполнения для встроенной среды выполнения агента, предотвращающие бесконечные циклы выполнения при восстановлении после сбоев. Этот параметр применяется только к встроенной среде выполнения агента, но не к средам выполнения ACP или CLI.
{ agents: { defaults: { runRetries: { base: 24, perProfile: 8, min: 32, max: 160, }, }, list: [ { id: "main", runRetries: { max: 50 }, // необязательные переопределения для отдельных агентов }, ], },}base: базовое количество итераций повторных попыток выполнения для внешнего цикла выполнения. По умолчанию:24.perProfile: дополнительное количество итераций повторных попыток выполнения, предоставляемое каждому кандидату резервного профиля. По умолчанию:8.min: минимальный абсолютный предел количества итераций повторных попыток выполнения. По умолчанию:32.max: максимальный абсолютный предел количества итераций повторных попыток выполнения для предотвращения неконтролируемого выполнения. По умолчанию:160.
agents.defaults.contextPruning
Удаляет старые результаты инструментов из контекста в памяти перед отправкой в LLM. Не изменяет историю сеанса на диске. По умолчанию отключено; задайте mode: "cache-ttl", чтобы включить.
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", // off (по умолчанию) | cache-ttl ttl: "1h", // длительность (ms/s/m/h), единица по умолчанию: минуты; значение по умолчанию: 5m keepLastAssistants: 3, softTrimRatio: 0.3, hardClearRatio: 0.5, minPrunableToolChars: 50000, softTrim: { maxChars: 4000, headChars: 1500, tailChars: 1500 }, hardClear: { enabled: true, placeholder: "[Содержимое старого результата инструмента удалено]" }, tools: { deny: ["browser", "canvas"] }, }, }, },}Поведение режима cache-ttl
mode: "cache-ttl"включает проходы очистки.ttlопределяет, как часто очистка может выполняться повторно (после последнего обращения к кэшу). По умолчанию:5m.- При очистке сначала частично усекаются слишком большие результаты инструментов, а затем при необходимости полностью очищаются более старые результаты инструментов.
softTrimRatioиhardClearRatioпринимают значения от0.0до1.0; проверка конфигурации отклоняет значения вне этого диапазона.
Частичное усечение сохраняет начало и конец и вставляет ... посередине.
Полная очистка заменяет весь результат инструмента заполнителем.
Примечания:
- Блоки изображений никогда не усекаются и не очищаются.
- Соотношения вычисляются по символам (приблизительно), а не по точному количеству токенов.
- Если существует меньше
keepLastAssistantsсообщений ассистента, очистка пропускается.
Подробности поведения см. в разделе Очистка сеанса.
Потоковая передача блоками
{ agents: { defaults: { blockStreamingDefault: "off", // on | off blockStreamingBreak: "text_end", // text_end | message_end blockStreamingChunk: { minChars: 800, maxChars: 1200, breakPreference: "paragraph" }, blockStreamingCoalesce: { idleMs: 1000 }, humanDelay: { mode: "natural" }, // off (по умолчанию) | natural | custom (использует minMs/maxMs) }, },}- Для каналов, отличных от Telegram, требуется явно задать
*.streaming.block.enabled: true, чтобы включить ответы блоками. Исключение — QQ Bot: у него нет ключейstreaming.block, и он передаёт ответы блоками, еслиchannels.qqbot.streaming.modeне равно"off". - Переопределения для каналов:
channels.<channel>.streaming.block.coalesce(а также варианты для отдельных учётных записей). Для Discord, Google Chat, Mattermost, MS Teams, Signal и Slack по умолчанию используютсяminChars: 1500/idleMs: 1000. blockStreamingChunk.breakPreference: предпочтительная граница фрагмента ("paragraph" | "newline" | "sentence").humanDelay: случайная пауза между ответами блоками. По умолчанию:off.natural= 800-2500ms.customиспользуетminMs/maxMs(для любой незаданной границы используется естественный диапазон). Переопределение для отдельного агента:agents.list[].humanDelay.
Подробности поведения и разбиения на фрагменты см. в разделе Потоковая передача.
Индикаторы набора текста
{ agents: { defaults: { typingMode: "instant", // never | instant | thinking | message typingIntervalSeconds: 6, }, },}- Значения по умолчанию:
instantдля личных чатов и упоминаний,messageдля групповых чатов без упоминания. - Значение
typingIntervalSecondsпо умолчанию:6. - Переопределения для отдельных сеансов:
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, gpus: "all", 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 / встроенное содержимое: // 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"], }, }, },}Показанные выше значения по умолчанию (off/docker/agent/none/образ bookworm-slim/сеть none/и т. д.) — фактические значения OpenClaw по умолчанию, а не просто иллюстративные значения.
Сведения о песочнице
Бэкенд:
docker: локальная среда выполнения Docker (по умолчанию)ssh: универсальная удалённая среда выполнения на базе SSHopenshell: среда выполнения OpenShell
Когда выбран backend: "openshell", настройки конкретной среды выполнения перемещаются в
plugins.entries.openshell.config.
Конфигурация бэкенда SSH:
target: цель SSH в форматеuser@host[:port]command: команда клиента SSH (по умолчанию:ssh)workspaceRoot: абсолютный удалённый корневой каталог для рабочих пространств каждой области действия (по умолчанию:/tmp/openclaw-sandboxes)identityFile/certificateFile/knownHostsFile: существующие локальные файлы, передаваемые OpenSSHidentityData/certificateData/knownHostsData: встроенное содержимое или SecretRefs, которые OpenClaw преобразует во временные файлы во время выполненияstrictHostKeyChecking/updateHostKeys: параметры политики ключей хостов OpenSSH (для обоих значение по умолчанию —true)
Приоритет аутентификации SSH:
identityDataимеет приоритет надidentityFilecertificateDataимеет приоритет надcertificateFileknownHostsDataимеет приоритет надknownHostsFile- Значения
*Dataна базе SecretRef разрешаются из активного снимка среды выполнения секретов до запуска сеанса песочницы
Поведение бэкенда SSH:
- однократно инициализирует удалённое рабочее пространство после создания или повторного создания
- после этого считает удалённое рабочее пространство SSH каноническим
- направляет
exec, файловые инструменты и пути к медиафайлам через SSH - не синхронизирует удалённые изменения обратно на хост автоматически
- не поддерживает контейнеры браузера песочницы
Доступ к рабочему пространству:
none: рабочее пространство песочницы для каждой области действия в~/.openclaw/sandboxes(по умолчанию)ro: рабочее пространство песочницы в/workspace, рабочее пространство агента смонтировано только для чтения в/agentrw: рабочее пространство агента смонтировано для чтения и записи в/workspace
Область действия:
session: отдельный контейнер и рабочее пространство для каждого сеансаagent: один контейнер и одно рабочее пространство на агента (по умолчанию)shared: общий контейнер и рабочее пространство (без изоляции между сеансами)
Конфигурация плагина OpenShell:
{plugins: { entries: { openshell: { enabled: true, config: { mode: "mirror", // mirror (по умолчанию) | remote command: "openshell", 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, но жизненным циклом песочницы и необязательной зеркальной синхронизацией управляет плагин.
setupCommand выполняется один раз после создания контейнера (через sh -lc). Требует исходящего сетевого доступа, корневой файловой системы с возможностью записи и пользователя root.
По умолчанию контейнеры используют network: "none" — задайте "bridge" (или пользовательскую мостовую сеть), если агенту требуется исходящий доступ.
"host" заблокирован. "container:<id>" по умолчанию заблокирован, если явно не задан
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (аварийный обход).
Обращения к серверу приложения Codex в активной песочнице OpenClaw используют эту же настройку исходящего доступа для собственного сетевого доступа в режиме работы с кодом.
Входящие вложения помещаются в media/inbound/* активного рабочего пространства.
docker.binds монтирует дополнительные каталоги хоста; глобальные привязки и привязки отдельных агентов объединяются.
Браузер в песочнице (sandbox.browser.enabled, по умолчанию false): Chromium + CDP в контейнере. URL-адрес noVNC внедряется в системный запрос. Не требует browser.enabled в openclaw.json.
Доступ наблюдателя noVNC по умолчанию использует аутентификацию VNC, а OpenClaw создаёт URL-адрес с короткоживущим токеном (вместо раскрытия пароля в общем URL-адресе).
allowHostControl: false(по умолчанию) запрещает сеансам в песочнице обращаться к браузеру хоста.networkпо умолчанию имеет значениеopenclaw-sandbox-browser(выделенная мостовая сеть). Задавайтеbridge, только если явно требуется глобальная связность мостовой сети."host"здесь также заблокирован.cdpSourceRangeпри необходимости ограничивает входящий трафик CDP на границе контейнера диапазоном CIDR (например,172.21.0.1/32).sandbox.browser.bindsмонтирует дополнительные каталоги хоста только в контейнер браузера песочницы. Если этот параметр задан (включая[]), он заменяетdocker.bindsдля контейнера браузера.- Chromium в контейнере браузера песочницы всегда запускается с
--no-sandbox --disable-setuid-sandbox(в контейнерах отсутствуют примитивы ядра, необходимые собственной песочнице Chrome); переключателя конфигурации для этого нет. - Значения запуска по умолчанию определены в
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-dev-shm-usage--disable-background-networking--disable-breakpad--disable-crash-reporter--no-zygote--metrics-recording-only--password-store=basic--use-mock-keychain--disable-3d-apis,--disable-gpuи--disable-software-rasterizerвключены по умолчанию; их можно отключить с помощьюOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0, если это требуется для использования WebGL/3D.--disable-extensions(по умолчанию включено);OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0повторно включает расширения, если они необходимы рабочему процессу.- По умолчанию
--renderer-process-limit=2; изменяется с помощьюOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>. Задайте0, чтобы использовать стандартное ограничение процессов Chromium. --headless=new— только когда включёнheadless.- Значения по умолчанию задаются базовым образом контейнера; чтобы изменить их, используйте собственный образ браузера с собственной точкой входа.
Изоляция браузера в песочнице и sandbox.docker.binds доступны только в Docker.
Сборка образов (из рабочей копии исходного кода):
scripts/sandbox-setup.sh # основной образ песочницыscripts/sandbox-browser-setup.sh # необязательный образ браузераДля установки через npm без рабочей копии исходного кода встроенные команды docker build приведены в разделе Изоляция в песочнице § Образы и настройка.
agents.list (переопределения для отдельных агентов)
Используйте agents.list[].tts, чтобы назначить агенту собственного провайдера TTS, голос, модель,
стиль или режим автоматического TTS. Блок агента глубоко объединяется с глобальным
messages.tts, поэтому общие учётные данные могут храниться в одном месте, а отдельные
агенты могут переопределять только необходимые им поля голоса или провайдера. Переопределение
активного агента применяется к автоматическим голосовым ответам, /tts audio, /tts status и
инструменту агента tts. Примеры провайдеров и порядок приоритета приведены в разделе Преобразование текста в речь.
{ agents: { list: [ { id: "main", default: true, name: "Основной агент", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // или { primary, fallbacks } utilityModel: "openai/gpt-5.4-mini", thinkingDefault: "high", // переопределение уровня обдумывания для отдельного агента reasoningDefault: "on", // переопределение видимости рассуждений для отдельного агента fastModeDefault: false, // переопределение быстрого режима для отдельного агента params: { cacheRetention: "none" }, // переопределяет по ключу соответствующие параметры defaults.models tts: { providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, skills: ["docs-search"], // если задано, заменяет agents.defaults.skills identity: { name: "Саманта", theme: "отзывчивый ленивец", 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: [].utilityModel: необязательное переопределение для отдельного агента, применяемое к коротким внутренним задачам, например созданию заголовков сеансов и веток. Если значение отсутствует, последовательно используютсяagents.defaults.utilityModel, объявленная основным провайдером малая модель по умолчанию, а затем основная модель этого агента. Пустая строка отключает маршрутизацию вспомогательных задач для этого агента.params: параметры потока для отдельного агента, объединяемые с выбранной записью модели вagents.defaults.models. Используйте их для переопределений, относящихся к конкретному агенту, таких какcacheRetention,temperatureилиmaxTokens, без дублирования всего каталога моделей.tts: необязательные переопределения преобразования текста в речь для отдельного агента. Блок рекурсивно объединяется сmessages.tts, поэтому общие учётные данные провайдера и политику резервирования следует хранить вmessages.tts, а здесь задавать только значения, относящиеся к конкретному образу: провайдер, голос, модель, стиль или автоматический режим.skills: необязательный список разрешённых навыков для отдельного агента. Если он опущен, агент наследуетagents.defaults.skills, когда это значение задано; явно указанный список заменяет значения по умолчанию, а не объединяется с ними, а[]означает отсутствие навыков.thinkingDefault: необязательный уровень обдумывания по умолчанию для отдельного агента (off | minimal | low | medium | high | xhigh | adaptive | max). Переопределяетagents.defaults.thinkingDefaultдля этого агента, если переопределение не задано для сообщения или сеанса. Профиль выбранного провайдера и модели определяет допустимые значения; для Google Gemini значениеadaptiveсохраняет динамическое обдумывание, управляемое провайдером (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.identity.avatar: путь относительно рабочей области, URLhttp(s)или URIdata:.- Размер локальных файлов изображений
identity.avatarс путями относительно рабочей области ограничен 2 MB. 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).subagents.maxConcurrent: максимальное количество одновременно выполняемых дочерних агентов в рамках выполнения субагентов. По умолчанию:8.subagents.maxChildrenPerAgent: максимальное количество активных дочерних агентов, которое может запустить один сеанс агента. По умолчанию:5.subagents.maxSpawnDepth: максимальная глубина вложенности запуска субагентов (1-5). По умолчанию:1(без вложенности).subagents.archiveAfterMinutes: возраст завершённого состояния субагента, после которого оно архивируется. По умолчанию:60.
Маршрутизация между несколькими агентами
Запускайте несколько изолированных агентов внутри одного 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для обычной маршрутизации (при отсутствии типа по умолчанию используется маршрут),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(точное совпадение, без однорангового узла/сервера/команды)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", // основной | для каждого собеседника | для каждого собеседника в канале | для каждой учётной записи, канала и собеседника identityLinks: { alice: ["telegram:123456789", "discord:987654321012345678"], }, reset: { mode: "daily", // ежедневно | при бездействии atHour: 4, idleMinutes: 60, }, resetByType: { thread: { mode: "daily", atHour: 4 }, direct: { mode: "idle", idleMinutes: 240 }, group: { mode: "idle", idleMinutes: 120 }, }, resetByChannel: { discord: { mode: "idle", idleMinutes: 30 }, }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", maintenance: { mode: "enforce", // принудительное применение (по умолчанию) | предупреждение pruneAfter: "30d", maxEntries: 500, resetArchiveRetention: "30d", // длительность или false maxDiskBytes: "500mb", // необязательный жёсткий лимит highWaterBytes: "400mb", // необязательное целевое значение очистки }, writeLock: { acquireTimeoutMs: 60000, staleMs: 1800000, maxHoldMs: 300000, }, threadBindings: { enabled: true, idleHours: 24, // автоматическое снятие фокуса после периода бездействия по умолчанию, в часах (`0` отключает) maxAgeHours: 0, // максимальный возраст по умолчанию, в часах (`0` отключает) }, mainKey: "main", // устаревшее (среда выполнения всегда использует "main") agentToAgent: { maxPingPongTurns: 5 }, sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], default: "allow", }, },}Сведения о полях сеанса
scope: базовая стратегия группировки сессий для контекстов групповых чатов.per-sender(по умолчанию): каждый отправитель получает изолированную сессию в контексте канала.global: все участники в контексте канала используют одну общую сессию (используйте только тогда, когда предполагается общий контекст).dmScope: способ группировки личных сообщений.main: все личные сообщения используют основную сессию.per-peer: изоляция по идентификатору отправителя между каналами.per-channel-peer: изоляция по каналу и отправителю (рекомендуется для многопользовательских папок входящих сообщений).per-account-channel-peer: изоляция по учётной записи, каналу и отправителю (рекомендуется при использовании нескольких учётных записей).identityLinks: сопоставление канонических идентификаторов с собеседниками, имеющими префикс провайдера, для совместного использования сессий между каналами. Команды закрепления, такие как/dock_discord, используют то же сопоставление, чтобы переключать маршрут ответа активной сессии на собеседника из другого связанного канала; см. Закрепление каналов.reset: основная политика сброса.dailyвыполняет сброс вatHourпо местному времени;idleвыполняет сброс по истеченииidleMinutes. Если настроены оба варианта, применяется тот, срок которого наступит раньше. Актуальность для ежедневного сброса определяется поsessionStartedAtстроки сессии; актуальность для сброса по бездействию — поlastInteractionAt. Фоновые записи и записи системных событий, такие как Heartbeat, пробуждения Cron, уведомления exec и служебные записи Gateway, могут обновлятьupdatedAt, но не поддерживают актуальность сессий с ежедневным сбросом или сбросом по бездействию.resetByType: переопределения для отдельных типов (direct,group,thread). Устаревшее полеdmпринимается как псевдоним дляdirect.resetByChannel: переопределения сброса для отдельных каналов с ключами по идентификатору провайдера или канала. Если для канала сессии есть соответствующая запись, она имеет безусловный приоритет надresetByType/resetдля этой сессии. Используйте только тогда, когда одному каналу требуется поведение сброса, отличное от политики на уровне типа.mainKey: устаревшее поле. Среда выполнения всегда использует"main"для основной группы личных чатов.agentToAgent.maxPingPongTurns: максимальное количество ответных ходов между агентами при обмене данными между агентами (целое число, диапазон:0-20, по умолчанию:5).0отключает цепочки взаимных ответов.sendPolicy: сопоставление поchannel,chatType(direct|group|channel, с устаревшим псевдонимомdm),keyPrefixилиrawKeyPrefix. Первое запрещающее правило имеет приоритет.maintenance: элементы управления очисткой и хранением хранилища сессий.mode:enforceвыполняет очистку и используется по умолчанию;warnтолько выдаёт предупреждения.pruneAfter: порог возраста для устаревших записей (по умолчанию30d).maxEntries: максимальное количество записей сессий SQLite (по умолчанию500). При записи среда выполнения выполняет пакетную очистку с небольшим запасом сверх верхней границы для ограничений, соответствующих рабочей среде;openclaw sessions cleanup --enforceприменяет ограничение немедленно.- Краткоживущие сессии проверки запуска модели Gateway используют фиксированный срок хранения
24h, но очистка выполняется только при нехватке ресурсов: устаревшие строки строгих проверок запуска модели удаляются только при достижении порога обслуживания или ограничения количества записей сессий. Подходят только явные строгие ключи проверки, соответствующиеagent:*:explicit:model-run-<uuid>; обычные личные, групповые, потоковые сессии, а также сессии Cron, перехватчиков, Heartbeat, ACP и субагентов не наследуют этот 24-часовой срок хранения. Когда запускается очистка запусков модели, она выполняется до более общей очистки устаревших записейpruneAfterи применения ограниченияmaxEntries. - Устаревшее поле
rotateBytesотклоняется текущей схемой;openclaw doctor --fixудаляет его из старых конфигураций. resetArchiveRetention: хранение архивов сброшенных или удалённых расшифровок по возрасту. По умолчанию архивы сохраняются до вытеснения из-за ограничения дискового пространства; задайте длительность, чтобы включить удаление по истечении времени, илиfalse, чтобы явно отключить его.maxDiskBytes: необязательное ограничение дискового пространства для каталога сессий. В режимеwarnрегистрируются предупреждения; в режимеenforceсначала удаляются самые старые артефакты и сессии.highWaterBytes: необязательный целевой уровень после очистки по ограничению пространства. По умолчанию —80%отmaxDiskBytes.writeLock: параметры блокировки записи расшифровок сессий. Изменяйте их только тогда, когда штатная подготовка расшифровок, очистка, Compaction или зеркалирование конкурируют за блокировку дольше, чем допускают политики по умолчанию.acquireTimeoutMs: время ожидания получения блокировки в миллисекундах, после которого сессия помечается как занятая. По умолчанию:60000; переопределение через переменную средыOPENCLAW_SESSION_WRITE_LOCK_ACQUIRE_TIMEOUT_MS.staleMs: время в миллисекундах, после которого существующая блокировка считается устаревшей и освобождается. По умолчанию:1800000; переопределение через переменную средыOPENCLAW_SESSION_WRITE_LOCK_STALE_MS.maxHoldMs: время в миллисекундах, в течение которого внутрипроцессная блокировка может оставаться удерживаемой, прежде чем сторожевой механизм освободит её. По умолчанию:300000; переопределение через переменную средыOPENCLAW_SESSION_WRITE_LOCK_MAX_HOLD_MS.threadBindings: глобальные значения по умолчанию для функций сессий, привязанных к потокам.enabled: основной переключатель по умолчанию (провайдеры могут переопределять; Discord используетchannels.discord.threadBindings.enabled)idleHours: автоматическое снятие фокуса после бездействия по умолчанию в часах (0отключает; провайдеры могут переопределять)maxAgeHours: максимальный возраст по умолчанию в часах (0отключает; провайдеры могут переопределять)spawnSessions: условие по умолчанию для создания рабочих сессий, привязанных к потокам, изsessions_spawnи порождений потоков ACP. По умолчанию —true, когда привязка к потокам включена; провайдеры и учётные записи могут переопределять.defaultSpawnContext: контекст нативного субагента по умолчанию для порождений, привязанных к потокам ("fork"или"isolated"). По умолчанию —"fork".
Сообщения
{ messages: { responsePrefix: "🦞", // или "auto" ackReaction: "👀", ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all | off | none removeAckAfterReply: false, queue: { mode: "steer", // steer (по умолчанию) | followup | collect | interrupt debounceMs: 500, cap: 20, drop: "summarize", // old | new | summarize (по умолчанию) byChannel: { whatsapp: "followup", telegram: "followup", }, }, inbound: { debounceMs: 2000, // 0 отключает 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илиoff/none(полностью отключает реакции подтверждения). removeAckAfterReply: удаляет реакцию подтверждения после ответа в каналах, поддерживающих реакции, таких как Slack, Discord, Signal, Telegram, WhatsApp и iMessage.messages.statusReactions.enabled: включает реакции состояния жизненного цикла в Slack, Discord, Signal, Telegram и WhatsApp. В Discord отсутствие значения сохраняет реакции состояния включёнными, когда активны реакции подтверждения. В Slack, Signal, Telegram и WhatsApp явно задайтеtrue, чтобы включить реакции состояния жизненного цикла. По умолчанию Slack использует нативное состояние потока помощника и сменяющиеся сообщения о загрузке для отображения хода выполнения, при этом настроенная реакция подтверждения остаётся неизменной.messages.statusReactions.emojis: переопределяет ключи эмодзи жизненного цикла:queued,thinking,compacting,tool,coding,web,deploy,build,concierge,done,error,stallSoftиstallHard. Telegram допускает только фиксированный набор реакций, поэтому для настроенных, но неподдерживаемых эмодзи используется ближайший поддерживаемый вариант состояния для этого чата.
Очередь
mode: стратегия очереди для входящих сообщений, поступающих во время активного выполнения сессии. По умолчанию:"steer".steer: внедрить новый запрос в активное выполнение.followup: выполнить новый запрос после завершения активного выполнения.collect: объединить совместимые сообщения в пакет и выполнить их вместе позднее.interrupt: прервать активное выполнение перед запуском новейшего запроса.
debounceMs: задержка перед отправкой сообщения из очереди или перенаправленного сообщения. По умолчанию:500.cap: максимальное количество сообщений в очереди до применения политики отбрасывания. По умолчанию:20.drop: стратегия при превышении ограничения."summarize"(по умолчанию) отбрасывает самые старые записи, но сохраняет краткие сводки;"old"отбрасывает самые старые записи без сводок;"new"отклоняет самый новый элемент.byChannel: переопределенияmodeдля отдельных каналов с ключами по идентификатору провайдера.debounceMsByChannel: переопределенияdebounceMsдля отдельных каналов с ключами по идентификатору провайдера.
Устранение дребезга входящих сообщений
Объединяет быстро поступающие текстовые сообщения от одного отправителя в один ход агента. Мультимедиа и вложения вызывают немедленную отправку. Управляющие команды не подвергаются устранению дребезга. Значение debounceMs по умолчанию: 2000.
Другие ключи сообщений
messages.messagePrefix: текстовый префикс, добавляемый к входящим сообщениям пользователя до их передачи среде выполнения агента. Используйте умеренно для маркеров контекста канала.messages.visibleReplies: управляет видимыми ответами на исходные сообщения в личных, групповых и канальных беседах ("message_tool"требуетmessage(action=send)для видимого вывода;"automatic"публикует обычные ответы, как и раньше).messages.usageTemplate/messages.responseUsage: пользовательский шаблон нижнего колонтитула/usageи режим его использования для каждого ответа по умолчанию (off | tokens | full, а также устаревший псевдонимonдляtokens).messages.groupChat.mentionPatterns/historyLimit: триггеры упоминаний в групповых сообщениях и размер окна истории.messages.suppressToolErrors: если заданоtrue, подавляет показываемые пользователю предупреждения об ошибках инструмента⚠️(агент по-прежнему видит ошибки в контексте и может повторить попытку). По умолчанию:false.
TTS (преобразование текста в речь)
{ messages: { tts: { auto: "off", // off (default) | 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-MichelleNeural", 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: "coral", }, }, }, },}autoуправляет режимом автоматического TTS по умолчанию:off,always,inboundилиtagged./tts on|offможет переопределять локальные настройки, а/tts statusпоказывает фактическое состояние.summaryModelпереопределяетagents.defaults.model.primaryдля автоматического резюмирования.modelOverridesвключён по умолчанию (enabled !== false);modelOverrides.allowProviderвключается явно.- Для ключей API используются резервные значения
ELEVENLABS_API_KEY/XI_API_KEYиOPENAI_API_KEY. - Встроенные поставщики синтеза речи принадлежат плагинам. Если задан
plugins.allow, включите каждый плагин поставщика 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 рассматривает её как TTS-сервер, совместимый с OpenAI, и ослабляет проверку модели и голоса.
Разговор
Настройки по умолчанию для режима разговора (macOS/iOS/Android и браузерный Control UI).
{ talk: { provider: "elevenlabs", providers: { elevenlabs: { speakerVoiceId: "elevenlabs_voice_id", voiceAliases: { Clawd: "EXAVITQu4vr4xnSDxMaL", Roger: "CwhRBWXzGAHq8TQ4Fs17", }, modelId: "eleven_multilingual_v2", 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.1", speakerVoice: "cedar", }, }, instructions: "Говорите доброжелательно и отвечайте кратко.", mode: "realtime", // realtime | stt-tts | transcription transport: "webrtc", // webrtc | provider-websocket | gateway-relay | managed-room vadThreshold: 0.5, silenceDurationMs: 500, prefixPaddingMs: 300, reasoningEffort: "medium", brain: "agent-consult", // agent-consult | direct-tools | none }, },}talk.providerдолжен соответствовать ключу вtalk.providers, если настроено несколько поставщиков режима разговора.- Устаревшие плоские ключи режима разговора (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) поддерживаются только для совместимости. Запуститеopenclaw doctor --fix, чтобы преобразовать сохранённую конфигурацию вtalk.providers.<provider>. - Для идентификаторов голосов используются резервные значения
ELEVENLABS_VOICE_IDилиSAG_VOICE_ID(поведение клиента режима разговора в macOS). providers.*.apiKeyпринимает строки с открытым текстом или объекты SecretRef.- Резервное значение
ELEVENLABS_API_KEYприменяется только тогда, когда ключ API для режима разговора не настроен. providers.*.voiceAliasesпозволяет использовать в директивах режима разговора понятные имена.providers.mlx.modelIdвыбирает репозиторий Hugging Face, используемый локальным вспомогательным модулем MLX для macOS. Если параметр не указан, macOS используетmlx-community/Soprano-80M-bf16.- Воспроизведение MLX в macOS выполняется через встроенный вспомогательный модуль
openclaw-mlx-tts, если он доступен, либо через исполняемый файл вPATH;OPENCLAW_MLX_TTS_BINпереопределяет путь к вспомогательному модулю для разработки. consultThinkingLevelуправляет уровнем обдумывания для полного запуска агента OpenClaw, выполняемого при вызовахopenclaw_agent_consultрежима разговора в реальном времени в Control UI. Не задавайте этот параметр, чтобы сохранить обычное поведение сеанса и модели.consultFastModeзадаёт однократное переопределение быстрого режима для консультаций режима разговора в реальном времени в Control UI, не изменяя обычную настройку быстрого режима сеанса.speechLocaleзадаёт идентификатор локали BCP 47, используемый распознаванием речи режима разговора в iOS/macOS. Не задавайте этот параметр, чтобы использовать настройку устройства по умолчанию.silenceTimeoutMsопределяет, как долго режим разговора ожидает после того, как пользователь замолчал, прежде чем отправить расшифровку. Если параметр не задан, сохраняется стандартное для платформы окно паузы (700 ms on macOS and Android, 900 ms on iOS).realtime.instructionsдобавляет системные инструкции для поставщика к встроенному запросу OpenClaw для режима реального времени, позволяя настраивать стиль голоса без потери стандартных указанийopenclaw_agent_consult.realtime.vadThresholdзадаёт порог обнаружения голосовой активности поставщика от0(наибольшая чувствительность) до1(наименьшая чувствительность). Если параметр не задан, используется значение поставщика по умолчанию.realtime.silenceDurationMsзадаёт положительное целочисленное окно тишины перед тем, как поставщик зафиксирует реплику пользователя в реальном времени. Если параметр не задан, используется значение поставщика по умолчанию.realtime.prefixPaddingMsзадаёт неотрицательный целочисленный объём аудио, сохраняемый перед началом обнаруженной речи. Если параметр не задан, используется значение поставщика по умолчанию.realtime.reasoningEffortзадаёт зависящий от поставщика уровень рассуждения для сеансов реального времени. Если параметр не задан, используется значение поставщика по умолчанию.realtime.consultRouting:"provider-direct"(по умолчанию) сохраняет прямые ответы поставщика, когда поставщик режима реального времени создаёт окончательную расшифровку реплики пользователя безopenclaw_agent_consult."force-agent-consult"вместо этого направляет завершённый запрос через OpenClaw.
Связанные материалы
- Справочник по конфигурации — все остальные ключи конфигурации
- Конфигурация — распространённые задачи и быстрая настройка
- Примеры конфигурации