ANTIGRAVITY LABEN
記事一覧/Agents & Manager
Agents & Manager/2026-06-27上級

dynamic sub-agents が枝分かれしすぎる前に — 深さ予算とファンアウト上限の設計

Antigravity 2.0 の dynamic sub-agents は実行中に自分でサブエージェントを生やせます。便利ですが、深さとファンアウトを制御しないとトークン予算を一晩で溶かします。3つのガードの実装を具体コードで示します。

Antigravity 2.08dynamic sub-agentsマルチエージェント39自律実行4コスト管理8

プレミアム記事

ある晩、4つのブログサイトの更新をまとめてスケジュール実行に乗せたところ、翌朝のクォータ画面が想定の3倍近く消費されていました。ジョブ自体は成功しているのに、消費だけが膨らんでいる。ログを追うと、親エージェントが立てた dynamic sub-agent が、さらに別のサブエージェントを生やし、その子がまた孫を生やしていました。誰も無限ループには入っていません。ただ「ちょっと込み入っているから、もう一段分けよう」という判断が、枝の各ノードで静かに繰り返されていただけです。

Antigravity 2.0 の dynamic sub-agents は、実行時に親エージェントが必要に応じて子エージェントを動的に立てられる仕組みです。あらかじめ並列数を決め打ちする静的な並列実行とは、運用上の性質がまったく違います。便利な反面、「いつ・どれだけ枝を増やすか」をエージェント自身の判断に委ねるため、放っておくと木が深く広く茂ります。私自身がオフピークの自動運用で踏んだこの落とし穴を起点に、深さ・幅・キャンセルの3点を制御する具体的な設計を、以下で順に共有します。

静的な並列と dynamic sub-agents は別物として扱う

これまでの「並列エージェント」は、こちらが Promise.all で5本のタスクを同時に投げるような、幅が固定された構造でした。最大同時実行数は人間が事前に決めます。木で言えば、深さ1・幅5の浅い茂みです。

dynamic sub-agents はここが根本的に違います。子エージェントが自分の作業の途中で「このリファクタは独立した3つのモジュールに分けられる」と判断すれば、その場で3つの孫エージェントを立てられます。孫もまた同じ判断をします。結果として木の深さも幅も実行時に決まり、事前には読めません。

この性質を理解せずに「並列だから速いはず」とだけ捉えると、消費とレイテンシの両方で読み違えます。深さ3・各ノードのファンアウト3なら、末端のノード数は単純計算で 3 の 3 乗、つまり27本です。各サブエージェントがそれぞれモデルを呼ぶので、トークン消費は本数に比例して膨らみます。私が一晩で3倍近く溶かしたのは、まさにこの指数的な広がりを見落としていたからでした。

だから最初に置くべき前提はひとつです。dynamic sub-agents を使うときは、木が勝手に茂る前提で、深さと幅に明示的な天井を設けます。

3つのガード:深さ予算・ファンアウト上限・キャンセル伝播

制御すべき軸は3つに整理できます。

第一に「深さ予算(depth budget)」です。親から数えて何段までサブエージェントを生やせるかの上限です。深さが浅ければ木は決して指数的に茂りません。

第二に「ファンアウト上限(fan-out cap)」です。木全体で同時に走るサブエージェントの本数の上限です。深さを許しても、同時本数を絞れば消費のピークは抑えられます。

第三に「キャンセル伝播(cancellation propagation)」です。ある枝が止まった・不要になったとき、その配下の子孫すべてに停止を伝える仕組みです。これがないと、親が諦めた後も孫が黙々とモデルを呼び続けます。

この3つは独立しているようで、運用上は1つのオーケストレーション層にまとめると扱いやすくなります。以下、それぞれの実装を Node.js(TypeScript)で示します。Antigravity SDK のサブエージェント起動を薄くラップする前提です。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
maxDepth(深さ予算)をコンテキストに埋め込み、サブエージェントの再帰的な増殖を構造的に止める実装
ファンアウト上限とキューイングで「同時に何枝まで」を一元管理する設計
AbortSignal と20分のデッドラインでキャンセルを子孫まで伝播させ、止まった枝のクォータ流出を止める構造
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Antigravity Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

Agents & Manager2026-06-17
どのエージェントがいくら使ったかを会計する — タスク別コスト帰属の設計
月末の請求は1つの数字でも、Gemini 3.5 Flash で複数エージェントを走らせていると、どのタスクが費用を食ったかが見えません。予算で止めるガードとは別に、使用量をタスク別・サイト別の原価へ帰属させる会計設計を、個人運用の実装と数値で共有します。
Agents & Manager2026-06-01
並行エージェントのトークンコストを予算で抑える — 暴走を止めるバジェットガードの設計
複数のエージェントを並行で走らせると、トークン費は気づかないうちに膨らみます。トークンを減らす最適化ではなく、予算で消費を遮断するガバナンス層を Antigravity の並列エージェントに組み込む設計と実装を、6サイト自律運営の実数値とともに共有します。
Agents & Manager2026-05-04
AIエージェントのオーケストレーション設計 — タスク分解・ハンドオフ・ループ制御の実践
AIエージェントを実際に動かすと直面する設計課題を整理します。タスク分解の粒度、サブエージェントへの引き渡し方、ループ終了条件の設計まで実践的に解説します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →