ComfyUI全面掌握-知识点详解——ComfyUI 核心基础概念全解析(工作流、节点等)
本文为系列第 8 篇,深入拆解 ComfyUI 的核心基础概念体系。读完本文,你将彻底理解工作流、节点、连线、属性、模型、依赖关系这六大核心概念,掌握子图功能和部分执行,并能自主查阅节点文档。
目录
- 一、引言:理解 ComfyUI 的概念体系
- 二、工作流(Workflow)——一切的核心
- 三、节点(Node)——功能的基本单元
- 四、连线(Link)——数据的通道
- 五、属性(Property)——节点的配置参数
- 六、模型(Model)——AI 的"大脑"
- 七、依赖关系——执行的顺序
- 八、子图(Subgraph)——模块化工作流
- 九、节点文档查阅技巧
- 十、综合案例:从概念到实践的映射
- 十一、总结
- 官方参考链接
一、引言:理解 ComfyUI 的概念体系
1.1 为什么概念理解如此重要?
在入门启蒙章节中,你已经通过"照着做"的方式成功运行了一个文生图工作流。但你可能已经发现:当你想调整工作流、排查生成错误、或者从社区下载一个复杂工作流来学习时,仅仅"照做"是远远不够的。
这就好比学开车:你知道踩油门车会走、踩刹车车会停,这是"入门"。但如果你想理解为什么有时候车会抖动、为什么不同路况要换挡、如何更省油,就需要理解发动机、变速箱、传动系统的工作原理。
ComfyUI 也是同样的道理。它的六个核心概念——工作流、节点、连线、属性、模型、依赖关系——构成了整个系统的"底层逻辑"。理解了它们,你才能真正读懂任何工作流,而不是只能重复自己学过的那个。
1.2 六大核心概念总览
| 概念 | 英文 | 一句话定义 | 现实类比 |
|---|---|---|---|
| 工作流 | Workflow | 由多个节点通过连线组成的完整生成流程,本质是一个有向图 | 工厂的完整生产线 |
| 节点 | Node | 工作流中的最小功能单元,每个节点执行一项特定操作 | 生产线上的单台机器 |
| 连线 | Link | 连接节点输出与输入的数据通道,携带特定类型的数据 | 机器之间的传送带 |
| 属性 | Property | 节点内部的配置参数,控制节点的行为方式 | 机器上的旋钮和按钮 |
| 模型 | Model | AI 生成的核心权重文件,决定了生成内容的风格与质量 | 生产产品的模具 |
| 依赖关系 | Dependency | 节点之间的执行先后顺序,由数据流向决定 | 工序的先后关系 |
类比记忆:如果把 ComfyUI 比作一个工厂,工作流就是整条生产线;节点是生产线上的每台机器;连线是机器之间的传送带;属性是机器上的设置旋钮;模型是生产产品用的模具;依赖关系决定了哪台机器必须先启动。
二、工作流(Workflow)——一切的核心
2.1 工作流即节点图(Graph)
根据 ComfyUI 官方文档的定义:工作流(Workflow)是一组名为"节点"的程序对象的集合,它们通过连线彼此连接,形成一个网络,这个网络也被称为图(Graph)。
这是一个非常重要的概念。ComfyUI 的"工作流"本质上就是一个有向图:
- 节点(Node):图中的顶点(Vertex),代表一个操作或处理步骤
- 连线(Link):图中的有向边(Directed Edge),代表数据的流向
- 整体:数据从输入节点流向处理节点,最终到达输出节点
图论小知识:有向图(Directed Graph)是图论中的基础概念,由一组顶点和一组有方向的边组成。在 ComfyUI 中,数据只能沿着连线的箭头方向流动,不能逆向。这正是"工作流"一词中"流"的由来——数据像水流一样沿着管道流动。
2.2 工作流在 ComfyUI 中的本质
ComfyUI 的工作流具有以下几层本质:
① 可视化的编程环境
ComfyUI 提供了一种**可视化编程(Visual Programming)**的方式。传统的编程需要写代码(如 Python),而 ComfyUI 将代码逻辑转化为可视化的节点和连线。这并不意味着它不如传统编程强大——恰恰相反,节点图的范式允许用户构建非常复杂的系统,而无需编写一行代码。
这种节点图(Node Graph)范式在其他专业软件中也有广泛应用:
- Nuke(影视合成软件)
- Maya / Blender(3D 建模与动画)
- Unreal Engine(实时渲染引擎)
- Max / Pure Data(交互式媒体编程)
② 程序框架(Procedural Framework)
工作流也是一种"程序框架"——程序性(Procedural)意味着生成式(Generative),通过算法或程序生成内容。在 ComfyUI 中,工作流定义了一个自动化的内容生成流程。
③ 生成任意类型媒介的能力
一个 ComfyUI 工作流可以生成任何类型的媒体:
- 图像(Image)
- 视频(Video)
- 音频(Audio)
- AI 模型(AI Model)
- AI 智能体(AI Agent)
2.3 工作流的保存与加载
ComfyUI 提供了两种工作流保存方式:
| 保存方式 | 文件格式 | 特点 | 适用场景 |
|---|---|---|---|
| 嵌入图像元数据 | 与生成图像同文件 | 工作流自动保存在生成图像的元数据中,打开图像即可还原完整工作流 | 日常创作、分享作品时同步分享工作流 |
| 导出为 JSON 文件 | .json(纯文本) |
文件极小,方便版本管理、归档和分享 | 工作流独立分发、团队协作、Git 版本管理 |
保存操作:
- 快捷键:
Ctrl+S(macOS:Cmd+S) - 菜单:
Workflow → Save或Save As
加载操作:
- 将带有工作流元数据的图像直接拖入 ComfyUI 画布
- 菜单:
Workflow → Load加载 JSON 文件 - 从侧边栏 Workflows 面板加载已保存的工作流
重要提示:生成的图像中嵌入的工作流元数据是 ComfyUI 的一大特色。这意味着你可以从社区下载一张 AI 图像,直接拖入 ComfyUI 就能获得完整的生成参数和节点连接——这是学习和复现他人作品的最佳方式。
2.4 工作流模板(Workflow Templates)
ComfyUI 内置了**工作流模板(Workflow Templates)**功能,提供官方支持的各种模型的工作流示例:
入口位置:
- 侧边栏:点击 Templates 图标
- 菜单:
Workflow → Browse Workflow Templates
使用方法:
- 浏览模板:在模板浏览器中找到你感兴趣的模板(如 Text to Image、Text to Video 等)
- 加载模板:点击模板,自动加载对应工作流
- 下载模型:如果提示缺少模型文件,点击 Download 自动下载(Desktop 版)或手动下载后放入对应目录
- 运行工作流:准备好提示词等参数后,点击 Queue Prompt 运行
模板管理:
模板作为单独依赖包 comfyui-workflow-templates 管理。如果更新 ComfyUI 后看不到最新的模板,可能需要手动更新该依赖:
pip install --upgrade comfyui-workflow-templates
2.5 从视觉编程到程序框架
为了帮助你更深入理解工作流的本质,以下是几个关键视角:
视角一:工作流 = 程序流程图
┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 输入数据 │───▶│ 处理节点 A │───▶│ 处理节点 B │───▶│ 输出结果 │
│ (模型/提示词) │ │ (加载模型) │ │ (采样生成) │ │ (保存图像) │
└──────────────┘ └──────────────┘ └──────────────┘ └──────────────┘
视角二:工作流 = 数据的流水线
数据在节点之间"流动",每个节点对数据执行特定的变换。就像工厂流水线上,原材料经过多道工序变成成品。
视角三:工作流 = 函数式编程
每个节点可以看作一个函数:output = node(input1, input2, param1, param2)。工作流就是这些函数的组合嵌套。
三、节点(Node)——功能的基本单元
3.1 节点的定义与本质
在 ComfyUI 中,**节点(Node)**是执行任务的基本构建模块。每个节点都是一个独立构建的模块,具有自己独特的功能。节点通过连线互相连接,就像拼装乐高积木一样。
从计算机科学角度看,节点是一个信息容器,通常包含执行某些任务的编程指令。在 ComfyUI 中,节点通常以**函数运算符(Function Operator)**的形式存在——接受输入数据、执行某项操作、产生输出数据。
关键理解:节点 ≈ 函数。每个节点接收输入,处理,产生输出。输入/输出端口的数量、类型和参数决定了节点的功能。
3.2 核心节点类型详解
以下是 ComfyUI 内置节点中最核心、最常用的节点类型,它们是构建任何工作流的基石:
① Load Checkpoint(加载模型节点)
| 属性 | 说明 |
|---|---|
| 功能 | 加载 AI 绘图的核心模型文件(Checkpoint) |
| 输出 1 | MODEL(lavender 色)—— UNet 模型,负责扩散过程中的噪声预测和图像生成 |
| 输出 2 | CLIP(yellow 色)—— 文本编码器,将提示词转换为模型可理解的向量 |
| 输出 3 | VAE(rose 色)—— 变分自编码器,在像素空间和潜空间之间转换图像 |
| 参数 | 模型名称下拉选择 |
一个 Checkpoint 模型文件通常包含三个组件:UNet + CLIP + VAE。Load Checkpoint 节点将它们一次性加载并分别输出到三个端口。
② CLIP Text Encode(提示词编码节点)
| 属性 | 说明 |
|---|---|
| 功能 | 将文本提示词编码为语义向量(Conditioning) |
| 输入 | clip(yellow)—— 来自 Load Checkpoint 的 CLIP 输出 |
| 输出 | conditioning(orange)—— 编码后的语义条件向量 |
| 参数 | text输入框——填写提示词的地方 |
通常使用两个 CLIP Text Encode 节点:
- Positive(正向提示词):描述你希望在图像中出现的内容
- Negative(反向提示词):描述你希望避免出现的内容
③ Empty Latent Image(空白潜空间节点)
| 属性 | 说明 |
|---|---|
| 功能 | 创建一个纯噪声的潜空间张量,作为采样过程的起点 |
| 输出 | latent(pink)—— 初始化的潜空间图像 |
| 参数 | width / height(图像尺寸)、batch_size(批次大小) |
④ KSampler(采样器节点)
| 属性 | 说明 |
|---|---|
| 功能 | ComfyUI 的核心节点,执行整个去噪采样过程 |
| 输入 | model(lavender)、positive(orange)、negative(orange)、latent_image(pink) |
| 输出 | latent(pink)—— 去噪完成后的潜空间图像 |
| 参数 | 见下方参数表 |
KSampler 参数详解:
| 参数名 | 类型 | 说明 | 推荐初始值 |
|---|---|---|---|
seed |
整数 | 随机数种子,控制噪声的初始状态 | 随机生成 |
control_after_generate |
枚举 | 生成后种子控制模式:fixed(固定)/ increment(递增)/ decrement(递减)/ randomize(随机) |
randomize |
steps |
整数 | 去噪迭代步数,越多细节越丰富但耗时更长 | 20-30 |
cfg |
浮点数 | Classifier-Free Guidance Scale,控制提示词的约束强度,越高越贴近提示词,但可能过度拟合 | 7-8 |
sampler_name |
枚举 | 采样算法名称,决定去噪路径的数学方法 | euler |
scheduler |
枚举 | 调度器类型,控制噪声衰减速率和步长分配 | normal |
denoise |
浮点数 | 去噪强度,1.0=完全去噪(文生图),0.0-1.0=部分去噪(图生图时控制原图保留程度) |
1.0 |
关于 seed 的深入理解:seed 决定了噪声的初始随机状态。相同的 seed + 相同的参数 = 完全相同的生成结果。因此,当你找到满意的生成效果时,记录下 seed 值就可以精确复现。
⑤ VAE Decode(VAE 解码节点)
| 属性 | 说明 |
|---|---|
| 功能 | 将潜空间(latent)图像解码为像素空间(pixel)图像 |
| 输入 | samples(pink)—— 来自 KSampler 的潜空间输出;vae(rose)—— 来自 Load Checkpoint 的 VAE 输出 |
| 输出 | image(blue)—— 解码后的像素图像 |
⑥ VAE Encode(VAE 编码节点)
| 属性 | 说明 |
|---|---|
| 功能 | 将像素空间图像编码为潜空间图像(图生图的起点) |
| 输入 | pixels(blue)、vae(rose) |
| 输出 | latent(pink) |
⑦ Save Image(保存图像节点)
| 属性 | 说明 |
|---|---|
| 功能 | 将生成的图像保存到本地磁盘 |
| 输入 | images(blue) |
| 参数 | filename_prefix——文件名前缀,默认为 ComfyUI |
⑧ Preview Image(预览图像节点)
| 属性 | 说明 |
|---|---|
| 功能 | 在界面中预览生成的图像,不保存到磁盘 |
| 输入 | images(blue) |
3.3 节点的结构与外观
一个典型的 ComfyUI 节点由以下几个部分组成:
┌──────────────────────────────────────┐
│ [🦊] KSampler [⚙️] [×] │ ← 标题栏(节点名称 + 徽章 + 操作按钮)
│──────────────────────────────────────│
│ model [lavender ●] ──▶ │ ← 输出端口(右侧)
│ positive [orange ●] │
│ negative [orange ●] │
│ latent_image [pink ●] │
│──────────────────────────────────────│
│ seed: [ 123456789 ] │ ← Widget 参数区域
│ steps: [ 20 ] │
│ cfg: [ 7.0 ] │
│ sampler_name: [euler ▼] │
│ scheduler: [normal ▼] │
│ denoise: [ 1.00 ] │
│──────────────────────────────────────│
│ [pink ●]│ ← 输出端口
│ latent │
└──────────────────────────────────────┘
外观自定义:
- 修改颜色:右键节点 → 选择颜色样式
- 修改名称:双击标题栏,输入新名称
- 调整大小:拖拽节点任意角落
3.4 节点的状态
ComfyUI 中的节点有多种状态,每种状态通过不同的视觉表现来提示当前情况:
| 状态 | 视觉表现 | 含义 | 应对措施 |
|---|---|---|---|
| 正常(Normal) | 默认外观 | 节点处于待命状态,随时可执行 | 无需操作 |
| 运行中(Running) | 高亮/动画 | 节点正在执行中 | 等待完成,或点击中断 |
| 错误(Error) | 红色标记输入端口 | 节点的某个输入有问题,工作流执行失败 | 检查红色标记的输入端口,修复问题 |
| 缺失(Missing) | 粉色/黄色警告 | 节点类型在当前 ComfyUI 中不存在 | 两种可能:① ComfyUI 版本过旧,需更新;② 缺少自定义节点,需安装 |
3.5 节点的右键菜单详解
右键点击节点会弹出一个功能丰富的上下文菜单:
外观相关:
| 菜单项 | 功能 |
|---|---|
| Color | 修改节点颜色样式 |
| Title | 修改节点标题名称 |
操作相关:
| 菜单项 | 功能 |
|---|---|
| Clone | 克隆节点(创建完全相同的副本,含参数设置) |
| Copy / Paste | 复制/粘贴节点 |
| Delete | 删除节点 |
| Node Docs | 打开节点文档 |
核心功能——Mode(模式):
| 模式 | 效果 | 对后续节点的影响 |
|---|---|---|
| Always(默认) | 首次运行或输入发生变化时执行 | 正常提供输出数据 |
| Never | 永不执行,如同节点已被删除 | 后续节点报错——后置节点无法获取输入数据 |
| Bypass | 永不执行,但数据可以"绕过"该节点 | 后续节点正常运行——后置节点获取的是未被该节点处理的数据 |
Never vs Bypass 的核心区别:Never 相当于从工作流中移除了该节点及其功能,下游节点会因为缺少输入而报错。Bypass 则是"跳过"该节点但仍保持数据通路——下游节点能接收到跳过该节点后的原始数据。这在需要临时禁用某个处理步骤时非常实用。
3.6 Node Selection Toolbox(节点选择工具箱)
选中一个节点后,会出现一个浮动工具栏——Node Selection Toolbox,提供快速操作:
| 图标/按钮 | 功能 |
|---|---|
| 🎨 颜色 | 快速修改节点颜色(比右键菜单更快) |
| ⏭️ Bypass | 快速将节点设为 Bypass 模式 |
| 🔒 锁定 | 锁定节点,防止误操作 |
| 🗑️ 删除 | 快速删除节点 |
注意:如果觉得这个 Toolbox 遮挡视线,可以在设置中关闭它:Comfy → Node Selection Toolbox → Disable。
3.7 节点 Badge(徽章)
ComfyUI 为节点提供了徽章(Badge)显示功能,帮助快速识别节点来源:
| 徽章类型 | 显示内容 | 含义 |
|---|---|---|
| Comfy Core 节点 | 🦊 狐狸图标 | 该节点是 ComfyUI 内置的核心节点 |
| 自定义节点 | 节点包名称 | 该节点来自某个第三方自定义节点包 |
徽章的显示可以在菜单中设置:Menu → Badges → Node ID / Node Source
四、连线(Link)——数据的通道
4.1 连线的本质
在 ComfyUI 中,节点之间绘制的线或曲线称为连线(Links),也被称为连接(Connections)或导线(Wires)。它们将数据从一个节点的输出端口携带到另一个节点的输入端口,定义了工作流的数据流。
4.2 颜色编码系统详解
这是 ComfyUI 中最直观也最重要的系统之一。每种数据类型都有独特的颜色,节点输入/输出端口以及连接它们的连线都遵循这一颜色方案:
| 数据类型 | 颜色(中文) | 颜色(英文) | 说明 |
|---|---|---|---|
| 扩散模型 | 薰衣草紫 | Lavender | UNet 模型数据,用于噪声预测和图像生成 |
| CLIP 模型 | 黄色 | Yellow | 文本编码器,将提示词转换为向量 |
| VAE 模型 | 玫瑰红 | Rose | 变分自编码器,在像素/潜空间之间转换 |
| 条件向量 | 橙色 | Orange | 编码后的语义条件(正/反向提示词) |
| 潜空间图像 | 粉色 | Pink | 潜在空间中的图像表示(扩散过程的工作空间) |
| 像素图像 | 蓝色 | Blue | 解码后的常规像素图像(JPG/PNG 格式) |
| 遮罩 | 绿色 | Green | 二进制遮罩,用于区域控制 |
| 数值 | 浅绿色 | Light Green | 整数或浮点数 |
| 网格 | 亮绿色 | Bright Green | 3D 网格数据 |
核心规则:只有相同颜色的端口才能连接。 这是 ComfyUI 保证类型安全的方式。如果你发现两个端口无法连接,检查它们的颜色——它们很可能数据类型不匹配。
4.3 连线的操作:连接与断开
| 操作 | 方法 |
|---|---|
| 连接 | 从一个节点的输出端口按住鼠标拖拽到另一个节点的同色输入端口 |
| 断开 | 点击输入端口并按住鼠标左键拖开,即可断开连接 |
| 通过连线中点断开 | 右键点击连线的中点,选择断开 |
快捷添加节点:从节点的输入或输出端口拖拽连线时,如果不连接到其他节点而是直接释放鼠标,会弹出一个上下文菜单,列出与该数据类型兼容的节点——这是快速搭建工作流的实用技巧。
4.4 连线样式的切换
ComfyUI 支持多种连线样式,可以根据个人偏好调整:
| 样式 | 视觉特征 | 适用场景 |
|---|---|---|
| 曲线(Curves) | 平滑曲线 | 默认样式,视觉上最舒适 |
| 直角(Right Angles) | 横平竖直 | 复杂工作流中更清晰 |
| 直线(Straight) | 直接连接 | 极简风格 |
| 隐藏(Hidden) | 不显示连线 | 成品演示,减少视觉杂乱 |
切换位置:Settings(设置齿轮图标)→ Display (Lite Graph) → Graph → Link Render Mode
4.5 Reroute 节点(线路重定向)
当工作流变得复杂时,连线可能会重叠或穿过节点后面,导致难以阅读。Reroute 节点允许你手动将导线重定向到 2D 图空间中的任意点,保持布局整洁。
ComfyUI 还内置了原生 Reroute 功能——在画布上直接创建导线拐点,无需额外节点。
五、属性(Property)——节点的配置参数
5.1 属性的三种类型
节点属性可以分为三类:
| 属性类型 | 说明 | 示例 |
|---|---|---|
| 输入属性(Input) | 通过连线接收来自其他节点的数据 | KSampler 的 model、positive、latent_image |
| 参数属性(Widget) | 节点本体上的可调参数,直接手动设置 | KSampler 的 steps、cfg、seed |
| 输出属性(Output) | 节点处理后产生的结果数据,通过连线传递给其他节点 | KSampler 的 latent 输出 |
5.2 常见属性 Widget 类型
| Widget 类型 | 外观 | 交互方式 | 示例 |
|---|---|---|---|
| 输入框 | 单行文本输入 | 键盘输入 | CLIP Text Encode 的 text |
| 滑块 | 带滑块的数值控件 | 拖拽滑块或输入数字 | KSampler 的 steps、cfg |
| 下拉菜单 | 下拉选择列表 | 点击选择 | KSampler 的 sampler_name |
| 数值微调 | 带上下箭头的数值输入 | 点击箭头或输入数字 | Empty Latent Image 的 width/height |
| 开关 | 切换开关 | 点击切换 | 部分高级节点中的布尔选项 |
5.3 属性的查看与修改
- 查看属性:节点上的 Widget 直接可见,属于该节点的参数
- 输入属性查看:查看连线的颜色和来源节点,即可了解输入数据的类型和来源
- 输出属性查看:查看端口颜色和文字标签,即可了解输出数据类型
六、模型(Model)——AI 的"大脑"
6.1 Checkpoint 模型
Checkpoint 是 ComfyUI 最核心的模型类型,也是大多数工作流的起点。一个 Checkpoint 文件通常包含三个组件:
| 组件 | 说明 | 连线颜色 |
|---|---|---|
| MODEL(UNet) | 扩散模型的核心,负责噪声预测和图像生成 | Lavender |
| CLIP | 文本编码器,将提示词转换为语义向量 | Yellow |
| VAE | 变分自编码器,在像素空间和潜空间之间转换 | Rose |
存放路径:ComfyUI/models/checkpoints/
加载节点:Load Checkpoint(或 Load Checkpoint Simple)
6.2 LoRA 模型
LoRA(Low-Rank Adaptation)是一种轻量级的模型微调技术,可以在不修改基础 Checkpoint 的情况下改变生成风格或添加特定角色/概念。
存放路径:ComfyUI/models/loras/
加载节点:Load LoRA
6.3 VAE 模型
VAE(变分自编码器)负责在像素空间(我们看到的图像)和潜空间(模型工作的抽象空间)之间进行转换。有时用户会使用专门的 VAE 模型替换 Checkpoint 自带的 VAE,以获得更好的解码质量。
存放路径:ComfyUI/models/vae/
加载节点:VAE Loader
6.4 CLIP 模型
CLIP(Contrastive Language-Image Pre-training)模型负责将文本提示词编码为模型可以理解的向量表示。不同的模型系列可能需要不同的 CLIP 模型。
存放路径:ComfyUI/models/clip/
加载节点:CLIP Loader、DualCLIPLoader(用于 Flux 等双编码器模型)
6.5 ControlNet 模型
ControlNet 是一种辅助控制技术,通过额外条件(如边缘检测图、姿态骨架、深度图等)精确控制生成图像的构图和姿态。
存放路径:ComfyUI/models/controlnet/
加载节点:ControlNet Loader、ControlNet Apply
6.6 模型路径总览
| 模型类型 | 存放目录(相对于 ComfyUI 根目录) |
|---|---|
| Checkpoint | models/checkpoints/ |
| LoRA | models/loras/ |
| VAE | models/vae/ |
| CLIP | models/clip/ |
| ControlNet | models/controlnet/ |
| UNet | models/diffusion_models/ |
| Text Encoders | models/text_encoders/ |
| Embeddings | models/embeddings/ |
| Upscaler | models/upscale_models/ |
| IP Adapter | models/ipadapter/ |
| Style Models | models/style_models/ |
注意:模型文件名不要包含中文、空格或特殊字符。建议使用简洁的英文命名。
七、依赖关系——执行的顺序
7.1 拓扑排序:工作流的执行逻辑
当你在 ComfyUI 中点击 Queue Prompt 时,系统需要决定先执行哪个节点、后执行哪个节点。这个顺序不是随机的,而是由节点之间的数据依赖关系决定的。
依赖规则很简单:一个节点必须在它的所有输入数据准备就绪后才能执行。
这背后的计算机科学概念叫做拓扑排序(Topological Sorting)——对有向无环图(DAG)中的节点进行线性排序,使得对于每一条有向边 A → B,节点 A 在排序中都排在节点 B 之前。
举例说明:
在这个简单工作流中,执行顺序是:
- Load Checkpoint(最上游,无依赖)
- Empty Latent Image(最上游,无依赖)
- CLIP Text Encode(依赖 Load Checkpoint 的 CLIP 输出)
- KSampler(依赖 Load Checkpoint 的 MODEL、CLIP Text Encode 的 Conditioning、Empty Latent Image 的 Latent)
- VAE Decode(依赖 KSampler 的 Latent 和 Load Checkpoint 的 VAE)
- Save Image(依赖 VAE Decode 的图像输出)
7.2 并行执行
注意,步骤 1、2、3 之间没有依赖关系,因此 ComfyUI 会并行执行它们。这是 ComfyUI 的一个重要优化——有效的并行执行可以显著降低复杂工作流的运行时间。
实操启示:当设计工作流时,考虑哪些节点可以并行执行,有助于优化整体生成效率。
7.3 节点 Mode 详解
节点 Mode 是控制节点执行行为的关键设置,位于节点的右键菜单中:
| Mode | 图标 | 行为 | 用途 |
|---|---|---|---|
| Always(默认) | ▶️ | 首次运行或输入变化时执行 | 正常执行 |
| Never | ⏹️ | 永不执行,如同被删除,后置节点报错 | 完全禁用某个功能 |
| Bypass | ⏭️ | 永不执行,但数据绕过节点继续传递 | 临时跳过某个步骤(如禁用 LoRA 看效果对比) |
Never 与 Bypass 的实际效果对比:
假设有一个工作流应用了两个 LoRA 模型:
| 场景 | 第一个 Load LoRA | 第二个 Load LoRA | 结果 |
|---|---|---|---|
| 正常 | Always | Always | 两个 LoRA 都生效 |
| 测试 1 | Always | Never | 工作流报错——第二个 LoRA 的下游节点收不到数据 |
| 测试 2 | Always | Bypass | 工作流正常运行——只有第一个 LoRA 生效,第二个被跳过 |
理解 Bypass 的价值:当你对比"加不加某个节点"的效果时,Bypass 模式是最佳选择。它让你可以快速切换节点的启用/禁用状态,而无需删除节点再重新添加。
7.4 部分执行(Partial Execution)实战
结合上述三种 Mode,你可以实现部分执行——只运行工作流中的部分节点。
典型应用场景:
- 调试单个节点:当你怀疑某个节点的参数设置有问题时,可以将其上游节点设为 Always,下游节点设为 Bypass(暂不执行),然后单独调试目标节点
- 对比实验:在同一个工作流中通过 Bypass 快速对比"加/不加某个处理步骤"的效果差异
- 跳过耗时环节:当调试工作流的前半部分时,将后半部分节点设为 Bypass,节省等待时间
八、子图(Subgraph)——模块化工作流
8.1 子图的定义与作用
子图(Subgraph) 是 ComfyUI 提供的一个强大功能,允许你将一组节点打包成一个可复用的子图节点。
可以这样理解子图:它就像编程中的"函数"或"模块"——将一组相关的操作封装起来,对外只暴露必要的输入和输出接口,内部细节被隐藏。
使用子图的场景:
- 将复杂的 LoRA 应用流程封装为一个子图
- 将常用的图像后处理(放大、裁剪、调色)打包复用
- 将 ControlNet 配置组合为标准化模块
- 在团队协作中提供标准化的工作流组件
8.2 创建子图
创建子图分为三个简单步骤:
步骤 1:选择节点
在画布上框选(Shift+拖拽)你想要打包的节点组。
步骤 2:点击子图图标
在出现的 Node Selection Toolbox 中,点击子图图标(文件夹形状)。
步骤 3:子图创建完成
ComfyUI 自动根据所选节点的输入输出来创建子图的接口端口。初始状态下,子图会自动暴露所有外部连接端口。
8.3 编辑子图
进入编辑模式:
- 双击子图节点内部的空白区域(不要双击 Widget 上)
- 或点击子图节点上的编辑按钮
在编辑模式中,你可以:
- 导航栏:顶部显示当前所在层级,点击可返回父级
- 输入插槽(Input Slots):内部节点的输入端口通过插槽暴露给外部
- 像普通节点一样连接输出到插槽
- 右键点击插槽可以重命名、删除
- 输出插槽(Output Slots):内部节点的输出端口通过插槽暴露给外部
- 同样支持右键管理
参数面板(v0.3.66+):
可以选择子图后点击"Edit Subgraph Widgets"按钮,在参数面板中编辑子图内部 Widget 的顺序和可见性,无需进入子图内部。
8.4 嵌套子图
子图内部还可以再包含子图,形成嵌套子图(Nested Subgraph)。这让你可以构建非常复杂的模块化工作流:
父工作流
└── 一级子图 A(图像预处理模块)
├── 二级子图 A1(自动缩放)
└── 二级子图 A2(自动裁剪)
└── 一级子图 B(生成主流程)
├── 二级子图 B1(模型加载)
└── 二级子图 B2(采样参数配置)
└── 一级子图 C(后处理模块)
├── 二级子图 C1(超分处理)
└── 二级子图 C2(色调调整)
导航栏会清晰显示当前层级,并允许你轻松在嵌套子图之间切换。按 Esc 键可快速退出当前子图返回父级。
8.5 Subgraph Blueprint(子图蓝图)
从 ComfyUI 前端版本 1.27.7 开始,你可以将子图发布到节点库,成为可复用的 Subgraph Blueprint:
发布方法:
- 选中子图节点
- 在 Selection Toolbox 中点击"书本"(publish)图标
- 或者通过 Selection Toolbox 菜单选择 "Add Subgraph to Library"
- 在弹出的对话框中设置子图蓝图的名称
发布后的效果:
- 子图蓝图会出现在 Nodes 面板的"Subgraph Blueprints"分类中
- 像普通节点一样拖拽使用
- 每个添加到工作流中的子图蓝图节点是独立的,编辑一个不会影响其他
九、节点文档查阅技巧
9.1 直接在界面中查看节点文档
ComfyUI 提供了内联节点文档功能:
方法一:通过 Selection Toolbox
- 选中目标节点
- 在 Selection Toolbox 中点击节点信息图标(ℹ️)
- 文档面板自动打开
方法二:通过节点库
- 打开侧边栏 Nodes 面板
- 悬停在节点名称上
- 点击 "?" 图标
9.2 通过内置节点文档页面查阅
访问 ComfyUI 内置节点文档,可以查看所有内置节点的完整文档。文档中的每个节点页面都包含:
- 节点的功能说明
- 所有输入参数及数据类型
- 所有输出参数及数据类型
- 参数详细说明
- 使用注意事项
9.3 节点文档包含的内容
以 KSampler 的文档为例,你将看到:
## KSampler
### 功能
执行扩散模型的去噪采样过程,是文生图/图生图工作流的核心节点。
### 输入
| 参数 | 类型 | 说明 |
|------|------|------|
| model | MODEL | 用于去噪的扩散模型 |
| positive | CONDITIONING | 正向提示词编码 |
| negative | CONDITIONING | 反向提示词编码 |
| latent_image | LATENT | 待去噪的潜空间图像 |
### 参数
| 参数 | 类型 | 默认值 | 说明 |
|------|------|--------|------|
| seed | INT | 0 | 随机种子 |
| steps | INT | 20 | 去噪步数 |
| cfg | FLOAT | 8.0 | 提示词引导强度 |
| sampler_name | COMBO | "euler" | 采样算法 |
| scheduler | COMBO | "normal" | 调度器类型 |
| denoise | FLOAT | 1.0 | 去噪强度 |
### 输出
| 参数 | 类型 | 说明 |
|------|------|------|
| latent | LATENT | 去噪完成后的潜空间图像 |
十、综合案例:从概念到实践的映射
10.1 案例:标准文生图工作流的概念拆解
让我们用一个标准的文生图工作流,逐一对标六大核心概念:
| 概念 | 在这个工作流中的体现 |
|---|---|
| 工作流(Workflow) | 上图中所有节点 + 连线的整体 —— 一个完整的"文生图"生成流程 |
| 节点(Node) | 图中的 6 个方框,每个是一个独立的功能单元 |
| 连线(Link) | 图中的箭头线,每种颜色代表一种数据类型 |
| 属性(Property) | CLIP Text Encode 的 text 参数、KSampler 的 steps/cfg/seed 等 Widget 设置 |
| 模型(Model) | Load Checkpoint 加载的 .safetensors 文件,决定了生成图像的质量和风格 |
| 依赖关系 | KSampler 必须等待 Load Checkpoint 和 CLIP Text Encode 都完成后才能执行 |
10.2 概念关系图
┌──────────────┐
│ 工作流 │
│ (Workflow) │
└──────┬───────┘
│ 包含
┌────────────┼────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│ 节点 A │─▶│ 节点 B │─▶│ 节点 C │ ← 节点 (Node)
└──────────┘ └──────────┘ └──────────┘
│ │ │
│ 属性 │ 属性 │ 属性 ← 属性 (Property)
│ (Widget) │ (Widget) │ (Widget)
│ │ │
连线颜色: lavender pink blue ← 连线 (Link)
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────┐
│ 模型 (Model) │
│ Checkpoint / LoRA / VAE / CLIP │
└─────────────────────────────────────┘
│
▼
┌─────────────────────────────────────┐
│ 依赖关系 (Dependency) │
│ 拓扑排序: A → B → C (串行或并行) │
└─────────────────────────────────────┘
十一、总结
通过本文的学习,你已经全面掌握了 ComfyUI 的六大核心概念:
- ✅ 工作流(Workflow)——节点图(Graph),可视化的编程环境,程序框架
- ✅ 节点(Node)——功能的基本单元,理解节点类型、状态、右键菜单、Selection Toolbox
- ✅ 连线(Link)——数据的通道,理解颜色编码系统(6+ 种颜色),连接与断开操作
- ✅ 属性(Property)——节点的配置参数,理解输入属性、Widget 参数、输出属性的区别
- ✅ 模型(Model)——AI 的大脑,理解 Checkpoint、LoRA、VAE、CLIP、ControlNet 等模型类型与存放路径
- ✅ 依赖关系(Dependency)——执行的顺序,理解拓扑排序、并行执行、节点 Mode(Always/Never/Bypass)、部分执行
此外,你还学会了:
- ✅ 子图功能——创建、编辑、嵌套、发布为 Subgraph Blueprint
- ✅ 节点文档查阅——界面内联查看 + 官方内置节点文档页面
下一篇预告:博客 9——知识点详解——ComfyUI 界面指南与实操操作(基础+进阶),我们将把本文学到的概念在界面上"对号入座",熟悉主界面的每一个区域和功能,掌握节点和工作流的操作技巧,学习快捷键、APP Mode、遮罩编辑器等实用功能,真正将理论转化为操作能力。
官方参考链接
- ComfyUI 工作流(Workflow)概念 — 工作流即节点图的详细解释
- ComfyUI 节点(Node)概念 — 节点定义、状态、操作详解
- ComfyUI 连线(Link)概念 — 连线颜色编码、样式切换、Reroute
- ComfyUI 内置节点总览 — 所有内置节点的完整文档
- ComfyUI 子图功能 — 子图的创建、编辑、嵌套与蓝图发布
- ComfyUI 工作流模板 — 内置模板的浏览与使用
- ComfyUI 节点文档查看 — 节点文档的内联查阅方法
- ComfyUI 教程:文生图工作流 — 文生图工作流节点详解
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)