dsh-plugin-updater:DeepSeek Harness 插件安全一键更新器

前言

DeepSeek Harness (dsh) 的插件依赖关系通过 pnpm 管理并叠加到 dsh.profile.bundles 中。直接使用 pnpm up --latest 或手动操作,容易出现 profile 处于半成品状态、版本锁定被破坏、层列表未更新或组合校验失败等问题,导致 dsh 重启后无法启动。

dsh-plugin-updater 针对这些痛点设计,提供了一套从备份、锁定风格保持、对账到双重校验、真实启动验证的完整流程,确保插件更新或卸载后环境依然可用。

是什么

dsh-plugin-updater 是 DeepSeek Harness (dsh) 的插件更新与卸载工具。它由 dp419936514 维护,核心价值在于通过“备份 -> 校验 -> 启动验证 -> 失败回滚”的管线,安全地管理第三方插件依赖。

核心功能

  • 插件清单:显示插件名字、当前版本、可升级版本,并标记已锁定、已弃用、本地依赖。支持按 pnpm outdated 刷新清单。
  • 两种更新模式:支持升级到最新版,或在原版本约束内升级。跨大版本时会在页面上提示。
  • 一键操作:在设置页勾选插件,二次确认后执行。支持实时进度和逐项报告“旧 -> 新”的变更。
  • 逐项卸载:每个插件行一个“卸载”按钮。流程包括:备份 -> pnpm remove -> bundles 对账 -> 组合校验 + 临时端口启动验证。失败时自动回滚。
  • 回滚机制:操作失败自动还原;也可以在设置页里手动回滚最近 10 份历史备份。
  • 智能重启:自动检测 dsh 的启动方式(systemd 用户服务或前台/后台进程),使用对应的命令或分离进程拉起新进程,确保旧进程退出后再加载新版本。
  • 操作历史:每次更新、卸载、回滚的结果记录在 <profile>/.dsh-plugin-updater/history.l 中。

安装与启用

在 web profile 中安装:

dsh plugin --profile web add github:dp419936514/dsh-plugin-updater

重启 dsh web 后,设置页会出现“插件更新”分区。卸载该插件自身需使用命令行:

dsh plugin --profile web remove dsh-plugin-updater

典型用法

设置页操作

  1. 打开“插件更新”分区,勾选要更新的插件(精确锁定的默认不勾)。
  2. 选择更新模式,点击“一键更新所选”。
  3. 成功后点击“重启 dsh”生效。

命令行操作

  • 检查清单:node bin/dpu.mjs check
  • 更新所有:node bin/dpu.mjs update --yes
  • 更新指定插件:node bin/dpu.mjs update --targets dsh-cost-meter --yes
  • 卸载指定插件:node bin/dpu.mjs uninstall --targets dsh-cost-meter --yes
  • 回滚:node bin/dpu.mjs rollback
  • 重启服务:node bin/dpu.mjs restart --yes

注意事项

  • 范围限制:只管理 profile 的第三方依赖,不升级 dsh 本体,不修改 agent preset、会话和凭据,也不替你装新插件。
  • 手动更新:更新是“更新你勾选的那些”,不会自动追新。
  • 内置包保护:内置 @deepseek-ai/* 的更新归 dsh 自己,也不在卸载范围。
  • 安全性:比直接 pnpm up --latest 更安全,多了备份、锁定、bundles 对账、双重校验和失败回滚。
  • 断电恢复:更新或卸载中途断电、被杀,可用备份目录 + node bin/dpu.mjs rollback 命令还原。
  • 卸载验证:卸载后会重新对账 dsh.profile.bundles,断言没有残留的无依赖层。

结尾

dsh-plugin-updater 通过一套标准化的操作流程,填补了直接使用包管理器更新插件带来的安全空白。对于需要频繁调整插件生态的开发者,它能有效降低环境损坏风险。更多细节可参考 GitHub 仓库。

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

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

小夜