Lernleitfaden: Praktischer Teil 9. Modell-Routing und Token-Budget

Lektion 3 von 5 im Modul «Praktischer Teil 9. Modell-Routing und Token-Budget»
Sie sehen die Lektion ohne Anmeldung an. Anmelden, um Ihren Fortschritt zu speichern und Tests zu absolvieren.

Thema: Angewandter Teil 9. Modell-Routing und Token-Budget

Schwierigkeitsgrad: Mittelstufe

Geschätzte Studienzeit: 4-6 Stunden (Theorie + Praxis), zusätzlich 2 Stunden für den vollständigen Track mit Schwellenwert-Kalibrierung

Voraussetzungen: Vertrautheit mit dem SDD-Zyklus (Signal-Erfassung, Erkennung, Diagnose aus dem ersten Band)

Teil 15 des ersten Bands: Agentenersetzbarkeit

Teil 14 des ersten Bands: Projektfähigkeiten und Qwen Code-Hooks

Grundlegende Python- und Kommandozeilenkenntnisse

Verständnis der Konzepte MTTR, SLA, Eskalation von Vorfällen

Lernziele: Ein Ausfallszenario der günstigen Modell-Ebene modellieren und überprüfen, wobei nur kritische Aufgaben auf die teure Ebene durchgelassen werden und token_health_min ≥ 0,5 erhalten bleibt

Token-Verteilung nach Phasen des Vorfallmanagements (Triage, Klassifizierung, Diagnose, Planung, Behebung, Postmortem) mit einem Verhältnis von 90/10 zwischen local-coder und frontier-reviewer aufbauen

Eine Anti-Goodhart-Regel für die Validierung der Budgetoptimierung formulieren und anwenden, die MTTR mit vier Wächtermetriken verknüpft

Bedingungen für die Aktivierung des Notfallmodus (red button) definieren und begründen, wann der manuelle Modus sicherer ist als die Fortsetzung der Automatisierung

Ein Artefakt budget-note.md für das Capstone-Projekt erstellen, das Ausfallrisiko, Auswirkung, Guard-Schwellenwert und Entscheidung festhält

Überblick: Dieses Kapitel verwandelt das tägliche Token-Budget aus einer statischen Grenze in eine steuerbare Routing-Tabelle des SDD-Pipelines. Ebenenbasierte Budgets (tier-budgeting) verteilen Tokens zwischen Modellstufen nach Arbeitsphasen: Das günstige Modell local-coder verarbeitet Routine (Triage, Klassifizierung, Entwurfsdiagnose), die teure frontier-reviewer wird nur für kritische Reviews, strittige Entscheidungen und Post-Analyse aktiviert. Die Schlüsselkompetenz ist die Ausfallmodellierung: Bei einem Ausfall der günstigen Ebene darf das System nicht automatisch die gesamte Warteschlange auf die teure Ebene umleiten, sonst ist das Kontingent in Minuten erschöpft und echte P0/P1 bleiben ohne Ressourcen. Das Kapitel enthält ausführbare Beispiele (compile.py, simulate.py, inspect.py), Ausfallszenarien für 15 und 45 Minuten sowie die Integration mit der Anti-Goodhart-Validierung zur Verhinderung von Metrikverzerrungen.

Schlüsselkonzepte: Ebene (tier): Modellstufe in der Verarbeitungshierarchie. local-coder — Basisebene für Massenroutine, frontier-reviewer — Oberebene für strittige und hochrisikoreiche Fälle. Rollen, keine Modellnamen: In verschiedenen Projekten können unterschiedliche Implementierungen vorliegen.

Token-Health: Zusammenfassender Indikator für die Budgetgesundheit, der das Verhältnis ausgegebener und verbleibender Tokens zum Plan verfolgt. Der Minimalwert token_health_min dient als Guard-Schwellenwert zur Blockierung automatischer Umschaltungen.

Failover zu Frontier: Lastumschaltplan bei Ebenenausfall. Rangfolgengesteuerte Umschaltung: Nur Aufgaben mit hohem Schweregrad und Alter gehen an frontier-reviewer, der Rest in die degraded queue oder den manuellen Kanal.

Degraded Queue: Degradierungswarteschlange — Aufgaben, die bei Ausfall der günstigen Ebene nicht im Normalmodus bearbeitet werden können, aber noch keine sofortige Eskalation auf die teure Ebene erfordern.

Manuelle Warteschlange nach 120s: Manueller Kanal, der nach einem Timeout von 120 Sekunden für nicht automatisch bearbeitete Aufgaben geöffnet wird. Kein Rückfall ins Chaos: Erbt denselben Nachweisprotokoll und PostToolUse-Prüfprozess.

Control Reserve: Sicherheitspuffer des Budgets, der nur bei Risikoanstieg, Warteschlangenwachstum oder Unsicherheit aktiviert wird. Nicht „Rest für alles Mögliche".

Red Button (Notfallmodus): Geschützter Steuerungsmodus, der bei formalen Bedingungen aktiviert wird: zwei Fenster mit Risikoanstieg bei token_health, Warteschlange über dem Limit, SLA-Überschreitung bei kritischem Schweregrad oder Ausfall von local-coder. Begrenzt neue Warteschlangen, verbietet massenhafte automatische Behebungen, behält frontier-reviewer für P0/P1.

Anti-Goodhart-Validierung: Regel, die verbietet, einen Release als erfolgreich zu werten, wenn eine Metrik auf Kosten der Degradierung anderer gestiegen ist. MTTR wird zusammen mit escalation_share, silent_p0, unresolved_manual_ratio, postmortem_gap und token_health_min validiert.

Budget-Keeper (Budgetverwalter): Dienst zur Budgetkontrolle, der minütlich spent[p], queue[p], quota[p], Vorfallsalter, Blast Radius und Confidence-Gap neu berechnet, um Routing-Entscheidungen zu treffen.

Budget-Drill: Täglicher Übungslauf: Der gestrige Benachrichtigungsstrom wird durch das aktuelle budget_network.yaml mit künstlicher Abschaltung von local-coder für 15/30/45 Minuten gespielt, um die Systemempfindlichkeit zu kalibrieren.

Übungsaufgaben: Titel: Kompilierung des Budgetplans und Überprüfung der Verhältnisse

Problem: Im Verzeichnis book2/examples/budget-keeper einen Budgetplan aus specs/budget_network.yaml kompilieren. Überprüfen, dass daily_budget_tokens gleich 10 000 000 ist, die Summe der Kontingente der Local-Ebene 9 000 000 und der Frontier-Ebene 1 000 000 beträgt. Ergebnis mit dem Referenzwert outputs/budget_plan.example.json vergleichen.

Lösung: 1. cd book2/examples/budget-keeper

  1. python3 scripts/compile.py --budget-spec specs/budget_network.yaml --out out/budget_plan.json
  2. Feld daily_budget_tokens prüfen: 10000000
  3. Local-coder-Summe berechnen: 3000000 + 2000000 + 1500000 + 800000 + 700000 + 300000 + 700000 = 9000000
  4. Frontier-reviewer-Summe berechnen: 120000 + 140000 + 180000 + 120000 + 200000 + 240000 + 0 = 1000000
  5. diff out/budget_plan.json outputs/budget_plan.example.json — Abweichungen sollten nicht vorhanden sein (oder nur in Kommentaren)

Schwierigkeitsgrad: Anfänger

Titel: Simulation eines 45-minütigen Ausfalls und komplexe Inspektion

Problem: Einen Ausfall von local-coder für 45 Minuten mit 20 Vorfällen in der Warteschlange und manuellem Timeout von 120 Sekunden simulieren. Vier Bedingungen gleichzeitig prüfen: failover_to_frontier == 5, degraded_queue == 15, manual_queue_after_120s == 15, token_health_min >= 0,5. Erklären, warum Metriken nicht einzeln geprüft werden dürfen.

Lösung: 1. python3 scripts/simulate.py --plan out/budget_plan.json --scenario scenarios/fail_local_45m.json --out out/fail_result.json

  1. python3 scripts/inspect.py --result out/fail_result.json --query "failover_to_frontier==5 && degraded_queue==15 && manual_queue_after_120s==15 && token_health_min>=0.5"
  2. Erwarteter Rückgabecode: 0 (alle Bedingungen erfüllt)
  3. Warum nicht einzeln: Die Prüfung nur auf failover_to_frontier==5 garantiert nicht, dass die übrigen 15 Aufgaben nicht über einen anderen Mechanismus in frontier gelangt sind; die Prüfung nur auf token_health zeigt nicht die Warteschlangenverteilung; die komplexe Bedingung mit && garantiert ein Gesamtbild — das Versagen mindestens einer Metrik bricht den Lauf und erfordert Analyse

Schwierigkeitsgrad: Mittelstufe

Titel: Vergleichende Analyse von 15-minütigem und 45-minütigem Ausfall

Problem: Einen kurzen Ausfall von local-coder für 15 Minuten simulieren. token_health_min >= 0,7 prüfen. Erklären, warum ein kurzer Ausfall die Frontier-Ebene weniger aggressiv belastet und wie dies die Wahl des Guard-Schwellenwerts für Production beeinflusst.

Lösung: 1. python3 scripts/simulate.py --plan out/budget_plan.json --scenario scenarios/fail_local_15m.json --out out/fail_15m_result.json

  1. python3 scripts/inspect.py --result out/fail_15m_result.json --query "token_health_min>=0.7"
  2. Rückgabecode: 0
  3. Erklärung: Bei 15-minütigem Ausfall sammeln sich weniger Aufgaben in der Warteschlange, weniger Eskalationen auf frontier-reviewer sind nötig, weniger Reservebudget wird verbraucht. Bei 45-minütigem Ausfall wächst die Warteschlange, der Druck auf die Frontier-Ebene steigt, token_health sinkt stärker.
  4. Fazit für Production: Ein Guard-Schwellenwert von 0,60 (unter dem beobachteten Tief von 0,5 beim 45-minütigen Ausfall, aber mit Puffer) blockiert automatische Umschaltung bei vorhersehbaren Störungen; der 45-minütige Ausfall durchbricht den Wächter und erfordert manuelle Entscheidung

Schwierigkeitsgrad: Mittelstufe

Titel: Risikoformulierung für das Capstone-Projekt

Problem: Auf Basis der Simulationsergebnisse einen Eintrag in capstone/budget-note.md für den eigenen Hauptfall (z.B. high_memory_usage) formulieren. Risiko, Auswirkung, simulated_floor, alert_threshold und decision festhalten. Den Unterschied zwischen simulated_floor und alert_threshold erklären.

Lösung: Minimales Fragment:

risk: "local-coder 45m nicht verfügbar"
effect: "5 Aufgaben gehen an frontier-reviewer, 15 bleiben degraded/manual"
simulated_floor: "token_health_min == 0.5 (Absenkung bei 45m)"
alert_threshold: "token_health_min < 0.60 (Wächter aus Anti-Goodhart-Tabelle)"
decision: "nicht die gesamte Warteschlange auf die teure Ebene umleiten"

Unterschied: simulated_floor (0,5) — beobachtetes Simulationsminimum, tatsächlicher Tiefstwert im Testszenario. alert_threshold (0,60) — Linie, unter der der Wächter automatische Umschaltung in Production blockiert. Zwischen 0,5 und 0,60 liegt die Vorwarnzone, in der das System noch funktioniert, aber Operator-Aufmerksamkeit erfordert.

Schwierigkeitsgrad: Mittelstufe

Titel: Kalibrierung eines reduzierten Budgets (5M)

Problem: specs/budget_network_5m.yaml für die Kalibrierungsvariante mit 5M Tokens verwenden. Erhaltung des 90/10-Verhältnisses prüfen. Denselben 45-minütigen Ausfall simulieren und analysieren, wie die Halbierung des Gesamtbudgets das Systemverhalten und die Akzeptanz von Guard-Schwellenwerten beeinflusst.

Lösung: 1. python3 scripts/compile.py --budget-spec specs/budget_network_5m.yaml --out out/budget_plan_5m.json

  1. Prüfen: daily_budget_tokens == 5000000, Local-Summe == 4500000, Frontier-Summe == 500000
  2. python3 scripts/simulate.py --plan out/budget_plan_5m.json --scenario scenarios/fail_local_45m.json --out out/fail_result_5m.json
  3. python3 scripts/inspect.py --result out/fail_result_5m.json --query "token_health_min>=0.5"
  4. Analyse: Bei Budgethalbierung sinken die absoluten Kontingente, aber der relative Druck auf das System steigt — derselbe Strom von 20 Vorfällen verbraucht einen größeren Anteil der Reserve. token_health_min kann unter 0,5 sinken oder der Guard-Schwellenwert 0,60 wird unerreichbar. Fazit: Bei proportionaler Budgetskalierung zum Strom control_reserve-Puffer beibehalten; bei unverhältnismäßigem Strom Guard-Schwellenwert überdenken oder Frontier-Anteil auf 15-20% erhöhen

Schwierigkeitsgrad: Fortgeschritten

Titel: Prüfung des Anti-Goodhart-Gateways

Problem: Ein YAML-Fragment validation.md für das Budget-Gateway formulieren. Bedingung: Wenn MTTR P95 < 5 Minuten UND Eskalationsanteil < 8%, dann Prüfung fehlschlagen bei silent_p0 > 2%, unresolved_manual_ratio > 5%, postmortem_gap > 10% oder token_health_min < 0,60. Erklären, warum genau diese paarige Prüfung.

Lösung: Fragment validation.md:

checks:
  - id: anti_goodhart_budget
    if:
      all:
        - mttr_p95 < "5m"
        - escalation_ratio < 0.08
    then:
      fail_if:
        - silent_p0 > 0.02
        - unresolved_manual_ratio > 0.05
        - postmortem_gap > 0.10
        - token_health_min < 0.60

Warum paarige Prüfung: Ohne sie könnte das System MTTR optimieren, indem es Eskalationen unterdrückt (stille P0), komplexe Aufgaben in den manuellen Kanal drängt ohne Postmortem, oder das Frontier-Budget erschöpft. Verbesserung einer Metrik auf Kosten anderer — klassische Goodhart-Verzerrung. Das Gateway blockiert solche „Einsparungen".

Schwierigkeitsgrad: Fortgeschritten

Fallstudien: Titel: Ausfall von local-coder in Production: Vorfall autoscale_200pct

Szenario: Production-System appointments-api, morgendlicher Lastspitze. Um 11:00 wird der lokale Endpunkt des günstigen Modells local-coder für 45 Minuten unerreichbar (Netzwerkstörung im Cluster). 20 Vorfälle zur automatischen Skalierung auf 200% Last fallen in die Warteschlange. Manueller Timeout auf 120 Sekunden eingestellt. Tagesbudget: 10M Tokens mit Verteilung 9M/1M zwischen local-coder und frontier-reviewer.

Herausforderung: Klassische Falle: Bei Ausfall der günstigen Ebene den gesamten Verkehr automatisch auf die teure Ebene umleiten. Dies führt zur Erschöpfung der 1M-Kontingente von frontier-reviewer in Minuten, danach bleiben echte P0/P1-Vorfälle ohne Ressourcen. Alternative Falle: Alle Aufgaben in der Degradierungswarteschlange belassen, was MTTR erhöht und SLA für kritische Fälle verletzen kann. Dritte Falle: token_health nicht überwachen, den Absacken bis zur Gefahrenstufe nicht bemerken.

Lösung: Rangfolgengesteuerte Failover-Politik angewendet: Nur 5 Aufgaben mit maximalem Blast Radius (Auswirkungsradius) und Alter > 90 Sekunden gehen an frontier-reviewer. 15 Aufgaben bleiben in der degraded queue. Nach 120 Sekunden öffnet sich der manuelle Kanal manual_queue_after_120s für nicht automatisch bearbeitete Aufgaben. Der Budgetverwalter berechnet minütlich token_health, spent[p], queue[p], quota[p] neu. Bei token_health_min < 0,60 (Guard-Schwellenwert) wird automatische Umschaltung blockiert, manuelle Entscheidung erforderlich. In diesem Szenario erreicht token_health_min 0,5 — durchbricht den Wächter, red_button review wird aktiviert.

Ergebnis: Alle 4 Inspektionsbedingungen gleichzeitig erfüllt: failover_to_frontier == 5, degraded_queue == 15, manual_queue_after_120s == 15, token_health_min >= 0,5. Die teure Ebene bleibt für echte P0/P1 erhalten. MTTR für kritische Aufgaben nicht beeinträchtigt. Der manuelle Kanal erbte das Nachweisprotokoll, was nach Wiederherstellung von local-coder einen Audit aller Entscheidungen ermöglichte. Gestufter Rückbau: zuerst 30% Kontingent von local-coder für Triage/Klassifizierung, dann Diagnose/Planung nach drei stabilen Fenstern, vollständige Rückkehr erst nach PostToolUse-Audit.

Erkenntnisse: Metriken des Ausfalls dürfen nicht einzeln geprüft werden — nur die komplexe Bedingung mit && garantiert Integrität

Zwischen simulated_floor (0,5) und alert_threshold (0,60) ist Puffer für Vorwarnung nötig, nicht nur für Notfallreaktion

Manueller Modus — kein Rückfall ins Chaos, sondern kontrollierte Degradierung mit Erhalt der Beweiskette

Gestufter Rückbau nach Stabilisierung verhindert zweite Fehlerkaskade durch vorzeitige Wiederherstellung

Verwandte Konzepte: failover_to_frontier

token_health_min

degraded_queue

manual_queue_after_120s

red_button

Anti-Goodhart-Validierung

budget-drill

Titel: Täglicher budget-drill im Team des Zahlungsgateways

Szenario: Das Vorfallbearbeitungsteam eines Zahlungsgateways hat Ebenen-Routing mit einem Tagesbudget von 50M Tokens eingeführt (Verhältnis 85/15 aufgrund hoher Aufgabenkomplexität). Täglich um 9:00 startet der budget-drill: Der gestrige Strom von ~800 Benachrichtigungen wird durch budget_network.yaml mit künstlicher Abschaltung von local-coder für 15, 30 und 45 Minuten gespielt.

Herausforderung: Bei Stromwachstum von 200 auf 800 Vorfällen erwies sich das aus dem Lehrbeispiel übernommene Verhältnis 90/10 als unzureichend: Die Frontier-Ebene war selbst bei 15-minütigem Ausfall überlastet. Das Team konnte „normalen Druck" nicht von „politischer Überarbeitung erfordernd" unterscheiden. Silent_p0 begann zu steigen — komplexe Vorfälle wurden ohne Eskalation geschlossen aufgrund fehlender Frontier-Ressourcen.

Lösung: Drill-Laufdaten zeigten: Bei 15-minütigem Ausfall fiel token_health_min auf 0,55 (unter Guard-Schwellenwert 0,60), bei 30-minütigem auf 0,35. Das Team überarbeitete das Verhältnis auf 80/20, erhöhte control_reserve von 700K auf 2M, führte eine Zwischenebene mid-coder für Diagnose/Planung ein (Modell mittlerer Kosten). Guard-Schwellenwert token_health_min auf 0,65 mit Berücksichtigung der neuen Empfindlichkeit korrigiert. Anti-Goodhart-Gateway um Metrik mid_tier_saturation ergänzt.

Ergebnis: Nach Kalibrierung hält 15-minütiger Ausfall token_health_min >= 0,70, 30-minütiger >= 0,50. Silent_p0 sank von 4,2% auf 1,1%. MTTR P95 stabilisierte sich bei 3,2 Minuten ohne Anstieg von unresolved_manual_ratio. Das Team fixierte die Regel: Verhältnisüberprüfung bei Stromänderung > 25% oder bei Drill-Wert token_health_min < 0,60 bei zwei aufeinanderfolgenden Läufen.

Erkenntnisse: Lehrbeispiel-Verhältnis 90/10 — Ausgangspunkt, keine Dogma; Skalierung erfordert Überprüfung

Budget-drill deckt Probleme vor Production-Vorfällen auf, aber nur wenn das Team die Ergebnisse liest, nicht nur CI

Zwischenebene kann effektiver sein als einfache Erhöhung des Frontier-Anteils

Drill-Metriken müssen die operative Politik beeinflussen, nicht nur die YAML-Konfiguration

Verwandte Konzepte: budget-drill

tier-budgeting

control_reserve

Anti-Goodhart-Validierung

token_health_trend_5m

Studientipps: Material sequentiell durcharbeiten: zuerst compile (Strukturverständnis), dann simulate 45m (Ausfall), dann simulate 15m (Vergleich), dann inspect mit komplexer Bedingung. Überspringen eines Schritts zerstört das Verständnis der Empfindlichkeit

Arbeitsheft mit zwei Spalten führen: links — Befehl und Skriptausgabe, rechts — Interpretation („was bedeutet das für mein Projekt"). Dies verwandelt ausführbare Beispiele in projektbezogene Entscheidungen

Diff zwischen out/budget_plan.json und outputs/budget_plan.example.json als Diagnosewerkzeug nutzen, nicht nur als Korrektheitsprüfung. Jede Abweichung — Anlass, die Logik von compile.py zu verstehen

Für Visuelle: Flussdiagramm der 6 Phasen mit zwei Ebenen und drei Ausgängen (frontier, degraded, manual) zeichnen. Markieren, wo genau SLA-Schwellenwerte angewendet werden und wo sich der Guard token_health_min befindet

Für Auditive: Komplexe inspect-Bedingung mit vier Metriken laut aussprechen und jedes && erklären. Wenn die Begründung nicht möglich ist, warum genau 5 Aufgaben in frontier — zum Abschnitt „rangfolgengesteuerte Umschaltung" zurückkehren

Für Kinästhetische: Szenario fail_local_45m.json modifizieren — Warteschlange von 20 auf 40 ändern, duration auf 60 Minuten erhöhen, manual_timeout_sec auf 60 verringern. Ergebnis vorhersagen, dann simulate + inspect prüfen. Falsche Vorhersage — wertvolles Signal zur Verfeinerung des Verständnisses

In capstone/budget-note.md sofort nach jedem erfolgreichen Lauf festhalten, solange der Kontext frisch ist. Aufschub führt zum Verlust von Nuancen zwischen simulated_floor und alert_threshold

„Paarprüfung" mit Kollege durchführen: Einer erklärt, warum nicht die gesamte Warteschlange in frontier darf, der andere erfindet ein Gegenbeispiel, wann das scheinbar sinnvoll wäre. Streit schärft die Anwendungsgrenzen der Politik

Zusätzliche Ressourcen: Examples/budget-keeper/readme.md: Lokales ausführbares Beispiel mit vollständigen Skripten compile.py, simulate.py, inspect.py und Ausfallszenarien

Book/part-04-environment.md: Auswahl eines einzelnen Modells im AgentClinic-Lernsetting — Kontrast zum Ebenen-Routing in Production

Book/part-14-build-your-own-workflow.md: Projektfähigkeiten und Hooks — passender Anknüpfungspunkt für Routing

Book/part-15-agent-replaceability.md: Agentenersetzbarkeit — Voraussetzung für Ebenenwechsel

Appendix-d-threshold-calibration.md#d3-ярусные-бюджеты-глава-9: Vollständiger Kalibrierungstrack: Tabelle „Niedrig / Standard / Hoch" für Budget, Verhältnisse und manual_timeout_sec

Examples/goodhart-validator/scripts/run validation.py: Ausführbares Analogon der Anti-Goodhart-Prüfungen aus Kapitel 10

Book2/examples/budget-keeper/specs/budget network 5m.yaml: Kalibrierungsvariante für die Übung mit reduziertem Budget

Zusammenfassung: Modell-Routing und Token-Budget verwandeln eine statische Grenze in einen steuerbaren Regelkreis: SDD-Phasen → Modell-Ebenung → SLA-Schwellenwerte → rangfolgengesteuerte Umschaltung bei Ausfall → Anti-Goodhart-Validierung. Günstiger local-coder verarbeitet Routine, teurer frontier-reviewer schützt strittige und kritische Fälle. Bei Ausfall der günstigen Ebene die Schlüsselregel: Nicht die gesamte Warteschlange automatisch auf die teure Ebene leiten. Ausführbare Beispiele (compile, simulate, inspect) ermöglichen die Prüfung dieser Regel auf 15- und 45-Minuten-Szenarien, Fixierung der Ergebnisse in budget-note.md und Verknüpfung mit dem Capstone-Projekt. Erfolgreicher Abschluss: Vier inspect-Bedingungen gleichzeitig erfüllt, token_health_min über dem Schwellenwert, Guard-Wächter production-bereit, Anti-Goodhart-Gateway blockiert Metrikverzerrung.

Meine Notizen
0 / 10000

Notizen werden in diesem Browser gespeichert. Auf anderen Geräten erscheinen sie nicht.

Kursmenü

Kurs

Production SDD für Qwen Code CLI. Teil 2
Fortschritt 0 / 100