dsh-updater:DeepSeek Harness 的一键版本跟踪与更新工具

前言

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 个次版本或主版本)、缺失发布说明、插件兼容性等。

典型用法

  1. 在设置卡片或侧边栏中触发更新。
  2. 选择更新频道(latest、next 或 alpha)。
  3. 设置 checkIntervalMinutes 以启用定时检查。
  4. 查看面板上的 newerElsewhere 判断是否有新版本。

注意事项

  • DSH 没有自更新机制,更新后必须手动重启。
  • 插件仅更新当前正在运行的 DSH 实例,一台机器上的多个安装互不影响。
  • npm 版本与 GitHub 发布可能不同步,插件会自动处理。
  • 未认证的 GitHub 请求限制为 60 次/小时,使用 githubToken 可提升限额。
  • 更新使用原子重命名(mv)备份,而非复制文件。
  • 重启需要精确的命令参数(端口、配置文件、工作目录等)。

安装

插件仓库:https://github.com/zhengjy01/dsh-updater

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

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

小夜