- 組み込みサブ Agent:qodercli が提供します。汎用検索、コード探索、計画などがあります。
- カスタムサブ Agent:SDK 利用者が
QoderAgentOptions.agentsで定義します。業務レビュー、テスト実行、セキュリティ分析などの専門ロールに適しています。
QoderAgentOptions.agent は、ある Agent 定義をメインセッションのロールとして実行する特別な使い方です。
組み込みサブ Agent
組み込みサブ Agent を使う場合、自分でサブ Agent 定義を書く必要はありません。名前を知っていれば SDK から参照できます。 現在 qodercli でよく使われる組み込みサブ Agent:| 名前 | 用途 |
|---|---|
general-purpose | 汎用サブ Agent。コード検索、複雑な問題の調査、複数ステップのタスク実行に適しています |
Explore | 読み取り専用のコード探索サブ Agent。ファイル検索、キーワード検索、コード構造の把握に適しています |
Plan | 読み取り専用の計画サブ Agent。実装方針の設計、重要ファイルの特定、アーキテクチャ上のトレードオフ分析に適しています |
/agents を入力すると、現在検出されているサブ Agent を確認できます。コマンドラインでも次を実行できます。
QoderSDKClient.supported_agents() で現在のセッションから実際に利用できるサブ Agent を取得できます。
supported_agents() の戻り値には、SDK が agents で登録したサブ Agent と、現在の CLI が検出した組み込み、ユーザー、プロジェクト、プラグインのサブ Agent が含まれることがあります。戻り値の構造は AgentInfo を参照してください。
組み込みサブ Agent の使用
メインセッションロールとして実行する
セッション全体を組み込みサブ Agent のロールで実行したい場合は、組み込みサブ Agent 名をQoderAgentOptions.agent に直接渡します。agents で再定義する必要はありません。
agent は SDK が登録したサブ Agent だけでなく、現在の CLI が検出した組み込み / ユーザー / プロジェクト / プラグインのサブ Agent も参照できます。
サブ Agent として委任する
サブ Agent への委任は、組み込みのAgent ツールを通じて行われます。メインセッションの利用可能ツール集合に Agent が含まれていないと、モデルは委任を開始できません。SDK では、このツール呼び出し経路を事前承認し、prompt 内で対象サブ Agent を指名する方法がよく使われます。
allowed_tools=["Agent"] は、この種類のツール呼び出しを許可または事前承認します。同時に tools でメインセッションのツール許可リストを絞る場合は、tools にも Agent を含めてください。Agent を disallowed_tools に入れないでください。
サブ Agent 名は、大文字小文字を含めて検出結果と一致している必要があります。たとえば現在の組み込み名には Explore、Plan、general-purpose があります。不確かな場合は先に client.supported_agents() を呼び出してください。
カスタムサブ Agent
組み込みサブ Agent が業務やプロジェクトの制約に合わない場合は、QoderAgentOptions.agents でカスタムサブ Agent を定義できます。例:
- 読み取り専用コードレビューサブ Agent:ファイルの読み取りと検索だけが可能で、コードは変更できません。
- テスト実行サブ Agent:テストコマンドを実行し、失敗理由を分析できます。
- セキュリティレビューサブ Agent:認証、認可、インジェクション、機密情報漏えいなどのリスクに集中します。
- 業務サポートサブ Agent:注文検索、チケット検索、内部ナレッジベース検索など、指定した MCP ツールだけを呼び出せます。
agentsにサブ Agent 名、用途説明、システムプロンプトを定義する。toolsまたはdisallowedToolsで利用可能なツールを絞る。- メインセッションから
Agentツールで委任するか、agentでメインセッションを直接駆動させる。
Agentツールは必須です:カスタムサブ Agent は、メインセッションが組み込みAgentツールを通じて委任する必要があるため、allowed_toolsにAgentツールを含める必要があります。
agents でカスタムサブ Agent を定義する
最小例:読み取り専用のコードレビューサブ Agent を登録します。QoderAgentOptions.agentsは、このセッションで利用できるカスタムサブ Agent を登録します。- サブ Agent 委任は
Agentツールで行われるため、ここではallowed_tools=["Agent"]でその呼び出し経路を事前承認する必要があります。 - サブ Agent 自身の
toolsは読み取りと検索だけを許可しているため、ファイル編集もコマンド実行もできません。
agents の入力
agents は、サブ Agent 名から AgentDefinition へのマップです。完全な型は AgentDefinition を参照してください。
| フィールド | 型 | 必須 | 設定例 | 説明 |
|---|---|---|---|---|
description | str | はい | このサブ Agent をいつ使うかを一文で説明 | モデル向けのルーティング説明。呼び出されるかに影響します |
prompt | str | はい | サブ Agent のロール、境界、出力要件 | そのサブ Agent のシステムプロンプト |
tools | list[str] | いいえ | ["Read", "Grep", "Glob"] など | ツール許可リスト。設定後は列挙されたツールだけを使用できます |
disallowedTools | list[str] | いいえ | ["Bash", "Write"] など | ツール拒否リスト。少数のツールだけを除外する場合に適します |
model | str | いいえ | "inherit"、"auto" または完全なモデル ID | サブ Agent のモデル設定 |
maxTurns | int | いいえ | 8 など | サブ Agent が実行できる最大ターン数を制限 |
effort | "low" | "medium" | "high" | "max" | いいえ | "high" など | 推論努力レベルを制御します |
permissionMode | PermissionMode | いいえ | "default"、"acceptEdits"、"plan" など | サブ Agent 内部のツール呼び出し権限モードを制御します |
skills | list[str] | いいえ | ["review"] など | サブ Agent コンテキストにプリロードする skill |
mcpServers | list[str | dict[str, Any]] | いいえ | ["orders"] または [{"kb": {...}}] など | サブ Agent の MCP server を制限または追加します |
initialPrompt | str | いいえ | 最初の自動入力 | このサブ Agent が agent でメインセッションロールになった場合のみ有効です |
AgentDefinition フィールド名はプロトコルスタイルの camelCase を使用します。たとえば disallowedTools、maxTurns、initialPrompt、permissionMode であって、disallowed_tools や max_turns ではありません。
サブ Agent ロールの設定
description と prompt は、カスタムサブ Agent で最も重要な2つのフィールドです。
description
description は「いつこのサブ Agent を使うべきか」を説明します。モデルはそれに基づいて委任するかを判断します。
description はタスクの境界を具体的に示します。A helpful agent や Helper のような汎用的な説明は避けてください。
prompt
prompt は、サブ Agent のロール、境界、出力形式を定義します。Python の AgentDefinition コンストラクタはこのフィールドの渡し込みを必須としています。
prompt では少なくとも次の3点を説明することを推奨します。
| 説明すること | 例 |
|---|---|
| 担当タスク | Review code for security and maintainability issues. |
| してはいけないこと | Do not edit files. Do not run commands. |
| 結果の返し方 | Return findings sorted by severity with file paths. |
サブ Agent のモデルと推論の設定
まずdescription と prompt を明確にしてから、model、effort、maxTurns を検討してください。前者はサブ Agent が正しく呼ばれるか、呼ばれた後に境界を理解できるかを決めます。後者は、ロールが明確になった後で品質、速度、コストを調整するためのものです。
| 設定 | 制御するもの | 優先的に調整する場面 |
|---|---|---|
model | サブ Agent が使うモデルまたはモデルエイリアスを選択 | このサブ Agent が固定タイプのタスクを継続的に担当し、能力とコストを安定制御したい場合 |
effort | 同じモデルでどれだけ推論予算を使うか | 同じサブ Agent が、ときどきより複雑で慎重な推論を必要とするタスクを受ける場合 |
maxTurns | 最大実行ターン数を制限 | タスクが深く探索しすぎる、長く走りすぎる、またはコストにハード上限を設けたい場合 |
model は str | None です。よく使う書き方には "inherit"、"auto"、モデルエイリアス、または現在の CLI / バックエンドがサポートする完全なモデル ID があります。実際に利用できる値は qodercli とバックエンドの設定に依存します。
例:サブ Agent ごとに異なる戦略を設定します。
サブ Agent のツール制御
カスタムサブ Agent とメインセッションは同じツール名を使います。組み込みツール名にはRead、Grep、Glob、Bash などがあります。カスタム MCP ツール名は完全形式 mcp__{serverName}__{toolName} を使います。
メインセッション側の Agent ツール
agents はサブ Agent を登録するだけで、モデルに自動で呼び出させるわけではありません。モデルがタスクを委任するには、メインセッションのツール集合に Agent が含まれている必要があります。QoderAgentOptions.tools でメインセッションの利用可能ツールを制限する場合は、Agent を含めるのを忘れないでください。disallowed_tools=["Agent"] を設定すると、委任は無効になります。
ツール許可リスト:tools
tools はサブ Agent のツール許可リストです。設定後、このサブ Agent は列挙されたツールだけを使用できます。
| シナリオ | 推奨ツール | 説明 |
|---|---|---|
| 読み取り専用分析 | Read, Grep, Glob | コードを読めますが、変更やコマンド実行はできません |
| テスト実行 | Bash, Read, Grep | テストコマンドを実行し、出力を分析できます |
| コード作成 | Read, Edit, Write, Grep, Glob | ファイルを読み書きできますが、直接コマンドは実行できません |
| 業務ツール呼び出し | mcp__server__tool | 指定したカスタムツールだけを許可します |
ツール拒否リスト:disallowedTools
disallowedTools は「大部分のツールは許可し、少数だけ除外したい」場合に適しています。
tools と disallowedTools を同時に設定しないでください。
メインセッションのツール設定との関係
サブ Agent のtools / disallowedTools は、そのサブ Agent にだけ作用します。メインセッションのツール許可リストや拒否リストの絞り込みは継承しません。メインセッション側で Agent という委任経路だけを事前承認していても、サブ Agent は自分に設定された Read、Grep などのツールを使用できます。
サブ Agent の権限制御
ツール集合は、サブ Agent が「どのツールを呼び出せるか」を決めます。権限設定は、それらのツール呼び出しを「どのように承認またはブロックするか」を決めます。サブ Agent に個別のpermissionMode を設定し、内部ツール実行の権限挙動を制御できます。
permissionMode の完全な選択肢と意味は Agents Reference - permissionMode を参照してください。ホストがツール呼び出しを毎回承認する必要がある場合は、セッションレベルの can_use_tool コールバックを使用できます。コールバックが受け取る context.agent_id で、サブ Agent からの呼び出しかどうかを識別できます。
サブ Agent への skills 読み込み
skills は、特定のサブ Agent に専門スキルをプリロードするために使います。特定のワークフロー、チーム規約、ツール利用方法を毎回 prompt に入れるのではなく、サブ Agent に紐づけたい場合に適しています。
skills はそのサブ Agent のコンテキストだけに影響します。メインセッションの QoderAgentOptions.skills と同じではありません。セッションレベルの skill 挙動は Skills を参照してください。
サブ Agent の mcpServers 設定
mcpServers は、サブ Agent の MCP server を制限または追加するために使います。注文検索、チケット検索、内部ナレッジベース検索など、必要なサブ Agent だけに業務ツールを公開したい場合に適しています。
セッションですでに設定した MCP server を参照できます。
| シナリオ | 設定方法 |
|---|---|
| 複数のサブ Agent が同じ MCP server を共有する | セッションレベルの QoderAgentOptions.mcp_servers に server を設定し、サブ Agent の mcpServers で名前を参照する |
| あるサブ Agent だけが業務ツールを必要とする | server をそのサブ Agent の mcpServers に入れ、tools で呼び出し可能ツールを制限する |
| 特定の MCP ツールだけを呼び出したい | 同時に tools=["mcp__server__tool"] を設定し、server の全ツールを公開しない |
サブ Agent の呼び出し
サブ Agent にはよく使われる3つの呼び出し方法があります。自動呼び出し
モデルはタスクと各サブ Agent のdescription に基づいて、呼び出すかどうかを自動で判断します。description を明確にすると命中精度が上がります。
明示的な指名呼び出し
モデルに特定のサブ Agent を使わせたい場合は、prompt で名前を指定します。メインセッションロールとして実行する
QoderAgentOptions.agent は、メインセッションをあるサブ Agent の身分で直接実行させます。
agent は、agents のカスタムサブ Agent だけでなく、現在の CLI が検出した組み込み / ユーザー / プロジェクト / プラグインのサブ Agent も参照できます。
サブ Agent のコンテキストと結果
サブ Agent は独立したコンテキストで実行されます。自分のシステムプロンプトと委任 prompt は受け取りますが、親セッションの完全な履歴を直接継承しません。| サブ Agent が見えるもの | サブ Agent が見えないもの |
|---|---|
自分の prompt | 親セッションの完全な会話履歴 |
メインセッションが Agent ツールを通じて渡したタスク prompt | 親セッションの中間ツール結果 |
| 自分が利用可能なツール定義 | 渡されていない親セッションの非公開推論過程 |
| 設定でプリロードされた skills | 他の Agent の中間コンテキスト |
組み合わせ例
複数ロール協調
異なるロールを持つ複数のサブ Agent を登録し、メインセッションがタスクに応じて呼び出すか、いつ呼び出すかを判断します。起動後に最初のタスクを自動実行する
initialPrompt は、そのサブ Agent が agent によりメインセッションロールになった場合だけ有効です。
auditor がメインセッションから Agent ツールでサブ Agent として呼び出された場合、initialPrompt は無視されます。
よくある落とし穴
- 組み込みサブ Agent を直接使う場合、明示的に上書きしたいのでなければ、
agentsに同名のサブ Agent を再定義しないでください。 - サブ Agent の呼び出しは、メインセッションの
Agentツールに依存します。allowed_tools=["Agent"]は事前承認です。toolsでメインセッションの利用可能ツールを制限する場合は、そこにもAgentを含めてください。 - サブ Agent 名は現在の検出結果と大文字小文字まで一致する必要があります。たとえば
ExploreとPlanは先頭が大文字です。 descriptionはモデルにいつ呼び出すかを伝え、promptは呼び出された後にサブ Agent がどう動くかを伝えます。- サブ Agent はさらに自分のサブ Agent を生成できません。サブ Agent の
toolsにAgentを入れないでください。 initialPromptはagentで指定されたメインセッションロールにだけ有効で、サブ Agent として委任された場合は無視されます。AgentDefinitionのフィールド名は camelCase であり、snake_case ではありません。background、memory、criticalSystemReminder_EXPERIMENTALなどのフィールドは型としては存在しますが、SDK の登録経路では現状ランタイム挙動を変更しません。書き込む前に Agents Reference を確認してください。
続きを読む
- Agents Reference:
AgentDefinition、AgentInfo、agent、agentsの完全なリファレンス。 - Tools:組み込みツール、カスタムツール、ツール権限。
- 権限制御:
permissionMode、allowed_tools、can_use_tool。 - Skills:セッションレベルとサブ Agent レベルの skill 設定。