前言¶
在 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。
- 桌面端可见:除保留
tapIndex(浏览器 /dsh web)外,额外注册webserver/index-inject行,推送script-src指向/api/dsh-snowflake-shutdown/ui.js。 - 更小的控件:约 150×34 文字条改为 32×32 圆形雪花按钮;提示面板按内容收缩,固定在窗口右下角,与按钮重叠时上移到按钮上方。
- 避让抖动修复(0.3.1):用未偏移时的按钮位置做重叠判断;整窗模态/遮罩不再误触发让开。
核心功能与行为¶
界面与操作¶
- 点右下角雪花按钮 → 变黄表示已武装;再点一次取消武装。
- 按钮可拖动,位置保存在浏览器
localStorage。 - 全部 root 会话从 running 回到 idle,且本批次无错误(在
onlyOnSuccess: true时)→ 右下角出现「任务已完成 / N 秒后自动关机」。 - 倒计时内点「取消关机」→ 执行
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 的步骤。