agentsパラメータを使用してSDKでサブエージェントを定義し使用する方法について説明します。
概要
SDKを使用する際、サブエージェントは2つの方法で定義できます:- プログラム的 -
query()オプションでagentsパラメータを使用(SDKアプリケーションに推奨) - ファイルシステムベース - 指定されたディレクトリ(
.claude/agents/)にYAMLフロントマターを持つマークダウンファイルを配置
agentsパラメータを使用したプログラム的アプローチに焦点を当てます。
サブエージェント使用の利点
コンテキスト管理
サブエージェントはメインエージェントから分離されたコンテキストを維持し、情報過多を防ぎ、やり取りを集中させます。この分離により、専門化されたタスクが無関係な詳細でメインの会話コンテキストを汚染することがなくなります。 例:research-assistantサブエージェントは、中間検索結果すべてでメインの会話を乱雑にすることなく、数十のファイルとドキュメントページを探索し、関連する発見のみを返すことができます。
並列化
複数のサブエージェントが同時に実行でき、複雑なワークフローを劇的に高速化します。 例: コードレビュー中に、style-checker、security-scanner、test-coverageサブエージェントを同時に実行し、レビュー時間を数分から数秒に短縮できます。
専門化された指示と知識
各サブエージェントは、特定の専門知識、ベストプラクティス、制約を持つカスタマイズされたシステムプロンプトを持つことができます。 例:database-migrationサブエージェントは、メインエージェントの指示では不要なノイズとなるSQLベストプラクティス、ロールバック戦略、データ整合性チェックに関する詳細な知識を持つことができます。
ツール制限
サブエージェントは特定のツールに制限でき、意図しない動作のリスクを軽減します。 例:doc-reviewerサブエージェントはReadとGrepツールのみにアクセスでき、分析はできるがドキュメントファイルを誤って変更することがないことを保証します。
サブエージェントの作成
プログラム的定義(推奨)
agentsパラメータを使用してコード内で直接サブエージェントを定義します:
AgentDefinition設定
| フィールド | タイプ | 必須 | 説明 |
|---|---|---|---|
description | string | はい | このエージェントをいつ使用するかの自然言語説明 |
prompt | string | はい | エージェントの役割と動作を定義するシステムプロンプト |
tools | string[] | いいえ | 許可されたツール名の配列。省略時は全ツールを継承 |
model | 'sonnet' | 'opus' | 'haiku' | 'inherit' | いいえ | このエージェントのモデルオーバーライド。省略時はメインモデルをデフォルト |
ファイルシステムベース定義(代替)
特定のディレクトリにマークダウンファイルとしてサブエージェントを定義することもできます:- プロジェクトレベル:
.claude/agents/*.md- 現在のプロジェクトでのみ利用可能 - ユーザーレベル:
~/.claude/agents/*.md- 全プロジェクトで利用可能
agentsパラメータ経由)は、同じ名前のファイルシステムベースエージェントより優先されます。
SDKがサブエージェントを使用する方法
Claude Agent SDKを使用する際、サブエージェントはプログラム的に定義するか、ファイルシステムから読み込むことができます。Claudeは:- プログラム的エージェントを読み込み - オプションの
agentsパラメータから - ファイルシステムエージェントを自動検出 -
.claude/agents/ディレクトリから(オーバーライドされていない場合) - 自動的に呼び出し - タスクマッチングとエージェントの
descriptionに基づいて - 専門化されたプロンプトを使用 - ツール制限と共に
- 分離されたコンテキストを維持 - 各サブエージェント呼び出しで
agentsパラメータ経由)は、同じ名前のファイルシステムベースエージェントより優先されます。
サブエージェントの例
コードレビューアー、テストランナー、デバッガー、セキュリティ監査人を含むサブエージェントの包括的な例については、メインサブエージェントガイドを参照してください。このガイドには、効果的なサブエージェントを作成するための詳細な設定とベストプラクティスが含まれています。SDK統合パターン
自動呼び出し
SDKはタスクコンテキストに基づいて適切なサブエージェントを自動的に呼び出します。エージェントのdescriptionフィールドがいつ使用すべきかを明確に示すようにしてください:
明示的呼び出し
ユーザーはプロンプトで特定のサブエージェントを要求できます:動的エージェント設定
アプリケーションのニーズに基づいてエージェントを動的に設定できます:ツール制限
サブエージェントはtoolsフィールドを介してツールアクセスを制限できます:
- フィールドを省略 - エージェントは利用可能な全ツールを継承(デフォルト)
- ツールを指定 - エージェントはリストされたツールのみ使用可能
一般的なツールの組み合わせ
読み取り専用エージェント(分析、レビュー):関連ドキュメント
- メインサブエージェントガイド - 包括的なサブエージェントドキュメント
- SDK概要 - Claude Agent SDKの概要
- 設定 - 設定ファイルリファレンス
- スラッシュコマンド - カスタムコマンド作成