跳到正文
Kwei 个人主页作品集 project library

COMFYUI FIELD GUIDE / 工作流排错

ComfyUI 工作流一片红,怎样判断哪里出了问题?

从报错出现的时间开始,分清节点没加载、输入没通过校验,还是执行时失败。

10 分钟阅读报错对照与操作指南
本文目录07

下载一个工作流,拖进去,几个节点变红。接着点运行,又弹出一长串英文。最难受的往往是:不知道该补模型、装插件,还是改连线。

先看它停在哪一步,再看错误里点名了谁。 刚打开就找不到节点,和开始采样后内存不足,排查方向完全不同。红色只是提醒;节点的背景颜色也可以人为修改,真正要读的是缺失列表、字段名和错误报告。

看到哪一种提示?点选对照六种常见报错示例
节点加载输入校验执行计算

打开工作流时

Missing Node Types
Image Select Color

当前环境没有识别出这个节点类型。

先看什么
先查节点属于哪个项目,以及它是否已经加载。
下一步
抄下完整节点名,核对工作流说明与 Manager 的缺失节点列表;如果显示已安装,转去看启动日志。
看这一类的详细排查 ↓

01 / 先看阶段同样“跑不了”,可以停在三个地方

可以把一次任务理解成三个检查点:先把节点加载出来,再检查输入是否有效,最后才执行计算。刚导入就出现 Missing Node Types,优先查节点;点运行后出现 validation,往下面找具体字段;已经开始加载或采样再中断,就读执行错误。

导入时缺失的,是哪些节点类型点图放大 ↗
先读列表中的完整节点名称,再查看它们属于哪个节点包。导入时的缺失提示,与执行中的报错不是一回事。

界面有时也会提前提醒缺模型,因此阶段只是缩小范围,不能代替具体错误。看到一个泛泛的 Prompt execution failed,就打开报告继续读。能点开 Show report 时,把节点名和错误类型一起留下。错误报告的查看方法

节点能不能加载

缺失列表 / 启动日志

输入能不能通过校验

字段名 / 可选值 / 连线

计算能不能完成

错误报告 / 组件 / 内存

02 / 缺节点已经安装,为什么还说找不到节点

节点是程序,模型是它读取的文件。 导入 JSON 主要恢复节点、连线和参数,不能据此认为所需程序和权重都已经备齐。打开时提示找不到某个节点类型,就先复制它的完整名称。

拿一条绿幕抠图支路来说:Image Select Color 属于 WAS Node Suite,Mask Ops 属于 ComfyI2I,Cut By Mask 又来自另一个项目。画布上只是一串连线,安装时却涉及多个包。看到缺失名称后,应该核对它的归属,而不是只凭功能相近就装一个抠图插件。

在 Manager 的缺失节点入口检查候选项目,新版界面通常有 Missing 筛选,旧版可能叫 Install Missing Custom Nodes。名称和作者要与工作流说明对上。Manager 找不到,也可能是节点未登记、已改名或属于某个新版本;不能直接理解成“这个节点不存在”。 新版 Manager 安装入口面向 Registry 中的节点包;没有登记的项目需要回到发布说明核对。Manager 缺失节点入口

在 Missing 列表里核对节点包点图放大 ↗
左侧选 Missing,再打开节点包详情核对作者与版本。找到候选包后,还要确认它是否已经启用并成功加载。

如果 Manager 已显示安装,但节点仍缺失,先确认它处于启用状态,再看启动日志。文件夹在 custom_nodes 里,只说明代码已经放在那里;代码可能在导入时因为依赖或版本问题中断,节点也就没有成功注册。Missing Node Types 和 IMPORT FAILED 有时说的是同一件事的前后两段。

例如日志写着 ModuleNotFoundError,先记下缺少的模块,并查这个插件自己的安装说明。导入名不一定等于安装包名,别把错误里的单词直接拼成安装命令。在系统 Python 里装好了,也不代表 ComfyUI 的环境里有。处理完后,重启对应实例并刷新界面,再确认节点是否出现。自定义节点安装说明

代码已下载

文件夹存在

依赖能导入

启动没有对应异常

节点已注册

当前画布能识别类型

也别漏掉版本和实例:有的工作流用了较新的内置节点,有的插件装在另一份 ComfyUI 里。先核对工作流要求与当前启动的是哪一份,再决定更新哪个部分。

03 / 缺模型加载器还在,缺的可能只是它要读的文件

看下面这张界面:Checkpoint 加载器的名称、参数和输出口都在。这个例子缺少对应权重,不能靠再装一次“加载器节点”解决。要查的是模型文件有没有被当前实例找到。

加载器存在,与模型文件齐全,是两件事点图放大 ↗
这里加载器节点已经存在,缺少的是对应的SD3.5权重。检查模型选择与搜索路径,再决定补什么。

常见提示是 Value not in list,后面跟着 ckpt_name。它的意思是,工作流保存的模型选择不在当前列表里。列表是空的,就查文件和路径;列表里已有别的模型,就继续核对原文件是否改名、放在子目录,或这份工作流要求的模型尚未准备。从下拉框重新选中正确文件,比把别的权重改成同名更可靠。

这里“正确”还包括模型类型和加载方式。一个用于分开加载扩散模型与编码器的工作流,不能因为文件后缀相同,就把权重随便塞进 Checkpoint 加载器。目录只是第一步,组件还要适配。

常见资源通常从哪里查同时核对
Checkpointmodels/checkpoints是否是该加载器支持的整合权重
扩散模型models/diffusion_models是否需要分别加载编码器与 VAE
VAEmodels/vae是否与当前模型家族匹配
LoRAmodels/loras是否适配所用基础模型

如果使用共享模型库或自定义路径,要看当前实例实际搜索的目录;自定义加载器也可能有自己的目录规定。文件放好后刷新模型列表或重启,再从下拉框确认能选中。模型路径与匹配检查

另外,Value not in list 也能发生在采样器或其他枚举选项上。只有看到后面的字段是 ckpt_name、vae_name 这类模型选项,才往模型文件方向查。

04 / 参数与连线validation 失败,先读下一行的字段名

Prompt outputs failed validation 是一条总提示,表示提交的任务没有通过运行前检查。真正能指导操作的是它下面的细项。在这一阶段就失败时,反复降低采样步数通常碰不到问题所在。任务提交与校验

Required input is missing 后面会点名缺少的输入。比如 VAE Decode 的 vae 没接,就回到这个输入口找上游;如果是像素输入 pixels 缺失,则查图像从哪里来。先对着字段看连线,不用把整个画布重新接一遍。

Return type mismatch 则表示连接的数据类型不符合要求。IMAGE、MASK、LATENT 是不同的数据,插口能放在一起看,并不表示可以互换。导入旧工作流后,节点接口有时已经变化,这时按当前节点文档核对,必要时重新放置并连接受影响的节点。

修好一个字段后,再次提交可能会出现下一项错误。这不一定是刚才白改了,而可能是检查走到了下一处。把错误按节点分开记录,依次消除。 输入校验实现

缺必需输入
Required input is missing: vae

查这个输入口,找到它应接的上游。

连接类型不符
Return type mismatch between linked nodes

查两端的数据类型和当前节点接口。

05 / 运行时报错已经开始执行,就看计算在哪一步停下

通过前面的检查,只说明任务具备提交条件,并不保证计算一定完成。模型开始加载、进度条已经移动,随后失败,就把注意力转到错误报告中的节点、异常类型和上游输入。

out of memory:先减少负载做一次对照

把 batch 降到1,或降低分辨率;视频任务还可以在模型允许范围内减少帧数或时长。一次只改一项,再看是否通过。Mac 的 MPS 和 NVIDIA 的 CUDA 是不同后端,别把另一种设备的驱动或安装命令套过来。仅减少采样步数通常不是降低峰值内存的首选。

shape / channels:先核对组件组合

尺寸或通道报错常见于组件不匹配,例如编码器、VAE、ControlNet 与基础模型不对应。但自定义节点改变形状也可能导致同类提示。先看在哪个节点失败,再把这一段与该模型的官方示例对照,不能仅凭“尺寸”两个字就只改画布宽高。

读取权重失败:检查下载到的文件

遇到反序列化或文件头错误,检查文件大小、下载是否完成,以及模型仓库提供的校验信息。坏文件和选错加载器是不同问题:前者要确认文件完整性,后者要改加载方式。

红框标记的节点通常是错误被发现的位置,原因也可能来自上游。比如解码时发现潜空间通道不符,应该追查送来的数据和 VAE 是否匹配,而不是先认定 VAE Decode 程序坏了。

06 / 缩小范围用一个小流程,判断问题跟谁走

排查前先另存工作流副本。用对应模型的官方模板、已经准备好的权重和最少输入做一轮对照。这个基线要尽量少依赖自定义节点,才能帮助区分主程序、模型和附加处理。

小流程能输出、复杂工作流失败,就逐段恢复额外节点,观察错误从哪一段开始出现。两边都失败,则比较是否是同一条异常,再查共同依赖的模型、设备或环境。“默认流程也失败”本身,还不能直接证明是 ComfyUI 的程序缺陷。

怀疑插件冲突时,可以在测试环境禁用自定义节点,再逐组恢复。但此时要用能独立运行的内置节点流程做对照;原工作流本来就依赖那些插件,禁用后当然还会缺节点,不能拿这个结果判断冲突是否消失。官方隔离排查方法

遇到更新后才出现的问题,留下原工作流和版本信息,先核对出错节点的变更,再做有针对性的调整。同时更新主程序、所有插件和依赖,会让这次排查很难说清是哪一个变化起了作用。

需要请别人帮查时,先记下这五项

写清具体错误和本轮改动,可以直接下载成一份 TXT 留存。

每轮记下一个改动,以及错误是否变化。

07 / 总结最后留下一个明确的检查位置

找不到节点,查来源与加载日志;模型选项无效,查字段、文件和路径;输入校验失败,查对应参数与连线;执行中断,查失败节点的组件、数据和内存。把报错出现的阶段与具体文字放在一起看,才能决定下一步操作。

每轮改动后,记录错误是否变化、哪一步已经通过。即使还没完全跑通,也应该能把“一片红”缩小为一个明确的问题,例如“Mask Ops 导入失败”或“这个加载器找不到指定权重”。接下来自己继续查,或请别人协助,都会有清楚的起点。

可左右滚动查看节点和文字,按 Esc 关闭。