dsh-restart:DeepSeek Harness 的一鍵重啓與故障恢復插件

前言

在 DeepSeek Harness (DSH) 的開發與維護中,宿主進程(dsh web)的代碼更新或異常處理往往需要重啓服務才能生效。以往這通常需要切換回終端窗口手動執行重啓命令。dsh-restart 插件將這一過程移至 Web GUI,通過一個 Web 按鈕配合後臺輔助進程,實現了重啓操作的圖形化,並在重啓失敗時提供獨立的恢復控制台。

插件定位

dsh-restart 是一個由 zhengjy01 維護的工作流插件,採用 MIT 許可證。它不直接在宿主進程內執行重啓邏輯,而是將重啓任務委託給一個 detached helper,通過 Web 界面觸發,並自動處理頁面重連、日誌捕獲和錯誤恢復。

核心功能

插件主要提供以下能力:
* Web GUI 一鍵重啓:在設置面板提供“重啓”卡片和側邊欄入口,支持手動點擊立即重啓。
* 人工審批門禁:默認開啓。當代理調用重啓工具時,只提交請求而不執行重啓,必須由用戶在面板中點擊“批准並重啓”才能執行。
* 自動檢測策略:根據宿主進程是否爲 launchd job,自動選擇 launchctl kickstart 委託方式或直接重啓相同命令。
* 獨立恢復控制台:在 http://127.0.0.1:3099 啓動輔助服務,即使 DSH 主進程崩潰,該控制台仍保持運行,顯示啓動日誌和錯誤信息。
* 代理工具:提供 dsh_restart_status(只讀查詢狀態)和 dsh_restart(提交重啓請求)兩個工具。

安裝與啓用

在命令行中執行以下命令安裝插件:

dsh plugin --profile web add github:zhengjy01/dsh-restart

安裝完成後,重啓一次 DSH 以加載插件。之後即可在設置面板的“插件配置 → Web 插件”中看到“重啓”卡片,或在左側邊欄看到重啓圖標。

典型用法

1. 手動重啓

  1. 打開「設置 → 插件配置 → Web 插件 → 重啓」面板。
  2. 點擊「立即重啓」按鈕。
  3. 頁面會顯示重啓階段和耗時,新進程啓動後頁面會自動重連。

2. 代理觸發重啓(需人工批准)

  1. 代理在對話中調用 dsh_restart 工具。
  2. 工具不會立即重啓,而是生成一個待審批請求(文件存儲在 ~/.dsh/dsh-restart/pending-approval.json)。
  3. 用戶在面板中看到紅色的確認卡片,包含請求原因和時間倒計時。
  4. 用戶點擊「批准並重啓」後,重啓纔會執行。

注意事項

  • 權限與授權:代理工具 dsh_restart 需要調用方聲明 confirm: true,但這僅作爲自證聲明。插件默認開啓人工審批,代理無法繞過用戶點擊直接重啓宿主。
  • 控制台持久性:輔助進程的恢復控制台(127.0.0.1:3099)擁有獨立的端口,即使 DSH 主進程死亡,該控制台仍保持運行,方便排查啓動錯誤。
  • 歷史記錄:重啓歷史記錄保存在 ~/.dsh/dsh-restart/history.. 目錄下。
羽毛球分组比赛记分
小程序二维码

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

小夜