前言¶
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 环境下开发与调试的连续性。