一句话定义
一个节点 = "输入端口 + 参数控件 + 输出端口"的黑盒函数;一张工作流 = 用类型匹配的连线把这些函数串成的有向无环图,ComfyUI 按依赖顺序执行它。
为什么重要
这是 ComfyUI 的"语法"。语法不牢,后面每个工作流都像天书;语法过关,任何陌生工作流你都能顺着线读下来。
前置知识
核心概念
- 节点解剖:标题栏(可重命名)、左侧输入端口、右侧输出端口、中部参数控件(widgets,如 seed、steps)、右键菜单(属性/转换)。端口与节点常带颜色,颜色代表数据类型。
- 常用数据类型(连线必须同类型):
| 类型 | 含义 | 常见来源/去向 |
|---|---|---|
| MODEL | 扩散模型本体(UNet/DiT) | Load Checkpoint → KSampler |
| CLIP | 文本编码器 | Load Checkpoint → CLIP Text Encode |
| VAE | 编解码器 | Load Checkpoint → Encode/Decode |
| CONDITIONING | 编码后的提示词张量 | CLIP Text Encode → KSampler |
| LATENT | 潜空间图像张量 | Empty Latent → KSampler → VAE Decode |
| IMAGE | 像素图像 [H,W,3] | Load Image / VAE Decode → Save |
| MASK | 蒙版 | 重绘、区域控制 |
- 张量形状约定:图像为
[B,H,W,3]、取值 0~1;潜空间为[B,4,H/8,W/8](SD 系,通道数随模型家族不同,Flux 是 16 通道,见 Flux 架构与工作流:cfg=1 的新物种);蒙版为[B,H,W]。
原理与机制
执行:点击运行后,引擎从"输出类节点"(SaveImage 等)反向遍历,得到拓扑序,依次执行;未连接到任何输出的节点不执行。缓存:每个节点执行后结果被缓存,再次运行时,若某节点全部输入与参数都未变,直接复用——所以"只改提示词重跑"几乎瞬间完成,而"换模型重跑"要重新加载。
两个特殊状态(右键节点设置):
- Mute(静音):该节点输出视为"无",下游收到空,通常整条链不再执行。
- Bypass(旁路):节点被"短路",输入直接穿透给输出(仅类型兼容时)——适合临时关闭某个增强节点做对比。
公式 / 模型 / 图示
执行序(拓扑): Load Checkpoint → Empty Latent → CLIP Text Encode(正/负)
→ KSampler → VAE Decode → Save Image
缓存粒度: 节点级(输入+参数的哈希未变 → 命中缓存)直观类比
- 乐高积木:每种积木的凸起/凹槽形状(端口类型)决定了只能与兼容的积木拼接;拼法(工作流)可以拍照分享。
- Excel 依赖图:改提示词(某一格)→ 只有依赖它的下游重算。
实例与案例
- 双击画布空白处弹出节点搜索,输入名字直接放置——比翻右键菜单快。
- 选中多个节点后 Ctrl+C/V 复制整段逻辑;Ctrl+M 静音、Ctrl+B 旁路(快捷键以你版本设置里的 Keybinds 面板为准)。
- 连线拖错端口时,把线拖回源端口即可删除;按住端点拖到目标端口是重连。
常见误区
- 以为画布位置影响执行:只看连线。摆整齐是给人看的,不是给引擎看的。
- 混淆 Mute 与 Bypass:Mute 是"断流",Bypass 是"穿流";调试时用 Bypass 对比"有/无此节点"的效果,不会让下游报错。
- 以为端口可以混连:LATENT 连到 IMAGE 端口必然报错,先想清楚当前数据在"潜空间"还是"像素空间"(见 潜空间与 VAE:压缩的图像世界)。
- 忽视 batch 维度:Latent 的 batch_size 与图像批量是同一条数据,放大工作流里经常因 batch 不匹配报错。
自测题
- IMAGE 与 LATENT 的张量形状分别是什么?两者如何互相转换?
- Bypass 一个 KSampler 会发生什么?Bypass 一个 VAEDecode 又会怎样?
- 为什么"加载模型"节点在上万次队列中只执行一次?
- Mute 一个提示词节点后点击运行,下游会怎样?
参考答案
- IMAGE
[B,H,W,3]取值 0~1;LATENT[B,4,H/8,W/8](SD 系)。VAE Encode 把 IMAGE 编码成 LATENT,VAE Decode 反向。 - Bypass KSampler:类型不兼容(LATENT 输出端口对不上),引擎会报错;Bypass VAEDecode 同理。Bypass 适用于"输入输出同类型"的增强节点(如放大器、细节修复)。KSampler 这类"类型转换"节点只能删线或换方案。
- 节点级缓存:输入与参数未变则复用上次输出,模型权重不再重新加载。
- 下游收到空条件,整条依赖链不执行;若有其他输出节点仍会执行。
与其他知识点的关系
- 第一个文生图工作流解剖 用这个模型解剖第一个真实工作流。
- 故障排查手册:症状→原因→修法 的排障方法论建立在"bypass 二分定位"之上。
- 潜空间与 VAE:压缩的图像世界 深入 LATENT/IMAGE 的本质。
延伸阅读
- 官方文档 Core Concepts:docs.comfy.org/tutorials
- 快捷键完整列表:界面内 Settings → Keybinds