Claude Codeには Subagents という機能があります。特定のタスクに特化したAgentを作ったり、コンテキスト管理を改善することができます。
Claude Codeをコーディング以外にも様々活用する中で、Subagentsを活用するトポロジーパターンのようなものが見えてきたので、言語化して書き残します。
中央集権型
Claude Codeのサンプルでも意図されているパターンです。
流れ
- MainのAgentがいて、Mainが小さなタスクに分解する
- Code ReviewやDebugのためのAgentを呼び出して処理させる
- Mainは各Subagentsから結果を受け取って、処理を進める
Mainだけで処理をするときと比べて、Context Windowに入らない処理でも比較的安全に確実に処理を進めることができる点が優れています。

パイプライン型
直前に行われていた情報が必要な作業をするときに使われるパターンです。 例えば、コーディングのようにコンテキストを共有しながら進めないと適切な成果物にならないときに使います。
流れ
- Main AgentがDomainA特化のSubagentにコーディングを依頼
- DomainA特化のSubagentが実装
- Main AgentがDomainA特化のSubagentから結果を受け取って次の行動を決定
- Main AgentがDomainB特化のSubagentにコーディングを依頼
- Main AgentがDomainB特化のSubagentから結果を受け取る

Fan-out/Fan-in型
エヴァンゲリオンのMAGIシステムを思い浮かべると想像しやすいと思います。
LLMはその性質上、回答に揺らぎがあります。そこで、同じタスクを複数のAgentに実行してもらい、結果を集計することで精度の高い結果を得ようとする手法です。
同じAgentである必要はなく、異なるAgentを使うことで、複数の観点からタスクを実行することもできます。
流れ
- Main Agentが次に行うタスクを決定
- Main Agentが同じタスクに対して複数のSubagentsを起動
- Subagentsが各自処理をする
- 各Subagentsの結果をMain Agentがまとめて最終決定を出す

Human-in-the-Loop型
Claude CodeのPlan modeで「この計画の中で不明な点はありますか?ある場合はこちらに質問してください」のように書くことで、AIがより積極的に人間に相談してくれるようになります。
厳密には従来の定義とは異なる部分もありますが、この概念がよく説明できているため採用しました。
まとめ
Claude CodeのSubagents機能は、活用すると他のツールでは実現困難なことを気軽に実行できて優れています。