前言¶
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 依赖)。
核心能力¶
- 自动检测与交互:每天本地时间 24 时自动检查更新。若当日未运行,启动时补检一次。发现更新后,在 Web GUI 右下角弹出卡片,由用户决定“立即更新”、“稍后”或“延期”。
- 断点续传与校验:下载过程支持断点续传,安装前支持 sha512/sha1/包内身份三层校验。
- 失败处理:安装失败后支持重试(复用本地包)和回退。任一阶段失败,会生成完整诊断日志落盘至
$DSH_HOME/dsh-git-update-notifier-logs/。 - 自身更新:插件也检测自身版本。对于 git 检出、npm 依赖或 github 依赖形态,可自动更新;对于手工副本形态,仅提示手动更新。
- 形态适配:自动识别源码 checkout、npx 缓存、npm 安装三种形态,分别采用 git pull 或 npm install 逻辑。
- 代理支持: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 仓库。