dsh-restart:DeepSeek Harness 的安全重启执行插件

DeepSeek Harness (DSH) 采用插件化架构,核心逻辑通过插件扩展。当需要重启 DS-Hns 实例或操作系统时,直接操作进程往往难以保证数据完整性或安全关机。dsh-restart 作为一个 DSH 插件,专注于重启的执行层面。它不负责决定“是否”需要重启(那是健康调度器的工作),而是确保重启过程符合锁机制、检查点和优雅关闭等安全协议。

定位与职责

dsh-restart 是一个 MIT 许可的插件,主要职责是处理重启请求的执行流程,而非调度决策。它不包含任何健康策略、温度阈值、时间调度或任务队列访问逻辑。

插件加载时会将其重启适配器发布到 Harness 上下文的 ctx.healthScheduler 上,以便 dsh-health-scheduler 能够发现并连接它。如果两者在同一个 profile 中,无需编写胶水脚本即可协同工作。

核心功能

该插件通过以下步骤确保重启安全:

  1. 请求处理:接收并验证重启请求。
  2. 安全门控:通过独占锁防止并发重启,并通过检查点门控确保系统处于安全点。
  3. 票据机制:写入包含校验和的票据文件。
  4. 优雅关闭:向主机请求优雅关闭。
  5. 观察与重启:允许外部观察者监控退出状态并执行重启。

安装

从 npm 或 tarball 安装(推荐)

推荐使用已构建好的 npm 包,避免构建时的代码执行风险。

dsh plugin --profile web add dsh-restart

从 Git 安装

从 Git 仓库安装会运行 npm run build,这意味着在安装时可能会执行任意代码。这取决于你的包管理器配置(如 npm 的 prepare 脚本)。

dsh plugin --profile web add github:dsh-restart/dsh-restart

使用安装脚本

使用官方提供的 PowerShell 脚本可以自动完成注册、验证和冒烟测试。

pwsh -File scripts/install.ps1

使用 Supervisor 重启

dsh-restart 本身不执行重启,而是将重启请求交给外部 Supervisor。Supervisor 是一个独立的、长生命周期的进程,必须与 DSH 主进程分离运行,以便在主进程退出后接管重启。

启动 Supervisor 的命令如下:

node bin/supervisor.mjs --state "$env:DSH_HOME\restart" -- node dsh.js --profile web

Supervisor 负责监视重启票据、心跳和日志,并在 DS-Hns 退出后重新启动它。

注意事项

  • Git 安装风险:如前所述,Git 安装会触发 npm run build。如果安装后出现 no lib/index.js 错误,通常是因为包管理器未正确运行构建脚本,此时应切换到 npm/tarball 安装或手动构建。
  • Supervisor 独立性:Supervisor 必须是分离的进程。如果作为子进程启动,它将随 DSH 进程一同终止,导致重启失败。
  • 权限与安全:插件以当前 DSH 进程的权限运行。建议在部署前检查源代码与许可证。

总结

dsh-restart 提供了重启执行层的标准化接口,解耦了“何时重启”的决策逻辑与“如何重启”的执行逻辑。其最坏情况是“自动重启不可用”,而非插件本身不可用。

详细文档与源码可参考:GitHub | 插件目录

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

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

小夜