🛠️

Agent Teamスキルを3つ作って見えた「収束型マルチエージェント」の設計原則

に公開

「仮説を1つずつ潰す」が遅すぎる問題

複雑なバグ調査やコード監査を単一エージェントに任せると、仮説を逐次検証するしかない。仮説Aがハズレ → Bを検証 → ハズレ → C...。しかも調査中に「この挙動、別の仮説の方が怪しいぞ」と気づいても、方向転換が難しい。

  • 探索空間が広いバグほど、逐次調査のコストが膨らむ
  • セキュリティとパフォーマンスを1回のレビューで全部見るのは無理がある
  • インシデント対応で「1つずつ」は致命的に遅い

worktree並列開発のような「パイプライン型」は各タスクが独立していることが前提。でも調査系の問題は途中の発見が他の調査ラインに影響する。ここに「収束型」パターンの出番がある。

Agent Teamの仕組みと「なぜこれを選んだか」

Claude CodeのAgent Teamは3つのツールで構成される。

ツール 役割
TeamCreate チーム編成・メンバー起動
SendMessage メンバー間のリアルタイム通信
TaskList 共有タスクボードの参照

Taskサブエージェントとの違いはSendMessageにある。タスクツールは親→子の一方通行で、結果を受け取ってから次を起動する。Agent Teamはメンバー間で自由にDMできるので、「ログでDB遅延を発見」→「コード担当、その前後のデプロイ差分を確認して」というリアルタイムの方向転換ができる。

自分がTaskツールではなくAgent Teamを選んだ判断基準はシンプルで、「途中の発見が他のタスクに影響するか?」。Yesなら収束型一択。

bug-hunt: 並列仮説検証の実装

最初に作ったAgent Teamスキルが/bug-hunt。チーム構成はこう。

hunt-lead(リーダー)
├── investigator-1(調査員1)
├── investigator-2(調査員2)
└── fix-proposer(修正担当)

ワークフローは4フェーズ。hunt-leadが仮説を3〜5個生成し、investigatorが並列で検証。investigator-1が「nullチェック抜け」を発見したら、SendMessageでhunt-leadに報告。hunt-leadは「investigator-2は同じパターンが他にもないか確認して」と方向転換を指示する。

状態管理はシェルスクリプトで仮説をJSONに永続化する。

# 仮説を追加
hunt-state.sh add-hypothesis \
  --id "h1" \
  --description "認証トークンの有効期限切れ" \
  --assignee "investigator-1"

# 仮説を確定
hunt-state.sh update-hypothesis \
  --id "h3" \
  --status "confirmed" \
  --evidence "キャッシュのTTL設定が本番だけ0秒になっていた"

auto-compactが走ってもcat state.jsonで復帰できる。SendMessageの内容は揮発するが、重要な発見は状態ファイルに残る設計にした。

なぜこう書くか

状態管理をJSONファイルにした理由は、Agent Teamのコンテキストが揮発するから。SendMessageで伝えた情報はcompact後に消える。だからDBやRedisではなくファイルに永続化して、cat一発で復帰できるようにした。

もう一つの判断として、fix-proposerは原因確定まで起動しない。4エージェント常時稼働は、1メーターのタクシーに1万円渡すようなもの。hunt-leadが複雑さを判定して、単純なら1エージェント、複雑なら2エージェントと段階的に投入する。

3つ作って見えた4つの設計原則

bug-hunt、code-audit-team、incident-responseの3スキルを作る中で、共通する原則が見えてきた。

1. リーダーは判断に専念する — リーダーは自分では調査しない。報告を受けて方向転換を指示し、収束を判定する。サッカーの監督がピッチに立たないのと同じ。

2. 状態はファイルに永続化する — SendMessageの内容は揮発する。重要な発見は状態ファイルに記録して、compactに耐える設計にする。

3. 不要なメンバーは早期シャットダウン — config-analystが「変更なし」を確認したら即解散。全員最後まで走らせる必要はない。コストはメンバー数 × ターン数に比例する。

4. --max-turnsでコスト上限を設定 — バジェット80%消費でワーニング、100%で強制収束。「朝起きたらトークン使い切ってた」は笑えない。

まとめ: 自分はこう使い分けている

判断基準 パイプライン型 収束型(Agent Team)
タスクの独立性 高い 低い(結果が相互依存)
成果物 コード(PR) 分析レポート・修正案
向いている場面 機能実装 バグ調査、監査、インシデント

迷ったら「タスクをファイル単位で分割できるか?」を最初に考える。できるならパイプライン型。途中の発見が他に影響するなら収束型。分からなければまず単一エージェントで試して、行き詰まったらAgent Teamを検討する。


元記事

この記事は 【Claude Code】バグ調査・コード監査を並列で回すAgent Team協調設計 — 収束型マルチエージェントの実装パターン のコア部分を再構成したものです。元記事ではさらに:

  • code-audit-teamのホットスポット検出とクロスドメインのスコアリング式
  • incident-responseのタイムライン構築と調査ライン間の連携フロー
  • 3スキルそれぞれのチーム構成・フェーズ設計の詳細比較

を扱っています。


この記事は playpark Blog からの転載です。

Discussion