在 DSH 開發環境中,當 Web 主機進程無響應或需要熱重載配置時,通常需要在終端手動重啓進程。dsh-restart 插件在 DSH Web 設置面板中增加了一個專門的“重啓”頁面,允許開發者通過瀏覽器直接操作主機進程的啓停,無需切換到終端。
這是什麼¶
dsh-restart 是一個 DeepSeek Harness (DSH) 插件,由 DWJZ 維護。它爲 Web 設置面板增加了一個重啓頁面,旨在解決 Web 環境下重啓主機進程不便的問題。該插件使用 MIT 許可證。
安裝與啓用¶
通過以下命令安裝插件:
dsh plugin --profile web add github:DWJZ/dsh-restart
安裝完成後,需要重啓一次主機,重啓頁面纔會出現在設置面板中。
核心功能¶
1. 面板操作與 API¶
插件在 Web 設置面板中提供兩個操作按鈕:重啓和停止。在底層,它註冊了三個路由接口:
GET /dsh-restart/status:查看當前進程狀態。POST /dsh-restart/restart:觸發主機重啓。POST /dsh-restart/stop:停止主機進程。
2. 快捷鍵支持¶
除了按鈕,插件還支持快捷鍵操作:
* macOS:Cmd + Shift + K
* Windows:Ctrl + Shift + K
重啓後,頁面會自動輪詢狀態並在 boot id 變化時重新加載。
工作原理¶
進程替換機制¶
重啓功能通過一個 detached helper 實現。舊進程在接收到請求後等待 400 毫秒退出,helper 會等待端口釋放後再啓動新進程。新進程使用完全相同的啓動命令(包括 Node 二進制路徑、execArgv、絕對路徑、argv 等所有參數),從而避免因舊端口占用導致的 EADDRINUSE 錯誤。
停止機制¶
停止操作直接發送 SIGTERM 信號。這確保了會話能夠被正確刷新,而不是直接被強制殺死。
插件加載機制¶
如果插件處於“已卸載但未激活”的狀態,它會在下次主機啓動時自動加載。
注意事項¶
- Linux 快捷鍵限制:在 Linux 環境下,Web 端的快捷鍵無法綁定。這是因爲瀏覽器的 allowlist 拒絕了 primary+alt 的組合鍵,導致插件無法註冊。
- 會話持久化:重啓操作會保留會話數據,重啓後頁面依然存在。
- 權限與來源:該插件以當前 dsh 進程的權限運行,安裝前請檢查源碼與許可證。
總結¶
dsh-restart 通過頁面化操作和快捷鍵,簡化了 DSH Web 主機的運維流程。更多細節可參考:GitHub 倉庫。