第一次打开 ComfyUI,满屏节点和连线,很容易直接关掉。但一个能出图的最小工作流只有五个节点,五种连线。理解这五种连线的语义,比背节点名字有用得多。
节点式与表单式的根本差别
WebUI 那类表单式界面,把流程固定在代码里,你只能填参数。ComfyUI 把流程本身交给你:每个节点是一步操作,连线决定数据往哪流。
好处是流程可见、可复用、可局部替换——想把 VAE 解码换成放大再解码,多接一个节点就行。代价是你得知道每一步在干什么,否则连不上。
最小工作流的五个节点
- Load Checkpoint:加载主模型,输出三路信号。
- CLIP Text Encode(正向):把想要的描述编码成条件。
- CLIP Text Encode(负向):把不想要的描述编码成反向条件。
- KSampler:核心采样器,实际去噪的地方。
- VAE Decode → Save Image:把潜空间结果解码成图片并落盘。
少一个都不行。少 VAE Decode 会得到一张噪点图(因为潜空间张量没被翻译成像素);少负向编码,KSampler 的 negative 输入空着,多数版本会直接拒绝执行。
五种连线的语义
ComfyUI 的插口颜色不是装饰,每种颜色代表一种数据类型,接错类型会直接报错——这其实是好事,比默默出错强。
| 类型 | 颜色 | 携带什么 | 从哪来、到哪去 |
|---|---|---|---|
| MODEL | 紫 | UNet 权重 | Checkpoint → KSampler |
| CLIP | 黄 | 文本编码器 | Checkpoint → 两个 Text Encode |
| VAE | 红 | 编解码器 | Checkpoint → VAE Decode |
| CONDITIONING | 橙 | 编码后的条件向量 | Text Encode → KSampler |
| LATENT | 粉 | 潜空间张量 | KSampler → VAE Decode |
| IMAGE | 蓝 | 像素图 | VAE Decode → Save Image |
记住两点就不会连错:KSampler 吃的是 CONDITIONING 和 LATENT,吐的是 LATENT;像素图只在 VAE Decode 之后才出现。
KSampler 里那几个必填项
| 字段 | 作用 | 常起步值 |
|---|---|---|
| seed | 初始噪声 | 固定一个数,便于复现 |
| steps | 去噪迭代次数 | 24–30 |
| cfg | 提示词服从强度 | 7 |
| sampler_name | 求解器 | euler_ancestral |
| scheduler | 噪声调度曲线 | normal 或 karras |
| denoise | 加噪比例 | 文生图固定 1.0 |
denoise 在文生图里必须是 1.0。它的意思是「从纯噪声开始」。如果你从别处复制了一个 0.6 的工作流,画面会莫名其妙地糊——因为模型只去掉了 60% 的噪声。
空 latent 的尺寸也要注意:KSampler 上游通常接一个 Empty Latent Image,宽高在那里设,不在 KSampler 里。
三个最常见的报错
「Required input is missing」
某个必填插口空着。ComfyUI 会高亮那个节点并标红缺的插口名。按名字找对应类型的连线补上即可,不用猜。
「Expected type MODEL but got CLIP」
类型接错。常发生在刚从 Checkpoint 拖线时连到了相邻的插口。删掉重连,注意颜色一致。
显存不足(CUDA out of memory)
先降分辨率,再降 batch size,最后才考虑换更小的模型。ComfyUI 的显存占用比表单式界面更敏感,因为节点会保留中间张量。
工作流要存下来
ComfyUI 可以把整个画布导出成 JSON。这一步比看起来重要:调好一套流程后立刻导出,下次直接拖进去,所有节点、参数、连线原样恢复。
否则你会在两周后面对一个「上次明明能跑」的空白画布,重新连一遍线。
下一步
五个节点跑通之后,往下加东西就有方向了:加 LoRA Loader 挂在 Checkpoint 和 KSampler 之间;加 ControlNet Apply 挂在条件线上;把 VAE Decode 换成放大节点做高清。每一个都只是「在某条线中间插一个节点」。
评论 0