dsh-updater-ui:在 DSH 設置頁檢查和更新官方 DSH

前言

DSH 的插件體系支持把功能以插件形式接入;社區目錄是獨立站點,不等同於官方應用商店。對於已經在用 dsh webnpx @deepseek-ai/dsh web 或源碼倉庫運行 DSH 的開發者,更新時常見的問題不只是「有沒有新版本」,而是「當前正在運行的進程應該從哪條通道更新」。

dsh-updater-ui 把檢查和更新入口放到 DSH 的「設置 → DSH 更新」頁。它按當前運行進程的安裝方式選擇通道:源碼倉庫走 git,npm 全局或 npx 走 npm registry。

這是什麼

dsh-updater-uixingyingyuzhui 維護,採用 MIT 許可證。它是一個 Web 插件,用於檢查並更新官方 DSH。

插件會識別當前安裝方式:源碼倉庫、npm 全局、npx。這裏的關鍵是「當前正在運行的 DSH 進程」。如果當前進程來自 npx 或 npm 全局,插件走 npm 通道;如果當前進程來自官方源碼倉庫,插件才走源碼倉庫通道。

核心功能

  • 識別安裝方式:源碼倉庫 / npm 全局 / npx
  • 一鍵檢查:源碼執行 git fetch;npm 查詢官方 registry,失敗則嘗試 npmmirror
  • 版本對比:對比本地與官方 package.json 的版本號
  • 更新說明:源碼方式下可摺疊列出官方新提交,包括短哈希和標題,最多前 15 條
  • 一鍵更新:源碼只允許快進;npm 只安裝官方包名 @deepseek-ai/dsh 和已校驗的版本號
  • 自動檢查:Host 每 30 分鐘後臺檢查一次,並有防重入控制;頁面每 60 秒輪詢緩存
  • 紅點提醒:有官方更新時,設置頁導航顯示「DSH 更新 ●」
  • 安全拒絕:源碼本地存在未推送提交、分叉或衝突改動時拒絕覆蓋;npm 安裝失敗時給出可複製命令

安裝與啓用

前置條件:

  • 已安裝 DSH,並且 dsh webnpx @deepseek-ai/dsh web 可運行
  • npm 通道需要能訪問 npm registry;源碼通道需要本機 git 和官方 clone

在已經安裝 DSH 的環境中執行:

dsh plugin --profile web add github:xingyingyuzhui/dsh-updater-ui

安裝完成後重啓 DSH,然後打開「設置 → DSH 更新」。

典型用法

1、打開「設置 → DSH 更新」,頁面顯示當前安裝方式和官方更新狀態,例如「已是最新」或「有官方更新」。

2、根據頁面提示,點擊「一鍵更新官方 npm 包」或「一鍵拉取官方更新」。

3、更新成功後重啓 DSH,新代碼纔會被加載。

4、如果 npm 安裝被運行中的進程鎖住,常見於 Windows,頁面會給出可複製命令;停掉 DSH 後再執行該命令。

對於 npx 用戶,也可以直接啓動最新官方包:

npx --yes @deepseek-ai/dsh@latest web

更新通道

源碼倉庫

噹噹前進程來自官方源碼倉庫時,插件使用 git fetch 檢查官方遠端,並用本地與官方的 package.json 版本號做對比。

更新時只允許快進,拉取使用 --ff-only。如果本地存在未推送提交、分叉或衝突改動,插件會拒絕覆蓋。

源碼倉庫定位僅噹噹前進程來自官方源碼 clone 時纔會使用 git。查找順序包括:

正在運行的 @deepseek-ai/dsh-root 目錄
配置 repo / 環境變量 DSH_REPO
~/deepseek-harness
~/.dsh/deepseek-harness

npm 全局 / npx

噹噹前進程來自 npm 全局或 npx 時,插件查詢官方 registry。如果查詢失敗,則嘗試 npmmirror。

更新時只安裝官方包名 @deepseek-ai/dsh 和已校驗的版本號。

如需指定 registry,可以設置以下配置項:

DSH_NPM_REGISTRY
npm_config_registry

具體 registry 地址以當前環境要求爲準。

自動檢查與提醒

插件的 Host 每 30 分鐘在後臺檢查一次,並有防重入控制;頁面每 60 秒輪詢緩存。

檢測到官方更新時,設置頁導航會顯示「DSH 更新 ●」。

安全限制

  • 路由僅接受 POST。
  • 請求必須帶自定義請求頭:
X-DSH-Updater: 1
  • 如果請求帶 Origin,只允許 http://127.0.0.1http://localhost
  • npm 安裝包名固定爲 @deepseek-ai/dsh,版本號必須匹配安全字符集。
  • 外部命令帶超時和輸出上限。
  • 錯誤返回結構化 JSON。
  • 無第三方依賴、無遙測。

適用場景與注意

適合已經在 DSH Web 環境中運行官方 DSH,並希望減少手工判斷安裝方式的開發者。

插件以當前 DSH 進程的權限運行,更新操作會調用 git 或 npm 相關命令。安裝前建議先檢查倉庫源碼與 MIT 許可證。若網絡環境受限,需要保證 npm registry 或源碼倉庫遠端可訪問。

卸載插件:

dsh plugin --profile web remove dsh-updater-ui

結尾

dsh-updater-ui 的價值在於把「當前 DSH 進程從哪裏來」這件事顯式化,並在設置頁提供檢查、更新說明和受控更新入口。

GitHub 倉庫:

https://github.com/xingyingyuzhui/dsh-updater-ui.git
羽毛球分组比赛记分
小程序二维码

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

小夜