前言¶
DSH Desktop 走官方安裝包更新內核,但 Web 設置頁裏雖然定義了 api.checkForUpdates() 和「檢查更新」文案,對應組件從未渲染出來。日常能點的入口主要在系統托盤「檢查更新…」,後臺還會每 6 小時自動查一次併發系統通知。桌面版內核在 <安裝目錄>\resources\app\node_modules\@deepseek-ai\dsh,profile 下的 ~/.dsh/profiles/node_modules/@deepseek-ai/* 是指向它的 Junction,因此靠 npm/pnpm 改 profile 裏的包無法升級本體,只能走官方安裝包通道。
dsh-desktop-upgrade 由 Liu-fu-gui 維護,是 DSH 生態裏的客戶端類插件:不改任何內核文件,把官方 desktopRuntime.updates 那條鏈路補到設置頁、托盤和模型工具裏,方便開發者和使用者主動查版本、下載安裝包。
這是什麼¶
一句話:給 DSH Desktop 增加 Web 設置分區「DSH 升級」、托盤項「升級 DSH…」,以及 Cordis 工具 dsh_upgrade,全部對接官方版本服務與安裝包下載,不替換 resources\app 裏的內核。
- 倉庫:https://github.com/Liu-fu-gui/dsh-desktop-upgrade(帶
dsh-plugintopic,可被插件市場掃描) - 社區目錄:https://www.skillhub.cn/plugins/Liu-fu-gui/dsh-desktop-upgrade
- 當前包版本(資料中的
package.json):0.2.0,許可證 MIT
核心功能¶
Web 設置頁「DSH 升級」¶
瀏覽器半側由 client.js 註冊 settings.section 分區,展示當前版本、官方最新、更新通道;提供「檢查更新」,在有新版且當前平臺可下載時出現「下載並安裝」。點擊下載仍會彈出桌面版原生確認框,確認後與官方托盤項同一條安裝包通道。
托盤「升級 DSH…」¶
Host 半側 index.js 註冊托盤菜單項:查詢官方版本服務,有新版時彈原生確認(下載 / 稍後),通過 desktopRuntime.updates 下載官方安裝包並打開。
模型工具 dsh_upgrade¶
供對話裏 agent 調用,不繞過用戶確認:
| 動作 | 行爲 |
|---|---|
status |
只報告版本信息,不彈窗 |
check |
只檢查更新 |
upgrade |
檢查後調用 updates.confirmDownload(),確認後才下載安裝包 |
橋接 API(瀏覽器 ↔ Host)¶
同源,僅接受 loopback / web runtime 的 trustedHosts,拒絕瀏覽器跨站標記:
GET /dsh-desktop-upgrade/status -> { ok, result: { status, currentVersion, latestVersion, channel, canDownload, manualUrl } }
POST /dsh-desktop-upgrade/upgrade -> { ok, result: { ...同上, accepted } }
upgrade 不會靜默安裝;確認框由桌面版負責。
文件分工(便於排查)¶
| 文件 | 角色 |
|---|---|
index.js |
Cordis 插件:托盤、dsh_upgrade、橋接裝配 |
bridge.js |
版本檢查、升級流程、橋接路由邏輯 |
client.js |
Web 設置 UI bundle |
cordis.patch.yml |
向 profile 插入 desktop-upgrade bundle 行 |
插件實際生效位置是 profile 的 node_modules/dsh-desktop-upgrade 與 package.json 裏的 dependencies + dsh.profile.bundles,由 dsh plugin 自動對平,不建議手動拷貝。
安裝與啓用¶
在 DSH 終端(設置 → 打開 DSH 終端)或 PATH 中已有桌面版 dsh 的終端裏執行。dsh plugin 會自動補上 --profile desktop,在 desktop profile 目錄跑 pnpm 並登記 bundle。
安裝前可按 README 建議備份 profile 的 package.json 與 pnpm-lock.yaml。
# 方式一:從 GitHub 安裝(推薦)
dsh plugin add github:Liu-fu-gui/dsh-desktop-upgrade
# 方式二:本地開發態(示例路徑來自 README,請換成你的目錄)
dsh plugin add link:D:\trea\tmp\dsh-desktop-upgrade
# 裝完確認
dsh plugin list
資料說明 npm 尚未發佈該包;裝完後 必須重啓 DSH Desktop(profile 組合與 client bundle 不熱更新)。卸載:
dsh plugin remove dsh-desktop-upgrade
然後同樣重啓桌面版。
典型用法¶
- 設置 → DSH 升級:進入分區會自動查一次官方版本;有新版時點「下載並安裝」,在原生確認框同意後完成下載並打開安裝嚮導。
- 托盤圖標右鍵 → 升級 DSH…:流程與上相同,入口在托盤。
- 對話中:例如讓 agent「查一下 DSH 有沒有新版本」(對應
status/check),或「升級 DSH」(upgrade,仍會在屏幕彈確認框,需手動同意)。
README 中本地開發可先做語法與測試校驗:
node --check index.js; node --check bridge.js; node --check client.js
node --test test/bridge.test.mjs test/client.test.mjs
適用場景與注意¶
適合誰:長期使用 DSH Desktop、希望從設置頁或對話裏主動升級、又不想動安裝目錄內核的用戶與智能體開發者。
運行邊界(資料原文):
- 僅 DSH Desktop 發行版可用;無
desktopRuntime時托盤不註冊,工具與橋接返回unavailable。 - 非打包模式(
isPackaged === false)不註冊托盤項;橋接仍在但返回unavailable。 - 不做應用內靜默自更新,不替換
resources\app內核;只驅動官方安裝包通道。 - 不修改、不依賴內核文件;僅使用公開 Cordis 服務(
tools、desktopRuntime、webServer)與官方版本/下載端點。
安全習慣:插件以當前 DSH 進程權限運行。安裝前可在 GitHub 閱讀源碼與 MIT 許可證,確認橋接僅面向受信 host。DeepSeek Harness 社區目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係;裝插件前自行判斷是否信任維護者與倉庫。
README 記載的 SemVer 行爲示例:beta 通道若官方最新低於當前穩定版,會判爲 up-to-date,避免被引導降級。
結尾¶
dsh-desktop-upgrade 把 DSH Desktop 原本藏在托盤和定時任務裏的官方升級鏈路,補到設置頁和 dsh_upgrade 工具上,路徑與「檢查更新…」一致,且不碰內核 Junction。需要安裝或源碼時,見社區目錄頁與 GitHub 倉庫: