Skip to main content
サブエージェントは、メインエージェントが生成できる個別のエージェントインスタンスで、焦点を絞ったサブタスクを処理します。 サブエージェントを使用して、コンテキストを分離し、複数の分析を並列実行し、メインエージェントのプロンプトを肥大化させずに特殊な指示を適用します。 このガイドでは、agents パラメータを使用して SDK でサブエージェントを定義および使用する方法について説明します。

概要

サブエージェントは 3 つの方法で作成できます。
  • プログラム的に: query() オプションの agents パラメータを使用します。TypeScript および Python リファレンスを参照してください
  • ファイルシステムベース: .claude/agents/ ディレクトリ内のマークダウンファイルとしてエージェントを定義します。ファイルとしてサブエージェントを定義するを参照してください
  • 組み込みの汎用: Claude は、何も定義することなく、Agent ツールを介して組み込みの general-purpose サブエージェントをいつでも呼び出すことができます
このガイドでは、SDK アプリケーションに推奨されるプログラム的なアプローチに焦点を当てています。 サブエージェントを定義する場合、Claude は各サブエージェントの description フィールドに基づいて、それらを呼び出すかどうかを判断します。サブエージェントをいつ使用すべきかを説明する明確な説明を書いてください。Claude は自動的に適切なタスクを委譲します。プロンプトでサブエージェントを名前で明示的にリクエストすることもできます。例えば「code-reviewer エージェントを使用して…」のようにです。

サブエージェントを使用する利点

コンテキスト分離

各サブエージェントは独自の新しい会話で実行されます。中間的なツール呼び出しと結果はサブエージェント内に留まり、最終メッセージだけが親に返されます。サブエージェントが継承するものを参照して、サブエージェントのコンテキストに正確に何が含まれているかを確認してください。 例: research-assistant サブエージェントは、そのコンテンツがメイン会話に蓄積されることなく、数十のファイルを探索できます。親は、サブエージェントが読んだすべてのファイルではなく、簡潔なサマリーを受け取ります。

並列化

複数のサブエージェントを同時に実行でき、独立したサブタスクはすべての合計ではなく、最も遅いものの時間で完了します。 例: コードレビュー中に、style-checkersecurity-scannertest-coverage サブエージェントを順序立てて実行するのではなく、同時に実行できます。

特殊な指示と知識

各サブエージェントは、特定の専門知識、ベストプラクティス、制約を備えたカスタマイズされたシステムプロンプトを持つことができます。 例: database-migration サブエージェントは、SQL ベストプラクティス、ロールバック戦略、データ整合性チェックに関する詳細な知識を持つことができます。これらはメインエージェントの指示では不要なノイズになります。

ツール制限

サブエージェントは特定のツールに制限でき、意図しないアクションのリスクを軽減します。 例: doc-reviewer サブエージェントは Read と Grep ツールのみにアクセスでき、ドキュメントファイルを分析できますが、誤って変更することはありません。

サブエージェントの作成

agents パラメータを使用してコード内でサブエージェントを直接定義します。Claude はサブエージェントを Agent ツール経由で呼び出すため、allowedToolsAgent を含めて、パーミッション プロンプトなしでサブエージェント呼び出しを自動承認する必要があります。 このページのほとんどの例は最終結果のみを出力します。Claude がサブエージェントに委譲したことを確認するには、サブエージェント呼び出しの検出を参照してください。 この例では、読み取り専用アクセスを持つコードレビュアーとコマンドを実行できるテストランナーの 2 つのサブエージェントを作成します。