Große Aufgaben an einen frisch gestarteten Agent delegieren
"Process isolation gives context isolation for free." Der Subagent macht die Drecksarbeit, der Parent-Agent bekommt nur das saubere Summary.
Das Dilemma des Parent-Agents
Stell dir vor, du bittest Claude Code, "herauszufinden, wie dieses 100.000-Zeilen-Rust-Repository Nebenläufigkeit handhabt". Der naheliegende Ansatz: es führt selbst ls, cat und grep aus und durchsucht alles im Haupt-Context.
Das Problem: dieser Erkundungsprozess stapelt 30 tool_result-Einträge in messages[], jeder mit tausenden Token. Wenn es dann die Antwort schreibt, ist der Context bereits vollgepackt — weitere Schritte treffen das Token-Limit, die Antwort wird chaotisch.
Die Lösung in s04: die Erkundungsaufgabe an einen neuen Agent delegieren. Der startet mit messages=[], erkundet selbst, gibt am Ende nur das Summary zurück. Im Parent-Context erscheint nur ein Eintrag: "task-Tool aufgerufen, Ergebnis: XXX". Sauber.
def run_subagent(prompt: str) -> str: sub_messages = [{"role":"user", "content": prompt}] # frischer Context for _ in range(30): # Sicherheitslimit gegen Endlosläufe response = client.messages.create(..., messages=sub_messages, tools=CHILD_TOOLS, ...) ... # Nur den finalen Text zurückgeben, Zwischenschritte verwerfen return "".join(b.text for b in response.content if hasattr(b, "text"))
Parent vs. Child Context im Vergleich
Dieses Widget simuliert eine echte Aufgabe: "Liste alle Stellen im Repository auf, die veraltete APIs verwenden". Zwei Strategien nebeneinander: (A) Parent-Agent erledigt es selbst; (B) einen Subagent spawnen. Vergleiche die finalen Context-Größen.
CHILD_TOOLS: welche Tools bekommt der Subagent?
Ein oft übersehenes Detail in s04: der Subagent bekommt kein task-Tool.
# Subagent: nur Basis-Tools, kein spawn CHILD_TOOLS = [bash, read_file, write_file, edit_file] # Parent-Agent: zusätzlich task-Tool PARENT_TOOLS = CHILD_TOOLS + [task]
Warum? Um rekursives Spawnen als Baum zu verhindern. Ein Subagent, der 4 weitere Subagents spawnt, die wiederum 4 spawnen — in wenigen Runden explodieren parallele API-Aufrufe und Token-Kosten. Die Konvention in s04: Spawning ist flach, Parent → Child ist eine Ebene. Auch in der echten Claude-Code-Implementierung ist das task-Tool innerhalb von task-Tools verboten.
Was ist sichtbar und was nicht?
Teste dein Verständnis der Isolierungsgrenzen mit den folgenden Fragen: