前言¶
在 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 倉庫。
核心功能¶
一次打開更新頁,等價於執行一輪「全部更新」,順序如下。
- 插件市場:調用同源 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映射爲「發佈太新」),可點「重試失敗項」。 - DSH 桌面 App:讀取 preload 注入的
window.dshDesktop.updates(status()/subscribe()/open());僅當確實存在新版本時才調用updates.open(),避免每次進入都彈出原生「已是最新」對話框。 - 側邊欄狀態:入口圖標隨兩邊狀態變化——無更新爲灰色下載圖標;有更新爲品牌色與呼吸圓點;更新中爲環形進度(插件項用真實 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
典型用法¶
- 啓動 DSH 桌面 App 並打開 Harness Web UI。
- 在側邊欄點擊一鍵更新入口(文案來自插件 locale 註冊)。
- 進入主面板頁
one-click-update後,頁面會自動開始插件串行更新;無需手動勾選條目。 - 插件階段結束後,若桌面 App 有新版本,頁面會自動進入官方更新流程(檢查 → 下載 → 安裝 → 重啓);主進程在重啓前仍會彈出原生「安裝並重啓」確認框,插件不會也無法跳過。
- 若有插件更新失敗,在頁面上查看原因並使用「重試失敗項」;若提示需重啓桌面 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 爲準。