> *"如果你不能向一个六岁的孩子解释清楚,那你自己也没搞懂。"* > *——理查德·费曼*
---
📖 序章:当 AI 绘画遇见乐高积木
你有没有想过,为什么有些 AI 生成的图片那么惊艳,而你的尝试却总是差强人意?
问题的答案,往往不在于你用的模型有多高级,而在于你是否真正理解了图像生成的本质流程。就像同样是面粉、鸡蛋和牛奶,有人能做出米其林三星的可丽饼,有人却只能摊出一堆焦糊的煎饼。
ComfyUI 就像是把 AI 绘画这件事,拆解成了一堆积木。
想象一下,传统的 AI 绘画软件(比如 AUTOMATIC1111 的 WebUI)是一个封装好的黑盒子——你输入文字,它输出图片。这很方便,但也很受限。就像你用傻瓜相机拍照,按快门就行,但你永远不知道光圈、快门速度、ISO 是怎么配合的。
而 ComfyUI 呢?
它把整个过程可视化了。每一个步骤——加载模型、编码提示词、采样去噪、解码图像——都是一个可以拖拽的节点。你可以像拼乐高一样,把这些节点连接起来,构建出任意复杂的图像生成流程。
> 小注解:节点(Node)是什么?简单说,它就是一个功能模块。输入数据进来,经过处理,输出结果出去。就像咖啡机:倒入水和咖啡豆(输入),按下开关(处理),流出咖啡(输出)。
这种设计的美妙之处在于——透明。
你看到的不是一个神秘的黑盒子,而是一条清晰的数据流。数据从左边流进,经过一个个处理节点,最终在右边变成图像。如果结果不满意,你可以清楚地看到是哪个环节出了问题,然后调整对应的节点参数。
这就是 ComfyUI 的核心理念:把复杂的事情拆简单,把隐藏的东西变透明。
让我们开始这场探险吧。
---
🚀 第一章:搭起你的工作台
1.1 选择你的武器
ComfyUI 有三种主要的安装方式,就像你可以选择骑自行车、开汽车或者坐高铁去同一个目的地——取决于你的需求和条件。
🖥️ 方式一:桌面版(推荐新手)
这是 ComfyUI 官方推出的傻瓜式安装包,支持 Windows 和 macOS。
它的优点是:
- 一键安装,不用折腾 Python 环境
- 自动更新,永远保持最新版本
- 内置模型管理器,下载模型很方便
💼 方式二:便携版(Windows 专属)
这是一个绿色免安装版本,下载解压就能用,甚至可以直接放在 U 盘里随身携带。
下载地址:https://github.com/comfyanonymous/ComfyUI/releases
解压后你会看到这样一个文件夹结构:
ComfyUI_windows_portable/
├── ComfyUI/ # 核心程序
│ ├── models/ # 模型存放目录
│ │ ├── checkpoints/ # 大模型(如 SDXL、Flux)
│ │ ├── loras/ # LoRA 模型
│ │ ├── controlnet/ # ControlNet 模型
│ │ ├── vae/ # VAE 模型
│ │ └── upscale_models/ # 放大模型
│ ├── custom_nodes/ # 自定义节点插件
│ └── ...
├── python_embeded/ # 内置 Python 环境
└── run_nvidia_gpu.bat # 启动脚本(NVIDIA 显卡)
🛠️ 方式三:手动安装(适合极客)
如果你已经熟悉了 Python 环境,或者使用的是 Linux 系统,手动安装会给你最大的控制权。
# 1. 克隆仓库
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
# 2. 安装依赖
pip install -r requirements.txt
# 3. 安装 PyTorch(根据你的硬件选择)
# NVIDIA GPU:
pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu130
# AMD GPU (Linux):
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/rocm7.1
# Apple Silicon:
pip install torch torchvision torchaudio
# 4. 启动
python main.py
> 小注解:PyTorch 是什么?你可以把它理解为 AI 模型的"发动机"。不同的显卡需要不同的发动机版本——NVIDIA 用 CUDA,AMD 用 ROCm,苹果用 Metal。
1.2 第一次启动
无论你选择哪种方式,启动后打开浏览器,访问 http://127.0.0.1:8188,你会看到这样的界面:
这就是 ComfyUI 的主战场。中间那片空白画布,就是你即将挥洒创意的舞台。
1.3 模型该放哪?
ComfyUI 默认会自带一个简单的示例模型,但如果你想生成更精美的图像,需要下载更大的模型文件。
这就像是你买了一个专业相机,但默认只配了一个普通镜头。想拍出大片,你得换更好的镜头。
主要模型类型及存放位置:
| 模型类型 | 存放路径 | 文件格式 | 作用 |
|---|---|---|---|
| Checkpoint | models/checkpoints/ | .safetensors, .ckpt | 主模型,决定图像风格 |
| LoRA | models/loras/ | .safetensors | 微调模型,改变局部风格 |
| ControlNet | models/controlnet/ | .safetensors, .pth | 控制图像结构 |
| VAE | models/vae/ | .safetensors, .ckpt | 图像编解码器 |
| Embeddings | models/embeddings/ | .pt, .safetensors | 文本嵌入,负面提示词常用 |
| Upscale | models/upscale_models/ | .pth | 图像放大模型 |
---
🧩 第二章:节点——ComfyUI 的乐高积木
2.1 什么是节点?
现在,让我们深入理解 ComfyUI 的核心概念——节点(Node)。
想象你在厨房里做一道菜。你需要: 1. 从冰箱里取出食材(加载) 2. 用菜刀切好(处理) 3. 放入锅里炒(加工) 4. 盛到盘子里(输出)
ComfyUI 的节点,就像是厨房里的各种工具和设备。每个节点都有特定的功能,它们通过"线"连接起来,数据就像食材一样,从一个节点流向另一个节点。
节点的基本结构:
┌─────────────────────────┐
│ 节点名称 │ ← 告诉你这个节点是做什么的
├─────────────────────────┤
│ │
│ ○ 输入1 │ ← 左侧是输入接口(接收数据)
│ ○ 输入2 │
│ │
│ [参数1: 值] │ ← 中间是参数设置
│ [参数2: 值] │
│ │
│ ● 输出1 │ ← 右侧是输出接口(发送数据)
│ ● 输出2 │
│ │
└─────────────────────────┘
2.2 认识数据类型的颜色
ComfyUI 用颜色来区分不同类型的数据流,这就像是电路中的不同颜色的电线:
| 颜色 | 数据类型 | 说明 |
|---|---|---|
| 🟣 淡紫色 | MODEL | 扩散模型(大模型本身) |
| 🟡 黄色 | CLIP | 文本编码模型 |
| 🔴 玫瑰色 | VAE | 图像编解码模型 |
| 🟠 橙色 | CONDITIONING | 条件/提示词编码后的数据 |
| 🩷 粉色 | LATENT | 潜空间图像(AI 眼中的图像) |
| 🔵 蓝色 | IMAGE | 像素图像(人类眼中的图像) |
| 🟢 绿色 | MASK | 遮罩/蒙版 |
2.3 你的第一个工作流
让我们从最经典的 文生图(Text to Image) 流程开始。
这个数据流可以这样理解:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Load Checkpoint │────▶│ CLIP Text │ │ Empty Latent │
│ (加载大模型) │ │ Encode (编码 │◀────│ Image (空白画布)│
│ │ │ 提示词) │ │ │
│ 输出: MODEL │ │ │ │ 输出: LATENT │
│ CLIP │ │ 输入: 文本 │ │ │
│ VAE │ │ 输出: CONDITIONING│ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│ │ │
│ ▼ ▼
│ ┌─────────────────┐ ┌─────────────────┐
│ │ KSampler │◀────│ │
└─────────────▶│ (采样器) │ │ │
│ │ │ │
│ 输入: MODEL │ │ │
│ +CONDITIONING│ │ │
│ LATENT │ │ │
│ 输出: LATENT │ │ │
└─────────────────┘ │ │
│ │ │
▼ │ │
┌─────────────────┐ │ │
│ VAE Decode │ │ │
│ (解码图像) │─────┘ │
│ │ │
│ 输入: LATENT │◀──────────────────────┘
│ VAE │
│ 输出: IMAGE │
└─────────────────┘
│
▼
┌─────────────────┐
│ Save Image │
│ (保存图像) │
│ │
│ 输入: IMAGE │
└─────────────────┘
步骤详解:
1️⃣ Load Checkpoint(加载大模型)
这是整个流程的起点。就像你要开始画画,首先得拿出画笔和颜料。
- MODEL:大模型本身(淡紫色线)
- CLIP:文本理解组件(黄色线)
- VAE:图像编解码器(玫瑰色线)
这一步把人类的文字翻译成 AI 能理解的"语言"。
- 正面提示词(Positive):你想要什么?比如 "a beautiful sunset over mountains, high quality, masterpiece"
- 负面提示词(Negative):你不想要什么?比如 "blurry, low quality, deformed"
3️⃣ Empty Latent Image(空白画布)
这是 AI 作画的"画布"。你可以选择尺寸:
- 512×512(正方形)
- 512×768(竖版)
- 768×512(横版)
- 或者任意你喜欢的比例
4️⃣ KSampler(采样器)
这是魔法发生的地方!
采样器的工作,简单来说,就是从一张 随机噪声图 开始,逐步 去噪,最终变成一张清晰的图像。
关键参数:
- seed(种子):随机数的起点。同样的种子+同样的参数=同样的图像
- steps(步数):去噪的迭代次数。通常 20-30 步就够了
- cfg(引导强度):提示词的影响力。7-8 是常用值,太高会让图像过饱和
- sampler_name(采样算法):Euler、DPM++、UniPC 等,各有特点
- scheduler(调度器):控制噪声曲线的变化方式
5️⃣ VAE Decode(解码图像)
采样器输出的还是潜空间图像(AI 的"思维空间"),VAE 把它解码成人类能看懂的像素图像。
6️⃣ Save Image(保存图像)
最后,把生成的图像保存到 output 文件夹。
---
🔧 第三章:图生图与局部重绘
3.1 图生图(Image to Image)
如果说文生图是"凭空创造",那图生图就是"改造已有"。
核心区别:用一张真实图像替代 Empty Latent Image,并且多了一个重要参数—— denoise(去噪强度)。
- denoise = 0.0:完全保留原图,没有任何变化
- denoise = 0.5:一半原图,一半新内容
- denoise = 1.0:完全重绘,原图只保留大致结构
3.2 局部重绘(Inpainting)
这是图生图的高级应用——只修改图像的特定区域,其他地方完全保留。
关键节点:Set Latent Noise Mask(设置潜空间遮罩)
使用方法: 1. 在 Load Image 节点上传图片 2. 右键图片 → Open in MaskEditor(打开遮罩编辑器) 3. 用画笔涂抹想要重绘的区域(黑色是保留,白色是重绘) 4. 连接遮罩到 Set Latent Noise Mask
> 生活比喻:就像装修时给家具盖防尘布。遮罩就是那块布,盖住的地方保护起来,没盖住的地方重新粉刷。
---
🎮 第四章:ControlNet——让 AI 听指挥
4.1 为什么需要 ControlNet?
文生图有一个痛点:随机性太强。
你说 "a person standing",AI 可能给你生成正面站立、侧面站立、背影,姿势、角度、构图完全随机。如果你想要 特定的姿势 或 特定的构图,怎么办?
这就是 ControlNet 的用武之地。
ControlNet 就像给 AI 提供了一个"参考图":你可以画一个火柴人简笔画,ControlNet 会让 AI 按照那个姿势生成真实的图像。
4.2 ControlNet 的工作原理
ControlNet 的节点链:
Load Image → Preprocessor → Load ControlNet Model → Apply ControlNet → KSampler
预处理器的种类:
| 预处理器 | 提取的特征 | 适用场景 |
|---|---|---|
| Canny | 边缘轮廓 | 保持物体形状和结构 |
| OpenPose | 人体骨架 | 控制人物姿势 |
| Depth | 深度图 | 保持空间层次关系 |
| MLSD | 直线边缘 | 建筑、室内设计 |
| HED | 柔和边缘 | 更自然的轮廓保持 |
| Scribble | 涂鸦线条 | 手绘草图转图像 |
| Normal Map | 法线贴图 | 3D 建模相关 |
| Segmentation | 语义分割 | 控制不同物体的区域 |
4.3 实战:OpenPose 控制人物姿势
假设你想要生成一张"女孩在跳舞"的图片,但不想随机生成姿势,而是想要 特定 的舞姿。
步骤:
1. 准备姿势图:找一张你想要的姿势的图片(或者自己摆姿势拍一张)
2. 提取骨架:使用 OpenPose 预处理器提取人体骨架
3. 加载 ControlNet 模型:control_v11p_sd15_openpose.pth
4. 设置强度(strength):0.8-1.0 表示严格按照姿势,0.5 表示较宽松的参考
5. 运行生成:AI 会按照骨架的姿势生成图像,但人物长相、服装、背景由你的提示词决定
> 进阶技巧:你可以用多个 ControlNet 同时控制!比如用 OpenPose 控制姿势 + Depth 控制空间关系 + Canny 保持轮廓。这就像给 AI 多个参考维度。
4.4 实战:Canny 保持图像结构
Canny 边缘检测会提取图像的轮廓线条:
应用场景:
- 把一张风景照片转换成动漫风格,但保持原图的构图
- 把素描转换成彩色插画
- 保持产品照片的角度和结构,只改变材质和颜色
🧪 第五章:LoRA——风格的魔法调料
5.1 什么是 LoRA?
LoRA(Low-Rank Adaptation)是一种 模型微调技术。
想象 Checkpoint 是一碗白米饭,LoRA 就是各种调料——酱油、咖喱、番茄炒蛋。基础还是那碗饭,但加上不同的调料,味道完全不同。
技术上,LoRA 是一个小文件(通常几十 MB),它记录了如何修改大模型的权重,以实现特定的风格或效果。
5.2 在 ComfyUI 中使用 LoRA
节点链:
Load Checkpoint → Load LoRA → CLIP Text Encode → KSampler
注意:LoRA 节点位于 Checkpoint 和 CLIP 编码器之间。LoRA 会同时修改 MODEL 和 CLIP,所以输出有两个接口需要正确连接。
关键参数:strength_model(强度)
- 0.0:完全不起作用
- 0.5:中等影响
- 1.0:完全应用 LoRA 的效果
- >1.0:加强效果(可能过拟合)
- <0:反向应用(产生相反效果)
5.3 常见的 LoRA 类型
| LoRA 类型 | 文件大小 | 用途 |
|---|---|---|
| 风格 LoRA | 20-100MB | 改变整体画风(如吉卜力风格、赛博朋克) |
| 人物 LoRA | 50-150MB | 生成特定角色或真人 |
| 服装 LoRA | 20-50MB | 特定服装风格 |
| 姿势 LoRA | 20-50MB | 特定姿势或动作 |
| 概念 LoRA | 30-80MB | 特定主题或概念 |
🎯 第六章:高级工作流技巧
6.1 高清修复(Hi-Res Fix)
直接生成 1024×1024 或更大的图像,容易出现重复、崩坏等问题。
解决方案:先生成小图,再用图生图放大。
流程: 1. 用 KSampler 生成 512×512 的小图 2. 用 Upscale Latent 放大潜空间图像(比如放大 2 倍到 1024×1024) 3. 再用 KSampler 进行第二次采样(denoise 设为 0.5 左右),增加细节 4. VAE Decode 解码输出
6.2 分区生成(Area Composition)
想要在一张图里精确控制不同区域的内容?比如左边是森林,右边是沙漠,中间是湖泊。
使用 Conditioning (Set Area) 节点,你可以:
- 定义每个区域的位置和大小(x, y, width, height)
- 为每个区域设置独立的提示词
- 用 Conditioning (Combine) 合并多个区域
6.3 图像放大(Upscaling)
方法一:潜空间放大
在潜空间直接放大(Upscale Latent),然后二次采样。优点是速度快,缺点是可能产生新内容。方法二:AI 放大模型
使用专门的超分辨率模型(如 ESRGAN、SwinIR):节点: Load Upscale Model → Upscale Image (using Model)
这种方法不会改变图像内容,只是"清晰化"原有内容。
方法三:Ultimate SD Upscale(终极放大)
这是 ComfyUI 社区开发的高级放大节点,结合了分块处理和无缝拼接技术,可以超大尺寸放大(4K、8K)而不显存溢出。
---
🔌 第七章:自定义节点与 ComfyUI-Manager
7.1 什么是自定义节点?
ComfyUI 的核心功能已经很强大,但社区开发者的创造力是无穷的。
自定义节点(Custom Nodes)就像是给你的 ComfyUI 安装"插件",扩展各种神奇功能:
- 更高级的 ControlNet 控制
- 面部修复(Face Detailers)
- 图像后处理滤镜
- 视频生成工作流
- 3D 模型生成
- ...
7.2 安装 ComfyUI-Manager
ComfyUI-Manager 是一个必装的自定义节点,它是"节点的节点管理器"。
安装方法:
cd ComfyUI/custom_nodes
git clone https://github.com/ltdrdata/ComfyUI-Manager.git
重启 ComfyUI,你会在界面右上角看到一个新的 Manager 按钮。
7.3 使用 Manager
点击 Manager 按钮,你可以:
| 功能 | 说明 |
|---|---|
| Install Custom Nodes | 浏览并安装社区节点 |
| Install Missing Custom Nodes | 自动检测当前工作流缺少的节点并安装 |
| Install Models | 一键下载各种模型 |
| Update All | 更新 ComfyUI 和所有节点到最新版 |
| ComfyUI-Manager Menu | 更多高级功能 |
7.4 推荐的自定义节点
| 节点包 | 功能 |
|---|---|
| ComfyUI-Impact-Pack | 面部修复、细节增强、各种实用工具 |
| ComfyUI-ControlNet-Aux | 更多 ControlNet 预处理器 |
| ComfyUI-Custom-Scripts | 提示词补全、显示节点信息、工作流模板 |
| ComfyUI-Manager | 节点管理器(必装) |
| ComfyUI-Efficiency-Nodes | 简化工作流,减少节点数量 |
| WAS Node Suite | 图像处理工具集 |
🎨 第八章:实战案例集锦
8.1 案例一:角色一致性创作
场景:你要创作一个系列插画,主角是同一个女孩,但场景和动作不同。
解决方案: 1. 训练或使用一个该角色的 LoRA 2. 用 OpenPose ControlNet 控制不同姿势 3. 用 IP-Adapter 保持面部特征一致性 4. 改变提示词生成不同场景
8.2 案例二:产品渲染
场景:你是电商设计师,要把产品图生成各种场景的效果图。
解决方案: 1. 用 Canny ControlNet 保持产品轮廓 2. 用 Depth ControlNet 保持空间关系 3. 用提示词描述不同的使用场景 4. 用 Inpainting 局部修改某些细节
8.3 案例三:建筑风格转换
场景:你是建筑师,想快速看不同风格的建筑效果图。
解决方案: 1. 用 MLSD ControlNet 提取建筑直线结构 2. 用不同风格的 LoRA(现代、古典、科幻) 3. 批量生成多种方案对比
8.4 案例四:动画制作
场景:制作简单的 AI 动画。
解决方案: 1. 使用 AnimateDiff 节点生成视频帧 2. 用 OpenPose ControlNet 保持角色姿势连贯 3. 用 IP-Adapter 保持角色外观一致 4. 输出视频序列
---
📚 附录
A. 快捷键大全
| 快捷键 | 功能 |
|---|---|
Ctrl + Enter | 运行工作流 |
Ctrl + Shift + Enter | 插队运行(放到队列最前面) |
Ctrl + Alt + Enter | 取消当前生成 |
Ctrl + Z / Ctrl + Y | 撤销/重做 |
Ctrl + S | 保存工作流 |
Ctrl + O | 加载工作流 |
Ctrl + C / Ctrl + V | 复制/粘贴节点 |
Ctrl + Shift + V | 粘贴并保持连接 |
Ctrl + A | 选择所有节点 |
Ctrl + M | 静音/取消静音节点 |
Ctrl + B | 绕过节点 |
Delete / Backspace | 删除选中节点 |
Space + 拖动 | 移动画布 |
Alt + + / Alt + - | 放大/缩小画布 |
Double Click | 打开节点搜索面板 |
P | 固定/取消固定节点 |
Ctrl + G | 将选中节点分组 |
B. 常见错误排查
| 错误信息 | 原因 | 解决方案 |
|---|---|---|
| CUDA Out of Memory | 显存不足 | 减小图像尺寸、降低 batch size、使用 --lowvram 参数 |
| Model not found | 模型路径错误 | 检查模型是否放在正确文件夹 |
| Node not found | 缺少自定义节点 | 使用 Manager 安装缺失节点 |
| Connection type mismatch | 接口类型不匹配 | 检查连线颜色是否一致 |
| Invalid latent | 潜空间尺寸错误 | 确保 latent 尺寸是 8 的倍数 |
C. 资源推荐
模型下载:
- Civitai - 最大的模型社区
- Hugging Face - 官方模型仓库
尾声:创造属于你的工作流
学习 ComfyUI 的过程,就像是学习一门新的视觉语言。
刚开始,你可能会觉得节点连接很繁琐——为什么要用这么多步骤,而不是像其他软件那样点一个按钮?
但随着你逐渐深入,你会发现这种 透明化、模块化 的设计,给了你一个其他软件无法比拟的优势:完全的控制权。
当你理解了数据如何在节点间流动,当你能够拆解任意复杂的工作流,当你可以根据自己的需求随意组合功能模块——你就真正掌握了 AI 绘画的本质。
记住费曼的那句话:
> *"What I cannot create, I do not understand."* > *"凡我不能创造的,我都没有真正理解。"*
现在,你已经有了构建任何工作流的知识。去吧,创造属于你的视觉奇迹。
---
参考文献
1. ComfyUI GitHub Repository - 官方源码与文档 2. ComfyUI Examples - 官方工作流示例集合 3. ComfyUI Documentation - 官方文档中心 4. ComfyUI ControlNet Guide - ControlNet 官方示例 5. ComfyUI-Manager - 节点管理器文档
---
*本教程基于 ComfyUI 2026 年最新版本编写,持续更新中。*
*愿你的每个创意,都能在这个节点世界里自由流动。* 🌊✨