サブエージェント
Sub-agent
概要(サマリー)
サブエージェント(Sub-agent)とは、メインで動いているAIエージェントから作業の一部を任され、別の文脈で処理して結果だけを返す補助役のエージェントである。
会社にたとえるなら、メインのエージェントが「プロジェクトリーダー」で、サブエージェントは「調べものを頼まれた担当者」である。リーダーが何百ページもの資料を自分で全部読むと、頭がいっぱいになって本来の判断がおろそかになる。そこで担当者に「この資料から必要な点だけまとめてきて」と頼み、要点だけを受け取る。
たとえばClaude Codeでは、コードベースの探索を専用のサブエージェントに任せ、メインの会話には調査結果の要約だけを戻す仕組みが用意されている。ユーザーが自分でサブエージェントを定義して、「レビュー専用」「テスト専用」のように役割を持たせることもできる。
詳細解説
なぜサブエージェントが必要なのか
AIエージェントにすべてを1人でやらせると、次の2つの問題が起きやすい。
- 会話の記憶があふれる: AIが一度に扱える量には上限がある(コンテキストウィンドウ)。大量のファイルを読んだ結果や失敗したコマンドの出力がすべて残ると、最初に受けた指示を見失いやすくなり、料金も増える。
- 道具が多すぎて迷う: ファイル編集、コマンド実行、Web検索など、持たせる道具が増えるほど「今どれを使うべきか」の判断を誤りやすくなる。
サブエージェントに作業を切り出すと、途中の試行錯誤はサブエージェント側の文脈に閉じ込められる。メインのエージェントには「調べた結果、問題は○○ファイルの△△関数にある」という要約だけが届くので、会話がすっきりした状態で作業を続けられる。
親エージェントとサブエージェントの流れ
典型的な動き方は次のとおりである。
[ユーザー]
│ 「ログイン機能のバグを直して」
▼
[メインのエージェント]
│ ① 調査が必要だと判断
├──► [サブエージェント(調査役)]
│ │ 関連ファイルを検索・閲覧(途中経過はここに閉じる)
│ ◄──────┘ ② 要点だけを報告して終了
│
│ ③ 報告をもとに修正を実装
▼
[ユーザーに完了報告]
サブエージェントは任された作業が終わると結果を返して終了する。メインのエージェントは報告を受け取ったあと、次の判断に進む。
サブエージェントの定義例
Claude Codeでは、サブエージェントを「設定付きのMarkdownファイル」として定義できる。以下はレビュー専用のサブエージェントの例である。
---
name: code-reviewer
description: 変更されたコードの品質とセキュリティをレビューする。コード変更の直後に使う。
tools: Read, Grep, Glob
---
あなたはコードレビューの担当者です。
バグの可能性、セキュリティ上の問題、読みにくい箇所を探し、
問題点と修正案を短く報告してください。
tools に読み取り系の道具だけを並べているので、このサブエージェントはファイルを読むことはできても書き換えることはできない。役割に合わせて道具と権限を絞れるのも、サブエージェントの利点である。
サブエージェントのメリットと注意点
メリット
- 会話をきれいに保てる: 途中の試行錯誤がメインの文脈を汚さない
- 役割に集中させられる: 「レビューだけ」「テストだけ」のように指示を特化できる
- 並行して進められる: 依存関係のない調査を複数のサブエージェントに同時に任せられる
- 権限を絞れる: 読み取り専用など、必要最小限の道具だけを渡せる
注意点
- 料金は増えることがある: サブエージェントもそれぞれAIを呼び出すため、同時に何体も動かすと利用料やレート制限の消費が増える
- 指示が足りないと的外れになる: サブエージェントは親の会話をすべて知っているわけではない。目的と範囲を具体的に伝える必要がある
AIコーディングとの関係
AIに大きめの作業を頼むとき、サブエージェントを意識すると結果が安定しやすい。
たとえば「リポジトリ全体から古いAPIを使っている箇所を探して直して」と頼む場合、メインのエージェントが数百ファイルを自分で読むと文脈がすぐにあふれる。探索をサブエージェントに任せ、該当箇所の一覧だけを受け取ってから修正に入るほうが、指示の見失いが起きにくい。
自分でサブエージェントを定義するときは、「何をする担当か」「どの道具を使ってよいか」「何を報告してほしいか」の3点を短く書くとよい。特にファイルを書き換える担当には、作業範囲を限定する指示を入れておくと安全である。
よくある勘違い
マルチエージェントとサブエージェントは同じもの?
重なる部分はあるが同じではない。マルチエージェントは、複数のAIエージェントが協力する仕組み全般を指す広い言葉である。サブエージェントは、その中でも「親が作業を切り出して子に任せ、結果を受け取る」という主従関係がはっきりした形を指すことが多い。
サブエージェントは親の会話をすべて覚えている?
いいえ。多くの実装では、サブエージェントは親から渡された指示と最小限の情報だけで動き始める。余計な履歴を持たないから身軽に動けるのであり、その分、親側が「何をしてほしいか」をはっきり伝える必要がある。
サブエージェントを増やすほど速く、安くなる?
そうとは限らない。並行して進められる作業なら速くなるが、サブエージェントごとにAIの呼び出しが発生するので、合計の料金はむしろ増えることがある。同じファイルを複数のサブエージェントが同時に書き換えると衝突も起きるため、誰に何を任せるかの交通整理(エージェントオーケストレーション)が必要になる。
まとめ
- サブエージェントは、メインのAIエージェントから作業の一部を任される補助役のエージェントである
- 途中の試行錯誤を別の文脈に閉じ込め、要約だけを返すことで、メインの会話をすっきり保てる
- 役割と道具を絞って定義でき、レビューや調査などの専門作業に向いている
情報ソース
より詳しくAIに聞いてみよう
- Claude Codeでカスタムのサブエージェントを作る手順と、設定ファイルの書き方を教えてください。
- サブエージェントに作業を任せるとき、親エージェントが渡すべき指示の書き方のコツを教えてください。
- サブエージェントを並行して動かす場合に、料金や衝突のリスクを抑える方法を教えてください。
- サブエージェントとマルチエージェントの違いを、具体的な開発作業の例で説明してください。
- 読み取り専用のサブエージェントと、ファイル編集ができるサブエージェントを使い分ける基準を教えてください。