🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

语言服务工具 satanfire/dsh-lsp

DeepSeek Harness
satanfire4 天前有提交已提供中文文档扫描:未发现敏感能力

零配置接入语言服务器,为模型提供诊断、跳转与重构能力

29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add satanfire/dsh-lsp
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么
dsh 原生插件 · tool
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 4 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🟢 扫描:未发现敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。

发起外部网络请求
查看扫描证据(共 9 处,展示前 9 条)
  • 发起网络请求
    lib/runner.js:428
    return await withTimeout(connection.request(method, params, signal), budget, this.spec, method);
  • 发起网络请求
    lib/runner.js:460
    result = await this.request('textDocument/diagnostic', { textDocument: { uri } }, signal);
  • 发起网络请求
    lib/tools.js:178
    const result = await session.request('textDocument/formatting', params, exec.signal);
  • 发起网络请求
    lib/tools.js:241
    const workspaceEdit = await session.request(
  • 发起网络请求
    lib/tools.js:319
    const actionsPayload = await session.request(
  • 发起网络请求
    lib/tools.js:423
    ? await session.request('workspace/symbol', { query }, exec.signal)
  • 发起网络请求
    lib/tools.js:424
    : await session.request('textDocument/documentSymbol', { textDocument: { uri } }, exec.signal);
  • 发起网络请求
    lib/tools.js:469
    const payload = await session.request(
  • 发起网络请求
    lib/connection.js:210
    const result = await this.request('initialize', params, signal);
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的零配置 LSP 工具:内置语言服务器目录,按 PATH 探测,外加六个扁平参数工具。

README

由 DeepSeek 最新模型翻译生成
DSH LSP 为 DeepSeek Harness 提供 LSP 工具面:装好即用,不需要写一行配置。 插件内置一张语言服务器目录,挂载时按 PATH 逐个探测:找到的启用,找不到的跳过并在报错里点名。模型拿到的 6 个工具全部使用扁平参数,固定上下文成本约 860 tokens。 工具 | 工具 | 作用 | 写盘 | | lsp_diagnostics | 单个文件的错误与警告 | 否 | | lsp_symbols | 文件符号大纲,或工作区符号搜索 | 否 | | lsp_hover | 位置上的类型、签名与文档 | 否 | | lsp_format | 整文件格式化 | 是 | | lsp_rename | 语义级重命名,可跨文件 | 是 | | lsp_code_action | 服务器提供的快速修复与重构 | 否 | 位置统一是 1-based UTF-16,与 read 显示的行列一致。与服务器之间的 0-based 及 utf-8 / utf-32 转换在工具层以下完成。
展开完整文档(README 剩余 1 节)
DSH LSP

为 DeepSeek Harness 提供 LSP 工具面:装好即用,不需要写一行配置。

插件内置一张语言服务器目录,挂载时按 PATH 逐个探测:找到的启用,找不到的跳过并在报错里点名。模型拿到的 6 个工具全部使用扁平参数,固定上下文成本约 860 tokens。

工具

| 工具 | 作用 | 写盘 |
| lsp_diagnostics | 单个文件的错误与警告 | 否 |
| lsp_symbols | 文件符号大纲,或工作区符号搜索 | 否 |
| lsp_hover | 位置上的类型、签名与文档 | 否 |
| lsp_format | 整文件格式化 | 是 |
| lsp_rename | 语义级重命名,可跨文件 | 是 |
| lsp_code_action | 服务器提供的快速修复与重构 | 否 |

位置统一是 1-based UTF-16,与 read 显示的行列一致。与服务器之间的 0-based 及 utf-8 / utf-32 转换在工具层以下完成。

为什么不需要配置

内置目录覆盖 32 个服务器,包含两种主流安装家族:

- 编辑器扩展家族:typescript-language-server、vtsls、pyright、pylsp
- pi-lsp 家族:biome、ty、ruff、rust-analyzer、gopls、clangd、jdtls、zls、lua-language-server、texlab、tinymist、bash-language-server、yaml-language-server、terraform-ls 等

挂载时每个命令都通过子进程 seam 解析:

- 目录条目不在 PATH 上就跳过,之后的「没有服务器认领此文件」会点名列出来,所以缺 rust-analyzer 不会影响 TypeScript;
- 显式 servers 配置里的条目不在 PATH 上则是报错,因为那是用户点名的。

一个文件按扩展名路由到目录中第一个匹配的条目。顺序即优先级:类型检查服务器排在 lint / format 服务器之前。

环境要求

- 已配置模型的 DSH,要求 @deepseek-ai/dsh >= 0.2.0。
- Node.js 22 或更新版本。
- 语言服务器本体需自行安装并出现在 PATH 上,插件不代为下载:

npm i -g typescript-language-server typescript pyright # TS/JS + Python
go install golang.org/x/tools/gopls@latest # Go
xcode-select --install # C/C++(clangd)
brew install lua-language-server # Lua

安装

以依赖形式固定到某个提交:

"@satanfire/dsh-lsp": "https://codeload.github.com/satanfire/dsh-lsp/tar.gz/<commit-sha>"

或用 CLI 从仓库安装(会读取仓库根目录的 package.json):

dsh plugin --profile web add github:satanfire/dsh-lsp

本地开发时可直接指向 checkout:

git clone https://github.com/satanfire/dsh-lsp.git
dsh plugin --profile web add "$PWD/dsh-lsp"

装完重启 dsh web。插件默认启用,不需要在设置页打开开关。

配置(可选)

空的配置行就是有效配置。只有想替换目录,或表达目录无法描述的服务器时才需要:

- id: lsp-auto
config:
servers:
ts:
command: typescript-language-server
args: ["--stdio"]
extensionToLanguage:
".ts": typescript
".tsx": typescriptreact
projectMarkers: ["package.json", "tsconfig.json"]

非空 servers 表整体替换内置目录而不是合并:一张只列了一个服务器的表,不应该悄悄带回其余十七个默认项。

其余键均可选:maxDiagnostics(200)、maxSymbols(100)、maxCodeActions(50)、maxResultChars(16000)、maxDiffLines(60)、maxDocumentBytes(8 MiB)、timeoutMs(60000)。

已知限制

- 一个文件只路由到一个服务器。ty + ruff、biome + tsc 这类互补组合不会同时运行;此时诊断只来自其中一个。
- LSP 根目录等于会话工作目录。请在项目目录中开会话,否则 tsc 找不到 tsconfig.json,诊断会充满 "Cannot find module" 噪声。
- 目录条目的 initializationOptions 未内置,需要时通过 servers 配置覆盖。

设计说明

- 会话复用:每个(服务器,工作区根)一个会话,首次调用时懒启动,之后复用。
- 双通道诊断:先拉取(pull),再与最后一次 publishDiagnostics 合并去重。服务器在分析未完成时用空列表回答 pull 的情况,会先等一小段静默窗口,而不是当成「无问题」。
- 写盘走 harness 文件系统 seam:调用读取之后文件被外部改过,会以冲突失败而不是静默覆盖。
- 卸载回收子进程:插件卸载时先走协议 shutdown/exit,再在 grace 之后调用子进程 seam 的 terminate()——忽略 exit 的服务器不能活过会话。

可选的后续增强

- 按项目标记(tsconfig.json / package.json / pyproject.toml)自动选择 LSP 根目录。
- 单文件多服务器合并诊断。

致谢

- 协议层与工具架构来自 dsh-tool-lsp(MIT)。
- 内置目录与「探测-跳过」策略来自 @narumitw/pi-lsp(MIT)。

许可

MIT,见 LICENSE。
预览分享卡片长什么样 ↓satanfire/dsh-lsp
分享 · DeepSeek Harness Hub
satanfire/dsh-lsp

零配置接入语言服务器,为模型提供诊断、跳转与重构能力

这是你的仓库?认领条目

回到顶部