dsh-keepalive:给 DSH Web 进程加一个可选 watchdog

前言

DSH 的 Web 能力可以拆成插件安装,但 Web 宿主进程本身退出后不会自动拉起。dsh-keepalive 解决的是这个问题:在显式启用后,它运行一个 detached watchdog,监控 DSH Web 进程,并在进程退出后用同一 binary 和 arguments 重启。

它还提供可选的 repair agent。反复启动失败后,repair agent 可以在受控范围内检查问题、修改允许的 repair workspace,并基于 snapshot 回滚失败修复。

这是什么

dsh-keepalivexiaohj233 维护,许可证为 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

enabledautoRepair 都需要显式启用;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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye