⬡ 节点流学园

🧱 01-基础

节点与工作流的心智模型:端口、连线与执行

入门节点端口执行引擎快捷键

一句话定义

一个节点 = "输入端口 + 参数控件 + 输出端口"的黑盒函数;一张工作流 = 用类型匹配的连线把这些函数串成的有向无环图,ComfyUI 按依赖顺序执行它。

为什么重要

这是 ComfyUI 的"语法"。语法不牢,后面每个工作流都像天书;语法过关,任何陌生工作流你都能顺着线读下来。

前置知识

ComfyUI 是什么:节点式的生成式 AI 工作台。

核心概念

  • 节点解剖:标题栏(可重命名)、左侧输入端口、右侧输出端口、中部参数控件(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 不匹配报错。

自测题

  1. IMAGE 与 LATENT 的张量形状分别是什么?两者如何互相转换?
  2. Bypass 一个 KSampler 会发生什么?Bypass 一个 VAEDecode 又会怎样?
  3. 为什么"加载模型"节点在上万次队列中只执行一次?
  4. Mute 一个提示词节点后点击运行,下游会怎样?
参考答案
  1. IMAGE [B,H,W,3] 取值 0~1;LATENT [B,4,H/8,W/8](SD 系)。VAE Encode 把 IMAGE 编码成 LATENT,VAE Decode 反向。
  2. Bypass KSampler:类型不兼容(LATENT 输出端口对不上),引擎会报错;Bypass VAEDecode 同理。Bypass 适用于"输入输出同类型"的增强节点(如放大器、细节修复)。KSampler 这类"类型转换"节点只能删线或换方案。
  3. 节点级缓存:输入与参数未变则复用上次输出,模型权重不再重新加载。
  4. 下游收到空条件,整条依赖链不执行;若有其他输出节点仍会执行。

与其他知识点的关系

延伸阅读

前置知识

ComfyUI 是什么:节点式的生成式 AI 工作台

关联知识点

界面导览:画布、侧栏、队列与模板第一个文生图工作流解剖故障排查手册:症状→原因→修法