返回目錄

dsh-plugin-codegraph

精選清單收錄維護狀態: 活躍

cc19990113/dsh-plugin-codegraph

结构化代码智能:基于 tree-sitter 索引查找符号、调用者与变更影响,兼容 codegraph CLI

前往 GitHub
$ dsh plugin --profile <name> add dsh-plugin-codegraph

16

星數

5

Fork

TypeScript

語言

MIT

授權條款

2026-08-17

建立於

2026-11-09

最近推送

MIT 授權的 DSH 外掛,用兩個工具把 tree-sitter 符號圖餵給 agent,磁碟格式與 `codegraph` CLI 一致 —— 背景索引、watcher、解析快取、`/codegraph` 命令和設定面板。

DSH 整合

原生執行環境

作者聲明

安全稽核

未稽核

最後核實

2026-11-13

授權條款

MIT

01它能幫你完成什麼?

  • 用符號圖而不是文字搜尋來回答程式碼結構問題

    `codegraph` 的十個唯讀操作 —— `search`、`node`、`callers`、`callees`、`impact`、`trace`、`files`、`status`、`explore`、`context` —— 全部從預先建好的索引作答

    需要 agent 在改程式碼前先知道誰在呼叫、改動會影響哪些地方的 dsh 使用者

  • 不用盯著也讓索引保持最新

    在沒有索引的工作區開工作階段就自動背景建索引,後續改動由 watcher 跟上,重新索引只重新解析變過的檔案(337 檔案工作區從 991 ms 降到 45 ms)

    在大型儲存庫裡工作、不想手動反覆跑索引命令的開發者

  • 不花模型回合就能看到並操作索引狀態

    每次系統提示都帶一行索引概況(檔案數、宣告數、關係數、建置時間),外加 `/codegraph status|index|files` 和帶重建按鈕的設定面板

    想自己檢查或重建圖、而不是去問 agent 的人

02如何將外掛接入 DeepSeek Harness?

先決條件

  • 一個可安裝的 DeepSeek Harness profile —— README 用 `dsh plugin --profile <name> add dsh-plugin-codegraph`
  • 沒有其他相依:儲存與索引器都在行程內執行,不需要額外裝 CLI 或 MCP 伺服器

安裝步驟

  1. 01

    執行 `dsh plugin --profile <name> add dsh-plugin-codegraph` —— 它會取得套件並把 `dsh-plugin-codegraph` 追加進 `dsh.profile.bundles`,不用手改 JSON

    $ dsh plugin --profile <name> add dsh-plugin-codegraph

  2. 02

    在要索引的工作區裡開啟工作階段 —— 還沒有索引時外掛會自動開始背景建置

  3. 03

    需要明確建置時用 `codegraph_index`(或 `/codegraph index`,或設定面板裡的重建按鈕)

驗證整合成功

  • `dsh --profile <name> --dump-default-config` 裡能看到四個外掛歸在 `# == dsh-plugin-codegraph` 標題下 —— 不花 API key
  • `codegraph` 的 `status` 操作會回報索引規模與建置時間;沒有索引時它會直接說明,並指出 `codegraph_index` 是解法

03DSH 整合程度與能力邊界

DSH 整合原生執行環境

原生 DSH 外掛 bundle:一條 `dsh plugin add` 掛上四個套件 —— service 定義、SQLite 儲存、tree-sitter 索引器與面向模型的工具

  • 十個唯讀圖操作

    符號名稱、查詢、任務描述,或 from/to 一對符號→宣告位置、直接呼叫者與被呼叫者、影響範圍、呼叫鏈、已索引檔案、索引狀態、帶原始碼的相關宣告,以及與任務相關的上下文

    每次系統提示都會注入一行索引概況
  • 明確索引與背景任務

    工作區根目錄→建好的圖;工作區檔案數超過 `backgroundIndexThreshold` 時回傳 job id

    大型建置會交給宿主的 job registry,而不是一直佔著一個工具呼叫任何查詢都不會隱式觸發索引
  • watcher 與增量解析快取

    被監看根目錄內的檔案變化→去抖後的重建,重用依 mtime 與 size(或 `cacheVerify: 'hash'` 時的 SHA-256)確認過的單檔解析結果

    範圍內每個目錄都透過 `ctx.fs.watch` 監看,而不是直接用 `node:fs`每次執行都會在全圖上重建邊外掛自己寫 `.codegraph` 不會觸發重建迴圈
  • 十八種內建語言與共用磁碟格式

    TypeScript/TSX、JavaScript/JSX、Python、Go、Java、Kotlin、Dart、C/C++、C#、PHP、Rust、Ruby、Zig、Swift、Scala 原始碼→`<projectRoot>/.codegraph/codegraph.db` 下的 schema v4 圖,`codegraph` CLI 也能讀寫

    語法依需求延遲載入,用不到的語言不佔開銷
  • 給人用的入口與提示詞狀態

    `/codegraph status|index|files <pattern>`,或設定面板→不花模型回合就能看狀態、觸發重建

    面板只透過外掛自己的 API 端點讀 `<root>/.codegraph/status.json`

04適合誰?何時不該用?

適合

  • 需要 agent 在改程式碼前先知道誰在呼叫、改動會影響哪些地方的 dsh 使用者
  • 在大型儲存庫裡工作、不想手動反覆跑索引命令的開發者
  • 想自己檢查或重建圖、而不是去問 agent 的人

不適合

  • 索引永遠不是隱式的:查詢不會觸發建置,所以沒有索引的工作區只有 `status` 能正常回答(並指出 `codegraph_index` 是解法),其他操作都會明確報錯。
  • 預設透過宿主的檔案系統介面開啟監看,但後端不支援監看時會退化成明確索引;WSL2 核心監看 `/mnt/<drive>/...` 這類掛載路徑時預設關閉;`watch: false`、`CODEGRAPH_FORCE_WATCH=1`、`CODEGRAPH_NO_WATCH=1` 可以覆寫。

05相容性、維護與安全提醒

  • 索引永遠不是隱式的:查詢不會觸發建置,所以沒有索引的工作區只有 `status` 能正常回答(並指出 `codegraph_index` 是解法),其他操作都會明確報錯。
  • 預設透過宿主的檔案系統介面開啟監看,但後端不支援監看時會退化成明確索引;WSL2 核心監看 `/mnt/<drive>/...` 這類掛載路徑時預設關閉;`watch: false`、`CODEGRAPH_FORCE_WATCH=1`、`CODEGRAPH_NO_WATCH=1` 可以覆寫。
  • 排除規則只理解 gitignore 語法的一個實用子集 —— 不支援 `**`、字元類別與目錄層級 `.gitignore`;被提交進儲存庫的建置產物靠啟發式跳過(路徑含 `.min.` 段,或平均行長超過 500 字元),不是建置系統整合。
  • `context` 依識別字詞重疊排序,任務裡不提任何符號就排不好;未解析的部分包含無型別解析器本來就解決不了的成員呼叫與已匯入名稱;另外 dsh 本身還在開發者預覽,相容性破壞性變更是預期中的。
2026-08-172026-11-09v0.6.5

MIT · 最新版本 v0.6.5(2026-11-09)· 僅 README 證據,未做安全稽核

06常見問題

在 DeepSeek Harness 裡怎麼裝 dsh-plugin-codegraph?

執行 `dsh plugin --profile <name> add dsh-plugin-codegraph`。這一條命令會取得套件並把它追加進 `dsh.profile.bundles`,不用手改 JSON。想不花 API key 確認四個內建外掛都掛上了,執行 `dsh --profile <name> --dump-default-config`,找 `# == dsh-plugin-codegraph` 標題。

提問之前必須先跑一次索引命令嗎?

新工作階段不必:在沒有索引(或索引超過十分鐘)的工作區開工作階段會自動開始背景建置,之後由 watcher 維護。但索引仍然不會被查詢隱式觸發 —— 沒有索引時 `status` 會直說並指出 `codegraph_index` 是解法,其他操作則明確報錯,而不是假裝工作區是空的。

能用 codegraph CLI 建好的索引嗎?

可以。外掛讀寫的是 `<projectRoot>/.codegraph/codegraph.db` 下的 schema version 4,和 `@colbymchenry/codegraph` 同一路徑同一格式,所以既有的 CLI 索引會直接被接上,你完全可以跳過 `codegraph_index`。CLI 用本索引器不支援的語言建的圖,依然可以完整查詢。

它會往我的工作區裡寫什麼?

在 `<projectRoot>/.codegraph/` 下寫索引:圖資料庫、設定面板讀取的狀態檔,以及 `.codegraph/cache/` 下依檔案存的解析快取。監看預設透過宿主的檔案系統介面開啟,外掛自己寫 `.codegraph` 會被差異比較排除,不會觸發重建迴圈。

它和直接 spawn codegraph CLI 有什麼差別?

沒有第二個執行階段:儲存與索引器都在行程內執行,`PATH` 上不需要任何二進位檔,也不用接 MCP 伺服器。工具面也壓到兩個,而不是給每個 CLI 子命令配一個工具 —— 因為每個工具的定義都會隨每次請求一起進系統提示。

08資料與來源

  • 作者聲明github.comef5261497ba0…

    Gives the agent two tools — `codegraph` and `codegraph_index` — so it can ask **where is this declared**, **who calls it…

  • 作者聲明github.comef5261497ba0…

    This plugin ships both halves: a **store** that serves queries from an on-disk graph, and an **indexer** that builds one…

  • 作者聲明github.comef5261497ba0…

    dsh plugin --profile <name> add dsh-plugin-codegraph

此頁面根據專案公開文件、儲存庫中繼資料與 DSH Plugins 的結構化解析所產生;最後核實於 2026-11-13。發現錯誤?提交更正。

🏆

最佳 DeepSeek Harness 外掛

從全目錄挑出的 12 個值得優先安裝的外掛,涵蓋各個分類。

DSH Plugins 是獨立的 DeepSeek Harness 外掛目錄,與 DeepSeek 官方無關,也不代表官方背書。第三方外掛未經安全稽核,安裝前請審查原始碼。

每週取得最新的 DeepSeek Harness 外掛,絕不濫發。