AI Agentでコード作業をする際のトークンコストを劇的に削減する方法
身に覚えはないだろうか? legacyモジュールの20行ほどの関数を修正するようClaude CodeやCursorに頼むだけなのに、エージェントは1000行のファイルを開き>importの羅列を読み、近隣ファイルのぞき見、そして一瞬でコンテキストウィンドウの半分を消費してしまう。スマートな解决方案の生成ではなく、延々とソースコードをスクロールするために нейронネットワークプロバイダーに料金を支払っているのだ。
jgravelleというニックネームの開発者が実用的なアプローチを提案した:コード構造の解析を軽量なローカルパーサーにオフロードし、ニューラルネットワークには関連するスニペットのみを渡すという手法だ。ここからオープンソースプロジェクトjCodeMunch MCPが诞生了。
プロジェクトの核となるアイデア
jCodeMunch MCPは、tree-sitterライブラリを使用してコードベースをインデックス化するMCP(Model Context Protocol)サーバーだ。AIエージェントにファイル全体を渡すのではなくツールがASTツリーを解析し、特定のシンボル(関数、クラス、メソッド、定数、インターフェース)を抽出する。
エージェントがメソッドの実装を查找する必要がある場合、jCodeMunchは800行のソースファイル全体ではなく、その特定の関数30行だけをバイトオフセット付きで返す。FastAPI、Express、Ginなどの人気リポジトリでの作者のベンチマークによると、この手法によりコード読み取りのトークン消費量が95〜99%削減される。
このツールはClaude Code、Cursor、Windsurf、VS Code、Codex CLI、Continue、MCP対応のその他のクライアントと連携する。
jCodeMunchの主な機能
ブルートフォースではなくターゲットを絞ったAST検索
一般的なAIアシスタントはgrepやファイル単位のリクエストでコードを查找する。jCodeMunchはプロジェクトを一度インデックス化し、シンボルマップを構築する。エージェントは完全一致検索、模糊検索、またはハイブリッドアルゴリズム(BM25とPageRankの組み合わせ)で検索できる。
1回の呼び出しでコンテキスト収集
「ファイル查找 → 読み取り → import確認 → import読み取り」のような長いクエリチェーンの代わりに、jCodeMunchにはassemble_task_contextツールがある。自然言語のタスクを渡すと、サーバーが自動的に意図(デバッグ、リファクタリング、監査)を判断し、重要なシンボルを抽出し、指定されたトークン制限内で压缩されたコンテキストバンドルを形成する。
grepでは答えられない質問
静的検索ではコンポーネント間の関係を理解できない。jCodeMunchはコールグラフを構築し、専門的なエンジニアリングの質問に答えることができる:
find_importers:選択したモジュールに依存するファイルを表示する。get_blast_radius:特定の関数を変更する際のブラスト半径とリスクを評価する。find_dead_code:エントリーポイントに接続されていない未使用のシンボルと孤児ファイルを查找する。get_symbol_importance:PageRankアルゴリズムを使用してプロジェクトコンポーネントをアーキテクチャ上の重要度でランキングする。get_untested_symbols:既存のテストでカバーされていない関数を查找する。
紧凑なMUNCH転送フォーマット
通常のJSONは冗長で、それ自体がコンテキストを消費する。コード抽出に加えて、jCodeMunchは独自のMUNCH圧縮を適用できる。重复するパスはintern化され、リストは型を保持しながら紧凑なCSV文字列にパックされる。これにより、転送されるデータ量でさらに40〜50%の節約が実現できる。
内部構造
このプロジェクトはPythonで書かれており、完全にローカルで動作する。デフォルトでは、すべてのインデックスは~/.code-index/ディレクトリに保存される。70以上のプログラミング言語を解析するためにtree-sitterバインディングを使用する。
コンテキストアセンブリはBM25全文検索とPageRank計算を伴うimportグラフ分析に依存している。意味による適切なセマンティック検索が必要な場合は、オプションの[local-embed]パッケージをインストールできる。これは約23MBのローカルONNXモデルをall-MiniLM-L6-v2一度だけダウンロードする。その後、ベクトル化は外部APIを呼び出さず、コードがネットワークにリークすることもなく動作する。
試してみる方法
サーバーをデプロイする最も 빠른方法は、pipまたはuvxを使用することだ:
pip install jcodemunch-mcp
jcodemunch-mcp init
initユーティリティは、マシンにインストールされているMCPクライアント(Claude Code、Cursor、Windsurf、VS Code)を自動的に查找し、設定を書き込み、モデルが通常のファイルスクロールではなくシンボル検索を使い始めるようにCLAUDE.mdまたはエージェントのシステムプロンプトに指示を追加することを提案する。
CLI経由でClaude Codeに手動接続する例:
claude mcp add -s user jcodemunch uvx jcodemunch-mcp
コストを追跡したい場合は、組み込みのget_session_statsツールでツール呼び出し統計、セッションごとの実際のトークン節約量、クエリの正確さを確認できる。
誰が本当に必要としているのか
少数のファイルで構成される小さなスクリプトやペットプロジェクトを書いているなら、このツールが人生を変えることはないだろう。しかし、TypeScript、Python、Go、Javaで大型モノレポを扱う場合、jCodeMunchは目に見える效果をもたらす。
エージェントは数千行のボイラープレートをスクロールすることに Stuckしなくなり、モデルのレスポンスが 빠르게返ってくるようになり、ニューラルネットワークAPIの使用料請求額が大幅に減少する。個人利用ライセンスは完全に無料なので、追加コストなしで自分のコードベースでアプローチを試すことができる。
関連プロジェクト