voidmind26/dsh-lsp-bridge ↗★ 0

dsh-lsp-bridge

连接语言服务器以提供多语言只读代码智能分析 适合需要AI借助LSP进行精准代码定义查询和上下文理解的编程任务

包名
dsh-lsp-bridge
兼容性
待验证
版本
0.2.0
许可证
MIT
最近更新
2026年9月17日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:voidmind26/dsh-lsp-bridge

如果使用 Desktop 自带 CLI 管理 web:

配置与启用

  1. Bundle 默认 servers: [],安装不会下载或启动语言服务器。先安装可信的语言服务器。
  2. 将 examples/cordis.patch.yml 的 id: lsp 配置覆盖合入 $DSH_HOME/profiles/web/cordis.patch.yml 或 $DSH_HOME/profiles/desktop/cordis.patch.yml 的顶层数组。默认 DSH_HOME=~/.dsh。保留其他插件条目;config 是整体替换,不是深合并。
  3. 根据需要填写 servers。GUI 的 PATH 可能与终端不同,必要时使用服务器命令绝对路径。JSON 示例不会自动读取,应把内容放入配置。
  4. 如果以前手动添加过 insert: ... id: lsp,迁移时先移除该旧插入,仅保留 Bundle 提供的挂载及 profile 的配置覆盖,避免重复注册工具。
  5. 在目标工程会话中使用 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在进程环境上覆盖的字符串环境变量;勿提交凭据
languagesLSP languageId 到扩展名数组,如 {"go":[".go"]}
rootMarkers向工作区边界逐级查找最近项目标记;找不到则使用会话根目录
roots显式项目根目录列表,按覆盖文件的最深目录选择
workspaceFolders显式发送给服务器的多根目录;相对路径以会话工作目录解析
initializationOptions原样传给 initialize
settingsdidChangeConfiguration 配置与 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 支持。