dsh-updater:DeepSeek Harness 的一鍵版本跟蹤與更新工具

前言

DeepSeek Harness (DSH) 經常發佈多個版本(如 0.1.x-rc.x),且 dsh 本身不具備自更新能力。安裝新版本後,用戶需要手動重啓,且重啓命令必須與啓動時完全一致(端口、配置文件、工作目錄和 Node 路徑可能已變化)。此外,一臺機器上可能存在多個 DSH 安裝,npm config get prefix 指向的目錄、PATH 中的第一個目錄以及 process.argv[1] 解析出的目錄可能互不相同,導致簡單的 npm i -g 更新錯誤的目標。

它是什麼

dsh-updater 是一個工作流插件,由 zhengjy01 維護。它通過 npm dist-tags(latest / next / alpha)和 GitHub releases(標籤 dsh-v*)跟蹤 DSH 版本,顯示從當前運行版本到目標版本之間的完整變更日誌和風險報告,並通過原子重命名備份實現自動回滾。

核心功能

版本跟蹤與檢查

插件支持通過 channel 參數選擇三個頻道(latest、next 或 alpha)。通過設置 checkIntervalMinutes(默認 180 分鐘,設爲 0 禁用)和 checkOnBoot(啓動 8 秒後檢查)進行後臺檢查,保持緩存活躍。上游失敗(如無法連接 GitHub 或 npm)不會導致更新失敗,而是使用緩存數據並顯示警告。如果當前頻道無更新,會自動查找同頻道或更高版本的預發佈版本。面板會顯示 newerElsewhere 以確認是否存在其他渠道的新版本。

變更展示

顯示 npm 上可安裝的版本與 GitHub 發佈的變更內容。展示 (current, target] 區間內每個版本的變更,每個版本提取 GitHub 發佈說明的標題。內容爲雙語(中文優先),若版本在 npm 上存在但 GitHub 無對應發佈,會標記 notesMissing。

一鍵更新

更新操作通過 DSH-update 設置卡片、側邊欄入口或 dsh_update 工具觸發。更新過程由 helper/update-helper.mjs 獨立執行:
1. 寫入 pending-spec.json,啓動輔助進程。
2. 等待舊進程釋放端口(必要時使用 SIGKILL)。
3. 使用 mv 命令將當前安裝目錄重命名爲備份(原子操作)。
4. 執行 npm install 安裝指定版本。
5. 驗證安裝結果(檢查 package.json 版本、入口腳本和 node_modules)。
6. 使用與啓動時完全相同的參數(process.execArgv、argv[1:]、工作目錄)重啓進程。
7. 若新版本無法啓動,自動將備份目錄重命名回原位置並重啓舊版本。

更新風險報告

根據版本號、安裝拓撲、插件契約等生成風險等級(high / warn / info)。檢查項包括:預發佈版本、破壞性變更關鍵詞、版本跨度(>=2 個次版本或主版本)、缺失發佈說明、插件兼容性等。

典型用法

  1. 在設置卡片或側邊欄中觸發更新。
  2. 選擇更新頻道(latest、next 或 alpha)。
  3. 設置 checkIntervalMinutes 以啓用定時檢查。
  4. 查看面板上的 newerElsewhere 判斷是否有新版本。

注意事項

  • DSH 沒有自更新機制,更新後必須手動重啓。
  • 插件僅更新當前正在運行的 DSH 實例,一臺機器上的多個安裝互不影響。
  • npm 版本與 GitHub 發佈可能不同步,插件會自動處理。
  • 未認證的 GitHub 請求限制爲 60 次/小時,使用 githubToken 可提升限額。
  • 更新使用原子重命名(mv)備份,而非複製文件。
  • 重啓需要精確的命令參數(端口、配置文件、工作目錄等)。

安裝

插件倉庫:https://github.com/zhengjy01/dsh-updater

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

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

小夜