dsh-safety-restart:DeepSeek Harness 安全无感重启插件

前言

在 DeepSeek Harness (DSH) 中,修改宿主半代码(如 index.js 或 lib/*.js)通常需要整进程重启才能生效。Agent 没有重启手段时,只能依赖用户手动操作。这个插件将重启能力下沉到 Agent 层面,并增加了安全控制,确保重启行为可控。

这是什么

dsh-safety-restart 是 DeepSeek Harness 的一个安全、无缝重启插件,由 Dayi-Z 维护,属于 admin-security 类别。它允许 Agent 重启宿主并恢复,但重启前必须通过四道安全闸门(循环熔断、其他会话、不可解析的 bundle、不可用的拉起手段),任何闸门失败都会拒绝重启并说明原因。

核心功能

  1. 重启循环熔断:基于 loopMax 和 loopWindowMs 的计数器,防止 Agent 在配置错误时陷入无限重启风暴。
  2. 会话状态检查:在重启前检查是否有其他会话处于活跃状态(turn/start 之后未 turn/end),避免打断他人工作。
  3. Profile Bundle 验证:检查 node_modules 和入口文件是否存在,拒绝 checked:false 的配置。
  4. 跨平台拉起机制:
    • 桌面端使用 Electron app.relaunch()。
    • Web/CLI 使用 process.exit() 和分离的 helper。
  5. 会话恢复机制:重启前写入续作标记,重启后恢复会话上下文。
  6. 审计日志:记录所有重启决策和状态,文件名为 safety-restart-audit.l。

安装与启用

在 profiles/<name>/package.json 中添加依赖和 bundle:

// profiles/<name>/package.json
{
  "dependencies": { "dsh-safety-restart": "link:/path/to/dsh-safety-restart" },
  "dsh": { "profile": { "bundles": [ "...", "dsh-safety-restart" ] } }
}

安装后必须重启一次 DSH 实例,以确保插件被加载。

典型用法

Agent 侧调用:

safety_restart({ reason: "改了宿主半的 index.js,让新路由生效" })
safety_restart({ reason: "...", force: true })

UI 操作:设置 → 插件 → 「dsh-safety-restart」卡片。

HTTP API(仅接受本机请求):

GET  /safety-restart/status
POST /safety-restart/restart   { "reason": "ui" }

适用场景与注意

  • 权限与执行:插件以当前 DSH 进程的权限运行,安装前应检查源码与许可证。
  • 健康检查机制:Web/CLI 端的健康检查是 TCP 端口恢复,不是 HTTP 200。
  • 会话检查范围:busy 状态只覆盖本进程启动之后的会话,更早的会话不在此列。
  • Bundle 检查范围:仅证明文件存在,不证明导入成功,更不证明客户端契约正确。
  • 网络限制:HTTP API 只接受本机请求,反代或远程访问会被 403。
  • 客户端兼容性:客户端代码需要兼容 rc 契约(list 或 keyed)。

总结

dsh-safety-restart 将 Agent 的重启能力从手动操作转变为可调用的工具,同时通过四道闸门确保环境不会因重启而损坏。它提供了审计日志和会话恢复机制,适合需要频繁调整宿主代码的场景。

目录页 | GitHub 仓库

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

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

小夜