ComfyUI 实战:用节点式工作流精确控制 AI 图像生成
2026 年 4 月,ComfyUI 完成 3000 万美元融资,估值达到 5 亿美元。这个从开源项目成长起来的工具,正在重新定义 AI 图像生成的工作方式。
为什么 Midjourney 不够用?
如果你用过 Midjourney 或 DALL-E 这类 AI 图像生成工具,一定经历过这样的场景:
你生成了一张不错的图,但头发颜色不对。你修改了 prompt,重新生成——头发改了,但手的姿势也变了,背景也完全不一样了。
这就是 prompt-based 生成的核心痛点:你无法精确控制生成的某个局部,而不影响其他部分。ComfyUI 的联合创始人 Yoland Yan 把这种现象比作”老虎机”——每次重新 prompt,都是一次全新的随机生成。
ComfyUI 的解决方案是:把图像生成过程拆解为可视化的节点工作流,每个节点控制一个具体的步骤。你想改什么,就只重跑那个节点。
ComfyUI 是什么?
ComfyUI 是一个基于节点/图的 Stable Diffusion 工作流引擎。它的核心理念是:
- 模块化:每个步骤(加载模型、编码 prompt、采样、解码、后处理)都是独立的节点
- 可视化:用连线的方式组合节点,整个流程一目了然
- 可复用:工作流可以保存为 JSON,分享给其他人直接使用
- 高性能:只重新执行发生变化的节点,不需要从头跑
它支持几乎所有主流的扩散模型:SD 1.x/2.x、SDXL、SD3.5、Flux、Flux 2、Pixart、HunyuanDiT、Qwen Image 等,还支持视频生成(SVD、Wan 2.1/2.2、Hunyuan Video)和音频生成。
快速上手:安装和第一个工作流
安装
ComfyUI 支持 Windows、Linux、macOS,NVIDIA/AMD/Intel/Apple Silicon 全平台:
# 方式一:从源码安装(推荐,支持所有平台) git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI pip install -r requirements.txt # 下载模型文件到 models/checkpoints/ # 例如 SDXL: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0 # 启动 python main.py --listen 0.0.0.0 --port 8188
# 方式二:使用 ComfyUI Manager(推荐新手) cd custom_nodes git clone https://github.com/ltdrdata/ComfyUI-Manager.git
ComfyUI Manager 是一个社区插件,可以一键安装自定义节点、管理模型、导入/导出工作流。
第一个工作流:文生图
打开浏览器访问 http://localhost:8188,你会看到一个空白的画布。
- 添加 Load Checkpoint 节点 → 选择你的模型文件
- 添加 CLIP Text Encode (Prompt) 节点 → 输入正向提示词
- 添加 CLIP Text Encode (Negative Prompt) 节点 → 输入负向提示词
- 添加 Empty Latent Image 节点 → 设置分辨率(如 1024×1024)
- 添加 KSampler 节点 → 连接上述节点
- 添加 VAE Decode 节点 → 解码潜空间为图像
- 添加 Save Image 节点 → 输出结果
连线关系:
Load Checkpoint ──┬──> CLIP Text Encode (Prompt) ──┐
├──> CLIP Text Encode (Neg Prompt) ──┤
│ ├──> KSampler ──> VAE Decode ──> Save Image
└──> Empty Latent Image ──────────────┘
点击 Queue Prompt,等待生成完成。
进阶:构建专业级工作流
1. Hires Fix(高分辨率修复)
直接生成高分辨率图像容易失真。标准做法是先低分辨率生成,再放大:
文生图 (512x512) ──> Upscale Image ──> Hires Fix (2x) ──> 最终输出
在 ComfyUI 中,你可以用 Upscale Model (ESRGAN) 节点配合第二次 KSampler 实现:
# 工作流伪代码 latent = ksampler_sample(model, positive, negative, latent_512) image = vae_decode(vae, latent) upscaled = upscale_with_model(upscale_model, image) # 第二次采样,用放大后的图像作为引导 final_latent = ksampler_sample(model, positive, negative, vae_encode(vae, upscaled)) final_image = vae_decode(vae, final_latent)
2. ControlNet 精确控制构图
ControlNet 是 ComfyUI 最强大的功能之一。你可以用边缘检测、深度图、姿态估计等条件来控制生成:
# 加载 ControlNet 模型
controlnet = load_controlnet("control_v11p_sd15_canny.pth")
# 用 Canny 边缘检测提取输入图像的边缘
canny_edges = canny_detector(input_image, low_threshold=100, high_threshold=200)
# 将 ControlNet 条件注入到采样过程
conditioned = apply_controlnet(positive, controlnet, canny_edges, strength=0.8)
# 使用条件化的 prompt 进行采样
result = ksampler_sample(model, conditioned, negative, latent)
常用的 ControlNet 模型:
- Canny:边缘检测,保持轮廓
- Depth:深度图,保持空间关系
- OpenPose:人体姿态,保持动作
- Lineart:线稿,适合动漫风格
- IP-Adapter:图像风格迁移
3. LoRA 定制风格
LoRA(Low-Rank Adaptation)让你用极少的训练数据定制模型风格:
# 加载基础模型
checkpoint, clip, vae = load_checkpoint("sdxl-base.safetensors")
# 加载 LoRA
checkpoint, clip = load_lora(checkpoint, clip, "anime-style-lora.safetensors", strength=0.7)
# 后续流程不变
# ... KSampler -> VAE Decode -> Save Image
LoRA 的优势在于:
- 文件小(通常 100-500MB)
- 可以随时切换,不影响基础模型
- 多个 LoRA 可以叠加使用
开发者集成:ComfyUI API
ComfyUI 不只是 GUI,它提供了完整的 WebSocket API,可以集成到你的应用中:
import json
import urllib.request
import urllib.parse
import websocket
# 连接到 ComfyUI
SERVER = "127.0.0.1:8188"
CLIENT_ID = "your-client-id"
# 提交工作流
def queue_prompt(prompt):
p = {"prompt": prompt, "client_id": CLIENT_ID}
data = json.dumps(p).encode('utf-8')
req = urllib.request.Request(
f"http://{SERVER}/prompt", data=data
)
return json.loads(urllib.request.urlopen(req).read())
# 获取生成的图像
def get_image(filename, subfolder, folder_type):
data = {"filename": filename, "subfolder": subfolder, "type": folder_type}
url_values = urllib.parse.urlencode(data)
req = urllib.request.Request(f"http://{SERVER}/view?{url_values}")
with urllib.request.urlopen(req) as response:
return response.read()
你可以把 ComfyUI 作为后端服务,前端用任何技术栈(React、Vue、Flutter)构建用户界面。
实际应用场景
1. 电商产品图生成
产品白底图 ──> ControlNet (Depth) ──> 生成场景图 ──> 后处理 ──> 最终产品图
用 ControlNet 保持产品形状不变,只改变背景和环境。批量生成不同场景的产品图,大幅降低拍摄成本。
2. 游戏资产批量生产
游戏开发需要大量的角色、场景、道具素材。用 ComfyUI 可以:
- 用 LoRA 训练特定美术风格
- 用 ControlNet 保持角色一致性
- 批量生成变体(不同颜色、表情、装备)
3. UI/UX 概念设计
设计师可以用 ComfyUI 快速生成 UI 概念图,然后迭代细化。节点式工作流让”只改配色”或”只改布局”成为可能,不需要每次都重新生成整张图。
ComfyUI vs 其他工具对比
| 特性 | ComfyUI | Automatic1111 | Midjourney |
|---|---|---|---|
| 界面 | 节点式 | 表单式 | 聊天式 |
| 可控性 | ★★★★★ | ★★★☆☆ | ★☆☆☆☆ |
| 学习曲线 | 陡峭 | 中等 | 低 |
| 模型支持 | 最全 | 较全 | 封闭 |
| API | WebSocket API | REST API | 无 |
| 部署 | 本地/云端 | 本地 | 云端 |
| 社区插件 | 丰富 | 丰富 | 无 |
对于需要精细控制的开发者和专业创作者,ComfyUI 是最佳选择。如果你只需要快速生成几张图试试,Midjourney 可能更简单。
总结
ComfyUI 代表了 AI 生成工具的一个重要趋势:从”黑盒 prompt”走向”白盒工作流”。
它的估值达到 5 亿美元、拥有超过 400 万用户,不是偶然的。当 AI 图像生成从”好玩”变成”生产工具”,精确控制就不再是锦上添花,而是刚需。
对于开发者来说,ComfyUI 的 API 和节点架构让它成为一个强大的后端引擎。你可以把它集成到任何产品中,为用户提供可控的 AI 生成能力。
下一步:访问 ComfyUI 官方工作流库 查看社区模板,或者安装 ComfyUI Manager 开始探索自定义节点的世界。