前言¶
在 DeepSeek Harness(DSH)里跑长任务时,常见做法是晚上交给 agent 一批工作,希望全部跑完就关机,人不必守在屏幕前。但「看起来没动静」并不等于可以安全关机:后台任务可能还在跑、某条会话已报错、agent 在等你点选或回答、或者你中途手动终止了任务。在这些情况下直接关机,轻则丢进度,重则把半成品的磁盘状态留在机器上。
下面介绍社区插件 dsh-shutdown-guard(仓库 ltayshark0637/dsh-Shutdown-Guard)。它在 DSH 侧边栏增加一张守夜卡片,用多条判定条件挡掉误关机,并在满足条件时通过 Windows 的 shutdown /s 安排关机。维护者为 ltayshark0637,当前 npm 版本 1.5.1,许可证 MIT;在 SkillHub 目录中归类为客户端插件。DSH 社区目录(如 SkillHub 条目)为独立站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
Shutdown Guard 为 DSH Web 侧边栏添加「所有任务完成后自动关机」卡片:位置在「技能中心」下方、会话列表上方,随任务状态实时变化。相比简单监听「空闲就关」,它把武装状态、后台任务、会话报错、阻断性错误等拆开处理,并把「上次为什么没关机」写进卡片与设置页。
插件要求 DSH >= 0.1.5-rc.1、Node >= 22.19,且 仅支持 Windows(package.json 中 os 为 win32;非 Windows 平台插件静默不加载)。关机命令以当前 dsh 进程权限 执行;安装前建议阅读仓库源码与 MIT 许可证,确认行为符合你的环境策略。
核心功能¶
五道闸门与关机命令¶
处于阻断态时不会下发关机。其余情况下,需同时满足以下五条才会调用 shutdown /s(README 中表述为五道闸门):
- 已武装 —— 用户在卡片上手动开启。
- 没有倒计时在跑 —— 避免重复下发。
- 所有 root 会话都空闲 —— 无 agent 仍在执行;设置中「会话都停下来」为底线,不可关闭。
- 没有运行中 / 停止中的后台任务 —— 对应配置
blockOnJobs,默认开启。 - 本批次没有会话报错 —— 对应配置
onlyOnSuccess,默认开启。
任一条件不满足则跳过本轮,原因可在卡片与设置页查看。满足条件后进入倒计时(默认 60 秒,另有 8 个自定义档位可调),倒计时期间可取消;取消后仍保持武装,下一批任务完成仍会走同样流程。
六种运行状态与三种外观¶
状态流转大致为:未开启 → 待命 → 等待后台任务 → 倒计时 → 已下发;任意阶段遇到阻断性错误进入 阻断。
设置页可在三种外观间切换,立即生效、无需重启 DSH:
- A · 警戒带:大字状态 + 底部滚动红黄斜纹。
- B · 雷达:同心圆与扫描光束,会话与后台任务以圆点呈现(数量变化时圆点增删、不重排)。
- C · 终端:命令行摘要 + 六段判定条件指示灯。
未安装插件前,可用仓库提供的交互演示页查看判定逻辑与外观(数据本地随机,不联网)。
阻断态与 AFK 接管¶
阻断分为两类,武装不会被自动解除:
halted:需人工处理(如额度不足、凭证失效、上下文超限等),需点「解除并重试」。waiting:限流、5xx、网络中断等,按错误类型配置的重试策略自动重试,到点注入「继续原计划」类指令。
AFK 自动接管(默认开,可在设置关闭)在武装期间包括:自动回复 agent 提问(不替你选中任何选项)、会话报错时的恢复策略、以及识别「半路手动终止」以避免误关机。
配置与日志¶
运行时配置项(README 表格)包括 countdownSec、marginSec、onlyOnSuccess、blockOnJobs、afkAutoAnswer、language 等;可通过 POST /config 或插件目录内 patch 修改。事件流水在插件目录 data/events.log,设置页可查看最近事件;UI 偏好存于浏览器 localStorage(如 dsh-shutdown-guard.variant)。
安装与启用¶
官方推荐从 npm 安装(Web profile):
dsh plugin --profile web add dsh-shutdown-guard
或从 GitHub 安装:
dsh plugin --profile web add github:ltayshark0637/dsh-Shutdown-Guard
装完后重启 DSH。README 说明:客户端 bundle 只在 DSH 启动时编入模块图,修改 lib/client.js 后必须重启,仅刷新页面无效。网络受限时优先走 npm registry;GitHub 安装依赖 clone,若不通可使用 DSH 设置 → 插件 → 添加本地目录绝对路径等方式(详见 README「安装」与「网络受限时」小节)。
典型用法¶
- 安装并重启 DSH 后,在侧边栏「技能中心」下方找到 Shutdown Guard 卡片。
- 确认设置页中「何时关机」相关开关符合预期(例如是否要求后台任务跑完、是否在有会话报错时跳过本轮、是否开启 AFK 自动回答)。
- 长任务开始前在卡片上武装;任务运行期间卡片随会话与后台任务状态变化。
- 全部闸门满足后进入倒计时;若需反悔,使用卡片「取消关机」或系统侧
shutdown /a。 - 若未关机,在设置页查看「上次为什么没关机」或
data/events.log排查。
适用场景与注意¶
适合:在 Windows 上使用 DSH Web,夜间或离席跑批处理/agent 任务,且希望在严格条件下自动关机、并愿意手动武装的用户。
务必注意:
- 插件会经
subprocess调用shutdown.exe(/s /t与/a),仅在武装且闸门全满足时调用;仍属高影响操作,建议在测试环境先走一遍演示页与武装/取消流程。 - 监听
agent/status、agent/error等事件,并提供本机/api/dsh-shutdown-guard/路由;POST 校验 Origin 为127.0.0.1或localhost。README 写明不发起外部网络请求。 - 非 Windows 暂不可用;FAQ 中说明等待后续开发。
结尾¶
Shutdown Guard 把「任务完成」拆成可检查的闸门与可见状态,减少离席跑 agent 时的误关机风险,并提供 AFK 提问回复与错误恢复等可选能力。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库(含演示页、CHANGELOG 与开发说明)。