Claude Codeで並列作業を任せたいとき、Sub-AgentsとAgent Teamsのどちらを使えばいいか迷っていないでしょうか。

名前は似ていますが、設計思想がまったく異なります。選択を間違えるとトークンの浪費や作業の手戻りにつながるため、違いを正確に押さえておくことが重要です。

この記事でわかること

  • Sub-AgentsとAgent Teamsの構造的な違い
  • それぞれが得意なタスクの具体例
  • 使い分けの判断基準
  • Agent Teams導入時の注意点

Sub-Agentsとは何か

Sub-Agentsは、メインセッションから一時的に起動されるワーカーです。独自のコンテキストウィンドウを持ち、作業が終わると結果の要約だけを親エージェントに返します。

Claude Codeには3種類の組み込みSub-Agentがあります。Exploreは読み取り専用でコードベースの検索に使います。Planも読み取り専用で、計画モード中のバックグラウンド調査に向いています。General-purposeは読み書き両方が可能で、調査と編集を組み合わせたタスクに対応します。

Sub-Agentsの強みは、メインスレッドを汚さない点です。テストログや検索結果が大量に出るタスクを任せても、メインの会話には結果の要約だけが返ってきます。複数のSub-Agentを同時に起動して並列処理もできます。

Agent Teamsとは何か

Agent Teamsは、複数の独立したClaude Codeインスタンスがチームとして協働する仕組みです。1つのセッションがチームリードとなり、残りのメンバーがそれぞれ独立したコンテキストウィンドウで作業します。

Sub-Agentsとの最大の違いは、メンバー同士が直接メッセージをやり取りできる点です。Sub-Agentsではすべての情報がメインエージェント経由でしたが、Agent Teamsではフロントエンド担当がバックエンド担当にAPIの変更を直接伝えるといった連携が可能です。

チームは3つの要素で構成されます。タスクの作成・割り振りを行うチームリード、実際の作業を担う複数のチームメイト、そして全員が参照できる共有タスクリストとメールボックスです。タスクにはpending・in progress・completedの3つの状態があり、依存関係も設定できます。あるタスクが完了すると、それに依存していたタスクが自動的にブロック解除されます。

通信モデルの違い

Sub-Agentsの通信は一方向です。親エージェントがSub-Agentにタスクを渡し、Sub-Agentが結果を返す。それだけです。Sub-Agent同士が会話したり、発見を共有したりはできません。

Agent Teamsはピアツーピア通信を採用しています。チームメイトは名前を指定して他のメンバーに直接メッセージを送れます。チームリードを経由する必要はありません。共有タスクリストを通じた自己調整も可能で、1つのタスクが終わったメンバーが次の未着手タスクを自分で拾い上げて作業を続けます。

この違いが効いてくるのは、作業中に新しい情報が出てきた場面です。Sub-Agentsでは親エージェントが情報を受け取って再配分するまで他のワーカーは古い前提で動き続けます。Agent Teamsなら発見した本人が関係者に即座に伝えられます。

Sub-Agentsが向いているタスク

「結果だけ欲しい」タスクにはSub-Agentsが適しています。

典型的な例は、テスト実行です。数千行のログが出るテストをメインスレッドで走らせると会話が埋もれます。Sub-Agentに任せれば、失敗したテストの要約だけが返ってきます。

複数モジュールの独立した調査も得意です。認証、データベース、APIの各モジュールをそれぞれ別のSub-Agentに調べさせれば、並列に進みます。メインセッションのコンテキストを消費しないため、調査結果を受け取った後も十分な余裕があります。

パイプライン型の処理にも向いています。「まず問題を見つける」Sub-Agentと「見つかった問題を修正する」Sub-Agentを順番に動かすといった使い方です。

Agent Teamsが向いているタスク

「議論と検証が必要な」タスクにはAgent Teamsが適しています。

代表的な例は、多角的なコードレビューです。セキュリティ、パフォーマンス、テストカバレッジの3つの観点でそれぞれ別のレビュアーを立て、同じPRを並列にレビューさせます。1人のレビュアーが順番に見るよりも、各観点が深く掘り下げられます。

仮説検証型のデバッグにも効果的です。バグの原因候補ごとにチームメイトを割り当て、互いの仮説を否定し合う「科学的討論」形式で調査を進められます。単一エージェントでは最初に見つけた仮説に引きずられがちですが、複数の独立した調査者が互いに反証を試みることで、より正確な原因特定につながります。

フロントエンド・バックエンド・テストといったレイヤーをまたぐ開発も、それぞれのレイヤーを担当するチームメイトが直接連携できるため効率的です。

判断基準の整理

迷ったときは「ワーカー間のコミュニケーションが必要か」で判断します。

結果だけ返してくれればいいならSub-Agentsです。トークンコストが低く、メインセッションのコンテキストも消費しません。独立したタスクの並列処理に最適化されています。

作業中に情報を共有したり、互いの成果物を検証し合う必要があるならAgent Teamsです。ただし、各チームメイトが独立したClaude Codeインスタンスとして動くため、トークンコストはメンバー数に比例して増えます。

Agent Teamsを使うときの注意点

Agent Teamsは現在まだ実験的機能で、デフォルトでは無効です。有効にするにはsettings.jsonに以下を追加します。

{
  "env": {
    "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1"
  }
}

Claude Code v2.1.32以降が必要です。claude --versionでバージョンを確認してください。

チームサイズは3〜5人が推奨されています。多すぎると調整コストが上がり、トークン消費も膨らみます。1人あたり5〜6タスクを割り当てると効率よく回ります。

同じファイルを複数のチームメイトが同時に編集すると上書き競合が起きます。モジュールやファイル単位で担当を分けることが重要です。

セッション復元の制限もあります。/resume/rewindはインプロセスのチームメイトを復元できません。中断後に再開する場合は、チームメイトを新たに作り直す必要があります。

カスタムSub-Agentの定義

組み込みのSub-Agentで足りない場合は、自作のSub-Agentを定義できます。.claude/agents/にMarkdownファイルを置くだけです。

---
name: code-reviewer
description: コード変更後に品質・セキュリティを自動レビューする
tools: Read, Grep, Glob, Bash
model: inherit
---
レビュー対象のコード変更を分析し、重要度別にフィードバックを返す。

descriptionフィールドの精度が重要です。Claudeはこの説明文を見て、どのSub-Agentを呼ぶかを判断します。曖昧な説明だと意図しないタイミングで起動されたり、必要なときに起動されなかったりします。

定義したカスタムSub-AgentはAgent Teamsのチームメイトとしても使えます。チームメイト生成時に名前を指定すれば、そのSub-Agentのtools制限とmodel設定が適用されます。

まとめ

Sub-AgentsとAgent Teamsは代替関係ではなく、解決する問題が異なります。コンテキストを隔離して結果だけ受け取りたいならSub-Agents、複数の視点で議論・検証しながら進めたいならAgent Teamsが適しています。Agent Teamsはトークンコストが高く制約もあるため、まずはコードレビューや調査といったリスクの低いタスクから試すのが現実的です。