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 的場景。

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

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

小夜