dsh-code-intel: Read-only Semantic Navigation with Local LSP

前言

在 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、无云端索引」的团队或个人。

注意:

  1. 六个工具均只读;rename 必须人工审预览后再编辑。
  2. 工作区外路径会被拒绝;默认 root 为 DSH workspace。
  3. 诊断依赖 LSP 的 publishDiagnostics 能力,与 CI 全量测试不等价。
  4. 安装命令以 README 为准;公开 GitHub 安装行注释写明「once the public repo exists」,本地路径示例指向维护者机器上的 tgz,读者应改用已发布的 github 源或自己打包路径。

结尾

dsh-code-intel 用本地语言服务器为 DSH 补上定义、引用、符号、诊断、hover 与 rename 预览,保持只读、无 embedding、无 API Key。进一步了解可访问 SkillHub 目录页 与 GitHub:lengrufeng2008/dsh-code-intel。

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

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

Xiaoye