dsh-boot-guard:DSH Web UI 启动失败时的独立救援控制台

前言

DeepSeek Harness(DSH)允许通过插件扩展 Web UI。插件把本地工作区的能力拆开,但也带来一个现实问题:某个插件加载失败时,Web UI 可能直接起不来,插件管理页也无法打开。

dsh-boot-guard 是为这个场景准备的 loader-independent rescue console。它不依赖正常客户端插件加载链;当页面只剩 Failed to load plugins 时,由 host 提供救援入口,用来找疑似故障插件、临时跳过、刷新重试。

DSH 的插件目录是社区站点,不是官方应用商店。下面介绍 SaiSenBox/dsh-boot-guard 的功能、安装、用法和安全边界。

这是什么

dsh-boot-guard 是一个 DSH Web UI 救援插件。它不删除插件,也不碰插件的数据;所谓“跳过”,只是向当前 DSH profile 的 cordis.patch.yml 写入一个带 Boot Guard 标记的 disabled: true 数组项。恢复时,它也只会处理自己写入的标记。

版本与许可信息如下:

  • 包名:dsh-boot-guard
  • 仓库:https://github.com/SaiSenBox/dsh-boot-guard
  • 维护者:SaiSenBox
  • 版本:1.1.2
  • 许可证:MIT © 2026 SaiSenBox
  • peerDependencies@deepseek-ai/cordis ^4.0.1
  • Node.js:^22.19.0 || >=24.0.0
  • 验证环境:DSH 0.1.0-rc.6、Node.js 24.5.0、Windows

核心功能

  • 从加载错误里找出疑似故障插件,并自动选中
  • 默认只看用户插件,也可以搜索名称或 loader 条目 ID
  • 临时跳过一个或一批插件,刷新后立即重新尝试启动
  • 单独恢复某个插件,或在二次确认后恢复全部救援跳过项
  • 明确区分“Boot Guard 临时跳过”和“配置原本就禁用”
  • 复制一份简短诊断,方便贴到 Issue 里一起排查
  • 界面提供中文和英文,并跟随 DSH 设置里的语言选项
  • 提供暗色、亮色和窄屏适配的只读自检页

安装与启用

先安装并运行 DeepSeek Harness。从 GitHub 安装:

dsh plugin --profile web add github:SaiSenBox/dsh-boot-guard

这条命令把插件添加到 web profile。安装完成后重启 dsh web

dsh web

README 还给出 npm 安装命令。由于它的前提是“这个包已经发布到 npm”,本文不确认当前发布状态;如果确认可用,可以用:

dsh plugin --profile web add dsh-boot-guard

在 Windows 上做本地开发安装时,可以:

git clone https://github.com/SaiSenBox/dsh-boot-guard.git
cd dsh-boot-guard
powershell -ExecutionPolicy Bypass -File .\install.ps1

本地安装器会把依赖放在 DSH profile 同盘目录,避开 Windows 上跨盘 file: 依赖可能产生的坏 junction。

典型用法

先做一次只读自检。启动 DSH Web 后,打开以下地址:

http://127.0.0.1:3080/boot-guard/preview
http://127.0.0.1:3080/boot-guard/preview?theme=light
http://127.0.0.1:3080/boot-guard/health

自检页只展示界面和诊断结果,不会真的改配置。搜索、筛选和勾选都能试,但最终操作不会写入配置。

当插件真正导致启动失败时,按下面步骤处理:

1、页面出现 Failed to load plugins,恢复中心会自动挂在错误信息下方。

2、先看“疑似故障”是否找对了;没找对就搜索名称或 loader 条目 ID,并勾选其他插件。

3、点击“跳过所选并刷新”。页面会重新加载,不需要重启整个 DSH 进程。

4、修好插件后,在“救援已跳过”里逐个恢复,或者使用“恢复已跳过”。

恢复全部需要点两次,主要是防手滑。单次最多处理 64 个条目;如果一次需要处理更多插件,可以分批跳过和恢复。

安全边界

这个插件会修改本地配置,所以边界写得比较死:

  • 写接口只接受同源 POST + JSON 请求,并且默认只允许本机回环连接
  • 校验请求体大小、条目数量和 ID 格式
  • Boot Guard 不能把自己设为跳过
  • 找不到明确声明了 dsh.profile 的 profile 时自动进入只读模式,不会猜测当前目录
  • 写入前确认配置是顶层 YAML 数组;空文件与 [] 会安全归一化,其他结构直接拒绝
  • 配置修改串行执行,通过同目录临时文件原子替换,并在提交前检查外部改动后重新计算
  • 恢复只认 Boot Guard 自己的标记,不会顺手清理用户配置
  • 不做遥测,也不会把错误信息发到外部服务

如果确实需要从非回环地址执行恢复操作,可以在启动 DSH 前显式设置:

DSH_BOOT_GUARD_ALLOW_REMOTE_MUTATION=1

这会放宽 Boot Guard 的本机限制;没有额外认证保护时不建议开启。

适用场景与注意

  • 适合本地 DSH 插件开发、调试和排障,尤其是在插件管理页无法打开时提供一个紧急入口。
  • 该插件会运行在当前 DSH 进程内,并能修改当前 DSH profile 的本地配置。安装前应先检查源码、许可证和仓库信息。
  • DSH 目前仍是 developer preview,插件接口可能继续变化。当前版本在 DSH 0.1.0-rc.6、Node.js 24.5.0 和 Windows 上完成验证,并遵循 Node.js ^22.19.0 || >=24.0.0
  • 如果新版本导致救援入口异常,可以带上 DSH 版本和“复制诊断”的内容提 Issue。

链接

  • GitHub 仓库:https://github.com/SaiSenBox/dsh-boot-guard
  • 目录页地址:https://www.skillhub.cn/plugins/SaiSenBox/dsh-boot-guard
羽毛球分组比赛记分
小程序二维码

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

小夜