技術2 閱讀

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 圖資料庫中。 到了 review 階段,AI 不再直接讀整個專案,而是先查詢圖譜,拿到一份最小上下文集合,只閱讀與當前問題直接相關的檔案和節點。
它還支援增量更新。官方說明顯示,後續更新只會重新解析發生變化的檔案,並透過哈希和依賴追蹤來重新整理相關節點;在一個約 2,900 檔案的專案中,重新索引可以控制在 2 秒以內。 對 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 codexcode-review-graph install --platform cursorcode-review-graph install --platform claude-codecode-review-graph install --platform kiro

如何使用

最基礎的使用流程很簡單:先安裝,再給 AI 工具寫入 MCP 組態,最後回到具體專案中建構圖譜。

text
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 addcrg-daemon startcrg-daemon status 等指令,用來註冊多個倉庫並自動監聽檔案變化。

常用指令

除了安裝與建圖,官方文件還給出了比較完整的 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 模式相對 naive 全量讀取,平均可把 Token 消耗降到原來的約八分之一,整體減少 8.2 倍。 從公開資料看,不同倉庫的收益並不完全一樣,但大部分中大型專案都有比較明顯的下降幅度。

專案

Token 減少倍數

Gin

16.4×

Flask

9.1×

FastAPI

8.1×

Next.js

8.0×

httpx

6.9×

平均

8.2×

它的另一個重點指標是影響分析準確率。官方給出的結果是召回率達到 100%,平均 F1 為 0.54、平均精確率為 0.38。 這說明它在策略上偏保守:寧可多提示一些「可能受影響」的檔案,也盡量不漏掉真正會被改動波及的依賴。

指標

數值

含義

Recall

100%

不漏掉真正受影響的檔案

F1

0.54

綜合衡量召回率與精確率

Precision

0.38

會偏保守,可能多納入一些候選檔案

不過,這種方式也不是所有場景都佔優。官方明確提到,在體量較小、改動又非常局部的專案中,圖譜元資料本身的上下文開銷可能反而大於直接讀取檔案的成本,例如 express 的單檔案變更測試中 reduction 只有 0.7x。 所以它最適合的場景,仍然是中大型專案、多檔案改動、複雜依賴關係以及高頻 AI review 工作流程。

適合哪些團隊

如果團隊已經把 Claude Code、Codex、Cursor 或類似工具納入日常開發流程,而且專案規模較大、模組關係複雜、PR 評審頻繁,那麼 code-review-graph 的價值會比較直接。 它本質上不是替代程式碼審查,而是先幫 AI 把「該讀什麼」這件事做對,從而讓後續的 review、除錯、架構分析和 onboarding 都建立在更準確的上下文之上。

對於單人專案、很小的倉庫或偶發性的簡單改動,它未必總能帶來明顯收益。 但對於希望系統性降低 AI 編碼成本、減少上下文雜訊、提升程式碼審查命中率的團隊來說,它已經展示出了相當實用的效果。

SHARE

分享

分享這篇文章。