Event Sourcing
Jede Agent-Aktion wird als unveränderliches Event aufgezeichnet. Events sind die einzige Wahrheitsquelle dafür, was während einer Sitzung passiert ist.
Event-Typen
Das System verfolgt 16 Event-Typen in 6 Kategorien:
| Kategorie | Event-Typ | Beschreibung |
|---|---|---|
| Session | SessionStart | Neue Gesprächssitzung beginnt |
SessionEnd | Sitzung beendet | |
| Conversation | UserMessage | Benutzer sendet eine Nachricht |
AssistantResponse | Agent sendet eine Antwort | |
| Tools | ToolCall | Agent ruft ein Tool auf |
ToolResult | Tool-Ausführung abgeschlossen | |
| Thinking | ThinkingStart | Agent beginnt zu denken |
| Tasks | TaskStart | Agent beginnt eine Aufgabe |
TaskEnd | Aufgabe abgeschlossen (mit Status) | |
| Errors | Error | Fehler während der Verarbeitung |
| Sub-Agents | SubAgentSpawn | Sub-Agent wird gestartet |
SubAgentComplete | Sub-Agent ist fertig | |
| Approvals | ApprovalRequested | Anfrage zur Befehlsgenehmigung gesendet |
ApprovalGranted | Benutzer hat einen Befehl genehmigt | |
ApprovalDenied | Benutzer hat einen Befehl abgelehnt |
Event-Struktur
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
}Tägliche Konsolidierung
Eine Hintergrundaufgabe läuft täglich um 3:00 Uhr UTC und verarbeitet nicht konsolidierte Events:
- Faktenextraktion — das LLM analysiert Event-Sequenzen, um dauerhafte Fakten zu extrahieren
- Prozedurlernen — wiederholte Tool-Aufruf-Muster werden als Prozeduren erfasst
- Fehlerlösungsverfolgung — Fehler und ihre Lösungen werden für zukünftiges Debugging gepaart
Nach der Verarbeitung werden Events mit einem consolidated_at-Zeitstempel markiert.
Sitzungskontext
Das Event-System liefert eine Sitzungszusammenfassung für den LLM-Kontext, die verwendete Tools, aufgetretene Fehler, erteilte/verweigerte Genehmigungen und Sub-Agent-Aktivität umfasst.
Event-Bereinigung
Eine Hintergrundaufgabe läuft um 3:30 Uhr UTC und entfernt Events, die älter als die Aufbewahrungsfrist sind (Standard 30 Tage).
Unveränderlichkeit
Events sind nur zum Anhängen bestimmt (append-only). Das Feld
consolidated_at ist das einzige Feld, das nach der Erstellung jemals aktualisiert wird.