Kern des Patterns
Fallback-Recovery Agent ist ein Pattern, bei dem ein Agent bei einem Fehler nicht einfach stoppt, sondern einen kontrollierten Wiederherstellungsprozess durchlĂ€uft: Fehler klassifizieren, Fallback anwenden und die AusfĂŒhrung fortsetzen.
Wann nutzen: wenn es wichtig ist, nicht beim ersten Fehler zu scheitern, sondern die AusfĂŒhrung kontrolliert wiederherzustellen.
In realen Systemen sind Ausfalle unvermeidbar:
- Timeouts externer APIs
- vorubergehende Tool-Nichtverfugbarkeit
- Validierungsfehler in der Antwort
- partielle Outages von Abhangigkeiten
Der Fallback-Recovery-Ansatz verwandelt "Fehler = stop" in "Fehler = kontrolliertes Recovery-Szenario".

Problem
Stell dir vor, ein Agent erstellt einen taglichen Bericht fur einen Kunden:
- Metriken aus einer API lesen
- Tabelle zusammenstellen
- Ergebnis senden
Im zweiten Schritt liefert die API timeout.
Ohne Recovery-Logik stoppt der workflow einfach.
Ein lokaler Fehler sollte nicht den gesamten Prozess zerstoren, wenn die restlichen Schritte noch funktionsfahig sind.
Das Ergebnis:
- Deadline verpasst
- Zwischenfortschritt verloren
- manueller Neustart von null
- unvorhersehbares Verhalten in Prod
Das ist das Kernproblem: Ohne Recovery-Strategie bricht schon ein einzelner Fehler das gesamte Szenario.
Losung
Fallback-Recovery fuhrt eine recovery-policy fur kontrollierte Wiederherstellung nach Fehlern ein.
Analogie: Das ist wie Autosave im Editor. Wenn das Programm absturzt, startest du nicht von vorn, sondern machst beim letzten sicheren Zustand weiter. Die gleiche Logik gilt hier, aber mit klaren Grenzen.
Grundprinzip: Nicht jeder Fehler sollte hart mit stop enden. Ein Teil der Fehler muss klassifiziert und sicher wiederhergestellt werden.
Der Agent kann retry vorschlagen, aber die Ausfuhrungsschicht entscheidet:
- ob
retryerlaubt ist - ob
fallbackerforderlich ist - ob
escalation/stopnotig ist
Kontrollierter Ablauf:
- Erkennen: Fehler erfassen
- Klassifizieren: Fehlertyp bestimmen
- Entscheiden:
retry/fallback/escalation - Wiederherstellen: ab Checkpoint fortsetzen
- Sicher beenden: mit transparentem
stop_reasonstoppen
Das bringt:
- Wiederherstellung langer Prozesse nach temporaren Ausfallen
- sanfte Degradierung (
cached/partial result) - keine Duplikation bereits erfolgreicher Schritte
- transparenten Grund fur den Stopp
Funktioniert gut, wenn:
- Limits fur
max_retriesundmax_fallbacksgesetzt sind - Checkpoint nach sicherem Fortschritt gespeichert wird
- Klassifikation
retriable/non-retriabletrennt - High-Risk-Falle nicht automatisch wiederhergestellt werden
Das Modell kann unendlich retry wollen, aber die recovery-policy definiert die sicheren Grenzen.
Wie es funktioniert
Kritisch: Recovery muss Grenzen haben.
max_retriesundmax_fallbacksstep_timeoutundtotal_timeoutstop_reasonfur jeden Exit- Verbot von âfallback -> retry -> fallbackâ ohne Zahler
Vollstandiger Flow: Detect â Classify â Recover â Resume/Stop
Erkennen
Das System erfasst einen Fehler: timeout, tool error, invalid output oder policy violation.
Klassifizieren
Der Fehler wird nach Typ klassifiziert: retriable, tool_unavailable, invalid_output, non_retriable, high_risk.
Wiederherstellen
Policy anwenden: Retry mit backoff, Fallback auf ein anderes Tool, Degrade Mode (partial result / cached data) oder Eskalation an einen Menschen.
Fortsetzen/Stoppen
Wenn Recovery erfolgreich ist, geht der Prozess ab dem letzten Checkpoint weiter. Sonst kontrollierter Stopp.
Im Code sieht das so aus
fallbacks_used = 0
for attempt in range(max_retries + 1):
try:
result = run_step(goal, context, timeout_sec=step_timeout)
checkpoint.save(task_id, context, result)
return result
except TimeoutError as err:
kind = "retriable"
except ToolUnavailableError as err:
kind = "tool_unavailable"
except ValidationError as err:
kind = "invalid_output"
except Exception as err:
kind = classify_error(err)
if kind == "retriable" and attempt < max_retries:
sleep(backoff(attempt))
continue
if kind == "tool_unavailable" and fallbacks_used < max_fallbacks:
fallbacks_used += 1
context.append(f"fallback_used={fallbacks_used}")
context.append("route=secondary_tool") # oder alt_model / cached_path
continue
if kind == "high_risk":
return escalate_to_human(goal, err, stop_reason="high_risk")
return stop_with_reason(goal, stop_reason=kind, detail=str(err))
Checkpoints nach einem erfolgreichen Schritt oder nach sicherem Teilfortschritt (idempotent state) speichern. Sonst kann Retry Aktionen duplizieren.
So sieht es wahrend der Ausfuhrung aus
Goal: Kundenbericht erstellen
Step 1: Metriken sammeln
- timeout in der primaren Analytics-API
- classify: retriable
- retry #1 -> fail
- retry #2 -> fail
Fallback:
- Wechsel auf Read-Replica-API
- Erfolg
Resume:
- Bericht erstellt
- Schritt beendet ohne totalen Prozessabbruch
Vollstandiges Fallback-Recovery-Agent-Beispiel
Wann es passt - und wann nicht
Passt
| Situation | Warum Recovery passt | |
|---|---|---|
| â | Instabile externe Tools und flaky APIs/Tooling | Fallback-Pfade und Retries helfen, temporare Fehler ohne kompletten Prozessabsturz zu uberstehen. |
| â | Lange Tasks, bei denen Fortschritt nicht verloren gehen darf | Checkpoint und Resume erlauben Wiederaufnahme ab dem letzten stabilen Schritt. |
| â | SLA/SLO-Anforderungen an Prozessstabilitat | Ein Recovery-Loop hilft, Verfugbarkeits- und Zuverlassigkeitsziele einzuhalten. |
| â | Du brauchst explizite stop reasons statt silent fail | Das Pattern formalisiert Stop-Grunde und verbessert die Observability von Fehlern. |
Passt nicht
| Situation | Warum Recovery nicht passt | |
|---|---|---|
| â | Einmaliges Szenario, in dem Fehler nicht kritisch sind | Eine komplexe Recovery-Schicht ist teurer als der potenzielle Nutzen. |
| â | Retry/Fallback ist durch Business-Regeln verboten | Es gibt keine erlaubten Wiederherstellungspfade, daher ist das Pattern nicht anwendbar. |
| â | Kein Checkpoint/State-Management | Technisch ist korrektes Wiederherstellen des Fortschritts nach Fehlern nicht moglich. |
Denn ein Recovery-Pattern erhoht die operative Komplexitat: Fehlerlogik, Zustand und Wartungs-Overhead.
Unterschied zu Supervisor
| Supervisor | Fallback-Recovery | |
|---|---|---|
| Wann es greift | Vor der Ausfuhrung einer Aktion | Nach Ausfall oder Fehler |
| Hauptrolle | Policy-Kontrolle und Risikobegrenzung | Ausfuhrungsstabilitat und Wiederherstellung |
| Entscheidungstypen | freigeben / uberarbeiten / blockieren / eskalieren | retry / fallback / resume / stop |
| Kernnutzen | Unsichere Aktionen verhindern | Prozess bei Fehlern nicht zum Einsturz bringen |
Supervisor ist Pravention. Fallback-Recovery ist Wiederherstellung nach Fehlern.
Wann Fallback-Recovery nutzen (vs andere Patterns)
Nutze Fallback-Recovery, wenn du Ausfuhrung nach Fehlern wiederherstellen musst statt den ganzen Prozess zu stoppen.
Kurzer Test:
- wenn du "retry/fallback/escalation nach einem Fehler" brauchst -> Fallback-Recovery
- wenn du "riskante Aktion schon vor Ausfuhrung stoppen" musst -> Guarded-Policy Agent
Vergleich mit anderen Patterns und Beispiele
Schnelle Spickzettel:
| Wenn die Aufgabe so aussieht... | Nutze |
|---|---|
| Kurzer Check vor der finalen Antwort | Reflection Agent |
| Tiefe kriteriumsbasierte Kritik und Umschreiben der Antwort | Self-Critique Agent |
| Prozess muss nach Timeout, Exception oder Tool-Absturz wiederhergestellt werden | Fallback-Recovery Agent |
| Strenge Policy-Checks vor riskanten Aktionen | Guarded-Policy Agent |
Beispiele:
Reflection: "Vor der finalen Antwort Logik, Vollstandigkeit und offensichtliche Fehler kurz prufen."
Self-Critique: "Antwort mit Checkliste (Genauigkeit, Vollstandigkeit, Risiken) bewerten, dann umschreiben."
Fallback-Recovery: "Wenn API nicht antwortet: retry -> fallback-Quelle -> Eskalation."
Guarded-Policy: "Vor externem Datensenden Policy prufen: Ist diese Aktion erlaubt?"
Mit anderen Patterns kombinieren
- Fallback-Recovery + ReAct: Wenn der Fehler mitten im Loop passiert, wiederholt der Agent nur den fehlerhaften Schritt statt bei null zu starten.
- Fallback-Recovery + Orchestrator: Bei paralleler Ausfuhrung wird nur der defekte Branch wiederhergestellt, andere Subtasks laufen weiter.
- Fallback-Recovery + Supervisor: Vor Recovery werden Policies gepruft, damit der Fallback keine Sicherheitsregeln verletzt.
Kurzfassung
Fallback-Recovery Agent:
- Erkennt und klassifiziert Fehler
- Wendet
retry/fallback-Policies an - Kehrt uber Checkpoint zur Ausfuhrung zuruck
- Stoppt kontrolliert, wenn Wiederherstellung unmoglich ist
Vorteile und Nachteile
Vorteile
stellt sich nach Ausfallen schnell wieder her
reduziert Service-Downtime
halt den Prozess bei Fehlern stabil
kritische Szenarien lassen sich leichter kontrollieren
Nachteile
Fallback-Szenarien mussen vorab durchdacht werden
zusatzliche Logik macht das System komplexer
nicht jeder Fehler kann automatisch wiederhergestellt werden
FAQ
Q: Reicht es, einfach Retries hinzuzufugen?
A: Nein. Das minimale sichere Set ist max_retries + backoff + step_timeout + stop_reason. Ohne das werden Retries zu einem Loop, der Budget verbrennt.
Q: Wann ist Fallback besser als Retry?
A: Wenn der Fehler systemisch ist: Tool nicht verfugbar, quota erschopft oder Endpoint degradiert.
Q: Warum checkpoint, wenn es schon fallback gibt?
A: Fallback andert den Ausfuhrungspfad, aber der Checkpoint bewahrt den Fortschritt, damit nicht das ganze Szenario von vorne lauft.
Was kommt als Nachstes
Fallback-Recovery bringt Ausfallstabilitat.
Aber wie stellt man sicher, dass riskante Aktionen ohne Policy-Prufung gar nicht gestartet werden?