Mehrere Agenten kommunizieren über Dateipostfächer
Vom Subagenten zum Teamkollegen: einmalig → dauerhaft; namenlos → benannt; keine Kommunikation → Dateipostfach.
Was ist der Unterschied zwischen Subagent und Teammate?
Der Subagent von S04 ist einfach und grob: spawnen → ausführen → zur Zusammenfassung zurückkehren → sterben. Ein Einzelfall, kein Name, keine wechselseitige Kommunikation zwischen Vater und Sohn.
s09s Teamkollege ist ein unabhängiger Agent, der einen Namen hat, wiederholt geweckt werden kann und Nachrichten senden und empfangen kann:
subagent (s04): spawn -> ausführen -> zurück -> zerstört
Teamkollege (s09): spawn -> Arbeit -> Leerlauf -> Arbeit -> ... -> Herunterfahren
Die beiden Mechanismen dienen unterschiedlichen Zwecken:
- Der Subagent eignet sich für die „Durchführung einer bestimmten Erkundung“ (z. B. die Überprüfung einer PR).
- Teammate eignet sich dazu, „kontinuierlich eine Rolle einzunehmen“ (z. B. ein Langzeitprüfer, der jedes Mal geweckt wird, wenn es einen neuen Commit gibt).
Das Postfach ist eine JSONL-Datei
Wie kommunizieren Teammitglieder miteinander? s09 verwendet den primitivsten Mechanismus: JSONL-Datei nur anhängen.
.team/ config.json # Teamliste Posteingang/ alice.jsonl # Briefe an Alice werden hier angehängt bob.jsonl Lead.jsonl
send is open("alice.jsonl", "a").write(msg); read bedeutet, die gesamte Datei zu lesen, JSONL zu analysieren und dann zum Löschen zu truncate (Semantik entleeren).
Warum Dateien anstelle von Speicherwarteschlangen verwenden? Dokumente sind von Natur aus langlebig. Agent-Neustarts, Prozesse stürzen ab, sogar Maschinen-Neustarts – die E-Mails sind immer noch da. Außerdem ist es lesbar und grep-fähig, und das Debugging-Erlebnis ist sehr gut.
Sehen Sie sich den gesamten Prozess einer Nachricht vom Lead an Alice an
Mit dem folgenden Widget können Sie eine Nachricht an Alice senden und sehen, was bei jedem Schritt auf der Festplatte passiert.
5 Nachrichtentypen
s09 definiert 5 Nachrichtentypen (VALID_MSG_TYPES), aber nur die ersten beiden sind implementiert und die letzten drei werden in der s10-Protokollklasse hinzugefügt:
message– normale Textnachricht.Broadcast– wird an alle Teamkollegen außer Ihnen selbst gesendet.shutdown_request/shutdown_response– Anfrage/Antwort für ordnungsgemäßes Herunterfahren (s10).plan_approval_response– Plangenehmigung (s10).
Warum wird es deklariert, aber nicht implementiert? Da s09 die „Protokollerweiterung“ öffnen möchte, ist der Nachrichtentyp eine Aufzählung. Um einen neuen hinzuzufügen, müssen Sie nur einen Eintrag im Wörterbuch hinzufügen und ihn in der Route _exec verarbeiten.