dsh-restart:Web 設置面板中的一鍵重啓

在 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 倉庫。

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

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

小夜