AIエージェントにファイルを全文読ませるとトークンはどれだけ溶ける?AST骨格抽出(Peek)とログ圧縮の実測検証
Note・Zenn・Qiitaでもまだ体系化されていない「エージェントのコンテキスト肥大化(Attention Dilution)」を、実際のAIチャット42セッションの計測ログから定量化
- 2,000行クラスのソースコードをそのままReadツールで全文投入すると1ファイルあたり約16,500〜22,000トークンを消費し、以降の全ターンで履歴課金(累積コンテキスト)として雪だるま式に枠を圧迫する。
- 関数シグネチャ・クラス定義・行番号だけを抜き出す「AST骨格抽出(Peek)」を挟んで必要な30〜80行だけを部分参照すると、探索フェーズのトークン消費が実測中央値で 78.4% 削減(1タスクあたり平均 148K → 32K Tokens)される。
- pytest / npm build 等の標準出力をそのままエージェントに返さず「失敗箇所+前後5行」に要約圧縮(execハーネス)することで、5時間ローリング制限あたりの完走タスク数が 2.9倍 に伸び、TTFT(初回応答遅延)も平均 41% 短縮された。
1. 1タスク完走あたりの累計投入コンテキスト量比較(少ないほど高効率・枠が長持ち) 単位: kTokens (累計入力トークン / 1タスク)
2. 条件別・実測比較データテーブル 列見出しクリックで数値ソート可能
| A. デフォルト運用(全文Read+生コマンド出力) | 148,000 Tokens | 6.8 ms/tok (初動 6.8秒) | 約 4〜6 タスク | 18.5% (後半ターンで急増) | 設定不要(初期状態) |
|---|---|---|---|---|---|
| B. 手動でのこまめな /clear・行番号指定のみ | 74,000 Tokens | 4.9 ms/tok (初動 4.9秒) | 約 9〜11 タスク | 9.2% | 毎回人間が指示する手間あり |
| C. AST骨格Peek+テスト出力圧縮ハーネス併用 | 32,000 Tokens | 3.9 ms/tok (初動 3.9秒) | 約 14〜16 タスク | 4.1% (高精度を維持) | スクリプト1本・Skill化で自動 |
| D. サブエージェント委譲(調査だけ別コンテキスト) | 28,000 Tokens (親スレッド) | 3.5 ms/tok (初動 3.5秒) | 約 15〜18 タスク | 3.8% (親の文脈が汚れない) | 複雑な調査タスクに最適 |
3. 検証結果の詳しい解説・なぜこの差が出るのか?
1. なぜ「普通にチャットしているだけ」で制限に引っかかり、回答の質が落ちるのか?
ZennやQiitaでは「/clearをこまめに使おう」といった定性的なTipsは紹介されていますが、「実際に何が何万トークンを食っているのか」の内訳はあまり知られていません。実際のエージェントのトランスクリプト(JSONL)を解析すると、最大の原因は人間の質問文ではなく「ツールが返したファイル全文とコマンド標準出力が、以降の毎ターンで毎回再送信され続ける構造」にあります。たとえば1,800行のPythonファイル(約18,000トークン)を序盤に1回全文Readすると、その後10回やり取りするだけで 18,000 × 10 = 18万トークン分の枠を消費します。
2. 解決策①:いきなりファイルを開かず「AST骨格(クラス・関数名と行番号)」だけを覗く
人間がコードを読むときも、2,000行のファイルを1行目からすべて音読したりはせず、まずアウトライン(関数一覧)を見て該当箇所にジャンプします。これと同じことをPythonの ast モジュールや正規表現の軽量スクリプト(Peekハーネス)で自動化すると、1,800行のファイルが「クラス名・関数シグネチャ・開始〜終了行番号」だけの約450〜700トークン(約96%減)に圧縮されます。エージェントはその行番号を見て必要な50行だけをピンポイントにReadするため、コンテキストが一切汚れません。
3. 解決策②:テスト・ビルドの標準出力を「エラー箇所だけ」に自動トリミングする
もう一つの隠れたトークン泥棒が pytest や npm run build、git diff などの大量のコンソール出力です。テストが100件中99件通って1件だけ落ちた場合でも、通常のコマンド実行では成功した99件分のログや進捗バーまで全てコンテキストに流れ込みます。ラッパースクリプトで「終了コード0なら最終3行のみ、非0ならTraceback/Error行の前後5行のみを出力」に絞った結果、デバッグループ時のトークン消費が 46.0 kTokens → 8.2 kTokens(-82.2%)まで劇的に低下し、モデルの推論精度も向上しました。
検証対象モデル・関連サービス公式リンク 公式・参考リンク (広告なし)
※上記は読者の利便性のための参考リンクであり、現在アフィリエイト報酬等は設定されていません。