Zustand auf Disk schreiben — Komprimierung überleben
"State that survives compression — because it's outside the conversation."
Was ist der Unterschied zwischen TodoWrite und Task?
Der TodoManager aus s03 kann ebenfalls Aufgaben auflisten — aber er speichert sie im Arbeitsspeicher. Wenn auto_compact aus s06 ausgelöst wird und messages[] durch ein Summary ersetzt wird, gehen die In-Memory-Daten des TodoManagers verloren.
Das Task-System aus s07 funktioniert anders: Jede Task ist eine .tasks/task_42.json-Datei. Egal ob Context komprimiert, Prozess neugestartet oder Agent ausgewechselt wird — solange die Datei existiert, existiert die Aufgabe.
# .tasks/task_12.json { "id": 12, "subject": "Refactor auth middleware", "description": "Extract JWT logic to shared module", "status": "pending", "blockedBy": [8, 11], # erst wenn #8 und #11 abgeschlossen "owner": "" }
Entscheidungsregel: Temporäre Todos (nach dieser Sitzung vergessen) →todo; persistente Aufgaben (sitzungsübergreifend, mit Abhängigkeiten) →task.
blockedBy · Das Abhängigkeits-Verhalten
blockedBy ist eine Liste von Task-IDs — die müssen alle completed sein, bevor die aktuelle Task ausführbar ist.
Ein elegantes Detail in s07: Beim Abschließen einer Task entfernt sich diese automatisch aus den blockedBy-Listen aller anderen Tasks.
def _clear_dependency(self, completed_id: int): # Scan every task, remove completed_id from their blockedBy for f in self.dir.glob("task_*.json"): task = json.loads(f.read_text()) if completed_id in task.get("blockedBy", []): task["blockedBy"].remove(completed_id) self._save(task)
Der Agent muss keine separate Tabelle für freigeschaltete Tasks pflegen — einfach .tasks/ durchsuchen und Tasks mit status=="pending" and not blockedBy finden.
Abhängigkeitsgraph interaktiv erkunden
Das folgende Widget zeigt 5 Tasks mit Abhängigkeiten. Complete drücken und beobachten, wie blockedBy aktualisiert wird und welche Tasks grün (ausführbar) werden.
Überlebt Komprimierung?
auto_compact ersetzt messages[] durch ein Summary. Tasks sind davon unberührt — sie liegen auf Disk. Teste es: 5 Tasks erstellt, Konversation komprimiert, Agent scannt .tasks/ und arbeitet direkt weiter.