Lektion 04 · Planung

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.

⏱ ~10 Min · 📝 3 interaktive Widgets · 🧑‍💻 Basiert auf shareAI-lab · s04_subagent.py

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:

Interaktiv

Widget 1 · Parent vs Child · Context-Größe im Vergleich

Dieselbe Aufgabe, zwei Strategien. Run klicken und die finale messages[]-Länge sowie Token-Schätzung vergleichen.

🧠 Parent-Agent erledigt es selbst
messages: 0 · ~0 tokens
🎯 Subagent spawnen
messages: 0 · ~0 tokens
Interaktiv

Widget 2 · True or False · Verantwortlichkeiten von Parent und Child

6 T/F-Fragen zum Verständnis der Isolierungsgrenzen.

0 / 6 richtig
Interaktiv

Widget 3 · Wann spawnen · Welche Aufgaben eignen sich für Subagents?

6 Aufgabenbeschreibungen. Entscheide: (A) Parent selbst erledigen oder (B) Subagent spawnen. Es gibt kein absolutes Richtig, aber klare Präferenzen.

0 / 6 richtig