前言¶
在基於 DSH 的智能體開發中,理解代碼庫結構、函數調用關係或模塊依賴是常見瓶頸。CodeGraph 插件通過將代碼解析爲可查詢的索引,解決這一問題。
插件定位¶
CodeGraph 是一個代碼知識圖譜插件,索引符號、調用點和導入項到 SQLite 中,並通過 CLI 或 stdio MCP 工具服務器回答調用/依賴問題。
核心功能¶
- 調用圖譜:支持查看調用者與被調用者。
- 依賴圖譜:支持查看模塊依賴與被依賴。
- 全文搜索:支持符號名稱、文檔字符串、簽名的本地全文搜索。
- 影響分析:支持傳遞閉包分析,查看修改某符號會受影響的對象。
- 增量索引:支持基於內容哈希的比較,僅重新解析變更文件。
- 可視化導出:支持導出 Graphviz DOT 或 JSON 格式。
- 查詢緩存:工具服務器對只讀查詢提供 30 秒 TTL 緩存。
- 解析引擎:內置兩個解析引擎,tree-sitter(精確)和 regex 掃描器(零依賴)。
安裝與啓用¶
在 DSH 中安裝插件:
dsh plugin --profile demo add github:JohnXu22786/codegraph
典型用法¶
插件提供 CLI 和 MCP 工具服務器兩種調用方式。
- 構建索引
codegraph index
- 調用關係查詢
codegraph callers services.orders.create_order # 查詢誰調用了該函數
codegraph callees app.run # 查詢該函數調用了誰
- 依賴關係查詢
codegraph deps services.billing # 查詢模塊依賴
codegraph dependents services.billing # 查詢誰依賴該模塊
- 全文搜索
codegraph search 'coupon' # 搜索符號名、文檔字符串等
- 影響分析
codegraph impact services.billing.price # 查詢傳遞調用鏈
- 查看狀態與導出
codegraph status # 查看索引統計
codegraph export dot -o graph.dot # 導出可視化圖譜
- 啓動工具服務器
codegraph serve # 啓動 stdio 工具服務器
注意事項¶
- 環境要求:需要 Python ≥ 3.10。
- 語言支持:支持 Python、JavaScript、TypeScript、Go、Java、Rust。
- 實現方式:採用自包含實現,使用 Python 標準庫 + SQLite,無強制第三方依賴。
- 跨文件解析:跨文件解析依賴啓發式算法,優先按同文件精確匹配、導入路徑、包名、全局唯一名排序。
- DSH 集成:通過 DSH 內置的 MCP 客戶端加載。
- Node 橋接:安裝後,Node 橋接器會將工具暴露爲
codegraph_callers、codegraph_callees等工具名。 - 錯誤處理:只讀工具在沒有索引時會返回錯誤。
結語¶
CodeGraph 提供了一種結構化方式來分析代碼庫。