dsh-auto-shutdown

DSH PLUGIN会话与消息

仓库 ypx01/dsh-auto-shutdown

会话与消息 L5 · 运行验证通过 安全审查:低风险 可信度:金 可安装插件
安装这个插件

dsh-auto-shutdown 是 ypx01 维护的 会话与消息 类 DSH 可安装插件, 仓库为 ypx01/dsh-auto-shutdown,许可证 MIT。 下面按「装什么、怎么装、验没验过、跑起来要注意什么」逐项列出。

一句话选型结论

按资料字段整理

dsh-auto-shutdown 是会话与消息类的 DSH 可安装插件,验证等级 L5 · 运行验证通过,安全审查为低风险,有可直接复制的安装命令。验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么;涉及密钥或系统权限的,建议先在隔离环境试装。

分类会话与消息 收录类型可安装插件 验证等级L5 · 运行验证通过 安全审查低风险
验证等级 L5 L5 · 运行验证通过
GitHub 星标 0 复刻 0 · 未关闭 issue 0
最近更新 2026-10-29 创建于 2026-10-29
README 7.3 KB 正文体量,越大说明说明书写得越细

安装

可安装插件
在 DSH 里执行,装完用 dsh plugin list 确认已挂上;标了 L4 / L5 的命令已在沙盒里真实跑通
dsh plugin --profile web add github:ypx01/dsh-auto-shutdown
  1. 1
    确认版本与运行环境

    仓库没有标注兼容版本与 Node.js 要求,先确认你的 DSH 版本能装,再继续。

  2. 2
    执行安装命令

    在 DSH 里执行上面的命令;多包仓库要注意区分具体子包名,别装错包。

  3. 3
    确认已挂载

    用 dsh plugin list 查看列表里是否出现这个插件,出现即挂载成功。

  4. 4
    试跑并检查权限

    加载后跑一个最小用例,确认它能正常工作;同时看它申请了哪些文件、命令或网络权限。

兼容 DSH 版本未标注版本不匹配时安装会报错
Node.js 要求未标注来自仓库 package.json 的 engines 字段
前置依赖无需要同时安装的同级依赖
npm 包名未发布到 npm可用 npm view 查看包信息

能做什么

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注

上游标签

automationdeepseek-harnessdshdsh-pluginwindows

验证等级与安全审查

L5 · 运行验证通过
自动化流程结论,不是人工审核
验证等级L5 · 运行验证通过在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来
安全审查低风险静态分析结论,未标注不代表已通过审查
仓库健康度活跃按仓库活跃度与最近更新时间给出
可信度金综合仓库活跃度与验证结果

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 验证等级 L5:安装和运行都在沙盒里跑通过,装完能直接用的概率高。
  • 静态安全审查为低风险,没有发现明显可疑行为。
  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有声明 Node.js 版本要求,版本不匹配可能装不上。
  • 验证通过不等于安全:插件会读写文件、执行命令或联网,装前先到仓库确认它做了什么。

更适合

  • 需要在会话与消息场景里给 DSH 补能力的人。
  • 想装完就能用、不想自己排依赖的人。
  • 能接受在本地装依赖、愿意自己确认权限的人。

不太适合

  • 只使用 DSH 官方内置能力、不接受第三方插件的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
插件验证等级安全审查星标兼容版本安装命令
dsh-auto-shutdown当前 L5 · 运行验证通过 低风险 0 未标注 有
dsh-desktop L3 · 安装规范通过 低风险 3.0 万 未标注 无
openpets L4 · 沙盒安装通过 低风险 1,274 未标注 有
deeptide L4 · 沙盒安装通过 低风险 1,104 0.1.1-rc.2 有
jingyun-dsh L3 · 安装规范通过 低风险 1,004 未标注 有
study-mate 未做沙盒验证 未标注 856 未标注 无

仓库档案

会话与消息
字段来自项目仓库与公开索引,中文说明由本站标注
作者 / 维护方ypx01仓库 dsh-auto-shutdown · 默认分支 main
分类会话与消息desktop
收录类型可安装插件声明了 dsh.bundle、可用 dsh plugin add 安装的条目
开发语言未标注仓库主语言
许可证MIT商用或二次分发前请确认条款原文
星标 / 复刻 / issue0 / 0 / 0收录时的数值,非实时
创建 / 更新2026-10-29 · 2026-10-29最后推送 2026-10-29
本站收录2026-10-30首次进入本站目录的时间

README 全文

7.3 KB
作者原文,中文版优先;只做安全转义,不改内容

dsh-auto-shutdown — 每会话「任务完成后自动关机」开关

> English: README.en.md

给 DSH 的每个会话在标题栏右侧加一个开关:

开关 行为
关(默认) 任务全部执行完后什么都不做
开 本会话(以及所有也开了开关的会话)手上的活全部执行完 → 倒计时 → 电脑自动关机
多个会话都开 必须全部会话都完成才关机;任何一个还在跑就等
  • 新建会话默认是关。
  • 开关状态不落盘:DSH 重启后全部复位为关(重启后不会莫名其妙关机)。

它怎么判断「任务执行完了」

不是猜的,也不是数事件,而是直接问 harness 自己:

await ctx.waterfall('workspace/session-activity', { sessionId }, () => [])
// [] => 这个会话没活干了

这是 DSH 用来「拒绝归档还有活干的会话」的同一个判据,已经汇总了四类活动源:
turn(正在跑的一轮对话)、job(后台任务)、subagent(子代理)、schedule(定时/计划中的执行)。
所以子代理没跑完、后台 job 还在转,都不会被误判成「完成」。

事件订阅(session/event / api-session/status)只作为瀑布不可用时(例如手动重载插件)的降级路径,
另外负责在会话一有动作时立刻取消倒计时。

三级可反悔

  1. 冷静期(默认 120 秒):所有目标会话都空闲后开始倒计时,按钮上会显示 118 秒后关机,点一下即可取消。
    倒数期间任何会话重新开始干活,倒计时自动作废。
  2. 系统倒计时(默认 20 秒):冷静期到点后执行 shutdown.exe /s /f /t 20。
    此时按钮变成红色的 正在关机 18 秒,点它等于执行 shutdown.exe /a 撤销。
  3. 真正关机。

判定范围(可配置)

默认 requireGlobalQuiet: true:除了开了开关的会话,其它任何在线会话(包括子代理会话)也都要空闲,
才会关机——避免出现「A 会话挂了自动关机,结果把 B 会话正在写的稿子关掉」。
只想看开了开关的会话,把它设为 false。

安装

插件目录:D:\deepseek-workspace\plugins\dsh-auto-shutdown

用 plug-in manager 装本地目录(软链,改了源码重载插件即生效):

plugin_manager { action: "install_bundle", target: "D:\\deepseek-workspace\\plugins\\dsh-auto-shutdown" }

装完刷新 Web GUI(地址以 dsh web 启动时打印的为准,形如 http://127.0.0.1:6673),会话标题栏右侧应出现「自动关机」按钮。

配置

cordis.patch.yml 里的 config(也可直接在 profile 的组合里覆盖):

键 默认 说明
countdownMs 120000 冷静期毫秒数(最小 1000)
shutdownGraceSeconds 20 真正调 shutdown /t N 的 N,期间可 /a 撤销
requireGlobalQuiet true 是否要求所有在线会话都空闲
force true 是否加 /f 强制结束阻止关机的程序(不加可能卡在确认界面,自动化就白做)
dryRun false 只演练不真关机,日志里记录将要执行的命令
ignoreKinds [] 不想让某类活动阻止关机时填,如 ["schedule"]
debug false 同时打到 stdout
logFile .dsh/auto-shutdown.log 日志路径;填 null 关闭落盘(测试用)

日志:%USERPROFILE%\.dsh\auto-shutdown.log(JSON 行,含每次 arm/disarm/倒计时/下发命令/撤销)。

自检

# 16 项离线状态机测试(假 ctx,不发真关机)
node D:\deepseek-workspace\plugins\dsh-auto-shutdown\test\state-machine.test.mjs

# 11 项客户端冒烟测试(真跑 client.js,检查每种状态下的文案与请求体)
node D:\deepseek-workspace\plugins\dsh-auto-shutdown\test\client-smoke.test.mjs

# 运行时只看判定、不触发( = dsh web 打印的端口,下同):
#   GET http://127.0.0.1:/api/auto-shutdown/probe

# 运行时验证「下发链路真的通」(只起子进程,不改电脑状态):
#   POST http://127.0.0.1:/api/auto-shutdown/self-test  {"realShutdown":false}
#   → 跑 cmd /c exit 7,返回 exitCode 7 即证明 spawn + cwd 正常

probe 里两类字段最有用:

  • blocking / otherBusy:谁还在忙、忙的是哪一类(turn / job / subagent / schedule)。空 = 随时可以关机。
  • stats.clientAlive:最近 15 秒内浏览器有没有在轮询 /state。它证明「按钮真的加载并活着」,
    不需要看 UI 也能自检。

HTTP 面(仅供本机 UI 使用):

方法 路径 用途
GET /api/auto-shutdown/state?sessionId= 全量状态(含倒计时、阻塞原因)
GET /api/auto-shutdown/probe 只算判定,不改任何状态
POST /api/auto-shutdown/set {sessionId, armed}
POST /api/auto-shutdown/cancel 撤销倒计时 / shutdown /a
POST /api/auto-shutdown/self-test {realShutdown}:真起子进程验证下发链路;true 会下发 shutdown /s /t 6000 并在 1.5 秒后 /a

开发注意(踩过的坑)

  • ctx.subprocess.spawn(spec) 的 cwd 是必填的(2026-10-26 修):harness 的
    validateNoNullByte("options.cwd", spec.cwd) 会对 cwd 直接调 .includes("\0"),
    缺省即 TypeError: Cannot read properties of undefined (reading 'includes')。
    类型声明里 cwd 看起来可省,实现里不行——所以 spec 一律显式给 cwd。
  • 下发失败绝不能静默关掉开关:早期的 fire() 先 armed.clear() 再 spawn,spawn 抛错后
    开关已经没了、pending 也没设,用户看到的就是「倒计时结束 → 按钮变回关闭 → 电脑没关」。
    现在只有 spawn 成功才清开关并进入 pending;失败保留开关、写 lastError,按钮显示「关机失败」。
  • apply 的返回值不会被当作 disposer:cordis 只执行 ctx.effect(fn) 返回的清理函数。
    卸载/重载必须靠 ctx.effect,否则旧路由留在 webServer 里,再次启用会撞
    duplicate prefix route,并且旧 handler 会闭包住已死的 core(僵尸路由)。
    本插件用模块级 state.core + 统一 dispatch 派发:残留的旧路由也只会指向新实例,
    插件未激活时返回 503。
  • host 的 index.js 不会热重载:改完要禁用再启用这一行(plugin_manager set_plugin,
    target 用 include:auto-shutdown 这个 entryId,不是包名),或者在会话里重启 DSH。
  • 客户端模块同样要重新下发:装好后刷新页面才会加载 client.js。
  • CLI 接口没有鉴权限制(仅本机可用),所以不要把这个前缀暴露到公网。

已知边界

  • 仅 Windows(非 Windows 会显示「仅支持 Windows」并拒绝开启)。
  • DSH 进程必须活着:它是执行关机的那一方;退出 DSH 就等于放弃这次自动关机。
  • 开关不持久化(见上)。要在重启后也生效,需要接 ctx.storageDomain,目前刻意没做——重启后自动关机是更危险的行为。
  • requireGlobalQuiet: false 时,若其它会话正在跑长任务,到点会照样关机;反过来 true 且某个会话卡在「一直有活」的状态,会一直不关机(probe 会告诉你是谁、为什么)。

常见问题

6 问
答案由本站依据条目字段整理,不引用上游原文
dsh-auto-shutdown 怎么安装?

在 DSH 里执行 `dsh plugin --profile web add github:ypx01/dsh-auto-shutdown` 即可。

dsh-auto-shutdown 的验证等级是什么意思?

L5 · 运行验证通过。在 dsh 沙盒中完成安装与运行冒烟——装得上、跑得起来

dsh-auto-shutdown 安全吗?

低风险。

dsh-auto-shutdown 装之前要先确认什么?

先看它会读写哪些文件、执行哪些命令、连接哪些网络地址;验证等级只说明装得上、跑得起来,不等于安全。涉及密钥或系统权限的,建议先在隔离环境试装。

dsh-auto-shutdown 用的是什么许可证?

上游标注为 MIT。商用或二次分发前请到仓库确认许可证原文。

这条记录的数据可靠吗?

本站按仓库名去重后合并整理,字段以作者仓库与 npm 元数据为准;安装命令、仓库地址与 README 保持原文,带 L4 / L5 标记的安装命令已在隔离沙盒里真实跑通。

同名或近似条目

1 条
不同作者的仓库分开列,请确认你要装的是哪一个
会话与消息
按星标排序,可作替代方案

dsh-desktop

dsh-desktop

为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。

L3 · 安装规范通过 3.0 万 星

openpets

openpets

L4 · 沙盒安装通过 1,274 星

deeptide

deeptide

L4 · 沙盒安装通过 1,104 星

jingyun-dsh

jingyun-dsh

井云 DSH 客户端插件,为 DeepSeek Harness 注入会员登录、订阅支付、算力管控与应用市场,让智能体和技能快速变成可交易商品

L3 · 安装规范通过 1,004 星

study-mate

study-mate

StudyMate 是 DSH 的「学习模式」预设与技能包,为数学、计算机科目定制学习路线、讲解课件与练习评估,跨科目共享记忆。

未标注验证等级 856 星

插件的元信息来自作者仓库;分类、验证等级与安全结论的中文说明为中文整理,最近核验 —。