這篇延續上一個 CodeGraph 的深度解析數據庫

59431-s247m5gr8fn.png

在上一篇文章CodeGraph 安裝與使用教學:整合 Claude Code、Cursor、Codex 的程式碼圖譜工具中資料如下:

(py3.10) D:\Git\mitagent>codegraph status                                                                                                                                                                                                                                   
CodeGraph Status                                                                                                                                                                                                                                                            
Project: D:\Git\mitagent                                                                                                                                                                                                                                                    
Index Statistics:                                                                                                                                                                                                                                                           
  Files:     25                                                                                                                                                                                                                                                             
  Nodes:     423                                                                                                                                                                                                                                                            
  Edges:     982                                                                                                                                                                                                                                                            
  DB Size:   1.26 MB                                                                                                                                                                                                                                                        
  Backend:   node:sqlite - built-in (full WAL)                                                                                                                                                                                                                              
  Journal:   wal                  

其中,Nodes(423)代表程式碼裡的「實體」

每個 node 是一個可識別的程式碼符號:

Kind 數量 意思
function 127 獨立函式(def foo() / function bar()
import 81 import 語句本身(被視為一個節點)
method 58 類別裡的方法(class.method()
constant 57 常數定義(const X = ... / UPPER_CASE
variable 34 模組層級的變數
file 25 每個原始碼檔案本身
class 23 類別定義
interface 9 TypeScript interface
route 9 HTTP 路由端點(自動偵測到了!)

Edges(982條)= 節點之間的「關係」

邊代表符號之間的連結,例如:

  • A 呼叫 B(call edge)
  • A import 了 B(import edge)
  • A 繼承自 B(extends edge)
  • 檔案 A 包含函式 B(contains edge)

使用 codegraph init 後生成 codegraph.db,在 D:\Git\mitagent\.codegraph\ 目錄,下讀取 sqlite db 如下

67772-d5xpt2n9yfv.png

結構解釋

這個 codegraph.db 裡面分成四類:

資料表(13個)— 核心數據

表名 存什麼
nodes 所有程式碼符號(函式、類別、變數等),就是那 423 個 node
edges 符號之間的關係(呼叫、import、繼承等),就是那 982 條 edge
files 索引的 25 個原始碼檔案(路徑、語言、hash)
nodes_fts 虛擬表,FTS5 全文搜尋引擎,讓 AI 可以模糊查符號名稱
nodes_fts_* FTS5 的內部輔助表(config/data/docsize/idx),不用管
unresolved_refs 解析失敗的參照(例如 import 了找不到的模組)
project_metadata 專案設定(版本、最後更新時間)
schema_versions DB schema 版本管理
sqlite_sequence / sqlite_statl SQLite 內建系統表

索引(18個)— 加速查詢

都是幫核心表建的查詢加速索引,例如:

  • idx_nodes_kind — 快速找所有 function/class/method
  • idx_nodes_lower_name — 大小寫不敏感搜尋符號名
  • idx_edges_source_kind / idx_edges_target_kind — 快速走訪關係圖

觸發器(3個)— 自動同步 FTS

Trigger 時機
nodes_ad 刪除 node 時,自動更新全文搜尋索引
nodes_ai 插入 node 時,自動更新全文搜尋索引
nodes_au 更新 node 時,自動更新全文搜尋索引

無標籤

關注作者:

新增評論