前言¶
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 看護插件。它不直接修改宿主邏輯,而是在宿主進程內運行一個獨立的監督進程,負責監控宿主狀態、記錄崩潰信息並在需要時拉起新的宿主進程。
核心功能¶
該插件主要提供以下能力:
- 崩潰記錄:當宿主異常退出(退出碼 != 0)時,記錄退出碼、宿主的 stderr 和 stdout 末尾內容,並將相關事件寫入 Windows 事件日誌,最終彙總到
crash.log。 - 指數退避自動重啓:檢測到宿主異常退出後,按指數退避策略自動重啓。默認從 10 秒開始,上限爲 600 秒,連續最多重啓 10 次。
- 計劃重啓:通過 Web 面板按鈕或發送 API 請求,手動標記重啓。監督進程會在 2 秒內完成停止舊進程並拉起新進程的操作。
- 監督進程交接:重啓後,新宿主進程會拉起自己的監督進程。舊監督進程檢測到 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 環境下開發與調試的連續性。