前言¶
用 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/);其他已运行实例需重启才会加载新插件。
典型用法¶
- 安装插件并重启,在插件详情页设置检查间隔、渠道、空闲时长;若需要自动安装,先启用监督启动并确认自动安装开关与每日时段。
- 日常用手动检查或等待定时检查;有新版时按页面流程「准备」隔离构建与试启动,确认无误后再「切换」。
- 长期开机场景:设置
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 插件页。