powered by TechFeed
表示モード
Deep Dive

AIコーディングエージェントのトークン消費を70%削減する2つのツール — グラフDBによる事前計算とシェル出力フィルタリング

8月31日、Hexmosが「How I Reduced AI Coding Agent Token Waste by 70%」と題した記事を公開した。この記事では、AIコーディングエージェントが消費する無駄なトークンを70%削減するための2つのツールの活用法について詳しく紹介されている。

8月31日、Hexmosが「How I Reduced AI Coding Agent Token Waste by 70%」と題した記事を公開した。この記事では、AIコーディングエージェントが消費する無駄なトークンを70%削減するための2つのツールの活用法について詳しく紹介されている。


なぜAIエージェントはトークンを無駄に使うのか

AIコーディングエージェントに「GetUser()の呼び出しチェーンをたどって」と指示したとする。エージェントはgrepripgrepでファイルを横断検索し、ヒットしたファイルを丸ごと読み、次のシンボルを検索し、また丸ごと読む——を繰り返す。

この探索プロセスで消費されるトークンの内訳がこうだ:

Searches        2,000 tokens
File reads     15,000 tokens
Search results  5,000 tokens
Reasoning       3,000 tokens
----------------------------
Total           25,000 tokens

LLMが最終的に必要としていた情報(「AがBを呼ぶ」という関係性)は小さい。しかしエージェントはそこに辿り着くまでの探索過程をすべてコンテキストに積み上げる。コードベースが大きくなるほど、この無駄は指数的に膨らむ。

このトークンコスト問題は、Claude CodeやCursorといった主要AIコーディングエージェントが広く使われるようになった2024年以降、開発者コミュニティで活発に議論されている課題だ。API課金ベースで利用している場合は直接的なコスト増につながり、コンテキストウィンドウを圧迫することでエージェントの精度低下を招くという二重の問題がある。本記事で紹介する2つのツールは、この問題にアーキテクチャの工夫で正面から対処しようとするアプローチだ。


核心ツール①:codebase-memory-mcp でコード探索コストを97%削減

記事の最も面白いポイントはここだ。

codebase-memory-mcpは、AIがランタイムに毎回コードを読み直すのではなく、事前に構造情報をグラフDBに格納しておくツールだ。

ツール名に含まれる「MCP」とは、Anthropicが策定した**Model Context Protocol**(モデルコンテキストプロトコル)のことで、AIエージェントが外部ツールやデータソースと標準化された方法でやり取りするためのオープンプロトコルだ。Claude CodeをはじめとするMCP対応エージェントは、MCPサーバーが公開するツールを呼び出すことができる。codebase-memory-mcpはこの仕組みを使い、グラフDBへのクエリをエージェントから透過的に呼び出せるようにしている。

仕組みはこうなっている:

  1. Tree-sitter がコードを構文解析し、定義・呼び出し・インポートを抽出する
  2. LSP(Language Server Protocol) がTree-sitterだけでは解決できない意味的な参照先を補完する(例:user.profile.display_name()のどのdisplay_name()かを特定する)
  3. 抽出した関係性をグラフDBにローカル保存し、MCPサーバー経由でエージェントに公開する

格納される情報は次のような形だ:

A CALLS B
B DEFINES C
D IMPORTS E
route X → handler Y

基本思想は明快だ:

AIに同じ決定論的な情報を何度も再発見させるな。一度計算して構造的に保存し、AIにはその結果をクエリさせろ。

トークン削減効果の実測値:

アプローチ トークン数
テキスト検索+ファイル全文読み込み 〜9,000
グラフ検索+関数スニペットのみ 〜2,500
削減率 〜70%

コード探索ステップ単体では、テキスト検索が約1,500トークンを消費するのに対し、グラフクエリは約50トークンで済む(97%削減)。ただし関数本体のコードは依然として読む必要があるため、タスク全体では70%削減となる。

セットアップは1コマンド:

curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash

このスクリプトはcodebase-memory-mcpバイナリのダウンロード・配置と、Claude CodeへのMCPサーバー登録(設定ファイルへの追記)を自動で行う。手動セットアップが必要な場合はリポジトリのREADMEを参照のこと。

Claude Codeを再起動後、/mcpを実行してcodebase-memory-mcpが表示されれば完了。あとはClaude Codeに「Index this project」と指示するだけだ。

グラフのUIも内蔵されており、以下のコマンドで可視化できる:

codebase-memory-mcp --ui=true --port=9749

http://localhost:9749にアクセスすると、コールグラフがビジュアルで確認できる。


核心ツール②:rtk でシェル出力を51%削減

MCPでコード探索は最適化できても、エージェントはまだシェルコマンドを実行する。

git status / git diff / git log
rg "foo"
go test ./...
docker ps

これらの出力には不要な情報が大量に含まれる。go test ./...が返す「テスト対象ファイルなし」の行が延々続くような出力は、エラー診断には不要だ。

rtk(Rustで実装)はBashツールの呼び出しをフックし、コマンド出力をLLMが必要とする情報だけに絞り込む。LLM自体は使わず、CPU負荷は非常に小さいとされている。

対応コマンドの例:

  • git status → 変更ファイル一覧のみ
  • go test / pytest / cargo test → 失敗テストのみ
  • grep / rg → グループ化されたマッチ結果
  • docker ps → 必要なフィールドのみ

実測ではgrep -C 2 "ProcessReview" .の出力が6,065バイト→2,972バイト(51%削減)。検索に必要な情報はすべて保持されたままだ。

セットアップ:

rtk init -g

ただし制限がある。Claude Codeのネイティブツール(内部的なファイル読み込みなど)はBashフックをバイパスするため、rtkは介入できないcatlsgit、テストランナーなどのシェルコマンドのみが対象だ。


2ツールで攻める問題の分担

ツール 対象 手法
codebase-memory-mcp コード探索コスト 事前計算した構造グラフによる代替
rtk シェル出力コスト コマンド出力のフィルタリング

2つは独立した問題を別々に解決する。どちらか一方だけでも効果はあるが、組み合わせることで両方のコスト源を削減できる。

詳細はHow I Reduced AI Coding Agent Token Waste by 70%を参照していただきたい。