circuit-breaker-pattern
Acerca de
Esta habilidad implementa el patrón de cortacircuitos para llamadas a herramientas de agentes, monitoreando la salud de las herramientas y gestionando estados de fallo para prevenir cascadas de errores. Separa la orquestación de la ejecución mediante el patrón Expedidor, permitiendo el enrutamiento automático de respaldo a través de tarjetas de capacidad. Úsela al construir agentes con múltiples herramientas no confiables o al diseñar flujos de trabajo tolerantes a fallos que requieren degradación elegante.
Instalación rápida
Claude Code
Recomendadonpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/circuit-breaker-patternCopia y pega este comando en Claude Code para instalar esta habilidad
Documentación
Circuit-Breaker-Muster
Graceful Degradation bei Tool-Ausfaellen. Ein Agent, der fuenf Tools aufruft und eines defekt ist, sollte nicht vollstaendig versagen — er sollte das defekte Tool erkennen, aufhoeren es aufzurufen, den Umfang auf das verbleibend Erreichbare reduzieren und ehrlich berichten, was uebersprungen wurde. Dieser Skill kodifiziert diese Logik mit dem Circuit-Breaker-Muster aus verteilten Systemen, angepasst an agentische Tool-Orchestrierung.
Die Kernidee, aus kirapixelads' "Kuechen-Brandproblem": Der Expeditor (Orchestrierungsschicht) darf nicht selbst kochen. Die Trennung von Belangen zwischen dem Entscheiden was versucht werden soll und wie es versucht werden soll verhindert, dass der Orchestrator in der Wiederholungsschleife eines fehlerhaften Tools gefangen wird.
Wann verwenden
- Agenten aufbauen, die von mehreren Tools mit unterschiedlicher Zuverlaessigkeit abhaengen
- Fehlertolerante agentische Workflows entwerfen, bei denen Teilergebnisse besser als Totalversagen sind
- Ein Agent steckt in einer Wiederholungsschleife bei einem defekten Tool fest statt mit funktionierenden Tools weiterzumachen
- Von Tool-Ausfaellen mitten in einer Aufgabe wiederherstellen
- Bestehende Agenten gegen kaskadende Tool-Fehler haerten
- Veraltete oder gecachte Tool-Ausgaben werden als aktuelle Daten behandelt
Eingaben
- Erforderlich: Liste der Tools, von denen der Agent abhaengt (Namen und Zwecke)
- Erforderlich: Die Aufgabe, die der Agent zu erledigen versucht
- Optional: Bekannte Tool-Zuverlaessigkeitsprobleme oder vergangene Fehlermuster
- Optional: Fehlerschwelle (Standard: 3 aufeinanderfolgende Fehler bevor Schaltkreis oeffnet)
- Optional: Fehlerbudget pro Zyklus (Standard: 5 Gesamtfehler bevor Pause-und-Bericht)
- Optional: Half-Open-Sondenintervall (Standard: jeder 3. Versuch nach dem Oeffnen)
Vorgehensweise
Schritt 1: Faehigkeitskarte erstellen
Dokumentieren, was jedes Tool bereitstellt und welche Alternativen existieren. Diese Karte ist die Grundlage fuer Umfangsreduzierung — ohne sie laesst ein Tool-Ausfall den Agenten raten, was als naechstes zu tun ist.
capability_map:
- tool: Grep
provides: Inhaltssuche ueber Dateien
alternatives:
- tool: Bash
method: "rg oder grep Befehl"
degradation: "verliert Greps eingebaute Ausgabeformatierung"
- tool: Read
method: "vermutete Dateien direkt lesen"
degradation: "erfordert zu wissen welche Dateien zu pruefen; keine breite Suche"
fallback: "Nutzer fragen, welche Dateien untersucht werden sollen"
- tool: Bash
provides: Befehlsausfuehrung, Build-Tools, Git-Operationen
alternatives: []
fallback: "Befehle berichten, die manuell ausgefuehrt werden muessen"
- tool: Read
provides: Dateiinhalt-Inspektion
alternatives:
- tool: Bash
method: "cat oder head Befehl"
degradation: "verliert Zeilennummerierung und Kuerzungssicherheit"
fallback: "Nutzer bitten, Dateiinhalte einzufuegen"
- tool: Write
provides: Dateierstellung
alternatives:
- tool: Edit
method: "ueber vollstaendige Datei-Edit erstellen"
degradation: "erfordert, dass die Datei bereits fuer Edit existiert"
- tool: Bash
method: "echo/cat heredoc"
degradation: "verliert Writes atomare Dateierstellung"
fallback: "Dateiinhalte ausgeben, damit Nutzer manuell speichert"
- tool: WebSearch
provides: Externe Informationsabfrage
alternatives: []
fallback: "Benoettigte Informationen benennen; Nutzer bitten sie bereitzustellen"
Fuer jedes Tool dokumentieren:
- Welche Faehigkeit es bereitstellt (eine Zeile)
- Welche alternativen Tools es teilweise abdecken koennen (mit Degradierungshinweisen)
- Was der manuelle Fallback ist, wenn keine Tool-Alternative existiert
Erwartet: Eine vollstaendige Faehigkeitskarte, die jedes vom Agenten genutzte Tool abdeckt. Jeder Eintrag hat mindestens einen Fallback, auch wenn keine Tool-Alternative existiert. Die Karte macht explizit, was sonst implizit ist: welche Tools kritisch (keine Alternativen) und welche substituierbar sind.
Bei Fehler: Wenn die Tool-Liste unklar ist, mit den allowed-tools aus dem Skill-Frontmatter beginnen. Wenn Alternativen unsicher sind, als degradation: "unbekannt — vor Verwendung testen" markieren statt sie wegzulassen.
Schritt 2: Circuit-Breaker-Zustand initialisieren
Den Zustandstracker fuer jedes Tool einrichten. Jedes Tool startet im CLOSED-Zustand (gesund, normaler Betrieb).
Circuit-Breaker-Zustandstabelle:
+------------+--------+-------------------+------------------+-----------------+
| Tool | Zustand| Aufeinanderfolgend | Letzter Fehler | Letzter Erfolg |
+------------+--------+-------------------+------------------+-----------------+
| Grep | CLOSED | 0 | — | — |
| Bash | CLOSED | 0 | — | — |
| Read | CLOSED | 0 | — | — |
| Write | CLOSED | 0 | — | — |
| Edit | CLOSED | 0 | — | — |
| WebSearch | CLOSED | 0 | — | — |
+------------+--------+-------------------+------------------+-----------------+
Fehlerbudget: 0 / 5 verbraucht
Zustandsdefinitionen:
- CLOSED — Tool ist gesund. Normal verwenden. Aufeinanderfolgende Fehler tracken.
- OPEN — Tool ist bekannt defekt. Nicht aufrufen. Zu Alternativen routen oder Umfang reduzieren.
- HALF-OPEN — Tool war defekt, koennte sich erholt haben. Einzelnen Sonden-Aufruf senden. Bei Erfolg zu CLOSED wechseln. Bei Fehler zu OPEN zurueckkehren.
Zustandsuebergaenge:
- CLOSED -> OPEN: Wenn aufeinanderfolgende Fehler die Schwelle erreichen (Standard: 3)
- OPEN -> HALF-OPEN: Nach konfigurierbarem Intervall (z. B. jeder 3. Aufgabenschritt)
- HALF-OPEN -> CLOSED: Bei erfolgreichem Sonden-Aufruf
- HALF-OPEN -> OPEN: Bei fehlgeschlagenem Sonden-Aufruf
Erwartet: Eine Zustandstabelle fuer alle Tools mit CLOSED-Zustand und null Fehleranzahlen initialisiert. Fehlerschwelle und Budget explizit deklariert.
Bei Fehler: Wenn die Tool-Liste nicht im Voraus enumeriert werden kann (dynamische Tool-Entdeckung), Zustand beim ersten Verwenden jedes Tools initialisieren. Das Muster gilt weiterhin — die Tabelle wird nur inkrementell aufgebaut.
Schritt 3: Aufruf-und-Track-Schleife implementieren
Wenn der Agent ein Tool aufrufen muss, diese Entscheidungssequenz befolgen. Dies ist die Expeditor-Logik — sie entscheidet ob der Aufruf versucht werden soll, nicht wie er ausgefuehrt werden soll.
VOR jedem Tool-Aufruf:
1. Tool-Zustand in der Circuit-Breaker-Tabelle pruefen
2. Wenn OPEN:
a. Pruefen ob Zeit fuer Half-Open-Sonde ist
- Ja → zu HALF-OPEN wechseln, mit Sonden-Aufruf fortfahren
- Nein → Tool ueberspringen, zu Alternative routen (Schritt 4)
3. Wenn HALF-OPEN:
a. Einen Sonden-Aufruf machen
b. Erfolg → zu CLOSED wechseln, aufeinanderfolgende Fehler auf 0 zuruecksetzen
c. Fehler → zu OPEN wechseln, Fehlerbudget erhoehen
4. Wenn CLOSED:
a. Aufruf normal durchfuehren
NACH jedem Tool-Aufruf:
1. Erfolg:
- Aufeinanderfolgende Fehler auf 0 zuruecksetzen
- Zeitstempel letzten Erfolgs aufzeichnen
2. Fehler:
- Aufeinanderfolgende Fehler erhoehen
- Zeitstempel letzten Fehlers und Fehlermeldung aufzeichnen
- Verbrauchtes Fehlerbudget erhoehen
- Wenn aufeinanderfolgende Fehler >= Schwelle:
zu OPEN wechseln
protokollieren: "Schaltkreis OFFEN fuer [Tool]: [Fehlerzahl] aufeinanderfolgende Fehler"
- Wenn Fehlerbudget erschoepft:
PAUSE — Aufgabe nicht fortsetzen
Nutzer berichten (Schritt 6)
Der Expeditor wiederholt einen fehlgeschlagenen Aufruf nie sofort. Er zeichnet den Fehler auf, prueft Schwellen und macht weiter. Wiederholungen erfolgen nur durch den HALF-OPEN-Sondenmechanismus in einem spaeteren Schritt.
Erwartet: Eine klare Entscheidungsschleife, die der Agent vor und nach jedem Tool-Aufruf befolgt. Tool-Gesundheit wird kontinuierlich getrackt. Die Expeditor-Schicht blockiert nie bei einem fehlerhaften Tool.
Bei Fehler: Wenn Zustand ueber Aufrufe hinweg nicht praktikabel getrackt werden kann (z. B. zustandslose Ausfuehrung), zu einem einfacheren Modell degradieren: Gesamtfehler zaehlen und bei Budget pausieren. Der Drei-Zustands-Circuit-Breaker ist ideal; ein Fehlerzhaler ist das Minimum-viable-Muster.
Schritt 4: Bei offenem Schaltkreis zu Alternativen routen
Wenn der Schaltkreis eines Tools OPEN ist, die Faehigkeitskarte (Schritt 1) konsultieren und zur besten verfuegbaren Alternative routen.
Routing-Prioritaet:
- Tool-Alternative mit geringer Degradierung — Ein anderes Tool verwenden, das aehnliche Faehigkeiten bietet. Die Degradierung in der Aufgabenausgabe vermerken.
- Tool-Alternative mit hoher Degradierung — Ein anderes Tool mit erheblichem Faehigkeitsverlust verwenden. Explizit kennzeichnen, was im Ergebnis fehlt.
- Manueller Fallback — Berichten, was der Agent nicht tun kann und welche Informationen oder Aktionen der Nutzer bereitstellen muss.
- Umfangsreduzierung — Wenn keine Alternative existiert und kein Fallback machbar ist, die abhaengige Unteraufgabe vollstaendig aus dem Umfang entfernen (Schritt 5).
Beispiel-Routing-Entscheidung:
Benoetiges Tool: Grep (Schaltkreis OPEN)
Aufgabe: Alle Dateien mit "API_KEY" finden
Route 1: Bash mit rg Befehl
→ Degradierung: verliert Greps eingebaute Formatierung
→ Entscheidung: AKZEPTABEL — diese Route verwenden
Wenn Bash auch OPEN:
Route 2: Vermutete Konfigurationsdateien direkt lesen
→ Degradierung: erfordert Raten welche Dateien; keine breite Suche
→ Entscheidung: PARTIELL — nur bekannte Konfigurationspfade versuchen
Wenn Read auch OPEN:
Route 3: Nutzer fragen
→ "Ich muss Dateien mit 'API_KEY' finden, aber meine Such-
Tools sind nicht verfuegbar. Koennen Sie ausfuehren: grep -r 'API_KEY' ."
→ Entscheidung: FALLBACK — Nutzer stellt die Information bereit
Wenn Nutzer nicht verfuegbar:
Route 4: Umfangsreduzierung
→ "API-Schlussel-Suche" aus Aufgabenumfang entfernen
→ Dokumentieren: "UEBERSPRUNGEN: API-Schlussel-Suche — keine Tools verfuegbar"
Erwartet: Wenn ein Tool-Schaltkreis oeffnet, routet der Agent transparent zu einer Alternative oder reduziert den Umfang. Routing-Entscheidung und eventuelle Degradierungen sind in der Aufgabenausgabe dokumentiert.
Bei Fehler: Wenn die Faehigkeitskarte unvollstaendig ist (keine Alternativen gelistet), standardmaessig auf Umfangsreduzierung zurueckfallen und berichten. Arbeit nie still uebergehen — immer dokumentieren, was uebersprungen wurde und warum.
Schritt 5: Umfang auf erreichbare Arbeit reduzieren
Wenn Tools offen-geschaltet sind und Alternativen erschoepft sind, die Aufgabe auf das reduzieren, was noch mit funktionierenden Tools erledigt werden kann. Das ist kein Versagen — es ist ehrliches Umfangsmanagement.
Umfangsreduzierungsprotokoll:
- Verbleibende Unteraufgaben auflisten
- Fuer jede Unteraufgabe pruefen, welche Tools sie benoetigt
- Wenn alle benoetigen Tools CLOSED sind oder machbare Alternativen haben: Unteraufgabe behalten
- Wenn ein benoetiges Tool OPEN ohne Alternative ist: Unteraufgabe als ZURUECKGESTELLT markieren
- Mit reduziertem Umfang fortfahren
- Zurueckgestellte Unteraufgaben am Ende berichten
Umfangsreduzierungsbericht:
Urspruenglicher Umfang: 5 Unteraufgaben
[x] 1. Konfigurationsdateien lesen (Read: CLOSED)
[x] 2. Nach veralteten Mustern suchen (Grep: CLOSED)
[ ] 3. Testpakete ausfuehren (Bash: OPEN — keine Alternative)
[x] 4. Dokumentation aktualisieren (Edit: CLOSED)
[ ] 5. In Staging deployen (Bash: OPEN — keine Alternative)
Reduzierter Umfang: 3 Unteraufgaben erreichbar
Zurueckgestellt: 2 Unteraufgaben benoetigen Bash (Schaltkreis OPEN)
Empfehlung: Unteraufgaben 1, 2, 4 jetzt abschliessen.
Unteraufgaben 3 und 5 benoetigen Bash — im naechsten Zyklus
sondieren oder Nutzer kann Befehle manuell ausfuehren.
Zurueckgestellte Unteraufgaben nicht versuchen. Open-geschaltete Tools nicht wiederholt aufrufen in der Hoffnung, sie werden funktionieren. Der Circuit Breaker existiert genau dafuer — seinem Zustand vertrauen.
Erwartet: Eine klare Aufteilung der Aufgabe in erreichbare und zurueckgestellte Arbeit. Der Agent schliessst alle erreichbare Arbeit ab und berichtet zurueckgestellte Elemente mit Grund und was sie entsperren wuerde.
Bei Fehler: Wenn Umfangsreduzierung alle Unteraufgaben entfernt (jedes Tool ist defekt), direkt zu Schritt 6 uebergehen — pausieren und berichten. Ein Agent ohne funktionierende Tools sollte keinen Fortschritt vortaeuschen.
Schritt 6: Veraltung behandeln und Datenqualitaet kennzeichnen
Wenn ein Tool Daten zurueckgibt, die moeglicherweise veraltet sind (gecachte Ergebnisse, veraltete Snapshots, zuvor abgerufene Inhalte), diese explizit kennzeichnen statt sie als aktuell zu behandeln.
Veraltungsindikatoren:
- Tool-Ausgabe stimmt exakt mit einem vorherigen Aufruf ueberein (moeglicher Cache-Treffer)
- Daten referenzieren Zeitstempel vor der aktuellen Aufgabe
- Tool-Dokumentation erwaehnt Caching-Verhalten
- Ergebnisse widersprechen anderen aktuellen Beobachtungen
Kennzeichnungsprotokoll:
Bei der Praesentation moeglicherweise veralteter Daten:
"[VERALTETE DATEN — abgerufen um {Zeitstempel}, spiegelt moeglicherweise nicht aktuellen Zustand wider]
Dateiinhalte des letzten erfolgreichen Lesens:
..."
"[GECACHTES ERGEBNIS — Grep gab identische Ergebnisse zum vorherigen Aufruf zurueck;
Dateisystem koennte sich seitdem geaendert haben]"
"[NICHT VERIFIZIERT — WebSearch-Ergebnis vom {Datum}; aktueller Status unbekannt]"
Veraltete Daten nie still als aktuell praesentieren. Der Nutzer oder nachgelagerte Agent muss die Datenqualitaet kennen, um fundierte Entscheidungen zu treffen.
Erwartet: Alle Tool-Ausgaben, die moeglicherweise veraltet sind, tragen explizite Kennzeichnungen. Frische Daten werden nicht gekennzeichnet (Kennzeichnung ist fuer Unsicherheit reserviert, nicht fuer Bestaetigung).
Bei Fehler: Wenn Veraltung nicht bestimmt werden kann (keine Zeitstempel, keine Vergleichsbasis), die Unsicherheit vermerken: "[AKTUALITAET UNBEKANNT — keine Vergleichsbasis]". Unsicherheit ueber Aktualitaet ist selbst Information.
Schritt 7: Fehlerbudget durchsetzen
Gesamtfehler ueber alle Tools hinweg tracken. Wenn das Budget erschoepft ist, pausiert der Agent und berichtet statt weiter Fehler anzusammeln.
Fehlerbudget-Durchsetzung:
Budget: 5 Fehler pro Zyklus
Aktuell: 4 / 5 verbraucht
Fehler 1: Bash — "Berechtigung verweigert" (Schritt 3)
Fehler 2: Bash — "Befehl nicht gefunden" (Schritt 3)
Fehler 3: Bash — "Timeout nach 120s" (Schritt 4)
Fehler 4: WebSearch — "Verbindung abgelehnt" (Schritt 5)
Status: 1 Fehler verbleibend vor obligatorischer Pause
→ Naechster Tool-Aufruf erfolgt mit erhoehter Vorsicht
→ Wenn er fehlschlaegt: PAUSE und Statusbericht generieren
Bei Budget-Erschoepfung:
FEHLERBUDGET ERSCHOEPFT — PAUSIERE
Abgeschlossene Arbeit:
- Unteraufgabe 1: Konfigurationsdateien lesen (ERFOLG)
- Unteraufgabe 2: Nach veralteten Mustern suchen (ERFOLG)
Unvollstaendige Arbeit:
- Unteraufgabe 3: Testpakete ausfuehren (FEHLGESCHLAGEN — Bash Schaltkreis OPEN)
- Unteraufgabe 4: Dokumentation aktualisieren (NICHT VERSUCHT — pausiert)
- Unteraufgabe 5: In Staging deployen (NICHT VERSUCHT — pausiert)
Tool-Gesundheit:
Grep: CLOSED (gesund)
Read: CLOSED (gesund)
Edit: CLOSED (gesund)
Bash: OPEN (3 aufeinanderfolgende Fehler — Berechtigung/Befehl/Timeout)
WebSearch: OPEN (1 Fehler — Verbindung abgelehnt)
Fehler: 5 / 5 Budget verbraucht
Empfehlung:
1. Bash-Fehler untersuchen — wahrscheinlich Umgebungsproblem
2. Netzwerkkonnektivitaet fuer WebSearch pruefen
3. Aufgabe nach Behebung von Unteraufgabe 4 fortsetzen
Die Pause-und-Bericht-Funktion erfuellt dieselbe Funktion wie ein Sicherungsautomat in elektrischen Systemen: Sie verhindert die Anhaefung von Schaeden. Ein Agent, der weiterhin kaputte Tools aufruft, verschwendet Kontextfenster, verwirrt den Nutzer mit wiederholten Fehlern und kann inkonsistente Teilergebnisse produzieren.
Erwartet: Der Agent stoppt sauber, wenn das Fehlerbudget erschoepft ist. Der Bericht umfasst abgeschlossene Arbeit, unvollstaendige Arbeit, Tool-Gesundheit und handlungsrelevante naechste Schritte.
Bei Fehler: Wenn der Agent keinen sauberen Bericht generieren kann (z. B. Zustandstracking ging verloren), alle verfuegbaren Informationen ausgeben. Ein partieller Bericht ist besser als stille Fortsetzung.
Schritt 8: Trennung von Belangen — Expeditor vs. Ausfuehrender
Pruefen, dass die Orchestrierungslogik (Schritte 2–7) sauber von der Tool-Ausfuehrung getrennt ist.
Was der Expeditor (Orchestrierung) tut:
- Tool-Gesundheitszustand tracken
- Entscheiden, ob ein Tool aufgerufen, uebersprungen oder sondiert werden soll
- Bei offenem Schaltkreis zu Alternativen routen
- Fehlerbudget durchsetzen
- Statusberichte generieren
Was der Expeditor NICHT tut:
- Fehlgeschlagene Tool-Aufrufe sofort wiederholen
- Tool-Aufruf-Parameter anpassen, um Fehler zu umgehen
- Tool-Fehler abfangen und unterdruecken
- Annahmen treffen, warum ein Tool fehlgeschlagen ist
- Fallback-Logik ausfuehren, die selbst Tools benoetigt
Wenn der Expeditor "kocht" (Tool-Aufrufe macht, um andere Tool-Fehler zu umgehen), ist die Trennung gebrochen. Der Expeditor sollte zu einem alternativen Tool routen oder den Umfang reduzieren — nicht versuchen, das defekte Tool zu reparieren.
Erwartet: Eine klare Grenze zwischen Orchestrierungsentscheidungen und Tool-Ausfuehrung. Die Expeditor-Schicht kann beschrieben werden ohne auf spezifische Tool-APIs oder Fehlertypen zu verweisen.
Bei Fehler: Wenn Orchestrierung und Ausfuehrung verflochten sind, durch Extrahieren der Entscheidungslogik in einen separaten Schritt refaktorieren, der vor jedem Tool-Aufruf laeuft. Der Entscheidungsschritt produziert eine von vier Ausgaben: AUFRUFEN, UEBERSPRINGEN, SONDIEREN oder PAUSIEREN. Der Ausfuehrungsschritt handelt auf diese Ausgabe.
Schritt 9: Kaskadende Fehler erkennen
Wenn mehrere Tools Infrastruktur teilen (Netzwerk, Dateisystem, Berechtigungen), kann eine einzelne Ursache mehrere Sicherungsautomaten gleichzeitig ausloesen. Dieses korrelierte Muster erkennen und behandeln statt jeden Sicherungsautomaten unabhaengig zu behandeln.
Indikatoren fuer kaskadende Fehler:
- 3+ Tools wechseln im selben Aufgabenschritt oder in einem engen Fenster zu OPEN
- Fehler teilen eine gemeinsame Fehlersignatur (z. B. "Verbindung abgelehnt", "Berechtigung verweigert")
- Tools, die zuvor unabhaengige Fehlerverlaeufe hatten, schlagen ploetzlich zusammen fehl
Antwortprotokoll:
- Wenn ein zweiter Sicherungsautomat oeffnet, pruefen ob die Fehlerkategorie mit dem ersten uebereinstimmt
- Wenn korreliert: als systemischen Fehler markieren — alle Tool-Aufrufe pausieren, nicht nur die defekten
- Die vermutete Ursache berichten: "Mehrere Tools schlagen mit [gemeinsamem Muster] fehl — wahrscheinlich [Netzwerk-/Dateisystem-/Berechtigungs-]Problem"
- Half-Open-Tools waehrend eines systemischen Fehlers nicht sondieren — Sonden werden ebenfalls scheitern und Budget verschwenden
- Sondierung erst nach Bestaetigung durch den Nutzer, dass das Infrastrukturproblem behoben ist, wieder aufnehmen
Backoff-Compounding: Bei kaskadierenden Fehlern exponentielle Verzoegerung fuer Half-Open-Sonden verwenden: bei Schritt 3 sondieren, dann Schritt 6, dann Schritt 12. Maximales Intervall bei 20 Schritten kappen, um permanente Schaltkreissperrung zu verhindern. Das verhindert, dass schnelle Sonden ein sich erholendes System ueberstrapazieren.
Erwartet: Korrelierte Fehler werden als einzelnes systemisches Ereignis erkannt und behandelt statt als N unabhaengige Sicherungsautomaten-Ausloesungen. Das Fehlerbudget zaehlt das systemische Ereignis einmal, nicht N-mal.
Bei Fehler: Wenn Korrelationserkennung nicht praktikabel ist (Fehler haben unterschiedliche Fehlersignaturen trotz gemeinsamer Ursache), auf unabhaengige Einzel-Tool-Sicherungsautomaten zurueckfallen. Das System degradiert weiterhin graceful — es verbraucht das Budget nur schneller.
Schritt 10: Pre-Call-Tool-Auswahlschicht
Bevor die Circuit-Breaker-Schleife (Schritt 3) eingesetzt wird, optional pruefen, ob ein Tool verfuegbar ist und wahrscheinlich erfolgreich sein wird. Das reduziert unnoetige Sicherungsautomaten-Ausloesungen durch vorhersehbare Fehler.
Pre-Call-Pruefungen:
| Pruefung | Methode | Aktion bei Fehler |
|---|---|---|
| Tool existiert | Pruefen ob Tool in allowed-tools-Liste ist | Ueberspringen — nicht mal versuchen |
| MCP-Server-Gesundheit | Server-Prozess/Verbindungsstatus pruefen | Sofort zu Alternative routen |
| Ressourcenverfuegbarkeit | Pruefen ob Zieldatei/URL/Endpunkt existiert | Routen oder Umfang reduzieren |
Entscheidungstabelle:
Pre-Call-Bewertung:
VERFUEGBAR → mit Circuit-Breaker-Schleife fortfahren (Schritt 3)
DEGRADIERT → mit Vorsicht fortfahren, Fehlerschwelle um 1 verringern
NICHT VERFUEGBAR → Tool ueberspringen, zu Alternative routen (Schritt 4) ohne Budget zu verbrauchen
Pre-Call-Pruefungen sind beratend, nicht massgeblich. Ein Tool, das Pre-Call-Pruefungen besteht, kann waehrend der Ausfuehrung immer noch fehlschlagen. Der Circuit Breaker bleibt der primaere Zuverlaessigkeitsmechanismus.
Erwartet: Vorhersehbare Fehler (fehlende Tools, nicht erreichbare Server) werden abgefangen, bevor sie das Fehlerbudget verbrauchen. Der Circuit Breaker behandelt nur echte Laufzeitfehler.
Bei Fehler: Wenn Pre-Call-Pruefungen nicht verfuegbar sind oder zu viel Overhead hinzufuegen, diesen Schritt vollstaendig ueberspringen. Die Circuit-Breaker-Schleife in Schritt 3 behandelt alle Fehler — Pre-Call-Auswahl ist eine Optimierung, kein Erfordernis.
Validierung
- Faehigkeitskarte deckt alle Tools mit dokumentierten Alternativen und Fallbacks ab
- Circuit-Breaker-Zustandstabelle ist fuer alle Tools initialisiert
- Zustandsuebergaenge folgen dem CLOSED -> OPEN -> HALF-OPEN -> CLOSED-Zyklus
- Fehlerschwelle ist explizit deklariert (nicht implizit)
- Alternatives-Routing wird vor Umfangsreduzierung versucht
- Umfangsreduzierung ist mit zurueckgestellten Unteraufgaben und Gruenden dokumentiert
- Veraltete Daten sind explizit gekennzeichnet — nie als aktuell praesentiert
- Fehlerbudget wird mit Pause-und-Bericht bei Erschoepfung durchgesetzt
- Expeditor-Logik fuehrt keine Tool-Aufrufe aus oder wiederholt fehlgeschlagene Aufrufe
- Statusbericht enthaelt abgeschlossene Arbeit, unvollstaendige Arbeit und Tool-Gesundheit
- Keine stillen Fehler — jedes Ueberspringen, jede Zurueckstellung und Degradierung ist dokumentiert
- Kaskadende Fehler werden erkannt, wenn 3+ Tools gleichzeitig oeffnen
- Systemischer Fehlermodus pausiert alle Sonden bis Infrastruktur als erholt bestaetigt
- Pre-Call-Pruefungen (falls verwendet) verbrauchen kein Fehlerbudget bei vorhersehbaren Fehlern
Haeufige Stolperfallen
- Wiederholen statt Circuit-Breaken: Ein defektes Tool wiederholt aufrufen verschwendet das Fehlerbudget und das Kontextfenster. Drei aufeinanderfolgende Fehler sind ein Muster, kein Pech. Den Schaltkreis oeffnen.
- Im Expeditor kochen: Die Orchestrierungsschicht sollte entscheiden was versucht werden soll, nicht wie defekte Tools repariert werden. Wenn der Expeditor Workaround-Befehle fuer Bash-Fehler erstellt, hat er die Trennungsgrenze ueberschritten.
- Stille Umfangsreduzierung: Unteraufgaben weglassen ohne sie zu dokumentieren produziert Ergebnisse, die vollstaendig aussehen aber es nicht sind. Immer berichten, was uebersprungen wurde.
- Veraltete Daten als aktuell behandeln: Gecachte oder zuvor abgerufene Ergebnisse spiegeln moeglicherweise nicht den aktuellen Zustand wider. Unsicherheit kennzeichnen statt sie zu ignorieren.
- Schaltkreise zu schnell oeffnen: Ein einzelner vorueberhgehender Fehler sollte den Schaltkreis nicht oeffnen. Eine Schwelle (Standard: 3) verwenden, um Rauschen von Signal zu trennen.
- Nach dem Oeffnen nie sondieren: Ein dauerhaft offener Schaltkreis bedeutet, dass der Agent nie entdeckt, dass sich ein Tool erholt hat. Half-Open-Sonden sind fuer die Erholung unerlasslich.
- Fehlerbudget ignorieren: Ohne Budget kann ein Agent Dutzende von Fehlern ueber verschiedene Tools anhaeufen, waehrend er auf dem Papier noch "Fortschritt macht". Das Budget erzwingt einen ehrlichen Pruefpunkt.
- Kaskadierendes Backoff-Multiplizieren: Wenn mehrere Tools in einer Abhaengigkeitskette jeweils ihren eigenen exponentiellen Backoff anwenden, waechst die Gesamtverzoegerung multiplikativ. Gesamtkumulative Verzoegerung ueber die Kette kappen, nicht nur pro Tool.
- Veraltete Entdeckungs-Scores: Pre-Call-Auswahl (Schritt 10) cached Tool-Verfuegbarkeitsbewertungen. Wenn der Cache nicht invalidiert wird, wenn sich Bedingungen aendern, koennte der Agent ein erhol-tes Tool ueberspringen oder ein nicht verfuegbares versuchen. Scores nach jedem systemischen Fehlerereignis neu pruefen.
Verwandte Skills
fail-early-pattern— komplementaeres Muster: fail-early validiert Eingaben vor Arbeitsbeginn; circuit-breaker verwaltet Fehler waehrend der Arbeitescalate-issues— wenn das Fehlerbudget erschoepft oder die Umfangsreduzierung erheblich ist, an einen Spezialisten oder Menschen eskalierenwrite-incident-runbook— wiederkehrende Tool-Ausfall-Muster als Runbooks fuer schnellere Diagnose dokumentierenassess-context— bewerten ob der aktuelle Ansatz angepasst werden kann, wenn mehrere Tools degradiert sind; paart mit Umfangsreduzierungsentscheidungendu-dum— Zweig-Uhr-Architektur trennt Beobachtung von Entscheidung; komplementaeres Muster zur Reduzierung der Beobachtungskosten in Agentschleifen
Repositorio GitHub
Habilidades relacionadas
executing-plans
DiseñoUtilice la habilidad executing-plans cuando tenga un plan de implementación completo para ejecutar en lotes controlados con puntos de revisión. Esta habilidad carga y revisa críticamente el plan, luego ejecuta tareas en pequeños lotes (por defecto 3 tareas) mientras reporta el progreso entre cada lote para la revisión del arquitecto. Esto asegura una implementación sistemática con puntos de control de calidad integrados.
requesting-code-review
DiseñoEsta habilidad despacha un subagente revisor de código para analizar los cambios en el código frente a los requisitos antes de proceder. Debe usarse después de completar tareas, implementar funciones principales o antes de fusionar con la rama principal. La revisión ayuda a detectar problemas de forma temprana al comparar la implementación actual con el plan original.
connect-mcp-server
DiseñoEsta habilidad proporciona una guía integral para que los desarrolladores conecten servidores MCP a Claude Code mediante transportes HTTP, stdio o SSE. Cubre la instalación, configuración, autenticación y seguridad para integrar servicios externos como GitHub, Notion y APIs personalizadas. Úsala al configurar integraciones MCP, al configurar herramientas externas o al trabajar con el Protocolo de Contexto del Modelo de Claude.
web-cli-teleport
DiseñoEsta habilidad ayuda a los desarrolladores a elegir entre las interfaces web y CLI de Claude Code mediante el análisis de tareas, y luego permite la teletransportación fluida de sesiones entre estos entornos. Optimiza el flujo de trabajo gestionando el estado y el contexto de la sesión al cambiar entre web, CLI o móvil. Úsala para proyectos complejos que requieren diferentes herramientas en varias etapas.
