dsh-plugin-install: Install any third-party plugin in the DSH settings page.

前言

DSH 的理念是「一切皆插件」。但落到实际操作,装插件通常只有两条路:开终端执行 dsh plugin add,或者去插件市场里找。前者对不常碰命令行的人不够友好,后者覆盖有限——市场没收录的插件,界面上就没有安装入口。dsh-plugin-install 补的就是这一段:它在 dsh 设置页里新增一个「安装」标签页,输入包名即可安装任意第三方插件,不必开终端,也不必经过插件市场。下面介绍它的功能、安装方式与注意事项。

这是什么

dsh-plugin-install 是 qinyre 维护的、面向 Web 端的客户端插件(package.json 中 dsh.client.platform"web"),当前版本 0.3.10,MIT 许可。运行时依赖很轻:peer 依赖 @deepseek-ai/cordis ^4.0.1,另依赖 yaml ^2.9.0

一句话定位:在设置页里按包名安装任意 dsh 插件。包名支持三种写法——npm spec、github:user/repo 或本地路径。

核心功能

安装、卸载、更新走同一条 CLI 路径

插件不维护第二套状态。界面上的安装、卸载与更新,全部经由 dsh plugin add / remove 执行,与在命令行手动操作完全一致,dsh.profile.bundles 的同步由 CLI 负责。

一键检查更新,不把更新变成降级

已安装列表可以一键检查更新,检查方式按来源区分:

  • npm 安装:对照 registry 的 latest 版本号;
  • github 安装:对照仓库 HEAD 提交;
  • 本地链接:如实标注,不做检查。

更新前会核对方向:registry 的 latest 不高于已装版本时拒绝执行。更新完成后还会核对实际落地的版本号,与 registry latest 不一致时如实提示,而不是谎报成功。

正面处理 pnpm 11 的发布冷静期

pnpm 11 默认开启 24 小时发布冷静期。插件在每次 add 与 remove 时附带 --config.minimum-release-age=0 规避;旧版 pnpm 不认识该参数时,会自动去掉重试。

同时,每次操作前会对整个 lockfile 做策略校验,发现窗口内发布的条目时以 ERR_PNPM_MINIMUM_RELEASE_AGE_VIOLATION 拦截。操作失败时,失败横幅会带出 pnpm 打印在标准输出里的真实诊断,而不是只剩转发器的一句总结。

生效方式与重启

纯客户端插件刷新页面即可生效;组合较复杂的插件会明确提示需要重启,页面上的「重启服务」按钮在两种宿主下均可用:DSH Desktop,以及独立运行 dsh web

写操作的安全防护

  • spec 采用字符白名单校验,拒绝参数注入与 shell 元字符;
  • 更新目标只能取自已安装清单;
  • POST 请求要求同源;
  • 同一时刻仅允许一个写操作。

服务本身只绑定回环地址,与上述措施构成纵深防御。

安装与启用

执行安装命令:

dsh plugin --profile web add dsh-plugin-install

经过上面的步骤,打开 Web UI 的 设置 → 插件,即可看到「安装」标签页。卸载在同一页面完成,或执行:

dsh plugin --profile web remove dsh-plugin-install

如果你用的是桌面客户端 DSH Desktop(github.com/qinyre/dsh-Desktop),它开箱已预装此插件,无需手动安装。

典型用法

在「安装」标签页输入包名即可安装,npm spec、github:user/repo、本地路径三种形式都接受。

开发者也可以从命令行直接安装本地源码检出,包内的 prepare 脚本会自动构建出 lib/

dsh plugin --profile web add file:/path/to/dsh-plugin-install

参与开发时,先拉取依赖,再按需执行类型检查、测试与构建:

npm install
npm run typecheck
npm test
npm run build

端到端 smoke 默认关闭,要求同级目录存在 deepseek-harness 源码检出,且 Node ≥ 22.19:

DSH_DESKTOP_PLUGIN_SMOKE=1 npm test

适用场景与注意

适合的人群:

  • 日常主要在 Web UI 里操作 dsh,不想为装一个插件单独开终端;
  • 想尝试市场没收录的第三方插件;
  • 本地开发插件,希望快速装进 web profile 验证效果。

两点注意:其一,第三方插件以当前 dsh 进程的权限运行,安装来源不明的插件前,应先检查其源码与许可证,再决定是否装入;其二,插件内置的 spec 白名单、同源校验等防护针对的是注入类风险,不能替代对插件本身源码的审查。

结语

dsh-plugin-install 把「装插件」这件事从终端搬进了设置页,同时没有另起一套状态——所有操作仍走 dsh plugin add / remove,配合对 pnpm 11 冷静期的处理与更新方向的核对,在界面上点的每一次安装与更新,结果都与命令行一致。

项目地址:

  • GitHub:https://github.com/qinyre/dsh-plugin-install
  • 社区目录页:https://www.skillhub.cn/plugins/qinyre/dsh-plugin-install

其中目录页来自社区维护的独立插件目录,与 DeepSeek、幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye