dsh-web-watchdog:Web GUI 的崩潰看護與自動重啓插件

前言

DeepSeek Harness 的核心設計理念是「一切皆插件」。在本地運行或部署 dsh web(默認監聽 http://127.0.0.1:3080)時,Windows 環境下偶發崩潰(例如 Node 24 libuv 退出斷言、原生 TS 類型剝離等)。如果宿主進程異常退出,通常需要手動重啓,影響開發效率。下面介紹 dsh-web-watchdog 插件,它通過託管一個脫離進程的 PowerShell 監督進程,實現崩潰後的自動恢復。

是什麼

dsh-web-watchdog 是由 catsenior507 維護的 DSH Web GUI 看護插件。它不直接修改宿主邏輯,而是在宿主進程內運行一個獨立的監督進程,負責監控宿主狀態、記錄崩潰信息並在需要時拉起新的宿主進程。

核心功能

該插件主要提供以下能力:

  1. 崩潰記錄:當宿主異常退出(退出碼 != 0)時,記錄退出碼、宿主的 stderr 和 stdout 末尾內容,並將相關事件寫入 Windows 事件日誌,最終彙總到 crash.log。
  2. 指數退避自動重啓:檢測到宿主異常退出後,按指數退避策略自動重啓。默認從 10 秒開始,上限爲 600 秒,連續最多重啓 10 次。
  3. 計劃重啓:通過 Web 面板按鈕或發送 API 請求,手動標記重啓。監督進程會在 2 秒內完成停止舊進程並拉起新進程的操作。
  4. 監督進程交接:重啓後,新宿主進程會拉起自己的監督進程。舊監督進程檢測到 pid 文件被接管後自動退出,避免雙重監督。

安裝與啓用

安裝插件需要使用絕對路徑鏈接本地目錄。

dsh plugin --profile web add link:<本目錄絕對路徑>

執行上述命令後,重啓 dsh web 即可生效。右下角會顯示對應的狀態按鈕。

典型用法

插件啓動後,會在默認端口 4795 上提供 API 接口。

  • 查看狀態
    curl http://127.0.0.1:4795/api/watchdog/status
返回宿主 PID、監督進程狀態、當前配置及崩潰記錄尾部。
  • 查看日誌
    curl http://127.0.0.1:4795/api/watchdog/log?lines=60
獲取崩潰日誌的末尾 60 行。
  • 計劃重啓
    curl -X POST http://127.0.0.1:4795/api/watchdog/restart
瀏覽器連接會短暫斷開,監督進程隨後會拉起新的宿主。
  • 配置覆蓋
    插件默認數據目錄爲 %USERPROFILE%\.dsh\web-watchdog。可通過設置環境變量 DSH_WATCHDOG_DATA 指定數據目錄,或通過 DSH_WATCHDOG_PORT 修改默認端口。

適用場景與注意

  • 平臺限制:本插件專爲 Windows 環境設計,用於修復偶發的崩潰問題。
  • 重啓策略:插件僅監聽異常退出(exit code != 0)並自動重啓。如果宿主正常退出(exit 0),監督進程不會拉起新的進程。
  • 權限要求:監督進程以當前 dsh 進程的權限運行,安裝前應檢查源碼與許可證。

短結尾

dsh-web-watchdog 通過將監督邏輯從宿主進程中剝離,提供了一個輕量級的 Web GUI 穩定性保障方案。掌握其安裝命令與 API 調用方式,可以顯著提升在 Windows 環境下開發與調試的連續性。

目錄頁 | GitHub 倉庫

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

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

小夜