DeepSeek Harness (DSH) 採用插件化架構。在維護 DSH 實例時,手動更新核心 CLI 或依賴項容易因版本不匹配或文件鎖定導致服務中斷。dsh-autoupdate 插件通過受保護的更新管道解決了這一問題,確保更新過程安全可控。
插件定位¶
dsh-autoupdate 是 DeepSeek Harness 的內置自動更新插件。它由維護者 lc23313 開發,採用 MIT 許可證。該插件通過設置頁提供手動檢查入口,並實現了完整的更新事務保護機制,包括健康檢查、自動回滾以及基於熔斷器的降級策略。
核心功能¶
- 設置頁 UI:在 DSH 設置頁面添加了“檢查更新”按鈕,提供確認對話框以觸發更新流程。
- 受保護的更新管道:採用“退出時應用”機制。守護進程在 DSH 進程退出後執行安裝,避免 Windows 環境下的文件鎖定問題。
- 精確版本與驗證:安裝過程中鎖定精確版本,通過雙重驗證(清單版本 + 二進制運行驗證)確認更新成功。
- 自動回滾:若更新過程中出現任何失敗,系統會自動回滾到前一版本。
- 熔斷與降級:內置熔斷器,根據連續失敗次數自動將模式降級爲
auto -> notify -> off。 - 任意 Dist-Tag 支持:支持跟蹤任何 npm dist-tag(如
latest,rc等)。
安裝與啓用¶
通過官方插件渠道安裝:
dsh plugin --profile web add dsh-autoupdate
安裝完成後,重啓 DSH 進程以使插件生效。可以通過以下命令驗證插件是否已註冊:
dsh --dump-config --profile web
典型用法¶
安裝完成後,插件會自動初始化。狀態和日誌文件位於:
$DSH_HOME/plugins-data/dsh-autoupdate/
查看當前狀態和查看日誌的常用命令:
cat $DSH_HOME/plugins-data/dsh-autoupdate/state.json
cat $DSH_HOME/plugins-data/dsh-autoupdate/autoupdate.log
安全與信任¶
該插件設計上側重於安全性:
* 最小化權限:僅生成 npm 命令(版本查詢和全局安裝)以及可選的 dsh plugin 命令。
* 隔離寫入:絕不寫入 DSH 擁有的文件(如 settings.yaml 或配置文件)。
* 審計日誌:所有決策過程均記錄在 autoupdate.log 中,便於審計。
* 版本鎖定:安裝過程始終鎖定檢查時解析的精確版本。
依賴要求¶
使用該插件需要滿足以下環境條件:
* Node.js >= 18
* @deepseek-ai/cordis >= 4.0.0
* @deepseek-ai/schemastery >= 1.0.0