节点系统 #
节点概述 #
什么是节点? #
节点是 ComfyUI 工作流的基本构建单元,每个节点执行特定的功能,通过连接形成完整的图像生成流程。
text
┌─────────────────────────────────────────────────────────────┐
│ 节点工作原理 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 输入数据 节点处理 输出数据 │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Input │───→│ Process │────→│ Output │ │
│ │ 数据 │ │ 处理 │ │ 数据 │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
│ 示例: │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ CLIP │───→│ Encode │────→│Condition │ │
│ │ Text │ │ 编码 │ │ Vector │ │
│ └──────────┘ └──────────┘ └──────────┘ │
│ │
└─────────────────────────────────────────────────────────────┘
节点结构 #
text
┌─────────────────────────────────────────────────────────────┐
│ 节点组成要素 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 输入端口 节点标题栏 输出端口 │
│ ○ ○ ┌──────────────┐ ○ ○ │
│ │ Node Title │ │
│ ├──────────────┤ │
│ 控件区域 │ Widget 1 │ 折叠按钮 │
│ │ │ Widget 2 │ [-] │
│ │ │ Widget 3 │ │
│ └──────────────┘ │
│ │
│ 要素说明: │
│ ├── 输入端口 - 接收其他节点的数据 │
│ ├── 输出端口 - 向其他节点传递数据 │
│ ├── 控件区域 - 设置节点参数 │
│ └── 标题栏 - 显示节点名称和状态 │
│ │
└─────────────────────────────────────────────────────────────┘
数据类型 #
基础数据类型 #
text
┌─────────────────────────────────────────────────────────────┐
│ 数据类型对照表 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 类型名称 颜色 说明 示例节点 │
│ ───────────────────────────────────────────────────────── │
│ MODEL 灰/白 UNet 模型 Load Checkpoint │
│ CLIP 黄色 文本编码器 Load Checkpoint │
│ VAE 粉色 变分自编码器 Load Checkpoint │
│ CONDITIONING 橙色 条件向量 CLIP Text Encode │
│ LATENT 紫色 潜空间图像 Empty Latent │
│ IMAGE 绿色 像素图像 VAE Decode │
│ MASK 蓝色 蒙版数据 Load Image │
│ INT 红色 整数 各种参数 │
│ FLOAT 红色 浮点数 各种参数 │
│ STRING 青色 字符串 文本输入 │
│ │
└─────────────────────────────────────────────────────────────┘
数据流向 #
text
标准文生图数据流:
Load Checkpoint
│
├── MODEL ──────────────────────────────┐
│ │
├── CLIP ──→ CLIP Text Encode ──→ CONDITIONING ──┐
│ (Positive) │
│ │
├── CLIP ──→ CLIP Text Encode ──→ CONDITIONING ──┤
│ (Negative) │
│ │
└── VAE ────────────────────────────────┐ │
│ │
Empty Latent Image ──→ LATENT ────────────────┼────────┤
│ │
▼ ▼
KSampler
│
▼
LATENT
│
▼
VAE Decode
│
▼
IMAGE
│
▼
Save Image
节点分类 #
加载器节点 (Loaders) #
text
加载器节点用于加载模型和数据:
CheckpointLoaderSimple
├── 功能:加载主模型
├── 输入:无
├── 输出:MODEL, CLIP, VAE
└── 参数:模型文件名
VAELoader
├── 功能:加载独立 VAE
├── 输入:无
├── 输出:VAE
└── 参数:VAE 文件名
LoraLoader
├── 功能:加载 LoRA
├── 输入:MODEL, CLIP
├── 输出:MODEL, CLIP
└── 参数:LoRA 文件名、强度
CLIPLoader
├── 功能:加载独立 CLIP
├── 输入:无
├── 输出:CLIP
└── 参数:CLIP 文件名
ControlNetLoader
├── 功能:加载 ControlNet
├── 输入:无
├── 输出:CONTROL_NET
└── 参数:ControlNet 文件名
UNETLoader
├── 功能:加载独立 UNet
├── 输入:无
├── 输出:MODEL
└── 参数:UNet 文件名
条件节点 (Conditioning) #
text
条件节点用于处理提示词和条件:
CLIPTextEncode
├── 功能:编码文本提示词
├── 输入:CLIP
├── 输出:CONDITIONING
└── 参数:文本内容
ConditioningCombine
├── 功能:合并多个条件
├── 输入:CONDITIONING x2
├── 输出:CONDITIONING
└── 用途:组合多个提示词
ConditioningAverage
├── 功能:条件加权平均
├── 输入:CONDITIONING x2
├── 输出:CONDITIONING
└── 参数:权重比例
ConditioningSetArea
├── 功能:设置条件区域
├── 输入:CONDITIONING
├── 输出:CONDITIONING
└── 参数:区域坐标、强度
ConditioningSetAreaStrength
├── 功能:调整区域强度
├── 输入:CONDITIONING
├── 输出:CONDITIONING
└── 参数:强度值
采样节点 (Sampling) #
text
采样节点是图像生成的核心:
KSampler
├── 功能:K-diffusion 采样器
├── 输入:MODEL, CONDITIONING x2, LATENT
├── 输出:LATENT
└── 参数:seed, steps, cfg, sampler, scheduler
KSamplerAdvanced
├── 功能:高级采样器
├── 输入:MODEL, CONDITIONING x2, LATENT
├── 输出:LATENT
└── 参数:额外控制参数
SamplerCustom
├── 功能:自定义采样器
├── 输入:MODEL, CONDITIONING x2, LATENT
├── 输出:LATENT
└── 用途:高级采样控制
潜空间节点 (Latent) #
text
潜空间节点操作潜空间图像:
EmptyLatentImage
├── 功能:创建空白潜空间
├── 输入:无
├── 输出:LATENT
└── 参数:宽度、高度、批量大小
LatentUpscale
├── 功能:放大潜空间
├── 输入:LATENT
├── 输出:LATENT
└── 参数:放大方法、尺寸
LatentComposite
├── 功能:潜空间合成
├── 输入:LATENT x2
├── 输出:LATENT
└── 参数:位置坐标
LatentRotate
├── 功能:旋转潜空间
├── 输入:LATENT
├── 输出:LATENT
└── 参数:旋转角度
LatentFlip
├── 功能:翻转潜空间
├── 输入:LATENT
├── 输出:LATENT
└── 参数:翻转方向
LatentCrop
├── 功能:裁剪潜空间
├── 输入:LATENT
├── 输出:LATENT
└── 参数:裁剪区域
图像节点 (Image) #
text
图像节点处理像素图像:
LoadImage
├── 功能:加载图像
├── 输入:无
├── 输出:IMAGE, MASK
└── 参数:图像文件名
VAEDecode
├── 功能:潜空间解码为图像
├── 输入:LATENT, VAE
├── 输出:IMAGE
└── 用途:生成最终图像
VAEEncode
├── 功能:图像编码为潜空间
├── 输入:IMAGE, VAE
├── 输出:LATENT
└── 用途:图生图
ImageScale
├── 功能:缩放图像
├── 输入:IMAGE
├── 输出:IMAGE
└── 参数:缩放方法、尺寸
ImageUpscaleWithModel
├── 功能:模型放大图像
├── 输入:IMAGE, UPSCALE_MODEL
├── 输出:IMAGE
└── 用途:高清放大
ImageCompositeMasked
├── 功能:图像蒙版合成
├── 输入:IMAGE x2, MASK
├── 输出:IMAGE
└── 参数:合成位置
SaveImage
├── 功能:保存图像
├── 输入:IMAGE
├── 输出:无
└── 参数:文件名前缀
蒙版节点 (Mask) #
text
蒙版节点处理蒙版数据:
MaskToImage
├── 功能:蒙版转图像
├── 输入:MASK
├── 输出:IMAGE
└── 用途:可视化蒙版
ImageToMask
├── 功能:图像转蒙版
├── 输入:IMAGE
├── 输出:MASK
└── 参数:颜色通道
MaskComposite
├── 功能:蒙版合成
├── 输入:MASK x2
├── 输出:MASK
└── 参数:合成方式
FeatherMask
├── 功能:羽化蒙版
├── 输入:MASK
├── 输出:MASK
└── 参数:羽化程度
GrowMask
├── 功能:扩展蒙版
├── 输入:MASK
├── 输出:MASK
└── 参数:扩展量
常用节点详解 #
KSampler 节点 #
text
┌─────────────────────────────────────────────────────────────┐
│ KSampler 参数详解 │
├─────────────────────────────────────────────────────────────┤
│ │
│ seed(种子): │
│ ├── 控制随机性 │
│ ├── 相同种子 + 相同参数 = 相同结果 │
│ ├── 不同种子 = 不同结果 │
│ └── 可固定或随机 │
│ │
│ steps(步数): │
│ ├── 采样迭代次数 │
│ ├── 推荐:20-50 │
│ ├── 太少:质量差 │
│ └── 太多:边际效益递减 │
│ │
│ cfg(提示词相关性): │
│ ├── 控制图像与提示词的相关程度 │
│ ├── 推荐:5-10 │
│ ├── 太低:忽略提示词 │
│ └── 太高:图像失真 │
│ │
│ sampler_name(采样器): │
│ ├── euler - 快速,适合预览 │
│ ├── euler_a - 快速,效果好 │
│ ├── dpmpp_2m - 推荐,质量好 │
│ ├── dpmpp_sde - 高质量,较慢 │
│ └── uni_pc - 高效,质量好 │
│ │
│ scheduler(调度器): │
│ ├── normal - 标准调度 │
│ ├── karras - 推荐,效果好 │
│ ├── exponential - 指数调度 │
│ └── sgm_uniform - SGM 均匀 │
│ │
│ denoise(去噪强度): │
│ ├── 文生图:1.0 │
│ ├── 图生图:0.3-0.8 │
│ └── 值越低,保留原图越多 │
│ │
└─────────────────────────────────────────────────────────────┘
采样器对比 #
text
┌─────────────────────────────────────────────────────────────┐
│ 采样器性能对比 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 采样器 速度 质量 推荐步数 适用场景 │
│ ───────────────────────────────────────────────────────── │
│ euler 快 良好 15-25 快速预览 │
│ euler_a 快 良好 15-25 通用场景 │
│ dpmpp_2m 中 优秀 20-30 推荐使用 │
│ dpmpp_2m_sde 慢 极佳 20-30 高质量需求 │
│ dpmpp_sde 慢 极佳 20-40 最高质量 │
│ uni_pc 快 优秀 15-25 高效场景 │
│ ddpm 中 良好 20-30 传统方法 │
│ lms 中 良好 20-30 特定风格 │
│ │
└─────────────────────────────────────────────────────────────┘
LoRA Loader 节点 #
text
┌─────────────────────────────────────────────────────────────┐
│ LoRA Loader 使用 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 连接方式: │
│ │
│ Load Checkpoint │
│ │ │
│ ├── MODEL ──┐ │
│ │ │ │
│ └── CLIP ───┼──→ LoRA Loader ──→ MODEL/CLIP │
│ │ │
│ └── lora_name, strength_model, │
│ strength_clip │
│ │
│ 参数说明: │
│ ├── lora_name - LoRA 文件名 │
│ ├── strength_model - 模型强度(推荐 0.5-1.0) │
│ └── strength_clip - CLIP 强度(推荐 0.5-1.0) │
│ │
│ 多 LoRA 叠加: │
│ LoRA 1 ──→ LoRA 2 ──→ LoRA 3 ──→ KSampler │
│ │
└─────────────────────────────────────────────────────────────┘
节点连接规则 #
类型匹配 #
text
连接规则:
├── 输出类型必须匹配输入类型
├── 相同颜色端口才能连接
├── 一个输出可连接多个输入
└── 一个输入只能连接一个输出
正确连接示例:
MODEL 输出 ──→ MODEL 输入 ✓
CLIP 输出 ──→ CLIP 输入 ✓
错误连接示例:
MODEL 输出 ──→ CLIP 输入 ✗
IMAGE 输出 ──→ LATENT 输入 ✗
数据流原则 #
text
数据流原则:
├── 数据从左到右流动
├── 节点按依赖顺序执行
├── 无依赖节点可并行执行
└── 循环依赖会导致错误
执行顺序示例:
1. Load Checkpoint(无依赖,先执行)
2. CLIP Text Encode(依赖 CLIP)
3. Empty Latent Image(无依赖)
4. KSampler(依赖所有前置节点)
5. VAE Decode(依赖 LATENT 和 VAE)
6. Save Image(依赖 IMAGE)
节点调试 #
常见错误 #
text
错误类型:
1. 类型不匹配
├── 症状:连接失败
└── 解决:检查端口类型
2. 缺少输入
├── 症状:节点显示红色
└── 解决:连接必要输入
3. 模型未找到
├── 症状:加载失败
└── 解决:检查模型文件
4. 显存不足
├── 症状:CUDA 错误
└── 解决:降低分辨率或使用 lowvram
调试技巧 #
text
调试方法:
1. 使用 Preview Image
└── 在关键位置添加预览节点
2. Bypass 节点
└── 逐步排除问题节点
3. 简化工作流
└── 从最简单开始逐步添加
4. 检查控制台
└── 查看详细错误信息
5. 分段测试
└── 将复杂工作流分成小段测试
下一步 #
现在你已经了解了节点系统,接下来学习 工作流基础,学习如何设计和组织完整的工作流。
最后更新:2026-04-05