前言¶
在 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。