Antigravity 2.0 が「エージェント管制塔」と呼ばれるようになってから、個人開発で複数アプリを並行して回している私のデスクトップでは常時 3〜4 体のエージェントが同時に動くようになりました。便利になった反面、最初の一週間は「どれが今なにを待っているのか」が分からず、結局すべてを順番に見て回ることになり、並列にした意味がほとんどありませんでした。
問題は並列実行そのものではなく、監督する側の画面と注意の配り方が一体運用に追いついていなかったことでした。複数エージェントを束ねるのは、コードを書く作業というより、複数の同時進行を捌く管制の作業です。ここでは、その捌き方を画面構成と割り込み判断の二つに分けて整理します。
並列にすると最初に壊れるのは「注意」だった
エージェントを 1 体だけ動かしていたころは、出力をそのまま追えばよく、迷う余地がありませんでした。ところが 3 体に増やした途端、私は全部を等しく見ようとして、どれも中途半端にしか見られなくなりました。
ここで気づいたのは、人間が同時に深く追えるのは実質 1 体だけだということです。残りの 2〜3 体は「見る」のではなく「合図が来たら見る」対象に切り替える必要がありました。つまり並列監督の設計とは、注意を向ける先を減らす設計だったのです。
画面は「進行中」「要判断」「完了」の三領域に分ける
そこで私は、エージェントの状態を三つの領域に物理的に分けて並べるようにしました。
- 進行中: いま自律で動いていて、人間の入力を待っていないもの。基本的に見ない
- 要判断: 確認や許可を待って止まっているもの。ここだけを能動的に見る
- 完了: 終わったもの。結果をまとめて検収する
この三分割の肝は、進行中の領域を意識的に見ないと決めることです。動いている最中のエージェントを覗き込んでも、できるのは不安になることくらいで、判断材料は増えません。私の体感では、進行中を見る時間をゼロに近づけたことで、要判断への反応がむしろ速くなりました。
デスクトップ側の設定では、各エージェントに状態がひと目で分かる接頭辞を付けています。
[RUN] refactor-auth … 進行中(触らない)
[WAIT] migrate-db-schema … 要判断(確認待ち)
[DONE] update-i18n-keys … 完了(検収待ち)
タスク名の頭にこの 3 状態を入れておくだけで、一覧をざっと眺めたときに「いま自分が見るべきは WAIT だけ」と即座に分かります。色分けより文字接頭辞のほうが、視界の端でも判別しやすいと感じています。
割り込みは「待たせるコスト」で判断する
要判断のエージェントが複数同時に止まったとき、どれから捌くかが次の問題です。私は到着順ではなく、待たせることのコストで優先順位を決めています。
判断の目安は次の二つです。
- 後続作業をブロックしているか。これが止まると他の 2 体も進めない、というものは最優先
- 文脈が揮発しやすいか。ブラウザ操作の途中で止まっているものは、放置すると状態が古くなって最初からやり直しになりやすい
逆に、単発で他に影響しない確認は、個人的には後回しにして構わないと考えています。到着順に律儀に捌くと、ブロッキングなタスクが行列の後ろで待ち続け、全体のスループットが落ちます。実際、優先順位を到着順から「ブロッキング優先」に変えただけで、半日あたりに片付くタスク数が約 20% 増えました。
状態を失わせない割り込みの作法
止まっているエージェントに割り込むとき、雑に指示を足すと文脈が壊れます。私が守っているのは、割り込みの指示を「現在の方針への追記」として書くことです。
(悪い割り込み)
「やっぱり別のやり方にして」
(良い割り込み)
「ここまでの方針は維持したまま、認証部分だけは
セッション Cookie ではなくトークン方式に切り替えてほしい。
既存のテストは壊さないこと」
前者はエージェントにそれまでの文脈を捨てさせかねません。後者は「何を維持し、何を変えるか」を明示するので、進行中の状態を保ったまま方向だけを微修正できます。割り込みは方針の上書きではなく、差分の追記だと捉えると失敗が減ります。
並列数の上限は自分の検収速度で決まる
最後に並列数の話です。私自身、欲張って 6 体まで増やしたことがありますが、完全に破綻しました。エージェントは並列で動けても、完了を検収するのは結局 1 人の人間だからです。
検収が追いつかないと、完了済みのエージェントが結果を抱えたまま積み上がり、要判断の合図に気づくのが遅れ、全体が詰まります。これは生産ラインで検査工程だけがボトルネックになるのと同じ構図で、本番運用で最も静かにスループットを削る落とし穴でした。回避するには、起動数ではなく検収数で上限を引く必要があります。
今は経験的に、並列数の上限を**「30 分以内に全部の完了を検収しきれる数」**に置いています。私の場合それは 3 体で、ごく軽いタスクが揃っているときだけ 4 体です。この上限を超えそうなときは、新しいエージェントを起動せずに、走っているもののどれかが完了するのを待つようにしています。並列数は能力の上限ではなく、自分の検収速度で決まると考えるのが現実的でした。
まず試してほしいこと
次にエージェントを 2 体以上動かすときは、タスク名の頭に [RUN] [WAIT] [DONE] を付けるところから始めてみてください。それだけで「いま見るべき一つ」が浮かび上がります。
私もまだ最適な並列数を探っている途中ですが、監督とは注意を配ることではなく、配る先を絞ることだと分かってから、複数エージェントの運用がずいぶん楽になりました。同じように管制塔の前で疲れている方の参考になれば嬉しいです。