做 AI 绘画工作流,ComfyUI 基本是绕不开的工具。这次这份教程定位很直接:2026 年新手入门实用版,从零开始搭建 ComfyUI 工作流,覆盖安装部署、节点原理、首次出图、批量任务、API 调用和问题排查。如果你已经受够了各种零散教程碎片,希望用一条主线把 ComfyUI 从启动到工程化使用完整跑通,这篇文章可以直接收藏。
ComfyUI 最核心的价值,是让你像拼积木一样用节点组装 AI 绘画流程。它不像 WebUI 那样把所有功能都做成固定按钮,而是把“加载模型、写提示词、设置采样器、解码图片、保存结果”拆成独立节点,用户自己决定怎么连线、怎么串联。这种设计带来的直接好处是两个:一是流程完全透明,每一步都能看到中间结果;二是可复现性强,一个工作流文件就是一个完整的生成方案,发给别人就能直接用。
整篇教程会按“环境准备 -> 安装部署 -> 节点原理 -> 首次出图 -> 批量与接口 -> 性能优化 -> 问题排查”的顺序展开。重点实操内容包括:装好 ComfyUI、加载并切换模型、跑通文生图工作流、理解常用节点、体验批量生成、通过 API 提交任务,以及排查“节点在执行过程中发生错误”这类常见故障。所有操作都会给出通用步骤和可执行的验证方法。
1. 核心能力速览
| 能力项 | 说明 |
|---|---|
| 项目类型 | 本地部署的 AI 绘画工作流引擎,基于节点式图形化界面 |
| 主要功能 | 文生图、图生图、局部重绘、ControlNet、批量生成、自定义工作流、API 服务 |
| 模型支持 | 可通过社区适配加载多种主流生成模型(具体模型需自行下载) |
| 推荐硬件 | 建议 NVIDIA 显卡 + 8GB 以上显存,低显存可通过优化方案运行 |
| 支持平台 | Windows / Linux / macOS 均可部署 |
| 启动方式 | 一键整合包启动 / 命令行启动 / Docker 启动 |
| 是否支持 API | 支持,提供 HTTP API 接口,可提交工作流任务 |
| 是否支持批量任务 | 支持,可在工作流中设置批量数量,也可通过 API 循环提交 |
| 适合人群 | AI 绘画入门用户、工作流定制需求者、批量出图场景、二次开发用户 |
需要说明的是,显存占用和生成速度与具体模型、分辨率、采样步数强相关。下面给出的部署流程和测试方法是通用的,实际参数以你本机为准。
2. 适用场景与使用边界
ComfyUI 适合谁?先说结论:适合想深度控制 AI 绘画流程的人,也适合“想偷懒”的人。前者可以用它自定义每个环节,后者可以下载别人分享的工作流直接出图。这两类需求在 ComfyUI 里都能满足,这也是它区别于其他工具的最大特点。
具体场景包括:
- 学习 AI 绘画底层逻辑:节点连线让每个处理步骤可见,比黑盒操作更容易理解生成流程。
- 稳定复现同一种风格:工作流文件保存后,参数和连线全部固定,不会因为设置丢失导致效果漂移。
- 批量出图测试:通过批量节点或 API 脚本,一次跑几十张图测试不同提示词和参数组合。
- 搭建个人自动化服务:启动 API 后,可以把 ComfyUI 接到自己的脚本、网站或聊天机器人里。
- 与团队共享经验:共享工作流 JSON 文件,比截图的参数面板信息更完整。
使用边界同样需要明确:
- ComfyUI 本身是开源工具,但模型文件有各自的开源协议。下载和使用前要确认模型许可,不能简单认为“网上能下载就能商用”。
- 涉及真人肖像、他人作品风格、品牌形象等内容生成时,必须确认有合法授权。
- AI 绘画内容发布前要符合平台的内容审核规则,不要生成违法、低俗、侵权内容。
- 本地部署不等于绝对安全,API 服务如果放开到局域网或公网,需要做好访问控制。
3. ComfyUI 本地部署环境准备
第一次部署 ComfyUI,环境问题占了一大半。下面是一份通用检查清单,先对照确认再动手安装,能省很多排查时间。
| 检查项 | 建议要求 | 说明 |
|---|---|---|
| 操作系统 | Windows 10/11、Ubuntu 20.04+、macOS | Windows 用户最多,教程资源也最丰富 |
| 显卡 | NVIDIA 显卡优先 | AMD 和 Intel 显卡也能用,但部分模型兼容性较差 |
| 显存 | 建议 8GB 以上 | 4GB 可运行小型模型,6GB 可跑常见模型,需注意分辨率控制 |
| 驱动 | 最新 NVIDIA 驱动 | 驱动太旧会导致 CUDA 不可用 |
| CUDA 环境 | 按需安装 | 使用整合包通常已内置,手动安装需确认与 PyTorch 版本匹配 |
| Python | 3.10 或 3.11 较稳妥 | 版本太老或太新都可能导致依赖问题 |
| 磁盘空间 | 预留 20GB 以上 | 程序本身体积不大,但模型文件动辄几个 GB |
| 端口 | 8188 默认端口 | 如果被占用,启动时可自定义其他端口 |
从实际使用习惯看,新手最稳妥的路线是:先确认电脑有 NVIDIA 显卡 -> 确认显存不低于 4GB -> 下载整合包或官方仓库 -> 按文章步骤启动。如果电脑没有独立显卡,也可以尝试 CPU 运行,但生成速度会明显变慢,大分辨率图片可能需要几分钟甚至更久,体验会差不少。
4. ComfyUI 安装部署与启动方式
ComfyUI 的部署方式比较多,这里列出三种常用路线,按难度从低到高排列。
4.1 一键整合包方式
社区里有不少一键整合包,例如搜索“秋叶 ComfyUI 整合包”可以找到打包好的版本。这类整合包通常把 Python、依赖、基础模型和启动脚本都打在一起,适合第一次接触的用户。
操作流程大致是:
- 下载整合包压缩包。
- 解压到本地目录,建议路径不要带中文和空格。
- 双击启动脚本(通常是
启动ComfyUI.bat或类似文件)。 - 等待命令行输出提示后,浏览器访问
http://127.0.0.1:8188。
整合包的优势是省事,缺点是更新和排错相对不透明。如果启动后报错,第一步先看命令行窗口里的报错信息,不要直接关掉窗口。
注意:具体整合包的启动脚本和内部结构各不相同,请以你下载的版本说明为准。
4.2 官方仓库手动安装
如果你愿意多花十分钟配置环境,手动安装更容易把控版本和依赖。通用步骤如下:
# 克隆项目仓库 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 创建虚拟环境(推荐) python -m venv venv # Windows 激活虚拟环境 venv\Scripts\activate # Linux/macOS 激活虚拟环境 # source venv/bin/activate # 安装依赖 pip install -r requirements.txt依赖安装完成后,还需要把模型文件放到对应目录:
- 大模型(如 SD 系列模型)放到
models/checkpoints/ - VAE 模型放到
models/vae/ - LoRA 模型放到
models/loras/ - ControlNet 模型放到
models/controlnet/
启动命令:
python main.py --port 8188看到类似Starting server的日志后,打开浏览器访问http://127.0.0.1:8188。
4.3 Docker 方式
对于 Linux 服务器或想隔离环境的用户,Docker 是更干净的方式。社区维护的镜像较多,这里给一个通用模板,具体镜像名和参数需要按实际项目替换:
# 搜索合适的 ComfyUI 镜像,参考官方文档或社区维护者说明 docker run -d \ --name comfyui \ -p 8188:8188 \ -v /your/local/models:/app/ComfyUI/models \ your-comfyui-image用 Docker 启动后,同样通过http://127.0.0.1:8188访问。
4.4 启动后的页面验证
不管用哪种方式安装,启动后页面应该包含左侧的节点操作区和下面的工作流面板。默认的空白工作流无法直接出图,需要通过“加载默认工作流”或手动添加节点来搭建。到这里,环境就算基本就绪了。
5. ComfyUI 工作流基础节点与首次出图测试
ComfyUI 的节点系统看起来复杂,但基础文生图流程只需要理解几个核心节点。先弄懂这些节点,后续所有高级玩法都能看懂。
5.1 基础文生图工作流的节点组成
一个最简单的文生图工作流,包含以下环节:
- CheckpointLoaderSimple:加载大模型,相当于选择“用哪个底模画”。
- CLIPTextEncode(正面提示词):输入正向提示词,例如
a beautiful girl, detailed face, best quality。 - CLIPTextEncode(负面提示词):输入负面提示词,例如
lowres, bad anatomy, blurry。 - EmptyLatentImage:设置生成图片的宽、高和批量数量。
- KSampler:核心采样器,设置种子、步数、CFG 和采样器名称。
- VAEDecode:把潜空间数据解码成图片。
- SaveImage:保存图片并展示在页面上。
如果你之前使用过其他 AI 绘画软件,这些概念并不陌生。ComfyUI 的关键在于:输出节点接收上一级节点的数据,连线决定了数据流向。
5.2 首次出图的操作步骤
首次建议直接加载官方自带的示例工作流,避免手动连线出错。
操作顺序如下:
- 在页面菜单中找到“加载默认工作流”或类似入口。
- 确认 CheckpointLoaderSimple 节点已选择了一个可用模型。
- 在正面提示词节点输入
a beautiful girl, detailed face, best quality。 - 在负面提示词节点输入
lowres, bad anatomy, blurry。 - 点击“执行”按钮,观察节点状态变化。
预期结果是:执行时节点边框会先变暗、再变亮,最后 SaveImage 节点输出一张生成图。页面右侧会出现生成结果和参数信息。
5.3 判断是否成功
判断一次生成是否成功,除了图片本身,还要看几个技术指标:
- 页面下方是否显示执行时间和进度。
- 命令行窗口是否有报错输出。
- 生成图片的分辨率是否等于 EmptyLatentImage 中设置的值。
如果图片没有出现,优先检查各节点之间连线是否完整、模型是否加载成功、控制台报了什么错。
6. 进阶功能测试与效果验证
跑通首次出图后,接下来可以逐步测试更多功能。这里按“功能 -> 操作 -> 预期结果 -> 排查方向”的方式给出测试方法。
6.1 模型加载与切换测试
ComfyUI 支持多种模型类型。加载方式很简单:双击节点空白处,输入节点名称,选择对应加载器节点即可。
| 模型类型 | 加载器节点 | 作用 |
|---|---|---|
| 大模型 | CheckpointLoaderSimple | 决定整体画风和生成能力 |
| LoRA | LoraLoaderModelOnly | 调整特定风格或角色特征 |
| VAE | VAELoader | 影响色彩和解码效果 |
| ControlNet | ControlNetApplyAdvanced | 控制构图、姿态和深度 |
切换模型测试建议:在 CheckpointLoaderSimple 的模型列表里换一个模型,保持其他节点不变,看输出风格是否变化。如果图片报错或出现明显的画质异常,大概率是模型文件损坏或模型与采样器不适配。
6.2 图生图测试
图生图的核心思路:把输入图片编码成潜空间数据,再输入采样器。对应节点是LoadImage + VAEEncode。
操作步骤:
- 添加 LoadImage 节点,上传一张测试图。
- 添加 VAEEncode 节点,把图片编码为 latent。
- 将 VAEEncode 的输出接到 KSampler 的 latent 输入。
- 降低重绘幅度,例如将 denoise 设置为 0.5 到 0.7。
判断成功的标准:输出图片在保留原图主体结构的同时,产生了风格变化。如果输出内容和原图完全无关,说明 denoise 值太高;如果毫无变化,说明 denoise 值过低或节点连线有误。
6.3 批量生成测试
批量生成有两种方式。
第一种是在 EmptyLatentImage 节点里把 batch_size 设置为 4 或 8,一次生成多张同一提示词的图片。
第二种是自定义脚本通过 API 循环提交不同提示词,这种适合大规模测试,后面第 7 节详细说明。
批量生成时重点观察两个问题:一是显存是否稳定,二是任务进度是否正常推进。如果批量中途显存溢出,可以降低批量数、缩小分辨率或减少步数。
6.4 插件扩展测试
ComfyUI 的插件生态很丰富。安装插件通常有两种方式:
- 通过 ComfyUI Manager 节点管理工具搜索安装。
- 手动把插件目录复制到
custom_nodes/目录,重启服务。
插件安装后,原来教程里没出现的节点就能在节点搜索里找到。注意:插件之间可能存在版本冲突,安装新插件后如果原有工作流报错,优先怀疑插件兼容性问题。
7. 接口 API 与批量任务自动化
ComfyUI 的 API 能力是新手上手后期非常值得掌握的功能。启动服务后,ComfyUI 本身就带了一套 HTTP API,可以把工作流提交给服务端执行,然后拿回结果。
7.1 API 基本调用方式
API 的核心端点是/prompt,用于提交工作流。工作流需要从页面上导出为 API 格式的 JSON,而不是普通的图片工作流 JSON。
提交任务的通用 Python 示例:
import requests import json import time # ComfyUI 服务地址 server_url = "http://127.0.0.1:8188" # 从文件读取 API 格式工作流 with open("workflow_api.json", "r", encoding="utf-8") as f: workflow = json.load(f) # 提交任务 response = requests.post( f"{server_url}/prompt", json={"prompt": workflow} ) response.raise_for_status() prompt_id = response.json()["prompt_id"] print("任务已提交,ID:", prompt_id) # 轮询任务结果 while True: history = requests.get(f"{server_url}/history/{prompt_id}", timeout=30).json() if prompt_id in history: outputs = history[prompt_id].get("outputs", {}) print("任务完成,输出:", outputs) break time.sleep(2)这个示例展示了最基础的“提交 -> 轮询 -> 获取输出”流程。实际使用时,你需要按自己的 API 工作流 JSON 调整字段。
7.2 批量任务设计思路
批量任务的核心思路是:循环修改工作流 JSON 中的提示词、种子或输出路径,然后逐个提交。
结合示例的结构,可以做如下设计:
{ "input_dir": "./inputs", "output_dir": "./outputs", "prompts": [ "a cat in the park, sunlight", "a dog on the beach, sunset", "a bird in the forest, morning fog" ], "steps": 20, "batch_size": 1 }脚本读取这个配置后,对每个提示词生成一个新的工作流 JSON 并提交。建议同时维护一个任务日志表格,记录每个任务的 prompt_id、状态和输出图片路径,方便后续失败重试和效果复盘。
7.3 接口测试注意事项
- 提交前先在网页端跑通同样的工作流,确认节点配置可以直接出图。
- 工作流中的每组 KSampler 参数都要在 API JSON 中有明确值,不能依赖页面上的遗留设置。
- 批量任务建议加超时重试,避免网络波动或显存占满导致任务卡死。
- API 提交的任务可以在页面上看到执行进度,这是一个很好的调试手段。
8. 资源占用与性能观察
这一节关注部署后最实际的问题:显存够不够、速度能不能接受、怎么调优。
8.1 怎么观察资源占用
NVIDIA 显卡用户可以在命令行使用:
nvidia-smi看到 GPU 显存使用率。在 ComfyUI 执行任务时观察显存曲线,如果显存占用接近上限,很容易出现 OOM 报错。
Windows 用户也可以打开任务管理器,在性能选项卡里看 GPU 显存占用。
8.2 影响生成速度的因素
| 因素 | 影响方向 | 调优建议 |
|---|---|---|
| 分辨率 | 越高越慢 | 测试阶段建议先用 512x512 或 512x768 |
| 采样步数 | 步数越多越慢 | 常见模型 20 到 30 步即可,不必盲目拉高 |
| 批量数 | 批量越大越吃显存 | 显存不足时先降到 1 |
| 模型体积 | 大模型推理耗时更长 | 追求速度可换轻量版本 |
| 显卡性能 | 决定性因素 | 无法通过软件完全弥补 |
8.3 降低显存占用的常见思路
- 显存有限时优先降低分辨率,分辨率对显存的影响往往比模型更大。
- 控制批量数量,一次生成 1 张比一次 4 张稳定得多。
- 减少采样步数,部分模型 15 到 20 步出图质量已经可接受。
- 如果长时间不用某个功能,把对应节点从工作流中移除,避免加载多余模型。
- 在遇到 OOM 时,可尝试设置系统虚拟内存,但要清楚虚拟内存无法替代显存,只是避免进程崩溃。
8.4 关于 CPU 推理
没有独立显卡的环境下,ComfyUI 也能用 CPU 运行,但出图速度会明显下降。第一次测试时建议把分辨率设置成 384x384 或 512x512,步数控制在 15 到 20 以内,先确认流程能跑通,再考虑提高参数。
9. ComfyUI 常见问题与排查方法
下面整理一份新手最常遇到的问题表,按“现象 -> 原因 -> 排查 -> 解决”梳理。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| 启动后页面打不开 | 端口被占用或服务未启动 | 查看命令行日志、检查端口监听状态 | 换端口重启,例如python main.py --port 8189 |
| 节点在执行过程中发生错误 | 节点参数缺失、模型文件未加载或插件冲突 | 看报错信息中标注的节点名称 | 优先重装该节点依赖或替换为默认节点 |
| 生成图片全黑或全灰 | 采样器参数异常或 VAE 解码失败 | 检查 KSampler 的 seed、CFG、denoise 设置 | 恢复默认参数,重新执行 |
| 提示词完全不生效 | 提示词节点连线错误或模型不支持 | 检查正面提示词节点的输出是否连接到采样器 | 对照示例工作流重新连线 |
| 模型文件加载后报错 | 模型文件缺失、损坏或放置目录不对 | 确认模型文件名和目录路径 | 重新下载模型,放到正确目录 |
| CUDA 不可用 | 显卡驱动过旧或 PyTorch 版本不匹配 | pip show torch查看版本,nvidia-smi查看驱动 | 更新驱动,重装对应 CUDA 版本的 PyTorch |
| 显存不足 OOM | 分辨率太高或批量数太大 | 降低分辨率、批量数、采样步数 | 增加虚拟内存,或换更大显存显卡 |
| 批量任务卡住 | 请求过多或单次显存溢出 | 查看任务日志和 nvidia-smi | 减小批量数,逐条提交并增加延迟 |
| API 提交后无响应 | 工作流 JSON 格式错误或端口不对 | 在页面验证同等工作流,确认 API 地址 | 重新导出 API 格式 JSON,检查接口地址 |
每一步排查都要记住一个原则:先看控制台报错,再动节点。ComfyUI 的报错信息通常会直接指明问题节点和错误类型,比盲目改参数高效得多。
10. 最佳实践与使用建议
把 ComfyUI 从“能跑通”提升到“稳定使用”,这里有几条工程化建议值得照做。
第一,目录管理要规范。建议把模型文件、输入素材、输出结果、工作流 JSON 分目录存放。例如:
ComfyUI/ ├── models/ │ ├── checkpoints/ │ ├── loras/ │ ├── vae/ │ └── controlnet/ ├── input/ ├── output/ └── workflows/这样在批量任务和模型升级时,不会因为文件混乱导致找不到模型或误删文件。
第二,第一次跑所有工作流都用小参数。无论是分辨率、步数还是批量数,先在低参数下确认流程正确,再拉高参数。这一步能省掉大量重新执迂排查显存问题的时间。
第三,重要工作流保存为 JSON 文件并备份。工作流文件是 ComfyUI 最核心的资产。建议在工作流文件命名中包含日期和用途,例如2026-02_文生图基础版.json。
第四,API 服务要限制访问范围。默认启动在127.0.0.1,建议保持这个设置。如果需要在局域网内访问,再改为--listen 0.0.0.0,同时要意识到局域网内其他人也能提交任务。
第五,涉及人脸、声音、品牌素材、他人风格时,必须确认授权。这是合规底线,不能因为“本地部署”而放松。
第六,批量任务一定要带日志和失败重试机制。最简单的做法是把每次提交的 prompt_id 写入日志文件,脚本定期检查未完成的任务。
11. 总结与下一步
ComfyUI 最值得尝试的点,是它能让你完全掌控 AI 绘画流程,并且通过工作流文件实现高度的可复现性。对新手来说,最先应该验证的是基础文生图工作流是否能跑通。这个流程一旦跑通,后面的图生图、ControlNet、批量任务和 API 调用都属于在此基础上的扩展。
最容易踩的坑集中在三处:安装时依赖和模型文件放错、首次跑工作流时节点连线不完整、批量跑任务时显存溢出。这三类问题在上面都给出了排查思路,遇到时按表格对照检查即可。
后续可以继续深入的方向包括:学习 ControlNet 控制构图和姿态、探索更多采样器和调度器组合、把 LoRA 训练引入自己的工作流,以及把 ComfyUI API 接入自己的自动化脚本或业务系统。
建议把这篇文章当作一条主线,先跑通基础流程,再逐步扩展节点和功能。下载模型、尝试别人的工作流、拆解每个节点的作用,ComfyUI 的学习速度会比想象中快很多。