dsh-keepalive:給 DSH Web 進程加一個可選 watchdog

前言

DSH 的 Web 能力可以拆成插件安裝,但 Web 宿主進程本身退出後不會自動拉起。dsh-keepalive 解決的是這個問題:在顯式啓用後,它運行一個 detached watchdog,監控 DSH Web 進程,並在進程退出後用同一 binary 和 arguments 重啓。

它還提供可選的 repair agent。反覆啓動失敗後,repair agent 可以在受控範圍內檢查問題、修改允許的 repair workspace,並基於 snapshot 回滾失敗修復。

這是什麼

dsh-keepalive 由 xiaohj233 維護,許可證爲 MIT。

它的定位是一個 opt-in 插件,用於:

  • 爲 DSH Web 進程提供 detached watchdog;
  • 在進程退出後重啓 DSH;
  • 提供可選的 snapshot-checked repair;
  • 提供顯式的 compatibility patch restoration。

它不是高可用集羣,不是 service manager,也不是 sandbox、malware boundary、secret scrubber,更不是完整的隔離或保密邊界。

核心功能

下面列出的能力都以已覈實事實爲準,並且需要按配置顯式啓用。

  • 啓用後運行 detached watchdog,用於 DSH Web 進程。
  • 進程退出後,使用相同 binary 和 arguments 重啓 DSH。
  • 增加一個 Plugins settings card,用來配置 watchdog。
  • 支持通過卡片上的“手動重啓”按鈕,或 POST /api/keepalive/restart 手動重啓。
  • 應用 guarded compatibility patches,覆蓋 keepalive settings namespace 和 hidden Windows child processes。
  • 可選在 repeated boot failures 後運行 repair agent。
  • repair 前 snapshot 允許的 repair workspace。
  • repair 後校驗 paths、configuration、syntax;失敗時 rollback。
  • repair 期間在 web port 提供 zero-dependency repair status page。
  • 當 status=repairing 時,顯示 global repair progress banner。

安裝與啓用

要求:

DeepSeek Harness: 0.1.0-rc.6
Node.js: ^22.19.0 || >=24
pnpm: >=10

watchdog 在 Windows 上經過測試。

安裝命令:

dsh plugin --profile web add "github:xiaohj233/dsh-keepalive#v0.1.0"

安裝後需要重啓 Web profile。僅安裝不會啓用 watchdog restart 或 repair。

啓用需要在 keepalive section 中顯式 opt-in:

keepalive:
  enabled: false
  autoRepair: false

enabled 和 autoRepair 都需要顯式啓用;autoRepair 默認是 false。你可以通過 Plugins settings card 或 settings file 配置。

典型用法

手動重啓:

POST /api/keepalive/restart

也可以使用 Plugins settings card 上的“手動重啓”按鈕。

讀取狀態:

/api/keepalive/status

可以從這個地址讀取當前狀態,以及最後一次 repair-agent 輸出。最後一次 repair-agent 輸出最多 4 KB。

卸載時,先運行卸載命令,再從 profile 中移除插件:

pnpm --dir "$DSH_HOME/profiles/web" exec dsh-keepalive-uninstall
dsh plugin --profile web remove dsh-keepalive

適用場景與注意

如果你需要 DSH Web 進程退出後自動恢復,並且接受 repair agent 在受控範圍內修改 plugin workspace,這個插件可以作爲工具使用。

如果你需要完整隔離、保密邊界、憑據清洗,或者希望它替代 systemd、Windows Service Control Manager、容器、外部監控,它不適合。

需要注意:

  • repair runtime 使用 workspace-write,可以修改 plugin workspace。
  • repair agent 會接收 startup diagnostics 作爲輸入;這些 diagnostics 不可信,可能包含誤導性指令。
  • snapshot、path、syntax 和 rollback 檢查能減少誤改,但不能讓任意 agent output 變安全。
  • 每次 repair 後都要檢查變更。
  • watchdog supervision 和 uninstall 只按 recorded PID 識別 watchdog;如果 PID 被無關進程複用,supervision 可能靜默停止,uninstall 也可能終止無關進程。
  • 在 repeated missed polls 後,watchdog 會強制終止監聽 configured port 的進程;如果該端口被無關服務佔用,這個無關服務也會被殺掉。
  • failed-launch diagnostics 和最後一次 repair-agent 輸出會持久化,並可從 /api/keepalive/status 讀取;failed-launch logs 可能嵌入環境中的 secrets。
  • 它以當前 dsh 進程權限運行;安裝前應檢查源碼與 MIT 許可證。

鏈接

  • 目錄頁:https://www.skillhub.cn/plugins/xiaohj233/dsh-keepalive
  • GitHub:https://github.com/xiaohj233/dsh-keepalive
羽毛球分组比赛记分
小程序二维码

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

小夜