[AI Agent] 程式碼知識圖譜(Code Knowledge Graph) 七款工具評測筆記

傳統 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/aspnetcoremicrosoft/dotnet
  • Node.js:22.x(CodeGraphgraphify 的 MCP server 需要)
  • Python:3.12(code-review-graphgraphifysembleuv 安裝)
  • Rust:1.80(CodeGraph 核心編譯依賴)

NOTE:以上是我實測時用的版本組合,非強制,各工具的 README 通常會列最低支援版本。

評測工具的實際裝機版本與 Repository:

主體

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-mcp158 種語言 AST + 10 種語言 Hybrid LSP原生 C tree-sitter + Hybrid LSP原生 C 圖資料庫 + 混合向量索引🥇 最佳,原生 list_projectsCROSS_HTTP_CALLS 跨 Repo API 調用鏈MIT
CodeGraphTS/JS, Python, Rust, Go, Java, C#, C/C++, Ruby, PHPRust 核心 tree-sitter C 綁定 + WASM GrammarsSQLite + Rust 核心記憶體圖✅ 支援 Multi-root WorkspaceMIT
code-review-graphPython, JS/TS, Go, Rust, Java, C#, C/C++ 等tree-sitter + tree-sitter-language-packSQLite (WAL) + JSON 節點快取受限,以單一 Repo 為主,跨目錄要指定多根 workspaceMIT
gitnexusTS/JS, Python, Rust, Go, Java, C#, C/C++, Swift, Kotlintree-sitter WASM / 原生 CKùzu Graph DB + LanceDB 向量庫受限,預設以單一 Repo 邊界建圖PolyForm 非商用
graphifyPython, JS/TS, Rust, Go, Java, C#, Markdowntree-sitter Python 綁定 + LLM 語義 PassJSON 圖檔(graph.json受限,需手動指定共同上層目錄當 Search RootMIT
Understand-AnythingTS/JS, Python, Go, Rust, Java, C#, MarkdownTree-sitter / BabelJSON 知識圖檔(knowledge-graph.json需逐專案分別執行 /understandMIT
semblePython, JS/TS, Go, Rust, Java, C#, C++, Ruby❌ 不用完整 AST,Model2Vec 靜態 Token 切塊Vicinity 向量索引 + orjson 快取✅ 支援任意上層目錄或多 Repo 作 Search RootMIT

表二: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(understandunderstand-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 SizeToken 節省數量 (單次)Token 節省率實測特點
codebase-memory-mcp1.22s304.5ms~420 Tokens約 14,580 ~ 44,580~99.0%原生 C 語言 AST + LSP 混合型別引擎,速度極快,記憶體佔用最低
Understand-Anything1.88s150.0ms~680 Tokens約 14,320 ~ 44,320~98.4%DuckDB + AST 符號提取器,兼具 React 3D/2D 視覺化面板
gitnexus1.06s71.3ms~600 Tokens約 14,400 ~ 44,400~98.6%Kùzu DB + 本地向量庫(⚠️ 注意 PolyForm 非商用限制)
graphify80.6s120.0ms~520 Tokens約 14,480 ~ 44,480~98.8%NetworkX 雙軌圖譜,快速遍歷 556 個 C# 檔案,支援 Markdown 萃取
semble0.0s (即時切塊)22.8s (冷啟動)~850 Tokens約 14,150 ~ 44,150~98.1%Model2Vec 輕量詞向量切塊,無須預編譯索引,無需 GPU
code-review-graph264.6s (4.4分)351.5ms~1,800 Tokens約 13,200 ~ 43,200~96.0%完整遍歷 Tree-sitter AST 並存入 SQLite,專注變更衝擊半徑 (Blast Radius)
CodeGraph1,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-mcpCodeGraph,在延遲跟索引速度上領先其他以 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 沒有 exportserve 這類指令,也沒有網頁介面或 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

codebase-memory-mcp 多專案管理面板

codebase-memory-mcp 內建 Web Server 3D 節點圖譜檢視面板

註冊到 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 常駐監看服務

code-review-graph 內建 Web Server 互動式拓撲面板

實測 visualize --serve 對大型專案(5,900+ 節點)預設會自動切換成「社群聚合」視圖,用色塊代表模組群,滑鼠雙擊可以下鑽到單一節點層級。

安裝時會依平台產出對應的 Skill 而不是單一斜線命令,實測產出的是 build-graphreview-prreview-changesreview-deltadebug-issueexplore-codebaserefactor-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-exploringgitnexus-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 節省率

graphify 社群聚類與程式碼/文件雙軌關聯圖

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 互動面板:

Understand-Anything 互動式 React 流程面板與架構分層導覽

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-searchSubagent~/.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-graphcodebase-memory-mcp --ui=true:9749/understand-dashboard:5173gitnexus serve:4747code-review-graph visualize --serve:8765支援互動節點下鑽、多專案管理,但要保持伺服器程序常駐,沒辦法單檔寄送。
無 HTML / 無 Web (純 CLI + MCP 文字輸出,或只匯出 JSON)CodeGraph semble graphifyCodeGraphsemble 直接回傳精煉符號子圖;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_projectsCROSS_HTTP_CALLS 跨專案微服務調用鏈分析,可以直接掛 @/workspace 這種多 Repo 工作區。
  • 授權條款gitnexusPolyForm Noncommercial,商業環境不能用;其他六款都是 MIT / Apache-2.0 這種寬鬆開源授權,沒有合規風險。

依任務情境對照,我整理成一張表:

任務情境推薦工具核心優勢
跨專案 / 多 Repo 微服務調用追蹤codebase-memory-mcp專屬 Multi-Project 隔離管理、CROSS_HTTP_CALLS 跨專案 API 鏈路追蹤
日常主線開發 / 跨專案架構分析codebase-memory-mcp158 語言 AST + Hybrid LSP + 跨專案調用鏈追蹤 + MIT 授權
IDE 即時開發 / 符號追蹤與探索CodeGraphRust 核心毫秒級即時監聽、Token 消耗極低、斜線命令豐富
PR 審查 / Git Diff 衝擊半徑分析code-review-graph自動分析變更破壞半徑並產出 Mermaid 圖
團隊新人 Onboarding / 視覺化架構導覽Understand-Anything互動式 3D/2D 圖譜面板、開源 MIT 授權
輕量語義搜尋 / 最小 Context 注入sembleModel2Vec 極速語義檢索,免索引、無需 GPU,Token 節省率約 98.1%

7. 跨專案專題:@/workspace 這種多 Repo 工作區怎麼辦

當工作區底下有好幾個獨立 Git Repo、微服務互相呼叫、或是共用元件庫的時候,七款工具裡只有 codebase-memory-mcp 是原生具備跨專案微服務調用鏈架構的。

其他工具的跨專案支援其實都是「把上層目錄當一個大 Root 掃描」,結果是把整個工作區扁平化成一張大圖,沒辦法區分獨立專案的部署邊界跟 API 跨服務調用關係;code-review-graphgitnexus 更直接,緊密綁定單一 .git 根目錄,跨多 Repo 直接建不出聯合圖譜。

codebase-memory-mcp 的做法是先幫每個專案建獨立命名空間索引,再用專案管理 API(list_projectsdelete_projectindex_status)去管理,最後靠 CROSS_HTTP_CALLSCROSS_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)

心得

實際落地的話,我自己是拿以下這套組合在用:

  1. 常駐核心:全域裝 codebase-memory-mcp 當主要 MCP 伺服器,負責跨專案、大型 C#/.NET 跟深度符號查詢,再搭 CodeGraph 負責 IDE 內即時變更監聽跟斜線命令。
  2. 審查流水線:在 CI 裡整合 code-review-graph,每次 PR 自動產出變更影響報告。
  3. 架構文檔:定期用 Understand-Anythinggraphify 匯出架構圖存進 Wiki。

三個一起用,比單靠一套工具打天下更順。


相關資源與 Repository

範例位置

完整代碼與實測數據位置:https://github.com/yaochangyu/survey-codegraph

若有謬誤,煩請告知,新手發帖請多包涵


Microsoft MVP Award 2010~2017 C# 第四季
Microsoft MVP Award 2018~2025 .NET

Image result for microsoft+mvp+logo