Fundamentals
Prompt del sistema
OpenClaw construye un prompt de sistema personalizado para cada ejecución de agente. El prompt es propiedad de OpenClaw y no usa un prompt predeterminado en tiempo de ejecución.
OpenClaw ensambla el prompt y lo inyecta en cada ejecución de agente.
El ensamblaje del prompt tiene tres capas:
buildAgentSystemPromptrenderiza el prompt a partir de entradas explícitas. Debe permanecer como un renderizador puro y no debe leer la configuración global directamente.resolveAgentSystemPromptConfigresuelve controles del prompt respaldados por configuración, como la visualización del propietario, sugerencias de TTS, alias de modelos, modo de cita de memoria y modo de delegación a subagentes para un agente específico.- Los adaptadores de tiempo de ejecución (embebidos, CLI, vistas previas de comando/exportación, Compaction) recopilan hechos en vivo, como herramientas, estado del sandbox, capacidades del canal, archivos de contexto y contribuciones de prompt del proveedor, y luego llaman a la fachada de prompt configurada.
Esto mantiene las superficies de prompt exportadas/de depuración alineadas con las ejecuciones en vivo sin convertir cada detalle específico del tiempo de ejecución en un único constructor monolítico.
Los Plugins de proveedor pueden aportar orientación de prompt consciente de la caché sin reemplazar el prompt completo propiedad de OpenClaw. El tiempo de ejecución del proveedor puede:
- reemplazar un pequeño conjunto de secciones centrales con nombre (
interaction_style,tool_call_style,execution_bias) - inyectar un prefijo estable por encima del límite de caché del prompt
- inyectar un sufijo dinámico por debajo del límite de caché del prompt
Usa contribuciones propiedad del proveedor para ajustes específicos de familias de modelos. Mantén la
mutación de prompt heredada before_prompt_build para compatibilidad o cambios de prompt verdaderamente globales,
no para el comportamiento normal del proveedor.
La superposición de la familia OpenAI GPT-5 mantiene pequeña la regla central de ejecución y añade orientación específica del modelo para fijación de persona, salida concisa, disciplina de herramientas, búsqueda paralela, cobertura de entregables, verificación, contexto faltante e higiene de herramientas de terminal.
Estructura
El prompt es intencionadamente compacto y usa secciones fijas:
- Herramientas: recordatorio estructurado de fuente de verdad de herramientas más orientación de uso de herramientas en tiempo de ejecución.
- Sesgo de ejecución: orientación compacta de seguimiento: actuar dentro del turno ante solicitudes accionables, continuar hasta terminar o quedar bloqueado, recuperarse de resultados débiles de herramientas, comprobar en vivo el estado mutable y verificar antes de finalizar.
- Seguridad: breve recordatorio de salvaguardas para evitar comportamientos de búsqueda de poder o eludir supervisión.
- Skills (cuando estén disponibles): indica al modelo cómo cargar instrucciones de Skills bajo demanda.
- Control de OpenClaw: indica al modelo que prefiera la herramienta
gatewaypara trabajo de configuración/reinicio y que evite inventar comandos de CLI. - Autoactualización de OpenClaw: cómo inspeccionar la configuración de forma segura con
config.schema.lookup, parchear la configuración conconfig.patch, reemplazar la configuración completa conconfig.applyy ejecutarupdate.runsolo a petición explícita del usuario. La herramientagatewayorientada al agente también se niega a reescribirtools.exec.ask/tools.exec.security, incluidos los alias heredadostools.bash.*que se normalizan a esas rutas exec protegidas. - Espacio de trabajo: directorio de trabajo (
agents.defaults.workspace). - Documentación: ruta local a la documentación/fuente de OpenClaw y cuándo leerla.
- Archivos del espacio de trabajo (inyectados): indica que los archivos de arranque se incluyen abajo.
- Sandbox (cuando esté habilitado): indica el tiempo de ejecución en sandbox, las rutas de sandbox y si exec elevado está disponible.
- Fecha y hora actuales: solo zona horaria (estable en caché; el reloj en vivo viene de
session_status). - Directivas de salida del asistente: sintaxis compacta de adjuntos, notas de voz y etiquetas de respuesta.
- Heartbeats: prompt de Heartbeat y comportamiento de confirmación, cuando los Heartbeats están habilitados para el agente predeterminado.
- Tiempo de ejecución: host, SO, Node, modelo, raíz del repositorio (cuando se detecte), nivel de pensamiento (una línea).
- Razonamiento: nivel de visibilidad actual + sugerencia del conmutador /reasoning.
OpenClaw mantiene contenido estable grande, incluido Contexto del proyecto, por encima del límite interno de caché del prompt. Las secciones volátiles de canal/sesión, como orientación de inserción de la UI de Control, Mensajería, Voz, Contexto de chat grupal, Reacciones, Heartbeats y Tiempo de ejecución, se añaden por debajo de ese límite para que los backends locales con cachés de prefijo puedan reutilizar el prefijo estable del espacio de trabajo entre turnos del canal. Las descripciones de herramientas también deben evitar incrustar nombres de canales actuales cuando el esquema aceptado ya contiene ese detalle de tiempo de ejecución.
La sección Herramientas también incluye orientación de tiempo de ejecución para trabajo de larga duración:
- usar Cron para seguimiento futuro (
check back later, recordatorios, trabajo recurrente) en lugar de bucles de suspensión conexec, trucos de demorayieldMso sondeo repetido deprocess - usar
exec/processsolo para comandos que empiezan ahora y continúan ejecutándose en segundo plano - cuando la activación automática al completarse está habilitada, iniciar el comando una vez y confiar en la ruta de activación basada en push cuando emita salida o falle
- usar
processpara registros, estado, entrada o intervención cuando necesites inspeccionar un comando en ejecución - si la tarea es más grande, preferir
sessions_spawn; la finalización del subagente es basada en push y se autoanuncia al solicitante - no sondear
subagents list/sessions_listen bucle solo para esperar la finalización
agents.defaults.subagents.delegationMode puede reforzar esta orientación. El modo
predeterminado suggest mantiene el empujón base. prefer añade una sección dedicada
Delegación a subagentes que indica al agente principal que actúe como un coordinador
responsivo y envíe cualquier cosa más compleja que una respuesta directa mediante
sessions_spawn. Esto es solo de prompt; la política de herramientas sigue controlando si
sessions_spawn está disponible.
Cuando la herramienta experimental update_plan está habilitada, Herramientas también indica al
modelo que la use solo para trabajo no trivial de varios pasos, mantenga exactamente un paso
in_progress y evite repetir todo el plan después de cada actualización.
Las salvaguardas de seguridad en el prompt de sistema son orientativas. Guían el comportamiento del modelo, pero no aplican políticas. Usa la política de herramientas, aprobaciones de exec, sandboxing y listas de permitidos de canales para la aplicación estricta; los operadores pueden deshabilitarlas por diseño.
En canales con tarjetas/botones de aprobación nativos, el prompt de tiempo de ejecución ahora indica al
agente que primero confíe en esa UI de aprobación nativa. Solo debe incluir un comando manual
/approve cuando el resultado de la herramienta diga que las aprobaciones por chat no están disponibles o que
la aprobación manual es la única ruta.
Modos de prompt
OpenClaw puede renderizar prompts de sistema más pequeños para subagentes. El tiempo de ejecución establece un
promptMode para cada ejecución (no es una configuración orientada al usuario):
full(predeterminado): incluye todas las secciones anteriores.minimal: usado para subagentes; omite Recuperación de memoria, Autoactualización de OpenClaw, Alias de modelos, Identidad de usuario, Directivas de salida del asistente, Mensajería, Respuestas silenciosas y Heartbeats. Herramientas, Seguridad, Skills cuando se suministran, Espacio de trabajo, Sandbox, Fecha y hora actuales (cuando se conocen), Tiempo de ejecución y contexto inyectado siguen disponibles.none: devuelve solo la línea base de identidad.
Cuando promptMode=minimal, los prompts inyectados extra se etiquetan como Contexto de subagente
en lugar de Contexto de chat grupal.
Para ejecuciones de respuesta automática de canal, OpenClaw omite la sección genérica Respuestas silenciosas
cuando el contexto directo, grupal o solo de herramienta de mensajes posee el contrato de respuesta visible.
Solo el antiguo modo automático de grupo/canal debe mostrar NO_REPLY; los chats directos
y las respuestas solo de herramienta de mensajes no reciben orientación de token silencioso.
Snapshots de prompt
OpenClaw mantiene snapshots de prompt confirmados para la ruta feliz del tiempo de ejecución de Codex bajo
test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/. Renderizan
parámetros seleccionados de hilo/turno del servidor de la app más una pila reconstruida de capas de prompt
destinadas al modelo para turnos directos de Telegram, de grupo de Discord y de Heartbeat. Esa pila
incluye un fixture de prompt de modelo Codex gpt-5.5 fijado, generado a partir de la forma
del catálogo/caché de modelos de Codex, el texto de desarrollador de permisos de ruta feliz de Codex,
instrucciones de desarrollador de OpenClaw, instrucciones de modo de colaboración con alcance de turno
cuando OpenClaw las proporciona, entrada del turno del usuario y referencias a las especificaciones dinámicas de herramientas.
Actualiza el fixture de prompt de modelo Codex fijado con
pnpm prompt:snapshots:sync-codex-model. De forma predeterminada, el script busca
la caché de tiempo de ejecución de Codex en $CODEX_HOME/models_cache.json, luego en
~/.codex/models_cache.json, y solo después recurre a la convención de checkout de Codex del mantenedor
en ~/code/codex/codex-rs/models-manager/models.json. Si
ninguna de esas fuentes existe, el comando sale sin cambiar el fixture confirmado.
Pasa --catalog <path> para actualizar desde un archivo models_cache.json
o models.json específico.
Estos snapshots siguen sin ser una captura sin procesar byte por byte de una solicitud OpenAI. Codex
puede añadir contexto de espacio de trabajo propiedad del tiempo de ejecución, como AGENTS.md, contexto de
entorno, memorias, instrucciones de app/Plugin e instrucciones integradas del modo de colaboración
Default dentro del tiempo de ejecución de Codex después de que OpenClaw envíe parámetros de hilo y turno.
Regénéralos con pnpm prompt:snapshots:gen y verifica desviaciones con
pnpm prompt:snapshots:check. CI ejecuta la comprobación de desviación en el shard de límite
adicional para que los cambios de prompt y las actualizaciones de snapshots permanezcan adjuntos al mismo
PR.
Inyección de arranque del espacio de trabajo
Los archivos de arranque se resuelven desde el espacio de trabajo activo y luego se encaminan a la superficie de prompt que coincide con su ciclo de vida:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(solo en espacios de trabajo recién creados)MEMORY.mdcuando esté presente
En el arnés nativo de Codex, OpenClaw evita repetir archivos estables del espacio de trabajo
en cada turno del usuario. Codex carga AGENTS.md mediante su propio descubrimiento de
documentación del proyecto. SOUL.md, IDENTITY.md, TOOLS.md y USER.md se reenvían como
instrucciones de desarrollador de Codex. La lista compacta de Skills de OpenClaw también se reenvía
como instrucciones de desarrollador de colaboración con alcance de turno. El contenido de HEARTBEAT.md
no se inyecta; los turnos de Heartbeat reciben una nota de modo de colaboración que apunta al archivo
cuando existe y no está vacío. El contenido de MEMORY.md del espacio de trabajo configurado del agente
no se pega en cada turno nativo de Codex; cuando las herramientas de memoria están
disponibles para ese espacio de trabajo, los turnos de Codex reciben una pequeña nota de memoria de espacio de trabajo en
instrucciones de desarrollador de colaboración con alcance de turno y deben usar memory_search
o memory_get cuando la memoria duradera sea relevante. Si las herramientas están deshabilitadas, la búsqueda de memoria
no está disponible o el espacio de trabajo activo difiere del espacio de trabajo de memoria del agente,
MEMORY.md recurre a la ruta normal de contexto de turno acotado. El contenido activo de
BOOTSTRAP.md mantiene por ahora el rol normal de contexto de turno.
En arneses que no son Codex, los archivos de arranque siguen componiéndose en el
prompt de OpenClaw según sus compuertas existentes. HEARTBEAT.md se omite en
ejecuciones normales cuando los Heartbeats están deshabilitados para el agente predeterminado o
agents.defaults.heartbeat.includeSystemPromptSection es false. Mantén los archivos inyectados
concisos, especialmente MEMORY.md que no sea de Codex. MEMORY.md está pensado para seguir siendo
un resumen curado de largo plazo; las notas diarias detalladas pertenecen a memory/*.md, donde
memory_search y memory_get pueden recuperarlas bajo demanda. Los archivos
MEMORY.md no Codex sobredimensionados aumentan el uso de prompt y pueden inyectarse parcialmente
debido a los límites de archivos de arranque indicados abajo.
Los archivos grandes se truncan con un marcador. El tamaño máximo por archivo se controla mediante
agents.defaults.bootstrapMaxChars (valor predeterminado: 20000). El contenido total de bootstrap
inyectado en todos los archivos está limitado por agents.defaults.bootstrapTotalMaxChars
(valor predeterminado: 60000). Los archivos faltantes inyectan un marcador breve de archivo faltante. Cuando se produce
truncamiento, OpenClaw puede inyectar un aviso conciso de advertencia en el prompt del sistema; controla esto con
agents.defaults.bootstrapPromptTruncationWarning (off, once, always;
valor predeterminado: always). Los conteos detallados en bruto/inyectados permanecen en diagnósticos como
/context, /status, doctor y los registros.
Para los archivos de memoria, el truncamiento no implica pérdida de datos: el archivo permanece intacto en el disco.
En Codex nativo, MEMORY.md se lee bajo demanda mediante herramientas de memoria cuando
están disponibles, con respaldo acotado en el prompt cuando las herramientas no pueden ejecutarse. En otros
harnesses, el modelo solo ve la copia inyectada acortada hasta que lee o
busca directamente en la memoria. Si MEMORY.md se trunca repetidamente allí, destílalo
en un resumen duradero más breve y mueve el historial detallado a memory/*.md,
o aumenta intencionalmente los límites de bootstrap.
Las sesiones de subagente solo inyectan AGENTS.md y TOOLS.md (otros archivos de bootstrap
se filtran para mantener pequeño el contexto del subagente).
Los hooks internos pueden interceptar este paso mediante agent:bootstrap para mutar o reemplazar
los archivos de bootstrap inyectados (por ejemplo, cambiar SOUL.md por una personalidad alternativa).
Si quieres que el agente suene menos genérico, empieza con Guía de personalidad de SOUL.md.
Para inspeccionar cuánto aporta cada archivo inyectado (en bruto frente a inyectado, truncamiento, más sobrecarga del esquema de herramientas), usa /context list o /context detail. Consulta Contexto.
Manejo del tiempo
El prompt del sistema incluye una sección dedicada de Fecha y hora actuales cuando se conoce la zona horaria del usuario. Para mantener estable la caché del prompt, ahora solo incluye la zona horaria (sin reloj dinámico ni formato de hora).
Usa session_status cuando el agente necesite la hora actual; la tarjeta de estado
incluye una línea de marca de tiempo. La misma herramienta puede establecer opcionalmente una anulación de modelo por sesión
(model=default la borra).
Configura con:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Consulta Fecha y hora para ver todos los detalles de comportamiento.
Skills
Cuando existen Skills elegibles, OpenClaw inyecta una lista de Skills disponibles compacta
(formatSkillsForPrompt) que incluye la ruta del archivo y el marcador
<version> derivado del contenido para cada skill. El prompt indica al modelo que use read
para cargar el SKILL.md en la ubicación indicada (espacio de trabajo, administrada o incluida),
y que vuelva a leer una skill cuando su <version> difiera de un turno anterior. Si no hay
Skills elegibles, se omite la sección Skills.
Los turnos de Codex nativo reciben esta lista como instrucciones de desarrollador de colaboración con alcance de turno en lugar de entrada de usuario por turno, excepto los turnos ligeros de cron que preservan el prompt programado exacto. Otros harnesses conservan la sección normal del prompt.
La ubicación puede apuntar a una skill anidada, como
skills/personal/foo/SKILL.md. El anidamiento es solo organizativo; el prompt sigue
usando el nombre plano de la skill del frontmatter de SKILL.md.
La elegibilidad incluye compuertas de metadatos de skills, comprobaciones de entorno/configuración en tiempo de ejecución,
y la lista efectiva de skills permitidas del agente cuando se configura agents.defaults.skills o
agents.list[].skills.
Las skills incluidas en Plugins solo son elegibles cuando su plugin propietario está habilitado. Esto permite que los plugins de herramientas expongan guías operativas más profundas sin incrustar toda esa orientación directamente en cada descripción de herramienta.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> <version>sha256:...</version> </skill></available_skills>Esto mantiene pequeño el prompt base sin dejar de permitir el uso dirigido de skills.
El presupuesto de la lista de skills pertenece al subsistema de skills:
- Valor predeterminado global:
skills.limits.maxSkillsPromptChars - Anulación por agente:
agents.list[].skillsLimits.maxSkillsPromptChars
Los extractos genéricos acotados en tiempo de ejecución usan una superficie diferente:
agents.defaults.contextLimits.*agents.list[].contextLimits.*
Esa separación mantiene el dimensionamiento de skills separado del dimensionamiento de lectura/inyección en tiempo de ejecución, como
memory_get, resultados de herramientas en vivo y actualizaciones de AGENTS.md posteriores a Compaction.
Documentación
El prompt del sistema incluye una sección de Documentación. Cuando hay documentación local disponible,
apunta al directorio local de documentación de OpenClaw (docs/ en un checkout de Git o la documentación del paquete
npm incluido). Si la documentación local no está disponible, recurre a
https://docs.openclaw.ai.
La misma sección también incluye la ubicación del código fuente de OpenClaw. Los checkouts de Git exponen la raíz local
del código fuente para que el agente pueda inspeccionar el código directamente. Las instalaciones de paquetes incluyen la URL
del código fuente en GitHub e indican al agente que revise el código fuente allí cuando la documentación esté incompleta o
obsoleta. El prompt también menciona el espejo público de la documentación, el Discord de la comunidad y ClawHub
(https://clawhub.ai) para descubrir skills. Presenta la documentación como la
autoridad para el autoconocimiento de OpenClaw antes de que el modelo entienda cómo funciona OpenClaw,
incluidas memoria/notas diarias, sesiones, herramientas, Gateway, configuración, comandos o contexto del proyecto.
El prompt indica al modelo que use primero la documentación local (o el espejo de la documentación cuando la documentación local
no esté disponible), y que trate AGENTS.md, el contexto del proyecto, las notas de espacio de trabajo/perfil/memoria
y memory_search como contexto de instrucciones o memoria del usuario, no como conocimiento de diseño o implementación
de OpenClaw. Si la documentación no dice nada o está obsoleta, el modelo debe decirlo
e inspeccionar el código fuente. El prompt también indica al modelo que ejecute openclaw status por sí mismo cuando
sea posible, y que pregunte al usuario solo cuando no tenga acceso.
Para la configuración específicamente, dirige a los agentes a la acción de herramienta gateway
config.schema.lookup para obtener documentación y restricciones exactas a nivel de campo, y luego a
docs/gateway/configuration.md y docs/gateway/configuration-reference.md
para orientación más amplia.