在 DSH 生態中,智能體讀代碼常依賴 grep,但這隻能返回文本,無法體現調用鏈、影響面或架構關係。dsh-code-graph 解決了這個問題。它爲 DSH 插件系統引入了分支感知的代碼知識圖譜能力,讓 Agent 能夠通過圖查詢而非盲目搜索來理解代碼。
是什麼¶
這是一個由 hoyyang 維護的 DSH 插件。它複用本機 codebase-memory-mcp 引擎,提供結構化的代碼索引和查詢能力。它不依賴 MCP 會話,而是通過原生工具分發器與引擎二進制交互。
核心功能¶
- 結構化讀代碼:支持 callers、callees、impact(影響面 BFS)、trace(調用與數據流路徑)、architecture(架構概覽),覆蓋 158+ 語言。
- 分支自動跟隨:檢出任意分支後直接提問,索引圖自動對應當前分支;切回訪問過的分支零重索引。
- 大倉滾動單索引:超過 500MB 的倉庫只保留當前分支一份索引,切分支刪舊建新,磁盤佔用恆爲 1 份。
- 保鮮門控:每次查詢比對 HEAD+髒樹簽名,漂移自動 fast 增量重索引。
- 圖查詢零命中自動回落 ripgrep:圖查詢無結果時自動回退到 ripgrep,結果顯式標註 fallback,絕不冒充圖結果。
- 讀代碼硬門禁:未先調 codegraph 的代碼 grep 會被拒絕並給出引導;門禁自身異常一律放行(fail-open)。
- 跨分支查詢:通過 branch 參數直查已建索引的非檢出分支(凍結態)。
安裝與啓用¶
使用官方安裝命令:
dsh plugin add github:hoyyang/dsh-code-graph
安裝後,插件依賴本機 codebase-memory-mcp 引擎二進制(默認路徑 ~/.local/bin/codebase-memory-mcp)。如果引擎缺失,插件會在調用時報錯點名,但不會影響 DSH 啓動。
典型用法¶
- 查看索引狀態:
/codegraph
- 新建索引:
/codegraph <倉庫絕對路徑> fast
- Agent 側查詢:
codegraph { "op": "callers", "repo_path": "<repo>", "name": "handleRequest" }
- 切分支後直接提問:索引自動跟隨。
適用場景與注意¶
該插件適合需要深度理解代碼調用關係、架構影響面或跨分支代碼檢索的場景。安裝前請確認本地已配置 codebase-memory-mcp 引擎。
注意:
- 不會修改倉庫文件:不裝 git hooks、不寫 .gitignore、不啓動常駐監聽。
- 卸載命令:
dsh plugin --profile web remove dsh-code-graph
此命令會自動清理工具、命令、提示 section/skill 文件和狀態文件,但不會觸碰圖數據庫與用戶倉庫。
- 生態背景:DSH 理念是「一切皆插件」;社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。
結尾¶
dsh-code-graph 通過原生工具分發與保鮮門控機制,爲 DSH 提供了高效的代碼知識圖譜能力。如需瞭解完整文檔,請訪問 GitHub 或 SkillHub 目錄。