Lesson 09 · 協力

複数のエージェントがファイル メールボックスを介して通信する

サブエージェントからチームメイトへ: 1 回限り → 永続的。無名→名前あり。通信なし→ファイルメールボックス。

⏱ 約 12 分 · 📝 3 つのインタラクティブ要素 · 🧑‍💻 出典 shareAI-lab · s09_agent_teams.py

サブエージェントとチームメイトの違いは何ですか?

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 ルーティングで処理するだけです。

Interactive

Widget 1 · メールの流れ・リードからアリスへのメッセージ

[送信] をクリックして、ファイル システム上の各ステップをトレースします: lead.send → alice.jsonl を追加 → alice next read inbox → truncate。

Interactive

Widget 2 · チーム構成 · 誰がオンラインで、そのステータスは何ですか?

.team/config.json はチームの名簿です。いくつかの操作 (生成、メッセージ、シャットダウン) を実行し、構成がどのように変化するかを確認します。

操作
.team/config.json

        
Interactive

Widget 3 · サブエージェントとチームメイト · どちらを使用するかの決定

6 つのミッション シナリオ。サブエージェント (スポーンしてから死ぬ) またはチームメイト (スポーンしてから生きる) のどちらを使用するかを決定します。そのタスクが「一度だけで完了する取引」であるかどうかを検討してください。

答对 0 / 6