System prompt
OpenClaw construye un sistema de indicaciones personalizado (system prompt) para cada ejecución del agente. La indicación es de propiedad de OpenClaw y no utiliza la indicación predeterminada de pi-coding-agent.
La indicación es ensamblada por OpenClaw e inyectada en cada ejecución del 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 los 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 de subagente para un agente específico.- Los adaptadores de tiempo de ejecución (integrado, CLI, vistas previas de comando/exportación, compactación) recopilan datos 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/depuradas alineadas con las ejecuciones en vivo sin convertir cada detalle específico del tiempo de ejecución en un constructor monolítico.
Los complementos del proveedor pueden contribuir con orientación de prompt con reconocimiento de caché sin reemplazar el prompt completo propiedad de OpenClaw. El tiempo de ejecución del proveedor puede:
- reemplazar un pequeño conjunto de secciones principales 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
Use contribuciones propiedad del proveedor para el ajuste específico de la familia de modelos. Mantenga la mutación del
prompt before_prompt_build heredada 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 la regla de ejecución principal pequeña y añade orientación específica del modelo para el anclaje de personalidad, salida concisa, disciplina de herramientas, búsqueda en paralelo, cobertura de entregables, verificación, contexto faltante e higiene de herramientas de terminal.
Estructura
Sección titulada «Estructura»El prompt es intencionalmente compacto y utiliza secciones fijas:
- Herramientas: recordatorio de la fuente de verdad de la herramienta estructurada más orientación de uso de herramientas en tiempo de ejecución.
- Sesgo de ejecución: orientación compacta de seguimiento: actuar por turno en solicitudes accionables, continuar hasta terminar o bloquearse, recuperarse de resultados de herramientas débiles, verificar el estado mutable en vivo y verificar antes de finalizar.
- Seguridad: recordatorio corto de guardabareras para evitar el comportamiento de búsqueda de poder o eludir la supervisión.
- Habilidades (cuando están disponibles): indica al modelo cómo cargar las instrucciones de habilidades bajo demanda.
- Control de OpenClaw: indica al modelo que prefiera la herramienta
gatewaypara el 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 bajo solicitud explícita del usuario. La herramientagatewaysolo para propietarios también se niega a reescribirtools.exec.ask/tools.exec.security, incluyendo los aliastools.bash.*heredados que se normalizan a esas rutas de ejecución protegidas. - Espacio de trabajo: directorio de trabajo (
agents.defaults.workspace). - Documentación: ruta local a los documentos/fuente de OpenClaw y cuándo leerlos.
- Archivos del espacio de trabajo (inyectados): indica que los archivos de arranque se incluyen a continuación.
- Sandbox (cuando está habilitado): indica el tiempo de ejecución en sandbox, las rutas del sandbox y si la ejecución elevada está disponible.
- Fecha y hora actuales: solo la zona horaria (estable en caché; el reloj en vivo proviene de
session_status). - Directivas de salida del asistente: sintaxis de etiquetas de archivo adjunto compacto, nota de voz y respuesta.
- Latidos: comportamiento del aviso y reconocimiento de latidos, cuando los latidos están habilitados para el agente predeterminado.
- Tiempo de ejecución: host, SO, nodo, modelo, raíz del repositorio (cuando se detecta), nivel de pensamiento (una línea).
- Razonamiento: nivel de visibilidad actual + sugerencia de activación /reasoning.
OpenClaw mantiene contenido grande y estable, incluyendo Contexto del proyecto, por encima del límite de la caché del aviso interno. Las secciones volátiles de canal/sesión, como la guía incrustada de la Interfaz de Usuario de Control, Mensajería, Voz, Contexto de chat grupal, Reacciones, Latidos y Tiempo de ejecución, se anexan debajo de ese límite para que los backends locales con cachés de prefijo puedan reutilizar el prefijo estable del espacio de trabajo a través de los turnos del canal. Las descripciones de las herramientas también deben evitar incrustar nombres de canal actuales cuando el esquema aceptado ya lleva ese detalle de tiempo de ejecución.
La sección de Herramientas también incluye orientación de tiempo de ejecución para trabajos de larga duración:
- use cron para seguimientos futuros (
check back later, recordatorios, trabajo recurrente) en lugar deexecbucles de suspensión,yieldMstrucos de retraso oprocesssondeo repetido - use
exec/processsolo para comandos que comienzan ahora y continúan ejecutándose en segundo plano - cuando la activación automática por finalización está habilitada, inicie el comando una vez y confíe en la ruta de activación basada en push cuando emita salida o falle
- use
processpara registros, estado, entrada o intervención cuando necesite inspeccionar un comando en ejecución - si la tarea es más grande, prefiera
sessions_spawn; la finalización del subagente es basada en push y se anuncia automáticamente al solicitante - no sondee
subagents list/sessions_listen un bucle solo para esperar la finalización
agents.defaults.subagents.delegationMode puede reforzar esta orientación. El modo suggest predeterminado mantiene el empuje de línea base. prefer añade una sección dedicada Delegación de Subagente indicando al agente principal que actúe como un coordinador receptivo y envíe cualquier cosa más compleja que una respuesta directa a través de sessions_spawn. Esto es solo en el mensaje; la política de herramientas todavía controla si sessions_spawn está disponible.
Cuando la herramienta experimental update_plan está habilitada, Tooling también indica al modelo que la use solo para trabajo de múltiples pasos no trivial, mantenga exactamente un paso in_progress y evite repetir el plan completo después de cada actualización.
Las salvaguardas de seguridad en el sistema de instrucciones son consultivas. Guían el comportamiento del modelo pero no hacen cumplir la política. Utilice la política de herramientas, aprobaciones de ejecución, sandboxing y listas de permitidos de canales para el cumplimiento estricto; los operadores pueden deshabilitarlos por diseño.
En canales con tarjetas/botones de aprobación nativos, el mensaje en tiempo de ejecución ahora indica al agente que confíe primero en esa interfaz de usuario de aprobación nativa. Solo debe incluir un comando /approve manual cuando el resultado de la herramienta indique que las aprobaciones de chat no están disponibles o la aprobación manual es la única ruta.
Modos de instrucciones
Sección titulada «Modos de instrucciones»OpenClaw puede representar mensajes del sistema más pequeños para subagentes. El tiempo de ejecución establece un
promptMode para cada ejecución (no es una configuración visible para el usuario):
full(predeterminado): incluye todas las secciones anteriores.minimal: se utiliza para subagentes; omite Memory Recall (Recuperación de memoria), OpenClaw Self-Update (OpenClaw Autoactualización), Model Aliases (Alias de modelo), User Identity (Identidad de usuario), Assistant Output Directives (Directivas de salida del asistente), Messaging (Mensajería), Silent Replies (Respuestas silenciosas) y Heartbeats (Latidos). Herramientas, Safety (Seguridad), Skills (Habilidades) cuando se proporcionan, Espacio de trabajo, Sandbox, Fecha y hora actual (cuando se conoce), Tiempo de ejecución y contexto inyectado permanecen disponibles.none: devuelve solo la línea de identidad base.
Cuando promptMode=minimal, los mensajes inyectados adicionales se etiquetan como Subagent
Context (Contexto de subagente) en lugar de Group Chat Context (Contexto de chat grupal).
Para ejecuciones de auto-respuesta de canal, OpenClaw omite la sección genérica de Respuestas silenciosas cuando el contexto directo, de grupo o solo de herramienta de mensajes posee el contrato de respuesta visible. Solo el modo automático antiguo de grupo/canal debería mostrar NO_REPLY; los chats directos y las respuestas de solo herramienta de mensajes no reciben orientación de token silencioso.
Instantáneas del mensaje del sistema
Sección titulada «Instantáneas del mensaje del sistema»OpenClaw guarda instantáneas confirmadas del mensaje del sistema para la ruta feliz (happy path) del tiempo de ejecución de Codex en
test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/. Representan
los parámetros seleccionados de hilo/turno del servidor de aplicaciones más una pila reconstruida de capas de mensajes vinculadas al modelo
para turnos directos de Telegram, grupos de Discord y latidos. Esa pila
incluye un dispositivo de mensaje de modelo gpt-5.5 de Codex anclado generado a partir de la forma del catálogo/caché de modelos de Codex,
el texto de permiso para desarrolladores de la ruta feliz de Codex,
las instrucciones de desarrollador de OpenClaw, instrucciones del modo de colaboración por turno
cuando OpenClaw las proporciona, la entrada de turno del usuario y referencias a las especificaciones dinámicas de las herramientas.
Actualice el fixture del mensaje del modelo Codex anclado 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
~/.codex/models_cache.json, y solo luego recurre a la convención de checkout del
mantenedor de Codex en ~/code/codex/codex-rs/models-manager/models.json. Si
ninguna de esas fuentes existe, el comando sale sin cambiar el fixture
confirmado. Pase --catalog <path> para actualizar desde un models_cache.json
específico o un archivo models.json.
Estas instantáneas todavía no son una captura de solicitud sin procesar de OpenAI byte por byte. Codex
puede agregar contexto del espacio de trabajo propio del tiempo de ejecución, como AGENTS.md, contexto
del entorno, memorias, instrucciones de aplicaciones/complementos e instrucciones integradas
predeterminadas del modo de colaboración dentro del tiempo de ejecución de Codex después de que OpenClaw envíe
los parámetros de hilo y turno.
Regenérelos con pnpm prompt:snapshots:gen y verifique la deriva con
pnpm prompt:snapshots:check. La CI ejecuta la verificación de deriva en el fragmento
límite adicional para que los cambios en el mensaje y las actualizaciones de las instantáneas permanezcan adjuntos al mismo
PR.
Inyección de inicialización del espacio de trabajo
Sección titulada «Inyección de inicialización del espacio de trabajo»Los archivos de arranque se resuelven desde el espacio de trabajo activo y luego se enrutan a la superficie del mensaje que coincida con su vida útil:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(solo en espacios de trabajo totalmente nuevos)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 a través de su propio descubrimiento de
documentos del proyecto. SOUL.md, IDENTITY.md, TOOLS.md y USER.md se reenvían como
instrucciones de desarrollador de Codex. El contenido de HEARTBEAT.md no se inyecta; los
turnos de latido (heartbeat) reciben una nota en modo de colaboración que apunta al archivo cuando existe y no
está vacío. El contenido de MEMORY.md y BOOTSTRAP.md activos mantiene por ahora el rol normal
del contexto del turno.
En arneses que no son Codex, los archivos de arranque siguen componiéndose en el
mensaje de OpenClaw según sus puertas existentes. HEARTBEAT.md se omite en
las ejecuciones normales cuando los latidos están deshabilitados para el agente predeterminado o
agents.defaults.heartbeat.includeSystemPromptSection es falso. Mantenga los archivos inyectados
concisos, especialmente MEMORY.md. MEMORY.md está destinado a permanecer como un resumen
a largo plazo curado; las notas diarias detalladas pertenecen a memory/*.md, donde
memory_search y memory_get pueden recuperarlas bajo demanda. Los archivos MEMORY.md
demasiado grandes aumentan el uso del mensaje y pueden inyectarse parcialmente debido a
los límites de archivos de arranque a continuación.
Los archivos grandes se truncan con un marcador. El tamaño máximo por archivo está controlado por
agents.defaults.bootstrapMaxChars (predeterminado: 12000). El contenido total de arranque inyectado
entre archivos se limita mediante agents.defaults.bootstrapTotalMaxChars
(predeterminado: 60000). Los archivos faltantes inyectan un marcador corto de archivo faltante. Cuando se produce el truncamiento,
OpenClaw puede inyectar un aviso conciso de advertencia en el prompt del sistema; controle esto con
agents.defaults.bootstrapPromptTruncationWarning (off, once, always;
predeterminado: always). Los conteos detallados (sin procesar/inyectados) permanecen en diagnósticos como
/context, /status, doctor y registros.
Para los archivos de memoria, el truncamiento no es una pérdida de datos: el archivo permanece intacto en el disco,
pero el modelo solo ve la copia inyectada abreviada hasta que lee o busca
en la memoria directamente. Si MEMORY.md se trunca repetidamente, destílelo en un
resumen duradero más corto y mueva el historial detallado a memory/*.md, o
aumente intencionalmente los límites de arranque.
Las sesiones de sub-agentes solo inyectan AGENTS.md y TOOLS.md (otros archivos de arranque
se filtran para mantener el contexto del sub-agente pequeño).
Los enlaces internos pueden interceptar este paso a través de agent:bootstrap para mutar o reemplazar
los archivos de arranque inyectados (por ejemplo, intercambiar SOUL.md por una personalidad alternativa).
Si desea que el agente suene menos genérico, comience con la Guía de personalidad SOUL.md.
Para inspeccionar cuánto contribuye cada archivo inyectado (sin procesar frente a inyectado, truncamiento, más sobrecarga del esquema de herramientas), use /context list o /context detail. Consulte Contexto.
Manejo del tiempo
Sección titulada «Manejo del tiempo»El sistema de instrucciones incluye una sección dedicada de Fecha y hora actual cuando la zona horaria del usuario es conocida. Para mantener el caché del sistema estable, ahora solo incluye la zona horaria (sin reloj dinámico ni formato de hora).
Use 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 invalidación del modelo por sesión
(model=default la borra).
Configurar con:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Consulte Fecha y hora para obtener detalles completos del comportamiento.
Habilidades
Sección titulada «Habilidades»Cuando existen habilidades elegibles, OpenClaw inyecta una lista de habilidades disponibles compacta
(formatSkillsForPrompt) que incluye la ruta de archivo para cada habilidad. El
prompt instruye al modelo a usar read para cargar el SKILL.md en la ubicación
listada (workspace, gestionado o empaquetado). Si no hay habilidades elegibles, la
sección de Habilidades se omite.
La elegibilidad incluye puertas de metadatos de habilidades, verificaciones de entorno/configuración en tiempo de ejecución,
y la lista blanca efectiva de habilidades del agente cuando agents.defaults.skills o
agents.list[].skills están configurados.
Las habilidades empaquetadas en complementos solo son elegibles cuando su complemento propietario está habilitado. Esto permite que los complementos de herramientas expongan guías de operación más profundas sin incrustar toda esa guía directamente en cada descripción de herramienta.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> </skill></available_skills>Esto mantiene el mensaje base pequeño y al mismo tiempo permite el uso dirigido de habilidades.
El presupuesto de la lista de habilidades es propiedad del subsistema de habilidades:
- Predeterminado global:
skills.limits.maxSkillsPromptChars - Anulación por agente:
agents.list[].skillsLimits.maxSkillsPromptChars
Los extractos de tiempo de ejecución delimitados genéricos usan una superficie diferente:
agents.defaults.contextLimits.*agents.list[].contextLimits.*
Esa división mantiene el tamaño de las habilidades separado del tamaño de lectura/inyección en tiempo de ejecución, tal
como memory_get, resultados en vivo de herramientas y actualizaciones de AGENTS.md después de la compactación.
Documentación
Sección titulada «Documentación»El prompt del sistema incluye una sección Documentación. Cuando hay documentos locales disponibles, apunta
al directorio de documentos de OpenClaw local (docs/ en un repositorio Git o los documentos del paquete
npm incluido). Si los documentos locales no están disponibles, recurre a
https://docs.openclaw.ai.
La misma sección también incluye la ubicación de origen de OpenClaw. Las copias de Git exponen la raíz de
origen local para que el agente pueda inspeccionar el código directamente. Las instalaciones del paquete incluyen la URL de
origen de GitHub e indican al agente que revise el origen allí siempre que los documentos estén incompletos o
obsoletos. El prompt también nota el espejo de documentos públicos, el Discord de la comunidad y ClawHub
(https://clawhub.ai) para el descubrimiento de habilidades. Indica al modelo que
consulte primero los documentos sobre el comportamiento, comandos, configuración o arquitectura de OpenClaw, y que
ejecute openclaw status por sí mismo cuando sea posible (solicitando al usuario solo cuando no tenga acceso).
Específicamente para la configuración, señala a los agentes a la acción de herramienta gateway
config.schema.lookup para obtener documentos y restricciones exactos a nivel de campo, y luego a
docs/gateway/configuration.md y docs/gateway/configuration-reference.md
para obtener orientación más amplia.