Extensions/ZZNodes
ComfyUI Extension

ZZNodes

ZZNodes tools for ComfyUI: Windows shutdown after 30 seconds of queue idle, with cancellation and on-node logs.

By zhangdevops·Created a day ago·Updated a day ago· 0
zhangdevops/ComfyUI-ZZNodes
Nodes—
On cloudLocal install
Stars0
Updateda day ago
Readme

ZZNodes

当前版本:0.1.0。

ComfyUI 工具节点包。目前提供 自动关机控制 一个节点:等待整个任务队列结束后自动关闭 Windows,只保留启用开关和运行日志,支持实时取消。

功能

| 功能 | 行为 | | --- | --- | | 自动关机 | 等待整个队列持续空闲30秒后直接关机,不再额外倒计时 | | 实时取消 | 关闭“启用自动关机”,无需重新执行工作流;以后端日志确认为准 | | 旧任务保护 | 取消后旧凭证失效,已排队的旧任务不能恢复已取消的计划 | | 新任务处理 | 收到新提交或检测到新任务时重新等待 | | 界面日志 | 内存中保留最近100条带日期时间的运行日志 |

本节点会执行真实系统关机,使用前保存其他应用的工作。

安装

Git 安装

在 ComfyUI/custom_nodes 目录运行:

git clone https://github.com/zhangdevops/ComfyUI-ZZNodes.git

随后重启 ComfyUI,浏览器按 Ctrl+F5 强制刷新。

ZIP 安装

从 GitHub 的 Code → Download ZIP 下载并解压,将包目录放入 ComfyUI/custom_nodes/。 可以将解压后的 ComfyUI-ZZNodes-master 改名为 ComfyUI-ZZNodes。 确认入口文件直接位于:

ComfyUI/custom_nodes/ComfyUI-ZZNodes/__init__.py

不要多套一层同名目录。

Manager 安装

在 Manager 中搜索 ZZNodes。

使用

  1. 在添加节点窗口的左侧选择 ZZNodes 分类,或搜索 QueueShutdown / “自动关机控制”,添加节点,无需接线。
  2. 打开“启用自动关机”,等待日志确认已启用。
  3. 提交包含此节点的工作流。日志出现“工作流已执行,开始监控全部排队及运行任务”后,监控才真正开始。
  4. 整个队列持续空闲30秒后,由节点通过 Windows 原生 API InitiateSystemShutdownExW 直接请求本机关机,不再额外倒计时。

等待期间出现新任务会重新计时;关闭开关可取消。固定30秒由后台控制,旧工作流保存的时间参数不会覆盖该设置。

仅开启开关、但没有执行包含该节点的工作流,不会启动队列监控。 节点没有停止图片/视频生成的功能;“取消关机”只取消关机计划。

取消关机

关闭“启用自动关机”,收到日志 “已由界面取消” 才表示后台已确认。 通信失败不代表取消成功;可再次操作开关重试。

关机请求提交给 Windows 后不能保证撤回。本节点不强制关闭应用, 因此其他应用或系统状态可能阻止实际关机;API 返回成功不等于电脑已关闭。

实现使用 Python 标准库 ctypes 调用系统 API,不启动命令行程序,不接受自定义命令或远程主机地址。 API 行为参见 Microsoft 官方文档(本包使用 Unicode 版本 InitiateSystemShutdownExW)。 调用时临时启用当前进程令牌中已有的 SeShutdownPrivilege,随后恢复原状态并关闭句柄。 如果当前账户没有该权限,关机请求会失败,节点记录 Windows 错误;不会自动提权或改用命令行重试。

多页面与队列边界

同一 ComfyUI 实例的节点和页面共享一个全局关机计划。关闭页面、删除画布上的节点不会取消计划。 页面刷新会同步后台状态;ComfyUI重启则不会恢复之前的启用授权。 监控的是整个ComfyUI队列,其他工作流也会延后关机。 检测到启用后任务历史中的失败或中断时取消计划;清空尚未运行的队列项无法仅凭历史准确判断失败。 不验证输出文件内容,也不监控电脑上其他软件的任务。 最终检查会锁住队列,但已经通过入口检查、仍在验证的新请求存在极小竞争窗口。

界面

节点只显示“启用自动关机”开关和只读运行日志,不提供时间输入框、诊断日志开关或清空日志按钮。 内部会话凭证不在界面显示,也不保存到工作流文件。

日志

运行事件和错误详情由 controller.py 统一保存在 ComfyUI 进程内存中,最多保留最近100条,带本地日期时间。日志按原文显示,不进行脱敏替换。 日志只显示在节点页面,不写入日志文件,也不向控制台输出。日志区底部显示当前状态,包括空闲确认剩余秒数。 完成、取消和失败后仍可查看。刷新浏览器页面不会清空;关闭或重启 ComfyUI 后旧日志消失,新启动只显示本次运行的日志。 日志不保存到工作流文件或浏览器存储。以前版本产生的旧日志文件不会自动删除,也不会被读取或继续写入。

更新后重启 ComfyUI 并按 Ctrl+F5 刷新浏览器。旧工作流加载后会重新同步后台状态,保存的开关值和旧参数不会自动授权关机。

License

MIT License. Copyright (c) 2026 ZZNodes contributors.