Gateway
Configuración — agentes
Claves de configuración con ámbito de agente bajo agents.*, multiAgent.*, session.*,
messages.* y talk.*. Para canales, herramientas, el entorno de ejecución del Gateway y otras
claves de nivel superior, consulte la referencia de configuración.
Valores predeterminados de los agentes
agents.defaults.workspace
Valor predeterminado: OPENCLAW_WORKSPACE_DIR cuando está establecido; de lo contrario, ~/.openclaw/workspace (o ~/.openclaw/workspace-<profile> cuando OPENCLAW_PROFILE está establecido en un perfil no predeterminado).
{ agents: { defaults: { workspace: "~/.openclaw/workspace" } },}Un valor explícito de agents.defaults.workspace tiene prioridad sobre
OPENCLAW_WORKSPACE_DIR. Utilice la variable de entorno para dirigir los agentes predeterminados
a un espacio de trabajo montado cuando no se desee escribir esa ruta en la configuración.
agents.defaults.repoRoot
Raíz opcional del repositorio que se muestra en la línea Runtime del prompt del sistema. Si no se establece, OpenClaw la detecta automáticamente recorriendo hacia arriba desde el espacio de trabajo.
{ agents: { defaults: { repoRoot: "~/Projects/openclaw" } },}agents.defaults.skills
Lista de permitidos de Skills predeterminada y opcional para los agentes que no establezcan
agents.entries.*.skills.
{ agents: { defaults: { skills: ["github", "weather"] }, list: [ { id: "writer" }, // hereda github, weather { id: "docs", skills: ["docs-search"] }, // reemplaza los valores predeterminados { id: "locked-down", skills: [] }, // sin Skills ], },}- Omita
agents.defaults.skillspara permitir todas las Skills de forma predeterminada. - Omita
agents.entries.*.skillspara heredar los valores predeterminados. - Establezca
agents.entries.*.skills: []para no permitir ninguna Skill. - Una lista
agents.entries.*.skillsno vacía constituye el conjunto definitivo para ese agente; no se combina con los valores predeterminados.
agents.defaults.skipBootstrap
Deshabilita la creación automática de archivos de arranque del espacio de trabajo (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
{ agents: { defaults: { skipBootstrap: true } },}agents.defaults.skipOptionalBootstrapFiles
Omite la creación de determinados archivos opcionales del espacio de trabajo, pero sigue escribiendo los archivos de arranque obligatorios (AGENTS.md, TOOLS.md, BOOTSTRAP.md). Valores válidos: SOUL.md, USER.md, HEARTBEAT.md y IDENTITY.md.
{ agents: { defaults: { skipOptionalBootstrapFiles: ["SOUL.md", "USER.md"], }, },}agents.defaults.contextInjection
Controla cuándo se inyectan los archivos de arranque del espacio de trabajo en el prompt del sistema. Valor predeterminado: "always".
"continuation-skip": los turnos de continuación seguros (después de una respuesta completada del asistente) omiten la reinyección del arranque del espacio de trabajo, lo que reduce el tamaño del prompt. Las ejecuciones de Heartbeat y los reintentos posteriores a Compaction siguen reconstruyendo el contexto."never": deshabilita la inyección del arranque del espacio de trabajo y de los archivos de contexto en cada turno. Utilícelo únicamente para agentes que gestionen por completo el ciclo de vida de su prompt (motores de contexto personalizados, entornos de ejecución nativos que construyan su propio contexto o flujos de trabajo especializados sin arranque). Los turnos de Heartbeat y de recuperación de Compaction también omiten la inyección.
{ agents: { defaults: { contextInjection: "continuation-skip" } },}Anulación por agente: agents.entries.*.contextInjection. Los valores omitidos heredan
agents.defaults.contextInjection.
agents.defaults.bootstrapMaxChars
Número máximo de caracteres por archivo de arranque del espacio de trabajo antes del truncamiento. Valor predeterminado: 20000.
{ agents: { defaults: { bootstrapMaxChars: 20000 } },}Anulación por agente: agents.entries.*.bootstrapMaxChars. Los valores omitidos heredan
agents.defaults.bootstrapMaxChars.
agents.defaults.bootstrapTotalMaxChars
Número máximo total de caracteres inyectados entre todos los archivos de arranque del espacio de trabajo. Valor predeterminado: 60000.
{ agents: { defaults: { bootstrapTotalMaxChars: 60000 } },}Anulación por agente: agents.entries.*.bootstrapTotalMaxChars. Los valores omitidos
heredan agents.defaults.bootstrapTotalMaxChars.
Anulaciones del perfil de arranque por agente
Utilice anulaciones del perfil de arranque por agente cuando un agente necesite un comportamiento de
inyección del prompt diferente al de los valores predeterminados compartidos. Los campos omitidos heredan de
agents.defaults.
{ agents: { defaults: { contextInjection: "continuation-skip", bootstrapMaxChars: 20000, bootstrapTotalMaxChars: 60000, }, list: [ { id: "strict-worker", contextInjection: "always", bootstrapMaxChars: 50000, bootstrapTotalMaxChars: 300000, }, ], },}agents.defaults.bootstrapPromptTruncationWarning
Controla el aviso visible para el agente en el prompt del sistema cuando se trunca el contexto de arranque.
Valor predeterminado: "always".
"off": nunca inyecta el texto del aviso de truncamiento en el prompt del sistema."once": inyecta un aviso conciso una vez por cada firma de truncamiento única."always": inyecta un aviso conciso en cada ejecución cuando existe truncamiento (recomendado).
Los recuentos detallados sin procesar/inyectados y los campos de ajuste de configuración permanecen en diagnósticos como informes y registros de contexto/estado; el contexto rutinario del usuario y del entorno de ejecución de WebChat solo recibe el aviso conciso de recuperación.
{ agents: { defaults: { bootstrapPromptTruncationWarning: "always" } }, // off | once | always}Mapa de propiedad de los presupuestos de contexto
OpenClaw tiene varios presupuestos de prompts/contexto de gran volumen, que se dividen intencionalmente por subsistema en lugar de pasar todos por un único control genérico.
| Presupuesto | Cubre |
|---|---|
agents.defaults.bootstrapMaxChars / bootstrapTotalMaxChars |
Inyección normal del arranque del espacio de trabajo |
agents.defaults.startupContext.* |
Preámbulo único de ejecución del modelo al restablecer/iniciar, incluidos los archivos memory/*.md diarios recientes. Los comandos de chat sin argumentos /new y /reset se confirman sin invocar el modelo |
skills.limits.* |
La lista compacta de Skills inyectada en el prompt del sistema |
agents.defaults.contextLimits.* |
Extractos acotados del entorno de ejecución y bloques inyectados que pertenecen al entorno de ejecución |
memory.qmd.limits.* |
Tamaño del fragmento indexado de búsqueda en memoria y de la inyección |
Anulaciones correspondientes por agente:
agents.entries.*.skillsLimits.maxSkillsPromptCharsagents.entries.*.contextInjectionagents.entries.*.bootstrapMaxCharsagents.entries.*.bootstrapTotalMaxCharsagents.entries.*.contextLimits.*
agents.defaults.startupContext
Controla el preámbulo de inicio del primer turno que se inyecta en las ejecuciones del modelo al restablecer/iniciar.
Los comandos de chat sin argumentos /new y /reset confirman el restablecimiento sin invocar
el modelo, por lo que no cargan este preámbulo.
{ agents: { defaults: { startupContext: { enabled: true, applyOn: ["new", "reset"], dailyMemoryDays: 2, maxFileBytes: 16384, maxFileChars: 1200, maxTotalChars: 2800, }, }, },}agents.defaults.contextLimits
Valores predeterminados compartidos para superficies acotadas del contexto del entorno de ejecución.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000, memoryGetDefaultLines: 120, postCompactionMaxChars: 1800, }, }, },}memoryGetMaxChars: límite predeterminado del extractomemory_getantes de que se añadan los metadatos de truncamiento y el aviso de continuación.memoryGetDefaultLines: ventana predeterminada de líneas dememory_getcuando se omitelines.toolResultMaxChars: límite máximo avanzado para los resultados de herramientas en vivo, utilizado en los resultados persistidos y la recuperación de desbordamientos. Déjelo sin establecer para usar el límite automático del contexto del modelo:16000caracteres por debajo de 100K tokens,32000caracteres con 100K+ tokens y64000caracteres con 200K+ tokens. Se aceptan valores explícitos de hasta1000000para modelos de contexto largo, pero el límite efectivo sigue restringido a aproximadamente el 30 % de la ventana de contexto del modelo.openclaw doctor --deepmuestra el límite efectivo y doctor solo advierte cuando una anulación explícita está obsoleta o no tiene efecto.postCompactionMaxChars: límite del extracto de AGENTS.md utilizado durante la inyección de actualización posterior a Compaction.
agents.entries.*.contextLimits
Anulación por agente de los controles compartidos de contextLimits. Los campos omitidos heredan
de agents.defaults.contextLimits.
{ agents: { defaults: { contextLimits: { memoryGetMaxChars: 12000 }, }, list: [ { id: "tiny-local", contextLimits: { memoryGetMaxChars: 6000, toolResultMaxChars: 8000, // límite avanzado para este agente }, }, ], },}skills.limits.maxSkillsPromptChars
Límite global para la lista compacta de Skills inyectada en el prompt del sistema. Esto
no afecta a la lectura bajo demanda de archivos SKILL.md.
{ skills: { limits: { maxSkillsPromptChars: 18000 } },}agents.entries.*.skillsLimits.maxSkillsPromptChars
Anulación por agente del presupuesto del prompt de Skills.
{ agents: { list: [{ id: "tiny-local", skillsLimits: { maxSkillsPromptChars: 6000 } }], },}agents.defaults.imageMaxDimensionPx
Tamaño máximo en píxeles del lado más largo de la imagen en los bloques de imágenes de transcripciones/herramientas antes de las llamadas al proveedor.
Valor predeterminado: 1200.
Los valores más bajos suelen reducir el uso de tokens de visión y el tamaño de la carga útil de las solicitudes en ejecuciones con muchas capturas de pantalla. Los valores más altos conservan más detalle visual.
{ agents: { defaults: { imageMaxDimensionPx: 1200 } },}agents.defaults.imageQuality
Preferencia de compresión/detalle de la herramienta de imágenes para imágenes cargadas desde rutas de archivos, URL y referencias multimedia.
Valor predeterminado: auto.
OpenClaw adapta la escala de redimensionamiento al modelo de imágenes seleccionado. Por ejemplo, Claude Opus 4.8, OpenAI GPT-5.6 Sol, Qwen VL y los modelos de visión Llama 4 alojados pueden usar imágenes más grandes que las rutas de visión de alto detalle anteriores/predeterminadas, mientras que los turnos con varias imágenes se comprimen de forma más agresiva en el modo auto para controlar el coste de tokens y latencia.
Valores:
auto: se adapta a los límites del modelo y al número de imágenes.efficient: prioriza imágenes más pequeñas para reducir el uso de tokens y bytes.balanced: utiliza la escala intermedia estándar.high: conserva más detalle en capturas de pantalla, diagramas e imágenes de documentos.
{ agents: { defaults: { imageQuality: "auto" } },}agents.defaults.userTimezone
Zona horaria para el contexto del prompt del sistema (no para las marcas de tiempo de los mensajes). Si no se especifica, se utiliza la zona horaria del host.
{ agents: { defaults: { userTimezone: "America/Chicago" } },}agents.defaults.timeFormat
Formato de hora en el prompt del sistema. Valor predeterminado: auto (preferencia del sistema operativo).
{ 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"], }, mediaModels: { image: { primary: "openai/gpt-image-2", fallbacks: ["google/gemini-3.1-flash-image"], }, video: { 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" }, // parámetros globales predeterminados del proveedor pdfMaxMb: 10, pdfMaxPages: 20, thinkingDefault: "low", verboseDefault: "off", toolProgressDetail: "explain", reasoningDefault: "off", elevatedDefault: "on", timeoutSeconds: 600, mediaMaxMb: 5, contextTokens: 200000, maxConcurrent: 4, }, },}model: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- La forma de cadena establece únicamente el modelo principal.
- La forma de objeto establece el modelo principal y los modelos de conmutación por error ordenados.
utilityModel: referencia o aliasprovider/modelopcional para tareas internas breves. Actualmente se utiliza para generar títulos de sesiones de la interfaz de control, títulos de temas de mensajes directos de Telegram, títulos automáticos de hilos de Discord y la narración de borradores de progreso. Cuando no se establece, OpenClaw obtiene el modelo pequeño predeterminado declarado por el proveedor principal, si existe (OpenAI →gpt-5.6-luna, Anthropic →claude-haiku-4-5); de lo contrario, las tareas de títulos utilizan el modelo principal del agente y la narración permanece desactivada. Si un modelo auxiliar distinto no puede preparar o completar un título generado, OpenClaw vuelve a intentar generar ese título una vez con el modelo principal. Para los títulos del panel, la obtención automática del modelo auxiliar y la conmutación por error habitual utilizan el proveedor y el perfil de autenticación efectivos de la sesión; un modelo auxiliar explícito conserva su proveedor y autenticación configurados. EstablezcautilityModel: ""para omitir la ruta auxiliar alternativa; la generación de títulos del panel continúa directamente con el modelo habitual de la sesión.agents.entries.*.utilityModelsustituye el valor predeterminado, y una anulación de modelo específica de la operación tiene prioridad sobre ambos. Las tareas auxiliares realizan llamadas independientes al modelo y envían contenido específico de la tarea al proveedor del modelo seleccionado. La generación de títulos del panel envía como máximo los primeros 1.000 caracteres del primer mensaje que no sea un comando; la narración envía la solicitud entrante junto con resúmenes compactos y censurados de las herramientas. Elija un proveedor que se ajuste a sus requisitos de coste y tratamiento de datos.imageModel: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- La ruta de la herramienta
imagelo utiliza como configuración del modelo de visión cuando el modelo activo no puede aceptar imágenes. En su lugar, los modelos con visión nativa reciben directamente los bytes de las imágenes cargadas. - También se utiliza como ruta de conmutación por error cuando el modelo seleccionado o predeterminado no puede aceptar entradas de imagen.
- Es preferible utilizar referencias
provider/modelexplícitas. Se aceptan identificadores sin calificar por compatibilidad; si uno coincide de forma única con una entrada configurada que admita imágenes enmodels.providers.*.models, OpenClaw lo califica con ese proveedor. Las coincidencias configuradas ambiguas requieren un prefijo de proveedor explícito.
- La ruta de la herramienta
mediaModels.image: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- Se utiliza en la capacidad compartida de generación de imágenes y en cualquier futura superficie de herramienta o plugin que genere imágenes.
- Valores habituales:
google/gemini-3.1-flash-imagepara la generación nativa de imágenes de Gemini,fal/fal-ai/flux/devpara fal,openai/gpt-image-2para OpenAI Images oopenai/gpt-image-1.5para la salida PNG/WebP de OpenAI con fondo transparente. - Si selecciona directamente un proveedor o modelo, configure también la autenticación correspondiente del proveedor (por ejemplo,
GEMINI_API_KEYoGOOGLE_API_KEYparagoogle/*,OPENAI_API_KEYu OAuth de OpenAI Codex paraopenai/gpt-image-2/openai/gpt-image-1.5, yFAL_KEYparafal/*). - Si se omite,
image_generateaún puede inferir un proveedor predeterminado respaldado por autenticación. Primero prueba el proveedor predeterminado actual y, a continuación, los demás proveedores de generación de imágenes registrados en orden de identificador de proveedor.
mediaModels.music: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- Se utiliza en la capacidad compartida de generación de música y en la herramienta integrada
music_generate. - Valores habituales:
google/lyria-3-clip-preview,google/lyria-3-pro-previewominimax/music-2.6. - Si se omite,
music_generateaún puede inferir un proveedor predeterminado respaldado por autenticación. Primero prueba el proveedor predeterminado actual y, a continuación, los demás proveedores de generación de música registrados en orden de identificador de proveedor. - Si selecciona directamente un proveedor o modelo, configure también la autenticación o clave de API correspondiente del proveedor.
- Se utiliza en la capacidad compartida de generación de música y en la herramienta integrada
mediaModels.video: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- Se utiliza en la capacidad compartida de generación de vídeo y en la herramienta integrada
video_generate. - Valores habituales:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashoqwen/wan2.7-r2v. - Si se omite,
video_generateaún puede inferir un proveedor predeterminado respaldado por autenticación. Primero prueba el proveedor predeterminado actual y, a continuación, los demás proveedores de generación de vídeo registrados en orden de identificador de proveedor. - Si selecciona directamente un proveedor o modelo, configure también la autenticación o clave de API correspondiente del proveedor.
- El plugin oficial de generación de vídeo de Qwen admite hasta 1 vídeo de salida, 1 imagen de entrada, 4 vídeos de entrada, 10 segundos de duración y las opciones de proveedor
size,aspectRatio,resolution,audioywatermark.
- Se utiliza en la capacidad compartida de generación de vídeo y en la herramienta integrada
pdfModel: acepta una cadena ("provider/model") o un objeto ({ primary, fallbacks }).- La herramienta
pdflo utiliza para el enrutamiento de modelos. - Si se omite, la herramienta de PDF recurre a
imageModely, después, al modelo resuelto de la sesión o predeterminado.
- La herramienta
pdfMaxMb: límite de tamaño de PDF predeterminado para la herramientapdfcuando no se pasamaxBytesMben el momento de la llamada.pdfMaxPages: número máximo predeterminado de páginas que tiene en cuenta el modo de extracción alternativo de la herramientapdf.verboseDefault: nivel de detalle predeterminado para los agentes. Valores:"off","on","full". Valor predeterminado:"off".toolProgressDetail: modo de detalle para los resúmenes de la herramienta/verbosey las líneas de herramientas de los borradores de progreso. Valores:"explain"(predeterminado, etiquetas humanas compactas) o"raw"(añade el comando o detalle sin procesar cuando está disponible). El valoragents.entries.*.toolProgressDetailde cada agente sustituye este valor predeterminado.reasoningDefault: visibilidad predeterminada del razonamiento para los agentes. Valores:"off","on","stream". El valoragents.entries.*.reasoningDefaultde cada agente sustituye este valor predeterminado. Los valores predeterminados de razonamiento configurados solo se aplican a propietarios, remitentes autorizados o contextos de administrador-operador del Gateway cuando no se ha establecido una anulación de razonamiento por mensaje o sesión.elevatedDefault: nivel predeterminado de salida elevada para los agentes. Valores:"off","on","ask","full". Valor predeterminado:"on".model.primary: formatoprovider/model(por ejemplo,openai/gpt-5.6-solpara el acceso OAuth de Codex). Si se omite el proveedor, OpenClaw prueba primero un alias, después una coincidencia única entre los proveedores configurados para ese identificador exacto de modelo y, solo entonces, recurre al proveedor predeterminado configurado (comportamiento de compatibilidad obsoleto, por lo que se recomienda utilizar unprovider/modelexplícito). Si ese proveedor ya no ofrece el modelo predeterminado configurado, OpenClaw recurre al primer proveedor y modelo configurados en lugar de mostrar un valor predeterminado obsoleto de un proveedor eliminado.models: alias configurados y ajustes por modelo. Cada entrada puede incluiralias(acceso directo) yparams(específico del proveedor, por ejemplo,temperature,maxTokens,cacheRetention,context1m,responsesServerCompaction,responsesCompactThreshold, enrutamientoproviderde OpenRouter,chat_template_kwargs,extra_body/extraBody). Añadir entradas no restringe las anulaciones de modelos.- Utilice entradas
provider/*como"openai/*": {}o"vllm/*": {}para mostrar todos los modelos detectados de los proveedores seleccionados sin enumerar manualmente cada identificador de modelo. - Añada
agentRuntimea una entradaprovider/*cuando todos los modelos detectados dinámicamente de ese proveedor deban utilizar el mismo entorno de ejecución. La política exacta de entorno de ejecuciónprovider/modelsigue teniendo prioridad sobre el comodín. - Ediciones seguras de metadatos: utilice
openclaw config set agents.defaults.models '<json>' --strict-json --mergepara añadir entradas.config setrechaza las sustituciones que eliminarían entradas existentes, a menos que se pase--replace.
- Utilice entradas
modelPolicy.allow: lista explícita de anulaciones permitidas. Acepta alias, referenciasprovider/modelexactas y comodines de prefijo finales comoopenai/*oclawrouter/anthropic/*. Omítala o utilice[]para permitir cualquier modelo.agents.entries.*.modelPolicy.allowsustituye la política predeterminada de ese agente; una lista vacía explícita permite que ese agente use cualquier modelo.- Los flujos de configuración e incorporación específicos del proveedor combinan en este mapa los modelos del proveedor seleccionado y conservan los proveedores no relacionados ya configurados.
- Para los modelos directos de OpenAI Responses, Compaction en el servidor se activa automáticamente. Utilice
params.responsesServerCompaction: falsepara dejar de inyectarcontext_management, oparams.responsesCompactThresholdpara sustituir el umbral. Consulte Compaction de OpenAI en el servidor.
params: parámetros predeterminados globales del proveedor que se aplican a todos los modelos. Se establecen enagents.defaults.params(por ejemplo,{ cacheRetention: "long" }).- Precedencia de combinación de
params(configuración):agents.defaults.params(base global) se sustituye poragents.defaults.models["provider/model"].params(por modelo) y, después,agents.entries.*.params(identificador de agente coincidente) sustituye los valores por clave. Consulte Almacenamiento en caché de prompts para obtener más información. models.providers.openrouter.params.provider: política predeterminada de enrutamiento de proveedores para todo OpenRouter. OpenClaw la reenvía al objetoproviderde la solicitud de OpenRouter;agents.defaults.models["openrouter/<model>"].params.providerpor modelo y los parámetros del agente sustituyen sus valores por clave. Consulte Enrutamiento de proveedores de OpenRouter.params.extra_body/params.extraBody: JSON avanzado transferido directamente que se combina con los cuerpos de las solicitudesapi: "openai-completions"para proxies compatibles con OpenAI. Si entra en conflicto con claves de solicitud generadas, el cuerpo adicional tiene prioridad; posteriormente, las rutas de finalización no nativas siguen eliminandostore, que es exclusivo de OpenAI.params.chat_template_kwargs: argumentos de plantilla de chat compatibles con vLLM/OpenAI que se combinan con los cuerpos de solicitudapi: "openai-completions"de nivel superior. Paravllm/nemotron-3-*con el pensamiento desactivado, el plugin de vLLM incluido envía automáticamenteenable_thinking: falseyforce_nonempty_content: true; los valores explícitos dechat_template_kwargssustituyen los valores predeterminados generados, yextra_body.chat_template_kwargssigue teniendo la prioridad final. Los modelos de pensamiento Qwen y Nemotron de vLLM configurados ofrecen opciones binarias de/think(off,on) en lugar de la escala de esfuerzo de varios niveles.compat.thinkingFormat: estilo de carga útil de pensamiento compatible con OpenAI. Utilice"together"parareasoning.enabledal estilo de Together,"qwen"paraenable_thinkingde nivel superior al estilo de Qwen o"qwen-chat-template"parachat_template_kwargs.enable_thinkingen backends de la familia Qwen que admitan argumentos de plantilla de chat en el nivel de la solicitud, como vLLM. OpenClaw asigna el pensamiento desactivado afalsey el pensamiento activado atrue; además, los modelos Qwen de vLLM configurados ofrecen opciones binarias de/thinkpara estos formatos.compat.supportedReasoningEfforts: lista de esfuerzos de razonamiento compatibles con OpenAI por modelo. Incluya"xhigh"para puntos de conexión personalizados que realmente lo acepten; OpenClaw muestra entonces/think xhighen los menús de comandos, las filas de sesiones del Gateway, la validación de modificaciones de sesiones, la validación de la CLI del agente y la validación dellm-taskpara ese proveedor y modelo configurados. Utilicecompat.reasoningEffortMapcuando el backend requiera un valor específico del proveedor para un nivel canónico.params.preserveThinking: activación opcional exclusiva de Z.AI para conservar el pensamiento. Cuando está activada y el pensamiento está habilitado, OpenClaw envíathinking.clear_thinking: falsey reproduce losreasoning_contentanteriores; consulte Pensamiento y conservación del pensamiento de Z.AI.localService: gestor de procesos opcional a nivel de proveedor para servidores de modelos locales o autoalojados. Cuando el modelo seleccionado pertenece a ese proveedor, OpenClaw compruebahealthUrl(obaseUrl + "/models"); si el endpoint no está disponible, iniciacommandconargs, espera hastareadyTimeoutMsy, a continuación, envía la solicitud del modelo.commanddebe ser una ruta absoluta.idleStopMs: 0mantiene el proceso activo hasta que OpenClaw finaliza; un valor positivo detiene el proceso iniciado por OpenClaw tras esa cantidad de milisegundos de inactividad. Consulte Servicios de modelos locales.- La política de ejecución corresponde a los proveedores o modelos, no a
agents.defaults. Usemodels.providers.<provider>.agentRuntimepara reglas aplicables a todo el proveedor oagents.defaults.models["provider/model"].agentRuntime/agents.entries.*.models["provider/model"].agentRuntimepara reglas específicas del modelo. Un prefijo de proveedor/modelo por sí solo nunca selecciona un harness. Si el entorno de ejecución no está definido o esauto, OpenAI puede seleccionar Codex implícitamente solo para una ruta oficial HTTPS exacta de Platform Responses o ChatGPT Responses sin ninguna anulación de solicitud definida por el usuario. Consulte Entorno de ejecución implícito del agente de OpenAI. - Los escritores de configuración que modifican estos campos (por ejemplo,
/models set,/models set-imagey los comandos para añadir o eliminar alternativas) guardan la forma de objeto canónica y conservan las listas de alternativas existentes cuando es posible. maxConcurrent: número máximo de ejecuciones de agentes en paralelo entre sesiones (cada sesión sigue procesándose en serie). Valor predeterminado:4.
Política de ejecución
{ 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", un id de entorno de Plugin registrado o un alias de backend de CLI compatible. El Plugin de Codex incluido registracodex; el Plugin de Anthropic incluido proporciona el backend de CLIclaude-cli.id: "auto"permite que los entornos de Plugin registrados asuman las rutas efectivas que declaren o satisfagan de otro modo su contrato de compatibilidad, y utiliza OpenClaw cuando ningún entorno coincide. Un entorno de ejecución de Plugin explícito, comoid: "codex", requiere ese entorno y una ruta efectiva compatible; aplica un cierre por error si alguno no está disponible o si la ejecución falla.id: "pi"solo se acepta como alias obsoleto deopenclawpara conservar las configuraciones publicadas de v2026.5.22 y versiones anteriores. Las configuraciones nuevas deben usaropenclaw.- La precedencia del entorno de ejecución es: primero, la política exacta del modelo (
agents.entries.*.models["provider/model"],agents.defaults.models["provider/model"]omodels.providers.<provider>.models[]); después,agents.entries.*/agents.defaults.models["provider/*"]; y, por último, la política de todo el proveedor enmodels.providers.<provider>.agentRuntime. - Las claves del entorno de ejecución de todo el agente son heredadas. La selección del entorno de ejecución ignora
agents.defaults.agentRuntime,agents.entries.*.agentRuntime, las asignaciones de entorno de ejecución de sesión yOPENCLAW_AGENT_RUNTIME. Ejecuteopenclaw doctor --fixpara eliminar los valores obsoletos. - Las rutas HTTPS oficiales exactas y aptas de OpenAI Responses/ChatGPT sin una sustitución de solicitud definida pueden usar implícitamente el entorno de Codex. La opción de proveedor/modelo
agentRuntime.id: "codex"convierte Codex en un requisito con cierre por error, pero no hace compatible una ruta incompatible. - Para implementaciones de Claude CLI, se recomienda usar
model: "anthropic/claude-opus-4-8"junto conagentRuntime.id: "claude-cli"en el ámbito del modelo. Las referencias heredadasclaude-cli/<model>siguen funcionando por compatibilidad, pero las configuraciones nuevas deben mantener canónica la selección de proveedor/modelo y establecer el backend de ejecución en la política del entorno de ejecución del proveedor/modelo. - Esto solo controla la ejecución de turnos de agente de texto. La generación multimedia, la visión, PDF, música, vídeo y TTS siguen usando sus ajustes de proveedor/modelo.
Abreviaturas de alias integradas (solo se aplican cuando el modelo está en agents.defaults.models):
| Alias | Modelo |
|---|---|
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 |
Los alias configurados siempre tienen prioridad sobre los valores predeterminados.
Los modelos Z.AI GLM-4.x activan automáticamente el modo de razonamiento, salvo que se establezca --thinking off o se defina agents.defaults.models["zai/<model>"].params.thinking manualmente.
Los modelos Z.AI activan tool_stream de forma predeterminada para la transmisión de llamadas a herramientas. Establezca agents.defaults.models["zai/<model>"].params.tool_stream en false para desactivarla.
Anthropic Claude Opus 4.8 mantiene el razonamiento desactivado de forma predeterminada en OpenClaw; cuando el razonamiento adaptativo se activa explícitamente, el valor predeterminado de esfuerzo gestionado por el proveedor de Anthropic es high. Los modelos Claude 4.6 usan de forma predeterminada adaptive cuando no se establece un nivel de razonamiento explícito.
Selección del backend de CLI
Los mecanismos del adaptador de CLI se registran mediante Plugins, no se configuran en los valores
predeterminados del agente. Seleccione un backend de CLI registrado mediante agentRuntime.id
en el ámbito del modelo, como se muestra arriba. Consulte backends de CLI para conocer las operaciones y
creación de Plugins de backend de CLI para el registro de comandos,
sesiones, imágenes y analizadores.
agents.defaults.promptOverlays
Superposiciones de prompts independientes del proveedor que se aplican por familia de modelos en las superficies de prompts ensambladas por OpenClaw. Los ids de modelos de la familia GPT-5 reciben el contrato de comportamiento compartido en las rutas de OpenClaw/proveedor; personality controla únicamente la capa de estilo de interacción cordial. Las rutas nativas del servidor de aplicaciones de Codex conservan las instrucciones base y de modelo gestionadas por Codex en lugar de esta superposición GPT-5 de OpenClaw, y OpenClaw desactiva la personalidad integrada de Codex para los hilos nativos.
{ agents: { defaults: { promptOverlays: { gpt5: { personality: "friendly", // friendly | on | off }, }, }, },}"friendly"(valor predeterminado) y"on"activan la capa de estilo de interacción cordial."off"desactiva únicamente la capa cordial; el contrato de comportamiento etiquetado de GPT-5 permanece activado.- La opción heredada
plugins.entries.openai.config.personalitysigue leyéndose cuando esta opción compartida no está establecida.
agents.defaults.heartbeat
Ejecuciones periódicas de 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: cadena de duración (ms/s/m/h). Valor predeterminado:30m(autenticación mediante clave de API) o1h(autenticación OAuth). Establézcalo en0mpara desactivarlo.includeSystemPromptSection: cuando es false, omite la sección Heartbeat del prompt del sistema y evita la inserción deHEARTBEAT.mden el contexto de arranque. Valor predeterminado:true.suppressToolErrorWarnings: cuando es true, suprime las cargas útiles de advertencia de errores de herramientas durante las ejecuciones de Heartbeat.timeoutSeconds: tiempo máximo permitido, en segundos, para un turno del agente de Heartbeat antes de que se cancele. Déjelo sin establecer para usaragents.defaults.timeoutSecondscuando esté definido; de lo contrario, se usa la cadencia de Heartbeat, con un límite de 600 segundos.directPolicy: política de entrega directa/por mensaje directo.allow(valor predeterminado) permite la entrega a un destino directo.blocksuprime la entrega a un destino directo y emitereason=dm-blocked.lightContext: cuando es true, las ejecuciones de Heartbeat usan un contexto de arranque ligero y conservan únicamenteHEARTBEAT.mdde los archivos de arranque del espacio de trabajo.isolatedSession: cuando es true, cada Heartbeat se ejecuta en una sesión nueva sin historial de conversación anterior. Sigue el mismo patrón de aislamiento quesessionTarget: "isolated"de Cron. Reduce el coste de tokens por Heartbeat de ~100K a ~2-5K tokens.skipWhenBusy: cuando es true, las ejecuciones de Heartbeat se posponen si ese agente tiene ocupados otros canales: el trabajo de sus propios subagentes vinculados a claves de sesión o de comandos anidados. Los canales de Cron siempre posponen los Heartbeats, incluso sin esta opción.- Por agente: establezca
agents.entries.*.heartbeat. Cuando algún agente defineheartbeat, solo esos agentes ejecutan Heartbeats. - Los Heartbeats ejecutan turnos completos del agente: los intervalos más cortos consumen más tokens.
agents.defaults.compaction
{ agents: { defaults: { compaction: { mode: "safeguard", // default | safeguard provider: "my-provider", // id of a registered compaction provider plugin (optional) thinkingLevel: "low", // optional compaction-only thinking override timeoutSeconds: 180, keepRecentTokens: 50000, recentTurnsPreserve: 3, identifierPolicy: "strict", // strict | off qualityGuard: { enabled: true, maxRetries: 1 }, midTurnPrecheck: { enabled: false }, // optional tool-loop pressure check postIndexSync: "async", // off | async | await postCompactionSections: ["Session Startup", "Red Lines"], 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, // notices when compaction starts/completes and on memory-flush degradation (default: false) memoryFlush: { enabled: true, model: "ollama/qwen3:8b", // optional memory-flush-only model override softThresholdTokens: 6000, forceFlushTranscriptBytes: "2mb", }, }, }, },}mode:defaultosafeguard(resumen por fragmentos para historiales largos). Consulte Compaction.provider: id de un plugin de proveedor de Compaction registrado. Cuando se establece, se llama asummarize()del proveedor en lugar de usar el resumen integrado mediante LLM. Si falla, se recurre al mecanismo integrado. Establecer un proveedor fuerzamode: "safeguard". Consulte Compaction.thinkingLevel: nivel de razonamiento opcional utilizado únicamente para los resúmenes de Compaction integrados de OpenClaw (off,minimal,low,medium,high,xhigh,adaptive,maxoultra). Sustituye el nivel de razonamiento actual de la sesión y se limita al modelo o entorno de ejecución de Compaction seleccionado. Déjelo sin establecer para heredar el nivel de la sesión. La Compaction nativa del servidor de aplicaciones Codex ignora este ajuste porque la solicitud nativa de compactación no admite una sustitución del razonamiento por operación; OpenClaw registra una advertencia cuando está configurado.timeoutSeconds: máximo de segundos permitidos para una sola operación de Compaction antes de que OpenClaw la cancele. Valor predeterminado:180.keepRecentTokens: presupuesto del punto de corte del agente para conservar literalmente la parte final más reciente de la transcripción. La operación manual/compactlo respeta cuando se establece explícitamente; de lo contrario, la Compaction manual constituye un punto de control estricto.recentTurnsPreserve: número de turnos más recientes del usuario y el asistente que se conservan literalmente fuera del resumen de protección. Valor predeterminado:3.identifierPolicy:strict(predeterminado) ooff.strictantepone directrices integradas para conservar identificadores opacos durante el resumen de Compaction.qualityGuard: comprobaciones con reintento cuando la salida de los resúmenes de protección tiene un formato incorrecto. Están activadas de forma predeterminada en el modo de protección; establezcaenabled: falsepara omitir la auditoría.midTurnPrecheck: comprobación opcional de presión en el bucle de herramientas. Cuando esenabled: true, OpenClaw comprueba la presión del contexto después de añadir los resultados de las herramientas y antes de la siguiente llamada al modelo. Si el contexto ya no cabe, cancela el intento actual antes de enviar el prompt y reutiliza la ruta de recuperación de la comprobación previa existente para truncar los resultados de las herramientas o compactar y volver a intentarlo. Funciona con los modos de Compactiondefaultysafeguard. Valor predeterminado: desactivada.postIndexSync: modo de reindexación de la memoria de sesión posterior a la Compaction. Valor predeterminado:"async". Use"await"para obtener la máxima actualización,"async"para reducir la latencia de Compaction o"off"únicamente cuando la sincronización de la memoria de sesión se gestione en otro lugar.postCompactionSections: nombres opcionales de secciones H2/H3 de AGENTS.md que se volverán a inyectar después de la Compaction. Déjelo sin establecer o use[]para desactivarlo.model:provider/model-idopcional o alias simple deagents.defaults.modelsexclusivamente para el resumen de Compaction. Los alias simples se resuelven antes del envío; los identificadores literales de modelos configurados mantienen la precedencia en caso de colisión. Use esta opción cuando la sesión principal deba mantener un modelo, pero los resúmenes de Compaction deban ejecutarse en otro; cuando no se establece, la Compaction utiliza el modelo principal de la sesión.truncateAfterCompaction: rota la transcripción de la sesión activa después de la Compaction para que los turnos futuros carguen únicamente el resumen y la parte final sin resumir, mientras la transcripción completa anterior permanece archivada. Evita el crecimiento ilimitado de la transcripción activa en sesiones de larga duración. Valor predeterminado:false.maxActiveTranscriptBytes: umbral opcional de bytes (numbero cadenas como"20mb") que activa la Compaction local normal antes de una ejecución cuando el historial de la transcripción supera el umbral. RequieretruncateAfterCompactionpara que una Compaction correcta pueda rotar a una transcripción sucesora más pequeña. Se desactiva cuando no se establece o es0.notifyUser: cuando estrue, envía al usuario avisos breves de mantenimiento del contexto: cuando la Compaction comienza y finaliza (por ejemplo, «Compactando el contexto...» y «Compaction completada»), y cuando se agota un vaciado de memoria anterior a la Compaction, por lo que la respuesta continúa en un estado degradado (por ejemplo, «El mantenimiento de la memoria ha fallado temporalmente; se continúa con la respuesta»). Está desactivado de forma predeterminada para mantener estos avisos en silencio.memoryFlush: turno agéntico silencioso antes de la Compaction automática para almacenar recuerdos duraderos. Establezcamodelen un proveedor/modelo exacto, comoollama/qwen3:8b, cuando este turno de mantenimiento deba permanecer en un modelo local; la sustitución no hereda la cadena de alternativas de la sesión activa.forceFlushTranscriptBytesfuerza el vaciado cuando el tamaño de la transcripción alcanza el umbral, aunque los contadores de tokens estén desactualizados. Se omite cuando el espacio de trabajo es de solo lectura.
Las instrucciones personalizadas de Compaction son propiedad del código. Implemente un plugin de proveedor
de Compaction con summarize() para crear resúmenes personalizados y use
before_prompt_build cuando sea necesario inyectar el contexto posterior a la Compaction en prompts
posteriores del modelo. Doctor elimina los campos de instrucciones retirados y remite a estos
puntos de integración.
agents.defaults.contextPruning
Elimina los resultados antiguos de herramientas del contexto en memoria antes de enviarlo al LLM. No modifica el historial de la sesión en el disco. Está desactivado de forma predeterminada; establezca mode: "cache-ttl" para activarlo.
{ agents: { defaults: { contextPruning: { mode: "cache-ttl", // desactivado (predeterminado) | cache-ttl }, }, },}Comportamiento del modo cache-ttl
mode: "cache-ttl"activa las pasadas de poda.- La poda primero recorta de forma moderada los resultados de herramientas demasiado grandes y, después, elimina por completo los resultados antiguos de herramientas si es necesario.
El recorte moderado conserva el principio y el final e inserta ... en el medio.
La eliminación completa sustituye todo el resultado de la herramienta por el marcador de posición.
Notas:
- Los bloques de imágenes nunca se recortan ni eliminan.
- Las proporciones se basan en caracteres (son aproximadas), no en recuentos exactos de tokens.
- Se conservan los mensajes más recientes del asistente.
Consulte Poda de sesiones para conocer los detalles del comportamiento.
Transmisión por bloques
{ 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 (predeterminado) | natural | custom (use minMs/maxMs) }, },}- Los canales distintos de Telegram requieren
*.streaming.block.enabled: trueexplícito para activar las respuestas por bloques. QQ Bot es la excepción: no tiene clavesstreaming.blocky transmite respuestas por bloques salvo quechannels.qqbot.streaming.modesea"off". - Sustituciones por canal:
channels.<channel>.streaming.block.coalesce(y variantes por cuenta). Discord, Google Chat, Mattermost, MS Teams, Signal y Slack usan de forma predeterminadaminChars: 1500/idleMs: 1000. blockStreamingChunk.breakPreference: límite de fragmento preferido ("paragraph" | "newline" | "sentence").humanDelay: pausa aleatoria entre respuestas por bloques. Valor predeterminado:off.natural= 800-2500ms.customutilizaminMs/maxMs(recurre al intervalo natural para cualquier límite que no se haya establecido). Sustitución por agente:agents.entries.*.humanDelay.
Consulte Transmisión para conocer los detalles del comportamiento y la fragmentación.
Indicadores de escritura
{ agents: { defaults: { typingMode: "instant", // never | instant | thinking | message typingIntervalSeconds: 6, }, },}- Valores predeterminados:
instantpara chats directos/menciones ymessagepara chats grupales sin menciones. - Valor predeterminado de
typingIntervalSeconds:6. - Sustituciones por agente:
agents.entries.*.typingModeyagents.entries.*.typingIntervalSeconds.
Consulte Indicadores de escritura.
agents.defaults.sandbox
Aislamiento opcional para el agente integrado. Consulte Aislamiento para ver la guía completa.
{ agents: { defaults: { sandbox: { mode: "non-main", // off (predeterminado) | non-main | all backend: "docker", // docker (predeterminado) | ssh | openshell scope: "agent", // session | agent (predeterminado) | shared workspaceAccess: "none", // none (predeterminado) | 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", // También se admiten SecretRefs / contenidos insertados: // 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"], }, }, },}Los valores predeterminados mostrados anteriormente (imagen off/docker/agent/none/bookworm-slim, red none, etc.) son los valores predeterminados reales de OpenClaw, no simples valores ilustrativos.
Detalles del aislamiento
Entorno de ejecución:
docker: entorno de ejecución local de Docker (predeterminado)ssh: entorno de ejecución remoto genérico basado en SSHopenshell: entorno de ejecución de OpenShell
Cuando se selecciona backend: "openshell", los ajustes específicos del entorno de ejecución se trasladan a
plugins.entries.openshell.config.
Configuración del entorno de ejecución SSH:
target: destino SSH con el formatouser@host[:port]command: comando del cliente SSH (valor predeterminado:ssh)workspaceRoot: raíz remota absoluta utilizada para los espacios de trabajo por ámbito (valor predeterminado:/tmp/openclaw-sandboxes)identityFile/certificateFile/knownHostsFile: archivos locales existentes que se pasan a OpenSSHidentityData/certificateData/knownHostsData: contenido en línea o SecretRefs que OpenClaw materializa en archivos temporales durante la ejecuciónstrictHostKeyChecking/updateHostKeys: opciones de la política de claves de host de OpenSSH (ambas tienen como valor predeterminadotrue)
Precedencia de autenticación SSH:
identityDatatiene precedencia sobreidentityFilecertificateDatatiene precedencia sobrecertificateFileknownHostsDatatiene precedencia sobreknownHostsFile- Los valores de
*Datarespaldados por SecretRef se resuelven a partir de la instantánea activa del entorno de ejecución de secretos antes de iniciar la sesión de entorno aislado
Comportamiento del backend SSH:
- inicializa el espacio de trabajo remoto una vez después de crearlo o volver a crearlo
- después mantiene como canónico el espacio de trabajo SSH remoto
- enruta
exec, las herramientas de archivos y las rutas multimedia mediante SSH - no sincroniza automáticamente los cambios remotos con el host
- no admite contenedores de navegador en entorno aislado
Acceso al espacio de trabajo:
none: espacio de trabajo del entorno aislado por ámbito en~/.openclaw/sandboxes(valor predeterminado)ro: espacio de trabajo del entorno aislado en/workspace, con el espacio de trabajo del agente montado como solo lectura en/agentrw: espacio de trabajo del agente montado con acceso de lectura y escritura en/workspace
Ámbito:
session: contenedor y espacio de trabajo por sesiónagent: un contenedor y espacio de trabajo por agente (valor predeterminado)shared: contenedor y espacio de trabajo compartidos (sin aislamiento entre sesiones)
Configuración del Plugin OpenShell:
{plugins: { entries: { openshell: { enabled: true, config: { mode: "mirror", // réplica (valor predeterminado) | remoto command: "openshell", from: "openclaw", remoteWorkspaceDir: "/sandbox", remoteAgentWorkspaceDir: "/agent", gateway: "lab", // opcional gatewayEndpoint: "https://lab.example", // opcional policy: "strict", // identificador opcional de la política de OpenShell providers: ["openai"], // opcional autoProviders: true, timeoutSeconds: 120, }, }, },},}Modo de OpenShell:
mirror: inicializa el entorno remoto desde el local antes de la ejecución y sincroniza los cambios de vuelta después; el espacio de trabajo local permanece como canónicoremote: inicializa el entorno remoto una vez al crear el entorno aislado y después mantiene como canónico el espacio de trabajo remoto
En el modo remote, las modificaciones locales del host realizadas fuera de OpenClaw no se sincronizan automáticamente con el entorno aislado después del paso de inicialización.
El transporte se realiza mediante SSH al entorno aislado de OpenShell, pero el Plugin gestiona el ciclo de vida del entorno aislado y la sincronización opcional de la réplica.
setupCommand se ejecuta una vez después de crear el contenedor (mediante sh -lc). Requiere salida de red, raíz con permisos de escritura y usuario raíz.
Los contenedores usan network: "none" de forma predeterminada; configúrelo como "bridge" (o como una red puente personalizada) si el agente necesita acceso saliente.
"host" está bloqueado. "container:<id>" está bloqueado de forma predeterminada, salvo que se configure explícitamente
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (medida de emergencia).
Los turnos del servidor de aplicaciones de Codex en un entorno aislado activo de OpenClaw utilizan esta misma configuración de salida para el acceso de red nativo de su modo de código.
Los archivos adjuntos entrantes se preparan en media/inbound/* dentro del espacio de trabajo activo.
docker.binds monta directorios adicionales del host; los enlaces globales y por agente se combinan.
Navegador en entorno aislado (sandbox.browser.enabled, valor predeterminado false): Chromium + CDP en un contenedor. La URL de noVNC se inserta en el prompt del sistema. No requiere browser.enabled en openclaw.json.
El acceso de observador de noVNC utiliza autenticación VNC de forma predeterminada y OpenClaw emite una URL con token de corta duración (en lugar de exponer la contraseña en la URL compartida).
allowHostControl: false(valor predeterminado) impide que las sesiones en entornos aislados accedan al navegador del host.networktiene como valor predeterminadoopenclaw-sandbox-browser(red puente dedicada). Configúrelo comobridgesolo cuando se desee explícitamente conectividad global mediante el puente."host"también está bloqueado aquí.cdpSourceRangerestringe opcionalmente la entrada de CDP en el perímetro del contenedor a un intervalo CIDR (por ejemplo,172.21.0.1/32).sandbox.browser.bindsmonta directorios adicionales del host únicamente en el contenedor del navegador en entorno aislado. Cuando se establece (incluido[]), reemplazadocker.bindspara el contenedor del navegador.- Chromium siempre se inicia con
--no-sandbox --disable-setuid-sandboxen el contenedor del navegador en entorno aislado (los contenedores no disponen de las primitivas del kernel que necesita el propio entorno aislado de Chrome); no existe ninguna opción de configuración para cambiarlo. - Los valores predeterminados de inicio se definen en
scripts/sandbox-browser-entrypoint.shy están optimizados para hosts de contenedores: --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-gpuy--disable-software-rasterizerestán habilitados de forma predeterminada y pueden deshabilitarse conOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0si el uso de WebGL/3D lo requiere.--disable-extensions(habilitado de forma predeterminada);OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0vuelve a habilitar las extensiones si el flujo de trabajo depende de ellas.--renderer-process-limit=2de forma predeterminada; se puede cambiar conOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; configure0para utilizar el límite de procesos predeterminado de Chromium.--headless=newsolo cuandoheadlessestá habilitado.- Los valores predeterminados corresponden a la base de la imagen del contenedor; utilice una imagen de navegador personalizada con un punto de entrada personalizado para cambiar los valores predeterminados del contenedor.
El aislamiento del navegador y sandbox.docker.binds solo están disponibles con Docker.
Compile las imágenes (desde un checkout del código fuente):
scripts/sandbox-setup.sh # imagen principal del entorno aisladoscripts/sandbox-browser-setup.sh # imagen opcional del navegadorPara instalaciones de npm sin un checkout del código fuente, consulte Entorno aislado § Imágenes y configuración para ver comandos docker build en línea.
agents.entries (anulaciones por agente)
Utilice agents.entries.*.tts para asignar a un agente su propio proveedor de TTS, voz, modelo,
estilo o modo de TTS automático. El bloque del agente se combina en profundidad sobre la configuración global
tts, por lo que las credenciales compartidas pueden permanecer en un solo lugar mientras cada
agente anula únicamente los campos de voz o proveedor que necesita. La anulación del agente activo
se aplica a las respuestas habladas automáticas, /tts audio, /tts status y
la herramienta de agente tts. Consulte Texto a voz
para ver ejemplos de proveedores y la precedencia.
{ agents: { list: [ { id: "main", default: true, name: "Main Agent", workspace: "~/.openclaw/workspace", agentDir: "~/.openclaw/agents/main/agent", model: "anthropic/claude-opus-4-6", // o { primary, fallbacks } utilityModel: "openai/gpt-5.4-mini", thinkingDefault: "high", // anulación del nivel de pensamiento por agente reasoningDefault: "on", // anulación de la visibilidad del razonamiento por agente fastModeDefault: false, // anulación del modo rápido por agente params: { cacheRetention: "none" }, // anula por clave los parámetros coincidentes de defaults.models tts: { providers: { elevenlabs: { speakerVoiceId: "EXAVITQu4vr4xnSDxMaL" }, }, }, skills: ["docs-search"], // reemplaza agents.defaults.skills cuando se establece identity: { name: "Samantha", theme: "perezoso servicial", emoji: "🦥", avatar: "avatars/samantha.png", }, groupChat: { mentionPatterns: ["@openclaw"] }, sandbox: { mode: "off" }, runtime: { type: "acp", acp: { agent: "codex", backend: "acpx", mode: "persistent", // persistente | ejecución única cwd: "/workspace/openclaw", }, }, subagents: { allowAgents: ["*"] }, tools: { profile: "coding", allow: ["browser"], deny: ["canvas"], elevated: { enabled: true }, }, }, ], },}id: id estable del agente (obligatorio).default: cuando se establecen varios, prevalece el primero (se registra una advertencia). Si no se establece ninguno, la primera entrada de la lista es la predeterminada.model: la forma de cadena establece un modelo principal estricto por agente sin reserva de modelo; la forma de objeto{ primary }también es estricta, salvo que se añadafallbacks. Use{ primary, fallbacks: [...] }para habilitar la reserva para ese agente, o{ primary, fallbacks: [] }para hacer explícito el comportamiento estricto. Los trabajos de Cron que solo sobrescribenprimarysiguen heredando las reservas predeterminadas, salvo que se establezcafallbacks: [].utilityModel: sobrescritura opcional por agente para tareas internas breves, como títulos generados de sesiones e hilos. Recurre aagents.defaults.utilityModely, después, al modelo pequeño predeterminado declarado por el proveedor efectivo de la sesión. Los títulos del panel vuelven a intentarlo una vez con el modelo normal efectivo de la sesión. Una cadena vacía omite la ruta de utilidad alternativa para este agente sin deshabilitar la generación de títulos del panel.params: parámetros de transmisión por agente combinados sobre la entrada del modelo seleccionado enagents.defaults.models. Use esta opción para sobrescrituras específicas del agente comocacheRetention,temperatureomaxTokenssin duplicar todo el catálogo de modelos.tts: sobrescrituras opcionales de texto a voz por agente. El bloque se combina de forma profunda sobretts, por lo que las credenciales compartidas del proveedor y la política de reserva deben mantenerse entts; establezca aquí únicamente valores específicos de la personalidad, como el proveedor, la voz, el modelo, el estilo o el modo automático.skills: lista de Skills permitidas opcional por agente. Si se omite, el agente heredaagents.defaults.skillscuando está establecido; una lista explícita sustituye los valores predeterminados en lugar de combinarlos, y[]significa que no hay Skills.thinkingDefault: nivel de razonamiento predeterminado opcional por agente (off | minimal | low | medium | high | xhigh | adaptive | max). Sobrescribeagents.defaults.thinkingDefaultpara este agente cuando no se establece ninguna sobrescritura por mensaje o sesión. El perfil de proveedor/modelo seleccionado determina qué valores son válidos; para Google Gemini,adaptivemantiene el razonamiento dinámico gestionado por el proveedor (thinkingLevelomitido en Gemini 3/3.1,thinkingBudget: -1en Gemini 2.5).reasoningDefault: visibilidad predeterminada opcional del razonamiento por agente (on | off | stream). Sobrescribeagents.defaults.reasoningDefaultpara este agente cuando no se establece ninguna sobrescritura del razonamiento por mensaje o sesión.fastModeDefault: valor predeterminado opcional por agente para el modo rápido ("auto" | true | false). Se aplica cuando no se establece ninguna sobrescritura del modo rápido por mensaje o sesión.models: sobrescrituras opcionales por agente del catálogo de modelos o del entorno de ejecución, indexadas por idsprovider/modelcompletos. Usemodels["provider/model"].agentRuntimepara las excepciones del entorno de ejecución por agente.runtime: descriptor opcional del entorno de ejecución por agente. Usetype: "acp"con los valores predeterminados deruntime.acp(agent,backend,mode,cwd) cuando el agente deba usar de forma predeterminada sesiones del arnés ACP.identity.avatar: ruta relativa al espacio de trabajo, URLhttp(s)o URIdata:.- Los archivos de imagen
identity.avatarlocales relativos al espacio de trabajo tienen un límite de 2 MB. Las URLhttp(s)y los URIdata:no se comprueban con respecto al límite de tamaño de los archivos locales. identityderiva los valores predeterminados:ackReactiondeemoji,mentionPatternsdename/emoji.subagents.allowAgents: lista de ids de agentes configurados permitidos para destinossessions_spawn.agentIdexplícitos (["*"]= cualquier destino configurado; valor predeterminado: solo el mismo agente). Incluya el id del solicitante cuando deban permitirse llamadasagentIddirigidas a sí mismo. Las entradas obsoletas cuya configuración de agente se haya eliminado son rechazadas porsessions_spawny se omiten deagents_list; ejecuteopenclaw doctor --fixpara eliminarlas, o añada una entradaagents.entries.*mínima si ese destino debe poder seguir generándose mientras hereda los valores predeterminados.- Protección de herencia del entorno aislado: si la sesión solicitante está aislada,
sessions_spawnrechaza los destinos que se ejecutarían sin aislamiento. subagents.requireAgentId: cuando es verdadero, bloquea las llamadassessions_spawnque omitenagentId(fuerza la selección explícita del perfil; valor predeterminado: falso).subagents.maxConcurrent: número máximo de ejecuciones simultáneas de agentes secundarios en toda la ejecución de subagentes. Valor predeterminado:8.subagents.maxChildrenPerAgent: número máximo de agentes secundarios activos que puede generar una sola sesión de agente. Valor predeterminado:5.subagents.maxSpawnDepth: profundidad máxima de anidamiento para la generación de subagentes (1-5). Valor predeterminado:1(sin anidamiento).subagents.archiveAfterMinutes: tiempo que debe transcurrir antes de archivar el estado de un subagente completado. Valor predeterminado:60.
Enrutamiento multiagente
Ejecute varios agentes aislados dentro de un Gateway. Consulte Multiagente.
{ 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" } }, ],}Campos de coincidencia de vinculaciones
type(opcional):routepara el enrutamiento normal (si falta el tipo, el valor predeterminado es route),acppara vinculaciones persistentes de conversaciones ACP.match.channel(obligatorio)match.accountId(opcional;*= cualquier cuenta; omitido = cuenta predeterminada)match.peer(opcional;{ kind: direct|group|channel, id })match.guildId/match.teamId(opcional; específico del canal)acp(opcional; solo paratype: "acp"):{ mode, label, cwd, backend }
Orden de coincidencia determinista:
match.peermatch.guildIdmatch.teamIdmatch.accountId(exacto, sin par/gremio/equipo)match.accountId: "*"(para todo el canal)- Agente predeterminado
Dentro de cada nivel, prevalece la primera entrada bindings coincidente.
Para las entradas type: "acp", OpenClaw resuelve por identidad exacta de la conversación (match.channel + cuenta + match.peer.id) y no usa el orden de niveles de vinculación de rutas anterior.
Perfiles de acceso por agente
Acceso completo (sin entorno aislado)
{agents: { list: [ { id: "personal", workspace: "~/.openclaw/workspace-personal", sandbox: { mode: "off" }, }, ],},}Herramientas de solo lectura + espacio de trabajo
{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"], }, }, ],},}Sin acceso al sistema de archivos (solo mensajería)
{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", ], }, }, ],},}Consulte Entorno aislado y herramientas multiagente para obtener detalles sobre la precedencia.
Sesión
{ 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 }, }, resetByChannel: { discord: { mode: "idle", idleMinutes: 30 }, }, resetTriggers: ["/new", "/reset"], store: "~/.openclaw/agents/{agentId}/sessions/sessions.json", maintenance: { mode: "enforce", // enforce (predeterminado) | warn pruneAfter: "30d", maxEntries: 500, resetArchiveRetention: "30d", // duración o false maxDiskBytes: "500mb", // límite estricto opcional highWaterBytes: "400mb", // objetivo de limpieza opcional }, threadBindings: { enabled: true, idleHours: 24, // desenfoque automático predeterminado por inactividad, en horas (`0` lo deshabilita) maxAgeHours: 0, // antigüedad máxima estricta predeterminada, en horas (`0` la deshabilita) }, mainKey: "main", // heredado (el entorno de ejecución siempre usa "main") sendPolicy: { rules: [{ action: "deny", match: { channel: "discord", chatType: "group" } }], default: "allow", }, },}Detalles de los campos de sesión
scope: estrategia base de agrupación de sesiones para contextos de chat grupal.per-sender(predeterminado): cada remitente obtiene una sesión aislada dentro del contexto de un canal.global: todos los participantes de un contexto de canal comparten una única sesión (úsese solo cuando se pretenda compartir el contexto).dmScope: cómo se agrupan los mensajes directos.main: todos los mensajes directos comparten la sesión principal.per-peer: aislamiento por id. de remitente entre canales.per-channel-peer: aislamiento por canal y remitente (recomendado para bandejas de entrada multiusuario).per-account-channel-peer: aislamiento por cuenta, canal y remitente (recomendado para varias cuentas).identityLinks: asigna ids. canónicos a pares con prefijo de proveedor para compartir sesiones entre canales. Los comandos de acoplamiento, como/dock_discord, usan la misma asignación para cambiar la ruta de respuesta de la sesión activa a otro par de canal vinculado; consulte Acoplamiento de canales.reset: política principal de restablecimiento.nonedesactiva el restablecimiento automático y es el valor predeterminado; Compaction limita el contexto activo en su lugar.dailyrestablece a lasatHourde la hora local;idlerestablece después deidleMinutes. Cuando ambos están configurados, prevalece el que venza primero./newy/resetpermanecen disponibles en todos los modos. La vigencia del restablecimiento diario usasessionStartedAtde la fila de sesión; la vigencia del restablecimiento por inactividad usalastInteractionAt. Las escrituras de eventos en segundo plano o del sistema, como Heartbeat, activaciones de Cron, notificaciones de ejecución y mantenimiento del Gateway, pueden actualizarupdatedAt, pero no mantienen vigentes las sesiones diarias o por inactividad.resetByType: anulaciones por tipo (direct,group,thread). Doctor migra las entradas heredadas dedmadirect; el esquema rechazadm.resetByChannel: anulaciones de restablecimiento por canal, indexadas por el id. del proveedor/canal. Cuando el canal de la sesión tiene una entrada coincidente, esta prevalece por completo sobreresetByType/resetpara esa sesión. Úsese solo cuando un canal necesite un comportamiento de restablecimiento distinto de la política por tipo.mainKey: campo heredado. El entorno de ejecución siempre usa"main"para el grupo principal de chats directos.sendPolicy: busca coincidencias porchannel,chatType(direct|group|channel, con el alias heredadodm),keyPrefixorawKeyPrefix. La primera denegación prevalece.maintenance: controles de limpieza y retención del almacén de sesiones.mode:enforceaplica la limpieza y es el valor predeterminado;warnsolo emite advertencias.pruneAfter: límite de antigüedad para entradas obsoletas (valor predeterminado:30d).maxEntries: número máximo de entradas de sesión de SQLite (valor predeterminado:500). Las escrituras del entorno de ejecución ejecutan la limpieza por lotes con un pequeño margen por encima del límite máximo para topes de tamaño de producción;openclaw sessions cleanup --enforceaplica el tope inmediatamente.- Las sesiones efímeras de sondeo de ejecuciones de modelos del Gateway usan una retención fija de
24h, pero la limpieza depende de la presión: solo elimina las filas obsoletas de sondeos estrictos de ejecuciones de modelos cuando se alcanza la presión de mantenimiento o del límite de entradas de sesión. Solo son aptas las claves de sondeo explícitas y estrictas que coincidan conagent:*:explicit:model-run-<uuid>; las sesiones normales directas, grupales, de hilos, Cron, enlaces, Heartbeat, ACP y subagentes no heredan esta retención de 24h. Cuando se ejecuta la limpieza de ejecuciones de modelos, se realiza antes que la limpieza general de entradas obsoletas depruneAftery el límite demaxEntries. - El esquema actual rechaza el campo heredado
rotateBytes;openclaw doctor --fixlo elimina de las configuraciones antiguas. resetArchiveRetention: retención basada en la antigüedad para archivos de transcripciones restablecidas o eliminadas. De manera predeterminada, los archivos permanecen hasta que se expulsan por el presupuesto de disco; establezca una duración para habilitar la eliminación según el tiempo transcurrido, ofalsepara desactivarla explícitamente.maxDiskBytes: presupuesto de disco opcional para el directorio de sesiones. En el modowarnregistra advertencias; en el modoenforceelimina primero los artefactos y las sesiones más antiguos.highWaterBytes: objetivo opcional después de la limpieza del presupuesto. El valor predeterminado es80%demaxDiskBytes.threadBindings: valores predeterminados globales para las funciones de sesiones vinculadas a hilos.enabled: interruptor principal para las vinculaciones de hilos de canales compatiblesidleHours: pérdida automática de foco por inactividad predeterminada en horas (0la desactiva; los proveedores pueden anularla)maxAgeHours: antigüedad máxima absoluta predeterminada en horas (0la desactiva; los proveedores pueden anularla)spawnSessions: control predeterminado para crear sesiones de trabajo vinculadas a hilos desdesessions_spawny generaciones de hilos ACP. El valor predeterminado estruecuando las vinculaciones de hilos están habilitadas; los proveedores y las cuentas pueden anularlo.defaultSpawnContext: contexto nativo predeterminado de subagente para generaciones vinculadas a hilos ("fork"o"isolated"). El valor predeterminado es"fork".
Mensajes
{ messages: { responsePrefix: "🦞", // o "auto" ackReaction: "👀", ackReactionScope: "group-mentions", // group-mentions | group-all | direct | all | off | none queue: { mode: "steer", // steer (predeterminado) | followup | collect | interrupt debounceMs: 500, cap: 20, drop: "summarize", // old | new | summarize (predeterminado) byChannel: { whatsapp: "followup", telegram: "followup", }, }, inbound: { debounceMs: 2000, // 0 lo desactiva byChannel: { whatsapp: 5000, slack: 1500, }, }, },}Prefijo de respuesta
Anulaciones por canal/cuenta: channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Resolución (prevalece la más específica): cuenta → canal → global. "" desactiva y detiene la cascada. "auto" deriva [{identity.name}].
Variables de plantilla:
| Variable | Descripción | Ejemplo |
|---|---|---|
{model} |
Nombre corto del modelo | claude-opus-4-6 |
{modelFull} |
Identificador completo del modelo | anthropic/claude-opus-4-6 |
{provider} |
Nombre del proveedor | anthropic |
{thinkingLevel} |
Nivel de razonamiento actual | high, low, off |
{identity.name} |
Nombre de identidad del agente | (igual que "auto") |
Las variables no distinguen entre mayúsculas y minúsculas. {think} es un alias de {thinkingLevel}.
Reacción de confirmación
- El valor predeterminado es
identity.emojidel agente activo; en caso contrario,"👀". Establezca""para desactivarla. - Anulaciones por canal:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Orden de resolución: cuenta → canal →
messages.ackReaction→ alternativa de identidad. - Ámbito:
group-mentions(predeterminado),group-all,direct,allooff/none(desactiva por completo las reacciones de confirmación). messages.statusReactions.enabled: habilita las reacciones de estado del ciclo de vida en Slack, Discord, Signal, Telegram y WhatsApp. En Discord, si no se establece, las reacciones de estado permanecen habilitadas cuando las reacciones de confirmación están activas. En Slack, Signal, Telegram y WhatsApp, establézcalo explícitamente entruepara habilitar las reacciones de estado del ciclo de vida. De manera predeterminada, Slack usa el estado nativo de los hilos del asistente y mensajes de carga rotativos para indicar el progreso, mientras mantiene estática la reacción de confirmación configurada.
Cola
mode: estrategia de cola para los mensajes entrantes que llegan mientras hay una ejecución de sesión activa. Valor predeterminado:"steer".steer: inyecta la nueva solicitud en la ejecución activa.followup: ejecuta la nueva solicitud después de que finalice la ejecución activa.collect: agrupa los mensajes compatibles y los ejecuta juntos más adelante.interrupt: cancela la ejecución activa antes de iniciar la solicitud más reciente.
debounceMs: demora antes de enviar un mensaje en cola o redirigido. Valor predeterminado:500.cap: cantidad máxima de mensajes en cola antes de aplicar la política de descarte. Valor predeterminado:20.drop: estrategia cuando se supera el límite."summarize"(predeterminado) descarta las entradas más antiguas, pero conserva resúmenes compactos;"old"descarta las más antiguas sin resúmenes;"new"rechaza el elemento más reciente.byChannel: anulaciones demodepor canal, indexadas por el id. del proveedor.debounceMsByChannel: anulaciones dedebounceMspor canal, indexadas por el id. del proveedor.
Antirrebote de entrada
Agrupa los mensajes rápidos que solo contienen texto y proceden del mismo remitente en un único turno del agente. Los archivos multimedia y adjuntos fuerzan el envío inmediato. Los comandos de control omiten el antirrebote. Valor predeterminado de debounceMs: 2000.
Otras claves de mensajes
channels.whatsapp.responsePrefix: prefijo de las respuestas salientes de WhatsApp. Doctor mueve aquí el valor de entrada retiradomessagePrefixsolo cuando este valor canónico no está establecido.messages.visibleReplies: controla las respuestas de origen visibles en conversaciones directas, grupales y de canal ("message_tool"requieremessage(action=send)para generar una salida visible;"automatic"publica respuestas normales como antes).messages.usageTemplate/messages.responseUsage: plantilla personalizada de pie de página de/usagey modo predeterminado de uso por respuesta (off | tokens | full, además del alias heredadoonparatokens).messages.groupChat.mentionPatterns/historyLimit: activadores de menciones en mensajes grupales y dimensionamiento de la ventana del historial.messages.suppressToolErrors: cuando estrue, suprime las advertencias de errores de herramientas de⚠️que se muestran al usuario (el agente sigue viendo los errores en el contexto y puede volver a intentarlo). Valor predeterminado:false.
TTS (texto a voz)
{ tts: { auto: "off", // off (predeterminado) | always | inbound | tagged mode: "final", // final | all provider: "elevenlabs", summaryModel: "openai/gpt-5.4-mini", modelOverrides: { enabled: true }, maxTextLength: 4000, timeoutMs: 30000, providers: { elevenlabs: { apiKey: "example-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: "example-openai-api-key", baseUrl: "https://api.openai.com/v1", model: "gpt-4o-mini-tts", speakerVoice: "coral", }, }, },}La ruta de preferencias globales corresponde al estado de la máquina (valor predeterminado:
~/.openclaw/settings/tts.json; puede anularse con OPENCLAW_TTS_PREFS). Las configuraciones
avanzadas con varios agentes pueden establecer agents.entries.<id>.tts.prefsPath para usar almacenes
de preferencias distintos por agente.
autocontrola el modo TTS automático predeterminado:off,always,inboundotagged./tts on|offpuede anular las preferencias locales y/tts statusmuestra el estado efectivo.summaryModelanulaagents.defaults.model.primarypara el resumen automático.modelOverridesestá habilitado de forma predeterminada (enabled !== false);modelOverrides.allowProviderrequiere activación.- Las claves de API recurren a
ELEVENLABS_API_KEY/XI_API_KEYyOPENAI_API_KEYcomo alternativa. - Los proveedores de voz incluidos pertenecen a los plugins. Si se establece
plugins.allow, incluya cada plugin de proveedor de TTS que desee utilizar, por ejemplo,microsoftpara Edge TTS. El identificador de proveedor heredadoedgese acepta como alias demicrosoft. providers.openai.baseUrlanula el endpoint de TTS de OpenAI. El orden de resolución es la configuración, despuésOPENAI_TTS_BASE_URLy, por último,https://api.openai.com/v1.- Cuando
providers.openai.baseUrlapunta a un endpoint que no es de OpenAI, OpenClaw lo trata como un servidor de TTS compatible con OpenAI y flexibiliza la validación del modelo y la voz.
Conversación
Valores predeterminados del modo Conversación (macOS/iOS/Android y la interfaz de control del navegador).
{ 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: "Speak warmly and keep answers brief.", 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.providerdebe coincidir con una clave detalk.providerscuando se configuran varios proveedores de Conversación.- Las claves planas heredadas de Conversación (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) son solo para compatibilidad. Ejecuteopenclaw doctor --fixpara reescribir la configuración persistente entalk.providers.<provider>. - Los identificadores de voz recurren a
ELEVENLABS_VOICE_IDoSAG_VOICE_IDcomo alternativa (comportamiento del cliente de Conversación de macOS). providers.*.apiKeyacepta cadenas de texto sin formato u objetos SecretRef.- La alternativa
ELEVENLABS_API_KEYsolo se aplica cuando no hay ninguna clave de API de Conversación configurada. providers.*.voiceAliasespermite que las directivas de Conversación utilicen nombres descriptivos.providers.mlx.modelIdselecciona el repositorio de Hugging Face utilizado por el asistente local de MLX de macOS. Si se omite, macOS utilizamlx-community/Soprano-80M-bf16.- La reproducción de MLX en macOS se ejecuta mediante el asistente incluido
openclaw-mlx-ttscuando está presente, o mediante un ejecutable enPATH;OPENCLAW_MLX_TTS_BINanula la ruta del asistente para el desarrollo. consultThinkingLevelcontrola el nivel de razonamiento de la ejecución completa del agente de OpenClaw que sustenta las llamadasopenclaw_agent_consulten tiempo real de Conversación de la interfaz de control. Déjelo sin establecer para conservar el comportamiento normal de la sesión y el modelo.consultFastModeestablece una anulación puntual del modo rápido para las consultas en tiempo real de Conversación de la interfaz de control sin cambiar la configuración normal del modo rápido de la sesión.speechLocaleestablece el identificador de configuración regional BCP 47 utilizado por el reconocimiento de voz de Conversación en Android, iOS y macOS. Android también utiliza su componente de idioma para orientar la transcripción de entrada en tiempo real. Déjelo sin establecer para utilizar el valor predeterminado del dispositivo.silenceTimeoutMscontrola cuánto tiempo espera el modo Conversación después de que el usuario guarda silencio antes de enviar la transcripción. Si no se establece, se conserva el intervalo de pausa predeterminado de la plataforma (700 ms on macOS and Android, 900 ms on iOS).realtime.instructionsañade instrucciones del sistema destinadas al proveedor al prompt integrado en tiempo real de OpenClaw, de modo que se pueda configurar el estilo de voz sin perder las indicaciones predeterminadas deopenclaw_agent_consult.realtime.vadThresholdestablece el umbral de actividad de voz del proveedor entre0(máxima sensibilidad) y1(mínima sensibilidad). Si no se establece, se conserva el valor predeterminado del proveedor.realtime.silenceDurationMsestablece el intervalo de silencio expresado como un número entero positivo antes de que el proveedor confirme un turno del usuario en tiempo real. Si no se establece, se conserva el valor predeterminado del proveedor.realtime.prefixPaddingMsestablece la cantidad de audio, expresada como un número entero no negativo, que se conserva antes del inicio del habla detectada. Si no se establece, se conserva el valor predeterminado del proveedor.realtime.reasoningEffortestablece el nivel de razonamiento específico del proveedor para las sesiones en tiempo real. Si no se establece, se conserva el valor predeterminado del proveedor.realtime.consultRouting:"provider-direct"(predeterminado) conserva las respuestas directas del proveedor cuando el proveedor en tiempo real genera una transcripción final del usuario sinopenclaw_agent_consult. En su lugar,"force-agent-consult"enruta la solicitud finalizada a través de OpenClaw.
Contenido relacionado
- Referencia de configuración — todas las demás claves de configuración
- Configuración — tareas comunes y configuración rápida
- Ejemplos de configuración