dsh-git-update-notifier:本地源码形态的更新管理

前言

DeepSeek Harness (DSH) 采用插件化架构,支持通过源码 checkout 的方式本地开发。这种形态下,本体代码通常指向 deepseek-ai/deepseek-harness 仓库。社区中常见的更新检测插件大多通过比对 npm registry 上的 @deepseek-ai/dsh 版本来判断,这会导致误报(本地提交数往往多于 npm 上的发布版本);若执行 npm install,则会破坏 pnpm workspace 的链接结构。

dsh-git-update-notifier 专为解决此类问题设计。它不依赖 npm registry 检测源码形态,而是直接通过 git 推进本地提交。同时,它也支持 npx 和 npm 安装形态,通过 npm registry 进行版本比对。插件在每天 24 时自动检查,若此时 DSH 未运行,下次启动时会补检一次。

插件简介

  • 名称:dsh-git-update-notifier
  • 所有者:lmr233
  • 许可:MIT
  • 定位:每天首次启动 DSH 时用 git 检测上游提交并在 Web GUI 中询问是否更新(适配源码 checkout,不改 npm 依赖)。

核心能力

  1. 自动检测与交互:每天本地时间 24 时自动检查更新。若当日未运行,启动时补检一次。发现更新后,在 Web GUI 右下角弹出卡片,由用户决定“立即更新”、“稍后”或“延期”。
  2. 断点续传与校验:下载过程支持断点续传,安装前支持 sha512/sha1/包内身份三层校验。
  3. 失败处理:安装失败后支持重试(复用本地包)和回退。任一阶段失败,会生成完整诊断日志落盘至 $DSH_HOME/dsh-git-update-notifier-logs/。
  4. 自身更新:插件也检测自身版本。对于 git 检出、npm 依赖或 github 依赖形态,可自动更新;对于手工副本形态,仅提示手动更新。
  5. 形态适配:自动识别源码 checkout、npx 缓存、npm 安装三种形态,分别采用 git pull 或 npm install 逻辑。
  6. 代理支持:Windows 上 git 不读取系统代理,插件会自行探测并应用代理(支持环境变量或系统代理),支持显式设置 DSH_GIT_UPDATE_NOTIFIER_PROXY。

安装与启用

通过官方命令安装到 web profile:

dsh plugin --profile web add dsh-git-update-notifier

安装后需重启 dsh web 才能生效。

典型用法

可以通过环境变量控制检测行为:

  • 设置发布通道(默认 latest,可切换至 next 或 alpha):
    DSH_GIT_UPDATE_NOTIFIER_CHANNEL=next
  • 设置镜像源:
    DSH_GIT_UPDATE_NOTIFIER_REGISTRY=https://registry.npmmirror.com
  • 设置代理:
    DSH_GIT_UPDATE_NOTIFIER_PROXY
  • 手动检测:在设置页点击“检测更新”按钮。

行为与交互

  • 弹窗与设置页:更新询问以浮层卡片形式展示在 Web GUI 右下角(点击穿透)。同时,设置页包含一个常驻区块,显示状态、版本号、手动检测按钮及延期选项。
  • 延期机制:选择延期后,可设定 1 天、3 天、1 周、2 周或 1 个月。到期前不再弹窗,但设置页仍可查看与更新。
  • 重试与回退:安装或下载失败时,设置页提供“重试安装”和“回退到更新前”按钮。回退脚本会直接生成在 $DSH_HOME 目录,确保即使 DSH 无法启动也能通过外部脚本回退。
  • 补检机制:若 24 时 DSH 未运行,下次启动时会执行补检,确保当日检测不遗漏。

技术细节与注意

  • 运行环境:需要 Node.js 版本为 ^22.19.0 || >=24.0.0。
  • 构建要求:插件为纯手写 JavaScript,无构建步骤,可直接运行。
  • 宿主端代码改动:若修改了 lib/index.js 等宿主端代码,必须重启 dsh web 才能生效(仅刷新页面无效)。
  • 手工副本限制:手工复制的副本无法自动更新,只能手动替换。
  • 代理处理:Windows 上 git 默认不读取系统代理,插件会主动探测并使用。

总结

dsh-git-update-notifier 解决了源码 checkout 形态下更新检测难、易破坏 workspace 的问题。它通过 git 推进提交,配合完整的校验、回退和诊断机制,为本地开发提供了可靠的更新保障。更多细节与源码可参考插件目录或GitHub 仓库。

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

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

小夜