dsh-update-checker:DeepSeek Harness 的更新檢查與一鍵更新插件

前言

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.json
  • suppress
  • update
  • rollback
  • backups.json
  • restart
  • restart-status.json
  • plugins.json
  • plugin-update
  • plugin-rollback
  • plugin-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

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

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

小夜