Motor de contexto
Un motor de contexto controla cómo OpenClaw construye el contexto del modelo para cada ejecución. Decide qué mensajes incluir, cómo resumir el historial anterior y cómo gestionar el contexto a través de los límites de subagentes. OpenClaw incluye un motor integradolegacy. Los plugins pueden registrar
motores alternativos que sustituyan el ciclo de vida activo del motor de contexto.
Inicio rápido
Comprueba qué motor está activo:Instalar un plugin de motor de contexto
Los plugins de motor de contexto se instalan como cualquier otro plugin de OpenClaw. Instálalo primero y luego selecciona el motor en la ranura:contextEngine en "legacy" (o
elimina la clave por completo: "legacy" es el valor predeterminado).
Cómo funciona
Cada vez que OpenClaw ejecuta una indicación del modelo, el motor de contexto participa en cuatro puntos del ciclo de vida:- Ingesta — se llama cuando se añade un mensaje nuevo a la sesión. El motor puede almacenar o indexar el mensaje en su propio almacén de datos.
- Ensamblaje — se llama antes de cada ejecución del modelo. El motor devuelve un conjunto
ordenado de mensajes (y un
systemPromptAdditionopcional) que caben dentro del presupuesto de tokens. - Compactación — se llama cuando la ventana de contexto está llena, o cuando el usuario ejecuta
/compact. El motor resume el historial anterior para liberar espacio. - Después del turno — se llama después de que se complete una ejecución. El motor puede persistir el estado, activar la compactación en segundo plano o actualizar índices.
Ciclo de vida del subagente (opcional)
Actualmente OpenClaw llama a un hook del ciclo de vida del subagente:- onSubagentEnded — limpia cuando una sesión de subagente se completa o se depura.
prepareSubagentSpawn forma parte de la interfaz para uso futuro, pero
el entorno de ejecución todavía no lo invoca.
Adición a la indicación del sistema
El métodoassemble puede devolver una cadena systemPromptAddition. OpenClaw
la antepone a la indicación del sistema de la ejecución. Esto permite que los motores inyecten
guía de recuperación dinámica, instrucciones de recuperación o pistas
conscientes del contexto sin requerir archivos estáticos del espacio de trabajo.
El motor heredado
El motor integradolegacy conserva el comportamiento original de OpenClaw:
- Ingesta: sin operación (el administrador de sesiones gestiona directamente la persistencia de mensajes).
- Ensamblaje: paso directo (la canalización existente sanitize → validate → limit del entorno de ejecución se encarga del ensamblaje del contexto).
- Compactación: delega en la compactación de resumen integrada, que crea un único resumen de los mensajes anteriores y mantiene intactos los mensajes recientes.
- Después del turno: sin operación.
systemPromptAddition.
Cuando no se establece plugins.slots.contextEngine (o se establece en "legacy"), este
motor se usa automáticamente.
Motores de plugin
Un plugin puede registrar un motor de contexto usando la API de plugins:La interfaz ContextEngine
Miembros obligatorios:| Member | Kind | Purpose |
|---|---|---|
info | Property | Id, nombre, versión del motor y si posee la compactación |
ingest(params) | Method | Almacenar un solo mensaje |
assemble(params) | Method | Construir contexto para una ejecución del modelo (devuelve AssembleResult) |
compact(params) | Method | Resumir/reducir contexto |
assemble devuelve un AssembleResult con:
messages— los mensajes ordenados que se enviarán al modelo.estimatedTokens(obligatorio,number) — la estimación del motor del total de tokens en el contexto ensamblado. OpenClaw usa esto para las decisiones sobre el umbral de compactación y para los informes de diagnóstico.systemPromptAddition(opcional,string) — se antepone a la indicación del sistema.
| Member | Kind | Purpose |
|---|---|---|
bootstrap(params) | Method | Inicializar el estado del motor para una sesión. Se llama una vez cuando el motor ve una sesión por primera vez (p. ej., importar historial). |
ingestBatch(params) | Method | Ingerir un turno completado como lote. Se llama después de que se completa una ejecución, con todos los mensajes de ese turno a la vez. |
afterTurn(params) | Method | Trabajo posterior a la ejecución en el ciclo de vida (persistir estado, activar compactación en segundo plano). |
prepareSubagentSpawn(params) | Method | Configurar estado compartido para una sesión hija. |
onSubagentEnded(params) | Method | Limpiar después de que termine un subagente. |
dispose() | Method | Liberar recursos. Se llama durante el apagado de la puerta de enlace o la recarga del plugin, no por sesión. |
ownsCompaction
ownsCompaction controla si la autocompactación integrada en intento de Pi sigue
habilitada para la ejecución:
true— el motor controla el comportamiento de compactación. OpenClaw desactiva la autocompactación integrada de Pi para esa ejecución, y la implementacióncompact()del motor es responsable de/compact, de la compactación de recuperación por desbordamiento y de cualquier compactación proactiva que quiera hacer enafterTurn().falseo sin establecer — la autocompactación integrada de Pi todavía puede ejecutarse durante la ejecución de la indicación, pero el métodocompact()del motor activo sigue llamándose para/compacty la recuperación por desbordamiento.
ownsCompaction: false no significa que OpenClaw vuelva automáticamente a
la ruta de compactación del motor heredado.
Eso significa que hay dos patrones de plugin válidos:
- Modo propietario — implementa tu propio algoritmo de compactación y establece
ownsCompaction: true. - Modo delegado — establece
ownsCompaction: falsey haz quecompact()llame adelegateCompactionToRuntime(...)desdeopenclaw/plugin-sdk/corepara usar el comportamiento de compactación integrado de OpenClaw.
compact() sin operación no es seguro para un motor activo no propietario porque
desactiva la ruta normal de compactación de /compact y de recuperación por desbordamiento para esa
ranura de motor.
Referencia de configuración
kind: "context-engine" todavía pueden cargarse y ejecutar su código de
registro; plugins.slots.contextEngine solo selecciona qué id de motor registrado
resuelve OpenClaw cuando necesita un motor de contexto.
Relación con la compactación y la memoria
- Compactación es una de las responsabilidades del motor de contexto. El motor heredado delega en el resumen integrado de OpenClaw. Los motores de plugin pueden implementar cualquier estrategia de compactación (resúmenes DAG, recuperación vectorial, etc.).
- Plugins de memoria (
plugins.slots.memory) están separados de los motores de contexto. Los plugins de memoria proporcionan búsqueda/recuperación; los motores de contexto controlan lo que el modelo ve. Pueden trabajar juntos: un motor de contexto podría usar datos del plugin de memoria durante el ensamblaje. Los motores de plugin que quieran la ruta activa de indicación de memoria deben preferirbuildMemorySystemPromptAddition(...)deopenclaw/plugin-sdk/core, que convierte las secciones activas de la indicación de memoria en unsystemPromptAdditionlisto para anteponer. Si un motor necesita un control de nivel inferior, aún puede extraer líneas sin procesar deopenclaw/plugin-sdk/memory-host-coremediantebuildActiveMemoryPromptSection(...). - Depuración de sesiones (recorte de resultados antiguos de herramientas en memoria) sigue ejecutándose independientemente de qué motor de contexto esté activo.
Consejos
- Usa
openclaw doctorpara verificar que tu motor se está cargando correctamente. - Si cambias de motor, las sesiones existentes continúan con su historial actual. El nuevo motor toma el control en las ejecuciones futuras.
- Los errores del motor se registran y se muestran en los diagnósticos. Si un motor de plugin
no logra registrarse o no se puede resolver el id de motor seleccionado, OpenClaw
no recurre automáticamente a otro; las ejecuciones fallan hasta que corrijas el plugin o
cambies
plugins.slots.contextEnginede nuevo a"legacy". - Para desarrollo, usa
openclaw plugins install -l ./my-enginepara enlazar un directorio de plugin local sin copiarlo.
Relacionado
- Contexto — cómo se construye el contexto para los turnos del agente
- Arquitectura de plugins — registrar plugins de motor de contexto
- Compactación — resumir conversaciones largas