ComfyUI 节点式 AI 绘画工作流核心解析
ComfyUI 是一款基于节点的可视化 AI 绘画工作流工具,相比传统 WebUI 提供更细粒度的控制与更高的资源效率。 ComfyUI 的核心架构、安装配置、关键节点(如 KSampler、CLIP Text Encode)用法,以及 ControlNet 控制、图像修复、批量生成等高级工作流设计。同时涵盖 Prompt 工程技巧、性能优化策略及实战案例,帮助用户从基础使用进阶为 AI 绘画工程师,实现从随机生成到可控创作的转变。

ComfyUI 是一款基于节点的可视化 AI 绘画工作流工具,相比传统 WebUI 提供更细粒度的控制与更高的资源效率。 ComfyUI 的核心架构、安装配置、关键节点(如 KSampler、CLIP Text Encode)用法,以及 ControlNet 控制、图像修复、批量生成等高级工作流设计。同时涵盖 Prompt 工程技巧、性能优化策略及实战案例,帮助用户从基础使用进阶为 AI 绘画工程师,实现从随机生成到可控创作的转变。

当 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 创造力的导演。下一次启动 ComfyUI 时,不妨问自己:这个节点还能怎么连?这个参数背后的数学原理是什么?或许,下一个 AI 绘画的突破性工作流,就藏在你的节点图里。
思考问题:如果将 ComfyUI 的节点逻辑与传统 3D 建模软件(如 Blender)结合,能否构建'文本→3D 模型→渲染'的全流程自动化管线?这会如何改变游戏开发和影视制作的工作方式?

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 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