前言¶
DeepSeek Harness(DSH)把能力拆成可安装的插件 bundle。官方插件管理器刻意不提供版本选择器:第三方插件通常只能卸载再重装来升级,只有部分官方按需 bundle 才有明确的 Update 按钮。若要固定某个已知可用版本,或在升级后出现回归时回到旧版,往往需要手改 profile 里的 package.json。
dsh-plugin-versions 在 Settings → Plugins 下增加 Installed plugins 页面,用宿主自带的 pluginManager 列出已装插件的发布版本、切换或回滚,并在同一页卸载,不替代市场或安装器本身。
这是什么¶
- 定位:已安装 DSH 插件的版本浏览器与管理入口(客户端插件)。
- 包名:
dsh-plugin-versions(package.json版本 0.1.3,MIT,要求 Node >= 20)。 - 简介:对已安装的 DeepSeek Harness 插件列出 registry 上的发布版本,支持切换、失败自动回滚与卸载。
- 分类:客户端(在浏览器侧注册 Plugins 页的 Versions 标签,经 loopback HTTP 与宿主通信)。
社区目录页:just-liuyi/dsh-plugin-versions。README 中的安装源指向 GitHub 仓库 DangDangDeng/dsh-plugin-versions(npm 包尚未发布,需从仓库安装)。
核心功能¶
下面能力均来自插件 README 与 package.json 说明。
- 已装列表:列出当前 profile 安装的 bundle,含版本、来源 spec、是否可移除。
- 版本展开:从 registry 拉取该 bundle 的全部发布版本(发布日期、
latest、deprecated 等标记);当前版本与最新版本会有标签。 - 切换版本:经
pluginManager.removeBundle再pluginManager.installBundle(name@version, { saveExact: true, enabled: true })写入精确依赖;安装失败(peer 校验、版本不存在、网络等)会自动装回上一版本并报告错误。 - 卸载:从同一标签页卸载 profile 中的 bundle;配置会保留。
- Registry:使用 profile 配置的 registry(含私有源),必要时回退到
registry.npmjs.org。
宿主侧仅暴露本机 loopback 路由,不能当作通用安装器:
POST /plugin-versions/api/{list|versions|switch|remove}
请求需带 x-requested-with: XMLHttpRequest,非跨站 sec-fetch-site,且 Host 为 127.0.0.1 / localhost / ::1。只能操作本 profile 已安装的 bundle。
安装与启用¶
README 写明 npm 尚未发布,需从仓库安装。将 <name> 换成你的 profile 名。
dsh plugin --profile <name> add github:DangDangDeng/dsh-plugin-versions
或使用显式 Git URL:
dsh plugin --profile <name> add git+https://github.com/DangDangDeng/dsh-plugin-versions.git
DSH Desktop 的 desktop profile 由应用管理:在 Plugins → Add plugin 中填写 github:DangDangDeng/dsh-plugin-versions,不要用上述 CLI。安装后重启或刷新页面。可用 #<tag> 或 #<commit> 固定修订。将来发布到 npm 后,README 预期可使用 dsh plugin add dsh-plugin-versions。
典型用法¶
- 打开 Settings → Plugins。
- 进入 Installed plugins 标签。
- 展开某个插件查看版本列表;当前版本与
latest会有标记。 - 点击 Switch:确认后先卸再装目标版本;失败则自动回滚。
- 需要移除时用 Uninstall。
切换后应刷新页面,以便浏览器加载新版本对应的 client 半部分。若 profile 无 HMR,宿主可能返回 restart-required 而非即时生效。
切换流程(README 摘要):
pluginManager.listBundles() # 找到已装 bundle 并记住版本
pluginManager.removeBundle(name) # 卸载并移除依赖
pluginManager.installBundle(name@version, { saveExact: true, enabled: true })
├─ 成功 → ChangeResult.application: applied | restart-required
└─ 失败 → 清理半成品并装回上一版本
适用场景与注意¶
适合:经常试社区插件、需要在多个发布版之间对比或回滚的 DSH 用户;使用私有 npm registry 的 profile。
局限(README 原文):
- 仅 loopback:通过
--trusted-host从其他机器打开的页面会被拒绝。 - 不做自动更新检查,这是版本浏览器而非 updater。
- 不预先逐版本做兼容性检查;不兼容时由宿主拒绝,切换会回滚。
- 无 HMR 时切换可能需要重启;切换后必须刷新页面才能跑新 client。
安全:插件在 DSH 进程权限下运行,安装前请阅读仓库源码与 MIT 许可证,确认来源可信。SkillHub 目录与 DeepSeek / 幻方无官方从属关系,仅为社区收录。
结尾¶
dsh-plugin-versions 补上官方管理器缺失的版本选择界面,在不动市场与安装流程的前提下,用 pluginManager 完成列版本、切换、失败回滚与卸载。