「AI绘画从0到1」Day12:ComfyUI工作流——用可视化节点编排AI绘画的全流程
你有没有这种感觉:在 Stable Diffusion WebUI 里画一张图,需要来回点很多次——先调提示词,再选模型,再调参数,再开 ControlNet,再选采样器,再设分辨率……每张图都要重复这些步骤,有时候想批量跑一个系列,光设置就要花半天。
如果把这些操作做成一个”流水线”,一键启动就能自动跑完全部流程,是不是就轻松多了?
ComfyUI 就是干这个的。
ComfyUI 是目前最流行的 AI 绘画可视化节点编辑器。它的核心理念是:把 AI 绘画的每一个环节(加载模型、输入提示词、设置参数、添加控制、生成图片、输出保存)都变成一个”节点”,用线把这些节点连起来,就构成了一个完整的工作流。
这不是什么新概念—— Blender 的节点编辑器、Unity 的 Shader Graph、Unreal Engine 的 Blueprints 都是类似的东西。但 ComfyUI 第一次把这个理念带入了 AI 绘画领域,让创作者可以真正实现”设计一次,重复使用”的自动化创作。
这篇文章是「AI绘画从0到1」系列的第十二篇。前面你已经学了提示词、ControlNet、图生图、LoRA 训练——这些技能在 WebUI 里要来回切换操作,在 ComfyUI 里你可以把它们串联成一条自动化流水线,大幅提升效率。接下来我们从头开始,完整掌握 ComfyUI 的使用方法和进阶技巧。

一、ComfyUI 是什么?
1.1 节点编辑器的基本原理
理解 ComfyUI,先理解”节点编辑器”这个概念。
想象一下音乐制作软件里的”合成器”或者视频编辑软件里的”滤镜链”——你把不同的音效处理器、视频滤镜一个个串起来,声音或画面从第一个处理器进入,经过处理后输出到第二个,再输出到第三个,最终得到成品。
ComfyUI 的工作方式完全一样。每一个节点(Node)代表一个独立的功能模块——有的节点负责加载大模型,有的负责输入提示词,有的负责设置采样参数,有的负责加载 ControlNet 控制图。节点和节点之间用”线”连接,数据(图像 latent space 中的数据)从上游节点流向下游节点,经过每个节点的加工处理,最终在最后一个节点输出成品图片。
这种设计有一个巨大的好处:你设计的工作流可以被完整保存和分享。 别人拿到你的工作流文件,直接在自己电脑上复现一模一样的效果,不需要知道你每一步是怎么设置的。社区里有大量创作者分享自己的 ComfyUI 工作流,这是 AI 绘画领域最有价值的开源资产之一。
1.2 ComfyUI 和 WebUI 的核心区别
很多初学者会问:已经有了 WebUI,为什么还要学 ComfyUI?两者有什么区别?
WebUI(AUTOMATIC1111 或其他)的优势在于易用性。 界面直观,点哪里都是可视化菜单,不需要理解背后的逻辑,打开就会用。缺点是灵活性受限——你想同时叠加多个 ControlNet?想在生成过程中切换不同的采样器?想自定义每一步的操作逻辑?WebUI 很难实现或者需要安装额外的插件。
ComfyUI 的优势在于灵活性和可复现性。 你几乎可以实现任何自定义的生成逻辑,包括 WebUI 需要插件才能支持的复杂功能。更重要的是,ComfyUI 的工作流本质上是一个 JSON 文件,可以完整保存、复制、分享。而 WebUI 的操作记录不系统,每次重新生成都要重新设置。
两者的生成质量没有本质差异。 ComfyUI 和 WebUI 底层调用的都是同一套 Stable Diffusion 引擎,模型和采样算法完全通用,所以生成质量是一样的。区别只在于操作方式和工作流管理。
1.3 ComfyUI 能做到哪些 WebUI 很难做到的事?
以下几个场景是 ComfyUI 显著优于 WebUI 的典型例子:
场景一:批量生成和自动化。 你想生成 100 张同一系列但有细微变化的图片(比如同一角色的不同表情和服装组合)。在 WebUI 里你需要操作 100 次;在 ComfyUI 你可以设计一个工作流,用变量节点控制不同参数的变化,一次运行自动生成全部 100 张。
场景二:自定义采样流程。 WebUI 的采样流程是固定写死的,你无法在采样过程中插入额外的操作。但 ComfyUI 可以让你在第 5 步采样之后插入一个”局部重绘”,然后继续采样——这种自定义采样流程的能力在高级玩法中非常有用。
场景三:多模型串联。 你想用同一个提示词同时跑 3 个不同的大模型,对比效果。在 WebUI 里需要开 3 个标签页分别操作;在 ComfyUI 一个工作流里并联 3 个模型节点,一次运行同时出 3 张图。
场景四:复杂 ControlNet 组合。 需要同时叠加 OpenPose 姿势控制、Canny 边缘控制、Tile 纹理控制等多个 ControlNet。WebUI 对 ControlNet 叠加的支持有限且操作复杂;ComfyUI 可以直观地串联多个 ControlNet 节点,精确控制每个控制信号的强度和介入时机。
二、ComfyUI 基础界面和核心节点
2.1 界面布局
首次打开 ComfyUI,你会看到一个深色背景的工作区,左侧是节点搜索/添加面板,右侧是属性面板,中间大片空白区域就是工作流画布。
工作流画布 是你摆放和连接节点的地方。你可以通过滚轮缩放画布、通过右键拖拽移动视角、通过左键点击选中节点或连接线。
节点添加面板 在界面左侧。你可以点击”Add Node”打开节点目录树,或者直接在空白处双击鼠标,在弹出搜索框里输入节点名称来快速添加。这是最高效的节点添加方式。
属性面板 在界面右侧。当选中某个节点时,右侧面板会显示这个节点的详细参数设置,和 WebUI 的参数设置区功能类似。
队列和生成按钮 在界面右下角。点击”Queue Prompt”按钮会把这张图加入生成队列并开始生成;按住 Shift 点击则会立即开始生成(跳过队列)。
2.2 最基础的生图工作流
先介绍最简单的一个工作流,它只包含 5 个节点,但足以让你理解 ComfyUI 的基本操作方式:
第一个节点:Load Checkpoint(加载大模型)。 这个节点有 3 个输出端口(MODEL、CLIP、VAE),分别输出加载的模型、文本编码器、VAE 解码器。用一根模型线(通常橙色)连接到下一个节点的对应输入端口。
第二个节点:CLIP Text Encode(提示词编码)。 这个节点有两个输入端口——CLIP 和 text。CLIP 输入连接 Load Checkpoint 的 CLIP 输出;text 输入框里填写你想要的正面提示词。这个节点的作用是把文字转换成 AI 能理解的向量表示。
第三个节点:CLIP Text Encode(负面提示词编码)。 结构和正面编码节点完全一样,只是 text 输入框里填写你不想出现在图片里的内容(如低质量、变形的手指等)。
第四个节点:KSampler(采样器)。 这是生成过程的核心节点。它有多个输入端口:model(连接 Load Checkpoint 的 MODEL)、positive(连接正面提示词编码的输出)、negative(连接负面提示词编码的输出)。参数面板里有 steps(采样步数)、cfg(提示词引导强度)、sampler_name(采样器名称)、scheduler(学习率调度器)、seed(随机种子)等设置。
第五个节点:VAE Decode(VAE解码)。 这个节点连接 KSampler 的输出(latent 空间的图像)和 Load Checkpoint 的 VAE,把 AI 脑海中的”思维图像”解码成真实像素。
第六个节点:Save Image(保存图片)。 连接 VAE Decode 的输出像素图,设置文件名和保存路径。
连接顺序是:Load Checkpoint → CLIP Encode(正面)→ KSampler(正面端);Load Checkpoint → CLIP Encode(负面)→ KSampler(负面端);Load Checkpoint → VAE → VAE Decode → Save Image;KSampler → VAE Decode。
理解了最基础的 6 节点工作流,你就掌握了 ComfyUI 的核心逻辑——其他所有复杂工作流,都是在这个基础上增加更多节点、更多控制、更多处理步骤。
2.3 常用节点类型一览
ComfyUI 的节点数量非常多(社区版本通常有数百个节点),以下是日常使用中最常见的几类:
模型加载节点:
- Load Checkpoint:加载完整的大模型(.safetensors/.ckpt 文件),包含 MODEL/CLIP/VAE 三个输出
- Load LoRA:加载 LoRA 文件,需要连接到 Load Checkpoint 的输出和某个 LoRA 模型的输入,有 strength(强度)参数
- Load ControlNet Model:加载 ControlNet 模型,需要配合对应 ControlNet 预处理节点使用
提示词节点:
- CLIP Text Encode:输入文字,输出 CLIP 向量,这是提示词进入生成流程的唯一入口
- CR Text Gate:更高级的提示词节点,支持将正面和负面提示词合并到一个节点里,减少连接线的数量
采样节点:
- KSampler:最核心的采样器节点,包含采样算法的所有核心参数
- KSamplerSelect:用来在多个采样器之间切换,适合做采样器对比测试
- SamplerCustom:允许你自定义采样流程的每一个步骤,是高级玩法的核心节点
图像处理节点:
- VAE Encode / VAE Decode:控制 latent 空间和像素空间之间的转换,是图生图和局部重绘功能的关键节点
- Image Scale / Image Pad:调整图像分辨率
- ImageBlend:混合两张图片,适合做图生图前后的对比
ControlNet 相关节点:
- ControlNet Apply:把 ControlNet 的控制信号应用到生成过程
- ControlNet Stack:叠加多个 ControlNet,支持分别设置每个 ControlNet 的强度
工作流控制节点:
- CR Load Image:加载本地图片
- Preview Image(或者 Save Image):预览/保存中间生成结果,用于调试工作流
- Clone(或者 Duplicate):复制节点,提高工作效率
三、实战:用 ComfyUI 实现完整的 ControlNet + 图生图工作流
3.1 工作流设计思路
在 Day9 我们学了 ControlNet 的各种控制方式,在 Day10 我们学了图生图和局部重绘。如果你想在 WebUI 里同时使用这两个功能,需要来回切换页面、反复上传参考图、手动设置参数。
在 ComfyUI 里,你可以把 ControlNet 和图生图串联成一个完整的工作流,一次设置完成后每次只需要改提示词就能稳定复现。
这个工作流的逻辑是:加载一张 ControlNet 参考图(比如 OpenPose 姿势图)→ 以这张参考图为基础进行图生图 → 同时启用 ControlNet 控制姿势 → 输出成品。
3.2 具体节点连接步骤
第一步:加载大模型和参考图。
添加 Load Checkpoint 节点加载你的主模型。同时添加 CR Load Image 节点加载 ControlNet 参考图(骨骼姿势图或者其他控制图)。
第二步:预处理 ControlNet 参考图。
如果你有的是原始图片而不是姿势骨骼图,需要用 DW Preprocessor(OpenPose 预处理器)先提取骨骼信息。如果已经有了处理好的 pose 图,这一步可以跳过。
把 CR Load Image 的输出连接到对应预处理器的输入,然后预处理器的输出连接到 ControlNet Apply 节点。
第三步:设置提示词。
添加两个 CLIP Text Encode 节点(正面和负面提示词),分别连接到 Load Checkpoint 的 CLIP 输出。提示词内容需要包含你想要的画面描述。
第四步:构建采样器。
添加 KSampler 节点,model 输入连接 Load Checkpoint 的 MODEL 输出,正面连接正面 CLIP Encode 输出,负面连接负面 CLIP Encode 输出。
在 KSampler 和 Load Checkpoint 之间插入 ControlNet Apply 节点——具体做法是:Load Checkpoint 的 MODEL 输出先连到 ControlNet Apply,ControlNet Apply 的 MODEL 输出再连到 KSampler 的 model 输入。这样 ControlNet 的控制信号就能在采样过程中生效。
第五步:VAE 解码和保存。
KSampler 输出的 latent 图像先经过 VAE Decode 转换成像素图,然后连接 Save Image 节点保存。
3.3 工作流调试技巧
ComfyUI 工作流比 WebUI 更强大,但也更容易出错。以下是几个调试技巧:
技巧一:善用 Preview Image 节点。 在任何中间步骤插入 Preview Image 节点,可以查看该步骤的输出图像,快速定位问题出在哪一步。
技巧二:注意数据类型匹配。 ComfyUI 的连接线是有颜色区分的——橙色线传输模型数据,蓝色线传输图像数据,灰色线传输文本或数字。不同颜色的端口不能互连。如果你发现某根线接不上,先检查两端的端口类型是否匹配。
技巧三:保存工作流前清理测试节点。 调试过程中可能添加了很多 Preview Image 测试节点,正式使用前记得删除这些临时节点,让工作流更简洁。同时建议用”Minimize”功能压缩工作流占用空间。

四、进阶工作流:批量自动生成
4.1 为什么需要批量生成?
在实际创作中,你可能需要生成一系列有变化的图片——比如同一个角色在不同背景下的多张图、或者同一提示词下不同随机种子的大批图片。在 WebUI 里这类需求操作繁琐,ComfyUI 的批量处理能力则让这类任务变得轻松。
4.2 用变量节点控制提示词变化
ComfyUI 有一个”CLIP Text Encode”的高级变体叫”Text Multiline”或者配合”CR Module Template”的节点,可以实现提示词的批量替换。
一个典型用法是:你在工作流中设置多个提示词变体(比如不同的背景描述),然后让 ComfyUI 依次使用每个提示词变体生成图片,全部自动排队完成。
具体实现方式是使用”Prompt Schedule”——通过外部配置文件或者内置的节点编辑器,设置一个包含多个提示词的列表,每个提示词对应不同的生成阶段或循环次数。
4.3 用 Seed 控制实现变体生成
最基础的批量生成方法是固定提示词、变化随机种子(Seed)。在 ComfyUI 的 KSampler 节点里,seed 值决定随机噪声的起始状态。不同的 seed 会产生不同的随机变化,但提示词和其他参数完全相同。
如果你想生成 20 张同提示词但不同构图细节的图,只需要设置 KSampler 的 seed 为”randomize”,然后设置 batch(批次数)为 20,ComfyUI 会自动用 20 个不同的 seed 生成 20 张图片并保存。
4.4 用 ControlNet Stack 实现多图对比
另一个实用的批量场景是:同一提示词 + 同一 ControlNet 参考图,但变化不同的大模型或不同的 LoRA,对比效果差异。
这种工作流的设计思路是:在主流程上并联多个 Load Checkpoint 分支,每个分支加载不同的大模型,然后在 ControlNet Apply 之后汇合到同一个 KSampler——但实际上因为模型不同,通常需要分别采样再合并结果。
更简单的方法是:分别建立 3 个独立但结构相同的工作流,分别加载不同的模型,同时运行对比结果。这种”并联测试”方式在模型对比、LoRA 效果测试等场景非常高效。
五、ComfyUI 的进阶技巧
5.1 动态参数:让工作流真正可复用
ComfyUI 最强大的特性之一是”自定义节点”和”工作流输入输出”。通过添加”Primitive”(原始值)节点或者在节点参数中引用外部输入,你可以把工作流设计成”参数化”的形式。
比如你设计了一个角色图工作流,固定了模型、LoRA、ControlNet 设置,但想保留提示词和种子可调整的能力。你可以把正面提示词和 seed 拖拽成独立的输入端口,保存为模板。以后使用时,不需要打开工作流编辑内部设置,直接在右侧属性面板就能调整这些关键参数。
这种”参数化工作流”设计是 ComfyUI 高手和新手之间最大的分水岭。掌握这个技能后,你的创作效率会有质的飞跃。
5.2 模板和社区资源
ComfyUI 有一个非常活跃的社区,大量创作者在 Civitai、GitHub、Reddit 等平台分享自己的工作流模板。这些模板通常以”.json”文件形式提供,下载后直接导入 ComfyUI 就能复现原作者的生成效果。
推荐的模板获取渠道:
- Civitai 上有专门的 ComfyUI 工作流板块,按功能分类(头像生成、插画、摄影等),可以直接下载使用
- GitHub 上的 ComfyUI examples 仓库有官方提供的基础示例工作流,是学习的好素材
- B站和 YouTube 上有大量中文和英文的 ComfyUI 教程
下载模板时要注意:模板依赖的模型(Checkpoints、LoRA、ControlNet 等)需要提前安装到对应目录,否则导入后会报节点缺失错误。
5.3 工作流优化:加速生成
ComfyUI 相比 WebUI 的另一个优势是更精细的显存管理。WebUI 一次性加载所有资源,显存占用相对粗放;ComfyUI 只在需要时才加载对应模型,且支持把 VAE 等大型模块独立管理。
如果你有一张中低端显卡(8GB 左右显存),可以通过以下方式优化:
方式一:启用模型卸载。 在 ComfyUI 设置里开启”Auto queue + Model management”,让 ComfyUI 在生成完毕后自动把大模型从显存卸载,释放空间给下一次生成,避免显存溢出。
方式二:使用 SDXL 模型优化版本。 SDXL 大模型原生分辨率是 1024,但有专门的 fp16 精度的优化版本可以在更低显存下运行。
方式三:分块处理高分辨率图片。 ComfyUI 有专门的”SDXL Ultimate”等节点集,可以把高分辨率图片的生成切分成多个小块分别处理再拼接,大幅降低显存峰值占用。
六、主流工作流模板解析
6.1 基础文生图工作流
这是 ComfyUI 的”Hello World”,几乎所有教程都从它开始。结构最简洁:Load Checkpoint → CLIP Encode(正面)→ CLIP Encode(负面)→ KSampler → VAE Decode → Save Image。
这个工作流的功能和 WebUI 的文生图完全一样,但好处是你可以精确控制每一个参数,且所有设置都能保存复用。
6.2 进阶 ControlNet + 图生图工作流
在基础工作流上增加 ControlNet 相关节点:
- 增加 Load ControlNet Model 节点
- 增加 ControlNet Preprocessor 节点(如 OpenPose/Canny 等)
- 增加 Load Image 节点作为 ControlNet 参考图输入
- 在 Load Checkpoint 和 KSampler 之间插入 ControlNet Apply
这个工作流能实现 Day9 Day10 两个技能的组合,是高级创作的核心工具。
6.3 LoRA 叠加工作流
在基础工作流的 Load Checkpoint 和 KSampler 之间插入 Load LoRA 节点。LoRA 节点有两个关键参数:strength_model(对模型的影响强度)和 strength_clip(对提示词编码的影响强度)。
如果你要叠加多个 LoRA,可以串联多个 Load LoRA 节点,或者使用 ComfyUI 的”LayerUtility”等高级节点集来更精细地控制每个 LoRA 的生效时机和范围。
七、常见问题与解决方案
问题一:导入别人的工作流报”节点缺失”错误
这是最常见的 ComfyUI 问题。原因是模板使用了某个你没有安装的自定义节点。解决方法:查看错误提示里缺失的节点名称(通常是节点类型名如”CR Load Image”),在 ComfyUI Manager 里搜索并安装对应的自定义节点扩展包。如果缺少的是官方节点,则可能是 ComfyUI 版本过旧,需要更新。
问题二:生成时提示显存不足(OOM)
在 ComfyUI 设置里开启”Model Auto-load”或者尝试降低生成分辨率。还可以检查是否同时加载了多个大型模型(如多个大模型 + 多个 ControlNet),尽量减少同时在显存中的模型数量。
问题三:生成的图片质量明显比 WebUI 差
确认大模型和 VAE 是否匹配——有些 SDXL 模型需要配套的 VAE,如果用了不同的 VAE 会导致颜色异常或模糊。还要检查 KSampler 的 steps 和 CFG 参数是否合理。
问题四:工作流保存后再打开,节点位置全乱了
这是 ComfyUI 的已知问题,和屏幕分辨率和 UI 缩放设置有关。解决方法是用”Arrange Nodes”功能自动排列节点,或者安装”ComfyUI Manager”里的节点布局整理插件。
问题五:如何在 ComfyUI 里使用 WebUI 安装的模型?
ComfyUI 和 WebUI 可以共享同一套模型文件。只要确保模型文件放在 ComfyUI 对应的 models 目录下(Checkpoints、LoRA、ControlNet 等各有独立目录),就能在 ComfyUI 里直接加载使用。模型目录路径可以在 ComfyUI 启动时确认,或者在设置里自定义。
八、总结与下节预告
今天我们完整学习了 ComfyUI 工作流编辑器——从基础概念、界面操作、节点类型,到完整的 ControlNet + 图生图工作流搭建、批量生成技巧、以及高阶复用方法。ComfyUI 是 AI 绘画从”手动操作”走向”自动化创作”的关键工具,掌握它之后,你的工作效率会大幅提升。
核心要点回顾:
- ComfyUI 是基于节点编辑器的 AI 绘画工作流工具,和 WebUI 相比更灵活、可复用性更强
- 节点之间用不同颜色的线连接(橙色=模型,蓝色=图像,灰色=文本/数值),数据类型必须匹配
- 最基础的生图工作流只需要 6 个节点:Load Checkpoint → 2x CLIP Encode → KSampler → VAE Decode → Save Image
- ControlNet、LoRA、图生图都可以无缝集成到 ComfyUI 工作流中
- 批量生成和参数化工作流是 ComfyUI 最强大的功能之一
明天是 Day13,我们将进入商业实战:角色设计与头像变现的学习——从纯技术转向商业应用,教你如何用 AI 绘画真正赚到钱。如果你跟着这个系列学到了 Day13,你已经掌握了 AI 绘画的核心技能树,是时候把这些技能转化为实际收益了。敬请期待。
【本系列目录】