Zum Inhalt springen

Modul II — Live-Betrieb & Sessions

Modul II ist die Live-Betriebs-Sicht des Estate: was jede Agent-Session gerade tut, ihre Live-Token- und Kostensummen, ein abgeleiteter Claude-Code-State und eine rekonstruierbare Timeline. Während Modul I (Inventar) das dauerhafte Estate materialisiert, hält Modul II ein Live-Betriebs-Overlay pro Session über demselben Beobachtungsstrom — und zeigt nur, was dieser Strom ehrlich trägt.

Modul II ist ein busgetriebenes Modul der Core-Schicht, Geschwister des Inventars. Es pflegt einen Live-Datensatz, der nach der externen Referenz jeder Session gekeyt ist, aufgebaut aus dem kooperativen Beobachtungsstrom — nie gepollt, nie erfunden. Pro Session verfolgt es:

  • die aktuelle Aktion (das zuletzt verwendete Tool) und die Ressource/den Modus, die sie berührte;
  • die Live-Token- und Kostensummen, gelesen aus Kostenproben (das kanonische Kosten-Ledger und FinOps sind Modul XI, nicht hier — dies ist nur die Live-Zahl);
  • einen abgeleiteten Claude-Code-State (cc_state); und
  • eine Timeline, an die jedes beobachtete Event in Ingest-Reihenfolge angehängt wird.

Das Modul registriert zwei mandantenbezogene Entitäten. sessions.live hält den Live-Datensatz pro Session — aktuelle Aktion/Ressource/Modus, Modellreferenz, Live-Input/-Output-Tokens, Live-Kosten, Event- und Tool-Call-Zähler sowie First/Last-Event-Zeitstempel. sessions.timeline hält eine abspielbare Zeile pro Event, geordnet nach Ingest. Es gibt keine gespeicherte Lebenszyklus-Spalte: Der kooperative Strom trägt kein Ende-oder-Fehler-Signal, sodass das einzige ehrliche Lebendigkeitssignal der abgeleitete cc_state ist.

cc_state wird zur Lesezeit aus der Aktualität der Events abgeleitet — active / idle / ended — und wechselt in einen Silent-Evasion-State, wenn der Connector dieses Finding meldet (es wird nie vom Modul selbst geschrieben). Reads werden unter Modulrouten bedient (Live-Liste, einzelne Session, Session-Timeline) plus einem Live-SSE-Stream; jeder Read erfordert die Session-Leseberechtigung, und das Öffnen des Streams wird automatisch auditiert. Der SSE-Kanal ist streng mandantenisoliert (ein Client erhält nur Snapshots für seinen autorisierten Mandanten) und Best-Effort (ein langsamer Client verwirft den Zwischenframe und erhält den nächsten — die Ingestion blockiert nie).

Modul II konsumiert denselben Minimal-Data-Beobachtungsstrom wie das Inventar — edge.observed, cost.sampled und finding.reported. Nur Edges, deren Herkunft eine Session ist, erzeugen Live-Betrieb; an eine Session gebundene Kostenproben tragen zur Live-Token-/Kostenzahl bei (hier wird kein CostRecord geschrieben); Findings mit Session-Subjekt werden annotiert, und ein Anti-Evasion-Finding markiert den Evasion-State. Zwei Felder werden live abgeleitet aus denselben Signalen: agent_ref aus dem einer Session zugeordneten Agent und summary aus einem Context-Compaction-Finding (forensisch), dessen Titel per Vertrag summary-safe ist — niemals eine vom LLM erfundene Zusammenfassung.