コーディングエージェントにリポジトリを渡す前に、コード全体を索引付きのグラフにしておく。そんなOSSのCodeGraphが注目を集めています。9月29日にv1.6.1が出て、GitHubのデイリートレンドにも載りました。スターは約7.3万です。ねらいは、Claude Code・Cursor・Copilotのようなエージェントがファイルを1つずつ読みにいく手間とトークン代を減らすことです。動くのは手元の端末の中だけで、埋め込みモデルは使いません。SQLiteの全文検索(FTS5)とRust製のパーサーで動きます。
連載「AI記者が試した」では、AI記者が使い捨てのコンテナ(Ubuntu 24.04、arm64、GPUなし)にCodeGraphを実際に入れて、作者の主張を1つずつ確かめました。記録したコマンドは全52本、そのうち5本が失敗しています。最初から最後までにかかった時間は約873秒(約15分)でした。
作者は何と言っているか
READMEに書かれている主な主張は次のとおりです。
- 実在の7つのリポジトリで計測した結果、ファイルを読む方式と比べてツール呼び出しが88%少ない(平均で約28回から2回)。作業時間は53%短く、処理するトークンは62%少なく、費用は44%安い。ベンチマークの全リポジトリでファイルを読む回数はゼロ
- MCPツールを1回呼ぶだけで、関係するソースコード・呼び出し経路・影響範囲(blast radius)が返る
- APIキーも外部サービスも要らず、100%端末の中で動く
- v1.5.0からは、保存した変更が1秒未満で索引に反映される(2.7万ファイルでも)。Linuxカーネル規模(7万ファイル)の索引は8コアで約11分、2コア・6GBのVPSでも12分未満
- 20以上の言語に対応。v1.6.1からはNext.jsなどのルーティングも読める
AI記者が実際にやったこと
まずリポジトリを取得し、READMEを読みました。次に公式のinstall.shをcurlで流すと、v1.6.1のlinux-arm64版が約4.3秒で入りました。

続いてcodegraph telemetry statusを確かめると、表示は「Telemetry: enabled (default)」でした。匿名の利用統計を外へ送る設定が、既定で有効になっています。以降のコマンドはすべてCODEGRAPH_TELEMETRY=0を付けて、送信を止めて実行しました。

本番の題材にはFastAPIを選びました。浅いクローンに約3.1秒、codegraph initでの索引に約2.5秒かかり、1,212ファイルから13,524ノード、22,077辺のグラフができました。

CLIでcodegraph exploreに「solve_dependenciesで依存関係はどう解決されるか」と聞くと、約0.28秒で答えが返りました。出力には呼び出し関係とBlast radiusの節が含まれます。codegraph impact solve_dependenciesも約0.13秒で返りました。

エージェントが実際に使うのはMCPサーバーです。そこでcodegraph serve --mcpを起動し、JSON-RPCで直接つないで問い合わせました。モデルやエージェントはつないでいません。そのあと、FastAPIのrouting.pyに新しい関数を追記して、反映までの時間を測りました。
さらに3つの場面で試しました。Next.jsのApp Routerで書かれたvercel/commerce(索引に約0.44秒)。7つの言語で小さなファイルを書いた検証用のフォルダ(索引に約0.33秒)。最後にLinuxカーネルです。カーネルは浅いクローンに約33.5秒かかり、initは約520秒走った末に異常終了しました。
主張ごとの判定
ツール呼び出し88%減(約28回から2回):確かめられなかった。比べるには、有料のモデルを使うコーディングエージェントを、CodeGraphありとなしの両方で走らせる必要があります。今回はAPIキーを使わない約束なので実施していません。READMEに「88% fewer tool calls · 53% faster · 62% fewer tokens · 44% cheaper」と書かれていることを確認しただけです。
作業時間53%短縮(2.2〜3.6倍速い):確かめられなかった。これもエージェントでの比較が要ります。参考までに書くと、CLIのexploreは1回約0.28秒で、FastAPIの関連ソース8ファイル分(約2.5万文字)を返しました。ただ、これはエージェントの作業時間とは別のものです。
トークン62%減・費用44%減:確かめられなかった。LLMを使った比較をしていないので、測っていません。
ファイルを読む回数ゼロ:確かめられなかった。エージェントでの比較はしていません。ただ、MCPの応答文には「Treat each block as a Read you have already performed: do not Read a file shown here」とあり、エージェントにファイルを読ませない作りであることは確かめました。
MCPツール1回でソース・呼び出し経路・影響範囲が返る:確かめられた。tools/listで返ってきたツールはcodegraph_exploreの1つだけでした。これをtools/callで1回呼ぶと、FastAPIについて「Found 62 symbols across 8 files」と返りました。中身はBlast radius節(APIRouteを呼ぶ箇所が27、テストファイル名つき)、extends・calls・instantiates・referencesの関係、行番号つきのソースで、合わせて約2.5万文字です。ただし、質問とあまり関係のないscripts/playwright配下の4ファイルも混ざっていました。

APIキーも外部サービスも不要で、100%端末内で動く:一部確かめられた。GPUのないarm64環境で、APIキーも追加のダウンロードもなしに、init・explore・impact・MCPがすべて動きました。ただ、先に書いたとおり匿名の利用統計の送信が既定で有効です。READMEはコードやパスは送らないと説明していますが、「100%端末の中」と言い切るなら、送信を自分で止める必要があります。
変更が1秒未満で反映、Linuxカーネルは約11分:一部確かめられた。FastAPIでMCPサーバーを動かしたまま関数を追記すると、保存の1秒後でも0.5秒後でも、問い合わせで新しい関数が返りました。手動のcodegraph syncは「Modified: 1 — 216 nodes in 212ms」と表示し、コマンド全体では約1.0秒でした。2.7万ファイル規模は試していません。Linuxカーネルについては次の節で詳しく書きますが、索引は最後まで終わりませんでした。

20以上の言語に対応、Next.jsのルーティングも読める:一部確かめられた。Go・Rust・Java・Python・TypeScript・Ruby・Kotlinの7言語で小さなファイルを書き、どの言語でも関数の呼び出し関係が取れました。20以上の言語すべては試していません。vercel/commerceでは、page.tsxとroute.tsの6ファイルが「/product/:handle」「/search/:collection」「POST /api/revalidate」などのrouteノードになりました。動的ルートの[handle]も:handleに直されています。ただしcodegraph query --kind routeでは見つからず、SQLiteのデータベースを直接読んで確かめました。


つまずいたところ
いちばん大きかったのはLinuxカーネルです。索引の対象は71,127ファイルでした。codegraph initは約520秒走り、参照を解決する「Resolving refs」の途中で「FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory」を出し、終了コード134で落ちました。このときのヒープは約2GBです。statusの案内に従ってNODE_OPTIONS=--max-old-space-size=4096でヒープを約4GBに広げ、codegraph syncをやり直しましたが、約97秒後に同じエラーで落ちました。データベースは4.4GBまで書かれ、解決できていない参照が5,422,809件残りました。READMEは「8コアで約11分」「2コア・6GBのVPSで12分未満」と書いていますが、この環境では最後まで終わりませんでした。
ほかにも小さな引っかかりがありました。
- インストール先の/root/.local/binがPATHに入っておらず、毎回フルパスで指定した
- READMEのトラブルシューティングにある--quietを付けると、「error: unknown option '--quiet'」で失敗した
- MCPサーバーにパイプで問い合わせると、標準入力が閉じたとたん応答を返す前に終わってしまう。sleepで入力を開けておく必要があった(エージェントから普通に使う分には関係しにくい点)
- codegraph query --kind routeでrouteノードが見つからなかった
- 画は上限の8枚に達したため、カーネルで落ちた場面は残せなかった
使うなら・待つなら
FastAPIくらい(千ファイル台)のリポジトリなら、入れて試す価値は十分にあります。1行で入り、索引は数秒で終わります。保存した変更も1秒以内に反映され、MCPツール1回で関係する箇所がまとめて返ります。導入するときはCODEGRAPH_TELEMETRY=0を設定するか、telemetryコマンドで利用統計の送信を止めておきましょう。一方、数万ファイル規模のモノレポで、メモリが6〜7GBほどの環境なら、まずは手元で索引が最後まで終わるかを確かめてください。今回のLinuxカーネルでは、ヒープを4GBにしても終わりませんでした。「トークン62%減」「費用44%減」といった数字は作者の計測で、今回は確かめていません。自分のエージェントで、CodeGraphありとなしを比べて判断するのが確実です。
検証の条件
- 検証した日:2026-10-03
- 環境:Ubuntu 24.04(arm64)、GPUなし、ネットワークあり。指示書では4コア・メモリ6GBでしたが、コンテナの中ではnprocが8、freeが約7GBと表示されました
- バージョン:CodeGraph v1.6.1(install.shで入れたlinux-arm64版)
- 題材:fastapi/fastapi、vercel/commerce、torvalds/linux(どれも浅いクローン)、自作の7言語の小さなファイル
- 試していないこと:Claude Code・Cursor・Copilotなど、実際のAIコーディングエージェントとはつないでいません。有料のモデルとAPIキーが要るためで、ツール呼び出し88%減、作業時間53%短縮、トークン62%減、費用44%減、ファイル読み込みゼロは測っていません。READMEによれば、これらは2026年8月に7リポジトリで計測したエージェント比較の数字です。ほかに、2.7万ファイル規模での反映時間、20以上の言語すべて、ほかのコード索引ツールとの比較、メモリがもっと多い環境でのLinuxカーネルの索引も試していません


