先聊一个不少 AI 绘画玩家都会遇到的问题:用 Stable Diffusion WebUI 做完图后,想复用一套固定的生成流程,却发现要么得手动记一堆参数,要么重装环境后工作流直接失效。更麻烦的是,当需要把 ControlNet、LoRA、局部重绘、视频生成这些能力串在一条生产链路上时,WebUI 的界面操作会变得非常繁琐。这时候,ComfyUI 就成了一个绕不开的选择。
这篇文章我会以 2026 年目前的 ComfyUI 生态为背景,写一份适合新手和有一定基础开发者的保姆级教程。内容覆盖环境部署、核心节点概念、文生图与图生图实战、视频生成工作流、常见报错排查、性能优化建议。全程以可复现、可操作、可排错为目标,尽量把关键参数和“为什么这么做”讲清楚。
无论你是第一次接触节点式工作流,还是已经用过 WebUI、想切换到 ComfyUI 提升出图效率和流程复用性,这篇文章都能给你一套完整参考。
1. 为什么选择 ComfyUI:从绘图工具到节点式创作平台
1.1 ComfyUI 到底是什么
ComfyUI 是一个基于节点的 Stable Diffusion 图形界面工具。它不像 WebUI 那样把“提示词输入框、采样参数滑块、生成按钮”集成在一个页面里,而是把所有处理步骤拆成一个个独立节点,通过连线把数据流串联起来。
你可以把每个节点理解成流水线上的一个工位。第一个工位负责加载大模型,第二个工位负责编码正向提示词,第三个工位负责初始化潜空间图像,第四个工位负责采样,最后一个工位负责把潜空间张量解码成图片并保存。数据按照连线方向流动,最终生成一张图。
这样的设计带来几个直接好处:
- 工作流可视化:每一步在做什么、输入输出是什么,全部一目了然。
- 流程可复用:可以把自己常用的节点组合保存为 workflow 文件或图片,下次直接拖入 ComfyUI 即可恢复。
- 灵活扩展:ControlNet、LoRA、IPAdapter 等插件都可以作为独立节点插入到链路任意位置,不需要像 WebUI 那样依赖复杂参数面板。
- 资源利用更高效:ComfyUI 可以在生成复杂任务时更精细地控制显存调度,对于长流程、高分辨率任务有优势。
1.2 与 WebUI 的差异对比
很多初学者会在 WebUI 和 ComfyUI 之间犹豫。简单对比一下两者定位:
| 对比维度 | WebUI | ComfyUI |
|---|---|---|
| 界面复杂度 | 上手快,参数集中在一个页面 | 需要理解节点概念,学习曲线稍陡 |
| 工作流复用 | 靠保存参数、脚本、预设集 | 工作流文件直接保存节点和连线 |
| 插件生态 | 非常丰富 | 越来越丰富,常用插件大部分已支持 |
| 适合人群 | 轻度用户、快速出图 | 进阶玩家、批量流程、固定生产链路 |
| 显存控制 | 相对简单 | 更精细,可处理复杂长流程 |
这里并不是说 WebUI 被 ComfyUI 完全替代。对于偶尔出图、不想研究节点逻辑的用户,WebUI 依旧友好。但如果你需要“把同样的流程跑一百次不出错”,ComfyUI 的工作流复用能力确实更适合工业化生产。
1.3 本文主要内容与适用范围
本文会从以下几个方面展开:
- ComfyUI 本地部署的三种方式:整合包、官方源码部署、已有环境迁移。
- ComfyUI 核心节点拆解:加载大模型、CLIP 编码、KSampler、VAE 解码、图像保存。
- 完整实战:文生图、图生图、LoRA 加载、局部重绘。
- 视频生成工作流思路与常见模型放置方式。
- 高频报错排查:节点执行失败、显存不足、模型加载失败、虚拟内存不足。
- 性能优化最佳实践:启动参数、显存调度、虚拟内存设置、工作流管理建议。
整个内容适合以下读者:
- 用过 Stable Diffusion,但从未接触过 ComfyUI。
- 已经在用 ComfyUI,但只会拖别人的工作流,不懂节点逻辑。
- 部署或运行时遇到报错,需要系统化排查思路。
2. 环境准备与部署方案
2.1 硬件与系统要求
ComfyUI 的运行依赖 PyTorch 与 CUDA 环境,因此硬件配置会直接影响出图速度和能否运行复杂模型。这里的建议以日常使用为参考,实际请以你本机配置为准。
最低配置参考:
| 配置项 | 建议值 |
|---|---|
| 操作系统 | Windows 10/11、Ubuntu 20.04+、macOS(Apple Silicon) |
| 显卡 | NVIDIA 显卡,显存 4GB 起步 |
| 内存 | 16GB 起步 |
| 硬盘 | SSD 更好,模型文件占比较大,建议预留 50GB 以上 |
推荐配置参考:
| 配置项 | 建议值 |
|---|---|
| 操作系统 | Windows 11 / Ubuntu 22.04 |
| 显卡 | NVIDIA RTX 3060 12GB 或更高 |
| 内存 | 32GB |
| 硬盘 | 1TB NVMe SSD |
如果你没有 NVIDIA 显卡,可以使用 CPU 模式运行,但速度会非常慢。Apple Silicon 用户可以使用 MPS 后端,具体支持情况需要安装对应版本的 PyTorch。
2.2 方案一:秋叶整合包一键部署
“秋叶整合包”是目前国内用户使用较多的一键部署方式。它把 Python 环境、PyTorch、ComfyUI 主程序、常用插件、模型管理工具打包在一起,解压后即可启动,适合不想折腾环境的新手。
安装步骤大致如下:
- 下载秋叶 ComfyUI 整合包,注意选择与你的显卡匹配的版本。
- 将压缩包解压到本地目录,注意路径中不要包含中文和空格。
- 进入解压后的目录,双击启动器或一键启动脚本。
- 在启动器中选择显卡型号、运行模式,点击“一键启动”。
- 等待控制台输出启动日志,自动打开浏览器进入 ComfyUI 界面。
这里需要提醒的是,整合包版本更新较快,不同版本的目录结构和启动器界面可能略有差异。不管用的是哪个版本,核心目录一般包括ComfyUI主目录、models模型目录、python内置环境目录和启动器.exe或.bat启动脚本。
整合包的优点是省去环境配置,缺点是更新时可能出现模型路径、插件版本不一致的问题。建议你解压后先备份根目录下的配置文件,再执行更新操作。
2.3 方案二:官方源码手动部署
如果你使用 Linux 服务器,或者希望完全掌控环境版本,推荐使用官方源码部署。这种方式不依赖整合包,所有依赖都通过 pip 安装,排错更清晰。
以 Ubuntu 20.04/22.04 为例,手动部署流程如下:
# 1. 安装 git 和 python 环境 sudo apt update sudo apt install -y git python3 python3-venv python3-pip # 2. 克隆官方仓库 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 3. 创建虚拟环境 python3 -m venv venv source venv/bin/activate # 4. 安装 PyTorch(以 CUDA 12.1 为例) pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 5. 安装 ComfyUI 依赖 pip install -r requirements.txt # 6. 启动 ComfyUI python main.py启动后,控制台会显示类似以下日志:
Starting server To see the GUI go to: http://127.0.0.1:8188此时在浏览器打开http://127.0.0.1:8188即可进入工作台。
如果你使用 Windows,可以在项目根目录创建run.bat,内容如下:
@echo off cd /d %~dp0 venv\Scripts\activate python main.py --auto-launch pause保存后双击即可启动,--auto-launch参数会让浏览器自动打开。
2.4 模型放置目录
ComfyUI 启动后不会自带模型,你需要手动把大模型、LoRA、VAE 等文件放到指定目录。默认情况下,模型目录在ComfyUI/models下:
| 文件类型 | 放置目录 |
|---|---|
| Checkpoint 大模型 | models/checkpoints |
| LoRA 模型 | models/loras |
| VAE 模型 | models/vae |
| ControlNet 模型 | models/controlnet |
| 文本编码器 / CLIP | models/clip |
| 放大模型 | models/upscale_models |
| 视频模型 | models/diffusion_models或各插件对应目录 |
模型文件一般以.safetensors或.ckpt结尾。放好后,如果 ComfyUI 已经在运行,可以在节点中点击刷新按钮,重新扫描模型列表。路径建议全部使用英文,避免某些插件对中文路径兼容不好。
3. ComfyUI 核心概念拆解
3.1 节点式工作流原理
ComfyUI 的工作流本质上是一张有向无环图。每个节点接收输入、产生输出,输出又作为下一个节点的输入。最常见的文生图流程可以抽象为:
加载大模型 -> 编码正向提示词 -> 创建空潜空间 -> 采样 -> 解码 -> 保存图像对应的节点链路为:
CheckpointLoaderSimple ├── positive -> CLIPTextEncode(正向提示词) ├── negative -> CLIPTextEncode(负向提示词) └── latent -> EmptyLatentImage(空潜空间) ↓ KSampler ↓ VAEDecode ↓ SaveImage理解这个链路后,你会发现 ComfyUI 的每个节点只是在完成一个独立功能,通过连线指定数据流方向。
3.2 文生图主链路节点详解
下面详细拆解文生图主链路中的几个核心节点。
3.2.1 CheckpointLoaderSimple
这个节点负责加载大模型,输出三个数据:
MODEL:用于采样推理的模型对象。CLIP:用于文本编码,把提示词转为模型能理解的条件向量。VAE:用于图像编解码,负责把潜空间数据解码为像素空间图片。
大模型文件存放在models/checkpoints目录。节点上有一个下拉框,列出该目录下所有模型,选择后自动加载。
3.2.2 CLIPTextEncode
CLIPTextEncode节点负责把文本提示词编码为条件向量。它需要两个输入:
clip:来自 Checkpoint 的 CLIP 数据。text:你输入的提示词。
一个完整工作流通常需要两个CLIPTextEncode节点,一个用于正向提示词,一个用于负向提示词。正向提示词描述你想生成的内容,负向提示词描述你想避免的内容。
正向提示词示例: masterpiece, best quality, a beautiful girl, detailed face, cinematic lighting 负向提示词示例: lowres, bad anatomy, bad hands, watermark, text, extra fingers3.2.3 EmptyLatentImage
EmptyLatentImage节点用于创建空白的潜空间图像,相当于指定生成图片的初始尺寸和批次数量。主要参数有三个:
width:生成图片宽度。height:生成图片高度。batch_size:一次生成几张图。
需要注意的是,潜空间尺寸和像素尺寸有对应关系。Stable Diffusion 1.5 的潜空间缩放倍率是 8,也就是说 512x512 的图片对应潜空间张量为 64x64。ComfyUI 会自动处理这个换算,你在界面上直接填写像素尺寸即可。
3.2.4 KSampler
KSampler是采样器节点,也是整个工作流中参数最密集的节点。它负责根据条件向量逐步去噪,生成最终的潜空间图像。
默认参数示例:
| 参数 | 常见值 | 含义 |
|---|---|---|
| seed | -1 或固定数字 | 随机种子,决定生成图的随机性 |
| steps | 20 | 采样步数,步数越多细节越丰富但耗时越长 |
| cfg | 7.0 | 提示词引导系数,衡量提示词对结果的影响强度 |
| sampler_name | dpmpp_2m | 采样器算法名称 |
| scheduler | karras | 噪声调度器,影响每一步的噪声调整策略 |
| denoise | 1.0 | 去噪强度,图生图场景下常用 |
3.2.5 VAEDecode 与 SaveImage
VAEDecode节点接收 KSampler 输出的潜空间张量,通过 VAE 解码为像素空间的图片数据。SaveImage节点负责把图片保存到输出目录。
这个链路的顺序不能颠倒。如果不经过 VAE 解码直接保存,得到的结果会是花屏或纯噪声图。
3.3 KSampler 参数与 CFG 的含义
在 ComfyUI 相关搜索中,“CFG 是什么意思”是一个高频问题。CFG 全称 Classifier Free Guidance,中文叫无分类器指导。它的作用是控制提示词对生成图像的引导强度。
简单来说:
- CFG 值越低,生成结果与提示词的一致性越弱,模型有更大的自由发挥空间,画面可能更柔和。
- CFG 值越高,生成结果越贴近提示词,但过高会导致颜色过饱和、画面失真、出现伪影。
- 常用范围一般在 5 到 12 之间,文生图场景下 7 左右是比较常见的选择。
采样器的选择也会直接影响出图风格:
| 采样器 | 特点 | 适用场景 |
|---|---|---|
| euler | 基础采样器,速度较快,细节中庸 | 通用 |
| euler_ancestral | 带额外噪声,画面更有艺术感 | 推荐优先尝试 |
| dpmpp_2m | 收敛平稳,细节丰富 | 通用、常用 |
| dpmpp_sde | 噪声更强,风格化明显 | 二次元风格、创意图 |
| unipc | 高步数下效率高 | 动漫风格、快速出图 |
在实际项目中,我更推荐先固定一个常用组合,比如dpmpp_2m + karras + 20 步 + CFG 7,出图稳定后再根据风格需求调整采样器和 CFG。
4. 完整实战流程:从零搭建文生图工作流
4.1 新建工作流准备
打开 ComfyUI 后,默认会加载一个最简单的文生图工作流。如果你被其他工作流覆盖了,可以通过菜单Workflow -> Browse Templates或直接新建画布添加节点。
下面我们通过手动添加节点的方式,从零搭建一个完整的文生图工作流,这样你能更清楚每个节点对应什么功能。
4.2 添加核心节点并连线
在 ComfyUI 工作台空白处双击,会弹出节点搜索框。依次搜索并添加以下节点:
CheckpointLoaderSimple:加载大模型。CLIPTextEncode:正向提示词,需要两个。EmptyLatentImage:设置画布尺寸。KSampler:采样。VAEDecode:解码。SaveImage:保存图片。
添加完成后,按以下方式连线:
CheckpointLoaderSimple.MODEL -> KSampler.model CheckpointLoaderSimple.CLIP -> CLIPTextEncode(正向和负向) CheckpointLoaderSimple.VAE -> VAEDecode.vae CLIPTextEncode.CONDITIONING -> KSampler.positive / negative EmptyLatentImage.LATENT -> KSampler.latent_image KSampler.LATENT -> VAEDecode.samples VAEDecode.IMAGE -> SaveImage.images连线方式很简单:从节点右侧的输出点按住鼠标左键拖到另一个节点的输入点即可。如果连错,可以右键连线删除。
4.3 设置采样参数与提示词
连线完成后,检查以下参数:
CheckpointLoaderSimple 节点:选择一个你本地已有的 checkpoint 模型。如果你还没有下载任何模型,可以先用网上的示例模型文件放入models/checkpoints目录,或者使用整合包自带的默认模型测试。
正向 CLIPTextEncode 节点:
masterpiece, best quality, 1girl, beautiful detailed face, long hair, night city, neon lights, cinematic lighting负向 CLIPTextEncode 节点:
lowres, bad anatomy, bad hands, extra fingers, missing fingers, watermark, text, signatureEmptyLatentImage 节点:
width: 512 height: 768 batch_size: 1KSampler 节点:
seed: 888888 steps: 20 cfg: 7.0 sampler_name: dpmpp_2m scheduler: karras denoise: 1.04.4 运行与验证
参数设置完成后,点击面板右侧的“Run”按钮,或者按Ctrl + Enter执行工作流。执行过程中,Ksampler 节点会显示进度条,稍等片刻后 SaveImage 节点会输出生成的图片。
如果你看到一张完整的、符合提示词描述的图片,说明工作流搭建成功。
4.5 结果说明与保存工作流
生成成功后,建议通过菜单Workflow -> Save保存工作流文件,文件格式为.json。以后需要复用这套流程,直接拖入 JSON 文件到 ComfyUI 窗口即可加载。
另外,ComfyUI 还有一个特性:保存图片时会把工作流信息嵌入 PNG 文件中。如果你在浏览器中看到别人分享的 ComfyUI 出图结果,可以直接把图片拖入自己的 ComfyUI,即可恢复对应工作流。
5. 进阶实战:LoRA 加载、图生图与局部重绘
5.1 添加 LoRA 节点
LoRA 是轻量级模型微调技术,可以在不大改大模型的情况下改变出图风格或角色特征。ComfyUI 中使用 LoRA 的方式非常简单。
搜索并添加LoraLoader节点,它有三个输入:
model:来自 Checkpoint 的 MODEL。clip:来自 Checkpoint 的 CLIP。lora_name:选择本地 LoRA 文件。
LoRA 节点会把经过 LoRA 调整后的 model 和 clip 传给下一步。连接关系如下:
CheckpointLoaderSimple.MODEL -> LoraLoader.model CheckpointLoaderSimple.CLIP -> LoraLoader.clip LoraLoader.MODEL -> KSampler.model LoraLoader.CLIP -> CLIPTextEncode(正向和负向的 clip 输入都改接这里)LoraLoader 还有一个强度参数strength_model和strength_clip,默认是 1.0。实际使用中,如果画面出现过拟合、细节粗糙,可以把强度降到 0.7 到 0.9 观察效果。
5.2 图生图与局部重绘工作流
图生图工作流的原理是:把一张已有的输入图经过 VAE 编码为潜空间张量,然后用带噪声的潜空间作为 KSampler 的初始输入,而不是使用 EmptyLatentImage。
核心节点替换为:
LoadImage -> VAEEncode -> KSampler(latent_image 从 VAEEncode 获取)连接关系示意:
CheckpointLoaderSimple.VAE -> VAEEncode.vae LoadImage.IMAGE -> VAEEncode.pixels VAEEncode.LATENT -> KSampler.latent_image此时 KSampler 的denoise参数会变得非常关键。denoise 表示去噪强度:
denoise = 1.0:完全重新生成,只保留原图的构图和颜色大体结构。denoise = 0.6:保留较多原图特征,只修改细节。denoise = 0.3:轻度调整,比如改动光照、局部细节。
图生图适合做“保持人物姿势不变、改变画面风格”的任务。局部重绘则是在原图上蒙版指定区域,只对该区域重新生成,其他区域保持不变。
局部重绘需要额外节点:
LoadImage -> VAEEncode -> SetLatentNoiseMask -> KSampler VAEEncode -> SetLatentNoiseMaskSetLatentNoiseMask节点接收一个蒙版图,把蒙版区域标记为需要重绘。mask 可以通过插件生成,也可以在节点参数中加载黑白图片:白色区域表示重绘区域,黑色区域表示保留区域。
6. 视频生成工作流思路
6.1 视频生成节点链条
ComfyUI 不只是图片生成工具。随着视频生成模型接入,ComfyUI 也可以作为视频生成工作流的管理平台。近几年开源社区出现了多种视频生成模型,比如 LTX-Video、Minimax 相关视频模型等,在这些模型的加持下,ComfyUI 里可以搭建“文生视频”或“图生视频”工作流。
视频生成工作流的基本链路和文生图类似,但有几个关键差异:
- 输入除了提示词,还要指定视频帧数、帧率、分辨率。
- 潜空间不再是单张图像,而是一段时间序列潜空间张量。
- 解码后输出的是视频文件或图像序列。
大致节点链路:
加载视频模型 -> 编码提示词 -> 创建视频潜空间 -> 视频采样 -> 视频解码 -> 保存视频6.2 常见视频模型放置与注意事项
不同视频模型的放置目录略有差异,但一般遵循以下习惯:
| 模型类型 | 放置目录 |
|---|---|
| 视频生成基础模型 | models/diffusion_models |
| VAE 视频编解码模型 | models/vae |
| 文本编码器 | models/clip |
| 辅助组件 | 插件对应models子目录 |
需要特别注意的是,视频生成对显存和内存的消耗远大于单张图片生成。如果你的显卡显存只有 8GB,直接跑大分辨率的视频工作流大概率会遇到显存不足。此时可以尝试:
- 降低分辨率,比如先从 384x672 开始测试。
- 减少帧数,比如先生成 9 帧或 16 帧,确认链路通畅后再增加。
- 开启显存优化启动参数,具体见本文第 8 节。
视频模型的文件通常较大,下载时要注意来源可靠性。建议使用官方发布渠道或知名社区分享的模型文件,并且放置模型前先确认是否与当前 ComfyUI 版本兼容。
7. 常见报错排查与解决方法
ComfyUI 在使用过程中会遇到各种报错,下面列出几个最高频的场景和排查思路。
7.1 节点执行过程中发生错误
这是 ComfyUI 最典型的报错,错误提示中会包含node error report之类的信息。常见原因有:
- 模型的输出维度与当前节点不匹配。
- 显存不足导致 CUDA 报错。
- 某些节点缺少自定义插件。
- 模型文件损坏或不完整。
排查步骤如下:
- 查看控制台完整日志,找到报错节点名称。
- 检查该节点输入输出线是否连接正确。
- 尝试换一个小尺寸模型测试,排除显存问题。
- 确认所有节点对应的插件已安装并启用。
- 如果某个节点一直报错,右键删除该节点,重新添加一个相同类型节点。
ComfyUI 社区中有一个通用排查技巧:把报错信息复制到搜索引擎,加上“comfyui”关键词,大部分节点报错都能找到解决方案。
| 问题现象 | 常见原因 | 解决思路 |
|---|---|---|
| 节点执行失败,提示 model missing | 模型没有放入正确目录 | 将模型放入对应模型目录并刷新节点 |
| 节点执行失败,提示 CUDA out of memory | 显存不足 | 降低分辨率、减少 batch_size、开启 lowvram 模式 |
| 节点执行失败,提示 module not found | 缺少插件依赖 | 在 ComfyUI 目录执行 pip install -r requirements.txt |
| 节点执行失败,提示 VAE shape mismatch | 模型与 VAE 不匹配 | 更换与大模型匹配的 VAE 或删除自定义 VAE |
7.2 显存不足:CUDA Out of Memory
显存不足是生成大图或视频时最高频的问题。解决方法优先级如下:
- 降低分辨率。
- 减少 batch_size。
- 使用
--lowvram或--medvram启动参数。 - 开启
--cuda-malloc参数优化显存分配。 - 关闭其他占用显存的程序。
如果你使用整合包,启动器里一般有显存优化选项,直接勾选低显存模式即可。如果你使用官方源码启动,可以在启动命令中加入参数:
python main.py --lowvram --cuda-malloc7.3 模型加载失败
模型加载失败的常见原因有:
- 文件没有放到正确目录。
- 文件名包含中文或特殊符号,导致解析失败。
- 模型文件下载不完整,
.safetensors文件可能只有几 MB。 - 模型版本与 ComfyUI 版本不兼容。
建议下载模型后先检查文件大小是否正常。例如,Stable Diffusion 1.5 的 checkpoint 文件大小通常在 2GB 到 4GB 之间,如果只有几百 MB,大概率下载有问题。
7.4 虚拟内存不足
运行视频生成或大型工作流时,即使显存够用,也可能因为物理内存不足导致系统崩溃或进程退出。解决方法是在 Windows 中设置较大的虚拟内存。
Windows 设置虚拟内存路径:
控制面板 -> 系统和安全 -> 系统 -> 高级系统设置 -> 高级 -> 性能 -> 设置 -> 高级 -> 虚拟内存 -> 更改取消勾选“自动管理所有驱动器的分页文件大小”,选择装有 ComfyUI 的磁盘,设置自定义大小。建议初始大小和最大大小都设为物理内存的 1.5 到 2 倍。例如 32GB 物理内存,可以设置初始 49152MB,最大 65536MB。
设置完成后需要重启系统生效。这个操作对内存不足导致的工作流崩溃有明显缓解作用。
8. 性能优化与生产级建议
8.1 常用启动参数
ComfyUI 支持的启动参数较多,下面列出我在实际使用中比较常用的几个:
| 启动参数 | 作用 |
|---|---|
--auto-launch | 自动打开浏览器 |
--lowvram | 低显存模式,减少显存占用 |
--medvram | 中等显存模式 |
--cuda-malloc | 启用 CUDA 快速分配 |
--force-fp16 | 强制使用半精度浮点,减少显存占用 |
--preview-method auto | 控制采样预览方式,auto 为默认 |
启动示例:
python main.py --auto-launch --medvram --cuda-malloc在整合包中,这些参数通常可以在启动器界面上勾选,不需要手写命令。
这里也单独提一下虚拟内存设置。很多刚接触 ComfyUI 的用户容易忽略虚拟内存的作用。当你的工作流包含视频生成、多模型叠加、高分辨率放大时,物理内存可能会被瞬间耗尽,虚拟内存能缓解峰值压力。建议在运行大型工作流之前,先把虚拟内存调整到足够大小。
8.2 工作流管理的工程建议
工作流文件(.json或.png)是核心资产。以下是我推荐的工程化习惯:
- 按项目拆分目录:为不同项目建立独立工作流文件夹,例如
workflows/portrait、workflows/video。 - 工作流文件命名带版本:比如
portrait_v1.json、portrait_v2.json,方便回溯。 - 记录参数变更:在保存工作流时,可以在正向提示词或注释节点中备注本次使用的模型、LoRA、采样参数。
- 关键节点添加注释:右键节点可以添加注释,把每个节点的作用写清楚,方便以后维护。
- 不要随便覆盖原始工作流:复制一份再修改,避免调整失败后恢复困难。
8.3 模型与插件的版本管理
ComfyUI 的更新节奏比较快,插件和核心之间的兼容性有时会出现问题。如果你不想花大量时间处理版本冲突,建议:
- 保持核心 ComfyUI 版本相对稳定,不要每次更新都立刻升级。
- 记录当前使用的插件列表和版本号。
- 更新前先备份
ComfyUI/execution.py、ComfyUI/custom_nodes目录,以及根目录的requirements.txt。 - 对于不再维护的旧插件,优先找替代插件,而不是强行兼容。
8.4 安全与生产环境注意事项
在使用 ComfyUI 进行生产环境部署时,有几个原则需要留意:
- 不要把工作流服务直接暴露在公网,ComfyUI 默认监听本地 8188 端口,如需远程访问,建议通过安全隧道或内网隔离。
- 对工作流文件中的提示词保持敏感,不生成违反法律法规的内容。
- 批量生成图片前,先在小批量下验证完整链路,避免一次性提交大量任务导致系统资源耗尽。
- 涉及模型文件替换时,注意备份原始模型,避免文件损坏影响线上流程。
- 使用 API 调用 ComfyUI 时,建议加一层业务鉴权,避免未授权请求占用推理资源。
ComfyUI 支持通过 API 提交工作流。如果你后续有自动化需求,可以参考下面的 Python 示例(示例思路,需结合你的工作流 JSON 调整):
import json import requests # 读取工作流 JSON with open("workflows/portrait_v1.json", "r", encoding="utf-8") as f: workflow = json.load(f) # 提交到本地 ComfyUI 服务 response = requests.post( "http://127.0.0.1:8188/prompt", json={"prompt": workflow} ) print(response.status_code) print(response.json())这个接口适合把固定工作流嵌入到自动化流程中,比如定时出图、批量生成、图片风格化服务等。
9. 总结与下一步学习路线
完成这篇教程的阅读后,你应该已经掌握以下内容:
- ComfyUI 的节点式工作流概念和与 WebUI 的差异。
- 使用整合包和官方源码两种方式完成本地部署。
- 理解文生图、图生图、局部重绘、LoRA 加载、视频生成的核心节点链路。
- 掌握 KSampler 参数和 CFG 的作用。
- 面对节点执行错误、显存不足、模型加载失败、虚拟内存不足等高频问题时的排查思路。
- 掌握性能优化、工作流管理、生产环境部署的工程建议。
下一步的学习方向,可以从几个方面继续深入:
- 研究 ControlNet 工作流,把姿态控制、深度控制、线稿控制引入自己的生成链路。
- 学习 ComfyUI API 调用方式,把工作流封装成后端服务。
- 尝试自定义节点开发,理解 ComfyUI 节点的输入输出规范。
- 关注社区中的高质量工作流分享,拆解别人设计的复杂工作流,并总结节点组合规律。
建议你先从最基础的文生图工作流开始,手动搭一遍,把每个节点的作用和参数含义吃透,再逐步加入 LoRA、图生图、ControlNet。遇到报错时,不要急着复制别人的解决方案,先看控制台日志,定位到具体节点,然后根据错误类型做针对性调整。这种排错习惯会在后续使用中带来很大帮助。
如果你在搭建过程中遇到本文没有覆盖到的问题,欢迎在评论区留言讨论。好的工作流离不开反复调试,希望你能把 ComfyUI 真正用起来,搭建出适合自己的一套稳定生产链路。