DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Tool Lsp — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
T

dsh-tool-lsp

Tool Lsp

DeepSeek Harness 的 LSP 操作接口:通过真实语言服务器提供诊断、格式化、重命名、代码操作和符号功能。可从 dshmarket 热挂载。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add github:Jaylor-Wang/dsh-tool-lsp#4ff6c3150b8f84608e9da518c5f6c382a4ad032c
README兼容性版本

兼容性与来源证明

Tool Lsp 以 dsh-tool-lsp 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
any
发布来源
github
Registry 更新时间
2026/9/18

版本

0.1.0stable
2026/9/18

相关插件

正在加载相关插件…

最新版
0.1.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
未提供
文件数
未提供
Surface
any
许可证
MIT
发布源
github
GitHub
★ 1
周下载
0
最近提交
2026/9/18
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Subagent Codex@deepseek-ai/dsh-subagent-codex基于官方 app-server 协议的一次性 Codex 子代理提供程序

README

dsh-tool-lsp

English | 中文

An LSP tool surface for DeepSeek Harness: real language-server diagnostics, formatting, rename, code actions and symbol navigation, exposed as five tools the model can call directly.

Tools

ToolWhat it doesWrites to disk
lsp_diagnosticsFile diagnostics, merging the pull and push channelsno
lsp_formatWhole-file or range formattingyes
lsp_renameSemantic rename, across files when the server says soyes
lsp_code_actionFixes the language server is willing to applyyes (when an action is applied)
lsp_symbolsDocument outline / workspace symbol searchno

Writes go through the Harness filesystem observation policy: a file changed by someone else since this call read it fails with LSP_WRITE_CONFLICT rather than being silently overwritten.

Install

dsh plugin --profile web add dsh-tool-lsp

Enable it from dshmarket. The plugin is off by default — click the switch when you want it, and it takes effect immediately with no restart. The enabled state does not survive a restart.

Configuration

The language-server table lives in the user profile's patch layer ($DSH_HOME/profiles/<name>/cordis.patch.yml), never in the plugin package: the package's own cordis.patch.yml has to stay plain insert rows, or dshmarket cannot hot-mount or hot-unmount this plugin.

- id: lsp
  config:
    servers:
      vtsls:
        command: vtsls
        args: ["--stdio"]
        extensionToLanguage:
          ".ts": typescript
          ".tsx": typescriptreact
          ".js": javascript
          ".jsx": javascriptreact
        projectMarkers: ["package.json", "tsconfig.json"]
        configuration:                 # the answer to workspace/configuration
          typescript:
            preferences:
              includePackageJsonAutoImports: "on"

      rust:
        command: rust-analyzer
        extensionToLanguage:
          ".rs": rust
        projectMarkers: ["Cargo.toml"]

      biome:
        command: biome
        args: ["lsp-proxy"]
        extensionToLanguage:
          ".json": json
          ".css": css
        projectMarkers: ["biome.json"]

# The switch needs its own row: same-id rows merge key by key, and folding them
# into one row breaks the market's toggle
- id: lsp
  disabled: true

Server entry fields

FieldRequiredDefaultMeaning
command✅—Executable name, resolved on PATH at mount; a typo fails there, not on first call
extensionToLanguage✅—Extension → LSP language id
fileGlobs[]Path globs, highest routing priority
projectMarkers[]Project file names, used to split one extension across servers
args[]Launch arguments
env{}Extra environment entries
initializationOptionsnullinitializationOptions sent with initialize
configurationnullAnswer to workspace/configuration, resolved per requested section
formattingOptionsnullOverrides the global formatting options (tabSize / insertSpaces)

Routing

Matched in order, first hit wins:

  1. fileGlobs
  2. projectMarkers — the marker file in the file's nearest ancestor; only chooses among entries that already map the extension
  3. extensionToLanguage — first match in configuration order

Top-level options

maxDiagnostics (200), maxSymbols (100), maxCodeActions (50), maxResultChars (16000), maxDiffLines (60), maxDocumentBytes (8 MiB), timeoutMs (60000).

Positions

Tool arguments take 1-based UTF-16 line / character, matching editors. The 0-based wire form and the utf-8 / utf-32 encodings some servers negotiate are converted internally — the model never has to think about it.

Requirements

The language servers themselves must be on PATH; this plugin does not install them. vtsls, biome, rust-analyzer, ty, ruff, or any other LSP server.

Known limitations

  • biome and ruff do not implement textDocument/documentSymbol, so lsp_symbols returns LSP_UNSUPPORTED for them. They serve diagnostics and formatting only.
  • A cold server (rust-analyzer is the usual example) may answer a first diagnostic pull with nothing at all while it indexes. The plugin retries with backoff and, once out of attempts, reports what it has.

Development

npm test                 # 121 unit tests, including protocol coverage over a fake server
npm run verify:servers   # every server configured in the patch layer, over real requests

verify:servers reads the servers: table out of the profile patch, starts each real server, and issues one request per advertised capability. Usage: node test/verify-servers.mjs [profileDir].

Restart the process after changing plugin source. The market switch changes whether the plugin is mounted, immediately — but it does not load new code from disk into a running process (ESM module cache, confirmed by measurement).

License

MIT