dsh-onekey-update:啓動檢查已啓用插件並一鍵全部升級

前言

DeepSeek Harness(DSH)採用「一切皆插件」的架構,profile 裏往往掛着十幾二十個已啓用擴展。版本分散在 npm registry,逐個打開插件頁對比、再手動執行 dsh plugin add,既費時間也容易漏掉剛發佈的補丁。下面介紹社區插件 dsh-onekey-update(維護者 leoyoul,分類:聯網工具):在 DSH 啓動後自動掃描已下載且已啓用的 registry 依賴是否有新版本,在界面右下角彙總,點一次「全部更新」即逐條升到 dist-tags.latest,完成後提示重啓生效。更新通道走官方 CLI,macOS / Windows / Linux 共用同一套邏輯,不依賴 DeepSeek Harness.exe。

這是什麼

dsh-onekey-update 是 DSH 的 Cordis 插件,當前 npm 包版本爲 0.4.0(MIT,Node.js >= 20)。它解決的是「誰該升、升到哪、怎麼批量升」這三件事:檢查範圍限定在 profile 的 package.json 依賴與已啓用 bundle 的交集,排除本地 link、git 等非 registry 源;比較完整 semver,只列前向升級;執行時使用 dsh plugin ... add <name>@<version> --config.minimum-release-age=0,繞過 pnpm 對新發布版本的供應鏈等待。界面通知條使用 DSH 主題 token(--dsw-alias-* 等),隨明暗主題變化,不寫死顏色。

核心功能

啓動檢查與右下角卡片

啓動約 8 秒後(可用環境變量調整)在後臺檢查,不阻塞主界面。檢查結束必定給出結論:

  • 有待升級項時:列出 插件名 當前版本 → 最新版本,提供 全部更新 / 稍後提醒。
  • 全部最新時:標題 全部插件都是最新版,說明檢查與跳過的數量,按鈕 重新檢查 / 知道了。

卡片四態(有更新 / 全最新 / 更新中 / 失敗)共用一套結構;更新中顯示分段進度條,例如 3/7 dsh-context 0.75.1 → 0.77.0。

更新日誌與翻譯

在待更新插件下可點 查看更新日誌,按需從 GitHub Releases 最近 100 個發行版中匹配本次升級區間;未找到或訪問失敗會單獨提示。當前不讀 CHANGELOG 文件,發行版未覆蓋所有版本時說明可能不完整。展開後可點 翻譯爲中文,文本經 Bing 翻譯,代碼、鏈接和版本號會先保護;網絡失敗保留原文並在標題旁提示重試。

檢查範圍與 registry

掃描邏輯在 lib/check.mjs,對 profile package.json 的 dependencies 與已啓用項(dsh.profile.bundles 或 cordis.patch.yml)取交集,並排除:

  • 插件自身;
  • file: / link: / git: 等非 registry 依賴;
  • 插件市場已停用包(.dsh-market/state.json);
  • node_modules 中無法確定當前版本的包。

版本查詢先請求 https://registry.npmjs.org,失敗再回退 https://registry.npmmirror.com,讀取 dist-tags.latest。

跨平臺更新執行

逐條解析 DSH CLI(不依賴 PATH):優先 <resources>/runtime/cli/bin/dsh,其次 Electron 調用 cli.js,再次解包路徑下的同位置。均不存在時卡片進入失敗態並提示「找不到 DSH CLI」。部分插件升級失敗不影響其餘項繼續執行;結束時彙總成功 N、失敗 M,失敗行標 ✗ 並給出 pnpm 關鍵錯誤一行,並提示重啓 DSH。

狀態與宿主 API

  • ~/.dsh/onekey-update/state.json:最近一次檢查與更新的結構化結果;
  • ~/.dsh/onekey-update/onekey-update.log:檢查、逐條更新與錯誤記錄。

同源路由:GET /onekey-update/status,POST /onekey-update/check|apply|dismiss。

安裝與啓用

從 GitHub 安裝(README 推薦,任意平臺):

dsh plugin --profile desktop add git+https://github.com/leoyoul/dsh-onekey-update.git

本機開發可用 link 安裝(路徑按本機修改):

dsh plugin --profile desktop add link:/Users/leoy/Documents/dsh-onekey-update

插件已發佈到 npm,也可在 DSH 插件 → 發現 中搜索 dsh-onekey-update 安裝(主流市場約 24 小時同步一次)。

裝完後完全退出並重開 DSH,插件頁會出現「一鍵更新」,右下角按檢查結果彈出卡片。

典型用法

  1. 正常啓動 DSH,等待約 8 秒,觀察右下角是否出現更新卡片。
  2. 若有列表,可先 查看更新日誌 確認變更,再點 全部更新 等待逐條進度完成。
  3. 按提示 重啓 DSH,使 node_modules 中的新版本生效。

如需本次啓動跳過檢查:

DSH_ONEKEY_UPDATE_DISABLE=1

調整檢查延時(毫秒,默認 8000):

DSH_ONEKEY_UPDATE_DELAY_MS=12000

覆蓋 profile 或 DSH 主目錄:

變量 作用
DSH_PROFILE 覆蓋 profile 名(默認 desktop)
DSH_HOME 覆蓋 ~/.dsh

適用場景與注意

適合經常維護 desktop profile、啓用插件較多、希望跟 npm latest 保持一致的 DSH 用戶。插件在當前 DSH 進程權限下執行 registry 查詢與 dsh plugin add,安裝前應閱讀 GitHub 倉庫 源碼與 MIT 許可證。

已知邊界(來自 README):

  • 更新的是宿主正在運行的 node_modules,必須重啓才生效。
  • 只升到 registry 的 latest,卡片不列全部歷史版本。
  • link: 安裝無構建步驟,改源碼後重啓 DSH 即生效。

社區插件目錄 skillhub.cn 插件頁 與 DeepSeek / 幻方無官方從屬關係,僅爲生態收錄站點。

結尾

dsh-onekey-update 把「啓動後看誰過期、一鍵批量升級、失敗可定位」收進右下角原生風格卡片,並統一走官方 CLI 與雙 registry 回退。需要安裝或 issue 時見 GitHub:leoyoul/dsh-onekey-update 與 目錄頁。

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

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

小夜