DSH Web 是常駐宿主進程,修改插件、配置或安裝新 bundle 後必須重啓才能生效。手動重啓通常涉及打開終端、查找 PID、殺進程、拉起服務、自檢以及刷新頁面等多個步驟,過程繁瑣且缺乏實時反饋。本文介紹 lnyuqian/dsh-restart-plugin,通過側邊欄按鈕或對話指令,將上述流程收斂爲靜默的一鍵操作。
核心功能¶
- 雙態側邊欄按鈕:支持展開顯示文字
[↻ 重啓]與收起顯示圖標↻,動畫跟手,實時同步側邊欄狀態。 - 倒計時與狀態反饋:點擊後進入 10 秒倒計時,頁面整體文字變淺灰,按鈕保持醒目,提供清晰的狀態反饋。
- 靜默執行:通過 wscript 靜默啓動 PowerShell,桌面無彈窗、無終端窗口、不開啓新標籤頁,由原頁面自動刷新收尾。
- 自檢探針:重啓後自動執行端口(3080)和路由(
GET /_dsh/dsh-restart/state)雙重驗證,僅在自檢成功時提示。 - 對話觸發:支持在對話中使用
dsh_restart工具,適合在當前回合需要收尾的場景。
前置條件¶
- 操作系統:僅支持 Windows(依賴
schtasks/wscript/ PowerShell,Linux / macOS 不適用)。 - DSH Web:建議使用 0.2.0-rc.x 版本(0.1.0 也能運行,但 DSH 0.2.x 可能將其判爲不兼容)。
- Node.js:需要 Node.js >= 24.11。
- 權限:當前用戶需有創建計劃任務的權限。
安裝與部署¶
本插件由兩部分組成,缺一不可:前端插件包和本地重啓腳本鏈。
第 1 步:註冊插件包¶
在終端執行以下命令,將本地目錄註冊爲 DSH Web profile 的依賴:
dsh plugin --profile web add link:.\\dsh-restart-plugin
註冊完成後,需停止並重新啓動 dsh web,然後在瀏覽器中硬刷新頁面(Ctrl+Shift+R)。此時側邊欄應出現重啓按鈕,且 http://127.0.0.1:3080/_dsh/dsh-restart/state 路由可正常返回狀態。
第 2 步:部署重啓腳本鏈¶
插件包僅包含前端組件,重啓邏輯(殺進程、拉起、自檢)需通過本地腳本實現。使用官方提供的安裝腳本一鍵部署:
powershell -ExecutionPolicy Bypass -File docs\\setup\\install.ps1 -InstallDir "$env:USERPROFILE\\.dsh-restart" -Seconds 10
此步驟會自動完成三件事:
1. 將模板文件複製到指定目錄,並根據參數替換佔位符。
2. 註冊計劃任務(默認名 dsh-web-restart-20s)。
3. 自動修改插件源碼中的路徑常量。
注意:
.ps1文件需保存爲 UTF-8 帶 BOM,.vbs/.bat需保存爲 GBK,以確保中文路徑和執行正確。
使用方式¶
- 側邊欄操作:點擊側邊欄按鈕,等待 10 秒倒計時結束,頁面自動刷新並在右上角顯示“✅ 重啓成功”。
- 對話操作:在對話中輸入“重啓”,觸發
dsh_restart工具。 - 計劃任務操作:通過命令行手動觸發計劃任務:
schtasks /Run /TN "dsh-web-restart-20s"
工作原理¶
- 觸發:用戶點擊按鈕或觸發
dsh_restart工具。 - 執行:工具調用
dsh_restart路由,觸發計劃任務dsh-web-restart-20s。 - 等待:wscript 靜默啓動 PowerShell,執行 10 秒倒計時,頁面整體變灰。
- 重啓:倒計時結束後,腳本殺掉舊宿主進程,使用
--no-open參數拉起新實例。 - 自檢:新實例啓動後,腳本驗證 3080 端口監聽及自檢路由。
- 收尾:自檢成功則原頁面刷新,失敗則按鈕變紅提示重試。
總結¶
該插件通過計劃任務與腳本鏈的配合,解決了 DSH Web 重啓操作繁瑣、易出錯且缺乏反饋的問題。安裝前請確保環境符合前置條件,並注意腳本文件的編碼要求。
- GitHub 倉庫:https://github.com/lnyuqian/dsh-restart-plugin
- 插件目錄:https://www.skillhub.cn/plugins/lnyuqian/dsh-restart-plugin