Event Sourcing
Chaque action de l'agent est enregistrée comme un événement immuable. Les événements sont la source unique de vérité pour ce qui s'est passé pendant une session.
Types d'Événements
Le système suit 16 types d'événements répartis en 6 catégories :
| Catégorie | Type d'Événement | Description |
|---|---|---|
| Session | SessionStart | Début d'une nouvelle session de conversation |
SessionEnd | Session terminée | |
| Conversation | UserMessage | L'utilisateur envoie un message |
AssistantResponse | L'agent envoie une réponse | |
| Tools | ToolCall | L'agent invoque un outil |
ToolResult | L'exécution de l'outil se termine | |
| Thinking | ThinkingStart | L'agent commence à raisonner |
| Tasks | TaskStart | L'agent commence une tâche |
TaskEnd | La tâche se termine (avec statut) | |
| Errors | Error | Une erreur survient pendant le traitement |
| Sub-Agents | SubAgentSpawn | Un sous-agent est créé |
SubAgentComplete | Le sous-agent termine | |
| Approvals | ApprovalRequested | Demande d'approbation de commande envoyée |
ApprovalGranted | L'utilisateur a approuvé une commande | |
ApprovalDenied | L'utilisateur a refusé une commande |
Structure d'un Événement
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
}Consolidation Quotidienne
Une tâche en arrière-plan s'exécute à 3h00 UTC quotidiennement et traite les événements non consolidés :
- Extraction de faits — le LLM analyse les séquences d'événements pour extraire des faits durables
- Apprentissage de procédures — les modèles récurrents d'appels d'outils sont capturés en tant que procédures
- Suivi des solutions d'erreurs — les erreurs et leurs résolutions sont appariées pour le débogage futur
Après le traitement, les événements sont marqués avec un horodatage consolidated_at.
Contexte de Session
Le système d'événements fournit un résumé de session pour le contexte LLM qui inclut les outils utilisés, les erreurs rencontrées, les approbations accordées/refusées et l'activité des sous-agents.
Élagage des Événements
Une tâche en arrière-plan s'exécute à 3h30 UTC et supprime les événements plus anciens que la période de rétention (par défaut 30 jours).
Immuabilité
Les événements sont en ajout seul. Le champ
consolidated_at est le seul champ mis à jour après la création.