跳转至

03-界面与节点基础

ComfyUI界面与节点连接示意图

🎯 学习目标

  • 熟悉 ComfyUI 的界面布局和各区域功能
  • 理解节点的基本概念(输入/输出、数据类型、连线规则)
  • 掌握核心节点类型(加载器、编码器、采样器、图像节点)
  • 完成第一个 txt2img 工作流搭建
  • 掌握节点操作的常用快捷键

3.1 界面布局详解

3.1.1 整体布局

ComfyUI 的界面以节点编辑器(Canvas)为核心,辅以控制面板和状态栏:

Text Only
┌────────────────────────────────────────────────────────────────┐
│  菜单栏 (Menu Bar)                                              │
│  [Queue Prompt] [Queue Size] [Extra Options]  [Manager]         │
├────────────────────────────────────────────────────────────────┤
│                                                                │
│                                                                │
│              节 点 编 辑 器 (Node Canvas)                        │
│                                                                │
│    ┌─────────┐     ┌─────────┐     ┌─────────┐                │
│    │ Load    │────▶│ Encode  │────▶│ Sample  │                │
│    │ Ckpt    │     │ Text    │     │         │                │
│    └─────────┘     └─────────┘     └─────────┘                │
│                                                                │
│                                                                │
├────────────────────────────────────────────────────────────────┤
│  状态栏 / 进度条                                                 │
└────────────────────────────────────────────────────────────────┘

3.1.2 核心区域

① 节点编辑器(Canvas)

  • 主工作区域,用于放置和连接节点
  • 支持无限画布,可以平移(中键拖动 / 空格+左键拖动)和缩放(滚轮)
  • 背景网格辅助对齐

② 菜单栏 / 工具栏

  • Queue Prompt:将当前工作流加入执行队列
  • Queue Size:设置批量生成的数量
  • Extra Options:额外选项(如自动队列)
  • Manager:打开 ComfyUI Manager(需安装)

③ 右键上下文菜单

在画布空白处右键可以: - 添加新节点(按类别浏览或搜索) - 粘贴节点 - 添加分组(Group)

④ 队列与历史面板

  • 查看排队中和已完成的生成任务
  • 可以查看历史记录并重新加载

⑤ 设置面板

通过菜单进入 Settings,可以调整: - 预览方式(auto/taesd/latent2rgb) - 颜色主题 - 自动保存设置 - 日志级别


3.2 节点基本概念

3.2.1 什么是节点

节点(Node) 是 ComfyUI 中最基本的功能单元。每个节点执行一个特定的操作,例如加载模型、编码文本、执行采样等。节点通过连线(Link/Wire)传递数据。

3.2.2 节点结构

每个节点由以下部分组成:

Text Only
┌──────────────────────────────┐
│  节点标题 (Title)              │
├──────────────────────────────┤
│                              │
│  ● 输入接口 (Input Slot)      │  ← 接收上游数据
│  ● 输入接口                   │
│                              │
│  [参数/属性区域]               │  ← 节点内部可调参数
│  [下拉选择/数值输入]            │
│                              │
│        输出接口 (Output) ●    │  → 传递数据给下游
│        输出接口          ●    │
│                              │
└──────────────────────────────┘

3.2.3 数据类型与颜色

ComfyUI 中不同数据类型用不同颜色表示:

颜色 数据类型 说明
🟣 紫色 MODEL Stable Diffusion 模型
🟡 黄色 CLIP CLIP 文本编码器
🔴 红色 VAE VAE 编码/解码器
🟠 橙色 CONDITIONING 条件编码(提示词编码结果)
🔵 蓝色 LATENT 潜空间图像数据
🟢 绿色 IMAGE 像素图像数据
⚪ 白色 MASK 遮罩数据
灰色 INT/FLOAT/STRING 基础数据类型

3.2.4 连线规则

  • 同色连接:只有相同类型的接口可以连接(紫色→紫色,蓝色→蓝色)
  • 一对多:一个输出可以连接到多个输入(数据分发)
  • 多对一限制:一个输入通常只能接收一条连线
  • 数据流向:数据从左到右流动(输出 → 输入)
  • 类型转换:某些节点可以在类型之间转换(如 VAEDecode 将 LATENT → IMAGE)

💡 提示:尝试连接不兼容的类型时,连线会自动断开,这是正常的类型检查机制。


3.3 核心节点类型介绍

3.3.1 加载器节点(Loaders)

加载器节点用于将模型文件加载到内存中。

CheckpointLoaderSimple(Checkpoint 加载器)

最常用的模型加载节点,加载 SD Checkpoint 模型:

输入/输出 名称 类型 说明
参数 ckpt_name 下拉选择 选择 checkpoints/ 目录中的模型
输出 MODEL MODEL (紫色) SD 模型
输出 CLIP CLIP (黄色) 文本编码器
输出 VAE VAE (红色) 变分自编码器

LoRALoader(LoRA 加载器)

加载 LoRA 模型并与 Checkpoint 模型合并:

输入/输出 名称 类型 说明
输入 model MODEL 基础模型
输入 clip CLIP 文本编码器
参数 lora_name 下拉选择 选择 LoRA 文件
参数 strength_model FLOAT 模型权重强度 (0~2)
参数 strength_clip FLOAT CLIP 权重强度 (0~2)
输出 MODEL MODEL 融合后的模型
输出 CLIP CLIP 融合后的编码器

VAELoader(VAE 加载器)

单独加载 VAE 模型(当 Checkpoint 自带 VAE 不理想时使用):

输入/输出 名称 类型 说明
参数 vae_name 下拉选择 选择 VAE 文件
输出 VAE VAE VAE 模型

3.3.2 编码器节点(Encoding)

CLIPTextEncode(CLIP 文本编码器)

将文本提示词编码为条件向量:

输入/输出 名称 类型 说明
输入 clip CLIP CLIP 模型
参数 text STRING (多行) 提示词文本
输出 CONDITIONING CONDITIONING 编码后的条件

💡 提示:通常需要两个 CLIPTextEncode 节点——一个用于正向提示词(positive),一个用于反向提示词(negative)。

VAEEncode(VAE 编码器)

将像素图像编码到潜空间(用于 img2img):

输入/输出 名称 类型 说明
输入 pixels IMAGE 输入图像
输入 vae VAE VAE 模型
输出 LATENT LATENT 潜空间表示

VAEDecode(VAE 解码器)

将潜空间数据解码回像素图像:

输入/输出 名称 类型 说明
输入 samples LATENT 潜空间数据
输入 vae VAE VAE 模型
输出 IMAGE IMAGE 输出图像

3.3.3 采样器节点(Samplers)

KSampler(采样器)

核心采样节点,执行扩散去噪过程:

输入/输出 名称 类型 说明
输入 model MODEL SD 模型
输入 positive CONDITIONING 正向条件
输入 negative CONDITIONING 反向条件
输入 latent_image LATENT 初始潜空间图像
参数 seed INT 随机种子
参数 steps INT 采样步数 (1-100)
参数 cfg FLOAT CFG 引导系数 (1-30)
参数 sampler_name 下拉 采样算法
参数 scheduler 下拉 调度器类型
参数 denoise FLOAT 去噪强度 (0-1)
输出 LATENT LATENT 采样结果

KSamplerAdvanced(高级采样器)

提供更多控制参数,支持分步采样:

  • 指定起始步和结束步(用于分阶段生成)
  • noise 添加控制
  • 更精细的调度控制

EmptyLatentImage(空潜空间图像)

创建一个初始的空白潜空间图像(用于 txt2img):

输入/输出 名称 类型 说明
参数 width INT 图像宽度(像素)
参数 height INT 图像高度(像素)
参数 batch_size INT 批量大小
输出 LATENT LATENT 空白潜空间图像

⚠️ 注意:宽高需要是 8 的倍数。SD1.5 推荐 512×512,SDXL 推荐 1024×1024。

3.3.4 图像节点(Image)

LoadImage(加载图像)

从文件加载图像到工作流:

输入/输出 名称 类型 说明
参数 image 文件选择 选择 input/ 目录中的图像
输出 IMAGE IMAGE 图像数据
输出 MASK MASK Alpha 通道遮罩

SaveImage(保存图像)

将生成的图像保存到磁盘:

输入/输出 名称 类型 说明
输入 images IMAGE 输入图像
参数 filename_prefix STRING 文件名前缀

PreviewImage(预览图像)

在界面中预览图像(不保存到磁盘):

输入/输出 名称 类型 说明
输入 images IMAGE 输入图像

3.3.5 条件节点(Conditioning)

ConditioningCombine(条件合并)

合并两个条件编码为一个:

输入/输出 名称 类型 说明
输入 conditioning_1 CONDITIONING 条件一
输入 conditioning_2 CONDITIONING 条件二
输出 CONDITIONING CONDITIONING 合并后的条件

ConditioningSetArea(条件区域设置)

为条件指定作用区域(用于区域控制生成):

输入/输出 名称 类型 说明
输入 conditioning CONDITIONING 输入条件
参数 width, height INT 区域尺寸
参数 x, y INT 区域位置
参数 strength FLOAT 作用强度
输出 CONDITIONING CONDITIONING 带区域的条件

3.4 第一个工作流:文本到图像(txt2img)

3.4.1 工作流结构

一个最基础的 txt2img 工作流包含以下节点:

Text Only
┌─────────────────┐
│ CheckpointLoader │
│ Simple           │
│ ─────────────── │
│ [选择SD模型]      │
│                  │
│  MODEL ●─────────┼───────────────────────────────────────┐
│  CLIP  ●─────┐   │                                       │
│  VAE   ●──┐  │   │                                       │
└────────────┼──┼───┘                                       │
             │  │                                           │
             │  │  ┌───────────────┐                        │
             │  └──▶ CLIPTextEncode │  (正向提示词)            │
             │     │ ────────────  │                        │
             │     │ "a beautiful  │                        │
             │     │  landscape"   │                        │
             │     │ CONDITIONING ●┼──────┐                 │
             │     └───────────────┘      │                 │
             │                            │                 │
             │     ┌───────────────┐      │                 │
             └──┬──▶ CLIPTextEncode │      │  (反向提示词)     │
                │  │ ────────────  │      │                 │
                │  │ "ugly, bad"   │      │                 │
                │  │ CONDITIONING ●┼───┐  │                 │
                │  └───────────────┘   │  │                 │
                │                      │  │                 │
                │  ┌───────────────┐   │  │  ┌────────────┐│
                │  │EmptyLatentImage│   │  │  │  KSampler  ││
                │  │ ────────────  │   │  │  │ ────────── ││
                │  │ 512 x 512     │   │  └──▶ positive   ││
                │  │               │   └─────▶ negative   ││
                │  │   LATENT     ●┼─────────▶ latent     ││
                │  └───────────────┘         ▶ model    ◀─┘│
                │                            │ ────────── │
                │                            │ steps: 20  │
                │                            │ cfg: 7.0   │
                │                            │ LATENT   ● │
                │                            └──────┼─────┘
                │                                   │
                │  ┌───────────────┐                │
                │  │  VAEDecode    │                │
                │  │ ────────────  │                │
                └──▶  vae         │◀───────────────┘
                   │  samples     │
                   │  IMAGE      ●┼──┐
                   └───────────────┘  │
                   ┌───────────────┐  │
                   │  SaveImage    │◀─┘
                   │ ────────────  │
                   │ ComfyUI       │
                   └───────────────┘

3.4.2 搭建步骤

步骤 1:添加 CheckpointLoaderSimple 节点

  1. 在画布空白处右键 → Add Node → loaders → CheckpointLoaderSimple
  2. 在节点的 ckpt_name 下拉框中选择你安装的模型

步骤 2:添加两个 CLIPTextEncode 节点

  1. 右键 → Add Node → conditioning → CLIPTextEncode
  2. 重复添加一个(一个正向、一个反向)
  3. 将 CheckpointLoader 的 CLIP 输出连接到两个 CLIPTextEncode 的 clip 输入
  4. 在正向节点中输入:a beautiful mountain landscape, professional photography, 8k, highly detailed
  5. 在反向节点中输入:ugly, blurry, low quality, distorted

步骤 3:添加 EmptyLatentImage 节点

  1. 右键 → Add Node → latent → EmptyLatentImage
  2. 设置 width=512, height=512, batch_size=1

步骤 4:添加 KSampler 节点

  1. 右键 → Add Node → sampling → KSampler
  2. 连接:
  3. CheckpointLoader 的 MODEL → KSampler 的 model
  4. 正向 CLIPTextEncode 的 CONDITIONING → KSampler 的 positive
  5. 反向 CLIPTextEncode 的 CONDITIONING → KSampler 的 negative
  6. EmptyLatentImage 的 LATENT → KSampler 的 latent_image
  7. 参数设置:steps=20, cfg=7.0, sampler_name=euler, scheduler=normal, denoise=1.0

步骤 5:添加 VAEDecode 节点

  1. 右键 → Add Node → latent → VAEDecode
  2. 连接 KSampler 的 LATENT 输出 → VAEDecode 的 samples 输入
  3. 连接 CheckpointLoader 的 VAE → VAEDecode 的 vae 输入

步骤 6:添加 SaveImage 节点

  1. 右键 → Add Node → image → SaveImage
  2. 连接 VAEDecode 的 IMAGE → SaveImage 的 images 输入

步骤 7:执行工作流

点击菜单栏的 Queue Prompt 按钮,等待生成完成。

💡 提示:你也可以直接在 ComfyUI 中加载默认工作流。按 Ctrl+D 可以加载默认的 txt2img 工作流模板。


3.5 节点操作技巧

3.5.1 快捷键列表

快捷键 功能
Ctrl + Enter 执行当前工作流(Queue Prompt)
Ctrl + D 加载默认工作流
Ctrl + S 保存工作流
Ctrl + O 打开/导入工作流
Ctrl + A 全选所有节点
Ctrl + C 复制选中节点
Ctrl + V 粘贴节点
Ctrl + Z 撤销
Ctrl + Y 重做
Delete / Backspace 删除选中的节点或连线
Ctrl + M 静音/取消静音节点(Mute)
Ctrl + B 绕过节点(Bypass)
双击空白处 打开节点搜索框
空格 + 左键拖动 平移画布
滚轮 缩放画布
Ctrl + G 创建分组(Group)

3.5.2 节点操作

复制节点:选中节点后 Ctrl+C / Ctrl+V,或 Ctrl+拖动节点

节点静音(Mute):右键节点 → Mute 或 Ctrl+M。被静音的节点不执行但保留连线,数据会直接通过。

节点绕过(Bypass):右键节点 → Bypass 或 Ctrl+B。类似静音但会绕过该节点的处理。

节点分组(Group):选中多个节点后 Ctrl+G,创建一个可视化分组,便于组织工作流。

节点颜色:右键节点 → Colors,为节点设置不同颜色以便区分。

节点搜索:双击画布空白处打开搜索框,输入节点名称快速定位和添加。

3.5.3 连线技巧

  • 拖拽连接:从输出端口拖向输入端口
  • 断开连线:点击输入端口的连线并拖到空白处
  • 重新路由:拖拽连线到另一个兼容端口
  • Reroute 节点:右键连线 → Add Reroute,可以添加转折点让连线更整洁

3.5.4 工作流组织技巧

  • 从左到右排列节点,保持数据流方向一致
  • 使用分组(Group)将功能相关的节点归类
  • 为关键节点设置颜色标记
  • 使用 Note 节点添加注释说明
  • 保持连线尽量不交叉

⚠️ 注意:复杂工作流中,建议养成定期保存的习惯(Ctrl+S)。ComfyUI 不会自动保存工作流,关闭浏览器可能丢失未保存的修改。


练习

  1. 搭建一个完整的 txt2img 工作流并成功生成一张图像
  2. 尝试修改提示词和参数(CFG、Steps、采样器),观察对结果的影响
  3. 练习使用至少 5 个快捷键
  4. 在工作流中使用分组和颜色标记来组织节点
  5. 将工作流保存为 JSON 文件,然后清空画布重新导入

延伸阅读


📌 下一章04-工作流设计 —— 学习工作流设计原则与高级参数调节


最后更新日期:2026-02-12 适用版本:ComfyUI实战教程 v2026