前言¶
DeepSeek Harness(DSH)是一個本地智能體開發框架,其核心設計理念是「一切皆插件」。在本地開發與調試過程中,應用崩潰、配置變更或需要重置狀態時,手動重啓應用往往打斷思路。此外,智能體(Agent)在運行過程中也可能需要主動觸發 Harness 的重啓以應用新的配置。
g57651/dsh-one-click-restart 插件通過側邊欄按鈕與獨立守護進程,解決了這一痛點。
插件定位¶
該插件由用戶 G57651 維護,基於 MIT 許可證開源。
它爲 DSH 提供了一鍵重啓能力:在側邊欄提供可視化操作入口,同時在內部通過一個獨立守護進程(watchdog)來拉起應用。這種設計繞過了 Node/Electron 進程無法直接拉起自身的限制。
核心功能¶
-
側邊欄按鈕
在側邊欄底部(Settings 上方)注入按鈕。寬欄顯示圖標與文字,窄欄(rail)僅顯示圓形圖標。按鈕狀態會隨重啓進度變化(旋轉、跳動點、失敗提示)。 -
模型可調用工具
提供名爲restart_harness的工具。模型或 Agent 可以直接調用該工具來觸發重啓,支持通過delayMs參數設置延遲。 -
令牌保護的 HTTP 路由
提供GET /api/restart-harness獲取令牌、POST /api/restart-harness觸發重啓的接口。令牌由宿主生成,用於校驗請求來源,防止跨站或未授權訪問。
安裝與啓用¶
安裝依賴特定版本的 @deepseek-ai/dsh-tools。DSH 0.2.0 起會對插件聲明的 peer 依賴進行預檢,版本不匹配會導致安裝被拒絕或插件被禁用。
通過 GitHub 倉庫安裝(倉庫包含預構建產物,無需本地構建):
dsh plugin --profile <你的 profile> add github:G57651/dsh-one-click-restart
安裝完成後,必須重啓 DSH 才能加載插件。重啓後,側邊欄左下角會出現「重啓 Harness」按鈕。
典型用法¶
- 配置參數
在 profile 的cordis.patch.yml中覆蓋配置項:
- id: one-click-restart
name: "@dsh-restart/one-click-restart"
config:
appName: "DeepSeek Harness"
relaunchDelayMs: 1500
- Agent 調用
模型可以直接調用工具:
{
"name": "restart_harness",
"arguments": {}
}
- HTTP API
客戶端(瀏覽器頁面)通過同源請求獲取令牌並觸發重啓:
# 獲取令牌
TOKEN=$(curl -s http://localhost:3000/api/restart-harness)
# 觸發重啓
curl -X POST http://localhost:3000/api/restart-harness \
-H "x-restart-token: $TOKEN"
工作原理與注意事項¶
工作原理:
由於 Node/Electron 進程無法直接拉起自己,插件使用一個 detached: true 的子進程作爲 watchdog。該進程與主進程分離,主進程退出後,watchdog 依然存活。watchdog 負責檢測主進程狀態並執行拉起操作。
不同運行面的策略不同:
* macOS 桌面端:利用 AppleScript 的 quit 事件優雅退出應用,並在應用消失後通過 open -a 拉起。
* Web / Headless:通過 ctx.appExit(0) 有界退出,watchdog 負責拉起。
平臺支持與限制:
* macOS:已實測,支持自動拉起。
* Windows / Linux 桌面端:行爲未經驗證。代碼邏輯上會走 ctx.appExit 路徑,但未在真實 Electron 環境中測試。桌面端自動化依賴 macOS 的 open / AppleScript,因此本質上只在 macOS 上做自動化;其他系統的桌面端會退化爲「宿主退出 + open 拉起」。
兼容性:
* 依賴 @deepseek-ai/dsh-tools: ^0.1.7-rc.1 || ^0.2.0-rc.1。
* 支持 DSH 0.1.7-rc.x 與 0.2.0-rc.x。
* 倉庫包含預構建的 lib/ 目錄,直接通過 github: 安裝即可使用。
故障排查¶
- 側邊欄無按鈕:檢查是否重啓了 DSH,或 profile 中該插件行是否被
disabled。 - 令牌過期:點擊按鈕時會自動丟棄陳舊令牌並重新獲取。
- Forbidden 錯誤:請求必須來自本機 loopback 同源頁面,跨站請求會被攔截。
- 重啓失敗:檢查日誌確認是否因應用名配置錯誤或宿主被恢復對話框彈窗攔截。
總結¶
該插件爲 DSH 開發者提供了一種標準化的應用重啓方式,既可通過側邊欄操作,也可集成到 Agent 工作流中。它利用獨立進程機制解決了自啓動難題,並通過令牌機制確保了安全性。