2026-07-31T05:47:57.805Z

Disler Claude Code Hooks Multi-Agent-Beobachtbarkeit: Beweisen Sie die Ereigniszustellung

Prüfen Sie Konfiguration, HTTP-Zustellung, SQLite-Persistenz, WebSocket-Aktualität, Warten und Ergebnisse, bevor Sie dem Disler Claude Code-Dashboard vertrauen.

Die sichere Antwort lautet: Betrachten Sie ein erreichbares Dashboard oder einen Zero Hook Exit Code nicht als Beweis dafür, dass die Multi Agent Observability Pipeline Claude Code Hooks von Disler fehlerfrei ist. Fordern Sie eine Quittung an jeder Grenze an – Konfiguration, HTTP Zustellung, SQLite Persistenz, WebSocket Zustellung und Browser Aktualität – und überprüfen Sie dann die Arbeit außerhalb des Überwachungspfads. Diese Unterscheidung ist wichtig, weil die eigene Architektur des Repositorys eine Kette ist: Claude Agenten → Hook Skripte → HTTP POST → Bun Server → SQLite → WebSocket → Vue Client. Ein helles Ereignis im letzten Feld beweist, dass ein Ereignis die Kette überschritten hat. Eine stille Box sagt Ihnen nicht, wo die Beweise aufgehört haben, und ein Stop Ereignis beweist nicht, dass die angeforderte Datei, der Test, die Bereitstellung oder die Übergabe vorhanden ist. Ich habe das Repository Commit überprüft 8a6e5cf und neun inhaltsfreie Fälle wiederholt. Eine naive Regel, die nur den Hook Prozess Exit Code überprüft, der alle neun grün markiert hat. Die Empfangsregel klassifizierte alle neun wie erwartet; nur einer war gesund. Fixieren Sie das Repository und definieren Sie den Beweisvertrag Beginnen Sie mit dem Code, den Sie tatsächlich ausführen. Beim angehefteten Commit, .claude/settings.json konfiguriert zwölf Ereignisgruppen: SessionStart , SessionEnd , UserPromptSubmit , PreToolUse , PostToolUse , PostToolUseFailure , PermissionRequest , Notification , SubagentStart , SubagentStop , Stop und PreCompact . Die jetzigeClaude Code Hooks Referenzdokumentiert dreißig Lebenszyklusereignisse. Dieser größere Satz umfasst neuere Team und Fehlersignale wie TaskCreated , TaskCompleted , TeammateIdle , StopFailure und PostToolBatch . Der Vergleich bedeutet nicht , dass jede Installation alle dreißig erfassen sollte. Das bedeutet, dass „alle Hooks“ ein versionierter Anspruch ist: Definieren Sie die minimalen Ereignisse, die Ihre Betriebsentscheidung erfordert, pinnen Sie die Claude Code Version und bestehen Sie die Abdeckungsprüfung nicht, wenn die Konfiguration nicht mehr mit diesem Manifest übereinstimmt. Für einen Single Agent Canary ist ein angemessenes Minimum SessionStart , ein Paar PreToolUse und PostToolUse sowie Stop . Fügen Sie für einen Teamlauf den Subagenten Lebenszyklus und die Aufgaben oder Teamkollegen Signale hinzu, die Ihre installierte Claude Code Version verfügbar macht. Ein fehlendes Ereignis ist erst dann von Bedeutung, wenn Sie feststellen, dass es erwartet und konfiguriert wurde. Die nächste Grenze ist der Absender. Die angepinnt send event.py verwendet ein HTTP Timeout von fünf Sekunden. Es gibt False zurück und schreibt in stderr, wenn die Anforderung fehlschlägt, aber main() verwendet dieses Ergebnis nicht: Es wird bedingungslos mit Code Null beendet, sodass die Überwachung Claude Code nicht blockieren kann. Dies ist eine vertretbare Verfügbarkeitsentscheidung, macht den Exit Code Null jedoch zu einem Aktivitätssignal und nicht zu einer Lieferbestätigung. Der Server bietet einen stärkeren Empfang. Es ist POST /events Der Pfad validiert erforderliche Felder, fügt das Ereignis ein, gibt dann den gespeicherten Datensatz zurück und sendet ihn an verbundene WebSocket Clients. Behalten Sie die zurückgegebene Datenbank ID für einen Canary bei. Eine HTTP Verbindung ohne gespeicherte ID ist kein gleichwertiger Beweis. Das just health Rezept des Repositorys erfordert die gleiche Interpretation. Es fordert /health an, aber der angeheftete Server verfügt über keinen dedizierten Gesundheitszweig; Nicht übereinstimmende Pfade erhalten die generische Antwort Multi Agent Observability Server mit HTTP 200. Das beweist, dass der Prozess mit HTTP geantwortet hat. Das Einfügen von Ereignissen, die Lesbarkeit von SQLite, die Zustellung von WebSocket oder eine aktuelle Browseransicht werden nicht beeinträchtigt. Verwenden Sie einen expliziten Vertrag: Quittung Beweise, die es aufzubewahren gilt Was es nicht beweist Konfiguration angeheftetes Ereignismanifest und Quell App Wert dass ein Haken abgefeuert wurde Transport HTTP 200 plus die gespeicherte Ereignis ID dass der Browser es empfangen hat Beharrlichkeit die gleiche ID, die in den letzten Ereignissen sichtbar ist dass die Ansicht aktuell ist Präsentation WebSocket oder Reconnect Replay enthält die ID dass alle erforderlichen Ereignisse eingetroffen sind Abdeckung jedes erforderliche Ereignis erscheint vor Ablauf seiner Frist diese Arbeit war erfolgreich Ergebnis deterministische Prüfung der beabsichtigten Leistung dass zukünftige Läufe gesund bleiben Wiederholen Sie die Zustellungsprüfung, bevor Sie der Ansicht vertrauen Ich habe diese Grenzen in einer Vorrichtung ohne Eingabeaufforderungen, Transkripte, Werkzeugeingaben, Dateipfade oder Geheimnisse codiert. Führen Sie es aus mit: Die Wiederholung ergab: Der Klassifikator verwendet Vorrang. Es prüft zunächst, ob ein Exit Zero Hook tatsächlich den Server erreicht hat. Anschließend ist eine Persistenzbestätigung erforderlich, es wird geprüft, ob die Browserbereitstellung aktuell ist, das konfigurierte Manifest validiert, veraltete Beweise ablaufen lassen, eine legitime Wartezeit vor Ablauf der Frist beibehalten und erst dann gefragt, ob das beabsichtigte Ergebnis vorliegt. Vorrichtung Einstufung Betreiberentscheidung Der Absender verlässt nach einem fehlgeschlagenen POST den Wert Null delivery failed hidden Überprüfen Sie die Standardversion des Absenders und die Erreichbarkeit des Servers HTTP akzeptiert, aber keine gespeicherte ID persistence unverified Schließen Sie die Lagerung nicht vom Transport ab SQLite hat das Ereignis, WebSocket jedoch nicht dashboard stale Stellen Sie die Verbindung wieder her und überprüfen Sie die Wiedergabe, bevor Sie den Agenten diagnostizieren Teamevents sind erforderlich, aber nicht konfiguriert manifest drift Aktualisieren oder grenzen Sie das angeheftete Manifest ein Das konfigurierte Ereignis kommt nie coverage gap Überprüfen Sie den Matcher, den Hook Prozess und die Versionskompatibilität Die Berechtigungsabhängigkeit liegt vor Ablauf ihrer Frist waiting die Entscheidung an den Eigentümer weiterleiten; Nennen Sie es nicht feststecken Stop kommt ohne zustellbare Quittung an false complete Überprüfen Sie das externe Ergebnis, bevor Sie den Lauf löschen Es bleiben nur alte Ereignisse übrig stale verfallen grün und melden Beweise als nicht verfügbar Jede Grenze und jedes Ergebnis überschreitet healthy Akzeptieren Sie diesen Lauf, nicht die gesamte Installation für immer Der Zweig waiting verhindert einen häufigen Fehlalarm. Wenn eine Berechtigungsanfrage einen benannten Eigentümer und eine noch nicht abgelaufene Frist hat, ist mit dem Ausbleiben eines späteren Werkzeugergebnisses zu rechnen. Nach Ablauf der Frist oder wenn kein Eigentümer vorhanden ist, werden dieselben Beweise zu einem Deckungs oder Fortschrittsproblem. Zeit und Besitz verändern die Diagnose; Die Ereigniszählung allein reicht nicht aus. Der false complete Zweig verhindert den umgekehrten Fehler. Die offizielle Referenz von Claude Code definiert Stop als das Ende einer Antwort. Das Repository kann diese Lebenszyklusfakten zuverlässig darstellen. Keines der Systeme behauptet, dass sich das Ziel geändert hat. Eine Dateiaufgabe benötigt die erwartete Pfad und Inhaltsprüfung; Eine Codeaufgabe erfordert relevante Tests. Eine Remote Aktion benötigt eine Zielbestätigung. Bewahren Sie diese Kontrollen außerhalb des Hakentransports auf, damit sich das Überwachungssystem nicht selbst zertifizieren kann. Es gibt auch einen Kompromiss beim Datenschutz. Das Repository unterstützt die optionale Chat Erfassung und zeigt aufforderungsbezogene Daten an. Die Liefergesundheit erfordert dies auch nicht. Ein Canary kann nur undurchsichtige Bezeichner wie source app , session id , hook event type , Zeitstempel und zurückgegebene Ereignis ID verwenden. Minimieren Sie die Hüllkurve, bevor Sie die Beobachtbarkeit erweitern. Betreiben Sie einen kleinen Kanarienvogel und überprüfen Sie dann das tatsächliche Ergebnis Führen Sie die Prüfung in fünf begrenzten Schritten durch. 1. Versionen und Umfang anheften. Notieren Sie den Repository Commit, die Claude Code Version, die Quell App ID und die genauen Lebenszyklusereignisse, die für Ihre Entscheidung erforderlich sind. Überprüfen Sie die offizielle Hooks Referenz, wenn sich eine der Versionen ändert. 2. Senden Sie einen eindeutigen Canary. Verwenden Sie eine Einweg Sitzungskennung und eine harmlose PreToolUse Nutzlast. Erfordern Sie HTTP 200 und analysieren Sie die zurückgegebene gespeicherte Ereignis ID. Verwenden Sie nicht allein den Hook Exit Code. 3. Speicherung und Präsentation nachweisen. Fragen Sie /events/recent sofort ab und finden Sie die genaue ID. Verbinden Sie den Vue Client oder einen Test WebSocket erneut mit /stream und fordern Sie dasselbe Ereignis in der ersten Wiedergabe oder Live Nachricht. Bewahren Sie den Scheck im Wiedergabefenster auf; Der angeheftete Server sendet 300 aktuelle Zeilen, wenn ein WebSocket geöffnet wird. 4. Überprüfen Sie Abdeckung und Aktualität. Führen Sie eine bekannte Lebenszyklussequenz aus, vergleichen Sie beobachtete Ereignistypen mit dem angehefteten Manifest und wenden Sie Fristen pro Ereignis an. Die routeneigene Berechtigung wartet als wartend. Verwerfen Sie alte Beweise, anstatt veraltetes Grün beizubehalten. 5. Überprüfen Sie das Ergebnis des Benutzers separat. Stellen Sie die erwartete Datei, das Testergebnis, den Aufgabenstatus oder den erwarteten externen Effekt fest. Ein Monitor sollte false complete melden, wenn der Lebenszyklus ohne diese Quittung endet. Dieser Prozess hat Grenzen. Es testet die konfigurierte Zustellung über das angeheftete Repository. es stellt nicht für jede Nutzlast semantische Korrektheit her. Das Hinzufügen aller verfügbaren Hooks kann die Latenz, den Speicher und die Gefährdung sensibler Daten erhöhen. Ein minimales, versioniertes Manifest ist normalerweise sicherer als eine wahllose Sammlung. Die neun Fälle demonstrieren die Entscheidungsregel, nicht die Häufigkeit von Fehlern in der Produktion. Sidewisp passt in diese Grenze als Gesundheitsschicht, nicht als weitere Claude Code Laufzeit oder als Ersatz für das Repository. Sidewisp befindet sich derzeit in einer privaten Vorschauphase. Die öffentliche Website und die interaktive Demonstration sind live, aber ein Produktionsüberwachungsadapter Claude Code, ein Live Integritätssammler und ein automatisierter Wiederherstellungs Executor werden nicht ausgeliefert. Die Wiederherstellung bleibt eine geplante, genehmigungsgebundene Fähigkeit; Der aktuelle ehrliche nächste Schritt besteht darin, sich auf die Warteliste für private Vorschauen einzutragen, wenn dieses Empfangsmodell mit der Art und Weise übereinstimmt, wie Sie mit Ihren Agenten arbeiten. Halten Sie für dieses Repository die Regel kompakt: Ein Dashboard Ereignis ist ein Beweis für beobachtete Aktivität. Erklären Sie den Lauf nur dann als fehlerfrei, wenn das erforderliche Ereignismanifest aktuell ist, der Canary über Transport , Persistenz und Präsentationsbelege verfügt, jede Wartezeit einen Eigentümer und eine Frist hat und das beabsichtigte Ergebnis seine eigene deterministische Prüfung besteht.