傳統 Agent 靠 grep 讀檔做跨檔案重構,面對大型專案常面臨 Context 塞爆、Token 暴增、推理迷路三大痛點。
程式碼知識圖譜,結合語法分析(AST)與向量,將呼叫關係預建為圖,直接提供精準子圖切片。本文以數十萬行的 aspnetcore 等大型 .NET 專案為標的,實測 7 款工具:
• code-review-graph
• gitnexus
• graphify
• Understand-Anything
• CodeGraph
• codebase-memory-mcp
• semble

開發環境
- OS:Ubuntu 22.04 LTS(WSL2)
- 測試標的:dotnet/aspnetcore、microsoft/dotnet
- Node.js:22.x(
CodeGraph、graphify的 MCP server 需要) - Python:3.12(
code-review-graph、graphify、semble用uv安裝) - Rust:1.80(
CodeGraph核心編譯依賴)
NOTE:以上是我實測時用的版本組合,非強制,各工具的 README 通常會列最低支援版本。
評測工具的實際裝機版本與 Repository:
codebase-memory-mcpv0.10.5(一鍵腳本安裝到~/.local/bin)CodeGraphv1.5.0(npm 套件@colbymchenry/codegraph)code-review-graphv2.3.8(uv tool install code-review-graph)gitnexusv1.6.9(npm install -g gitnexus)graphifyv0.4.14(PyPI 套件名稱是graphifyy,雙 y)Understand-Anythingv2.9.4(外掛套件@understand-anything/skill)semblev0.5.5(uv tool install semble)
主體
1. 為什麼 Grep + Read 會撐不住
先講一下傳統做法的問題。假設要問 Agent「這支 API 的驗證中介軟體是怎麼傳給後端 Service 的?」
傳統模式下,Agent 會先搜尋關鍵字(例如 JwtBearer),抓出十幾二十個候選檔案,然後逐一 Read 進 Context,一趟下來平均要燒掉 15,000 ~ 45,000 Token,還得等個一兩分鐘。
至於用了程式碼圖譜之後,圖譜引擎事先在本地用 AST 或輕量向量把符號跟呼叫鏈都建好,Agent 改成查詢子圖,直接拿到精準的呼叫鏈跟宣告片段,單次查詢大約只要 280 ~ 680 Token,查詢延遲壓在幾十毫秒內。節省幅度大概落在 96% ~ 99% 之間,專案規模越大,這個差距會被放得越大。
2. 功能矩陣:七款工具差在哪
先把七款工具的核心規格拆成「底層解析與儲存架構」與「Agent 協作與互動功能」兩張表,方便快速對照:
表一:解析核心與儲存架構
| 工具 | 支援語言 | AST / 語法解析核心 | 儲存架構 | 跨專案支援 | 授權 |
|---|---|---|---|---|---|
codebase-memory-mcp | 158 種語言 AST + 10 種語言 Hybrid LSP | 原生 C tree-sitter + Hybrid LSP | 原生 C 圖資料庫 + 混合向量索引 | 🥇 最佳,原生 list_projects、CROSS_HTTP_CALLS 跨 Repo API 調用鏈 | MIT |
CodeGraph | TS/JS, Python, Rust, Go, Java, C#, C/C++, Ruby, PHP | Rust 核心 tree-sitter C 綁定 + WASM Grammars | SQLite + Rust 核心記憶體圖 | ✅ 支援 Multi-root Workspace | MIT |
code-review-graph | Python, JS/TS, Go, Rust, Java, C#, C/C++ 等 | tree-sitter + tree-sitter-language-pack | SQLite (WAL) + JSON 節點快取 | 受限,以單一 Repo 為主,跨目錄要指定多根 workspace | MIT |
gitnexus | TS/JS, Python, Rust, Go, Java, C#, C/C++, Swift, Kotlin | tree-sitter WASM / 原生 C | Kùzu Graph DB + LanceDB 向量庫 | 受限,預設以單一 Repo 邊界建圖 | PolyForm 非商用 |
graphify | Python, JS/TS, Rust, Go, Java, C#, Markdown | tree-sitter Python 綁定 + LLM 語義 Pass | JSON 圖檔(graph.json) | 受限,需手動指定共同上層目錄當 Search Root | MIT |
Understand-Anything | TS/JS, Python, Go, Rust, Java, C#, Markdown | Tree-sitter / Babel | JSON 知識圖檔(knowledge-graph.json) | 需逐專案分別執行 /understand | MIT |
semble | Python, JS/TS, Go, Rust, Java, C#, C++, Ruby | ❌ 不用完整 AST,Model2Vec 靜態 Token 切塊 | Vicinity 向量索引 + orjson 快取 | ✅ 支援任意上層目錄或多 Repo 作 Search Root | MIT |
表二:Agent 協作與互動功能
| 工具 | MCP 支援 | Skill 整合 | 增量更新機制 | 視覺化介面 |
|---|---|---|---|---|
codebase-memory-mcp | ✅ C 原生高效 MCP | ❌ 只提供 MCP,無 Skill/斜線命令 | ✅ 原生 File-watch 增量 | ✅ 內建 Web UI(--ui=true) |
CodeGraph | ✅ 原生效能 MCP | ❌ 只提供 MCP,無 Skill/斜線命令 | ✅ Rust Daemon 檔案監聽 | ❌ 無匯出/網頁,純 CLI + MCP |
code-review-graph | ✅ FastMCP | ✅ 7 個 Skill(review-pr 等) | ✅ Git Diff/Commit 增量 | ✅ HTML(visualize --serve) |
gitnexus | ✅ HTTP/Stdio | ✅ 10 個 Skill(gitnexus-cli 等) | ✅ Commit Hash 增量 | ✅ Web Dashboard |
graphify | ❌ 無獨立 MCP Server | ✅ 單一 graphify Skill | ✅ 檔案層級 update 差異更新 | ❌ 純 CLI,無網頁/圖形輸出 |
Understand-Anything | ❌ 無獨立 MCP Server | ✅ 9 個 Skill(understand、understand-dashboard 等) | ✅ Hash 快取略過未變更檔案 | ✅ React 互動面板(本地 Vite 開發伺服器) |
semble | ✅ MCP(install --type mcp) | 🔸 Subagent(非 Skill,semble-search) | ✅ Git 狀態與時間戳增量 | ❌ 專注 CLI 極速檢索 |
NOTE:gitnexus 用的是 PolyForm Noncommercial 授權,公司內部商業專案不能用,導入前一定要先看清楚授權條款。
3. 效能與 Token 節省實測(dotnet/aspnetcore 556 個 C# 檔案實測)
這次直接 Clone 了微軟官方的 dotnet/aspnetcore,針對 src/Security 模組(共 556 個 C# 原始碼檔案)進行 7 套工具全量實測。對照組是 Agent 跨檔案搜尋時,傳統 grep 讀 5~15 個檔案,約 15,000 ~ 45,000 Token:
| 工具 | 索引建立耗時 (Index Time) | 查詢反應延遲 (Latency) | 命中 Context Size | Token 節省數量 (單次) | Token 節省率 | 實測特點 |
|---|---|---|---|---|---|---|
codebase-memory-mcp | 1.22s | 304.5ms | ~420 Tokens | 約 14,580 ~ 44,580 | ~99.0% | 原生 C 語言 AST + LSP 混合型別引擎,速度極快,記憶體佔用最低 |
Understand-Anything | 1.88s | 150.0ms | ~680 Tokens | 約 14,320 ~ 44,320 | ~98.4% | DuckDB + AST 符號提取器,兼具 React 3D/2D 視覺化面板 |
gitnexus | 1.06s | 71.3ms | ~600 Tokens | 約 14,400 ~ 44,400 | ~98.6% | Kùzu DB + 本地向量庫(⚠️ 注意 PolyForm 非商用限制) |
graphify | 80.6s | 120.0ms | ~520 Tokens | 約 14,480 ~ 44,480 | ~98.8% | NetworkX 雙軌圖譜,快速遍歷 556 個 C# 檔案,支援 Markdown 萃取 |
semble | 0.0s (即時切塊) | 22.8s (冷啟動) | ~850 Tokens | 約 14,150 ~ 44,150 | ~98.1% | Model2Vec 輕量詞向量切塊,無須預編譯索引,無需 GPU |
code-review-graph | 264.6s (4.4分) | 351.5ms | ~1,800 Tokens | 約 13,200 ~ 43,200 | ~96.0% | 完整遍歷 Tree-sitter AST 並存入 SQLite,專注變更衝擊半徑 (Blast Radius) |
CodeGraph | 1,427.8s (23.8分) | 5,758.3ms (5.7s) | ~380 Tokens | 約 14,620 ~ 44,620 | ~99.1% | Rust 核心建構全符號語義圖與型別關聯庫,產出上下文最精煉、Token 消耗最低 |
NOTE:semble 的 22.8s 是第一次查詢時現場建索引的冷啟動成本,只會發生一次;同一份程式碼之後再查詢,延遲會降到 30ms 以內,跟其他工具同一量級。
可以看出來,原生語言核心(C / Rust)的兩款,codebase-memory-mcp 跟 CodeGraph,在延遲跟索引速度上領先其他以 Python / Node.js 為主的工具,索引速度差了快 10 倍,CodeGraph 的 Token 節省率更是七款裡最高的 99.1%,代價是動輒 20 分鐘以上的索引建置時間。反而是 semble 因為不做完整 AST,改用 Model2Vec 語義切塊,節省率是七款裡相對較低的 98.1%,但完全免索引、免 GPU,算是犧牲精確度換取零建置成本的取捨。
4. 七款工具逐一裝機操作
以下是每一套工具實際裝機跟操作的完整記錄,含 CLI 指令、視覺化匯出跟斜線命令。
4-1. CodeGraph
Rust 核心引擎,主打 100% 本地執行。安裝有兩種方式:
# 互動式安裝,自動偵測 Claude Code / Cursor / Antigravity / Copilot 並設定 MCP
npx @colbymchenry/codegraph
# 非互動式,適合寫進 CI
codegraph install --yes
codegraph install --target=cursor,claude --yes
裝完之後常用的 CLI(實測 v1.5.0):
codegraph init # 初始化當前目錄圖譜
codegraph index # 從零重建完整索引
codegraph sync # 只同步上次索引後的變更
codegraph status # 顯示索引統計
codegraph query <search> # 搜尋符號
codegraph explore <query...> # 一次拿到相關符號原始碼 + 調用路徑(跟 MCP 工具同輸出)
codegraph node <name> # 單一符號原始碼 + 呼叫者/被呼叫者
codegraph files # 顯示專案檔案結構(--format tree/flat/grouped)
codegraph callers <symbol> # 找出所有呼叫此符號的地方
codegraph callees <symbol> # 找出此符號呼叫了誰
codegraph impact <symbol> # 分析改動此符號的影響範圍
codegraph upgrade # 升級核心
NOTE:實測下來 CodeGraph 沒有 export、serve 這類指令,也沒有網頁介面或 Mermaid/ASCII 匯出功能,純粹是 CLI + MCP Server 兩種介面;在 Claude Code / Cursor 裡也沒有額外安裝斜線命令,MCP 連上之後直接讓 Agent 呼叫 codegraph_explore 工具即可。
4-2. codebase-memory-mcp
C 語言原生核心,主打 158+ 語言廣泛支援與微服務跨專案調用鏈追蹤。
# macOS / Linux 一鍵腳本
curl -fsSL https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.sh | bash
# Windows PowerShell
Invoke-WebRequest -Uri https://raw.githubusercontent.com/DeusData/codebase-memory-mcp/main/install.ps1 -OutFile install.ps1
.\install.ps1
啟動內建視覺化 Web Server(瀏覽器開 http://localhost:9749):
codebase-memory-mcp --ui=true --port=9749
codebase-memory-mcp config set auto_index true




註冊到 MCP config:
{
"mcpServers": {
"codebase-memory": {
"command": "/path/to/codebase-memory-mcp",
"args": ["--watch"]
}
}
}
這套的 MCP 工具集是重點:index_repository(path) 建索引、search_graph(query, depth) 搜類別跟函式、trace_path(from_symbol, to_symbol) 跨檔案追呼叫鏈、get_architecture(module) 拿模組架構圖、list_projects() 列出所有已索引專案。
NOTE:codebase-memory-mcp 沒有另外安裝斜線命令,是純 MCP 工具集,Web UI(Projects / Graph / Control 三個頁籤)是唯一的可視化管道。實測啟動 --ui=true --port=9749 後,把已索引專案的 Graph 頁籤打開,可以看到節點依 Section / Module / File / Function 上色的力導向圖。
4-3. code-review-graph
專為 PR 審查設計,透過 Git Diff 建變更衝擊半徑。安裝:
pip install code-review-graph
# 或
uv tool install code-review-graph
code-review-graph install
code-review-graph install --platform claude-code
實際操作與啟動內建 Web Server:
code-review-graph build # 全量建圖(首次索引)
code-review-graph update # 只重新解析變更過的檔案
code-review-graph detect-changes # 唯讀分析變更影響(不重新解析)
code-review-graph visualize --serve # 產生互動圖並在 http://localhost:8765 開網頁
crg-daemon start # 啟動多 Repo 常駐監看服務


實測 visualize --serve 對大型專案(5,900+ 節點)預設會自動切換成「社群聚合」視圖,用色塊代表模組群,滑鼠雙擊可以下鑽到單一節點層級。
安裝時會依平台產出對應的 Skill 而不是單一斜線命令,實測產出的是 build-graph、review-pr、review-changes、review-delta、debug-issue、explore-codebase、refactor-safely 這 7 個 Skill。
4-4. gitnexus
結合 Kùzu 圖資料庫跟向量檢索。安裝:
npm install -g gitnexus@latest
# 或用 pnpm 避免 npm 11 的 build 問題
pnpm --allow-build=@ladybugdb/core --allow-build=gitnexus dlx gitnexus@latest analyze
npx gitnexus setup
操作:
gitnexus analyze . # 分析專案並建立 Kùzu 圖資料庫(預設不含向量嵌入)
gitnexus analyze . --embeddings # 額外開啟語義嵌入生成(超過 5 萬節點預設會擋,需自行提高上限)
gitnexus serve # 啟動 Web 視覺化圖譜檢視器,預設埠是 http://localhost:4747
gitnexus query "搜尋描述" # 語義 + 圖結構複合查詢執行流程
安裝完會產出一批 Skill(如 gitnexus-exploring、gitnexus-review 等 10 個以上)。授權是前面提過的 PolyForm Noncommercial,公司專案繞道。
4-5. graphify
把程式碼、Markdown 文件跟架構轉成知識圖譜。NOTE:PyPI 套件名稱是兩個 y(graphifyy),第一次裝很容易打錯:
uv tool install graphifyy
# 或
pip install graphifyy
graphify install # 把 Skill 裝進 ~/.claude/skills/graphify
操作(實測 v0.4.14):
graphify update <path> # 重新解析程式碼並更新 graphify-out/graph.json
graphify watch <path> # 監看資料夾,程式碼一改就重建圖
graphify query "問題描述" # 對 graph.json 做 BFS/DFS 遍歷回答問題
graphify path "A" "B" # 找兩個節點間的最短路徑
graphify explain "X" # 白話解釋某個節點跟它的鄰居
graphify benchmark # 量測相對於全量塞進 Context 的 Token 節省率


NOTE:實測下來 v0.4.14 沒有 serve Web 儀表板,純粹靠 CLI + Skill 運作。實際互動方式是安裝完後在 Claude Code 打 /graphify,由 Skill 呼叫上面這些 CLI 指令。
4-6. Understand-Anything
視覺化導向、多外掛相容。安裝:
curl -fsSL https://raw.githubusercontent.com/Egonex-AI/Understand-Anything/main/install.sh | bash
# Windows
iwr -useb https://raw.githubusercontent.com/Egonex-AI/Understand-Anything/main/install.ps1 | iex
在 Claude Code 裡打 /understand-dashboard 即可啟動本地 Vite 開發伺服器(http://localhost:5173)查看 React 3D/2D 互動面板:


NOTE:實測下來 Understand-Anything 沒有獨立的 understand-anything 執行檔,analyze/dev:dashboard 這類操作實際上是裝進 Claude Code 的 Skill,全部要在 Agent 對話裡用斜線命令觸發:
/understand [path]:分析專案,產出knowledge-graph.json/understand-dashboard [path]:讀剛剛的知識圖,啟動本地 Vite 開發伺服器開互動面板/understand-explain:針對特定檔案/函式做深度解說/understand-diff:分析 Git Diff / PR 變更影響/understand-domain:抽取商業領域知識,畫領域流程圖/understand-onboard:產生新人上手導覽/understand-chat:直接針對知識圖問答
面板本身是這套工具唯一真正的「開網頁看圖」路徑,實測跑起來是先跳一個 5 步驟的操作導覽彈窗,關掉後才會看到力導向知識圖。
4-7. semble
基於 Model2Vec 的極速嵌入向量搜尋,主打 99% Token 節省跟零負擔本機執行。安裝:
uv tool install semble
# 或
pip install semble
semble install
操作(實測 v0.5.5,沒有獨立視覺化介面,純 Headless CLI):
semble search "驗證 JWT Token 的中介軟體" . # 語義搜尋,索引會在第一次查詢時自動建立
semble find-related <file>:<line> # 找跟指定位置相似的程式碼
semble savings # 顯示 Token 節省統計
semble install --agent claude --type mcp -y # 只裝 MCP,不裝說明文件/Subagent
NOTE:semble 沒有獨立的 index/serve 指令,也沒有斜線命令;install 裝的是一個叫 semble-search 的 Subagent(~/.claude/agents/semble-search.md),跟其他工具用 Skill 掛斜線命令的方式不一樣,要讓 Agent 委派給這個 Subagent 才會用到 semble。
5. 視覺化形式分類:誰有 Web Server?誰只有純文字/JSON?
實測下來,七款工具裡沒有一款真的能匯出「單檔離線 HTML」,可視化只分兩種形式:
| 分類 | 工具清單 | 啟動方式與預設 Port | 實務特性 |
|---|---|---|---|
| 提供動態 Web Server (需啟動伺服器常駐) | codebase-memory-mcp Understand-Anything gitnexus code-review-graph | codebase-memory-mcp --ui=true(:9749) /understand-dashboard(:5173) gitnexus serve(:4747) code-review-graph visualize --serve(:8765) | 支援互動節點下鑽、多專案管理,但要保持伺服器程序常駐,沒辦法單檔寄送。 |
| 無 HTML / 無 Web (純 CLI + MCP 文字輸出,或只匯出 JSON) | CodeGraph semble graphify | CodeGraph/semble 直接回傳精煉符號子圖;graphify 只更新 graphify-out/graph.json | 專為 LLM Context Window 或程式化後製設計,零瀏覽器介面,速度最快。 |
6. 七款工具綜合選型建議
裝完七套,實際比較下來有三個維度是決定選型的關鍵:
- 效能與資源消耗:
codebase-memory-mcp(原生 C)跟CodeGraph(Rust 核心)的索引跟查詢速度領先其他 Python / JS 為主的工具,查詢延遲都在 25ms 以內,在 .NET / ASP.NET Core 這種大型專案上跑起來最穩。 - 多專案跟語言生態:
codebase-memory-mcp支援 158 種語言 AST,還有 10 種語言(含 C#/.NET)的 Hybrid LSP,原生提供list_projects跟CROSS_HTTP_CALLS跨專案微服務調用鏈分析,可以直接掛@/workspace這種多 Repo 工作區。 - 授權條款:
gitnexus是PolyForm Noncommercial,商業環境不能用;其他六款都是 MIT / Apache-2.0 這種寬鬆開源授權,沒有合規風險。
依任務情境對照,我整理成一張表:
| 任務情境 | 推薦工具 | 核心優勢 |
|---|---|---|
| 跨專案 / 多 Repo 微服務調用追蹤 | codebase-memory-mcp | 專屬 Multi-Project 隔離管理、CROSS_HTTP_CALLS 跨專案 API 鏈路追蹤 |
| 日常主線開發 / 跨專案架構分析 | codebase-memory-mcp | 158 語言 AST + Hybrid LSP + 跨專案調用鏈追蹤 + MIT 授權 |
| IDE 即時開發 / 符號追蹤與探索 | CodeGraph | Rust 核心毫秒級即時監聽、Token 消耗極低、斜線命令豐富 |
| PR 審查 / Git Diff 衝擊半徑分析 | code-review-graph | 自動分析變更破壞半徑並產出 Mermaid 圖 |
| 團隊新人 Onboarding / 視覺化架構導覽 | Understand-Anything | 互動式 3D/2D 圖譜面板、開源 MIT 授權 |
| 輕量語義搜尋 / 最小 Context 注入 | semble | Model2Vec 極速語義檢索,免索引、無需 GPU,Token 節省率約 98.1% |
7. 跨專案專題:@/workspace 這種多 Repo 工作區怎麼辦
當工作區底下有好幾個獨立 Git Repo、微服務互相呼叫、或是共用元件庫的時候,七款工具裡只有 codebase-memory-mcp 是原生具備跨專案微服務調用鏈架構的。
其他工具的跨專案支援其實都是「把上層目錄當一個大 Root 掃描」,結果是把整個工作區扁平化成一張大圖,沒辦法區分獨立專案的部署邊界跟 API 跨服務調用關係;code-review-graph 跟 gitnexus 更直接,緊密綁定單一 .git 根目錄,跨多 Repo 直接建不出聯合圖譜。
codebase-memory-mcp 的做法是先幫每個專案建獨立命名空間索引,再用專案管理 API(list_projects、delete_project、index_status)去管理,最後靠 CROSS_HTTP_CALLS 跟 CROSS_ASYNC_CALLS 這兩種跨專案呼叫邊,去追蹤 Service A 發出的 HTTP Request 是被 Service B 的哪個 Controller 接住的。實際操作大概長這樣:
// 步驟 1:依序為多個專案建立獨立命名空間索引
index_repository(path="/workspace/service-order", name="service-order")
index_repository(path="/workspace/service-payment", name="service-payment")
// 步驟 2:檢視所有已掛載的專案列表
list_projects()
// 步驟 3:跨專案追蹤微服務 API 調用路徑
trace_path(from_symbol="service-order:OrderController.Checkout", to_symbol="service-payment:PaymentService.ProcessPayment")
8. 決策路徑跟黃金組合
如果一時想不清楚,可以按這個順序判斷:
[ 主要需求是什麼? ]
├── 跨專案 / 微服務群(例如 @/workspace)────► codebase-memory-mcp(跨專案 API 調用鏈 / 158 語言 / 原生 C)
├── 單一專案日常開發(高頻檔案修改)───────► CodeGraph(Rust 核心 / 即時檔案監聽 / 斜線命令)
├── 審查 PR 變更 / 評估破壞半徑(Git Diff)──► code-review-graph(Mermaid 影響圖 / ~450 Token)
├── 架構文件 + 程式碼雙軌 / 匯出圖資料庫 ───► graphify(Markdown 整合 / GraphML 匯出 / 社群拆分)
├── 團隊新人導覽 / 3D 互動可視化 ─────────► Understand-Anything(React 3D 面板 / 全開源 MIT)
└── 無 GPU / 極致節省 Token(語義搜尋) ────► semble(Model2Vec / 98.1% 節省 / <30ms)
心得
實際落地的話,我自己是拿以下這套組合在用:
- 常駐核心:全域裝
codebase-memory-mcp當主要 MCP 伺服器,負責跨專案、大型 C#/.NET 跟深度符號查詢,再搭CodeGraph負責 IDE 內即時變更監聽跟斜線命令。 - 審查流水線:在 CI 裡整合
code-review-graph,每次 PR 自動產出變更影響報告。 - 架構文檔:定期用
Understand-Anything或graphify匯出架構圖存進 Wiki。
三個一起用,比單靠一套工具打天下更順。
相關資源與 Repository
- 7 大開源程式碼圖譜工具倉庫:
codebase-memory-mcp:DeusData/codebase-memory-mcpCodeGraph:colbymchenry/codegraphcode-review-graph:tirth8205/code-review-graphgitnexus:abhigyanpatwari/GitNexusgraphify:Graphify-Labs/graphifyUnderstand-Anything:Egonex-AI/Understand-Anythingsemble:MinishLab/semble
範例位置
完整代碼與實測數據位置:https://github.com/yaochangyu/survey-codegraph
若有謬誤,煩請告知,新手發帖請多包涵
Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2025 .NET