dsh-codegraph-plugin:將 codegraph 暴露爲 8 個代碼智能工具

前言

DeepSeek Harness (DSH) 允許通過插件擴展能力。在代碼輔助場景中,模型不僅需要文本匹配,更需要結構化的代碼上下文,如符號定義、調用關係和影響範圍。傳統的 grep 搜索往往效率低下且缺乏上下文。dsh-codegraph-plugin 通過將 codegraph CLI 封裝爲工具,爲 DSH 提供了結構化的代碼智能支持。

插件簡介

這是由 errrepe 維護的 DSH profile bundle。它將 codegraph 工具集暴露爲 8 個模型可調用的接口,並保持本地代碼庫索引的同步。插件在會話的當前工作目錄 (CWD) 中執行 codegraph 命令,利用 SQLite WAL 機制在受限工作空間內讀取索引數據。

先決條件

該插件依賴宿主機安裝的 codegraph CLI,並不負責安裝或管理該 CLI。

  1. 安裝 codegraph CLI(通過 cargo):
    cargo install codegraph
  1. 驗證安裝:
    codegraph --version
  1. 確保 codegraph 可執行文件在系統 PATH 中。

安裝

安裝爲指定的 DSH profile 添加 bundle:

dsh plugin --profile web add github:errrepe/dsh-codegraph-plugin

安裝後,需重啓該 profile 的 DSH 進程以使插件生效。

核心功能

插件提供以下 8 個工具接口,根據操作類型返回 JSON 或格式化文本:

  • codegraph_query:按名稱搜索符號(函數、類、方法),支持按類型過濾,返回 JSON。
  • codegraph_callers:查詢調用指定符號的代碼位置,用於重構前的依賴分析,返回 JSON。
  • codegraph_callees:查詢符號調用的目標,返回 JSON。
  • codegraph_impact:分析修改符號可能產生的影響(依賴方及測試覆蓋情況),返回 JSON。
  • codegraph_explore:對開放性問題進行探索,一次性返回相關符號、源碼、調用路徑及影響範圍,返回文本。
  • codegraph_node:讀取符號的完整源碼或指定文件,包含行號及依賴關係,返回文本。
  • codegraph_status:檢查索引狀態,顯示文件、節點、邊的統計信息,返回文本。
  • codegraph_sync:將代碼變更同步到索引,返回文本。

配置

在 DSH 的 Settings > Plugins (Configurables) 中會註冊一個名爲 codegraph 的配置項:

  • enabled(默認 true):控制插件工具的註冊。關閉時工具返回錯誤提示,不會阻塞 DSH 啓動。
  • injectPrompt(默認 true):控制是否在 System Prompt 中注入 codegraph-guidance 指引。該指引位於 Prompt 組合的第 50 位,教導模型優先使用代碼圖而非 grep。

配置持久化在 ~/.dsh/settings.yaml 的 codegraph 命名空間下。

典型用法

  • 首次使用:在搜索前調用 codegraph_status 檢查索引是否存在。若不存在,需在項目根目錄手動運行一次 codegraph init。
  • 開放性問題:優先使用 codegraph_explore,它能在一個調用中返回符號、源碼、調用路徑和影響範圍。
  • 代碼修改後:編輯文件後調用 codegraph_sync,確保後續查詢反映最新代碼。
  • 精確讀取:使用 codegraph_node 讀取特定符號或文件的詳細源碼。

兼容性與降級

插件具備容錯能力:
* DSH 服務缺失:如果宿主機缺少 dsh-settings 等服務,插件會優雅降級(默認開啓且無 bridge),不阻斷 DSH 啓動。
* CLI 缺失或無索引:工具會直接透傳 codegraph CLI 的錯誤信息給模型。
* Headless 場景:在沒有會話 CWD 的環境下(如純腳本調用),工具會返回明確錯誤而非崩潰。

結尾

該插件通過統一接口將靜態分析能力注入 DSH 生態,適合需要深度理解代碼結構和依賴關係的場景。源碼與目錄可參考下方鏈接。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜