大きな画面での利用をおすすめします — アニメーションと操作がより快適になります。
入力

サブエージェント

サブエージェントは、親のエージェントループから呼べる別のループです。本例は Task をツールとして登録し、新しい messages[] でモデル呼び出し、確認、ツール実行、結果追加を繰り返します。子の文脈は委任プロンプトだけで始まり、探索記録を子に置いたまま、最後に 1 行だけ返します。これが文脈の分離です。

この教材の通常ループは追加専用で、履歴を要約・削除しません。4 回の検索結果が後続要求へ残ります。委任すれば親に増えるのは Task 呼び出しカードと結果カードだけで、同じ探索後の親文脈は約 90 token と約 2.1k token の差になります。実ランタイムは圧縮、切り詰め、キャッシュを使えるため、この保持量を永久の実請求額とは読めません。

分離は情報も遮断します。本例の子が受け取るのはプロンプトだけで、親の会話、過去の補足、合意済みの制約は継承しません。書き込まなかった条件は見えません。

エージェントループとツール呼び出しが基礎です。Task は search と同じディスパッチ表に入り、2 本のレーンは別々の messages[] を表します。

文脈を分離する仕組み

親は Task(prompt="…") を受け、harness が run_subagent(prompt) を呼び、戻り値を通常の tool_result として追加します。共通の呼び出しインターフェースからは、他のツールと同じです。

境界を作るのは sub = [{"role": "user", "content": prompt}]。新しい配列です。子もモデルとツールを交互に呼びますが、結果はすべて sub へ入ります。最後の return r.text が文字列だけを戻し、本例は sub を親の検査用に保存しません。

保持量。 1 委任につき親へ結果カード 1 枚(と Task 呼び出しカード)が増え、k 回のツール記録は増えません。戻り値の長さを制限するなら O(1) カード対 O(k) 記録ですが、1 カードが固定 token 数という意味ではありません。inline の 572-token 結果は後続要求にも残ります。委任はその入力を減らしても、子ループの計算と調整費用は必要です。請求はキャッシュなどにも依存します。

見えない条件。 親にある「2024 年版ではなく 2011 年の原作」という補足は自動では渡りません。子は受け取ったプロンプトには正しく答え、ユーザーの意図には間違えることがあります。

サブエージェントのステップ

初期設定は自己完結した調査です。「原作 Aurora Run の制作会社は何年設立か」を委任します。映画とアーカイブは教材用の例です。

  1. 初期化。 親はユーザーカード 1 枚、約 18 token。main = 18 tok。
  2. 委任。 固定出力は Task(prompt="Find the founding year of the studio that produced the original 2011 film Aurora Run.")。2011 年原作という条件を含み、main = 52 tok になります。
  3. 子を作る。 sub = [prompt] で約 26-token のレーンを開きます。親は待機し、文脈は変わりません。
  4. 検索 1。 search["Aurora Run"] は 2024 年リメイクを主項目とし、2011 年版への参照も返します。要求込み約 432 token が子だけに入ります。
  5. 検索 2。 2011 条件から search["Aurora Run (2011)"] を選びます。約 572 token で、監督 Mara Voss、制作 Northlight を得ます。
  6. 検索 3。 search["Northlight"] は約 392 token。Northlight Pictures と Northlight Films の 2 社が候補です。
  7. 検索 4。 search["Northlight Pictures"] は約 692 token で、1987 年設立と 2011 年版の制作を確認します。子は約 2.1k token、親はまだ 52。
  8. 子の結論。 原文 Northlight Pictures — founded in 1987. の 16 token だけを返します。
  9. 結果を戻す。 tool_result が親に入り、main = 68 tok。子は灰色の sub = discarded になり、約 2.1k token をこの活動文脈から外します。消費済みの計算費用が返る意味ではありません。
  10. 親の回答。 原文 The studio was Northlight Pictures, founded in 1987.。main = 90 tok で、親には 4 検索の本文がありません。

mode = inline では同じ検索を 1 つの messages[] へ追加します。探索累計は 432、1,004、1,396、2,088、終了時は main = 2,128 tok。同じ答えで、保持する親文脈は約 24 倍です。変えたのは追加先です。

Context-dependent では監督の出生年を尋ね、「2011 年の原作で、2024 年リメイクではない」と補足します。しかし固定の委任は Task(prompt="Find the birth year of the director of the film Aurora Run.") で補足を落とします。子は主項目のリメイクを調べ、1989 年生まれと返します。受け取った曖昧な問いに沿ってもユーザーの意図には合いません。

inline は補足を保持するため、両作品が現れたときに原作を選び、Mara Voss、1974 年生まれと返します。同じタスクとアーカイブを使い、モデル判断は脚本です。制約が境界のどちら側にあるかを示す比較で、モデル成功率の測定ではありません。

境界条件

  • 1 回検索だけの委任。 Task 要求、結果、追加ループの費用があり、探索が結論より大きくなければ利点は小さくなります。
  • 空または誤った結果。 本例は 1 行だけを受け、子の履歴を参照できません。条件を明確に再委任するか、親で根拠を取り直します。実製品は独立したログを保存できます。
  • 必要な条件を渡し忘れる。 エラーや警告は出ず、子は与えられた問いに整った答えを返します。委任者は必要条件を含めます。他のランタイムには明示的な文脈転送機能もあります。
  • 子が質問を要する。 このインターフェースはユーザーへの直接質問を持たず、結果に曖昧さを報告して親へ戻せます。全製品に共通する制限ではありません。

よくある間違い

  • 親ループの特殊分岐と考える。 TOOLS["Task"] = run_subagent は search と同じ表の項目で、同じく実行して結果を追加します。
  • 親の会話を見たはずと思う。 本例はプロンプトだけです。制約、訂正、好みを明示し、答えがずれたら委任文を確認します。
  • 探索全文を戻す。 親を小さく保つ利点が消えます。本例は結論だけですが、実用では必要な引用や別の監査履歴を残し、検証不能な断言だけにしない設計もできます。
  • 合流時の数だけを見る。 保持履歴は後続要求にも入ります。同時に子の費用を無視したり、入力数を請求と同一視したりしないでください。
  • 親が子の誤りを自動で見抜くと思う。 結論だけでは検証根拠が足りません。ReActは観測から結論までの根拠の鎖を扱います。

モデルの簡略化

配列作成、分配、1 行の返却、カード token の集計は決定的に動きます。委任、検索選択、結論は固定で、ライブモデルの記録ではありません。ツール呼び出しと ReActは録画したループを示し、2011 年映画の例は ReAct の記録に合わせています。

token 集計はカードだけで、システム指示、ツールスキーマ、推論 token などを省き、完全な費用表ではありません。実サブエージェントは指定文脈やツールの継承、モデル・ターン予算の選択、並列実行、監査履歴、構造化出力を使えます。本例の単一プロンプトと 1 行の返却は、文脈の境界を見せるための選択です。