DeepSeek Harness 一鍵重啓插件介紹

前言

DeepSeek Harness(DSH)是一個本地智能體開發框架,其核心設計理念是「一切皆插件」。在本地開發與調試過程中,應用崩潰、配置變更或需要重置狀態時,手動重啓應用往往打斷思路。此外,智能體(Agent)在運行過程中也可能需要主動觸發 Harness 的重啓以應用新的配置。

g57651/dsh-one-click-restart 插件通過側邊欄按鈕與獨立守護進程,解決了這一痛點。

插件定位

該插件由用戶 G57651 維護,基於 MIT 許可證開源。

它爲 DSH 提供了一鍵重啓能力:在側邊欄提供可視化操作入口,同時在內部通過一個獨立守護進程(watchdog)來拉起應用。這種設計繞過了 Node/Electron 進程無法直接拉起自身的限制。

核心功能

  1. 側邊欄按鈕
    在側邊欄底部(Settings 上方)注入按鈕。寬欄顯示圖標與文字,窄欄(rail)僅顯示圓形圖標。按鈕狀態會隨重啓進度變化(旋轉、跳動點、失敗提示)。

  2. 模型可調用工具
    提供名爲 restart_harness 的工具。模型或 Agent 可以直接調用該工具來觸發重啓,支持通過 delayMs 參數設置延遲。

  3. 令牌保護的 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」按鈕。

典型用法

  1. 配置參數
    在 profile 的 cordis.patch.yml 中覆蓋配置項:
    - id: one-click-restart
      name: "@dsh-restart/one-click-restart"
      config:
        appName: "DeepSeek Harness"
        relaunchDelayMs: 1500
  1. Agent 調用
    模型可以直接調用工具:
    {
      "name": "restart_harness",
      "arguments": {}
    }
  1. 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 工作流中。它利用獨立進程機制解決了自啓動難題,並通過令牌機制確保了安全性。

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

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

小夜