dsh-self-update:DeepSeek Harness git 源安裝的應用內自更新插件

前言

如果你以 git checkout 方式運行 DeepSeek Harness(DSH),例如在 checkout 目錄中執行 pnpm dsh web,升級時通常需要手工執行 git pull、pnpm install、pnpm clean、pnpm build:official,然後再重啓服務;如果更新失敗,還要手工處理舊版本。

DSH 的理念是「一切皆插件」。下面介紹 dsh-self-update:它是 Shane-Jay 維護的一個 DSH 插件,採用 MIT 許可,面向 DeepSeek Harness 的 git-source installs,提供應用內檢查、一鍵更新、回滾和重啓能力,並可選原生 macOS shell。

這是什麼

dsh-self-update 是一個用於 DeepSeek Harness git checkout 安裝的應用內自更新插件。

它解決的核心問題是:讓 git-source 安裝的 DSH 在應用內完成版本檢查、更新、失敗回滾和服務重啓,而不是完全依賴手工命令。

它只適用於 DeepSeek Harness 的 git checkout 安裝場景。如果通過 npm i -g @deepseek-ai/dsh 安裝 DSH,插件會隱藏自身,不適用於該安裝方式。

核心功能

  • 後臺默認每 6 小時檢查一次新版本,也支持從設置頁或 macOS 菜單欄按需檢查。
  • 有新版本時,在側邊欄顯示 new version 入口;打開更新面板可查看版本對比和即將執行的命令。
  • 一鍵執行以下更新步驟,並按步驟顯示進度:
git pull --ff-only
pnpm install
pnpm clean
pnpm build:official
  • 拒絕改動 dirty working tree,不會丟棄本地修改。
  • 對分叉 checkout 提供 guided exit:將本地獨有提交保存到 local-backup-<timestamp> 分支,再將工作樹硬重置到遠程後繼續更新。
  • 更新步驟失敗時支持一鍵回滾,並提供 CLI 回退命令。
  • 通過進程退出碼 75 請求服務重啓,可配合 systemd、PM2 或 macOS shell 重新拉起。
  • 可選原生 macOS shell:菜單中觸發 Check for Updates…,並在進程退出碼 75 時自動重新拉起服務。
  • 對 npm 全局安裝場景隱藏自身,不適用於 npm i -g @deepseek-ai/dsh。

安裝與啓用

在 DeepSeek Harness 的 git checkout 中執行:

cd <your-deepseek-harness-checkout>
pnpm dsh plugin --profile web add dsh-self-update

安裝後重啓一次 dsh service。

插件默認使用進程工作目錄作爲 harness checkout;如果實際 checkout 路徑不同,可用 plugin config repoRoot 覆蓋。

典型用法

按需檢查

後臺默認每 6 小時檢查一次新版本。

也可以從設置頁或 macOS 菜單欄按需檢查。當檢測到新版本時,側邊欄會出現 new version 入口,點擊後打開更新面板,面板會展示版本對比和即將執行的命令。

重啓服務

插件通過進程退出碼 75 表達“請重啓”。運行方需要按自身方式處理這個退出碼。

常見運行方式可以這樣配置:

  • systemd:配置 RestartForceExitStatus=75
  • PM2:配置 autorestart: true
  • bare terminal:再次運行 pnpm dsh web
  • macOS shell:內置處理退出碼 75 並重新拉起服務

CLI 回滾

當更新失敗或需要回退時,可以使用 CLI 回退命令:

node scripts/rollback-harness.mjs

如果明確要回滾到某個 commit:

node scripts/rollback-harness.mjs --sha <commit>

macOS shell

構建 macOS app:

node macapp/build-mac-app.mjs

輸出位置爲:

~/Applications/DSH.app

構建需要 Xcode command line tools。首次啓動可右鍵選擇 Open;應用爲 ad-hoc signed,not notarized。

打開更新面板

也可以通過在 window 上派發事件打開面板:

window.dispatchEvent(new Event('dsh-self-update:open'))

如果需要立即檢查,可在 detail 中設置 { check: true }:

window.dispatchEvent(new Event('dsh-self-update:open', { detail: { check: true } }))

HTTP 寫接口

HTTP 寫接口要求:

Content-Type: application/json

並要求 local Origin,作爲 CSRF 防線。

適用場景與注意

適合的場景:

  • 使用 DeepSeek Harness 的 git checkout 安裝方式。
  • 希望從 DSH 應用內完成版本檢查、更新、回滾和重啓。
  • 希望爲 systemd、PM2、macOS shell 或 bare terminal 提供統一的重啓約定。

不適合或需要注意的場景:

  • 通過 npm i -g @deepseek-ai/dsh 安裝 DSH 的場景。該場景沒有 git working copy,插件會隱藏自身。
  • 插件會以當前 dsh 進程權限運行;安裝前應檢查源碼和許可證。
  • 工作樹處於 dirty 狀態時,插件拒絕改動,不會丟棄本地修改。
  • guided exit / realign 路徑要求工作樹不 dirty;本地獨有提交會先保存到 local-backup-<timestamp> 分支,然後硬重置到遠程。
  • 退出碼 75 重啓依賴 supervisor 識別;systemd、PM2、macOS shell 或 bare terminal 需要按前面說明配置或操作。
  • macOS shell 需要 Xcode command line tools;應用爲 ad-hoc signed,not notarized,首次啓動需右鍵 Open。
  • 已覈實資料中顯示 package.json 的 peerDependencies 包含 @deepseek-ai/dsh-client-ui-renderer >=0.1.2-alpha.1 <0.2.0-0;README 中的 DSH badge 顯示 >= 0.1.2-alpha.1。

結尾

dsh-self-update 的價值在於:把 DeepSeek Harness git 源安裝常見的更新、回滾和重啓流程納入應用內操作,同時保留 CLI 回退和退出碼 75 重啓約定。

參考鏈接:

這裏列出的目錄頁只是社區插件索引,不是官方應用商店。

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

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

小夜