DeepSeek Harness 的 LSP 操作面:基于语言服务器提供诊断、格式化、补全、代码操作、符号、签名帮助、内联提示和重命名工具
48.3/100
综合分
34
GitHub 星标
2,042
npm 周下载
—/5
用户评分
数据截至 2026/10/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-lsp-actionsnpm 源 · dsh-lsp-actions 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · security
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 6 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-lsp-actions @ 0.5.17
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/30 02:40:02
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
发起外部网络请求
查看扫描证据(共 3 处,展示前 3 条)
- 发起网络请求lib/client.js:454
const result = await this.connection.request('initialize', { - 发起网络请求lib/client.js:775
const send = this.connection.request(method, params); - 发起网络请求lib/client.js:922
await abortable(this.connection.request('shutdown', null), budget);
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-attachment@deepseek-ai/cordis@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-fs@deepseek-ai/dsh-llm@deepseek-ai/dsh-lsp@deepseek-ai/dsh-sandbox@deepseek-ai/dsh-sandbox-policy@deepseek-ai/dsh-subprocess@deepseek-ai/dsh-timeout@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
3 张 · 点击查看大图功能亮点
- 提供代码诊断
- 代码格式化
- 代码补全
最近更新
在 GitHub 查看全部 →v0.5.172026-10-23
· [0.5.17] - 2026-10-23
· 修复
· 拆解不再会卡在无法观测的进程树上永远不返回,重试失败后也不再丢掉最后一个引用(issue #13 后续)。tearDown() 现在用 killGraceMs + shutdownTimeoutMs 给 connection.closed 和 waitForProcessTreeExit() 都设了上限;超时就算拆解失败,由回收队列保留,而不是留下一个永远挂起的 fiber。三次回收都失败的实例会进入 failedReaps 集合,由 disposeAll() 重试;runOnce() 借用实例前会先清掉上一个动作的空闲计时器(这样它不会在动作进行中触发);服务商丢弃管道协议流时,LspConnection 会终止已经启动的句柄。失败日志现在会说明进程树可能仍然存活。
这是插件侧的防御和可观测性改进,并不代表 Windows 孤儿进程的根因已经修复:服务商的 job-owner SIGKILL 升级属于另一项宿主侧修复(见 issue 讨论)。
v0.5.162026-10-22
· [0.5.16] - 2026-10-22
· 修复
· 拆除失败不再被吞掉或永久缓存(issue #13)。runOnce 调用 await instance.dispose().catch(() => {}),随后无条件删掉 map 条目和空闲计时器,于是拆除被拒后进程树既没引用也没计时器;空闲计时器那条路径也一样。现在被淘汰的实例走一条可追踪的回收队列,拆除最多重试三次,实例在落定前一直保留引用,最终失败通过宿主日志上报,不再吞掉。LspActionInstance.startTeardown() 也会清掉被拒的拆除 promise,重试时重新执行拆除,而不是返回同一个永久拒绝;disposeAll() 会排空待处理的回收并汇总它们的失败。
这是生命周期与可观测性加固。它本身并不声称已找到 Windows 孤儿进程树的根因:服务商的 terminate() 能否触达孙进程,仍在与报告者确认中。
v0.5.152026-10-18
· [0.5.15] - 2026-10-18
· 变更
· 新增 1280×720 主图和 960×540、4 秒的终端 GIF,均由测试运行渲染;screenshots.json 改为对象数组,capture.json 记录命令。
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成🛰️ dsh-lsp-actions
- 1024 store channel:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-lsp-actions(计入 deepseek1024.com 安装排行)。
dshfind
DeepSeek Harness 的 LSP 操作接口 —— 真实语言服务器、真实反馈,也是编辑器接入 IDE 能力的后端。
为你的智能体编辑循环提供诊断、格式化、补全、代码操作、符号、签名帮助、内联提示和重命名 —— 外加一套稳定的编辑器操作协议(lsp.actions.),任何编辑器都能直接消费。*
dsh-doctor
DSH Market
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-lsp-actions
📖 生态知识库 —— 实测数据,不是营销话术:插件开发指南 · 插件选型数据 · 维护标准。
展开完整文档(README 剩余 1 节)
🛰️ dsh-lsp-actions
- 1024 store channel:先执行一次 npm i -g dsh1024,再执行 dsh1024 plugin --profile web add dsh-lsp-actions(计入 deepseek1024.com 安装排行)。
dshfind
DeepSeek Harness 的 LSP 操作接口 —— 真实语言服务器、真实反馈,也是编辑器接入 IDE 能力的后端。
为你的智能体编辑循环提供诊断、格式化、补全、代码操作、符号、签名帮助、内联提示和重命名 —— 外加一套稳定的编辑器操作协议(lsp.actions.),任何编辑器都能直接消费。*
dsh-doctor
DSH Market
English · 简体中文 · Español · Português · हिन्दी
dsh plugin --profile <name> add dsh-lsp-actions
📖 生态知识库 —— 实测数据,不是营销话术:插件开发指南 · 插件选型数据 · 维护标准。
安装与卸载
- git 渠道(最新 main):dsh plugin --profile web add github:PerryLink/dsh-lsp-actions —— prepare 脚本负责构建(tsc --noEmitOnError && node scripts/fix-dts.mjs)。
- npm 渠道(已发布版本):dsh plugin --profile web add dsh-lsp-actions。
- tarball 渠道:在本仓库执行 pnpm pack,然后执行 dsh plugin --profile web add ./dsh-lsp-actions-<version>.tgz。
- 卸载:dsh plugin --profile web remove dsh-lsp-actions(或从配置档补丁里删掉对应行)。
⭐ 如果它帮到了你
这个插件是 DSH 插件家族的一员(95 个,全部 Apache-2.0)。如果你在用,给个 star —— 它不会解锁任何功能,但会让下一个人在搜索里更容易找到它。
English: part of a 95 plugin family for DeepSeek Harness. If it is useful, a star helps the next person find it — nothing is gated behind it.
dsh-lsp-actions 是什么?
DeepSeek Harness 的 LSP 操作面 —— 真实语言服务器、真实反馈,也是编辑器的 IDE 集成后端。
为智能体的编辑器循环提供诊断、格式化、补全、代码操作、符号、签名帮助、内联提示和重命名 —— 外加稳定的编辑器操作协议(lsp.actions.),任何编辑器都能直接消费这些能力。
dsh-lsp-actions 的工作流示意图:调用 → 插件 → 结果。
工作流概览:调用 → 插件 → 结果。下面的示例用的都是真实命令面。*
兼容性
| 面 | 状态 |
| Harness | DeepSeek Harness dsh-v0.2.1-alpha.1(声明兼容 >=0.1.2-rc.1 <0.2.0 \|\| >=0.1.5-alpha.1 <0.2.0 \|\| >=0.1.6-0 <0.2.0 \|\| >=0.1.7-0 <0.2.0);插件自身不写会话事件 —— 宿主记录标准的 tool/call + tool/result 事件。已发布的接缝仍只带四个旧操作,所以插件保留自己的客户端,并在首次操作调用时记录该版本。验证于 2026-09-24(双类型检查标尺 + 完整测试套件 + 自包含/产物门禁)。 |
| Node | ^22.19.0 \|\| >=24.0.0 |
| 平台 | 全部(纯宿主;子进程 + 文件系统,不走网络) |
| 模型 | 任意(工具与模型无关;插件从不调用模型) |
你能得到什么
dsh-lsp-actions 以单行宿主形式挂载(id: lsp-actions,name: dsh-lsp-actions,inject: [tools, fs, subprocess])。官方 DeepSeek Harness 的 ctx.lsp 接缝覆盖导航(跳转定义、引用、实现、悬停);这个插件补全操作面 —— 智能体写代码、修代码时需要的反馈回路:
1. 八个 lsp_ 工具 —— 诊断、格式化、补全、代码操作、符号、签名帮助、内联提示和重命名,全部由你 IDE 用的同一批语言服务器提供。
2. 编辑器操作协议 v1 —— 稳定的 JSON-RPC 面(lsp.actions.list / lsp.actions.run / lsp.events),任何编辑器(首选 VS Code)都能直接消费这些能力。
3. 真实服务器验证 —— 测试套件里包含一次真实的 typescript-language-server 运行(自包含,CI 跑 Node 22/24,覆盖 Linux、Windows 和 macOS),不只是 mock。
快速开始
dsh plugin --profile web add github:PerryLink/dsh-lsp-actions
1. install the bundle into your profile
dsh plugin --profile web add github:PerryLink/dsh-lsp-actions
或从 npm 安装(已发布版本)
dsh plugin --profile web add dsh-lsp-actions
2. 重启并验证配置行
dsh --profile web --dump-config | grep -A3 'id: lsp-actions'
示例
下面是插件的真实入口;安装一次,之后调用其中一个即可。
详细示例
命令
~~~sh
lsp_diagnostics
输入
~~~json
{
"file_path": "a.ts"
}
输出
~~~text
a.ts:1:3 [Error] boom [ts 2304]
a.ts:3:1 [Hint] hint
取自 plugins/dsh-lsp-actions/tests/render.spec.ts:32-37 (exact toBe); tool-level no-result render at plugins/dsh-lsp-actions/tests/tools.spec.ts:150-156*
失败分支
输入
~~~text
{"action":"format","requestId":"f1","params":{"filePath":"a.ts","workspaceRoot":"<session-workspace>"}} under a read-only permission preset
输出
~~~text
{
"requestId": "f1",
"action": "format",
"status": "failed",
"error": {
"code": "LSP_ACTION_READ_ONLY",
"message": "[sandbox: file access denied under read-only mode]\n[sandbox: escalation available — retry this exact operation once with sandbox_permissions (the narrowest wider mode that suffices) + justification; the approval prompt asks the user]" } }
取自 plugins/dsh-lsp-actions/src/tools.ts:213-223; plugins/dsh-lsp-actions/src/editor/actions.ts:320-330; plugins/dsh-lsp-actions/tests/editor-protocol.spec.ts:305-325
简要示例
- lsp_format
- lsp_completion
配置
所有可调项都是 Schemastery Config 字段(可在 cordis.yml 中修改)。按 id 定向覆盖会替换整行配置——你需要用到的每个键都要重新写一遍。cordis.patch.yml 在每个键旁都有行内说明。
| 键 | 默认值 | 含义 |
| servers | {} | 具名语言服务器;空表不激活任何服务器 |
| editor.enabled | false | 通过 JSON-RPC stdio 提供编辑器操作协议(仅无头后端) |
| editor.requestTimeoutMs | 60000 | 编辑器协议每次运行的超时预算(ms) |
| editor.diagnosticsCacheMaxFiles | 64 | 诊断缓存的有界 LRU 大小(文件数) |
| maxDiagnostics | 200 | 每个结果的诊断上限 |
| maxCompletionItems | 20 | 每个结果的补全项上限 |
| maxCodeActions | 50 | 每个结果的代码操作上限 |
| maxSymbols | 100 | 符号结果上限 |
| maxSignatures | 10 | 签名帮助上限 |
| maxInlayHints | 200 | 内联提示上限 |
| maxResultChars | 16000 | 渲染结果上限(字符) |
| maxDocumentBytes | 4000000 | 文档读取上限(字节) |
| timeoutMs | 60000 | 每次调用超时,由官方超时策略强制执行 |
servers 里每一项都是 LspServerEntry:command(加载时在 PATH 上解析的可执行文件)和 extensionToLanguage(".ts" → typescript)必填;可选字段 fileGlobs、projectMarkers、args、env、initializationOptions、configuration、formattingOptions、maxMessageBytes、maxStderrBytes、killGraceMs、shutdownTimeoutMs、diagnosticsSettleMs、diagnosticsDebounceMs、idleTimeoutMs(0 = 保持服务进程存活)用于调整内置 stdio 客户端。
路由是确定性的,由配置驱动。每个文件按以下顺序取第一个匹配项:(1) 某个服务条目的 fileGlobs 匹配该路径;(2) 从文件所在目录向上走到工作区根目录,找到最近的祖先目录,该目录含有某个条目的 projectMarkers 中列出的项目配置文件,且该条目同时映射了文件的扩展名;(3) 按配置顺序,取 extensionToLanguage 映射了该文件扩展名的条目。假设工作区里有 apps/node-app/{package.json,tsconfig.json,src/main.ts} 和 apps/deno-app/{deno.json,src/main.ts},那么每个 main.ts 都由各自项目的服务处理,无需维护路径规则,新增、重命名或移动项目时也不用改动:
servers:
typescript:
command: typescript-language-server
args: ["--stdio"]
extensionToLanguage: { ".ts": typescript, ".tsx": typescriptreact }
projectMarkers: ["package.json", "tsconfig.json"]
deno:
command: deno
args: ["lsp"]
extensionToLanguage: { ".ts": typescript, ".tsx": typescriptreact }
projectMarkers: ["deno.json", "deno.jsonc"]
项目标记只在已经映射了文件扩展名的服务之间做选择(它绝不会扩大条目的文件类型范围);向上查找不会越过工作区根目录,某个目录里的项目配置也绝不会作用于同级目录。步骤 (1) 的优先级高于项目标记:fileGlobs 匹配路径的条目仍然胜出,所以采用 projectMarkers 时要删掉项目级 glob——残留的 */.ts glob 会一直抢占这些文件。这些规则只约束内置 stdio 客户端——挂载的 ctx.lsp 接缝服务商自行决定路由。
工具与界面
| 界面 | 类型 | 说明 |
| lsp_diagnostics | 工具 | <file> —— 编译器/分析器报出的错误、警告和提示,含严重级别、范围、消息和来源服务(只读) |
| lsp_format | 工具 | <file> [range?] —— 通过语言服务格式化文件或选区并应用,返回 diff(经 fs/write-intent 写入) |
| lsp_completion | 工具 | <file> <line> <character> —— 光标位置的补全建议,含插入文本(只读) |
| lsp_code_action | 工具 | <file> [range?] [only?] —— 服务端验证过的快速修复/重构及其编辑,作用于选区或首个诊断(仅引用) |
| lsp_symbols | 工具 | <query?> <file_path?> —— 按名称全工作区搜索符号,或查看单个文件的大纲(只读) |
| lsp_signature | 工具 | <file> <line> <character> — 调用内部的签名帮助(参数与文档),只读 |
| lsp_inlay_hints | 工具 | <file> [range?] — 服务端给出的类型标注与参数名提示,只读 |
| lsp_rename | 工具 | <file> <line> <character> <new_name> — 服务端校验过的重命名,按工作区整体应用,逐文件给出差异(通过 fs/write-intent 写入) |
| lsp.actions. | 协议 | 编辑器动作协议 v1:lsp.actions.list / lsp.actions.run / lsp.events,走 JSON-RPC |
| examples/vscode/ | 扩展 | 纯 UI 的 VS Code 扩展,以及它连接的无头后端组合 |
编辑器动作协议 v1
在专用的无头组合里设置 editor.enabled: true 后,dsh-lsp-actions 会通过换行分隔的 JSON-RPC 2.0 提供一套稳定的编辑器协议(与官方 SDK/ACP 传输使用相同的线路分帧):
| 方法 | 作用 |
| lsp.actions.list | 返回 lsp-actions/v1 协议版本、动作目录(diagnostics.get、completion.get、quickfix.apply、format,每个都带 writes 标记),以及可寻址的 DSH 会话 |
| lsp.actions.run | 执行一个动作,返回结构化信封 { requestId, action, status, result \| error };错误带稳定的 LSP_ACTION_ 错误码 |
| lsp.events | 订阅流式 lsp.event 通知:diagnostics.updated、action.status、file.changed、sessions.changed |
所有写动作(quickfix.apply、format)都走官方权限预设与审批:read-only 会话在发起任何服务端往返之前就被拒绝,返回 LSP_ACTION_READ_ONLY;编辑走 fs/write-intent 瀑布流;sandbox_permissions + justification 升级对通过官方 approveEscalation 询问来裁决(没有应答方能决定时按失败关闭处理)。完整线路规范,双语版:docs/editor-protocol.md · docs/editor-protocol.zh-CN.md。
版本管理与向后兼容承诺
- 协议带版本——lsp.actions.list 返回 protocol: "lsp-actions/v1"、version: 1。v1 已冻结: 字段名、动作 id、事件类型、错误码永久稳定。
- 演进只做加法:新增动作、字段、事件类型不升版本号;现有语义绝不原地改动;破坏性变更放在新的 protocol 版本下发布,服务端可以同时提供多个版本。
- 客户端必须忽略未知字段、未知事件类型、未知动作,并按稳定的错误 code 路由,绝不依赖消息文本。
错误码
每个失败都带稳定的 code;模型和调用方按 code 路由,绝不依赖消息文本。
| 错误码 | 含义 |
| LSP_ACTION_UNAVAILABLE | 没有服务端条目,也没有接缝服务商处理这个文件 |
| LSP_ACTION_UNSUPPORTED | 服务端(或接缝服务商)未声明支持该操作 |
| LSP_ACTION_SERVER_FAILED | 服务器出错(附带 stderr 尾部);启动失败会重试一次 |
| LSP_ACTION_MALFORMED_RESPONSE | 服务器发来的负载结构不合法 |
| LSP_ACTION_CONFLICT | 文件自读取后已变更,或编辑区间重叠 / 越界 / 超出工作区 |
| LSP_ACTION_READ_ONLY | 会话的沙箱模式禁止格式化 / 重命名写入 |
| LSP_ACTION_WORKSPACE_REQUIRED | 发起调用的会话没有工作区 cwd,无法为服务器指定根目录 |
| LSP_ACTION_NO_SYMBOL | 服务器在光标位置没找到可重命名的符号 |
| LSP_ACTION_UNKNOWN | 编辑器协议:未知的 action id,或没有代码操作匹配 title/index |
| LSP_ACTION_INVALID_ARGS | 编辑器协议:action 参数格式错误 |
| LSP_ACTION_APPROVAL_UNAVAILABLE | 编辑器协议:审批路径无法授予更宽的沙箱模式(fail-closed) |
| LSP_PROTOCOL_VERSION_UNSUPPORTED | 编辑器协议:声明的协议版本不受支持 |
VS Code 扩展
examples/vscode/ 提供一个纯 UI 扩展(侧边栏展示 DSH 会话、诊断列表、一键应用 quickfix、按区间打开、格式化),外加它通过 ACP 风格 JSON-RPC 连接的无头后端组合(backend/cordis.yml)。扩展本身不含任何 LSP 逻辑——每一项能力、每一个写入的字节都归插件所有。安装步骤、设置项、demo-gif 录制脚本见 examples/vscode/README.md。
权限与数据
- 权限:格式化和重命名沿用官方权限预设与审批——fs/write-intent 瀑布流,以及经 ctx.approval 解析的 sandbox_permissions / justification 升级对。插件在 workshop manifest 中声明 fs:read、fs:write、subprocess:spawn 和 network:none。
- 数据:不向磁盘存储任何内容;工具结果只存在于会话日志(不跨会话持久化)。编辑器协议维护一份有界的内存 LRU 诊断缓存,带新鲜度时间戳,重启后不保留。
- 无网络:插件不发起网络请求;它通过本地子进程 stdio 与语言服务器通信。
安全边界
- 默认只读。 八个工具中有六个只做引用;只有 lsp_format 和 lsp_rename 会改动,且以真正的 write/edit 变更形式执行。
- 走官方接缝,不重复实现。 每个字节都经过 fs/write-intent 瀑布流(观察 → 受保护写入 → 观察)和逐调用沙箱策略;升级行为与官方 write/edit 工具一致。
- 失败要响、要快、要结构化。 servers 为空且没有 ctx.lsp 接缝 → LSP_ACTION_UNAVAILABLE;只读会话 → 在任何服务器往返之前就返回 LSP_ACTION_READ_ONLY;命令形式只上报,绝不执行。
- 冲突绝不覆盖。 文件读取后磁盘上又发生改动,操作会以 LSP_ACTION_CONFLICT 失败;lsp_rename 在第一次写入前会先预检每个被改动的文件。
- 工作量有界。 结果上限、字节上限和平台超时策略约束每次调用;诊断缓存是有界 LRU。
- 模型路径上不缓存任何东西。 工具结果只存在会话日志里;诊断缓存从不跨重启保留。
- 坏服务器会大声失败。 可执行文件缺失在加载时就失败;服务器启动即死,调用会以 LSP_ACTION_SERVER_FAILED 失败,并附上它的 stderr 尾部(先做一次全新启动重试)。
- 提示词卫生。 插件不向会话系统提示词注入任何人设或提示词文本——它面向模型的表面就是八个工具 schema。
架构
动作先走官方接缝优先,再回退到插件自带的极简 stdio 客户端:
lsp_diagnostics / lsp_format / lsp_completion / lsp_code_action /
lsp_symbols / lsp_signature / lsp_inlay_hints / lsp_rename
│
▼
ctx.lsp seam (extended: diagnostics / formatDocument / completion)
│ absent · legacy · no provider for this file ▼ built-in stdio client ← servers table (ctx.subprocess.spawn + JSON-RPC)
接缝扩展已向上游提出(upstream/lsp-action-seam.patch,PR 说明见 upstream/PR-description.md)。它一旦落地,插件无需改动即可继续工作——内置客户端只是不再被使用。内置客户端保留为 servers 表的独立回退。编辑器协议走同一个 runner、同一条写入路径、同一套权限机制。完整研究与设计笔记:docs/seam-extension-notes.md。
动作后端位于公开的服务商接口之后——ActionRunner(从包中导出)——由内置 runner 实现,也对第三方服务商开放:八个工具只消费该接口,从不接触具体客户端。
已知限制
- 常驻文档。 每个文档只打开一次,并在服务器实例生命周期内保持打开——后续请求若源码有变,会发送一次全文档 didChange,进程关闭时关闭所有文档——因此 tsls 这类基于项目的服务器会提供 textDocument/signatureHelp 和不依赖文档的 workspace/symbol,而不是在刚关闭的文档上返回 null。常驻集合受工作区约束,并随实例清除(空闲驱逐或插件释放)。
- 范围格式化需要服务器的范围服务商。 只声明整文档格式化的服务器,范围请求会以 LSP_ACTION_UNSUPPORTED 失败。
- 重命名只应用文本编辑。 服务器重命名应答中的资源操作(创建/删除/重命名文件)会以 LSP_ACTION_UNSUPPORTED 拒绝,工作区之外的编辑会在写入任何内容前以 LSP_ACTION_CONFLICT 失败。
开发
pnpm install # node ^22.19 || >=24
pnpm run lint # oxlint over src/ and tests/
pnpm test # vitest: unit + fixture-server integration + editor-protocol e2e + real tsls e2e
pnpm run test:coverage # coverage gate
pnpm build # tsc --noEmitOnError && node scripts/fix-dts.mjs → lib/
pnpm run prepare # tsc --noEmitOnError && node scripts/fix-dts.mjs (runs on install)
pnpm run prepublishOnly # tsc --noEmitOnError && node scripts/fix-dts.mjs (runs before publish)
与其他 DSH 插件的互操作性
已针对 DSH 0.2.0-rc.2(本 README 随附的运行时)验证,并对照 2026-10-05 调研的高星插件集验证。
本插件不会干扰其他插件,包括广泛安装的高星插件:
- 无工具名冲突。 每个工具都带命名空间;不注册任何已发布工具或其他插件占用的裸名。
- 无服务键冲突。 它完全不提供服务键,因此不可能在服务键上冲突。
- 无槽位冲突。 它不注册客户端槽位键,因此不会争抢 shadows-shipped-ui 席位。
- 无 HTTP 路由冲突。 它不注册 webServer 前缀。
- 无补丁层冲突。 包补丁只 insert 自己那一行;从不覆盖内置行的 config。
- 无全局改动。 它不改原型、不改写 process.env、不替换全局 fetch 调度器。
共享事件监听器在设计上互不干扰。 它用 ctx.on() 观察对顺序敏感的事件 fs/write-intent —— 这是 Cordis 的广播注册,每个监听器都会执行,谁也无法饿死别人。这里的每个监听器都通过 next() 委托,所以调用链永远不会被短路;改动施加在 next() 产出的值上,而不是顶替它返回:
静态证据:dsh-plugin-doctor 的 K10–K13 对本仓库的每项检查都报告 pass。
主题
dsh, dsh-plugin, deepseek-harness, lsp, language-server, diagnostics, formatting, completion, code-action, symbols, signature-help, inlay-hints, rename, refactor, ide, editor, vscode, acp, json-rpc
贡献者
- @PerryLink —— 创建者兼维护者:LSP 动作客户端与服务器生命周期、全部八个工具、编辑器动作协议、测试、CI,以及五种语言的文档。
PerryLink DSH 插件家族
本项目属于 PerryLink 的 DeepSeek Harness 插件家族。下方名册默认折叠,让每个 README 的首屏都保持简短;展开即可看到每一行及其状态。
展开全部插件
| 插件 | 状态 |
| dsh-aqua-input-check | |
| dsh-archive-check | |
| dsh-auto-review | |
| dsh-autotier | |
| dsh-bid-ca-precheck | |
| dsh-bid-qual-check | |
| dsh-cert-mcp | |
| dsh-checkpoint-rewind | |
| dsh-click | |
| dsh-composer-history | |
| dsh-contract-stance | |
| dsh-customs-doc-check | |
| dsh-data-quality | |
| dsh-demurrage-ledger | |
| dsh-doublecheck | |
| dsh-drill-script-check | |
| dsh-eia-guide-check | |
| dsh-emergency-plan | |
| dsh-essay-rubric-check | |
| dsh-evidence-check | |
| dsh-export-ctl-check | |
| dsh-fast | |
| dsh-fmea-table-check | |
| dsh-forecast-penalty | |
| dsh-fund-research | |
| dsh-github | |
| dsh-gongwen-flow-check | |
| dsh-gongwen-word-check | |
| dsh-guard-plan-qc | |
| dsh-hazchem-check | |
| dsh-hazplan-check | |
| dsh-hidden-risk-map | |
| dsh-hs-classify | |
| dsh-icd-rule-check | |
| dsh-industry-research | |
| dsh-lawcite-adapter | |
| dsh-laya | |
| dsh-lc-doc-check | |
| dsh-learning-gap-check | |
| dsh-library | |
| dsh-local-ai | |
| dsh-lsp-actions | |
| dsh-mask | |
| dsh-mcp-panel | |
| dsh-medrec-qc | |
| dsh-memento | |
| dsh-nsfc-form-check | |
| dsh-nurse-record-check | |
| dsh-observe | |
| dsh-origin-rvc-check | |
| dsh-ota-review-check | |
| dsh-output-styles | |
| dsh-paper-doc-adapter | |
| dsh-permission-rules | |
| dsh-permit-report-check | |
| dsh-pipeline-check | |
| dsh-pleading-draft | |
| dsh-plugin-doctor | |
| dsh-plugin-guide | |
| dsh-plugin-kit | |
| dsh-plugin-upgrade | |
| dsh-policy-brief-draft | |
| dsh-power-loss-split | |
| dsh-power-ticket-check | |
| dsh-ppap-check | |
| dsh-protest-deadline | |
| dsh-railway-window | |
| dsh-repair-order-qc | |
| dsh-research-report | |
| dsh-review-reply-check | |
| dsh-rulefile-check | |
| dsh-safety-brief-check | |
| dsh-score | |
| dsh-session-sync | |
| dsh-site-log-check | |
| dsh-skill-pack-security | |
| dsh-soe-decision-check | |
| dsh-soilwater-check | |
| dsh-sop-sync-check | |
| dsh-spc-gbt-adapter | |
| dsh-talk | |
| dsh-tender-extract | |
| dsh-tender-matrix | |
| dsh-test-drive | |
| dsh-ticktick | |
| dsh-translate | |
| dsh-warranty-calc | |
| dsh-budget | 🧊 FROZEN — see the repo README |
| dsh-claude-move | 🧊 FROZEN — see the repo README |
| dsh-defend | 🧊 FROZEN — see the repo README |
| dsh-draw | 🧊 FROZEN — see the repo README |
| dsh-reach | 🧊 FROZEN — see the repo README |
| dsh-background-agents | 🚫 RETIRED — see the repo README |
| dsh-session-pin | 🚫 RETIRED — see the repo README |
| dsh-team-rooms | 🚫 RETIRED — see the repo README |
License
Apache License 2.0 © 2026 dsh-lsp-actions contributors预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
PerryLink/dsh-lsp-actions
DeepSeek Harness 的 LSP 操作面:基于语言服务器提供诊断、格式化、补全、代码操作、符号、签名帮助、内联提示和重命名工具
相关插件 · 安全 / 权限
智能体逆向工程morluto/rea
用智能体逆向工程任何东西,从应用行为到原生二进制。
★ 422,036已汉化DSH
73.3
智能体集群框架ruvnet/ruflo
面向 Claude Code 与 Codex 的智能体元基座meta-harness。
★ 80,619已汉化MCP
71.8
WorkBuddy 模型接入corrinehu/dsh-workbuddy-connect
2026 年 10 月 20 日起,WorkBuddy…
★ 1,604已汉化DSH
71.7
破甲一键通z91772524-ai/pojia-next
十五个 AI…
★ 1,004已汉化DSH
71.6
Agent 操作层agentic-os-org/ANOLISA
ANOLISA(Agentic Nexus Operating Layer & Interface System Architecture)|智能体操作系统,带运行时、安全、可观测性,以及 Tokenless 响应压缩,降低 token 用量与成本。
★ 653已汉化DSH
70.7
AI 代理虚拟终端strukto-ai/mirage
Mirage 是给 AI 智能体用的虚拟终端:一层 shell,统管数据、命令行和运行时。Unix…
★ 3,762已汉化DSH
70.7