dsh-doctor: DeepSeek Harness 自我修复监控器

前言

在 DeepSeek Harness(DSH)的插件生态中,单个插件故障可能导致 dsh web 无法启动,或长时间运行的任务因网络中断/流阻塞而卡死。dsh-doctor 是一个运行在独立 Node 进程中的监控插件,用于处理由插件引起的启动故障和会话卡顿。它不依赖 dsh-daemon,通过独立的机制介入并尝试修复环境。

核心功能

dsh-doctor 提供四种核心能力:
1. Web 启动恢复:在 60 秒预算内自动尝试恢复因插件导致失败的 Web 服务启动。
2. 工具错误捕获:通过 tools/* 事件钩子捕获所有工具调用错误。
3. 会话监控:监控所有活动会话,检测卡顿并尝试恢复。
4. 安全模式补丁:支持通过写入补丁文件来禁用故障插件或开启安全模式,不直接修改原始配置文件。

安装与启用

安装方式:通过官方目录或 GitHub 仓库安装。
官方目录链接:https://www.skillhub.cn/plugins/d86e/dsh-doctor
GitHub 仓库链接:https://github.com/d86e/dsh-doctor

工作原理

Web 启动恢复(60秒预算)

监控器每 30 秒探测一次 dsh web 健康状态。连续失败三次后进入故障处理流程,硬性限制单次故障恢复总时长不超过 60 秒。

简单路径(约 10 秒):读取日志,通过正则匹配识别故障插件,在 cordis.patch.yml 的兄弟文件中禁用该插件行,然后重启 dsh web。

复杂路径(≤60 秒):若无法定位单一故障,则写入一个覆盖所有插件的“安全模式补丁”(仅允许 dsh-core 运行),重启后进入安全模式,直到安全模式被移除。

工具错误捕获

插件订阅 tools/execute 和 tools/post-execute 事件。当工具调用失败时,错误会被分类并记录,不会阻塞主进程。

会话监控

监控器维护一个会话状态机,检测到回合处于 running 状态且超过阈值时间无新事件时,会通过 agent.followup 发送“继续”消息唤醒会话。同时也提供 dsh_doctor_watch_cancel 用于手动取消。

使用示例

检查正在监控的会话列表:

dsh_doctor_watch_list()

诊断失败的插件:

dsh_doctor_diagnose()

注意事项

  1. CLI doctor 功能:dsh doctor 命令计划在 v0.3.0 版本中推出,当前版本仅支持在运行中的 dsh web 进程内通过工具调用进行诊断。
  2. 独立性:插件不调用或依赖 dsh-daemon,两者共存不会冲突。
  3. 配置文件安全:安全模式补丁和修复操作会写入 cordis.patch.yml(不修改原始文件),您可以随时检查或回滚。
  4. 权限:插件以当前 DSH 进程的权限运行。

结语

dsh-doctor 为 DSH 用户提供了一个独立的故障恢复层,适合需要高可用性和自动容灾的场景。

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

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

小夜