前言¶
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 個次版本或主版本)、缺失發佈說明、插件兼容性等。
典型用法¶
- 在設置卡片或側邊欄中觸發更新。
- 選擇更新頻道(
latest、next或alpha)。 - 設置
checkIntervalMinutes以啓用定時檢查。 - 查看面板上的
newerElsewhere判斷是否有新版本。
注意事項¶
- DSH 沒有自更新機制,更新後必須手動重啓。
- 插件僅更新當前正在運行的 DSH 實例,一臺機器上的多個安裝互不影響。
- npm 版本與 GitHub 發佈可能不同步,插件會自動處理。
- 未認證的 GitHub 請求限制爲 60 次/小時,使用
githubToken可提升限額。 - 更新使用原子重命名(
mv)備份,而非複製文件。 - 重啓需要精確的命令參數(端口、配置文件、工作目錄等)。
安裝¶
插件倉庫:https://github.com/zhengjy01/dsh-updater