DSH Lifeboat:DSH 配置文件的无进程安全启动、故障隔离与恢复工具

前言

在 DeepSeek Harness (DSH) 的使用中,Profile 配置失败或 Harness Loader 崩溃会导致开发流程中断。传统的排查方式往往依赖正在运行的进程,一旦 Loader 挂掉,诊断便无从下手。DSH Lifeboat 提供了一种隔离式的解决方案,确保即使在主进程无法启动的情况下,也能对配置进行诊断并尝试恢复。

这是什么

DSH Lifeboat 是一款由 IoveCelestina 维护的 DSH 插件。它作为一套独立的“救生艇”系统,专门用于处理 Profile 的安全启动、故障隔离和恢复操作。其核心价值在于将诊断和恢复流程与主 Harness 进程完全解耦,确保恢复操作在隔离的临时环境中进行,且不会直接破坏原始配置文件。

核心功能

DSH Lifeboat 提供了以下核心能力:

  • 无进程恢复控制台:Rescue 服务器是一个独立进程,绝不运行在失败的 Harness 进程内部。这意味着即使 Loader 挂掉,控制台仍可访问。
  • Web UI 与 CLI 双模式:
    • Web UI:监听 127.0.0.1,提供实时探针进度、证据查看、已验证恢复方案选择、报告下载以及一键撤销功能。
    • CLI 模式:用于自动化诊断,直接输出 dsh-lifeboat/v1 JSON 格式的诊断报告。
  • 智能诊断机制:
    • 使用 dsh --profile <name> --dump-config 生成配置快照。
    • 将快照克隆到临时 Home 目录进行探针测试,确保原始文件保持只读。
    • 采用“上界优先移除搜索”算法,结合 Delta 调试和精确枚举,寻找最小化的故障 Bundle 移除方案。
  • 安全恢复机制:
    • 在应用恢复前,执行全量指纹检查、乐观清单哈希校验和时间戳备份。
    • 使用跨进程锁防止并发恢复操作。
    • 恢复操作是原子的,支持撤销,并记录恢复收据。
  • 状态标记:安装后会在选定的 Profile 上添加健康标记,并在 Loader 稳定后写入 ~/.dsh/lifeboat/last-healthy.json。

安装与启用

安装插件需要通过 DSH 的 CLI 命令添加官方发布的 Release 包:

dsh plugin --profile web add https://github.com/IoveCelestina/dsh-lifeboat/releases/download/v0.1.1/dsh-lifeboat-0.1.1.tgz

安装完成后,可以通过以下方式启用诊断或恢复服务:

  • 启动 Web UI:
    node ./src/cli.js serve
默认端口为 4317,使用 `--port 0` 可获取随机可用端口。
  • CLI 诊断:
    node ./src/cli.js diagnose --profile web
    node ./src/cli.js diagnose --profile web --json
  • 带运行时探针的启动测试:
    node ./src/cli.js diagnose --profile web --mode boot --allow-runtime-code-execution

适用场景与注意

  • 运行环境:插件依赖 Node.js,要求版本为 ^22.19.0 或 >=24.0.0。插件本身无运行时依赖。
  • 恢复逻辑:恢复计划提供的是技术解决方案(如移除 Bundle),而非道德归责。如果 A 和 B 仅在同时运行时失败,Lifeboat 会提供“禁用 A”或“禁用 B”作为等价选项。
  • 应用限制:“应用恢复”功能仅当报告包含独立验证的 Bundle 移除计划时才可用。
  • 报告存储:诊断报告默认存储在 $DSH_HOME/lifeboat/reports,系统会自动保留最新的 500 个报告。如需外部策略管理,可设置 --max-reports 0。
  • 分发渠道:Release 包通过 GitHub Releases 分发,不经过 npm 仓库。

结尾

DSH Lifeboat 通过将诊断与恢复流程与主 Harness 进程解耦,提供了一个可靠的兜底手段。对于需要稳定保障 DeepSeek Harness Profile 稳定性的场景,它是一个值得纳入工具链的插件。

插件目录页
GitHub 仓库

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

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

小夜