dsh-safe-updater:DeepSeek Harness 的受保護自動更新

智能體開發中,頻繁更新 DeepSeek Harness (DSH) 容易引入配置錯誤或依賴衝突,直接升級可能導致服務中斷。dsh-safe-updater 通過隔離環境驗證、配置校驗和健康檢查,確保升級過程可回滾。

該插件由 lucifer726 維護,用於從 npm 獲取版本,克隆 profile 到隔離的 DSH_HOME,安裝依賴,驗證配置,啓動臨時 Web 服務器,並允許受控切換。若健康檢查失敗,會自動回滾到上一版本。

安裝與默認配置

安裝插件需要指定 profile 名稱。下面以 web profile 爲例:

dsh plugin --profile web add dsh-safe-updater

安裝後,插件會插入默認配置,默認模式爲 notify,不會靜默替換正在運行的 Harness:

- insert:
    - id: safe-updater
      name: dsh-safe-updater
      config:
        mode: notify
        channel: latest
        profile: web
        checkIntervalMs: 21600000
        checkOnStart: true

核心模式

插件提供三種模式,通過配置文件或命令行覆蓋 mode 字段來切換:

  1. notify
    檢查並記錄是否有新版本。不執行安裝或重啓操作。這是默認模式。

  2. stage
    克隆 profile,執行依賴安裝、配置組裝和 HTTP 冒煙測試。不執行實際重啓。適合在升級前預演。

  3. apply
    在 stage 完成後,請求外部 supervisor 進行版本切換。此模式拒絕在沒有外部 supervisor 的環境中運行。

典型用法

安裝完成後,可以使用以下工具進行操作。

通用狀態查看

dsh_update_status

該命令讀取當前、可用、已暫存和回滾狀態。

手動檢查與暫存

手動觸發檢查或暫存特定版本:

# 手動檢查當前版本
dsh-safe-updater check --current-version 0.1.1-rc.1

# 手動暫存指定版本
dsh-safe-updater stage --version 0.1.1-rc.1 --profile web

回滾操作

若暫存的版本健康檢查失敗,或在運行中需要回滾:

# 執行回滾
dsh-safe-updater rollback

Supervisor 模式

要實現自動激活,需在 Web profile 下運行 supervisor:

dsh-safe-updater supervise \
  --version 0.1.1-rc.1 \
  --profile web \
  --host 127.0.0.1 \
  --port 3080

當暫存的版本就緒,supervisor 會基於參數啓動進程,等待 HTTP 健康檢查,成功則提交切換,失敗則返回到 previousVersion。

安全與信任模型

插件在設計上側重安全隔離和執行可控:

  • 執行安全:註冊表版本字符串使用語義版本解析,候選命令使用參數數組(shell: false),防止命令注入。
  • 數據隔離:暫存環境不會複製 .credentials.yaml 或其他運行時數據,防止敏感信息泄露。
  • 狀態存儲:狀態和鎖文件存儲在 ~/.dsh/safe-updater 下,具有受限權限和原子替換機制。
  • 防遞歸:Smoke 模式會禁用更新計時器,防止遞歸觸發暫存。

環境要求與依賴

使用該插件需滿足以下條件:

  • Node 版本:Node.js 版本需大於等於 22。
  • Peer Dependencies:
    • @deepseek-ai/dsh-tools:版本範圍 >=0.1.1-rc.1 <0.2.0
    • @deepseek-ai/schemastery:版本範圍 ^3

總結

dsh-safe-updater 爲 DSH 提供了一套嚴謹的自動化更新機制。它通過隔離環境驗證和原子化回滾策略,降低了智能體開發中版本迭代的風險。配合 notify、stage、apply 三種模式,開發者可以根據場景選擇檢查、預演或自動切換。

查看插件目錄
查看源碼

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

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

小夜