virggle/dsh-shutdown-after-task
Shut down Windows after DeepSeek Harness tasks complete — button-armed, cancellable countdown. 任务完成后自动关机(按钮开启,倒计时可取消)。Zero-dependency DSH plugin.
已收录
1
Workflow
Bundle 已验证
预览
功能介绍
任务完成后自动关机:右下角按钮开启模式,任务成功完成后进入可取消的倒计时(取消走 shutdown /a),零运行时依赖。
适合
- 适合在 Windows 上运行长时间迁移、生成任务或过夜 DSH 任务,并希望完成后关机的用户。
- 适合需要等待所有根会话空闲后再启动可取消倒计时的多会话流程。
- 适合希望仅在任务批次成功后关机,并且默认必须手动开启该模式的用户。
不适合
- 不适合 macOS 或 Linux,因为插件只调用 Windows 的 shutdown.exe,在其他平台保持不活动。
- 不适合要求关机模式跨 DSH 重启保留的流程,因为开启状态只存于内存。
- 不适合根会话虽空闲但收件箱仍可能有排队消息的流程,因为空闲状态可能触发倒计时。
README
dsh-shutdown-after-task
任务完成后自动关机 —— DeepSeek Harness 插件(零依赖,Windows)。
跑长任务(批量迁移、模型生成、过夜任务)时,点一下右下角的「任务完成后关机」按钮, 任务成功完成后电脑自动关机;倒计时期间可一键取消。
功能
- 右下角浮动文本按钮:点击切换「任务完成后关机」模式(默认关闭,绝不自动武装)
-
可取消倒计时:任务完成 → 60 秒倒计时横幅(实时剩余秒数)+「取消关机」按钮
(
POST /cancel→shutdown /a)——不依赖系统层那个无法取消的通知 - 新任务打断:倒计时期间任一会话开始新任务 → 自动撤消关机,模式保持开启
- 取消即退出:点「取消关机」= 取消本次关机 + 退出模式(下个任务不再触发)
- 仅成功时关机:本批次有会话出错则不关机,横幅提示原因,模式保持开启
- 多会话判定:全部 root 会话空闲才算任务完成(子代理并入其 root 统计)
安装
dsh plugin --profile web add github:<owner>/dsh-shutdown-after-task
重启 DSH 后生效:右下角出现按钮。若按钮未出现,刷新页面(Ctrl+R)。
也支持本地路径 / tarball 安装:
dsh plugin --profile web add ./dsh-shutdown-after-task
使用
- 点右下角「任务完成后关机」→ 按钮变黄(已开启)
- 正常跑任务
- 全部会话空闲且无错误 → 右下角弹出倒计时横幅
- 倒计时内点「取消关机」→ 本次关机取消、模式退出;不点则到点关机
配置
编辑 profile 的 cordis.patch.yml(或设置 > 插件配置):
- id: dsh-shutdown-after-task
config:
countdownSec: 60 # 倒计时秒数(10–600,默认 60)
marginSec: 5 # 系统 shutdown /t 额外余量(0–60,默认 5)
onlyOnSuccess: true # 仅成功时关机(false = 完成即关,含出错)
行为细节
| 项 | 说明 |
|---|---|
| 触发时机 | 模式开启后,全部 root 会话从 running 回到 idle |
| 成功判定 | 本批次无 agent/error(仅 onlyOnSuccess: true 时) |
| 倒计时 |
countdownSec 秒,GUI 横幅实时显示,可点「取消关机」 |
| 系统指令 | 倒计时开始时执行 shutdown /s /t <countdownSec + marginSec>
|
| 取消方式 | GUI 取消按钮(退出模式)/ 倒计时内发新消息(保持模式) |
| 状态查询 | GET http://127.0.0.1:<port>/api/dsh-shutdown-after-task/state |
运行日志
$DSH_HOME/dsh-shutdown-after-task.log(挂载、武装、触发、取消全记录)。
工作原理
- 纯配置层 cordis 插件:
webServer.tapIndex把 UI 脚本注入每次 index 响应, 宿主 HTTP 路由提供状态与操作——无需 client bundle、无需构建 - 事件依据
agent/status/agent/error(见@deepseek-ai/dsh-agentruntime-types) - 卸载时自动注销路由与注入(fiber disposer)
已知限制
-
仅 Windows:执行
shutdown.exe;其他平台插件保持惰性并记日志 - 模式状态在内存中:DSH 重启后默认关闭,需重新点按钮
- root 会话 idle 但 inbox 有排队消息时也会触发(按「全部 root 空闲」判定)
- 页面需刷新一次才出现按钮(脚本随 index 响应注入)
卸载
dsh plugin --profile web remove dsh-shutdown-after-task
致谢与参考
- 事件挂接参考 yang040709/dsh-win-toast-notify(MIT)
- 插件结构参考 keyiadiannao/dsh-power-button(MIT)
License
MIT
常见问题常见问题
在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:virggle/dsh-shutdown-after-task。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。