Sie führen keinen Mitarbeiter, indem Sie ihm eine Nachricht nach der anderen tippen. Sie geben ihm einen Vertrag, eine Probezeit und eine Möglichkeit zu messen, ob er den Gehaltsscheck noch wert ist. Fable 5 verdient dieselbe Behandlung.
Hier ist das Problem. Fable 5 kann stundenlang ohne Sie laufen, eigene Subagenten starten und über Nacht eine Woche Rückstand erledigen. Es kostet aber auch echtes Geld pro Token, es liefert übermäßig, sobald Sie den Umfang offen lassen, und es verteidigt eine falsche Antwort besser als die meisten Menschen eine richtige verteidigen.
Unkontrolliert ist es eine teure Art, selbstbewussten Unsinn zu produzieren. Mit einem Vertrag ist es das Nächste, was Sie für ein paar Dollar am Tag zu einem Vollzeitmitarbeiter haben.
Das ist dieser Vertrag. Nicht die Theorie. Die tatsächlichen Dateien, in der Reihenfolge, in der Sie sie schreiben, aufgebaut um eine echte Bereitstellung: die Monitoring-Bots, die ich bereits auf einem VPS in Paris via pm2 betreibe. Auth-Flows und Abrechnungstabellen sind nicht meine Angriffsfläche. RPC-Keys, Wallet-Adressen und Live-Blockchain-Transaktionen sind es. Das System unten ist dafür gebaut, nicht für ein generisches SaaS-Repo.
Fünf Abschnitte. Jeder liefert eine Datei. Gesamte Einrichtungszeit: unter zwei Stunden.
Die Einrichtung
1claude CLI (Claude Code) mit Fable 5 Zugriff # Nutzungsguthaben, gedeckelt2llm CLI + OpenRouter Key # für die günstigen Modelle3jq, git, pm2, cron4ein VPS mit den bereits laufenden Bots
Was am Ende dabei herauskommt:
1agent-contract/2 CONTRACT.md # Abschnitt 1: die Anstellungsbedingungen3 ops/4 shift.sh # Abschnitt 3: die tägliche Schicht5 dispatcher.md # Routing-Prompt, nur Fable6 intake.md # günstiger Leser, liest zuerst Logs7 worker.md # günstiges Modell, erledigt die Tipparbeit8 reviewer.md # frischer Fable, prüft die Arbeit9 boundaries.md # Abschnitt 2: was es anfassen darf und was nicht10 guardrails/signoff.sh # Abschnitt 2: das deterministische Ja/Nein11 personnel/12 trust.tsv # Abschnitt 4: wer sich Autonomie verdient hat13 standing-checks/ # Abschnitt 4: Dinge, die wahr bleiben müssen14 incidents/15 log.tsv # Abschnitt 5: was kaputtging und wann16 runbook.md # Abschnitt 5: was dagegen zu tun ist17 Makefile
Eine zitierfähige Regel, bevor wir anfangen, denn sie gibt den Ton für alles Weitere an:
Ein Agent, der seine eigenen Hausaufgaben benotet, ist ein Agent, der sich selbst eine Gehaltserhöhung gibt.
Nichts in diesem System überprüft seine eigene Arbeit. Nicht ein einziges Mal.
Abschnitt 1: Der Vertrag (CONTRACT.md)
Ein Arbeitsvertrag ist keine Liste von Vorschlägen. Es sind Zahlen, harte Stopps und Klauseln, die durchgesetzt werden, ob der Mitarbeiter zustimmt oder nicht. Schreiben Sie diese Datei genauso. Kein „bitte“ oder „versuchen Sie“. Ein Modell optimiert sich um weiche Sprache herum, wie ein Praktikant um einen Vorgesetzten herum optimiert, der nie nachprüft.
1# CONTRACT.md23## HARTE STOPPS (keine Ausnahmen, kein zweimaliges Fragen)4- Niemals Wallet-Keys, .env-Dateien oder RPC-Anmeldeinformationen ohne Genehmigung anfassen.5- Niemals eine Änderung an einem laufenden Bot-Prozess (pm2 restart) ohne bestandene Freigabe pushen.6- Niemals 150 geänderte Zeilen in einem einzigen Commit überschreiten, ohne vorher zu fragen.7- Niemals behaupten, eine Aufgabe sei erledigt, basierend auf der eigenen Ausgabe.8 Erledigt bedeutet, dass das Freigabe-Skript 0 zurückgegeben hat. Nichts anderes zählt.9- Niemals einen API-Endpunkt, eine Vertragsadresse oder einen Konfigurationswert erfinden.10 Wenn es nicht im Repo ist, anhalten und fragen.11- Niemals eine neue Abhängigkeit hinzufügen. In ops/shift-log.md schreiben und dort aufhören.12- Niemals einen Test, eine Alarm-Schwelle oder eine Monitor-Bedingung bearbeiten oder löschen, um etwas bestehen zu lassen. Das ist keine Reparatur. Das ist Betrug.13- Niemals mit Anstrengung über „hoch“ innerhalb einer Schicht arbeiten. „xhoch“ ist für einmalige Überprüfungen, die Sie manuell auslösen, niemals für die automatisierte Schleife.14- Niemals interne Überlegungen in einer Antwort erklären oder erzählen. Es wirkt hilfreich. Bei Fable 5 kann es stattdessen einen Verweigerungs-Klassifizierer auslösen.1516## ARBEITSBEREITSTELLUNG (wer macht was, der günstigste qualifizierte Mitarbeiter gewinnt)17| Modell | Kosten pro Aufgabe | Ehrgeiz | Urteilsvermögen | Geschmack |18|------------------|-------------------|---------|-----------------|-----------|19| claude-fable-5 | hoch | niedrig | 10 | 10 |20| claude-opus-4-8 | mittel | mittel | 8 | 9 |21| claude-sonnet-5 | niedrig | hoch | 7 | 7 |22| günstiges OSS | am niedrigsten | am höchsten | 5 | 4 |23241. Entscheiden, was als Nächstes zu tun ist, einen Diff überprüfen, einen Gleichstand brechen -> Fable 5, schreibgeschützt, hohe Anstrengung.252. Rohe Logs, Dumps oder alles über 50k Token lesen -> der günstige Arbeiter. Niemals Fable. Das wäre, einen Direktorentarif zu zahlen, um eine Tabelle zu lesen.263. Alles, mit dem ein Benutzer oder eine Chain direkt interagiert -> benötigt einen Geschmackswert von 8 oder höher, bevor es ausgeliefert wird.274. Alles andere -> sonnet-5, mittlere Anstrengung, bei Fehlschlag um eine Stufe eskalieren.2829## DEFINITIONEN30- „Urteilsvermögen“ = kann es die schwierigste Aufgabe auf dem Schreibtisch ohne Aufsicht bewältigen31- „erledigt“ = das Freigabe-Skript wurde mit 0 beendet, Punkt32- „klein“ = unter 50 geänderten Zeilen33- „Aufräumen“ = Verhalten ist bitweise identisch, Freigabe grün vorher und nachher3435## DIE EINZIGE DEFINITION VON „ERLEDIGT“, DIE ZÄHLT36- Jede Aufgabe erhält eine maschinenprüfbare Ziellinie, bevor die Arbeit beginnt.37- Ein Prüfer, der weder den Plan noch den Entwurf gesehen hat, überprüft ihn.38- guardrails/signoff.sh hat die endgültige Stimme. Nicht der Prüfer. Das Skript.39- Wenn der Arbeiter und der Prüfer zweimal hintereinander unterschiedlicher Meinung sind, geht es an einen Menschen. Keine dritte Meinung, kein Entscheidungsmodell.
Setzen Sie Ihre eigenen Zahlen ein. Alles, was Sie zu 80 % durchgehen lassen und trotzdem „erledigt“ nennen würden, braucht eine Zahl oder ein „niemals“ daran, oder streichen Sie es.
Abschnitt 2: Grenzen und die Freigabe
Ein Arbeitsvertrag ist nichts ohne eine Hintergrundüberprüfung, was der Mitarbeiter berühren darf, und einen Vorgesetzten, der freigibt, bevor etwas ausgeliefert wird. Zwei Dateien.
ops/boundaries.md:
1## arbeitet allein2Korrekturen auf einem Branch entwerfen; shift-log.md aktualisieren; eine *Nicht-Produktions*-Testinstanz neu starten; veraltete Datenfeeds kennzeichnen34## braucht meine Unterschrift5alles unter wallets/, .env*, config/rpc.json; jeder Diff über 300 Zeilen; jede Änderung an einem laufenden pm2-Prozess; alles, was eine Transaktion sendet67## weckt mich sofort auf8der Prüfer lässt dieselbe Korrektur zweimal durchfallen; der Router hat ein anderes Modell als angefordert ausgeliefert; die täglichen Ausgaben haben die Linie überschritten; eine Standing-Check wird rot; etwas fragt nach einem privaten Schlüssel
ops/guardrails/signoff.sh (bearbeiten Sie die Befehle, damit sie zu Ihren Bots passen):
1#!/usr/bin/env bash2set -e3npm run typecheck --if-present4npm test --if-present5pm2 describe "$BOT_NAME" | grep -q "status.*online" || exit 1
Führen Sie es einmal von Hand aus, bevor irgendetwas anderes in diesem System live geht. Wenn es bei Ihrer aktuellen Einrichtung nicht sauber durchläuft, ist das die eigentliche erste Aufgabe. Alles Weitere setzt voraus, dass dieses Skript die Wahrheit sagt.
Abschnitt 3: Die Schicht
Hier ist die Mathematik, die dieses System macht oder zerbricht. Eine volle Sitzung, bei der Fable 5 die Tipparbeit macht, kostet schnell richtig Geld, vierstellig, wenn Sie es stundenlang schreiben lassen. Fable 5, das die Entscheidungen trifft, während ein günstiges Modell die Tipparbeit macht, ist eine ganz andere Rechnung – etwa 15–20 % der Token für 100 % der Urteilsentscheidungen.
Also hat die Schicht vier Mitarbeiter, nicht einen:
- Ein nahezu kostenloses Modell liest die über Nacht angefallenen Logs und die pm2-Ausgabe. Sagt „ruhig“ oder „handlungsrelevant“. Das war's.
- Fable 5, schreibgeschützt, entscheidet die einzelne wertvollste Sache und schreibt einen Arbeitsauftrag. Es berührt keinen Code.
- Ein günstiges Arbeitermodell führt den Arbeitsauftrag auf einem isolierten Branch aus.
- Ein frischer Fable 5-Instanz, die nur die Spezifikation und den Diff sieht, stimmt mit Bestehen oder Nichtbestehen ab.
Das deterministische Skript aus Abschnitt 2 gibt die entscheidende Stimme ab. Jedes Mal.

ops/shift.sh:
1#!/usr/bin/env bash2set -euo pipefail3cd "$(dirname "$0")"4DAILY_BUDGET="${DAILY_BUDGET_USD:-5}"5INTAKE_MODEL="${INTAKE_MODEL:-openrouter/deepseek/deepseek-v4-flash}"6WORKER_MODEL="${WORKER_MODEL:-openrouter/moonshotai/kimi-k2.6}"78# 1. INTAKE, pennies9pm2 logs --lines 100 --nostream | llm -m "$INTAKE_MODEL" -s "$(cat intake.md)" \10 >> shift-log.md11grep -q "status: actionable" shift-log.md || { echo "quiet shift"; exit 0; }1213# 2. DISPATCH, Fable, xhigh, read-only, decides and stops14claude -p "$(cat dispatcher.md)15LOG: $(cat shift-log.md)16TRUST: $(cat personnel/trust.tsv)17BOUNDARIES: $(cat boundaries.md)" \18 --model claude-fable-5 --effort xhigh --allowedTools "Read" \19 --output-format json > /tmp/order.json2021SERVED=$(jq -r '.modelUsage | keys[0] // "claude-fable-5"' /tmp/order.json)22[[ "$SERVED" != *fable* ]] && { echo "rerouted, discard this run" >> shift-log.md; exit 2; }2324jq -r '.result' /tmp/order.json > work-order.json25ACTION=$(jq -r .action work-order.json)26[[ "$ACTION" == "stop" ]] && exit 027[[ "$ACTION" == "queue" ]] && { echo "queued for signature" >> shift-log.md; exit 0; }2829# 3. EXECUTE, cheap worker, isolated branch30BR="shift-$(date +%s)"31git worktree add "../$BR" -b "$BR" >/dev/null32( cd "../$BR" && llm -m "$WORKER_MODEL" -s "$(cat "$OLDPWD/worker.md")" \33 "$(cat "$OLDPWD/work-order.json")" > shift-notes.md )3435# 4. REVIEW, fresh Fable, spec and diff only, nothing else36VERDICT=$(claude -p "$(cat reviewer.md)37SPEC: $(jq -r .spec work-order.json)38DIFF: $(cd "../$BR" && git diff)" \39 --model claude-fable-5 --effort high --allowedTools "" \40 --output-format json | jq -r .result)4142# 5. THE ONLY VOTE THAT SHIPS ANYTHING43if [[ "$VERDICT" == PASS* ]] && ( cd "../$BR" && "$OLDPWD/guardrails/signoff.sh" ); then44 echo "PASS, shipped or queued per trust tier" >> shift-log.md45else46 echo "FAILED: $BR held for review" >> shift-log.md47fi
Eine Entscheidung von Fable und eine Zeile Code von Fable getippt sind zwei verschiedene Preisschilder. Bezahlen Sie den höheren nur für die Entscheidung.
Abschnitt 4: Die Personalakte
Vertrauen ist keine unternehmensweite Einstellung. Es wird pro Aufgabe verdient, genauso wie Sie einem neuen Mitarbeiter nicht am ersten Tag die Produktionsschlüssel geben würden, egal wie gut sein Portfolio aussah.
personnel/trust.tsv verfolgt jede wiederkehrende Aufgabe namentlich: Läufe, Bestehen, aktuelle Stufe.
- watch: unter 10 Läufen oder unter 90 % Bestehensquote. Nur Entwürfe, keine Ausnahmen.
- probation: 10–19 Läufe bei 90 %+. Zur Unterschrift vorgemerkt, jedes Mal.
- cleared: 20+ Läufe bei 95 %+. Wird ohne Sie ausgeliefert.

Ein Fehlschlag bei einer cleared-Aufgabe bekommt keine Verwarnung. Sie fällt direkt zurück auf probation und gibt eine Fehlermeldung auf stderr aus, die Ihr Cron Ihnen mailt. Automatische Degradierung ist die einzige, die wirklich hält.
Die zweite Hälfte der Personalakte ist personnel/standing-checks/. Jede abgeschlossene Aufgabe wird hier zu einem Befehl, der weiterhin wahr zurückgeben muss, für immer, einmal täglich überprüft:
1# personnel/standing-checks/bankr-claim-monitor.md2prädikat: pm2 describe bankr-claim-monitor | grep -q "status.*online" && \3 sqlite3 claims.db "select count(*) from claims where ts > strftime('%s','now','-1 day')" | grep -qv "^0$"4zuletzt-verifiziert: 2026-07-085bei-verletzung: weck mich auf, nicht blind automatisch neu starten
Eine Aufgabe, die Sie nur einmal verifiziert haben, ist nicht erledigt. Es ist eine Annahme mit einem Zeitstempel.
Führen Sie die Prüfung täglich via Cron aus. Ein fehlschlagendes Prädikat bedeutet, dass etwas, das früher wahr war, aufgehört hat, wahr zu sein, still, und niemand hätte es ohne diese Datei bemerkt.
Abschnitt 5: Der Vorfallbericht
Dies ist der Abschnitt, den die ursprünglichen Playbooks auslassen, und er ist derjenige, der wirklich zählt, sobald das System auf einer Infrastruktur läuft, die echtes Geld bewegt. Jedes agentische System tut irgendwann etwas, das Sie nicht wollten. Die Frage ist, ob Sie es aus einem sauberen Log oder aus einem leeren Wallet erfahren.
ops/incidents/runbook.md:
1| Signal | Bedeutung | Handlung2|----------------------------------|---------------------------------------|--------3| exit 2 (umgeleitet) | ein anderes Modell hat die Anfrage bedient | die Ausgabe verwerfen, niemals darauf aufbauen, morgen wiederholen4| stop_reason: refusal | Sicherheitsklassifizierer hat abgelehnt, HTTP 200 | kein Fehler, Log prüfen; wenn eine Aufgabe wiederholt ablehnt, berührt die Aufgabe wahrscheinlich etwas, das sie nicht sollte5| Freigabe schlägt zweimal fehl, gleiche Korrektur | Arbeiter und Prüfer finden keine Übereinstimmung | zur menschlichen Überprüfung ziehen, nicht automatisch ein drittes Mal wiederholen6| Standing-Check wird rot | etwas Erledigtes hat aufgehört, wahr zu sein | zuletzt-verifiziert-Datum prüfen, Diff seitdem ansehen, nicht automatisch zurücksetzen7| tägliche Ausgaben überschreiten die Linie | Budget überschritten | Schicht anhalten, shift-log.md lesen, herausfinden, welche Stufe explodiert ist8| eine Aufgabe berührt wallets/.env/rpc | Versuch einer Grenzverletzung | harter Stopp, dies sollte nie ausgelöst werden, wenn boundaries.md respektiert wird; jeden Vorfall als Fehler im System selbst behandeln
Protokollieren Sie jeden dieser Vorfälle in incidents/log.tsv mit einem Zeitstempel, unabhängig davon, ob Sie darauf reagiert haben oder nicht. Das Ziel sind nicht null Vorfälle. Es sind null Vorfälle, von denen Sie zu spät erfahren.
Einmal pro Woche führen Sie einen Kompostdurchlauf durch: Lesen Sie das Vorfallprotokoll, die Degradierungen in der Vertrauensdatei und alles, was länger als 3 Tage in der Warteschlange und ohne Unterschrift geblieben ist. Ziehen Sie höchstens drei Vorschläge heraus: eine neue harte Stopp-Regel für CONTRACT.md, eine Korrektur einer Aufgabenbeschreibung oder einen Standing-Check, der Ihnen gefehlt hat. Sie unterschreiben alle drei von Hand. Das System kann seine eigene nächste Regel vorschlagen. Es darf nie eine selbst schreiben.
Bewährungsplan
Drei Kontrollpunkte, nicht dreißig Tage Babysitten:

Kontrollpunkt 1. Führen Sie die Schicht eine Woche lang täglich von Hand aus. Lesen Sie jede Zeile. Bestehen Sie, wenn drei Schichten hintereinander genau so routen, wie Sie es getan hätten.
Kontrollpunkt 2. Cron übernimmt die Schicht. Sie überprüfen die Warteschlange bei einem Kaffee, anstatt sie selbst auszuführen. Bestehen Sie, wenn zwei wiederkehrende Aufgaben die 20-Läufe-Marke überschreiten.
Kontrollpunkt 3. Ihre am besten performende Aufgabe wird ohne Aufsicht ausgeliefert. Bestehen Sie, wenn sie eine ganze Woche ohne Eingriffe von Ihnen läuft.
Die Regeln, komprimiert
- Ein Vertrag ist eine Zahl oder ein Niemals. Alles Weichere wird umgangen.
- Der Dispatcher entscheidet. Der Arbeiter tippt. Keiner überprüft seine eigene Arbeit.
- Fables Urteilsvermögen ist den Preis wert. Fables Tipparbeit meistens nicht.
- Vertrauen ist pro Aufgabe, nicht unternehmensweit, und Degradierung ist automatisch und laut.
- Eine erledigte Aufgabe, die nicht erneut überprüft wird, ist nicht erledigt, sondern eine Vermutung mit einem Datum.
- Grenzen leben in einer Datei, die Sie in zehn Sekunden lesen können, nicht in Ihrem Gedächtnis.
- Das Vorfallprotokoll existiert, damit Sie Probleme aus einem Bericht erfahren, nicht aus einem Kontostand.
- Bauen Sie niemals auf der Ausgabe eines Modells auf, das Sie nicht angefordert haben.
- Einmal pro Woche kann das System eine neue Regel vorschlagen. Sie sind immer noch derjenige, der sie unterschreibt.
Das Modell war nie der schwierige Teil. Etwas darum herum zu bauen, das ehrlich bleibt, wenn niemand hinschaut, das ist die eigentliche Aufgabe. Das ist, wie das für eine Bot-Flotte anstelle einer Codebasis aussieht.
Beginnen Sie mit guardrails/signoff.sh. Führen Sie eine Schicht von Hand aus. Schreiben Sie einen Standing-Check für den letzten Bot, den Sie ausgeliefert haben. Das erste Mal, wenn es etwas erwischt, von dem Sie sicher waren, dass es in Ordnung ist, hört der Rest auf, optional zu sein.
Folge @GipArcAI für weitere dieser Aufschlüsselungen und finde mich auf X unter https://x.com/gippp69.





