2026年4月26日 2 分钟阅读

ComfyUI 实战:用节点式工作流精确控制 AI 图像生成

tinyash 0 条评论

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,你会看到一个空白的画布。

  1. 添加 Load Checkpoint 节点 → 选择你的模型文件
  2. 添加 CLIP Text Encode (Prompt) 节点 → 输入正向提示词
  3. 添加 CLIP Text Encode (Negative Prompt) 节点 → 输入负向提示词
  4. 添加 Empty Latent Image 节点 → 设置分辨率(如 1024×1024)
  5. 添加 KSampler 节点 → 连接上述节点
  6. 添加 VAE Decode 节点 → 解码潜空间为图像
  7. 添加 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 其他工具对比

特性ComfyUIAutomatic1111Midjourney
界面节点式表单式聊天式
可控性★★★★★★★★☆☆★☆☆☆☆
学习曲线陡峭中等
模型支持最全较全封闭
APIWebSocket APIREST API
部署本地/云端本地云端
社区插件丰富丰富

对于需要精细控制的开发者和专业创作者,ComfyUI 是最佳选择。如果你只需要快速生成几张图试试,Midjourney 可能更简单。

总结

ComfyUI 代表了 AI 生成工具的一个重要趋势:从”黑盒 prompt”走向”白盒工作流”

它的估值达到 5 亿美元、拥有超过 400 万用户,不是偶然的。当 AI 图像生成从”好玩”变成”生产工具”,精确控制就不再是锦上添花,而是刚需。

对于开发者来说,ComfyUI 的 API 和节点架构让它成为一个强大的后端引擎。你可以把它集成到任何产品中,为用户提供可控的 AI 生成能力。

下一步:访问 ComfyUI 官方工作流库 查看社区模板,或者安装 ComfyUI Manager 开始探索自定义节点的世界。


参考资料:ComfyUI GitHubComfyUI 官方文档TechCrunch 报道

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。