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