dsh-update-checker:DeepSeek Harness 的更新检查与一键更新插件

前言

DeepSeek Harness 的理念是“一切皆插件”。在实际使用中,主程序更新、第三方插件更新、备份、回滚和重启往往分散在不同位置:主程序可能来自 npm,插件可能来自 npm 或 GitHub,版本判断也不完全一样。

dsh-update-checker 面向 DeepSeek Harness 的 Web GUI 提供一组更新管理入口:检查主程序和已安装插件的更新状态,在页面中给出提示,并支持更新、备份、回滚和重启。它不是官方应用商店,也不是替代 npm / GitHub 的版本管理器,而是把更新流程收拢到 DSH 界面里。

这是什么

dsh-update-checker 是由 Airmetro 维护、采用 MIT 许可证的 DSH 插件。它解决的核心问题是:在一个 Web GUI 中完成 DeepSeek Harness 主程序更新和第三方插件更新的状态检查、备份、更新、回滚与重启。

它主要面向已经在使用 DeepSeek Harness,并且希望减少手动比对版本、手动执行更新命令的开发者。

核心功能

主程序更新检查

插件会检查 DeepSeek Harness 主程序更新,并与 npm latest 对比。该检查遵循 stable-first 和 semver-aware 规则,pre-release latest 不会造成误报。

插件更新检查

插件会扫描已安装的非官方插件,并针对 npm + GitHub 双源交叉比对版本,目标是判断是否存在更高版本。

更新生命周期

插件将主程序/插件更新生命周期放在一处处理,包括检查、备份、更新、回滚、重启。

主程序更新包含:

1、dry-run 防护:计划中出现 remove 则中止。
2、备份。
3、自适应布局安装:in-place 或 -g
4、安装后校验 installed == latest

插件更新采用临时目录安装并复制,并进行依赖版本对齐;在 npm ≥ 12 时自动使用 --allow-scripts

更新和回滚会持久化到 profile 的 package.json 与 lockfile,避免后续安装静默回退。

回滚

插件提供真实回滚入口:

  • 主程序:POST /rollback
  • 插件:POST /plugin-rollback
  • 备份列表:GET /backups.json

GET /backups.json 会列出主程序和插件两类备份信息。

重启看门狗

重启流程会基于当前进程 argv 生成启动器,按 PID + 端口 kill,并通过端口监听和 HTTP 200 探测确认恢复。

GUI 提示与写路由保护

插件在 DSH Web GUI 中提供 locale-aware 横幅,zh/en 跟随 DSH UI 语言,可展示更新、最新、失败状态,并支持抑制和变更摘要。

写路由要求请求携带 confirm:true,且来源为 loopback,即 127.0.0.1/::1

安装与启用

先说明一个关键限制:不要直接在 $DSH_HOME/profiles 中运行 npm install,否则 npm 可能删除整个 node_modules

推荐做法是先把包安装到临时目录,再复制到 DSH profile 的 node_modules 中。

npm i dsh-update-checker --prefix <temp-dir> --no-save
cp -r <temp-dir>/node_modules/dsh-update-checker $DSH_HOME/profiles/node_modules/

这一步把插件包放到 profile 可解析的位置,避免在 profiles 根目录直接触发 npm 安装。

接着在 $DSH_HOME/profiles/web/cordis.patch.yml 添加插件条目:

- insert:
    - id: dsh-update-checker
      name: 'dsh-update-checker'

然后让 patch HMR 应用,或重启 dsh web,最后刷新页面。

典型用法

Host 路由包括:

  • status.json
  • suppress
  • update
  • rollback
  • backups.json
  • restart
  • restart-status.json
  • plugins.json
  • plugin-update
  • plugin-rollback
  • plugin-exclude

Client 会在页面加载时检查一次,之后每 6 小时检查一次。settings page 中会增加回滚按钮。

适用场景与注意

适合以下场景:

  • 使用 DeepSeek Harness Web GUI,希望集中查看主程序和插件更新状态。
  • 插件同时可能来自 npm 和 GitHub,需要统一比对更高版本。
  • 更新前希望有备份,更新后希望有回滚入口。
  • 需要在一处完成检查、更新、回滚和重启。

注意以下限制:

1、Windows only:restart flow spawns PowerShell;其他平台布局下,更新/重启按钮需要代码适配。
2、Host code changes require a service restart;client changes 通过 HMR 在下次页面刷新时生效。
3、在 npm install 前会写备份到 $DSH_HOME/dsh-update-checker-backups/<timestamp>/
4、不要直接在 $DSH_HOME/profiles 中运行 npm install,否则 npm 可能删除整个 node_modules
5、插件会运行在 dsh Web 进程环境中,具备该进程可获得的权限;安装前应检查源码,并确认 MIT 许可证符合使用要求。

结尾

dsh-update-checker 的价值在于把 DeepSeek Harness 主程序和第三方插件的更新流程从分散命令收拢到 Web GUI:检查、备份、更新、回滚和重启都在同一插件中处理。

GitHub 仓库:https://github.com/Airmetro/dsh-update-checker

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

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

小夜