本文为系列第 8 篇,深入拆解 ComfyUI 的核心基础概念体系。读完本文,你将彻底理解工作流、节点、连线、属性、模型、依赖关系这六大核心概念,掌握子图功能和部分执行,并能自主查阅节点文档。


目录


一、引言:理解 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

使用方法:

  1. 浏览模板:在模板浏览器中找到你感兴趣的模板(如 Text to Image、Text to Video 等)
  2. 加载模板:点击模板,自动加载对应工作流
  3. 下载模型:如果提示缺少模型文件,点击 Download 自动下载(Desktop 版)或手动下载后放入对应目录
  4. 运行工作流:准备好提示词等参数后,点击 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 的 modelpositivelatent_image
参数属性(Widget) 节点本体上的可调参数,直接手动设置 KSampler 的 stepscfgseed
输出属性(Output) 节点处理后产生的结果数据,通过连线传递给其他节点 KSampler 的 latent 输出

5.2 常见属性 Widget 类型

Widget 类型 外观 交互方式 示例
输入框 单行文本输入 键盘输入 CLIP Text Encode 的 text
滑块 带滑块的数值控件 拖拽滑块或输入数字 KSampler 的 stepscfg
下拉菜单 下拉选择列表 点击选择 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 LoaderDualCLIPLoader(用于 Flux 等双编码器模型)

6.5 ControlNet 模型

ControlNet 是一种辅助控制技术,通过额外条件(如边缘检测图、姿态骨架、深度图等)精确控制生成图像的构图和姿态。

存放路径ComfyUI/models/controlnet/

加载节点ControlNet LoaderControlNet 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 之前。

举例说明:

在这个简单工作流中,执行顺序是:

  1. Load Checkpoint(最上游,无依赖)
  2. Empty Latent Image(最上游,无依赖)
  3. CLIP Text Encode(依赖 Load Checkpoint 的 CLIP 输出)
  4. KSampler(依赖 Load Checkpoint 的 MODEL、CLIP Text Encode 的 Conditioning、Empty Latent Image 的 Latent)
  5. VAE Decode(依赖 KSampler 的 Latent 和 Load Checkpoint 的 VAE)
  6. 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,你可以实现部分执行——只运行工作流中的部分节点。

典型应用场景:

  1. 调试单个节点:当你怀疑某个节点的参数设置有问题时,可以将其上游节点设为 Always,下游节点设为 Bypass(暂不执行),然后单独调试目标节点
  2. 对比实验:在同一个工作流中通过 Bypass 快速对比"加/不加某个处理步骤"的效果差异
  3. 跳过耗时环节:当调试工作流的前半部分时,将后半部分节点设为 Bypass,节省等待时间

八、子图(Subgraph)——模块化工作流

8.1 子图的定义与作用

子图(Subgraph) 是 ComfyUI 提供的一个强大功能,允许你将一组节点打包成一个可复用的子图节点。

可以这样理解子图:它就像编程中的"函数"或"模块"——将一组相关的操作封装起来,对外只暴露必要的输入和输出接口,内部细节被隐藏。

使用子图的场景:

  • 将复杂的 LoRA 应用流程封装为一个子图
  • 将常用的图像后处理(放大、裁剪、调色)打包复用
  • 将 ControlNet 配置组合为标准化模块
  • 在团队协作中提供标准化的工作流组件

8.2 创建子图

创建子图分为三个简单步骤:

步骤 1:选择节点
在画布上框选(Shift+拖拽)你想要打包的节点组。

步骤 2:点击子图图标
在出现的 Node Selection Toolbox 中,点击子图图标(文件夹形状)。

步骤 3:子图创建完成
ComfyUI 自动根据所选节点的输入输出来创建子图的接口端口。初始状态下,子图会自动暴露所有外部连接端口。

8.3 编辑子图

进入编辑模式:

  • 双击子图节点内部的空白区域(不要双击 Widget 上)
  • 或点击子图节点上的编辑按钮

在编辑模式中,你可以:

  1. 导航栏:顶部显示当前所在层级,点击可返回父级
  2. 输入插槽(Input Slots):内部节点的输入端口通过插槽暴露给外部
    • 像普通节点一样连接输出到插槽
    • 右键点击插槽可以重命名、删除
  3. 输出插槽(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:

发布方法:

  1. 选中子图节点
  2. 在 Selection Toolbox 中点击"书本"(publish)图标
  3. 或者通过 Selection Toolbox 菜单选择 "Add Subgraph to Library"
  4. 在弹出的对话框中设置子图蓝图的名称

发布后的效果:

  • 子图蓝图会出现在 Nodes 面板的"Subgraph Blueprints"分类中
  • 像普通节点一样拖拽使用
  • 每个添加到工作流中的子图蓝图节点是独立的,编辑一个不会影响其他

九、节点文档查阅技巧

9.1 直接在界面中查看节点文档

ComfyUI 提供了内联节点文档功能:

方法一:通过 Selection Toolbox

  1. 选中目标节点
  2. 在 Selection Toolbox 中点击节点信息图标(ℹ️)
  3. 文档面板自动打开

方法二:通过节点库

  1. 打开侧边栏 Nodes 面板
  2. 悬停在节点名称上
  3. 点击 "?" 图标

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 的六大核心概念:

  1. ✅ 工作流(Workflow)——节点图(Graph),可视化的编程环境,程序框架
  2. ✅ 节点(Node)——功能的基本单元,理解节点类型、状态、右键菜单、Selection Toolbox
  3. ✅ 连线(Link)——数据的通道,理解颜色编码系统(6+ 种颜色),连接与断开操作
  4. ✅ 属性(Property)——节点的配置参数,理解输入属性、Widget 参数、输出属性的区别
  5. ✅ 模型(Model)——AI 的大脑,理解 Checkpoint、LoRA、VAE、CLIP、ControlNet 等模型类型与存放路径
  6. ✅ 依赖关系(Dependency)——执行的顺序,理解拓扑排序、并行执行、节点 Mode(Always/Never/Bypass)、部分执行

此外,你还学会了:

  • ✅ 子图功能——创建、编辑、嵌套、发布为 Subgraph Blueprint
  • ✅ 节点文档查阅——界面内联查看 + 官方内置节点文档页面

下一篇预告:博客 9——知识点详解——ComfyUI 界面指南与实操操作(基础+进阶),我们将把本文学到的概念在界面上"对号入座",熟悉主界面的每一个区域和功能,掌握节点和工作流的操作技巧,学习快捷键、APP Mode、遮罩编辑器等实用功能,真正将理论转化为操作能力。


官方参考链接

  1. ComfyUI 工作流(Workflow)概念 — 工作流即节点图的详细解释
  2. ComfyUI 节点(Node)概念 — 节点定义、状态、操作详解
  3. ComfyUI 连线(Link)概念 — 连线颜色编码、样式切换、Reroute
  4. ComfyUI 内置节点总览 — 所有内置节点的完整文档
  5. ComfyUI 子图功能 — 子图的创建、编辑、嵌套与蓝图发布
  6. ComfyUI 工作流模板 — 内置模板的浏览与使用
  7. ComfyUI 节点文档查看 — 节点文档的内联查阅方法
  8. ComfyUI 教程:文生图工作流 — 文生图工作流节点详解
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐