前言¶
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.jsonsuppressupdaterollbackbackups.jsonrestartrestart-status.jsonplugins.jsonplugin-updateplugin-rollbackplugin-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