Lesson 12 · 協力

異なるエージェントが同じツリーを取得しないでください。

「ディレクトリで分離し、タスクIDで調整します。」 2 つの平面は互いに干渉しません。

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

並列エージェントに関する難しい問題

s09 ~ s11 では複数のチームメイトを同時に起動できますが、チームメイトはすべて同じ作業ディレクトリ内にあるという落とし穴があります。 alice は auth.py を変更しており、bob も同時に auth.py を変更しています - git の競合、ファイルの混乱、テストの相互汚染。

s12 の解決策は git worktree です。同じウェアハウスの場合、git worktree add を通じて異なるディレクトリの異なるブランチをチェックアウトできます。各エージェントは独自のワークツリーを取得し、互いに見えない独自のディレクトリで動作します。

my-repo/                           # 主工作区(lead 用)
.worktrees/
  alice-auth/                      # alice 的隔离目录
    (branch: wt/alice-auth)
  bob-api/                         # bob 的隔离目录
    (branch: wt/bob-api)
  index.json                       # worktree 注册表
  events.jsonl                     # 生命周期事件日志

2 つの面での分業

s12 システムを明示的に 2 つのプレーンに分割します。

  • コントロール プレーン: .tasks/ の JSON ファイル。タスクは、依存関係、所有者、ステータスを含む、「何をするか」の抽象的な単位です。
  • 実行プレーン: .worktrees/ のディレクトリ。ワークツリーは「どこで実行するか」の物理的なコンテナ、つまりディレクトリ + ブランチです。

この 2 つは、task.worktreeworktree.task_id を通じて双方向にバインドされます。

この種の分離により、次のことが可能になります。タスク管理メカニズムを再利用しますが、 実行環境は変更します (たとえば、git worktree ではなく docker コンテナ)。 または、タスクメカニズムを変更しますが、 ワークツリーを再利用します (たとえば、JSON ファイルではなくデータベース)。

ライフサイクルのデモンストレーション

以下で完全に実行してください: タスクの作成 → ワークツリーの作成 → コマンドの実行 → 保持または削除。各ステップはイベント ログ (events.jsonl) に記録され、運用環境での監視に使用されます。

維持するか削除するか

ワークツリーがその使命を完了すると、2 つの結末があります:

  • remove: git worktree remove --force、ディレクトリの削除。ブランチも通常はクリーンアップされます。これは、「この探索はもう必要ありません」と同じです。
  • keep: .worktrees/index.json 内でのみ status: kept をマークすると、物理ディレクトリが予約されます。これは、「この結果が得られるので、マージするまで待ってください」と同じです。

共通モード: サブエージェントは実験的リファクタリングを実行します → 良好な結果で実行します → 保持 → 人間によるレビュー → メイン ブランチにマージ → 手動で削除します。効果が悪い?取り外して捨てるだけです。

Interactive

Widget 1 · ライフサイクル · タスクの作成から保持/削除まで

5 つのイベントを段階的にトリガーします。左側のディスク ステータス (.tasks/ + .worktrees/) と右側のイベント ログ (events.jsonl) を確認してください。

磁盘状态
events.jsonl(append-only)
Interactive

Widget 2 · 並列レーン · 3 つのワークツリーで 3 つのエージェントを同時に実行

alice / bob / charlie は、異なるワークツリーにある同じファイルを同時に変更します。お互いに見えていますか?衝突が起こるでしょうか?

📂 .worktrees/alice/
📂 .worktrees/bob/
📂 .worktrees/charlie/
Interactive

Widget 3 · 意思決定フロー · 各ステップで適切な次のステップを選択します

実稼働環境のエージェントがワークツリー内の作業を完了したとき、ワークツリーは保持すべきですか、それとも削除すべきですか? 5シーン。

答对 0 / 5