目次
Claude Codeで複雑なタスクを実行すると、コンテキストが肥大化して精度が落ちる問題がありました。サブエージェント機能で解決できたので、備忘録として残します。
コンテキスト肥大化の課題
Claude Codeで大きなタスクを処理すると、会話履歴が膨らみ、モデルの注意が分散します。結果として、指示の見落としや不正確な出力が発生しやすくなります。
サブエージェントは、この問題を タスクの分離 で解決します[1]。メインの会話から独立した別プロセスで動作し、専門的な作業を完了後に結果だけを返します。
組み込みサブエージェント
Claude Codeには、用途別に3種類のサブエージェントが用意されています[2]。それぞれ得意な領域が異なるため、タスクに応じて使い分けます。
| 名前 | 用途 | モデル |
|---|---|---|
| General-purpose | 複数ステップのタスク全般 | Sonnet |
| Plan | 実装計画の作成(読み取り専用) | Sonnet |
| Explore | コードベースの検索・調査(読み取り専用) | Haiku |
タスクの内容に応じてClaude Codeが自動で選択しますが、明示的に指定することもできます。
サブエージェントを自作する
独自のサブエージェントは、以下の手順で作成します[3]。
- Claude Codeのチャットで
/agentsと入力してEnter - エディタが開くので、Markdown + YAML形式で定義を記述
- ファイルを保存して閉じる
以下はコードレビュー用サブエージェントの例です。
code-reviewer.md
---
name: code-reviewer
description: コード品質とセキュリティをレビューする
tools: Read, Grep, Glob
model: sonnet
---
あなたはコードレビュアーです。
以下の観点でレビューしてください。
- コードの可読性
- エラーハンドリング
- セキュリティリスク
作成したファイルは、プロジェクト用なら.claude/agents/に、全プロジェクト共通なら~/.claude/agents/に保存します[4]。
YAMLフロントマターで設定できる主要なフィールドは以下の通りです。
| フィールド | 必須 | 説明 |
|---|---|---|
name |
はい | 小文字とハイフンで構成するID |
description |
はい | エージェントの目的 |
tools |
いいえ | 使用可能なツール(カンマ区切り) |
model |
いいえ | sonnet / opus / haiku / inherit |
使用上の留意点
サブエージェントを使う際は、以下の点に注意してください。
- コンテキストの明示的な受け渡し:メインの会話と独立しているため、必要な情報はプロンプトで明示的に渡します
- 結果の要約:結果はメインに要約して返されるため、詳細な中間結果が必要な場合は別途ファイル出力を指示します
