dsh-restart-progress:DSH Web 重啓體驗插件

前言

在 DSH Web 環境中,無論是 Agent 觸發還是手動操作,重啓服務時往往會導致連接中斷,用戶需要重新發起會話才能獲取上下文。dsh-restart-progress 插件解決了這一體驗斷層問題。它通過頁內遮罩、分離式重啓腳本以及自動報告機制,讓服務重啓過程全程可視、自動且可恢復。

核心功能

該插件包含以下核心能力:
* 提前顯示遮罩:執行重啓腳本的瞬間(服務未斷),2 秒內出現全屏轉圈遮罩,等待服務恢復。
* 自動刷新:服務恢復且重啓任務收尾完成後,頁面自動刷新回到 DSH。
* 自動報告:重啓完成後,腳本自動向發起重啓的會話發送“已重啓”消息,喚醒 Agent。
* 隨時退出:遮罩右上角提供 ✕ 按鈕,或按 Esc 鍵,可立即退出遮罩並停止自動刷新。
* 防死循環:只有在“服務在線 + 重啓任務收尾完成”雙條件滿足時才刷新頁面。
* 分離式執行:使用 Windows 計劃任務執行真正的殺舊、啓新動作,脫離 DSH 進程樹,防止 Agent 腳本被誤殺。

安裝與啓用

先通過官方命令安裝插件,重啓 DSH Web 後驗證注入狀態。

dsh plugin --profile web add "github:SMWHff/dsh-restart-progress"

安裝後重啓 DSH Web。在瀏覽器控制台(F12)查看是否出現以下提示,表示插件已注入:

[dsh-restart-progress] armed (poll every 2s)

配置

安裝後,需將腳本複製到本地並修改硬編碼路徑以匹配你的環境。

  1. 複製 scripts/restart-dsh-web.ps1 到 ~/.dsh/scripts/ 目錄。
  2. 打開腳本,修改以下變量:
    • $logDir:日誌與標誌文件目錄(默認 C:\Users\SMWHff\.dsh\logs)。
    • $env:DSH_HOME:DSH 數據目錄(默認 C:\Users\SMWHff\.dsh)。
    • $node:node.exe 實際路徑。
    • $bin:dsh bin.js 實際路徑。
    • -WorkingDirectory:啓動工作目錄。

使用方式

重啓腳本支持 Agent 觸發和終端手動觸發兩種方式。

  • Agent 在會話內觸發(推薦):
    Agent 執行以下命令,腳本會繼承 DSH_SESSION_ID,重啓完成後自動通知該會話。
    & ~/.dsh/scripts/restart-dsh-web.ps1
  • 終端手動觸發:
    在任意終端執行相同命令。此時若無 DSH_SESSION_ID,僅執行重啓並顯示遮罩,不會發送通知。

注意事項

  • 平臺限制:僅支持 Windows 10/11。
  • 路徑配置:必須根據實際安裝路徑修改腳本中的硬編碼變量,否則重啓任務無法執行。
  • 退出機制:Esc 或 ✕ 退出只對當前這一輪生效,下一輪重啓會正常顯示遮罩。
  • 編碼問題:在 Windows PowerShell 5.1 環境下存在 GBK 編碼兼容性問題,腳本中已通過 base64 處理中文,請勿隨意修改腳本編碼。
羽毛球分组比赛记分
小程序二维码

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

小夜