前言¶
DeepSeek Harness (DSH) 经常发布多个版本(如 0.1.x-rc.x),且 dsh 本身不具备自更新能力。安装新版本后,用户需要手动重启,且重启命令必须与启动时完全一致(端口、配置文件、工作目录和 Node 路径可能已变化)。此外,一台机器上可能存在多个 DSH 安装,npm config get prefix 指向的目录、PATH 中的第一个目录以及 process.argv[1] 解析出的目录可能互不相同,导致简单的 npm i -g 更新错误的目标。
它是什么¶
dsh-updater 是一个工作流插件,由 zhengjy01 维护。它通过 npm dist-tags(latest / next / alpha)和 GitHub releases(标签 dsh-v*)跟踪 DSH 版本,显示从当前运行版本到目标版本之间的完整变更日志和风险报告,并通过原子重命名备份实现自动回滚。
核心功能¶
版本跟踪与检查¶
插件支持通过 channel 参数选择三个频道(latest、next 或 alpha)。通过设置 checkIntervalMinutes(默认 180 分钟,设为 0 禁用)和 checkOnBoot(启动 8 秒后检查)进行后台检查,保持缓存活跃。上游失败(如无法连接 GitHub 或 npm)不会导致更新失败,而是使用缓存数据并显示警告。如果当前频道无更新,会自动查找同频道或更高版本的预发布版本。面板会显示 newerElsewhere 以确认是否存在其他渠道的新版本。
变更展示¶
显示 npm 上可安装的版本与 GitHub 发布的变更内容。展示 (current, target] 区间内每个版本的变更,每个版本提取 GitHub 发布说明的标题。内容为双语(中文优先),若版本在 npm 上存在但 GitHub 无对应发布,会标记 notesMissing。
一键更新¶
更新操作通过 DSH-update 设置卡片、侧边栏入口或 dsh_update 工具触发。更新过程由 helper/update-helper.mjs 独立执行:
1. 写入 pending-spec.json,启动辅助进程。
2. 等待旧进程释放端口(必要时使用 SIGKILL)。
3. 使用 mv 命令将当前安装目录重命名为备份(原子操作)。
4. 执行 npm install 安装指定版本。
5. 验证安装结果(检查 package.json 版本、入口脚本和 node_modules)。
6. 使用与启动时完全相同的参数(process.execArgv、argv[1:]、工作目录)重启进程。
7. 若新版本无法启动,自动将备份目录重命名回原位置并重启旧版本。
更新风险报告¶
根据版本号、安装拓扑、插件契约等生成风险等级(high / warn / info)。检查项包括:预发布版本、破坏性变更关键词、版本跨度(>=2 个次版本或主版本)、缺失发布说明、插件兼容性等。
典型用法¶
- 在设置卡片或侧边栏中触发更新。
- 选择更新频道(
latest、next或alpha)。 - 设置
checkIntervalMinutes以启用定时检查。 - 查看面板上的
newerElsewhere判断是否有新版本。
注意事项¶
- DSH 没有自更新机制,更新后必须手动重启。
- 插件仅更新当前正在运行的 DSH 实例,一台机器上的多个安装互不影响。
- npm 版本与 GitHub 发布可能不同步,插件会自动处理。
- 未认证的 GitHub 请求限制为 60 次/小时,使用
githubToken可提升限额。 - 更新使用原子重命名(
mv)备份,而非复制文件。 - 重启需要精确的命令参数(端口、配置文件、工作目录等)。
安装¶
插件仓库:https://github.com/zhengjy01/dsh-updater