前言¶
DeepSeek Harness 的理念是“一切皆插件”。在實際使用中,主程序更新、第三方插件更新、備份、回滾和重啓往往分散在不同位置:主程序可能來自 npm,插件可能來自 npm 或 GitHub,版本判斷也不完全一樣。
dsh-update-checker 面向 DeepSeek Harness 的 Web GUI 提供一組更新管理入口:檢查主程序和已安裝插件的更新狀態,在頁面中給出提示,並支持更新、備份、回滾和重啓。它不是官方應用商店,也不是替代 npm / GitHub 的版本管理器,而是把更新流程收攏到 DSH 界面裏。
這是什麼¶
dsh-update-checker 是由 Airmetro 維護、採用 MIT 許可證的 DSH 插件。它解決的核心問題是:在一個 Web GUI 中完成 DeepSeek Harness 主程序更新和第三方插件更新的狀態檢查、備份、更新、回滾與重啓。
它主要面向已經在使用 DeepSeek Harness,並且希望減少手動比對版本、手動執行更新命令的開發者。
核心功能¶
主程序更新檢查¶
插件會檢查 DeepSeek Harness 主程序更新,並與 npm latest 對比。該檢查遵循 stable-first 和 semver-aware 規則,pre-release latest 不會造成誤報。
插件更新檢查¶
插件會掃描已安裝的非官方插件,並針對 npm + GitHub 雙源交叉比對版本,目標是判斷是否存在更高版本。
更新生命週期¶
插件將主程序/插件更新生命週期放在一處處理,包括檢查、備份、更新、回滾、重啓。
主程序更新包含:
1、dry-run 防護:計劃中出現 remove 則中止。
2、備份。
3、自適應佈局安裝:in-place 或 -g。
4、安裝後校驗 installed == latest。
插件更新採用臨時目錄安裝並複製,並進行依賴版本對齊;在 npm ≥ 12 時自動使用 --allow-scripts。
更新和回滾會持久化到 profile 的 package.json 與 lockfile,避免後續安裝靜默回退。
回滾¶
插件提供真實回滾入口:
- 主程序:
POST /rollback - 插件:
POST /plugin-rollback - 備份列表:
GET /backups.json
GET /backups.json 會列出主程序和插件兩類備份信息。
重啓看門狗¶
重啓流程會基於當前進程 argv 生成啓動器,按 PID + 端口 kill,並通過端口監聽和 HTTP 200 探測確認恢復。
GUI 提示與寫路由保護¶
插件在 DSH Web GUI 中提供 locale-aware 橫幅,zh/en 跟隨 DSH UI 語言,可展示更新、最新、失敗狀態,並支持抑制和變更摘要。
寫路由要求請求攜帶 confirm:true,且來源爲 loopback,即 127.0.0.1/::1。
安裝與啓用¶
先說明一個關鍵限制:不要直接在 $DSH_HOME/profiles 中運行 npm install,否則 npm 可能刪除整個 node_modules。
推薦做法是先把包安裝到臨時目錄,再複製到 DSH profile 的 node_modules 中。
npm i dsh-update-checker --prefix <temp-dir> --no-save
cp -r <temp-dir>/node_modules/dsh-update-checker $DSH_HOME/profiles/node_modules/
這一步把插件包放到 profile 可解析的位置,避免在 profiles 根目錄直接觸發 npm 安裝。
接着在 $DSH_HOME/profiles/web/cordis.patch.yml 添加插件條目:
- insert:
- id: dsh-update-checker
name: 'dsh-update-checker'
然後讓 patch HMR 應用,或重啓 dsh web,最後刷新頁面。
典型用法¶
Host 路由包括:
status.jsonsuppressupdaterollbackbackups.jsonrestartrestart-status.jsonplugins.jsonplugin-updateplugin-rollbackplugin-exclude
Client 會在頁面加載時檢查一次,之後每 6 小時檢查一次。settings page 中會增加回滾按鈕。
適用場景與注意¶
適合以下場景:
- 使用 DeepSeek Harness Web GUI,希望集中查看主程序和插件更新狀態。
- 插件同時可能來自 npm 和 GitHub,需要統一比對更高版本。
- 更新前希望有備份,更新後希望有回滾入口。
- 需要在一處完成檢查、更新、回滾和重啓。
注意以下限制:
1、Windows only:restart flow spawns PowerShell;其他平臺佈局下,更新/重啓按鈕需要代碼適配。
2、Host code changes require a service restart;client changes 通過 HMR 在下次頁面刷新時生效。
3、在 npm install 前會寫備份到 $DSH_HOME/dsh-update-checker-backups/<timestamp>/。
4、不要直接在 $DSH_HOME/profiles 中運行 npm install,否則 npm 可能刪除整個 node_modules。
5、插件會運行在 dsh Web 進程環境中,具備該進程可獲得的權限;安裝前應檢查源碼,並確認 MIT 許可證符合使用要求。
結尾¶
dsh-update-checker 的價值在於把 DeepSeek Harness 主程序和第三方插件的更新流程從分散命令收攏到 Web GUI:檢查、備份、更新、回滾和重啓都在同一插件中處理。
GitHub 倉庫:https://github.com/Airmetro/dsh-update-checker