智能體開發中,頻繁更新 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 字段來切換:
-
notify
檢查並記錄是否有新版本。不執行安裝或重啓操作。這是默認模式。 -
stage
克隆 profile,執行依賴安裝、配置組裝和 HTTP 冒煙測試。不執行實際重啓。適合在升級前預演。 -
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 三種模式,開發者可以根據場景選擇檢查、預演或自動切換。