Lektion 04 · Planung

Behandeln Sie große Probleme mit einem neu eröffneten Agenten

„Prozessisolation bietet kostenlose Kontextisolation.“ Der untergeordnete Agent erledigt die Drecksarbeit und der übergeordnete Agent sammelt nur die saubere Zusammenfassung.

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

Das Dilemma des Mutteragenten

Stellen Sie sich vor, Sie hätten Claude Code gebeten, „herauszufinden, wie dieses 100.000 Zeilen umfassende Rust-Repository mit Parallelität umgeht.“ Intuitiver Ansatz: Es führt ls, cat, grep und Suchvorgänge im Hauptkontext aus.

Problem: In dieser Erkundungsrunde werden 30 „tool_results“ in „messages[]“ mit jeweils mehreren tausend Tokens angehäuft. Bis es tatsächlich mit dem Schreiben der Antwort beginnt, ist der Kontext durch den Explorationsprozess aufgefüllt – die Obergrenze wird nach ein paar weiteren Schritten erreicht und die Antwort wird immer noch verwirrend sein.

Lösung für s04: Übergeben Sie die Erkundungsaufgabe an einen neuen Agenten. Der neue Agent beginnt bei messages=[], durchsucht seine eigenen Nachrichten und gibt schließlich nur die Zusammenfassung an den übergeordneten Agenten zurück. Der übergeordnete Kontext enthält nur noch einen Satz: „Das Aufgabentool wurde einmal angepasst und das Ergebnis war XXX“, was erfrischend ist.

def run_subagent(prompt: str) -> str:
    sub_messages = [{"role":"user", "content": prompt}] # Neuer Kontext
    für _ in Bereich(30): # Sicherheitsobergrenze, um Kontrollverlust zu verhindern
        Antwort = client.messages.create(..., Nachrichten=sub_messages, tools=CHILD_TOOLS, ...)
        ...
    # Nur der letzte Text wird zurückgegeben, alle Zwischenbegründungen werden verworfen
    return "".join(b.text for b in Response.content if hasattr(b, "text"))

Kontextvergleich von Vater und Sohn

Dieses Widget simuliert eine echte Aufgabe: "Alle Orte in diesem Warehouse auflisten, die veraltete APIs aufrufen". Sie können es mit zwei Strategien ausführen: (A) der übergeordnete Agent erledigt es selbst; (B) einen Subagenten erzeugen. Vergleichen Sie die Größen der letzten beiden Kontexte links und rechts.

CHILD_TOOLS: Welche Tools kann der Subagent erhalten?

Es gibt ein Detail in der Implementierung von s04, das leicht übersehen wird: Der Subagent kann das Aufgabentool nicht erhalten.

# Subagent kann nur grundlegende Tools verwenden und keinen Enkel erzeugen
CHILD_TOOLS = [bash, read_file, write_file, edit_file]

# Der übergeordnete Agent verfügt über ein weiteres Aufgabentool
PARENT_TOOLS = CHILD_TOOLS + [Aufgabe]

Warum? Vermeiden Sie, dass rekursiver Versand zu einer Baumexplosion wird. Ein Subagent erzeugt vier Subsubagenten, und in nur wenigen Runden gibt es Dutzende gleichzeitiger Anrufe. Weder das Token noch die API-Geschwindigkeitsbegrenzung können damit umgehen. Die Konvention von s04: Spawn ist flach und eine Ebene aus Eltern → Kind ist eine Ebene. Dies ist auch in der realen Implementierung von Claude Code der Fall – es ist verboten, das Task-Tool erneut im Task-Tool aufzurufen.

sichtbar und unsichtbar

Lassen Sie uns die Rechte und Pflichten klären: Welche der folgenden Fragen ist Ihrer Meinung nach T und welche F ist Ihrer Meinung nach?

Interaktiv

Widget 1 · Vergleich der Kontextgröße zwischen Eltern und Kindern

Zwei Strategien für die gleiche Aufgabe. Klicken Sie auf „Ausführen“ und sehen Sie sich die endgültige Länge der Nachrichten[] auf beiden Seiten und die Gesamt-Token-Schätzung an.

🧠 父 agent 亲自做
messages: 0 · ~0 tokens
🎯 spawn subagent
messages: 0 · ~0 tokens
Interaktiv

Widget 2 · Richtig oder falsch · Rechte und Pflichten von Vater-Sohn-Agenten

6 T/Fs, um Ihr Verständnis der Isolationsgrenzen zu testen.

答对 0 / 6
Interaktiv

Widget 3 · Zeitpunkt des Spawnens · Welche Aufgaben eignen sich für die Zuweisung an den Subagenten?

Sie erhalten 6 Aufgabenbeschreibungen. Entscheiden Sie, ob (A) der übergeordnete Agent die Aufgabe selbst erledigt oder (B) der Spawn-Subagent. Es gibt kein „absolutes Recht“, aber es gibt offensichtliche Vor- und Nachteile.

答对 0 / 6