前言¶
在 DeepSeek Harness(DSH)里跑长对话或批量任务时,常会等到 Agent 跑完再离开工位。若希望「这一轮真正结束就关机」,手动盯着界面再点系统关机既费事,也容易在子 Agent 还在跑时误关。社区插件 dsh-auto-shutdown(维护者 873360545)在 Settings → General 增加一个开关:打开后,下一次根会话对话完成时由本机调度关机,并弹出可一键取消的原生 Windows 倒计时对话框。插件仅支持 Windows,要求 DeepSeek Harness ≥ 0.2.1;当前包版本为 0.3.0,许可证 MIT。DSH 生态强调「一切皆插件」,插件目录托管在 SkillHub 等社区站点,与 DeepSeek / 幻方无官方从属关系。
这是什么¶
dsh-auto-shutdown 是分类为「客户端」的 DSH 插件:Host 侧监听回合结束事件,Client 侧在通用设置里渲染开关与配置项。它不替代系统电源策略,而是在你明确打开开关后,把「对话结束 → 延迟关机 → 可选取消」串成一条可复现的路径。
核心功能¶
- 设置里的一键开关:文案为「对话完成后自动关机」(英文界面为 “Power off after the conversation finishes”),与 Host 配置表单绑定,修改无需重启 Harness。
- 一次性触发:排定关机前会把
enabled写回false,重启 Harness 后也不会因残留配置突然关机。 - 原生倒计时对话框:默认在关机前弹出 WinForms 窗口,可点「取消关机」执行
shutdown /a;也可在任意终端执行shutdown /a取消。 - 根会话限定:只有根 Agent 的回合结束能触发;子 Agent / 团队成员回合忽略;若仍有其它 Agent 在跑,会等到下一次回合边界。
- 可配置延迟与是否弹窗:
delaySeconds控制shutdown.exe /s /t的秒数;popup为false时可不显示对话框(仍可通过shutdown /a取消)。
实现上,Host(lib/index.js)在 agent/turn-stopping 上过滤根 Agent、单次 latch、写回配置并 spawn shutdown.exe;取消窗由 lib/popup.js 与 assets/notify.ps1(PowerShell 5.1)拉起,文案经 argv 传入以保持脚本 ASCII-only,避免非 UTF-8 代码页破坏中文。
安装与启用¶
在 PowerShell 中执行官方安装命令之一:
dsh plugin add github:873360545/dsh-auto-shutdown
或从 GitHub Release 安装预构建包:
dsh plugin add https://github.com/873360545/dsh-auto-shutdown/releases/latest/download/dsh-auto-shutdown.tgz
安装后重启 Harness(重启 Host 即可),在 profile 中应能看到插件条目 auto-shutdown。
典型用法¶
- 打开 设置 → 通用,找到「对话完成后自动关机」,打开开关。
- 正常结束一次对话。该轮结束时插件会:将开关自动关回;执行
shutdown.exe /s /t <delaySeconds>;若popup为true,弹出倒计时对话框。 - 在对话框中:
- 点 取消关机 → 运行shutdown /a,机器保持开机;
- 点 继续关机、关闭窗口或倒计时归零 → 按计划关机。
配置项¶
以下字段可在设置页与插件页实时修改,无需重启:
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled |
false |
总开关;排定关机前会自动写回 false,保证只触发一次。 |
delaySeconds |
60 |
关机延迟秒数(5–86400),与弹窗倒计时一致。 |
popup |
true |
是否显示取消关机对话框。 |
适用场景与注意¶
适合:在 Windows 上用 DSH 跑完一轮根对话后希望自动关机、又不想长期开着「定时关机」的用户;需要离开前留几十秒缓冲、且希望能一键反悔的场景。
务必注意:
- 插件以当前 DSH Host 进程所属用户权限运行;
shutdown /s /t对已登录用户可用,README 说明不需要管理员权限。安装前仍建议阅读 GitHub 仓库 源码与 MIT 许可证,确认行为符合你的环境策略。 - 弹窗逻辑只会执行
shutdown /a,不会自行再排定关机。 - 调试:在 Host 环境变量中设
DSH_AUTO_SHUTDOWN_DRYRUN=1可只记录将要执行的命令而不真正关机;设DSH_AUTO_SHUTDOWN_POPUP_LOG=<文件>可将弹窗用户操作追加到日志文件。
结尾¶
dsh-auto-shutdown 把「对话结束」和「本机关机」绑成可撤销的一次性动作,配置简单、默认带安全取消路径。目录页:SkillHub - dsh-auto-shutdown;源码与完整说明:GitHub - 873360545/dsh-auto-shutdown。