DeepSeek Harness 自更新守护插件:dsh-auto-update

前言

DeepSeek Harness 的原生插件(如 sharp、node-pty)在运行期间会被操作系统加锁,直接覆盖文件会导致 EBUSY 错误;在容器环境中,主进程退出意味着容器销毁,常规热替换无法生效。dsh-auto-update 通过“暂存 + 退出后脱离子进程替换”的三阶段设计,解决 Harness 在 Windows、Linux/macOS 及容器环境下的自动升级难题。

核心功能

  • 突破文件锁与容器限制:运行期仅做暂存,主进程退出释放文件句柄后再执行原子替换。智能感知容器环境,避免触发 process.exit(0)。
  • 跨平台软链适配:支持 Windows (dsh.cmd) 与 Linux/macOS (bin/dsh) 的重启寻址。
  • 安全与并发控制:内置原子并发锁,防止多进程并发更新导致环境损坏。
  • 轻量交互:集成于 Web 界面,提供胶囊徽标展示版本状态及手动触发更新入口。

安装与启用

插件安装后会自动注入配置。如需自定义参数,可在 ~/.dsh/profiles/web/cordis.patch.yml 中调整。

dsh plugin add dsh-auto-update

典型用法

  • 启动检查:插件启动时会自动检查 npm 最新版本并暂存。
  • Web 交互:Web 面板右下角显示胶囊徽标,点击可查看版本差异或手动触发更新。
  • 自动应用:正常退出 Harness 时,插件会自动应用暂存的更新;Web 面板也提供“更新并重启”按钮。
  • 容器环境:检测到容器环境时,会禁用进程退出逻辑,并在 UI 提示通过镜像更新。

配置项示例:

- insert:
  - id: auto-update
    name: 'dsh-auto-update'
    config:
      distTag: latest
      checkOnStart: true
      checkIntervalMinutes: 240
      autoStage: true
      applyOnExit: true
      relaunch: false

注意事项

  • 依赖 Node.js >= 20。
  • 需要具备 npm 全局安装权限。
  • 容器环境禁止 process.exit(0)。
  • 原生模块更新需等待主进程彻底退出释放文件句柄。

结语

该插件由 a1113622001 维护,采用 MIT 许可证开源。适用于需要长期无人值守运行 Harness 的场景。

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

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

小夜