dsh-snowflake-shutdown:DSH 任务完成后可取消倒计时的 Windows 自动关机

前言

在 DeepSeek Harness(DSH)里跑批量迁移、模型生成或过夜任务时,常见需求是「跑完就关电脑」,又不想一直盯着界面。社区里已有 virggle/dsh-shutdown-after-task 一类插件:任务结束后再倒计时关机,期间可以取消。若你用的是 DSH 桌面版(Electron),原版插件往往 右下角按钮根本不出现——刷新页面、完全重启客户端也无效,因为原版只走了服务端渲染页面的 webServer.tapIndex 注入路径,桌面宿主走的是另一套结构化注入行。本文介绍维护者 eeFrank123 的分支 dsh-snowflake-shutdown:在保留原版触发与倒计时逻辑的前提下,补上桌面端注入,并把控制条收成雪花圆按钮;分类为 客户端,当前包版本 0.3.1(MIT)。插件以当前 DSH 进程权限运行,安装前建议自行查看仓库源码与许可证。

这是什么

dsh-snowflake-shutdown 是 DSH 的 Windows 侧插件(README 写明零依赖):点一下窗口右下角的雪花按钮即可「武装」——本批次全部 root 会话跑完且满足成功条件时,弹出倒计时并调用 shutdown.exe;倒计时内可取消。默认 不会自动开启,需要手动点按钮。

本仓库明确写明是 dsh-shutdown-after-task 的桌面版修复 + 界面精简分支;功能行为(触发判定、成功判定、倒计时、取消)与原版一致,并修了桌面不可用与按钮避让抖动等问题。可与原版 同时安装(路由前缀、日志文件名、类名均已区分,不会抢同一 HTTP 路由)。

相对原版解决了什么

下面几条来自 README 的「为什么会有这个分支」与改动表,便于判断是否该装这个 fork。

  1. 桌面端可见:除保留 tapIndex(浏览器 / dsh web)外,额外注册 webserver/index-inject 行,推送 script-src 指向 /api/dsh-snowflake-shutdown/ui.js。
  2. 更小的控件:约 150×34 文字条改为 32×32 圆形雪花按钮;提示面板按内容收缩,固定在窗口右下角,与按钮重叠时上移到按钮上方。
  3. 避让抖动修复(0.3.1):用未偏移时的按钮位置做重叠判断;整窗模态/遮罩不再误触发让开。

核心功能与行为

界面与操作

  1. 点右下角雪花按钮 → 变黄表示已武装;再点一次取消武装。
  2. 按钮可拖动,位置保存在浏览器 localStorage。
  3. 全部 root 会话从 running 回到 idle,且本批次无错误(在 onlyOnSuccess: true 时)→ 右下角出现「任务已完成 / N 秒后自动关机」。
  4. 倒计时内点「取消关机」→ 执行 shutdown /a,并 退出武装模式;倒计时内若再发新消息 → 只撤销本次关机,武装模式保持。

触发与系统命令

项 说明
触发时机 武装后,全部 root 会话 idle
成功判定 本批次没有 agent/error(仅 onlyOnSuccess: true 时)
倒计时 配置项 countdownSec,横幅显示剩余秒数
系统指令 倒计时开始时 shutdown /s /t <countdownSec + marginSec>
状态查询 GET http://127.0.0.1:<port>/api/dsh-snowflake-shutdown/state

运行日志:$DSH_HOME/dsh-snowflake-shutdown.log(Windows 默认 C:\Users\<你>\.dsh\dsh-snowflake-shutdown.log)。

安装与启用

DSH 生态是「一切皆插件」;插件也可从社区目录页浏览,该站点与 DeepSeek / 幻方无官方从属关系。安装命令以仓库 README 为准。

从 GitHub 安装(桌面 profile):

dsh plugin --profile desktop add github:eeFrank123/dsh-snowflake-shutdown

若使用网页版 profile,将 --profile desktop 换成 --profile web。

从本地目录安装(示例路径按你机器修改):

dsh plugin --profile desktop add file:E:\path\to\dsh-snowflake-shutdown

装完后 必须完全退出 DeepSeek Harness(含系统托盘图标 → 右键 → 退出),再重新打开。README 说明:界面脚本与注入行在宿主启动时收集,只刷新页面(F5)或关窗到托盘 不算 重启。

若 dsh plugin ... add 报 lockfile entries failed verification 或 within the minimumReleaseAge cutoff,README 建议等满 24 小时再装,或临时:

dsh plugin --profile desktop add dsh-snowflake-shutdown --config.minimumReleaseAge=0

从 GitHub 安装卡住时,可按 README 为 git 配置代理后再试。

卸载:

dsh plugin --profile desktop remove dsh-snowflake-shutdown

配置

在对应 profile 的 cordis.patch.yml(或 设置 → 插件配置)中:

- id: dsh-snowflake-shutdown
  config:
    countdownSec: 60      # 倒计时秒数(10–600,默认 60)
    marginSec: 5          # 系统 shutdown /t 额外余量(0–60,默认 5)
    onlyOnSuccess: true   # 仅成功时关机(false = 只要跑完就关,含出错)

适用场景与限制

适合:在 Windows 上用 DSH 桌面版跑长任务,希望任务结束后自动关机,且需要可取消倒计时;原版关机插件在桌面版没有按钮时,可改用本分支。

务必注意:

  • 仅 Windows:其他平台插件保持惰性并写日志。
  • 武装状态在内存中,DSH 重启后需重新点按钮。
  • root 会话 idle 但 inbox 仍有排队消息时也会触发(判定是「全部 root 空闲」)。
  • 新增或修改插件后需 完整重启客户端 才能看到界面变化。

想换回原版时,README 给出先 remove 本插件再 add dsh-shutdown-after-task 的步骤。

链接

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

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

小夜