ComfyUI 节点式 AI 绘画工作流详解
ComfyUI 是一款基于节点连接的 AI 绘画可视化工具,相比传统 WebUI 提供更细粒度的参数控制和更高的资源效率。文章介绍了其核心架构、环境搭建、关键节点(如 KSampler、ControlNet)配置、Prompt 工程技巧及性能优化方案。通过实例展示了游戏角色设计和产品广告生成的工作流,适合希望深入理解 Stable Diffusion 底层逻辑的用户。

ComfyUI 是一款基于节点连接的 AI 绘画可视化工具,相比传统 WebUI 提供更细粒度的参数控制和更高的资源效率。文章介绍了其核心架构、环境搭建、关键节点(如 KSampler、ControlNet)配置、Prompt 工程技巧及性能优化方案。通过实例展示了游戏角色设计和产品广告生成的工作流,适合希望深入理解 Stable Diffusion 底层逻辑的用户。

当 Stable Diffusion(SD)在 2022 年引爆 AI 绘画革命时,大多数用户依赖的是 WebUI 这类'傻瓜式'界面——点击按钮即可生成图像,但灵活性被严重束缚。2023 年,ComfyUI的出现彻底改变了这一局面:它将 AI 绘画拆解为可自由组合的'节点',让用户像搭积木一样构建从文本到图像的完整逻辑链。这种'可视化编程'模式不仅解锁了 SD 底层功能的全部潜力,更催生了从图像修复到风格迁移的无限创作可能。
与 WebUI(如 Automatic1111)的'一键生成'不同,ComfyUI 的本质是可视化工作流引擎。其核心优势体现在三个维度:
| 对比维度 | WebUI(Automatic1111) | ComfyUI |
|---|---|---|
| 操作逻辑 | 表单填写式,功能模块化 | 节点连接式,逻辑可视化 |
| 参数控制粒度 | 预设参数为主,高级功能隐藏 | 全链路参数暴露,支持细粒度调节 |
| 扩展能力 | 依赖插件,兼容性受限 | 原生支持自定义节点,生态开放 |
| 资源效率 | 内存占用高,多任务切换卡顿 | 按需加载节点,显存利用更高效 |
| 学习曲线 | 低(1 小时上手) | 中高(需理解 SD 核心原理) |
表 1:ComfyUI 与主流 WebUI 的核心差异
关键突破:ComfyUI 将 SD 的潜在扩散模型(Latent Diffusion)拆解为可干预的中间步骤。例如,你可以在文本编码器(CLIP)生成嵌入向量后手动修改特征,或在采样过程中插入自定义噪声模式,甚至将多个模型的中间结果交叉融合——这些在 WebUI 中几乎不可能实现。
ComfyUI 的最小功能单元是节点,每个节点代表一个独立操作(如加载模型、处理文本、执行采样)。节点之间通过连接传递数据,形成有向无环图(DAG)结构。
节点三要素:
![ComfyUI 节点结构示意图] 图 1:典型节点结构(以'KSampler'采样节点为例,包含模型输入、种子、步数等参数,输出潜空间图像)
以最简单的'文本生成图像'工作流为例,其节点链如下:

graph TD
A[Text Prompt] -->|文本 | B[CLIP Text Encode]
C[Checkpoint Loader] -->|模型权重 | D[KSampler]
B -->|文本嵌入 | D
E[Empty Latent Image] -->|潜空间初始图像 | D
D -->|生成潜空间图像 | F[VAEDecode]
F -->|最终图像 | G[Save Image]
图 2:基础文生图工作流(mermaid 流程图)
数据流向解析:
ComfyUI 的安装本质是 Python 环境配置 + 模型下载,步骤如下:
# 克隆仓库
git clone https://github.com/comfyanonymous/ComfyUI.git
cd ComfyUI
# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate # Linux/macOS
venv\Scripts\activate # Windows
# 安装依赖
pip install -r requirements.txt
python main.py # 默认端口 8188,浏览器访问 http://localhost:8188
ComfyUI 的节点生态已超过 500 种,按功能可分为基础节点(官方提供)和扩展节点(社区开发)。以下是高频使用的核心节点解析:
| 节点名称 | 功能 | 关键参数 |
|---|---|---|
| Checkpoint Loader | 加载完整 SD 模型(含 UNet/CLIP/VAE) | ckpt_name(模型文件名) |
| VAELoader | 单独加载 VAE 模型(用于解码/编码) | vae_name(VAE 文件名) |
| CLIPLoader | 单独加载 CLIP 文本编码器 | clip_name(CLIP 模型文件名) |
| ControlNetLoader | 加载 ControlNet 模型 | control_net_name(ControlNet 文件名) |
实战技巧:当需要更换风格但保持主体结构时,可组合使用'主模型 + 独立 VAE'(如用 RealVisXL 模型搭配 Anything V3 的 VAE 优化动漫风格)。
SD 的核心扩散过程由 KSampler 节点实现,其参数直接影响图像质量和生成速度:
| 参数 | 作用 | 推荐值 |
|---|---|---|
| model | 扩散模型(通常来自 Checkpoint Loader) | - |
| positive/negative | 正向/负向文本嵌入(来自 CLIP Text Encode) | - |
| latent_image | 初始潜空间图像(来自 Empty Latent Image 或图像编码) | - |
| seed | 随机种子(决定生成内容的随机性,-1 表示随机) | 12345(固定)/ -1(随机) |
| steps | 采样步数(步数越多细节越丰富,但耗时增加) | 20-30(平衡速度与质量) |
| cfg | 分类器自由引导(值越高越贴近 Prompt,但可能过饱和) | 7-12 |
| sampler_name | 采样算法(影响收敛速度和图像风格) | Euler a(艺术化)/ DPM++ 2M Karras(写实) |
| scheduler | 调度器(控制噪声消除节奏) | Automatic |
代码示例(KSampler 节点的 JSON 表示,可直接导入 ComfyUI):
{
"nodes": [
{
"id": 4,
"type": "KSampler",
"pos": [600, 300],
"inputs": {
"model": [3, 0],
"positive": [2, 0],
"negative": [2, 1],
"latent_image": [5, 0],
"seed": 12345,
生成指定尺寸的空白潜空间图像,参数 width 和 height 需为 64 的倍数(SD 潜空间默认下采样 8 倍)。例如:
将自然语言转换为模型可理解的嵌入向量,支持权重调整(通过 (word:weight) 语法)和区域提示(通过 [word:start:end] 控制时间步影响)。
Prompt 示例:
(masterpiece:1.2), (photorealistic:1.1), a girl with (blonde hair:1.3), wearing a red dress, detailed face, soft lighting, (depth of field:0.8) Negative prompt: (low quality:1.4), (blurry:1.2), extra fingers, missing fingers
注:权重>1 增强特征,<1 减弱特征,负向提示词(Negative prompt)需通过 CLIP Text Encode 的第二个输出端口连接到 KSampler。
批量替换 Prompt 中的关键词,适合快速测试不同风格。例如:
应用场景:修改生成图像的局部区域后,通过 VAEncode 重新编码为潜空间特征,再送入 KSampler 进行二次扩散优化。
支持多种缩放算法(如 Lanczos、Nearest),用于调整输入图像尺寸。注意:缩放后需通过 VAEncode 转换为潜空间特征才能进入采样流程。
ControlNet 通过额外的条件输入(如边缘检测、深度图)约束生成结果,是实现'精准构图'的核心工具。以下是'边缘检测控制角色姿势'的工作流:
graph TD
A[Input Image] -->|原始图像 | B[Canny Edge Detection]
// 边缘检测
C[ControlNetLoader] -->|ControlNet 模型 | D[ControlNetApply]
// 加载并应用 ControlNet
B -->|边缘图 | D
E[CLIP Text Encode] -->|文本嵌入 | F[KSampler]
G[Checkpoint Loader] -->|主模型 | F
D -->|控制条件 | F
H[Empty Latent Image] -->|潜空间图像 | F
F -->|生成潜空间图像 | I[VAEDecode]
I -->|最终图像 | J[Save Image]
图 3:ControlNet 边缘控制工作流
关键节点配置:
针对生成图像中的人脸模糊问题,可设计'人脸修复 + 背景替换'流水线:
工作流代码片段(JSON):
{
"nodes": [
{
"id": 10,
"type": "FaceDetector",
"inputs": {"image": [9, 0]},
// 输入原始图像
"outputs": {"face": [11, 0]}
// 输出裁剪后的人脸区域
},
{
"id": 11,
"type": "KSampler",
"inputs": {
"model": [12, 0],
ComfyUI 支持通过 Python API 或命令行调用工作流,实现批量生成。例如,批量生成 100 张不同姿势的产品图:
import requests
import json
# 加载工作流 JSON
with open("product_workflow.json", "r") as f:
workflow = json.load(f)
# 修改 Prompt 和种子,批量生成
for i in range(100):
workflow["nodes"][0]["inputs"]["text"] = f"product photo, angle {i%8}, white background"
workflow["nodes"][4]["inputs"]["seed"] = 12345 + i # 不同种子
# 发送请求到 ComfyUI 后端
response = requests.post(
"http://localhost:8188/prompt", json={"prompt": workflow}
)
# 保存结果
with open(f"output/product_{i}.png", "wb") as f:
f.write(response.content)
高效 Prompt 遵循'权重金字塔'结构:核心主体(高权重)→ 细节特征(中权重)→ 风格与氛围(低权重)。
示例(写实人像):
(masterpiece:1.3), (photorealistic:1.2), (ultra-detailed:1.1), a 25-year-old woman, (asian:0.9), (long black hair:1.2), (wearing a white shirt:1.0), (smile:0.8), (soft lighting:0.9), (depth of field:0.7), (8k resolution:1.0) Negative prompt: (low quality:1.4), (blurry:1.2), (distorted face:1.3), (extra limbs:1.2)
| 风格类型 | 核心关键词 |
|---|---|
| 写实摄影 | photorealistic, 8k, DSLR, soft lighting, depth of field, Sony A7 III |
| 赛博朋克 | cyberpunk, neon lights, rain, dystopian city, (glowing:1.2), futuristic |
| 水墨国画 | ink painting, Chinese traditional, wash painting, minimalist, black and white |
| 像素艺术 | pixel art, 8-bit, retro game, (vibrant colors:1.1), isometric |
跨风格混合:通过 (style1:weight)+(style2:weight) 实现融合,如 (cyberpunk:0.7)+(ink painting:0.3) 生成'水墨赛博'风格。
负面提示词用于抑制不想要的特征,以下是通用负面清单(可直接复制使用):
(low quality, worst quality:1.4), (bad anatomy), (inaccurate limb:1.2), bad composition, inaccurate eyes, extra digit, fewer digits, (extra arms:1.2), (blurry:1.3), (watermark:1.2), (text:1.2), (signature:1.2)
| 技巧 | 效果 | 适用场景 |
|---|---|---|
| 使用--lowvram 启动参数 | 显存占用降低 40%,速度略降 10% | 4-8GB 显存显卡 |
| 拆分模型到 CPU 和 GPU | 仅 UNet 在 GPU,其他组件在 CPU,显存降 30% | 8-12GB 显存,需快速切换模型 |
| 降低图像分辨率 | 从 1024x1024 降为 768x768,显存降 50% | 非细节要求场景 |
目标:生成 3 种不同职业的游戏角色(战士/法师/刺客),保持统一艺术风格。
工作流设计:
Prompt 模板:
(masterpiece:1.3), anime style, {warrior/mage/assassin}, full body, detailed armor/robe/cloak, dynamic pose, fantasy world background Negative prompt: (low quality:1.4), (blurry:1.2)
生成结果:3 个角色均保持一致的动漫风格,职业特征(如战士的重型盔甲、法师的法杖)清晰区分。
目标:生成 10 张不同角度的蓝牙耳机广告图,白底背景,突出产品细节。
工作流设计:
核心 Prompt:
product photo, wireless headphone, {front view/side view/top view}, white background, studio lighting, (highly detailed:1.2), (reflective surface:1.1), 8k resolution
随着 AI 绘画技术的发展,ComfyUI 正朝着三个方向进化:
ComfyUI 的真正价值,在于它将 AI 绘画从'随机生成'变为'可控创作'。当你能用节点连接起文本、图像、模型和算法时,你不再是工具的使用者——你是 AI 创造力的导演。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online