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.
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?