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 仓库

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

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

小夜