Der Agent verwaltet seinen eigenen Fortschritt
"The agent can track its own progress — and I can see it." Den Agenten eine eigene Checkliste schreiben lassen — und ihn mit einem kleinen Mechanismus daran erinnern, sie aktuell zu halten.
Strukturiertes Self-Planning
Claude Code muss bei der Arbeit oft mehrere Schritte ausführen: grep für Referenzen → ein paar Dateien lesen → Code ändern → Tests ausführen. Lässt man das Modell "nach Gefühl" vorgehen, arbeitet es die ersten Schritte ordentlich ab, verliert dann den Faden und gibt halbfertig auf.
Die Lösung in s03: ein Checklisten-Tool. Das Modell ruft das todo-Tool auf, um Aufgaben einzutragen; TodoManager validiert die Struktur, persistiert sie und gibt die aktuelle Ansicht zurück. Zwei Vorteile:
- Das Modell wird gezwungen, "was zu tun ist" explizit zu formulieren — das allein hilft ihm, den Überblick zu behalten.
- Menschen können sehen, was das Modell plant. Debugging wird zehnmal einfacher.
# TODO-Ansicht, jedes Element strukturiert [ ] #1: grep "TODO" across src/ [>] #2: read src/app.py and list comments # in Bearbeitung [ ] #3: generate summary markdown [ ] #4: write to TODO_LIST.md (0/4 completed)
Eine harte Regel: immer nur ein in_progress
TodoManager.update() enthält eine Prüfung:
if in_progress_count > 1: raise ValueError("Only one task can be in_progress at a time")
Das klingt streng, hilft aber dem Modell. Erlaubt man gleichzeitig drei "in Bearbeitung", eröffnet es überall Fronten und schließt nichts ab. Erzwingt man sequenzielle Bearbeitung, muss es jeden Schritt abschließen, bevor es den nächsten beginnt.
Das folgende Widget lässt dich verschiedene Todo-Payloads absenden und zeigt, welche die Validierung bestehen.
Nag Reminder: nach 3 Runden ohne Update — anstoßen
Selbst mit Todo-Tool vergisst das Modell manchmal die Aktualisierung — es arbeitet viel, aber in_progress bleibt bei Eintrag 2 stecken. Die Lösung in s03: ein einfacher Zähler:
rounds_since_todo = 0 while True: response = LLM(messages, tools) ... used_todo = any(b.name == "todo" for b in tool_uses) rounds_since_todo = 0 if used_todo else rounds_since_todo + 1 if rounds_since_todo >= 3: results.append({"type":"text", "text":"<reminder>Update your todos.</reminder>"})
Bei Zählerstand 3 wird in der nächsten User-Message ein Reminder eingebettet. Das Modell reagiert darauf und aktualisiert das Todo. Dies ist ein Engineering-Ansatz, um eine weiche Anforderung ("bitte Todo aktuell halten") in einen harten Stimulus umzuwandeln.
Wie heißt dieses Muster?
In der Agent-Design-Community heißt das structured self-planning with soft nudges — dem Modell einen strukturierten Zustand geben, den es beschreiben muss, ergänzt durch zeitgemäße Reminder. Claude Code verwendet intern ein ähnliches Muster, aber zurückhaltender (geringere Frequenz, neutralere Formulierung).
Warum nicht einfach "Todo immer aktuell halten" ins System-Prompt schreiben? Das geht, aber die Befolgung von allgemeinen Anweisungen im System-Prompt nimmt mit zunehmender Konversationslänge ab. Anweisungen als wiederholt injizierte Reminder sind deutlich stabiler.