前言¶
DeepSeek Harness(DSH)的設計理念是“一切皆插件”,這使得通過插件管理運行時版本變得必要。在多環境部署中,手動檢查 Web 進程版本、磁盤版本以及 npm 上的最新發布,並完成安裝與重啓,是一個重複且容易出錯的流程。dsh-version-autoupdate 是一個雙面 Cordis 插件,旨在通過一個可拖動的浮動膠囊,提供可視化的版本檢測、安裝和確認重啓工作流。
功能¶
該插件主要提供以下能力:
- 版本可視化:顯示可拖動的浮動版本膠囊,實時反映運行版本、磁盤版本和 npm 目標版本。
- 自動檢測:默認每 60 秒檢測一次版本狀態;執行更新期間會加快刷新頻率。
- 包管理支持:支持 npm、pnpm 和 Yarn Classic 的全局安裝。
- API 與系統集成:提供 HTTP API 用於狀態查詢和更新操作;支持離線安裝和 systemd 服務管理。
- 靈活的更新策略:支持
preview(含 alpha/rc)和stable(僅正式版)兩個渠道。
安裝與啓用¶
通過 npm 全局安裝該插件包:
npm i -g dsh-version-autoupdate
安裝完成後,通過 DSH 的插件管理流程加載該包。該包聲明瞭 dsh.bundle.patch 和 exports["./client"]。如果需要手動配置 profile,Host 插件行配置如下:
- id: dsh-version-autoupdate
name: dsh-version-autoupdate
config:
channel: preview
updatePolicy: platform
啓動或重啓 dsh web 後,通過浮動膠囊查看版本並執行檢查、安裝、確認重啓。
配置¶
插件提供以下配置項:
| 字段 | 默認值 | 說明 |
|---|---|---|
packageManager |
npm |
指定包管理器,支持 npm、pnpm、yarn 或 auto。 |
packageManagerPath |
無 | 包管理器可執行文件的絕對路徑(仍會覈對全局安裝目錄)。 |
channel |
preview |
更新渠道。preview 取語義化最高版本(含 alpha/rc);stable 僅取正式版,無正式版時回退。 |
updatePolicy |
platform |
更新策略。platform 默認:Windows 允許 CLI 更新,Linux/macOS 僅檢測。full 可啓用支持的 CLI 更新操作。 |
minAvailableMemoryMb |
400 |
Linux 可用內存低於閾值時拒絕更新,設爲 0 可關閉。 |
installTimeoutMs |
1200000 |
安裝總超時時間(默認 20 分鐘)。 |
offlineInstall |
auto |
離線安裝策略。always / never 可覆蓋,隨包模板使用 never。 |
systemdUnit |
dsh-web.service |
離線安裝時用於停止和啓動的 systemd unit 名稱。 |
restartDelayMs |
2000 |
確認重啓後的延遲時間。 |
重啓日誌、離線日誌和狀態文件存儲在非空的 DSH_HOME 中(未設置時默認爲 ~/.dsh)。插件未提供獨立的 home 配置項。
使用與限制¶
- 全局安裝限制:只有當包管理器的全局目錄與當前運行包的真實路徑一致時,才執行全局安裝。npx、本地項目、源碼或未知安裝來源不執行全局安裝。
- 桌面版差異:桌面版請使用 DSH 官方更新流程;插件尚未接入桌面原生 updates bridge,桌面版和 npx 不提供進程重啓功能。
- Windows 行爲:Windows 不自動重啓,需要用戶手動點擊確認。
- API 接口:插件提供以下 HTTP API:
GET /dsh-version-updater/statusPOST /dsh-version-updater/checkPOST /dsh-version-updater/installPOST /dsh-version-updater/restartPOST /dsh-version-updater/start-update(兼容舊入口)
結尾¶
dsh-version-autoupdate 爲 DSH 插件開發者提供了一個可視化的版本管理方案,通過標準化的 Host 配置和 HTTP API,能夠較好地融入現有的部署流程。在使用前,請務必確認包管理器的全局目錄路徑與運行環境一致,並根據操作系統策略選擇合適的 updatePolicy。