这次我们来看一套完整的 ComfyUI 工作流搭建教程。ComfyUI 作为 Stable Diffusion 的节点式图形界面工具,相比传统 WebUI 提供了更灵活的可视化流程控制能力。这套教程覆盖从本地环境部署、插件安装到节点搭建的全流程,目标是让用户能够手把手学会用 ComfyUI 高效出图出视频。
ComfyUI 的核心优势在于工作流可保存、可复用,支持复杂任务链式执行,适合需要批量生成、流程标准化或自定义推理管道的场景。对于显存要求,ComfyUI 本身比较轻量,但实际占用取决于加载的模型和节点复杂度,通常 4G 显存可运行基础文生图,6G 以上可体验多数常用功能。它支持 CPU 模式,也兼容 AMD 显卡(通过 DirectML 或 ROCm),老显卡和 50 系新卡都能用。启动方式上,有一键整合包和源码部署两种选择,整合包适合快速上手,源码部署更灵活。接口方面,ComfyUI 自带 API 服务,支持远程调用和批量任务调度。
本文将带读者完成 ComfyUI 的完整部署和功能验证,包括环境准备、整合包启动、插件管理、基础工作流搭建、文生图/图生视频测试、API 调用和性能观察。重点会放在实操细节和排查方法上,确保读者能独立搭建可用的 ComfyUI 环境。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | Stable Diffusion 图形化节点工作流工具 |
| 开源地址 | GitHub - comfyanonymous/ComfyUI |
| 主要功能 | 文生图、图生图、局部重绘、视频生成、工作流定制、批量任务 |
| 推荐硬件 | 4G+ 显存(GPU 模式)或 8G+ 内存(CPU 模式) |
| 显存占用 | 基础工作流约 3-4G,加载大模型后 5-8G,依分辨率和工作流复杂度而定 |
| 支持平台 | Windows / Linux / macOS(CPU 或 GPU) |
| 启动方式 | 一键整合包(秋叶版等)或源码 + 依赖安装 |
| API 支持 | 内置 HTTP API,支持同步/异步任务提交、进度查询、结果获取 |
| 批量任务 | 支持目录批量处理、队列任务、工作流参数批量传入 |
| 适合场景 | 本地测试、内容生产、工作流实验、API 服务集成 |
2. 适用场景与使用边界
ComfyUI 适合以下几类用户:
- 需要可视化设计 Stable Diffusion 工作流的研究者或创作者
- 希望将生成流程标准化、可复用的团队或项目
- 需要批量生成图片/视频且要求参数一致性的场景
- 想通过 API 将生成能力集成到自有工具的开发者
它能解决的问题包括:
- 复杂生成流程的可视化搭建与调试
- 多模型串联(如先超分后修复)
- 条件控制(ControlNet、IP-Adapter 等多条件输入)
- 长视频生成的分段处理与一致性维护
使用边界需要注意:
- ComfyUI 不包含模型文件,需自行下载放置到正确目录
- 节点式操作有一定学习成本,不适合追求极简操作的用户
- 工作流调试需要耐心,节点连接错误可能导致生成失败
- 涉及人脸、版权素材时,必须确保输入内容符合授权规范
3. 环境准备与前置条件
在开始安装前,请确认本地环境满足以下条件:
操作系统
- Windows 10/11(推荐)、Linux(Ubuntu 20.04+)、macOS(12+)
- 64 位系统,预留 10GB 以上磁盘空间(用于模型和依赖)
Python 环境
- Python 3.8-3.11(推荐 3.10)
- 可使用 Miniconda 或官方 Python 发行版
- 确保 pip 版本最新:
pip install --upgrade pip
显卡与驱动
- NVIDIA 显卡:驱动版本 470+,CUDA 11.3-12.4(推荐 11.8)
- AMD 显卡:最新驱动,可选 DirectML(Windows)或 ROCm(Linux)
- 集成显卡/无独立显卡:使用 CPU 模式,速度较慢但可用
依赖工具
- Git(用于源码部署和插件安装)
- 7-Zip 或 Bandizip(用于解压模型文件)
- 现代浏览器(Chrome 90+、Edge 90+、Firefox 88+)
端口占用检查
- 默认端口 8188,如被占用需修改启动参数
- 检查命令(Windows):
netstat -ano | findstr :8188 - 检查命令(Linux/macOS):
lsof -i :8188
4. 安装部署与启动方式
ComfyUI 提供两种主要部署方式:秋叶整合包(推荐新手)和源码部署(推荐定制化用户)。
4.1 秋叶整合包一键启动
整合包已包含 Python 环境、依赖库和常用插件,解压即可用。
下载与解压
- 从可靠来源下载最新秋叶 ComfyUI 整合包(如 ComfyUI_windows_portable_nvidia.zip)
- 解压到不含中文和空格的路径,例如
D:\ComfyUI
目录结构说明
ComfyUI/ ├── python_embeded/ # 内置 Python 环境 ├── comfyui/ # ComfyUI 主程序 ├── models/ # 模型存放目录 │ ├── checkpoints/ # 大模型(.safetensors 或 .ckpt) │ ├── lora/ # LoRA 模型 │ ├── controlnet/ # ControlNet 模型 │ └── vae/ # VAE 模型 ├── output/ # 生成结果默认输出目录 └── run_nvidia_gpu.bat # GPU 启动脚本启动步骤
- 双击
run_nvidia_gpu.bat,等待依赖检查和服务启动 - 命令行窗口显示 "Starting server" 和 "To see the GUI go to: http://127.0.0.1:8188" 即表示成功
- 浏览器访问
http://127.0.0.1:8188进入 ComfyUI 界面
自定义端口启动编辑run_nvidia_gpu.bat,修改--port参数:
@echo off cd comfyui python_embeded\python.exe main.py --port 7890 pause4.2 源码部署方式
适合需要最新版本或自定义插件的用户。
克隆源码
git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI创建虚拟环境(可选但推荐)
conda create -n comfyui python=3.10 conda activate comfyui安装依赖
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 pip install -r requirements.txt启动服务
python main.py --port 8188模型文件放置将下载的模型文件按类型放入models对应子目录:
- 大模型:
models/checkpoints/ - LoRA:
models/lora/ - ControlNet:
models/controlnet/ - VAE:
models/vae/
5. 插件安装与管理
ComfyUI 通过插件扩展功能,常用插件包括管理器、节点包、主题等。
5.1 使用 ComfyUI Manager 管理插件
ComfyUI Manager 是必备插件,提供图形化插件安装/更新界面。
安装方法
- 进入 ComfyUI 界面,点击右上角 "Settings" → "Install Custom Nodes"
- 在 URL 输入框粘贴:
https://github.com/ltdrdata/ComfyUI-Manager.git - 点击 "Install" 并重启 ComfyUI
通过 Manager 安装其他插件
- 重启后界面出现 "Manager" 按钮,点击进入
- 在 "Install Custom Nodes" 标签页搜索需要的插件
- 点击 "Install" 安装,如提示重启则重启 ComfyUI
5.2 常用插件推荐
工作流增强
- ComfyUI-Impact-Pack:大量实用节点,包括检测器、分段器、重绘等
- ComfyUI-Advanced-ControlNet:增强 ControlNet 控制能力
- ComfyUI-InstantID:InstantID 人脸替换节点
视频生成
- ComfyUI-VideoHelperSuite:视频加载、合成、帧处理工具
- AnimateDiff-Evolved:动画生成与运动控制
界面优化
- ComfyUI-Impact-Pack:自带主题和布局优化
- ComfyUI-Custom-Scripts:自定义脚本支持
模型支持
- ComfyUI-IPAdapter-Plus:IP-Adapter 多模态适配
- ComfyUI-MuseV:MuseV 视频生成支持
5.3 手动安装插件
对于不在 Manager 列表的插件,可手动安装:
# 进入 ComfyUI 自定义节点目录 cd ComfyUI/custom_nodes # 克隆插件仓库 git clone https://github.com/作者/插件名.git # 重启 ComfyUI 服务安装后可在 "Add Node" 菜单或节点搜索框找到新节点。
6. 基础工作流搭建与出图测试
下面通过一个完整文生图工作流,熟悉节点连接逻辑和参数设置。
6.1 创建基础文生图工作流
节点组成
- Load Checkpoint:加载大模型
- CLIP Text Encode (Prompt):正向提示词编码
- CLIP Text Encode (Negative Prompt):负向提示词编码
- Empty Latent Image:生成空白潜空间图像
- KSampler:采样器,控制生成步骤和参数
- VAE Decode:将潜空间图像解码为像素图像
- Save Image:保存生成结果
连接步骤
- 右键画布 → "Add Node" → "loaders" → "Checkpoint Loader"
- 添加 "CLIP Text Encode" 节点两个,分别标注为 Positive 和 Negative
- 添加 "latent" → "Empty Latent Image" 设置宽高(如 512x512)
- 添加 "sampling" → "KSampler" 设置步骤(20)、CFG(7.5)、采样器(Euler a)
- 添加 "latent" → "VAE Decode"
- 添加 "image" → "Save Image"
节点连接顺序
- Checkpoint Loader → CLIP Text Encode (clip)
- Checkpoint Loader → KSampler (model)
- Checkpoint Loader → VAE Decode (vae)
- CLIP Text Encode (Positive) → KSampler (positive)
- CLIP Text Encode (Negative) → KSampler (negative)
- Empty Latent Image → KSampler (latent_image)
- KSampler → VAE Decode (samples)
- VAE Decode → Save Image (images)
参数设置示例
{ "positive_prompt": "masterpiece, best quality, 1girl, cherry blossoms", "negative_prompt": "lowres, bad anatomy, bad hands, text, error", "width": 512, "height": 512, "steps": 20, "cfg": 7.5, "sampler": "euler_ancestral", "scheduler": "normal" }6.2 执行生成与结果验证
- 点击 "Queue Prompt" 提交任务
- 观察右下角进度条,等待生成完成
- 生成完成后,Save Image 节点显示预览图
- 右键 Save Image 节点 → "Open Image" 查看大图
- 图像保存到
output目录,文件名含时间戳
成功判断标准
- 进度条完整走完,无错误提示
- 生成图像符合提示词描述
- 图像无明显扭曲、色块、重复图案
- 输出目录有新文件生成
6.3 工作流保存与加载
保存工作流
- 点击 "Save" 按钮,保存为
.json文件 - 工作流文件包含所有节点配置和连接关系
加载工作流
- 点击 "Load" 按钮,选择之前保存的
.json文件 - 或直接拖拽
.json文件到 ComfyUI 画布
分享工作流
- 工作流文件可分享给其他 ComfyUI 用户
- 需确保对方有相同模型和插件
7. 高级工作流:图生视频与批量处理
在文生图基础上,引入图片输入、视频生成和批量任务能力。
7.1 图生视频工作流搭建
新增节点
- Load Image:加载输入图片
- VAE Encode:将像素图像编码为潜空间
- Load Checkpoint(视频模型):如 AnimateDiff 模型
- AnimateDiff Loader:加载运动模块
- AnimateDiff Sample:视频采样器
- VAE Decode(批量):解码视频帧序列
- Save Image(批量):保存多帧或生成视频
连接逻辑
- Load Image → VAE Encode 得到潜空间
- 原工作流中的 Empty Latent Image 替换为 VAE Encode 输出
- 添加 AnimateDiff 相关节点到 KSampler 前后
- 调整采样器总帧数(如 16 帧)和帧率(如 8fps)
参数注意事项
- 视频生成显存占用较高,建议从 16 帧 256x256 开始测试
- 可使用视频模型专用 checkpoint,如 AnimateDiff 兼容模型
- 输出为图像序列,需通过 FFmpeg 或视频工具合成视频
7.2 批量任务处理
ComfyUI 支持多种批量处理方式:
目录批量处理
- 使用 "Load Image (Batch)" 节点加载整个目录图片
- 配置输入目录路径和文件过滤规则
- 每个输入图片独立执行工作流,结果保存到输出目录
参数批量测试
- 使用 "Primitive" 节点生成参数列表(如不同 CFG 值)
- 连接至 KSampler 对应输入端口
- 一次提交生成多个参数组合的结果
队列批量任务
- 通过 API 接口连续提交多个任务
- ComfyUI 自动排队执行,支持优先级设置
- 适合集成到自动化脚本或生产环境
7.3 工作流优化技巧
节点组织
- 使用 "Reroute" 节点简化连接线
- 对相关节点分组并添加注释框
- 常用子工作流保存为模板节点
性能优化
- 使用 "Checkpoint Loader (Simple)" 减少模型重复加载
- 对大模型使用 "Model Merging" 节点预融合 LoRA
- 调整 "KSampler" 的
denoise参数控制重绘强度
错误处理
- 为关键节点添加 "Try-Except" 逻辑(如有相关插件)
- 使用 "Image Scale" 节点限制输出分辨率,避免显存溢出
- 保存工作流前测试所有连接,确保无断裂
8. 接口 API 与批量任务集成
ComfyUI 内置完整的 HTTP API,支持本地和远程调用。
8.1 API 服务启动
启动参数
# 启用 API 并允许远程访问 python main.py --port 8188 --listen # 指定 IP 地址(如局域网访问) python main.py --port 8188 --listen 0.0.0.0API 文档访问启动后访问http://127.0.0.1:8188/docs查看交互式 API 文档。
8.2 基本 API 调用示例
获取工作流定义
curl -X GET "http://127.0.0.1:8188/workflows"提交生成任务
import requests import json # 工作流 JSON 数据(从 ComfyUI 界面 Save 获取) with open('workflow_api.json', 'r') as f: workflow_data = json.load(f) # 提交任务 url = "http://127.0.0.1:8188/prompt" response = requests.post(url, json={"prompt": workflow_data}) prompt_id = response.json()['prompt_id'] print(f"任务 ID: {prompt_id}")查询任务状态
# 查询任务执行状态 status_url = f"http://127.0.0.1:8188/history/{prompt_id}" status_response = requests.get(status_url) if status_response.status_code == 200: history = status_response.json() if prompt_id in history: print("任务已完成") # 提取输出图像等信息 outputs = history[prompt_id]['outputs'] else: print("任务执行中或未找到")批量任务示例
import os import glob # 批量处理目录中的所有图片 input_dir = "./input_images" image_files = glob.glob(os.path.join(input_dir, "*.jpg")) for i, image_file in enumerate(image_files): # 动态修改工作流中的图片路径 workflow_data['3']['inputs']['image'] = image_file # 提交任务 response = requests.post("http://127.0.0.1:8188/prompt", json={"prompt": workflow_data}) if response.status_code == 200: print(f"已提交任务 {i+1}/{len(image_files)}") else: print(f"任务 {i+1} 提交失败")8.3 高级 API 功能
异步任务处理
# 提交异步任务,立即返回,通过 WebSocket 或轮询获取结果 async_response = requests.post("http://127.0.0.1:8188/prompt", json={"prompt": workflow_data, "client_id": "my_client"})工作流参数动态替换
# 在提交前动态修改工作流参数 def update_workflow_params(workflow, prompt_text, width, height): # 找到 CLIP Text Encode 节点(根据实际节点 ID) text_node_id = "6" # 需要根据实际工作流调整 workflow[text_node_id]['inputs']['text'] = prompt_text # 找到 Empty Latent Image 节点 latent_node_id = "5" workflow[latent_node_id]['inputs']['width'] = width workflow[latent_node_id]['inputs']['height'] = height return workflow结果回调通知
# 设置 Webhook 接收生成完成通知 webhook_workflow = workflow_data.copy() webhook_workflow['extra_data'] = { "client_id": "my_client", "webhook_url": "https://my-server.com/comfyui-callback" }9. 资源占用与性能观察
了解 ComfyUI 运行时资源消耗,有助于优化工作流和硬件配置。
9.1 显存占用观察
Windows 任务管理器
- 打开任务管理器 → 性能 → GPU
- 观察 "专用 GPU 内存" 使用情况
- 基础工作流:3-4GB
- 加载大模型后:5-8GB
- 视频生成:8-12GB(依分辨率和帧数)
nvidia-smi 监控(命令行)
# 实时监控 GPU 使用情况 nvidia-smi -l 1 # 输出示例 # | GPU Name Persistence-M | Memory-Usage | GPU-Util Compute M | # | 0 NVIDIA GeForce RTX 4060 | 6454MiB / 8192MiB | 45% Default |显存优化技巧
- 使用
--lowvram或--novram启动参数降低显存占用 - 工作流中及时断开不再使用的节点连接
- 对大分辨率图像使用 "Image Scale" 节点先降采样
- 启用模型缓存:
--gpu-only或--cpu-offload
9.2 CPU 与内存使用
CPU 模式性能
- 启动参数:
--cpu - 生成速度比 GPU 慢 5-10 倍
- 适合模型测试或低负载场景
- 内存占用较高,建议 16GB+ RAM
内存监控
- Windows:任务管理器 → 性能 → 内存
- Linux:
top或htop命令 - 典型占用:基础 2-3GB,大模型加载后 4-6GB
9.3 生成速度测试
测试工作流使用标准文生图工作流,固定参数:
- 分辨率:512x512
- 步数:20
- 采样器:Euler a
- 批量数:1
速度参考(RTX 4060 12GB)
- 文生图:2-4 秒/张
- 图生图:3-5 秒/张
- 视频生成(16 帧):30-60 秒
性能优化方向
- 使用更快的采样器:Euler a、DPM++ 2M Karras
- 降低采样步数:20 步→15 步(质量损失需测试)
- 启用 xFormers 或 SDPA 注意力优化
- 使用 TensorRT 加速(需要额外配置)
10. 常见问题与排查方法
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动时报 Python 错误 | Python 版本不兼容或依赖缺失 | 查看错误日志具体内容 | 使用推荐 Python 版本,重装依赖 |
| 页面访问空白或错误 | 端口冲突或服务未正常启动 | 检查端口占用,查看启动日志 | 更换端口,确认服务启动完成 |
| 加载模型失败 | 模型文件损坏或路径错误 | 检查模型文件 MD5,确认路径 | 重新下载模型,检查目录结构 |
| 生成结果全黑/全灰 | VAE 未正确连接或模型不兼容 | 检查 VAE 节点连接,尝试不同 VAE | 确保 VAE Decode 连接正确,更换 VAE |
| 显存不足报错 | 工作流过复杂或分辨率太高 | 监控显存使用,简化工作流 | 降低分辨率,使用--lowvram |
| 插件节点不显示 | 插件安装失败或版本冲突 | 检查自定义节点目录,查看日志 | 重新安装插件,检查兼容性 |
| API 调用超时 | 网络问题或任务队列阻塞 | 检查服务状态,查看任务队列 | 增加超时时间,清理任务队列 |
| 生成图像质量差 | 提示词不当或模型问题 | 测试简单提示词,更换模型 | 优化提示词,使用高质量模型 |
详细排查步骤示例
问题:启动后页面无法访问
检查服务是否启动成功
- 命令行窗口应显示 "Starting server" 和访问地址
- 如无相关信息,查看具体错误日志
检查端口占用
# Windows netstat -ano | findstr :8188 # Linux/macOS lsof -i :8188更换端口启动
python main.py --port 7890
问题:生成时报显存不足
监控当前显存使用
nvidia-smi降低工作流复杂度
- 减少同时加载的模型数量
- 降低生成分辨率(如 512x512→384x384)
- 减少采样步数(如 20→15)
使用显存优化参数启动
python main.py --lowvram # 或 python main.py --cpu-offload
问题:插件功能异常
检查插件是否正确安装
- 确认
custom_nodes目录有对应插件文件夹 - 检查插件要求的依赖是否安装
- 确认
查看 ComfyUI 启动日志
- 日志中会显示插件加载状态和错误信息
临时禁用冲突插件
- 重命名插件目录或移动到其他地方
- 逐个启用插件定位问题源
11. 最佳实践与使用建议
工作流设计原则
- 保持工作流模块化,常用功能封装为子工作流
- 为关键参数添加输入节点,便于动态调整
- 使用注释节点说明复杂节点组的功能
- 定期保存工作流版本,便于回溯和分享
模型文件管理
- 按类型分类存放:checkpoints、loras、controlnet、vae
- 使用有意义的文件名,包含模型版本和用途
- 定期清理不再使用的模型,节省磁盘空间
- 重要模型备份到云存储或外部硬盘
生成质量优化
- 使用高质量基础模型(如 SDXL 1.0)
- 合理组合 LoRA 和 ControlNet,避免过度约束
- 测试不同采样器和 CFG scale 的组合
- 对重要输出进行多轮生成和人工筛选
批量任务安全
- 批量处理前先用单张图片测试工作流稳定性
- 设置合理的任务超时时间,避免资源耗尽
- 为批量任务添加进度日志和错误重试机制
- 输出文件使用有意义的命名规则,便于后续处理
合规使用提醒
- 生成内容需遵守版权和肖像权相关法律法规
- 商业使用前确认模型许可证允许相应用途
- 涉及真人肖像需获得明确授权
- 不要生成违法、侵权或不良内容
ComfyUI 工作流搭建确实有一定学习曲线,但一旦掌握就能极大提升生成效率和控制精度。建议从简单文生图开始,逐步尝试图生图、ControlNet、视频生成等复杂功能。关键是多动手实践,遇到问题参考本文排查方法,或到社区寻求帮助。
这套教程提供的从环境部署到高级工作流的完整路径,应该能帮助读者快速上手 ComfyUI。实际使用中,最重要的是根据自身需求灵活调整工作流,找到最适合的高效生成方案。