Event Sourcing
Cada accion del agente se registra como un evento inmutable. Los eventos son la unica fuente de verdad de lo que ocurrio durante una sesion.
Tipos de Eventos
El sistema rastrea 16 tipos de eventos en 6 categorias:
| Categoria | Tipo de Evento | Descripcion |
|---|---|---|
| Sesion | SessionStart | Comienza una nueva sesion de conversacion |
SessionEnd | Sesion terminada | |
| Conversacion | UserMessage | El usuario envia un mensaje |
AssistantResponse | El agente envia una respuesta | |
| Herramientas | ToolCall | El agente invoca una herramienta |
ToolResult | La ejecucion de la herramienta se completa | |
| Razonamiento | ThinkingStart | El agente comienza a razonar |
| Tareas | TaskStart | El agente comienza una tarea |
TaskEnd | La tarea se completa (con estado) | |
| Errores | Error | Ocurre un error durante el procesamiento |
| Sub-Agentes | SubAgentSpawn | Se genera un sub-agente |
SubAgentComplete | El sub-agente finaliza | |
| Aprobaciones | ApprovalRequested | Se envia solicitud de aprobacion de comando |
ApprovalGranted | El usuario aprobo un comando | |
ApprovalDenied | El usuario denego un comando |
Estructura del Evento
rust
struct Event {
id: i64, // Auto-incrementing ID
session_id: String, // Session identifier
event_type: EventType,// One of the 16 types above
data: JsonValue, // Event-specific payload
created_at: DateTime, // Timestamp
consolidated_at: Option<DateTime>, // When processed
task_id: Option<String>, // Associated goal/task run
tool_name: Option<String>, // For tool events
}Consolidacion Diaria
Una tarea en segundo plano se ejecuta a las 3:00 AM UTC diariamente y procesa eventos no consolidados:
- Extraccion de hechos — el LLM analiza secuencias de eventos para extraer hechos duraderos
- Aprendizaje de procedimientos — los patrones repetidos de llamadas a herramientas se capturan como procedimientos
- Seguimiento de soluciones de errores — los errores y sus resoluciones se emparejan para depuracion futura
Despues del procesamiento, los eventos se marcan con una marca de tiempo consolidated_at.
Contexto de Sesion
El sistema de eventos proporciona un resumen de sesion para el contexto del LLM que incluye herramientas utilizadas, errores encontrados, aprobaciones concedidas/denegadas y actividad de sub-agentes.
Limpieza de Eventos
Una tarea en segundo plano se ejecuta a las 3:30 AM UTC y elimina eventos mas antiguos que el periodo de retencion (por defecto 30 dias).
Inmutabilidad
Los eventos son de solo escritura (append-only). El campo
consolidated_at es el unico campo que se actualiza despues de la creacion.