Gestión de sesiones y compactación (inmersión profunda)
Este documento explica cómo OpenClaw gestiona las sesiones de extremo a extremo:
- Enrutamiento de sesiones (cómo los mensajes entrantes se mapean a un
sessionKey) - Almacén de sesiones (
sessions.json) y qué rastrea - Persistencia de transcripciones (
*.jsonl) y su estructura - Higiene de transcripciones (correcciones específicas del proveedor antes de ejecuciones)
- Límites de contexto (ventana de contexto vs tokens rastreados)
- Compactación (manual + auto-compactación) y dónde conectar trabajo pre-compactación
- Tareas silenciosas (ej. escrituras de memoria que no deberían producir salida visible para el usuario)
Si quieres una visión general de alto nivel primero, empieza con:
Fuente de verdad: el Gateway
OpenClaw está diseñado alrededor de un único proceso Gateway que posee el estado de sesión.
Dos capas de persistencia
- Almacén de sesiones (
sessions.json): mapa clave/valor de metadatos de sesión. - Transcripción (
<sessionId>.jsonl): transcripción append-only con estructura de árbol.
Claves de sesión (sessionKey)
Un sessionKey identifica qué bucket de conversación estás usando (enrutamiento + aislamiento).
Patrones comunes:
- Chat principal/directo (por agente):
agent:<agentId>:<mainKey>(por defectomain) - Grupo:
agent:<agentId>:<channel>:group:<id> - Sala/canal (Discord/Slack):
agent:<agentId>:<channel>:channel:<id>o...:room:<id> - Cron:
cron:<job.id> - Webhook:
hook:<uuid>(a menos que se sobreescriba)
Compactación: qué es
La compactación resume la conversación más antigua en una entrada compaction persistida en la transcripción y mantiene los mensajes recientes intactos.
Auto-compactación
En el agente Pi embebido, la auto-compactación se dispara en dos casos:
- Recuperación por desbordamiento: el modelo devuelve un error de desbordamiento de contexto -> compactar -> reintentar.
- Mantenimiento por umbral: después de un turno exitoso, cuando
contextTokens > contextWindow - reserveTokens.
”Flush de memoria” pre-compactación (implementado)
Objetivo: antes de que ocurra la auto-compactación, ejecutar un turno silencioso con agente que escriba estado duradero en disco (ej. memory/YYYY-MM-DD.md en el workspace del agente).
Lista de verificación de solución de problemas
- ¿Clave de sesión incorrecta? Empieza con /concepts/session y confirma el
sessionKeyen/status. - ¿Desajuste almacén vs transcripción? Confirma el host del Gateway y la ruta del almacén.
- ¿Spam de compactación? Verifica la ventana de contexto del modelo y los ajustes de compactación.
- ¿Turnos silenciosos que se filtran? Confirma que la respuesta empieza con
NO_REPLY.