System prompt

OpenClaw construye un system prompt personalizado para cada ejecución del agente. El prompt es propiedad de OpenClaw y no usa el prompt por defecto de pi-coding-agent.

El prompt es ensamblado por OpenClaw e inyectado en cada ejecución del agente.

Estructura

El prompt es intencionalmente compacto y usa secciones fijas:

  • Tooling: lista de herramientas actual + descripciones breves.
  • Safety: recordatorio breve de protección para evitar comportamiento de búsqueda de poder o evasión de supervisión.
  • Skills (cuando están disponibles): indica al modelo cómo cargar instrucciones de habilidades bajo demanda.
  • OpenClaw Self-Update: cómo ejecutar config.apply y update.run.
  • Workspace: directorio de trabajo (agents.defaults.workspace).
  • Documentation: ruta local a la documentación de OpenClaw (repo o paquete npm) y cuándo consultarla.
  • Workspace Files (injected): indica que los archivos de bootstrap están incluidos debajo.
  • Sandbox (cuando está habilitado): indica runtime sandboxed, rutas del sandbox, y si está disponible la ejecución elevada.
  • Current Date & Time: hora local del usuario, zona horaria y formato de hora.
  • Reply Tags: sintaxis opcional de etiquetas de respuesta para proveedores soportados.
  • Heartbeats: prompt de heartbeat y comportamiento de ack.
  • Runtime: host, SO, node, modelo, raíz del repo (cuando se detecta), nivel de razonamiento (una línea).
  • Reasoning: nivel de visibilidad actual + hint del toggle /reasoning.

Las protecciones de seguridad en el system prompt son orientativas. Guían el comportamiento del modelo pero no aplican políticas. Usa políticas de herramientas, aprobaciones de ejecución, sandboxing y listas de permitidos por canal para aplicación estricta; los operadores pueden deshabilitarlas por diseño.

Modos de prompt

OpenClaw puede renderizar system prompts más pequeños para sub-agentes. El runtime configura un promptMode para cada ejecución (no es una configuración de usuario):

  • full (por defecto): incluye todas las secciones anteriores.
  • minimal: usado para sub-agentes; omite Skills, Memory Recall, OpenClaw Self-Update, Model Aliases, User Identity, Reply Tags, Messaging, Silent Replies y Heartbeats. Tooling, Safety, Workspace, Sandbox, Current Date & Time (cuando se conoce), Runtime y contexto inyectado siguen disponibles.
  • none: devuelve solo la línea de identidad base.

Cuando promptMode=minimal, los prompts inyectados extra se etiquetan como Subagent Context en lugar de Group Chat Context.

Inyección de bootstrap del workspace

Los archivos de bootstrap se recortan y agregan bajo Project Context para que el modelo vea el contexto de identidad y perfil sin necesitar lecturas explícitas:

  • AGENTS.md
  • SOUL.md
  • TOOLS.md
  • IDENTITY.md
  • USER.md
  • HEARTBEAT.md
  • BOOTSTRAP.md (solo en workspaces nuevos)
  • MEMORY.md cuando está presente, de lo contrario memory.md como fallback en minúsculas

Todos estos archivos se inyectan en la ventana de contexto en cada turno, lo que significa que consumen tokens. Mantenlos concisos — especialmente MEMORY.md, que puede crecer con el tiempo y llevar a un uso de contexto inesperadamente alto y compactaciones más frecuentes.

Nota: Los archivos diarios memory/*.md no se inyectan automáticamente. Se acceden bajo demanda mediante las herramientas memory_search y memory_get, así que no cuentan contra la ventana de contexto a menos que el modelo los lea explícitamente.

Los archivos grandes se truncan con un marcador. El tamaño máximo por archivo se controla con agents.defaults.bootstrapMaxChars (por defecto: 20000). El contenido total de bootstrap inyectado entre todos los archivos tiene un tope de agents.defaults.bootstrapTotalMaxChars (por defecto: 150000). Los archivos faltantes inyectan un marcador breve de archivo faltante. Cuando ocurre truncamiento, OpenClaw puede inyectar un bloque de advertencia en Project Context; controla esto con agents.defaults.bootstrapPromptTruncationWarning (off, once, always; por defecto: once).

Las sesiones de sub-agente solo inyectan AGENTS.md y TOOLS.md (los otros archivos de bootstrap se filtran para mantener pequeño el contexto del sub-agente).

Los hooks internos pueden interceptar este paso mediante agent:bootstrap para mutar o reemplazar los archivos de bootstrap inyectados (por ejemplo, intercambiar SOUL.md por una persona alternativa).

Para inspeccionar cuánto contribuye cada archivo inyectado (crudo vs inyectado, truncamiento, más la sobrecarga del esquema de herramientas), usa /context list o /context detail. Ver Context.

Manejo de hora

El system prompt incluye una sección dedicada Current Date & Time cuando se conoce la zona horaria del usuario. Para mantener la caché del prompt estable, 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 temporal.

Configura con:

  • agents.defaults.userTimezone
  • agents.defaults.timeFormat (auto | 12 | 24)

Ver Date & Time para detalles completos del comportamiento.

Skills

Cuando existen habilidades elegibles, OpenClaw inyecta una lista compacta de habilidades disponibles (formatSkillsForPrompt) que incluye la ruta del 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 incluido). Si no hay habilidades elegibles, la sección Skills se omite.

<available_skills>
  <skill>
    <name>...</name>
    <description>...</description>
    <location>...</location>
  </skill>
</available_skills>

Esto mantiene el prompt base pequeño mientras sigue habilitando el uso dirigido de habilidades.

Documentación

Cuando está disponible, el system prompt incluye una sección Documentation que apunta al directorio local de documentación de OpenClaw (ya sea docs/ en el workspace del repo o la documentación del paquete npm incluido) y también menciona el mirror público, repo fuente, Discord de la comunidad y ClawHub (https://clawhub.com) para descubrimiento de habilidades. El prompt instruye al modelo a consultar la documentación local primero para comportamiento, comandos, configuración o arquitectura de OpenClaw, y a ejecutar openclaw status por sí mismo cuando sea posible (preguntando al usuario solo cuando no tiene acceso).