前言¶
在 DSH 裏改代碼時,單靠文本搜索很難精確跳到定義、看清引用面,或在改簽名前評估影響。grep 能找字符串,但對符號邊界、類型和編譯器診斷往往力不從心。下面介紹的 dsh-code-intel 把本地 Language Server 接到 Harness:通過六個只讀工具提供定義跳轉、引用查找、符號搜索、診斷、懸停信息與重命名預覽,不建遠程索引、不用 embedding、也不寫回文件。
這是什麼¶
dsh-code-intel 由維護者 lengrufeng2008 發佈,歸類爲 DSH 客戶端插件(社區目錄:SkillHub 插件頁)。定位是:爲 DeepSeek Harness 提供只讀的語義級代碼導航,依賴本機已安裝的語言服務器,經 JSON-RPC over stdio 調用,每次工具調用啓一個短生命週期 LSP 進程,無後臺常駐守護進程。
設計思路受 Serena 啓發(未複製其源碼,見倉庫 NOTICE.md),許可證爲 MIT。當前 package 版本爲 0.1.0,運行環境要求 Node.js >= 20。
核心功能¶
插件向 Agent 暴露六個工具,全部爲只讀;code_rename 僅返回預覽,不會修改磁盤,需用你平時的編輯工具自行應用變更。
| 工具 | 作用 |
|---|---|
code_definition |
跳到符號的真實定義 |
code_references |
查找引用,便於改代碼前評估影響 |
code_symbols |
搜索類、函數、變量等 workspace 符號 |
code_diagnostics |
單文件的編譯器/類型診斷 |
code_hover |
符號處的類型或文檔說明 |
code_rename |
預覽重命名產生的編輯,不寫文件 |
README 明確說明插件不做:寫文件、應用編輯、跨倉庫索引、embedding、遠程服務;診斷結果也不保證與完整測試運行一致;功能集也不宣稱與 Serena 完全對等。
實現上的要點包括:按文件擴展名或顯式 language 選服務器;打開文件前做路徑 containment 檢查(root 默認爲 DSH 工作區,區外文件會被拒絕);位置爲 1-based;診斷走 publishDiagnostics,若服務器只支持 pull diagnostics 則可能無結果;超時與安裝提示替代靜默降級。
安裝與啓用¶
DSH 生態按「一切皆插件」擴展能力;社區目錄在獨立站點 SkillHub,與 DeepSeek / 幻方無官方從屬關係。安裝前建議查看 GitHub 倉庫 源碼與 MIT 許可證。插件以當前 dsh 進程權限運行,安裝語言服務器同樣會執行本機命令,請自行評估環境安全。
官方 README 給出的安裝方式如下(勿省略 --profile web):
# 公開倉庫可用時:
dsh plugin --profile web add github:lengrufeng2008/dsh-code-intel
# 本地包(倉庫尚未發佈時示例):
dsh plugin --profile web add /home/lrf/dsh/products/dsh-code-intel/dsh-code-intel-0.1.0.tgz
僅安裝插件不夠,還需至少安裝一種語言對應的 LSP:
| 語言 | 安裝 |
|---|---|
| TypeScript / JavaScript | npm i -g typescript-language-server typescript@5.9 |
| Python | pip install pyright |
| Go | go install golang.org/x/tools/gopls@latest |
| Rust | rustup component add rust-analyzer |
| C / C++ | 安裝 LLVM 提供的 clangd |
典型用法¶
README 中的提示式用法可概括爲:先用 code_symbols 定位符號(例如 parseSession 定義在哪),改簽名前對同一符號跑 code_references,編輯後用 code_diagnostics 看單文件診斷。
Use code_symbols to find where `parseSession` is defined.
Use code_references on this symbol before changing its signature.
Use code_diagnostics on the file I just edited.
使用 code_symbols 時往往需要項目上下文:TypeScript 需 tsconfig.json 和/或通過 file 讓服務器先打開項目文件,否則可能返回 No Project。維護者在 typescript@5.9.3 與 typescript-language-server@5.3.0 上對小型 .ts 文件做過 definition/references 冒煙;Python 路徑用 pyright-langserver 也做過類似驗證。倉庫內帶 fake LSP,npm test 不依賴本機是否已裝 TS/Pyright/Go/Rust;真實服務器冒煙說明見 docs/SMOKE.md。
開發者自測插件:
npm test
適用場景與注意¶
適合:希望在 DSH Agent 工作流裏用 LSP 做符號級導航、改代碼前查引用、看 hover/診斷、預覽 rename,且接受「本地裝 LSP、無雲端索引」的團隊或個人。
注意:
- 六個工具均只讀;rename 必須人工審預覽後再編輯。
- 工作區外路徑會被拒絕;默認
root爲 DSH workspace。 - 診斷依賴 LSP 的
publishDiagnostics能力,與 CI 全量測試不等價。 - 安裝命令以 README 爲準;公開 GitHub 安裝行註釋寫明「once the public repo exists」,本地路徑示例指向維護者機器上的 tgz,讀者應改用已發佈的 github 源或自己打包路徑。
結尾¶
dsh-code-intel 用本地語言服務器爲 DSH 補上定義、引用、符號、診斷、hover 與 rename 預覽,保持只讀、無 embedding、無 API Key。進一步瞭解可訪問 SkillHub 目錄頁 與 GitHub:lengrufeng2008/dsh-code-intel。