Dokumentation

Konfidenz-Gating und Eskalation an einen Menschen

Die vorherige Seite argumentierte, dass Code den Schwellenwert besitzen sollte. Diese Seite handelt davon, was der Schwellenwert teilt — die drei Bänder auf beiden Seiten.

Drei Bänder, nicht zwei

Echte Projekte machen selten „automatisch oder nicht” daraus. Drei Bänder sind die übliche Form:

Band Bedingung Aktion
Automatisch Konfidenz über dem oberen Schwellenwert und zusätzliche Prüfungen bestehen Einfach tun
Eskalieren Fällt in die Mitte An einen Menschen übergeben
Verwerfen Konfidenz unter dem unteren Schwellenwert Nichts tun und auch nicht die Aufmerksamkeit eines Menschen verbrauchen

Das dritte Band ist leicht zu übersehen und ist das billigste der drei. „Nicht angeschaut” und „eine Person wirft einen Blick darauf” unterscheiden sich um einen Menschen.

Eine Triage-Implementierung ist typisch: alarmiere nur, wenn P(SEV1) + P(SEV2) ≥ 0.80; verwerfe unterhalb von 0.20 nur, wenn eine Umsetzbarkeitsprüfung ebenfalls widerspricht; schicke das mittlere Band an einen Menschen.

Das mittlere Band ist, wo die eigentlichen Probleme leben

Sobald die drei Bänder existieren, wandert jede schwierige Frage in das mittlere:

Es ist menschliche Kapazität, keine freie Kapazität. Je breiter das Band, desto mehr Eskalationen, desto mehr bearbeitet eine Person. Eine Eskalationsrate von 9% klingt niedrig — bis die Basisrate Tausende pro Tag beträgt.

Es braucht eine Absicherung, sonst bleibt es still hängen. Sobald du eine Entscheidung an einen Menschen übergibst, passiert nichts, bis ein Mensch hinschaut. Auf einem Dashboard sieht das genauso aus wie „alles ist in Ordnung”. Die Antwort des Triage-Tools ist unverblümt: keine Bestätigung innerhalb von 15 Minuten, alarmiere trotzdem. Besser jemanden wecken, als einen P1 in einer Warteschlange liegen zu lassen.

Die Eskalationsbedingung selbst kann fehlschlagen. Ein Autonomie-Gate innerhalb eines Agenten fährt nur fort, wenn ein Choice 0.6 überschreitet und ein Autonomie-Sicherheits-Noul 0.5 überschreitet, andernfalls geht die Runde zurück an den Menschen. Beide Zahlen müssen bestehen — weil „was soll ich tun” und „ist das sicher” getrennte Fragen sind, und eine einzige Konfidenz kann beide nicht ehrlich beantworten.

Den Schwellenwert setzen: erst messen

0.8 aus der Luft zu greifen ist der häufigste Ansatz und der, der drei Monate später am wahrscheinlichsten zu Rauschen wird. Der reproduzierbare Ansatz ist, auf deinen eigenen gelabelten Daten den Schwellenwert zu messen, der nötig ist, um deine Zielgenauigkeit zu erreichen.

Ein öffentliches Beispiel: Mit 0.7 als Niedrigkonfidenz-Gate fing ein Lauf über n=130 3 von 3 Fehlklassifikationen bei einer Eskalationsrate von 9%. Die Stichprobe ist klein. Ihr Wert ist nicht die 0.7 — sondern dass dies die Art ist, wie eine solche Zahl berichtet werden sollte: Stichprobengröße, Eskalationsrate und was abgefangen wurde.

Latenz ist das unterschätzte Risiko

Die gemessenen Zahlen des Triage-Tools verdienen eine eigene Tabelle:

Metrik Wert
p50 418 ms
p95 1477 ms
Kosten etwa $0.04 pro Tausend
Langsamster Aufruf 151 ms vor seinem eigenen 2-Sekunden-Timeout

p95 ist 3.5× p50. Das heißt, der Tail ist wichtiger als der Durchschnitt — denn die Timeout-Politik feuert im Tail, und wenn sie feuert, bist du auf dem Fallback-Zweig, nicht auf dem, den du entworfen hast. Der langsamste Aufruf lag 151 ms vor dem Timeout, was heißt: Der Determinismus des Systems hing von einer Münze ab, die zufällig nicht schlecht gefallen ist.

Also scheitern Gating-Systeme meist nicht durch „falsch urteilen”, sondern durch Timeout und Fallback nehmen. Teste den Fallback unabhängig vom Hauptpfad.

Zwei Fallback-Richtungen, beide richtig

Wenn etwas fehlschlägt, teilen sich öffentliche Implementierungen in zwei Lager, und beide haben recht:

  • fail-closed: Ein Berechtigungs-Judge verweigert bei Timeout oder Fehler. Ein Sicherheits-Gate muss so funktionieren — ein fail-openes Sicherheits-Gate ist ein stilles Loch.
  • fail-open: Ein Claude Code Stop-Hook erlaubt bei jedem Fehler. Ein Effizienz-Gate muss so funktionieren — ein fail-closedes Effizienz-Gate blockiert den ganzen Ablauf.

Das Kriterium ist nicht „welches ist sicherer”, sondern welche Kosten größer sind: eine fälschliche Blockierung oder eine verpasste Blockierung. Und es muss entschieden werden, wenn du den Code schreibst, denn was es bestimmt, ist der Ausnahmepfad, nicht der Hauptpfad.

In einem Satz

In einem Drei-Band-Design steckt die Arbeit im mittleren Band: seine Breite ist Kosten, seine Absicherung ist eine Zuverlässigkeitseigenschaft. Entwirf beide ausdrücklich, statt sie per Default zu lassen.