前言¶
如果你以 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 重啓約定。
參考鏈接:
- 插件目錄:dsh-self-update
- GitHub:Shane-Jay/dsh-self-update
這裏列出的目錄頁只是社區插件索引,不是官方應用商店。