複数のエージェントがファイル メールボックスを介して通信する
サブエージェントからチームメイトへ: 1 回限り → 永続的。無名→名前あり。通信なし→ファイルメールボックス。
サブエージェントとチームメイトの違いは何ですか?
S04 のサブエージェントは単純かつ粗雑です: 生成 → 実行 → サマリーに戻る → 死亡。父と息子の間の、名前のない、双方向のコミュニケーションではない、一回限りのコミュニケーション。
s09 のチームメイトは独立したエージェントであり、名前があり、繰り返し起動でき、メッセージを送受信できます:
subagent (s04): spawn -> execute -> return -> destroyed
teammate (s09): spawn -> work -> idle -> work -> ... -> shutdown
2 つのメカニズムは異なる目的を果たします。
- Subagent は、「特定の探索を行う」(PR のレビューなど) に適しています。
- チームメイトは、「役割を継続的に引き受ける」のに適しています (新しいコミットがあるたびに目覚める長期レビュー担当者など)。
メールボックスはJSONLファイルです
チームメンバーはどのようにコミュニケーションをとりますか? s09 は最も原始的なメカニズムである追加専用の JSONL ファイルを使用します。
.team/ config.json # 团队花名册 inbox/ alice.jsonl # 给 alice 的信都 append 到这里 bob.jsonl lead.jsonl
送信は open("alice.jsonl", "a").write(msg); read は、ファイル全体を読み取り、JSONL を解析してから、truncate (ドレイン セマンティクス) をクリアします。
なぜメモリ キューではなくファイルを使用するのでしょうか? 書類は本来耐久性があります。エージェントが再起動しても、プロセスがクラッシュしても、マシンが再起動しても、電子メールはまだ存在します。さらに、読み取り可能で grep 可能で、デバッグ エクスペリエンスは非常に優れています。
リードからアリスへのメッセージの完全なプロセスを見てください。
次のウィジェットを使用すると、Alice にメッセージを送信し、各ステップでディスク上で何が起こっているかを確認できます。
5つのメッセージタイプ
s09 は 5 つのメッセージ タイプ (VALID_MSG_TYPES) を定義しますが、最初の 2 つだけが実装され、最後の 3 つは s10 プロトコル クラスに追加されます。
message— 通常のテキスト メッセージ。broadcast— 自分以外のチームメイト全員に送信します。shutdown_request/shutdown_response— 正常なシャットダウンの要求/応答 (s10)。plan_approval_response— 計画の承認 (s10)。
宣言されているのに実装されていないのはなぜですか? s09 は「プロトコル拡張」をオープンにしたいため、メッセージ タイプは列挙型です。新しいエントリを追加するには、辞書にエントリを追加し、_exec ルーティングで処理するだけです。