dsh-one-click-update:DSH 桌面端側邊欄一鍵更新插件與 App

前言

在 DSH(DeepSeek Harness)桌面端裏,插件市場會不斷髮布新版本,桌面 App 本身也會走獨立的更新通道。若按常規做法,你需要分別打開插件管理或市場逐項覈對版本、再單獨觸發 App 更新,步驟分散且容易漏項。dsh-one-click-update 在 Harness Web UI 側邊欄增加一行入口,進入更新頁後按固定順序串行處理「市場內已安裝且可更新的插件」,再在確有新版本時交給桌面端官方的 window.dshDesktop.updates 流程,全程帶逐項進度與狀態反饋。

這是什麼

dsh-one-click-update 是維護者 jaredwang 發佈的 DSH 客戶端類插件(npm 包名 dsh-one-click-update,當前版本 0.1.1,MIT 許可證)。它不改變 Host 側能力:index.js 爲空實現,邏輯集中在瀏覽器端的 client.js,通過 Cordis patch 註冊側邊欄入口與主面板頁。社區目錄頁見 SkillHub,源碼與說明見 GitHub 倉庫。

核心功能

一次打開更新頁,等價於執行一輪「全部更新」,順序如下。

  1. 插件市場:調用同源 Update API v1——先 GET /dsh-market/api/v1/capabilities 探測能力與 runtime,再 GET /dsh-market/api/v1/updates/summary 拿到所有可更新包;對每個可更新項串行 POST /dsh-market/api/v1/updates,並每 700ms 輪詢 GET /dsh-market/api/v1/operations?operationId=…(最長約 8 分鐘),頁面展示「已安裝版本 → 目標版本」與狀態;失敗項顯示市場返回原因(如 RELEASE_TOO_FRESH 映射爲「發佈太新」),可點「重試失敗項」。
  2. DSH 桌面 App:讀取 preload 注入的 window.dshDesktop.updates(status() / subscribe() / open());僅當確實存在新版本時才調用 updates.open(),避免每次進入都彈出原生「已是最新」對話框。
  3. 側邊欄狀態:入口圖標隨兩邊狀態變化——無更新爲灰色下載圖標;有更新爲品牌色與呼吸圓點;更新中爲環形進度(插件項用真實 percent);出錯爲紅色警示。

Host 半部不需要額外配置;桌面 App 內市場請求經 dsh-app:// 轉發到本機 Host,純瀏覽器訪問 http://127.0.0.1:PORT 時仍可更新插件市場部分,但 App 更新會提示「更新 DSH 桌面 App 僅在桌面 App 內可用」。

安裝與啓用

插件已發佈到 npm,也可從 GitHub 或本地路徑安裝。README 要求 DSH 引擎 >=0.2.1-rc.5。桌面 App 使用 desktop profile:

# 從 npm 安裝(推薦)
dsh plugin --profile desktop add dsh-one-click-update

# 從 GitHub 安裝(與 npm 發佈同一份代碼)
dsh plugin --profile desktop add github:jaredwang/dsh-one-click-update

# 本地開發(從工作區目錄安裝)
dsh plugin --profile desktop add /absolute/path/to/dsh-one-click-update

若只用 dsh web,將 --profile desktop 換成 --profile web。安裝後刷新頁面(桌面 App 內可用 Cmd+R),側邊欄在「插件市場」與「自動化任務」附近(order: 5)會出現本插件入口。

卸載可通過 Harness 內 plugin_manager 的 remove_bundle 移除 dsh-one-click-update,或執行:

dsh plugin --profile desktop remove dsh-one-click-update

典型用法

  1. 啓動 DSH 桌面 App 並打開 Harness Web UI。
  2. 在側邊欄點擊一鍵更新入口(文案來自插件 locale 註冊)。
  3. 進入主面板頁 one-click-update 後,頁面會自動開始插件串行更新;無需手動勾選條目。
  4. 插件階段結束後,若桌面 App 有新版本,頁面會自動進入官方更新流程(檢查 → 下載 → 安裝 → 重啓);主進程在重啓前仍會彈出原生「安裝並重啓」確認框,插件不會也無法跳過。
  5. 若有插件更新失敗,在頁面上查看原因並使用「重試失敗項」;若提示需重啓桌面 App 後插件才生效,按提示重啓(桌面端 Update API 的 restart.supported 爲 false,頁面不顯示重啓按鈕)。

在純瀏覽器打開 Harness 時,仍可完成插件市場部分的更新;App 自身更新不可用,屬文檔明確限制而非故障。

適用場景與注意

適合誰:長期在 DSH 桌面端使用插件市場、希望少步驟、少漏更的日常開發者;希望側邊欄一眼看到「是否有可更新項」的用戶。

運行與信任:插件以當前 DSH 進程權限運行,會向本機 Host 上的市場 API 發起更新請求;安裝前應閱讀 源碼 與 MIT 許可證,確認符合你的環境策略。

文檔中的明確限制(非 bug):

  • App 安裝重啓前的原生確認框不可跳過;有活躍任務時主進程會阻止重啓。
  • 市場 holdYoungReleases 可能暫時不展示剛發佈的版本,updatable: 0 屬正常。
  • operation 僅存在於當前 Host 進程,重啓 Harness 後舊 operationId 會 404,本插件按 operation lost 處理爲失敗。
  • 當前 App 更新 product API 不暴露完整當前版本號,「當前版本」由桌面端對話框展示。

維護者提供的離線自檢:npm test(node test/smoke.mjs,42 項斷言)與 node --check client.js,不依賴額外 npm 包。

結尾

dsh-one-click-update 把「市場插件批量更新」與「桌面 App 有條件跟進更新」收攏到側邊欄一個入口,並用狀態機驅動圖標與頁面進度。需要安裝命令與接口細節時,以倉庫 README 爲準。

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

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

小夜