code-review-graph:讓 AI 程式碼審查更精準、更省 Token

code-review-graph 是一個面向 AI 程式碼助手的開源工具,它會先在本地為程式碼庫建立一張結構化的「知識圖譜」,再把真正相關的上下文交給 AI,從而避免每次任務都全量掃描整個倉庫。它基於 Tree-sitter 解析 AST,把函式、類別、匯入、呼叫關係和測試關係組織成圖結構,再透過 MCP 提供給 Claude Code、Codex、Cursor 等工具使用。
它解決了什麼問題
目前許多 AI 程式碼工具在做程式碼審查、定位影響範圍或理解改動時,會反覆讀取整個程式碼庫,這會帶來明顯的 Token 浪費與成本上升。在一個數百檔案的倉庫裡,即使只改了一個函式,AI 也可能需要重新掃描大量無關檔案,導致速度變慢、上下文雜訊增加、費用變高。
code-review-graph 的思路是把「程式碼依賴關係」預先建模出來,讓 AI 在審查時只讀取改動真正波及到的檔案,而不是靠猜測去做全量掃描。官方把這種能力稱為 blast-radius analysis,也就是「爆炸半徑分析」:當某個檔案變更後,工具會沿著呼叫、繼承、依賴和測試鏈條往外追蹤,找出所有可能受影響的程式碼。
它怎麼工作
工具首先用 Tree-sitter 把倉庫解析成 AST,並擷取函式、類別、匯入、呼叫點、繼承關係與測試覆蓋等結構資訊,再把這些資訊存到本地 SQLite 圖資料庫中。到了程式碼審查階段,AI 不再直接讀整個專案,而是先查詢圖譜,拿到一份最小上下文集合,只閱讀與當前問題直接相關的檔案和節點。
它同時支援增量更新。後續更新只會重新解析發生變化的檔案,並透過雜湊與依賴追蹤來重新整理相關節點;在一個約 2,900 個檔案的專案中,重新索引可以控制在數秒內。對 monorepo 這類大型倉庫來說,這種方式尤其有價值,因為它能從上萬檔案裡縮小到十幾個真正需要讀取的檔案。
支援的平台與工具
code-review-graph 透過 MCP 集成到多種 AI 程式碼平台中,官方快速開始與平台說明中列出的支援對象包括 Claude Code、Codex、Cursor、Windsurf、Zed、Continue、Kiro、OpenCode、Antigravity、Qwen 和 Qoder。這代表它並不侷限於某一個 AI 編輯器,而是盡量把「圖譜上下文」能力接到不同的 coding agent 或 AI IDE 上。
類型 | 支援的平台/工具 |
|---|---|
官方 AI 程式碼工具 | Claude Code、Codex、Cursor、Windsurf、Zed、Continue、Kiro |
其他已列出平台 | OpenCode、Antigravity、Qwen、Qoder |
集成方式 | 透過 MCP 接入,在支援的平台中呼叫圖譜能力 |
如果只想替某一個平台單獨安裝,也可以明確指定平台名稱,例如:
code-review-graph install --platform codex
code-review-graph install --platform cursor
code-review-graph install --platform claude-code
code-review-graph install --platform kiro如何使用
最基礎的使用流程很簡單:先安裝,再替 AI 工具寫入 MCP 設定,最後回到具體專案中建構圖譜。
pip install code-review-graph
code-review-graph install
cd /path/to/your/project
code-review-graph build這裡有一個非常重要、也很容易寫得不清楚的點:
code-review-graph install**不是**在專案根目錄裡執行的「專案初始化指令」,它本質上是一個**全域配置指令**。這個指令會自動偵測你機器上已安裝的 AI 程式碼工具,寫入對應的 MCP 設定,並把圖譜相關指令注入這些平台的規則配置中;執行完之後通常需要重啟對應的編輯器或工具。相對地,
code-review-graph build才是應該在**專案根目錄**中執行的指令。官方說明是「Then open your project」,接著讓 AI assistant 為「this project」建立 code review graph;同時,工具的忽略檔.code-review-graphignore也明確要求放在 repository root,而本地的圖譜資料則存放在專案中的.code-review-graph/目錄裡。換句話說,install負責把能力接入你的 AI 工具,build負責對當前倉庫實際建圖。
如果希望避免讀者混淆,可以直接用表格對照這兩個指令的職責:
指令 | 是否在專案根目錄執行 | 作用 |
|---|---|---|
`code-review-graph install` | 否,不要求在專案根目錄執行 | 偵測本機 AI 工具並寫入對應 MCP 設定 |
`code-review-graph build` | 是,需要在目標專案根目錄執行 | 為當前倉庫建立本地知識圖譜並生成 `.code-review-graph/` 資料 |
如果編輯器本身不支援 hooks,或者希望圖譜在背景持續保持最新,還可以使用 daemon 模式。工具提供了 crg-daemon add、crg-daemon start、crg-daemon status 等指令,用來註冊多個倉庫並自動監聽檔案變化。
常用指令
除了安裝與建圖,code-review-graph 還提供一組相對完整的 CLI 能力:
指令 | 作用 |
|---|---|
`code-review-graph install` | 自動偵測並配置所有支援的平台 |
`code-review-graph install --platform <name>` | 只配置指定平台 |
`code-review-graph build` | 完整解析當前程式碼庫並建立圖譜 |
`code-review-graph update` | 僅對變更檔案做增量更新 |
`code-review-graph watch` | 持續監聽檔案變化並自動更新圖譜 |
`code-review-graph visualize` | 生成互動式 HTML 圖譜,也可匯出 GraphML、SVG、Obsidian vault 或 Neo4j Cypher |
`code-review-graph wiki` | 根據社群結構自動產生 Markdown wiki |
`code-review-graph detect-changes` | 做帶風險評分的變更影響分析 |
在支援 Slash Commands 的工具中,還可以直接使用:
/code-review-graph:build-graph/code-review-graph:review-delta/code-review-graph:review-pr
來觸發對應的工作流程。
效果如何
官方基準測試基於 6 個真實開源倉庫、13 次提交進行評估,結果顯示 graph 模式相對於簡單的全量讀取,平均可以把 Token 消耗降到原來的大約八分之一,整體降低約 8.2 倍。從公開數據看,不同倉庫的收益並不完全一樣,但大部分中大型專案都有相當明顯的下降幅度。
專案 | Token 減少倍數 |
|---|---|
Gin | 16.4× |
Flask | 9.1× |
FastAPI | 8.1× |
Next.js | 8.0× |
httpx | 6.9× |
平均 | 8.2× |
另一個重點指標是變更影響分析的準確度。官方給出的結果是召回率(Recall)達到 100%,平均 F1 為 0.54、平均精確率(Precision)為 0.38。這說明它在策略上偏保守:寧可多提示一些「可能受影響」的檔案,也盡量不漏掉真正會被改動波及的依賴。
指標 | 數值 | 含義 |
|---|---|---|
Recall | 100% | 不漏掉真正受影響的檔案 |
F1 | 0.54 | 綜合衡量召回率與精確率 |
Precision | 0.38 | 偏保守,可能多納入一些候選檔案 |
當然,這種方式並不是所有場景都佔優。在體量較小、改動又非常局部的專案中,圖譜中繪的額外上下文開銷,有時反而可能大於直接讀取檔案的成本,例如在某些單檔案變更測試中,Token reduction 甚至只有 0.7 倍。換句話說,它最適合的場景仍然是:中大型專案、多檔案改動、依賴關係複雜,以及高頻使用 AI 做程式碼審查的工作流。
適合哪些團隊
如果團隊已經把 Claude Code、Codex、Cursor 或類似工具納入日常開發流程,而且專案規模較大、模組關係複雜、Pull Request 審查頻繁,那麼 code-review-graph 的價值會非常直接。它本質上不是取代程式碼審查,而是先幫 AI 把「該讀什麼」這件事做好,讓後續的 review、除錯、架構分析和新成員 onboarding 都建立在更準確的上下文上。
對於個人專案、很小的倉庫或只是偶爾做一些簡單改動,它未必總能帶來明顯收益。但對於希望系統性降低 AI 程式碼成本、減少上下文雜訊、提升程式碼審查命中率的團隊來說,code-review-graph 已經展現出相當實用的效果。
在 Google 上持續關注
把 HeyBinyang 加入 Google 首選來源
如果你希望之後在 Google 上更容易看到我的更新,可以把這個站點加入 preferred source,讓它在相關閱讀情境裡更容易被找到。
SHARE
分享
分享這篇文章。