dsh-update-safe:源码安装 Harness 的可回退更新

前言

用 pnpm dsh web 从源码跑 DeepSeek Harness 时,升级往往意味着直接拉新标签、重装依赖、重启进程。一旦新版本起不来,或者用户数据目录已经写入新格式,回退成本会很高。社区插件 dsh-update-safe(维护者 zudazhuang)把一次更新拆成核对官方发布、隔离构建、试启动校验、监督切换和失败恢复几步,面向 macOS/Linux 上的源码 Web 安装场景。npm 全局安装和 Electron 桌面包不在支持范围内。

这是什么

dsh-update-safe 是发布在 SkillHub 插件目录 与 GitHub 的社区工作流类插件,当前包版本为 0.4.2(MIT)。简介对应 README:官方发布检查、定时更新、监督切换与失败回滚(supervised source update with rollback)。

它只服务于「源码目录 + pnpm dsh web」这类部署;插件以当前 DSH 进程权限运行,安装前请自行核对仓库源码与许可证。目录站与 DeepSeek / 幻方无官方从属关系,并非官方应用商店条目。

核心功能

下面按 README 已写明的能力归纳,不展开未在资料中出现的配置名以外的细节。

版本检查

  • 启动时可检查;侧栏底部有更新入口;支持手动「检查更新」。
  • 可开启定时检查(默认含启动检查 + 每 30 分钟);检查间隔可在插件详情页配置,修改后实时生效。睡眠恢复后会补做到期检查;网络失败等到下一周期,不持续重试。
  • 同时核对 GitHub 官方发布与 npm 发布记录,两者不一致则不更新;网络错误时显示「未验证」。
  • 预发布与稳定渠道分别比较,禁止降级。

自动安装与时段

  • 每日安装时段默认 03:00–04:00,可设开始时间与 15–240 分钟时段长度;自动安装默认关闭。
  • 仅在空闲达到设定时长、监督启动有效、源码无未提交改动时,在时段内准备并安装;整个时段繁忙则延到次日,不在时段外启动自动安装。
  • 未使用监督启动时,自动安装暂停;页面仍可保存自动安装偏好。

准备、切换与回滚

  • 从 deepseek-ai/deepseek-harness 按发布标签下载源码,与 npm 元数据交叉核对;在独立目录安装锁定依赖并构建。
  • 在用户数据副本中升级官方外部 DSH 依赖,试启动整个 profile 并检查实际运行版本;外部插件版本保持固定。
  • 切换前为未提交改动生成私有快照;切换时占用已有 Agent 的 maintenance 阶段,有运行工作则阻止切换。
  • 监督进程等待旧 Harness 完全退出后再替换 Web profile 依赖环境;启动失败则恢复一致性快照并启动原环境,失败数据副本位于用户目录旁的 .dsh.failed-update-*。
  • 切换过程中断电或强杀时,需按 README 说明处理 transaction.json、runtime.json 与锁;自动恢复此类中断尚未开放。

监督启动与 Mac 登录自启

监督启动通过 start-harness.sh 调用 pnpm dsh web --no-open。只有这种方式下才能完成「切换」;其他启动方式仍可检查与准备,但不能切换。

DSH_SOURCE=/path/to/deepseek-harness ./start-harness.sh

可用 DSH_SOURCE、DSH_HOME、DSH_SAFE_UPDATE_ROOT 指定源码、用户数据及更新目录;更新目录必须在用户数据目录之外。Mac 登录自动启动需 Python 3,运行 install-login-start.py(启用前需停止已运行的监督脚本);禁用用 python3 install-login-start.py --remove。

安装与启用

环境要求(来自 README):Node.js ^22.19 或 >=24、pnpm、Git;Mac 登录自启还需 Python 3。README 写明曾在 0.2.1-alpha.1 的 Harness 上验证 ConfigForms 设置接口;安装命令以当前发布 0.4.2 为准。

在 Harness 源码目录从 npm 安装(版本固定,国内可配 npmmirror):

pnpm dsh plugin --profile web add dsh-update-safe@0.4.2

或使用 Release 固定 URL(profile 记录 URL,换机或清理下载目录仍可用):

pnpm dsh plugin --profile web add https://github.com/zudazhuang/dsh-update-safe/releases/download/v0.4.2/dsh-update-safe-0.4.2.tgz

也可从 Releases 下载 dsh-update-safe-0.4.2.tgz 后:

pnpm dsh plugin --profile web add /absolute/path/dsh-update-safe-0.4.2.tgz

本地路径会写进 profile,移动或删除文件后需重装;优先使用 URL 形式。安装后重启 Harness,侧栏底部出现更新入口,插件详情页名称为 dsh-update-safe。页面请访问监督实例地址(默认 http://127.0.0.1:3080/);其他已运行实例需重启才会加载新插件。

典型用法

  1. 安装插件并重启,在插件详情页设置检查间隔、渠道、空闲时长;若需要自动安装,先启用监督启动并确认自动安装开关与每日时段。
  2. 日常用手动检查或等待定时检查;有新版时按页面流程「准备」隔离构建与试启动,确认无误后再「切换」。
  3. 长期开机场景:设置 DSH_SOURCE 后使用 ./start-harness.sh;Mac 可选 DSH_SOURCE=/path/to/deepseek-harness python3 install-login-start.py 实现登录自启(不自动打开浏览器)。

更新记录、快照与日志默认在 ~/.local/share/dsh-safe-release-update;运行日志含本地启动认证信息,不宜外泄。构建过程会剥离继承的密钥与 Git 凭据环境变量。

适用场景与注意

适合谁: 在 macOS/Linux 上维护 deepseek-harness 源码树、用 Web profile 开发或自用,且希望升级前能双源校验、试跑、再切换,并在失败时尽量保住用户数据一致性的人。

不适合谁: 仅使用 npm 全局 dsh 或 Electron 客户端的用户;不愿用监督脚本启动、只需要「提醒有新版本」而不做受控切换的场景。

安全与限制(README 原文要点):

  • 无额外发布签名验证;依赖 GitHub HTTPS 标签归档与 npm 完整性元数据。
  • 试启动主要检查 Host 激活与版本;前端与第三方插件行为仍需更新后自行验证。
  • 源码三方合并冲突时停止更新并列出冲突文件,不自动覆盖。
  • 插件无自动 stash / 提交 / 推送 / reset 用户源码目录;Git 忽略文件不进入快照迁移。

结尾

dsh-update-safe 把源码 Harness 的升级从「直接改现场」改成「核对官方双源 → 隔离构建 → 试启动 → 监督切换 → 失败回滚」的流水线,并配合时段与空闲条件控制自动安装。进一步了解安装包与 Release 见 GitHub 仓库,目录摘要见 SkillHub 插件页。

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

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

小夜