backend 索引能力 · 真值裁判對決

同一份 backend,分析引擎
勝在度量,閱讀引擎勝在追蹤

兩套都能準確定位符號;勝負在「定位之外」。下列每一處差異都用 grep 對過真值,按四個維度逐項裁決。

codebase-memory-pro
type-aware LSP · Cypher · 複雜度度量
34
/ 40
VS
codegraph
路徑追蹤 · 帶 body 的讀碼 · FTS5
29
/ 40

計分表

4 維度 · 0–10

四個維度是平行類別、非流程,故以對決計分呈現;長條即評分,亮色一方為該維勝者。

符號抽取準確度EXTRACTION
codebase-memory
9
codegraph
8
調用圖完整性CALL GRAPH
codebase-memory
8
codegraph
6
查詢能力QUERY
codebase-memory
9
codegraph
8
索引速度INDEX SPEED
codebase-memory
8
codegraph
7

索引規模

兩邊 status 實測

節點數差異主要來自建模哲學:codegraph 把 import / constant / enum_member 也物化成節點;codebase-memory 走「符號 + 結構 + 語意」分層。同自 repo 根索引,scope 一致。

檔案
~1,9071,598
節點
12,50917,187
30,13635,928
DB / 後端
artifact30.3MB · FTS5
冷啟索引
實測 9s未重測

關鍵證據 · 調用圖

本輪最硬差異

兩個符號的 caller 完整性是這次裁決的決定性證據。每處呼叫點皆 grep 確認其外層函式。

handleUserText 的 callers ✓ 真值 = 2

真實呼叫點:ws-gateway.ts:235(handleConnection)、webrtc-connection.ts:99(巢狀 async function onUserTurn)

外層函式 / 呼叫點cmemcgraph
handleConnection class method
onUserTurn 巢狀 async fn❌ 漏
結果 →codebase-memory 2/2codegraph 1/2

assertWithinQuota 的 callers ✓ 真值 = 5

5 處呼叫程式碼模式完全相同(quotaService.assertWithinQuota(...))— 同一 singleton 實例方法

外層函式 / 呼叫點cmemcgraph
uploadAndAnalyze class method
handleConnection class method
init class method
onUserTurn 巢狀 async fn❌ 漏
start 普通 class method❌ 漏
結果 →codebase-memory 5/5codegraph 3/5

handleUserText body 的 callees ✓ 真值 = 5

runStreamingTurn / handleTurnError / log(同檔)兩邊皆對;介面型別 dispatch 是共同盲點

callee / 真實 targetcmemcgraph
runStreamingTurn · handleTurnError · log✅✅✅✅✅✅
sendJson transport 介面❌ 漏⚠ 誤指 mock
isOpen transport 介面⚠ 誤指前端⚠ 誤指 mock
callees →codegraph 較完整 5 名但兩者介面 dispatch 皆失準

查詢能力帳本

誰能做到

同樣是圖,但能問的問題不同。青色「僅此一家」為對方完全沒有對應能力的項目。

能力codegraphcodebase-memory
兩符號間路徑追蹤⭐ trace:整條 path + 每跳 inline body名稱清單,無 body
複合 context 一次取⭐ context / explore 多符號源碼需分次組合
任意 Cypher 查詢❌ 無⭐ query_graph 僅此一家
複雜度 / 效能指標❌ 節點無此屬性⭐ 跨程序 transitive_loop_depth 僅此一家
語意向量搜尋⭐ semantic_query 僅此一家
co-change 耦合⭐ FILE_CHANGES_WITH 僅此一家
Leiden 架構分群get_architecture⭐ + 社群偵測

共同盲點 · 介面多型 dispatch

兩者對 this.transport.isOpen() 這類介面型別方法呼叫都會把 callee 誤指到 mock / 同名前端實作 — 只是猜錯的對象不同。涉及介面多型的調用邊,任一工具的 callee 結果都需 grep 收尾複核。

怎麼選

依任務分流

不是「誰較好」,而是「這件事用哪個」。兩者互補。

找誰呼叫我 · 影響分析
codebase-memory-pro

caller 完整性全勝(5/5、2/2 對 3/5、1/2)。type-aware LSP 對巢狀函式與 singleton 實例方法的 CALLS 邊全中。

讀流程 · 快速讀懂機制
codegraph

trace 回傳整條路徑並 inline 每跳原始碼,context / explore 一次取多符號源碼,搜尋直接帶型別簽章。讀碼體驗最佳。

程式碼健康 · 效能熱點 · 自訂查詢
codebase-memory-pro

Cypher、跨程序迴圈深度、語意搜尋、co-change 耦合 — codegraph 完全沒有對應能力,只能用它。