これまでの各回では、コンテキストを節約する方法を見てきました。タスクの境界ごとに履歴を消去し(第3回)、固定費を短く設計する(第4回)。それでも手に負えないタスクがあります。「このコードベースで決済ロジックがどう流れるか調べて」のような依頼です。真面目なエージェントは数十個のファイルを読みます。第1回で見たように、読んだ内容はすべてコンテキストに蓄積されます。調査が終わる頃には、その知識でコードを変更するためのコンテキストが残っていません。
この問題を構造的に解決するのが、今回のテーマであるサブエージェント(subagent)です。要点は一つ。コンテキストウィンドウは一つでなくても構いません。
別のコンテキストで作業し、結論だけ持ち帰る
サブエージェントは、メインエージェントが作成する別個のエージェントインスタンスです。このインスタンスが自分専用の新しい、クリーンなコンテキストウィンドウを受け取ることが核心です。
流れはこうです。メインエージェントは「決済ロジックの流れを調査して要約して」という一つの指示をサブエージェントに渡します。サブエージェントは自分のコンテキストで数十個のファイルを読み、検索し、呼び出し関係を追跡します。数万トークンが積み上がりますが、すべてサブエージェントのコンテキスト内の話です。作業が終わると、整理したレポート一つを返して消えます。メインに残るのは指示一つとレポート一つ、数百から数千トークンだけです。
組織ではおなじみの構造です。上司が市場調査を自分で行う代わりに調査員へ任せ、1枚のレポートを受け取る。調査員が目を通した100件の資料が上司の机に積まれないことがポイントです。上司の机、つまりメインコンテキストには、意思決定に必要な情報だけが残ります。
何を委譲すべきか
委譲が有効な作業には共通点があります。プロセスは重く、結論は軽いことです。
第一に、探索と調査です。「この関数を使う箇所をすべて」「このバグに関係するコードを把握して」といった作業は、読む量は多くても最終的な答えは一覧か要約です。サブエージェントの典型的な仕事です。Claude Codeが探索専用エージェントを用意しているのも同じ理由です。
第二に、並列に分割できる作業です。5つのモジュールをそれぞれ分析するなら、5つのサブエージェントが各自のコンテキストで同時に進められます。時間を短縮できるだけでなく、互いの中間成果物が一つのコンテキストに混ざって混乱を招くこともありません。
第三に、少し性質が異なりますが、新鮮な視点が必要な作業です。代表例はコードレビューです。コードを書いたばかりのメインエージェントのコンテキストには、実装時の仮定や試行錯誤が詰まっています。その状態で自分のコードをレビューすると、自分の仮定に縛られ、甘くなりがちです。文脈のないサブエージェントにコードだけ渡せば、見知らぬレビュアーの目で見てもらえます。ここでは分離がトークン節約ではなく、品質向上の仕組みとして働きます。
逆に、委譲すると損をする作業もあります。ファイルを1、2個読むような軽い作業は、委譲の往復コストのほうが大きくなります。これまでの会話に強く依存する作業にも向きません。理由は次に説明します。
分離の代償、サブエージェントは何も知らない
サブエージェントのクリーンなコンテキストは無料ではありません。クリーンであるとは、これまでの会話を何も知らないという意味でもあるからです。
メインセッションで1時間かけて積み上げた前提、このプロジェクトではレガシーAPIを維持すること、テストに触れてはいけないこと、ユーザーの好みの方法などを、サブエージェントはすべて知りません。指示に書かなければ、存在しない情報です。したがって委譲の品質は、指示の品質に収束します。必要な背景、制約、望む成果物の形式まで一つの指示に含めなければ、見当違いの前提で作業したレポートを受け取ることになります。
返却についても同じです。メインが受け取るのはサブエージェントの最終レポートだけなので、レポートに含まれない発見はサブエージェントの消滅とともに失われます。そのため、「判断に影響した根拠と確認したファイル一覧を含めて」のように、レポート形式を指定する習慣が役立ちます。第2回で見たcontext poisoningにも、ここで再び出会います。レポートが不正確だと、その誤りが圧縮された形でメインコンテキストに移植され、検証する原資料がないため、メインはそのまま信じてしまいます。重要な結論ほど、根拠と一緒に受け取るべき理由です。
まとめ
- サブエージェントは別のクリーンなコンテキストで作業し、結論だけを返します。プロセスの数万トークンをメインコンテキストに入れないことが核心です。
- プロセスは重く結論は軽い作業(探索・調査・並列分析)が委譲対象です。レビューのように新鮮な視点が必要な作業では、品質のためにも分離が有効です。
- 分離の代償は文脈の断絶です。サブエージェントは会話履歴を知らないため、指示に背景と制約をすべて含め、レポートには根拠を求める必要があります。
シリーズの最後の一片が残っています。/clearを実行すると会話が消え、サブエージェントはセッション終了時に消えます。しかしプロジェクトは続きます。セッション終了後も残すべき知識はどこに置くべきでしょうか。次回はコンテキストの外側にある保存先、つまりメモリと外部化を扱います。

![[AIコンテキスト #5] なぜサブエージェントを使うのか、AIエージェントのコンテキスト分離と委譲基準のカバー画像](/assets/images/posts/6f12e091-1d37-4258-b659-1070e39916f1/1.jpg)