Dein geforkter Subagent weiß bereits zu viel
Die Historie eines Agenten enthält jede Sackgasse, in die er gelaufen ist, und nichts darin markiert, welche davon er inzwischen aufgegeben hat. Delegiere diese Historie an eine Teilaufgabe, und die verworfenen Vermutungen kommen mit demselben Gesicht an wie die gesicherten Fakten. Warum ein sauberer Start meist gewinnt, wann ein geschriebener Auftrag die Vererbung schlägt, und wann die Arbeit ein lebendiges Ding ist, das kein Auftrag fassen kann.
Wenn du eine Aufgabe an einen Subagenten abgibst, wählst du, wie viel von dir du ihm mitgibst. Du kannst den Kontext des Elternagenten in das Kind forken und ihm das Transkript dessen übergeben, was der Elternagent gesehen und geschlossen hat, oder du kannst das Kind frisch starten, mit nichts als einer Aufgabe, die du für es schreibst. Das Muster vom Team aus Agenten lässt Forken wie den Normalfall wirken: Wenn das Kind einer von uns ist, sollte es wissen, was wir wissen, und etwas zurückzuhalten sieht aus, als würde man es benachteiligt losschicken. Mehr Kontext kann nicht schaden, so der Gedanke, und vielleicht erspart er dem Kind, Arbeit noch einmal zu machen. Dieser Gedanke ist falsch, und der Grund hat nichts mit den Kosten der Token zu tun.
Zwei bequeme Antworten stellen sich der eigentlichen in den Weg. Die erste: Ein großer Kontext ist teuer, was stimmt und am Kern vorbeigeht. Selbst ein Kontext, klein genug, um ihn ohne Zögern zu forken, trägt das Problem, das ich gleich beschreibe, in sich, also entscheidet nicht der Preis. Die zweite: Ein frischer Agent bringt einen unabhängigen Blick und fängt, was der Elternagent übersehen hat. Dieser Effekt ist real, aber er gehört zu einem anderen Aufbau, dem, bei dem du mehrere Agenten laufen lässt und ihre Antworten zusammenführst, wo der Wert aus Fehlern kommt, die unabhängig voneinander scheitern, über ein Gremium hinweg, das du per Abstimmung zusammenführst. Eine einzelne Übergabe hat kein Gremium und keine Abstimmung. Leg beides beiseite. Über Forken oder Frisch entscheidet weder die Größe des geerbten Kontexts noch die Unabhängigkeit einer Menge. Es entscheidet, dass ein geerbtes Transkript ankommt, ohne dass sich seine lebendigen Schlüsse von seinen toten unterscheiden lassen.
Ein Transkript ist ein Protokoll dessen, was der Agent versucht hat, und bei einem schweren Problem überlebt vieles davon nicht. Er verfolgt eine Hypothese über zehn Schritte, läuft gegen eine Wand und zieht sich zurück. Manchmal zieht er sich laut zurück, und das Transkript sagt es: Der Test schlug fehl, der grep kam leer zurück, der Elternagent schrieb, dass das nicht funktioniert hat, und wandte sich etwas anderem zu. Ein Kind, das das liest, kann die Wand sehen. Aber der laute Rückzug ist der leichte Fall, und dort sitzt der Schaden nicht. Der Elternagent ändert seine Meinung auch auf leisere Weise. Er zieht aus einem Tool-Ergebnis einen Schluss, baut auf dem Schluss auf, und wenn sich der Boden verschiebt, hört er einfach auf, sich auf die alte Überzeugung zu stützen, ohne je anzukündigen, dass er es tut. Er hält einen Befund für eine Vermutung, vorsichtig und vorläufig, und das Transkript hält den Befund glatt fest, ohne den Vorbehalt. Wenn der Elternagent übergibt, ist das, was er tatsächlich glaubt, alles, was er versucht hat, minus einer laufenden Reihe privater Korrekturen, die er nie aufgeschrieben hat. Forke das Transkript, und das Kind erbt die Summe ohne die Abzüge. Es liest eine vorläufige Vermutung und einen gesicherten Fakt im selben gleichmütigen Ton, weil sie auf dem Papier dasselbe sind, und es hat keinen Weg zurück zu dem Moment, in dem der Elternagent einen von beiden still fallen ließ.
Die Rahmung ist das Größte, was auf diese Weise unmarkiert mitreist. Der Elternagent hat nicht nur Schlüsse gezogen, er hat entschieden, wie er das Problem zerlegt, bevor er irgendeinen davon erreicht hat, und diese Zerlegung steht nirgends als Entscheidung da, sondern nur als die Gestalt, die das Transkript bereits hat. Ein Kind, das da hineingeboren wird, erbt die Zerlegung als die Gestalt des Problems und arbeitet in ihr, auch dann, wenn die Zerlegung der erste Fehler des Elternagenten war. Ein frischer Agent, dem man die Aufgabe gibt und nicht die Historie, kann sie frei anders zuschneiden, und hin und wieder ist der andere Schnitt die ganze Antwort. Die Unabhängigkeit des Gremiums ist etwas anderes; hier entkommt ein einzelner Arbeiter der Rahmung eines einzelnen Vorgängers, statt dass eine Menge ihre Fehler herausmittelt.
Die Unwissenheit eines frischen Agenten ist also kein Loch, das gestopft werden muss. Das Kind, das den Fehlstart des Elternagenten nie gesehen hat, kann von ihm nicht in die Irre geführt werden, und jede Behauptung, die vor ihm steht, hat eine Quelle, die du gewählt hast. Du hältst keine Information zurück, du hältst Rückstand zurück, den das Kind sonst mit Mühe widerlegen müsste oder, schlimmer, still für wahr hielte. Ein unbeschriebener Kontext ist kein leerer. Er ist ein kuratierter.
Nichts davon macht Forken immer falsch. Es hat seinen Platz bei einer klaren Form von Arbeit: der Fortsetzung, wo der halbfertige Zustand des Elternagenten kein Rückstand ist, sondern die Substanz der Aufgabe, und dieser Zustand eine lebendige Struktur ist statt einer Sammlung von Fakten, die du aufschreiben könntest. Wenn die Aufgabe des Kindes darin besteht, einen Gedankengang fortzuführen, in dessen Mitte der Elternagent steckte, dann ist das, was fortgeführt wird, die halbfertige Struktur selbst, und es gibt keine Seite, auf die du sie flach drücken kannst, ohne das zu verlieren, was sie zur Arbeit macht. Einen Agenten fortzusetzen, den du pausiert hast, ist derselbe Zug: Du behältst seinen Kontext, weil diese angesammelte Struktur der Punkt ist, nicht weil es dir misslungen ist, sie zusammenzufassen. Die Frage ist nicht, ob geerbter Kontext je hilft, sondern ob diese Übergabe ein Stück Arbeit fortsetzt oder ein abtrennbares beginnt. Forke, wenn der Zustand es nicht überlebt, aufgeschrieben zu werden, nicht, wenn das Aufschreiben bloß lästig ist.
Das ergibt einen schärferen Test als die Intuition, die er ersetzt. Versuch, dem Subagenten einen vollständigen Auftrag zu schreiben: alles, was es braucht, einschließlich dessen, was du bereits ausgeschlossen hast, aber nicht den Weg, den du gegangen bist, um dorthin zu kommen. Die Liste des Ausgeschlossenen ist der Teil, auf dem zu bestehen sich lohnt, denn sie ist der Rückstand des Elternagenten, mit den endlich angehefteten Etiketten. Nicht „Ich habe eine Stunde in der Caching-Schicht verbracht“, sondern „Die Caching-Schicht ist es nicht, überspring sie“. Das ist ein Befund, und ein Befund ist genau das, womit ein frisches Kind starten sollte. Schreib diesen Auftrag, und er schlägt den Fork, den du gleich übergeben wolltest, nicht weil er mehr enthält, sondern weil du jede Zeile davon gewählt hast und der Fork keine. Deshalb ist die Zusammenfassung, die ein sorgfältiger Elternagent schreiben könnte, hier geklärt, dort ausgeschlossen, jenes noch offen, kein Kompromiss zwischen Forken und Frisch. Sie ist der frische Auftrag, gut gemacht.
Der Handel zeigt sich am deutlichsten beim Subagenten, dessen ganze Aufgabe es ist, viel zu lesen und mit wenig zurückzukommen. Schick einen los, um eine große Codebasis danach abzusuchen, wo ein bestimmtes Verhalten wohnt, und was du zurückhaben willst, ist die Antwort, die zwei Dateien, auf die es ankommt, nicht die vierzig, die es geöffnet hat, um sie zu finden. Starte ihn frisch, und er liest den Code und sagt dir, was der Code sagt. Forke deinen Kontext hinein, und du hast ihm auch deine laufende Theorie mitgegeben, wo der Bug wahrscheinlich steckt, und ein Subagent, der deine Theorie hält, ist sehr gut darin, Belege dafür zu finden. Er kommt zurück und hat bestätigt, was du bereits vermutet hast, aus den Dateien, die du erraten hättest, und die Datei, die die Antwort tatsächlich enthielt, blieb geschlossen, weil nichts im geerbten Kontext auf sie zeigte. Der frische Sucher liest die Codebasis. Der geforkte liest deine Erwartungen und nennt sie die Codebasis. Ich greife ständig zum Sucher mit sauberem Kontext, und der Grund ist genau der: Ich will, dass er findet, was da ist, nicht, was ich beim Hereinkommen geglaubt habe.
Es gibt eine Asymmetrie in den beiden Arten, wie das schiefgeht, und sie ist das eigentliche Argument dafür, Frisch zum Normalfall zu machen. Der Auftrag ist ein geschriebenes Artefakt. Briefe einen frischen Agenten unzureichend, und was du weggelassen hast, fehlt in einem Dokument, das du zurücklesen kannst, sodass du, wenn das Ergebnis falsch herauskommt, beide nebeneinanderhalten, die Lücke finden und sie mit einer Zeile schließen kannst. Der Fehler hat einen Ort. Über-Forken hat keinen. Die verunreinigende Überzeugung sitzt irgendwo in einem Transkript, das du nicht geschrieben hast und in dieser Tiefe nicht noch einmal lesen würdest, das Kind hat sie in Arbeit eingefaltet, die ganz aussieht, und es gibt nichts, wogegen du das Ergebnis diffen könntest, denn das ganze Versprechen des Forks war, dass du keins zusammenbauen musst. Ein Fehler, auf den du zeigen kannst, und ein Fehler, verschmiert über vierzig Züge, verdienen nicht denselben Normalfall. Wenn du nicht sagen kannst, wohin du dich neigen sollst, neige zu dem Fehler, der eine Spur hinterlässt.
Die Wahl unter Forken oder Frisch dreht sich also weniger darum, wie viel das Kind wissen sollte, als darum, was du willst, dass sein Kontext ist. Ein frischer Subagent trägt nur, was du absichtlich hineingelegt hast, jede Zeile mit einer Quelle und einem Grund. Ein geforkter trägt das plus alles, was der Elternagent unterwegs nicht mehr glaubte, in derselben flachen Handschrift geschrieben wie alles, was er noch glaubt, und du kannst die Naht nicht sehen. Meistens ist der Kontext, den du willst, der, den du gebaut hast, nicht der, den du geerbt hast, und ihn zu bauen ist dieselbe Arbeit wie aufzuschreiben, was die Aufgabe braucht. Zu wählen, was ein Agent nicht erfahren darf, ist nicht das Fehlen von Engineering. Es ist der größte Teil davon.