voidmind26/dsh-lsp-bridge ↗★ 0
dsh-lsp-bridge
Bridge DeepSeek Harness to language servers for read-only code intelligence, with multi-language configuration, multi-root workspace support, and session-scoped server reuse. 适合需要AI借助LSP进行精准代码定义查询和上下文理解的编程任务
Install
$
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:voidmind26/dsh-lsp-bridgeREADME
Read the full README ↗如果使用 Desktop 自带 CLI 管理 web:
配置与启用
- Bundle 默认
servers: [],安装不会下载或启动语言服务器。先安装可信的语言服务器。 - 将
examples/cordis.patch.yml的id: lsp配置覆盖合入$DSH_HOME/profiles/web/cordis.patch.yml或$DSH_HOME/profiles/desktop/cordis.patch.yml的顶层数组。默认DSH_HOME=~/.dsh。保留其他插件条目;config是整体替换,不是深合并。 - 根据需要填写
servers。GUI 的 PATH 可能与终端不同,必要时使用服务器命令绝对路径。JSON 示例不会自动读取,应把内容放入配置。 - 如果以前手动添加过
insert: ... id: lsp,迁移时先移除该旧插入,仅保留 Bundle 提供的挂载及 profile 的配置覆盖,避免重复注册工具。 - 在目标工程会话中使用
danger-full-access,先调用lsp的status,再查询真实文件中的定义。卸载时同时移除 profile 中仅属于本插件的覆盖条目,并重启相应宿主。
$DSH_HOME/cordis.patch.yml 可覆盖 profile 层,排查配置时也要检查。仅修改 profile 配置可由宿主 patch 重载处理;源码和 Bundle 安装变更以重启宿主为准。
验证范围: 已有协议、生命周期、Bundle 结构及模拟宿主契约测试;尚未修改运行中的 profile,不能把这些测试视为真实 web/Desktop GUI 安装成功。分发与收录检查见 分发说明。
通用配置
见 examples/generic.config.json(Go、Python、TypeScript/JavaScript)及 examples/uos.config.json(uos 独立 Go module 与前端工程)。支持任何兼容 stdio LSP 的服务器,不代表插件自动下载服务器或配置其语言 SDK。
| 字段 | 说明 |
|---|---|
servers[].id | 唯一服务标识 |
command / args | 可信程序与参数,不通过 shell 执行 |
env | 在进程环境上覆盖的字符串环境变量;勿提交凭据 |
languages | LSP languageId 到扩展名数组,如 {"go":[".go"]} |
rootMarkers | 向工作区边界逐级查找最近项目标记;找不到则使用会话根目录 |
roots | 显式项目根目录列表,按覆盖文件的最深目录选择 |
workspaceFolders | 显式发送给服务器的多根目录;相对路径以会话工作目录解析 |
initializationOptions | 原样传给 initialize |
settings | didChangeConfiguration 配置与 workspace/configuration 查询的数据源 |
timeoutMs | 单次协议请求超时,默认 15000,最高 300000 毫秒 |
maxInstances | 单个引擎最多实例数,默认 8,最高 128 |
idleTimeoutMs | 会话引擎空闲回收时间,默认 300000 毫秒 |
maxSessions | 常驻会话引擎数量上限,默认 4 |
maxFileBytes | 文件读取上限,插件默认 1 MiB,最高 8 MiB |
maxOutputChars | 工具 JSON 输出字符上限,默认 30000,最小 256 |
多目录语义
uos不是单个 Go module。默认配置使用最近go.mod定位各项目,避免从顶层直接启动 gopls 导致找不到 module。roots不会把独立工程合并成一个工程。只有显式配置workspaceFolders才将多个目录传给服务,例如"workspaceFolders": ["qsl-game-server", "unityroomlib"]。- 多根并不自动修复依赖:跨仓定义是否定位到本地共享库仍取决于 go.work / replace、tsconfig project references 等。插件不自动改写这些文件,也不保证每个服务器支持多根。
- 显式 roots 中的目录必须存在;如果仅检出部分 uos 仓库,删去缺失目录或使用通用 rootMarkers 示例。
- 工作区符号只查询选中的一个实例,不自动聚合所有语言和所有项目;明确传入 server + root。
- Vue SFC、Java、C# 等需要对应服务器及其初始化配置。示例中的 TypeScript 服务不等于完整 Vue
.vue支持。