バックグラウンドおよび並列エージェント
範囲を定めたタスクでエージェントを信頼できるようになると、次の一手は明らかだ:複数を一度に走らせること。現代の道具はバックグラウンドエージェントを——それぞれ自分のブランチやワークツリー(プロジェクトの別々の作業用コピーのことで、あるエージェントの編集が別のエージェントの編集と決してぶつからないようにする)で——立ち上げられるようにし、あなたが別のことをしている間に三つか四つの範囲を定めたタスクが進む。
これは本物の高速化だが、独立した仕事に限ってのことだ。あなたが引き換えにするコストは調整だ。同じファイルを編集する二つのエージェントは競合するdiffを生み、それを手でマージするのは節約した分より高くつきうる。
- 行数ではなく境界で分けよ。 各エージェントに他と重ならない塊を与えよ——別々のモジュール、別々の機能、別々のファイル。「エージェントAはエクスポート機能、エージェントBはドキュメント」はきれいだ。「両方のエージェントが
app.jsを編集」はマージの頭痛の予約だ。 - 作業空間を隔離せよ。 各エージェントを自分のブランチやワークツリーで走らせ、互いの未コミットの変更を踏まないようにせよ。一度に一つずつマージし直し、マージのたびに検査を回せ。
- 数を正直に保て。 それでも全部の結果を確認せねばならない。四つのエージェントが走っているとは、読むべき四つのdiffと信頼すべき四組のテストだ。ひと握りを超えると、エージェントではなくレビューの待ち行列があなたのボトルネックになる。
各エージェントは自分専用の隔離されたワークツリーで作業するので、彼らの編集が衝突することはありません。あなたは一度に一つずつマージし直し、各ゲートでチェックを回します。
┌─────────────────────────────┐
│ 境界で分割する │
└──────────────┬──────────────┘
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 代理人 A │ │ 代理人 B │ │ 代理人 C │
│ worktree-a/ │ │ worktree-b/ │ │ worktree-c/ │
│ エクスポート │ │ ドキュメント │ │ 設定ページ │
└──────┬───────┘ └──────┬───────┘ └──────┬───────┘
│ branch-a │ branch-b │ branch-c
└────────────────┼────────────────┘
▼
┌──────────────────┐
│ 一つずつ統合 │ 統合ごとに検査
│ → main │
└──────────────────┘
隔離コピー = 衝突なし · レビュー待ち行列が真の限界
間違いは並列性を無料と扱うことだ。そうではない——あなたは仕事を書くことからレビューと統合へ移したのだ。しばしば素晴らしい取引だが、あなたが実際にレビューをする場合に限る。