<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>コスト最適化 on KnightLiブログ</title>
        <link>https://knightli.com/ja/tags/%E3%82%B3%E3%82%B9%E3%83%88%E6%9C%80%E9%81%A9%E5%8C%96/</link>
        <description>Recent content in コスト最適化 on KnightLiブログ</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Sun, 31 May 2026 14:17:42 +0800</lastBuildDate><atom:link href="https://knightli.com/ja/tags/%E3%82%B3%E3%82%B9%E3%83%88%E6%9C%80%E9%81%A9%E5%8C%96/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>subagent はどれくらい token を余計に使うのか？multi-agent のコストと使い分け</title>
        <link>https://knightli.com/ja/2026/05/31/subagent-multi-agent-token-cost/</link>
        <pubDate>Sun, 31 May 2026 14:17:42 +0800</pubDate>
        
        <guid>https://knightli.com/ja/2026/05/31/subagent-multi-agent-token-cost/</guid>
        <description>&lt;p&gt;subagent や multi-agent ワークフローを使うと、通常は token 使用量が増えます。問題は「増えるかどうか」ではなく、どれくらい増えるのか、そして並列化による速度や安定性がその追加コストに見合うかどうかです。&lt;/p&gt;
&lt;p&gt;小さなタスクなら、メイン agent がそのまま処理するほうがたいてい安く済みます。subagent が価値を発揮しやすいのは、タスクを明確に分割できる場合や、独立したレビューが必要な場合です。&lt;/p&gt;
&lt;h2 id=&#34;subagent-は安い並列スレッドではない&#34;&gt;subagent は安い並列スレッドではない
&lt;/h2&gt;&lt;p&gt;subagent を初めて見ると、「並列スレッド」のように考えがちです。メイン agent が一部を処理し、subagent が別の一部を処理すれば速くなるので、効率も良いはずだ、という見方です。&lt;/p&gt;
&lt;p&gt;しかし実際には違います。subagent も独立したモデル呼び出しです。タスク説明を読み、コンテキストを理解し、ファイルを読み、問題を分析し、結果を出力します。つまり、メイン agent の無料コピーではなく、追加の推論経路です。&lt;/p&gt;
&lt;p&gt;そのため、subagent を使うかどうかの判断軸は「並列化できるか」ではありません。「並列化による時間短縮や品質向上が、追加 token コストに見合うか」です。&lt;/p&gt;
&lt;h2 id=&#34;なぜ-token-が増えるのか&#34;&gt;なぜ token が増えるのか
&lt;/h2&gt;&lt;p&gt;subagent の呼び出しでは、通常次の部分で token が追加で使われます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;メイン agent が subagent に渡すタスク説明；&lt;/li&gt;
&lt;li&gt;subagent に渡されるコンテキスト；&lt;/li&gt;
&lt;li&gt;subagent 自身が読むファイルや分析内容；&lt;/li&gt;
&lt;li&gt;subagent の推論と出力；&lt;/li&gt;
&lt;li&gt;メイン agent による結果の確認、統合、検証。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;複数の agent が同じ大きなファイルを読むと、重複コストはさらに目立ちます。コードベース分析、長文ドキュメント翻訳、バッチでのコンテンツ整理では特にそうです。分割の仕方が悪いと、同じコンテキストを何度も理解するために token が使われます。&lt;/p&gt;
&lt;h2 id=&#34;コンテキストの重複読み込みが最大の-token-浪費&#34;&gt;コンテキストの重複読み込みが最大の token 浪費
&lt;/h2&gt;&lt;p&gt;subagent の本当の無駄は、「agent を 1 つ増やしたこと」そのものではなく、複数の agent が同じ資料を何度も読むことです。&lt;/p&gt;
&lt;p&gt;たとえば 6 本の記事を処理するタスクがあるとします。4 つの agent がそれぞれ最初にサイト構造全体、スキル文書全体、記事一覧全体を読んでから小さな部分だけを処理するなら、その並列化は高くつきます。より良い方法は、メイン agent が先に境界を決め、各 subagent には担当する記事ディレクトリだけを読ませることです。&lt;/p&gt;
&lt;p&gt;token を節約しやすい分割は、だいたい次の形です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;各 agent が 1 つの明確なディレクトリだけを担当する；&lt;/li&gt;
&lt;li&gt;subagent に渡すコンテキストをできるだけ短くする；&lt;/li&gt;
&lt;li&gt;複数の agent に同じ探索を繰り返させない；&lt;/li&gt;
&lt;li&gt;各 agent に全量レビューをさせるのではなく、メイン agent が最後に一括で確認する；&lt;/li&gt;
&lt;li&gt;スクリプトで一括チェックできる部分は、複数 agent に繰り返し確認させない。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;つまり、subagent のコスト管理で重要なのは数ではなく境界です。&lt;/p&gt;
&lt;h2 id=&#34;どれくらい増えるのか&#34;&gt;どれくらい増えるのか
&lt;/h2&gt;&lt;p&gt;以下はおおよその目安です。実際の消費量は、コンテキスト長、ファイルサイズ、タスクの複雑さ、agent 数によって変わります。&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;シナリオ&lt;/th&gt;
          &lt;th style=&#34;text-align: right&#34;&gt;token 増加&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1 つの subagent が小さなタスクを処理する&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 &lt;code&gt;1.2x - 2x&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;2-4 個の agent が分割しやすいタスクを並列処理する&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;約 &lt;code&gt;2x - 5x&lt;/code&gt;&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;複数 agent が大量のファイルを読み、長い分析をする&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;&lt;code&gt;5x+&lt;/code&gt; になる可能性&lt;/td&gt;
      &lt;/tr&gt;
      &lt;tr&gt;
          &lt;td&gt;メイン agent と subagent が同じ大きなファイルを繰り返し読む&lt;/td&gt;
          &lt;td style=&#34;text-align: right&#34;&gt;最も分かりやすい無駄&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;これは厳密な課金式ではなく、経験的な目安です。実際には、各 agent が全文を読む必要があるか、長い推論が必要か、追加コンテキストを何度も待つかによって変わります。&lt;/p&gt;
&lt;h2 id=&#34;token-を節約しやすい-subagent-タスクの書き方&#34;&gt;token を節約しやすい subagent タスクの書き方
&lt;/h2&gt;&lt;p&gt;タスク説明が広すぎると、subagent は自分で探索し始めやすくなり、token 使用量も増えます。より安く済ませるには、境界を明確に書きます。&lt;/p&gt;
&lt;p&gt;良い subagent タスクには、次の情報を含めるべきです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;処理してよいファイルやディレクトリ；&lt;/li&gt;
&lt;li&gt;読み取り専用のファイルと、書き込み可能なファイル；&lt;/li&gt;
&lt;li&gt;既存ファイルを上書きしてよいか；&lt;/li&gt;
&lt;li&gt;&lt;code&gt;date&lt;/code&gt;、&lt;code&gt;slug&lt;/code&gt;、&lt;code&gt;aliases&lt;/code&gt; など保持すべきフィールド；&lt;/li&gt;
&lt;li&gt;最終報告に含める内容；&lt;/li&gt;
&lt;li&gt;フルビルドを実行しない、無関係なファイルを編集しない、など不要な作業。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;翻訳タスクなら、「記事を多言語に翻訳して」とだけ書くのはよくありません。より省 token な指示は、「&lt;code&gt;content/post/2026/05/240&lt;/code&gt; だけを処理し、&lt;code&gt;index.zh-cn.md&lt;/code&gt; を読み、欠けている &lt;code&gt;index.en.md&lt;/code&gt;、&lt;code&gt;index.zh-tw.md&lt;/code&gt;、&lt;code&gt;index.ja.md&lt;/code&gt;、&lt;code&gt;index.es.md&lt;/code&gt; だけを作成し、既存ファイルはスキップし、&lt;code&gt;date&lt;/code&gt; と &lt;code&gt;slug&lt;/code&gt; を保持する」です。&lt;/p&gt;
&lt;p&gt;この指示は少し長くなりますが、subagent の推測や重複探索を減らせるため、全体では安くなることが多いです。&lt;/p&gt;
&lt;h2 id=&#34;言語や手順ではなくファイルディレクトリで分けるほうが安い&#34;&gt;言語や手順ではなく、ファイル/ディレクトリで分けるほうが安い
&lt;/h2&gt;&lt;p&gt;記事の一括翻訳では、「記事ディレクトリ」単位で分けるほうが、「言語」単位で分けるよりたいてい良いです。&lt;/p&gt;
&lt;p&gt;たとえば 6 本の記事それぞれに英語、繁体字中国語、日本語、スペイン語版を作る場合、1 つの agent に 1 本の記事ディレクトリ内の全言語を任せるほうが、1 つの agent に全英語、別の agent に全日本語を任せるよりおすすめです。&lt;/p&gt;
&lt;p&gt;理由は単純です。1 本の記事の front matter、コードブロック、リンク、表、意味的な文脈は一度読めば済みます。言語単位で分けると、複数の agent が同じ原文を繰り返し読むため、token が増えます。&lt;/p&gt;
&lt;p&gt;同じ考え方はコード作業にも当てはまります。「まず分析、次に実装、最後にテスト」のような手順単位ではなく、モジュール、ディレクトリ、コンポーネント単位で分けるほうがよいです。手順単位の分割では、各 agent が同じコンテキストを読み直しがちです。&lt;/p&gt;
&lt;h2 id=&#34;どんな場合に使う価値があるか&#34;&gt;どんな場合に使う価値があるか
&lt;/h2&gt;&lt;p&gt;subagent の価値は主に 2 つです。並列化と独立した視点です。&lt;/p&gt;
&lt;p&gt;向いている場面は次のようなものです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;複数記事の一括翻訳；&lt;/li&gt;
&lt;li&gt;独立して編集できる複数ディレクトリ；&lt;/li&gt;
&lt;li&gt;フロントエンド、バックエンド、テストを明確に分担できる作業；&lt;/li&gt;
&lt;li&gt;1 つの agent が実装し、別の agent がリスクレビューをする場合；&lt;/li&gt;
&lt;li&gt;高リスクな変更で第二の視点が必要な場合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このようなタスクでは token は増えますが、全体の所要時間が大きく短くなることがあります。また、各 agent が自分の担当範囲に集中できます。&lt;/p&gt;
&lt;h2 id=&#34;レビュー用-agent-を-1-つ使う価値がある場合&#34;&gt;レビュー用 agent を 1 つ使う価値がある場合
&lt;/h2&gt;&lt;p&gt;レビュー用 agent は常に必要なわけではありません。リスクが高い、影響範囲が広い、メイン agent が細部を見落としやすいタスクに向いています。&lt;/p&gt;
&lt;p&gt;レビュー agent を検討する価値があるのは、たとえば次の場合です。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ログイン、決済、権限、データ削除に関わる変更；&lt;/li&gt;
&lt;li&gt;多言語コンテンツがカテゴリ、URL、内部リンクに影響する場合；&lt;/li&gt;
&lt;li&gt;大きなリファクタリング後に独立した回帰リスク確認が必要な場合；&lt;/li&gt;
&lt;li&gt;ユーザーが code review やリスクレビューを明示的に求めている場合；&lt;/li&gt;
&lt;li&gt;メイン agent が実装済みで、境界条件を第二の視点で確認したい場合。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;逆に、単一ファイルの小さな修正、タイトル調整、簡単な front matter 修正、コマンド 1 つの実行では、レビュー agent を追加する価値はあまりありません。メイン agent の自己確認で十分です。&lt;/p&gt;
&lt;h2 id=&#34;使う価値が低い場合&#34;&gt;使う価値が低い場合
&lt;/h2&gt;&lt;p&gt;subagent が向いていない場面もよくあります。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;単一ファイルの小さな修正；&lt;/li&gt;
&lt;li&gt;簡単な Q&amp;amp;A；&lt;/li&gt;
&lt;li&gt;コマンドを 1 つ実行するだけ；&lt;/li&gt;
&lt;li&gt;変更範囲がとても小さい；&lt;/li&gt;
&lt;li&gt;タスクを明確に分割できない；&lt;/li&gt;
&lt;li&gt;subagent がメイン agent からの追加コンテキストを何度も待つ必要がある。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;このようなタスクで subagent を使うと、たいていはオーバーヘッドが増えるだけです。メイン agent が直接処理するほうが速く、token も節約できます。&lt;/p&gt;
&lt;h2 id=&#34;私のデフォルト戦略token-節約を優先しリスクがあるときだけレビューを追加する&#34;&gt;私のデフォルト戦略：token 節約を優先し、リスクがあるときだけレビューを追加する
&lt;/h2&gt;&lt;p&gt;token をできるだけ節約したいなら、次のような保守的な戦略が使いやすいです。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;小さなタスク：subagent は使わない。&lt;/li&gt;
&lt;li&gt;中程度のタスク：subagent は使わない。&lt;/li&gt;
&lt;li&gt;大量タスク：ユーザーが明示的に並列化を求めない限り、デフォルトでは subagent を使わない。&lt;/li&gt;
&lt;li&gt;高リスクなタスク：安定性のために、レビュー用 agent を 1 つ追加することを検討する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;この戦略は並列速度の一部を諦めますが、コンテキストの重複読み込みと重複推論による token 消費を減らせます。&lt;/p&gt;
&lt;p&gt;タスクが大きくても高リスクでなければ、まずはスクリプト、バッチチェック、ローカルの構造化処理を優先します。複数 agent を入れるのは、分割が非常に明確な場合や、ユーザーが並列化による高速化を明示的に望む場合に向いています。&lt;/p&gt;
&lt;h2 id=&#34;よりバランスの取れた戦略&#34;&gt;よりバランスの取れた戦略
&lt;/h2&gt;&lt;p&gt;コストを抑えつつ並列化も完全には捨てたくない場合は、次の折衷案が使えます。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;デフォルトではメイン agent が直接処理する；&lt;/li&gt;
&lt;li&gt;ファイルまたはディレクトリ単位で明確に分割できる場合だけ subagent を検討する；&lt;/li&gt;
&lt;li&gt;subagent は自分の担当ファイルだけを読む；&lt;/li&gt;
&lt;li&gt;複数 agent に同じ大きなファイルを同時に読ませない；&lt;/li&gt;
&lt;li&gt;メイン agent が最後に key fields、テスト結果、Git diff をまとめて確認する；&lt;/li&gt;
&lt;li&gt;高リスクなタスクだけ独立したレビュー agent を追加する。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;これにより、「並列化のための並列化」を避けられます。subagent は明確な速度または品質の目的に使うべきで、デフォルト動作にするべきではありません。&lt;/p&gt;
&lt;h2 id=&#34;まとめ&#34;&gt;まとめ
&lt;/h2&gt;&lt;p&gt;subagent と multi-agent ワークフローは必ず token 使用量を増やします。1 つの subagent なら少し増えるだけのこともありますが、複数 agent を並列で動かすとコストは何倍にもなり得ます。&lt;/p&gt;
&lt;p&gt;使う価値があるかどうかはタスク次第です。作業を明確に分割できる場合や、リスクが高く独立レビューが必要な場合は、追加 token に価値があります。一方、単一ファイルの小さな修正、簡単な Q&amp;amp;A、通常のチェックなら、メイン agent が直接処理するほうが安く済みます。&lt;/p&gt;
&lt;p&gt;一言で言えば、&lt;strong&gt;小さなタスクでは token を節約し、大きなタスクでは分割境界を見極め、高リスクなときだけ安定性のために追加 agent を使う&lt;/strong&gt;、ということです。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
