前言¶
在 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. 手動重啓¶
- 打開「設置 → 插件配置 → Web 插件 → 重啓」面板。
- 點擊「立即重啓」按鈕。
- 頁面會顯示重啓階段和耗時,新進程啓動後頁面會自動重連。
2. 代理觸發重啓(需人工批准)¶
- 代理在對話中調用
dsh_restart工具。 - 工具不會立即重啓,而是生成一個待審批請求(文件存儲在
~/.dsh/dsh-restart/pending-approval.json)。 - 用戶在面板中看到紅色的確認卡片,包含請求原因和時間倒計時。
- 用戶點擊「批准並重啓」後,重啓纔會執行。
注意事項¶
- 權限與授權:代理工具
dsh_restart需要調用方聲明confirm: true,但這僅作爲自證聲明。插件默認開啓人工審批,代理無法繞過用戶點擊直接重啓宿主。 - 控制台持久性:輔助進程的恢復控制台(
127.0.0.1:3099)擁有獨立的端口,即使 DSH 主進程死亡,該控制台仍保持運行,方便排查啓動錯誤。 - 歷史記錄:重啓歷史記錄保存在
~/.dsh/dsh-restart/history..目錄下。