在本地部署 Stable Diffusion 时,WebUI 以其直观的图形界面成为许多人的首选。然而,当项目需求从生成单张图片转向更复杂的任务,例如批量生成、流程自动化、多模型串联推理或视频生成时,WebUI 的线性操作模式就显得力不从心。此时,一个基于节点式可视化编程的框架——ComfyUI,便成为进阶用户和专业工作流搭建者的核心工具。它通过将 AI 图像生成的每个步骤(如加载模型、输入提示词、采样、后期处理)抽象为可连接的“节点”,允许用户以搭积木的方式自由构建、复用和优化整个生成流程。
对于希望深入掌握 AI 视频生成、构建稳定可复现工作流,或是在秋叶整合包基础上进行深度定制的学习者而言,ComfyUI 是必须跨越的一道门槛。本文将以“从零搭建一个可运行的 AI 视频生成工作流”为主线,带你系统性地理解 ComfyUI 的核心概念、环境部署、节点操作,并最终完成一个基础的文生视频流程。学习完成后,你将能够独立部署 ComfyUI,理解常见工作流的节点逻辑,并具备排查节点缺失、显存不足等典型问题的能力。
1. 理解 ComfyUI 的核心:为什么是节点与工作流
在开始安装和点击之前,必须先理解 ComfyUI 的设计哲学,这能从根本上解释它为何强大,以及为何对新手有一定门槛。
1.1 从线性操作到图计算
传统的 WebUI 操作是线性的:你设置参数,点击生成,等待结果。整个过程像一个黑盒,内部步骤固定且不可见。ComfyUI 则将这些内部步骤完全“白盒化”。Stable Diffusion 的完整生成流程被拆解为数十个独立的、功能单一的计算单元,每个单元就是一个“节点”(Node)。例如:
- Load Checkpoint:负责加载大模型。
- CLIP Text Encode:负责将你的文本提示词编码为模型能理解的向量。
- KSampler:负责执行采样去噪步骤。
- VAE Decode:负责将潜空间特征解码为最终图像。
- Save Image:负责保存图片。
这些节点通过“连线”来传递数据(如图像张量、条件向量、参数等),形成一个有向无环图(DAG),这就是“工作流”(Workflow)。这种设计带来了几个关键优势:
- 可定制与可复用:你可以任意排列、组合、跳过或重复某些节点,创造出 WebUI 无法实现的复杂流程(如多模型混合、中间结果干预、条件分支)。
- 流程可视化与可调试:整个生成逻辑一目了然,数据流向清晰。当生成结果不符合预期时,你可以检查每个节点的输入输出,精准定位问题节点。
- 资源高效与自动化:工作流可以保存为 JSON 文件,一键加载,完美复现。这对于批量处理、团队协作和自动化集成至关重要。
- 显存控制更精细:你可以精确控制哪些模型何时加载到显存,对于显存有限的用户,可以通过工作流设计实现“分时加载”,避免同时占用。
1.2 关键概念:节点、工作流与队列
- 节点(Node):计算的基本单元。每个节点有输入端口(通常在上方或左侧)和输出端口(通常在下方或右侧)。连线表示数据从输出端口流向输入端口。
- 工作流(Workflow):由节点和连线构成的完整计算图。它可以保存为
.json或.png文件。分享.png文件时,ComfyUI 可以读取其中的工作流信息并还原。 - 队列(Queue):ComfyUI 界面上的“Queue Prompt”按钮。点击后,当前工作流会被提交到计算队列中执行。你可以连续提交多个提示,它们会按顺序执行。
理解这些概念后,面对一个复杂的工作流截图,你就不会感到茫然,而是能将其看作一个逻辑电路图,从输入(提示词、初始图像)开始,沿着连线追踪到输出(最终图像/视频)。
2. 环境准备与 ComfyUI 部署
在开始构建工作流之前,一个稳定、完整的运行环境是基础。这里我们以在 Windows 系统上使用“秋叶一键整合包”为例,因为它集成了 Python、PyTorch、CUDA 等依赖,极大降低了部署难度。
2.1 系统与硬件要求
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10/11, Linux, macOS | Windows 10/11 |
| 处理器 | 支持 AVX 指令集的 CPU | 多核 CPU(Intel i5/R5 及以上) |
| 内存 | 8 GB | 16 GB 或更高 |
| 显卡 | NVIDIA GPU, 4GB 显存 | NVIDIA GPU, 8GB 显存及以上(如 RTX 3060/4060) |
| 存储 | 20 GB 可用空间(仅基础) | 50-100 GB SSD(用于存放模型) |
| Python | 3.10 | 3.10.x |
注意:AMD 显卡用户需要通过 ROCm 支持,配置更为复杂;Apple Silicon Mac 用户可使用原生版本。本文主要围绕 NVIDIA GPU + Windows 的常见场景展开。
2.2 使用秋叶整合包快速部署
- 获取整合包:从可靠的来源(如秋叶的 B站专栏或 GitHub 发布页)下载最新的 ComfyUI 整合包。通常是一个压缩文件。
- 解压与放置:将整合包解压到一个英文路径且没有空格的目录下,例如
D:\AI_Tools\ComfyUI。路径包含中文或空格可能导致未知错误。 - 启动 ComfyUI:
- 进入解压后的文件夹,找到
run_nvidia_gpu.bat(N卡用户)或run_cpu.bat(无显卡用户)。 - 双击运行
run_nvidia_gpu.bat。首次运行会自动安装必要的 Python 包,这需要一些时间,请保持网络通畅。 - 当命令行窗口出现类似
“To see the GUI go to: http://127.0.0.1:8188”的信息时,表示启动成功。
- 进入解压后的文件夹,找到
- 访问 Web 界面:打开浏览器,访问
http://127.0.0.1:8188。你将看到 ComfyUI 的默认界面:一个空白的画布和右侧的节点管理器。
2.3 安装基础模型与必要文件
整合包通常只包含 ComfyUI 本体和少数必要组件。你需要手动放置模型文件。
- 大模型(Checkpoint):将你的
.safetensors或.ckpt格式的 Stable Diffusion 模型文件(如SDXL、SD1.5的各种变体)放入ComfyUI\models\checkpoints\目录。 - VAE:可选。如果需要,将 VAE 文件(
.pt或.safetensors)放入ComfyUI\models\vae\。 - LoRA:将 LoRA 文件放入
ComfyUI\models\loras\。 - ControlNet:将 ControlNet 模型文件放入
ComfyUI\models\controlnet\。
放置完成后,重启 ComfyUI(关闭命令行窗口再重新运行.bat文件),模型就会在对应的节点中可用。
3. 构建你的第一个 AI 视频生成工作流
AI 视频生成在 ComfyUI 中通常通过特定的动画生成节点实现,其核心是在图像生成的基础上引入时间维度。我们将使用一个流行的视频生成扩展——ComfyUI-AnimateDiff-Evolved来构建基础流程。
3.1 安装视频生成扩展插件
ComfyUI 的强大生态依赖于社区插件。我们需要先安装动画扩散插件。
- 进入 ComfyUI 根目录下的
custom_nodes文件夹。 - 在此处打开命令行(或 Git Bash),执行克隆命令:
git clone https://github.com/Kosinkadink/ComfyUI-AnimateDiff-Evolve - 克隆完成后,重启 ComfyUI。重启后,你会在节点列表中发现新增了许多以 “AnimateDiff” 开头的节点。
- 下载运动模型(Motion Module)。访问该插件的 GitHub 页面,在
README中找到模型下载链接(通常是 Hugging Face)。下载.safetensors格式的运动模型,并将其放入ComfyUI\models\animate_diff\目录(可能需要手动创建此文件夹)。
3.2 搭建基础文生视频工作流
现在,我们开始从零搭建一个最基础的文本生成视频工作流。目标是:输入一段提示词,生成一个短视频。
添加基础采样链:
- 在画布空白处右键,选择
Add Node->Load Checkpoint。这是起点,用于加载大模型。 - 再次右键,
Add Node->CLIP Text Encode (Prompt)。我们需要两个这个节点,一个连接正面提示词(positive),一个连接负面提示词(negative)。将它们分别重命名为CLIP Text Encode Positive和CLIP Text Encode Negative。 - 右键,
Add Node->KSampler。这是核心采样器。 - 右键,
Add Node->VAE Decode。将潜空间图像解码为像素图。 - 右键,
Add Node->Save Image。用于保存生成的视频帧序列(目前还不是视频文件)。
- 在画布空白处右键,选择
连接基础采样链:
- 将
Load Checkpoint节点的MODEL输出,连接到CLIP Text Encode节点的clip输入,以及KSampler的model输入。 - 将
Load Checkpoint节点的CLIP输出,连接到两个CLIP Text Encode节点的clip输入。 - 将
Load Checkpoint节点的VAE输出,连接到VAE Decode节点的vae输入。 - 将
CLIP Text Encode Positive的CONDITIONING输出,连接到KSampler的positive输入。 - 将
CLIP Text Encode Negative的CONDITIONING输出,连接到KSampler的negative输入。 - 将
KSampler的LATENT输出,连接到VAE Decode的samples输入。 - 将
VAE Decode的IMAGE输出,连接到Save Image的images输入。 - 在
KSampler上设置基本参数:steps=20,cfg=7.5,sampler_name选择euler,scheduler选择normal。
- 将
引入 AnimateDiff 动画控制:
- 右键,
Add Node,在搜索框中输入AnimateDiff,选择AnimateDiff Loader。 - 将
AnimateDiff Loader节点的MODEL输出,连接到KSampler的model输入(这会覆盖之前从Load Checkpoint连过来的线)。同时,将Load Checkpoint的MODEL输出连接到AnimateDiff Loader的model输入。 - 在
AnimateDiff Loader节点中,点击motion_model下拉框,应该能看到你之前下载的运动模型,选择它。设置batch_size为16(这代表生成 16 帧)。 - 右键,添加
Empty Latent Image节点。将其width和height设置为512(或你的模型支持的分辨率),关键是将batch_size设置为与AnimateDiff Loader中一致的16。 - 将
Empty Latent Image节点的LATENT输出,连接到KSampler的latent_image输入。
- 右键,
设置提示词与最终连接:
- 在两个
CLIP Text Encode节点的text输入框中,分别输入你的正面和负面提示词。 - 检查整个工作流,确保没有断开的连接。一个基础的 AnimateDiff 工作流就搭建完成了。
- 在两个
你的节点连接逻辑应类似于:Load Checkpoint-> (CLIP->CLIP Text Encode), (MODEL->AnimateDiff Loader->KSampler), (VAE->VAE Decode);Empty Latent Image->KSampler;KSampler->VAE Decode->Save Image。
3.3 生成与查看结果
- 点击右侧的
Queue Prompt按钮,提交工作流到计算队列。 - 观察命令行窗口或 ComfyUI 界面底部的进度条。视频生成需要逐帧计算,耗时远长于单张图片。
- 生成完成后,结果会保存在
ComfyUI\output\目录下。你会得到一系列按序命名的图片(如frame_00001.png,frame_00002.png),而不是一个视频文件。 - 要将图片序列合成为视频,你需要使用额外的视频编辑软件(如 FFmpeg、Premiere)或 ComfyUI 的其他插件(如
ComfyUI-VideoHelperSuite)。这是当前许多 AI 视频工作流的常见后处理步骤。
4. 工作流详解、参数调优与问题排查
搭建出能运行的工作流只是第一步,理解每个关键节点的参数和它们之间的协作关系,才能有效控制输出结果。
4.1 核心节点参数解析
KSampler:
steps:采样步数。步数越多,细节可能越好,但生成越慢。视频生成建议在 20-30 步之间平衡质量与速度。cfg:分类器自由引导尺度。值越高,图像越贴合提示词,但可能降低创造性。视频生成时,过高的cfg(如 >10)可能导致帧间闪烁加剧,通常 7-9 是安全范围。sampler_name/scheduler:采样器和调度器组合。euler或dpmpp_2m配合karras或exponential调度器是常见选择,速度快且质量稳定。
AnimateDiff Loader:
motion_model:选择不同的运动模型,控制动作幅度和风格。例如,mm_sd_v15_v2.safetensors是通用模型。batch_size:这是视频的总帧数。它必须与Empty Latent Image节点的batch_size严格一致。16 帧大约对应 1 秒视频(按 16fps 计算)。context_length和context_stride:高级参数,用于控制运动一致性。初学者可先使用默认值。
Empty Latent Image:
width/height:生成视频的分辨率。必须是你所使用大模型训练时的标准分辨率(如 512x512, 768x768),否则效果可能很差。batch_size:必须与AnimateDiff Loader的batch_size一致。
4.2 常见问题与排查路径
在操作 ComfyUI 时,90% 的问题集中在以下几个方面。
| 问题现象 | 可能原因 | 检查与解决步骤 |
|---|---|---|
| 启动时报错或无法访问网页 | 1. 端口被占用。 2. Python 包依赖冲突。 3. 路径包含中文/空格。 | 1. 检查run_*.bat文件,看是否可指定其他端口(如--port 8189)。2. 尝试以管理员身份运行,或查看命令行窗口的具体错误信息。 3. 确保 ComfyUI 所在路径全为英文且无空格。 |
| 节点缺失,显示为红色或找不到 | 1. 未安装对应插件。 2. 插件安装失败或未重启。 | 1. 在节点搜索框输入关键词,确认是否真的没有。去custom_nodes文件夹查看对应插件目录是否存在。2. 根据缺失节点名称(如 Impact Pack,ControlNet)去 GitHub 搜索对应插件并安装。安装后必须重启 ComfyUI。 |
| 点击 “Queue Prompt” 无反应或报错 | 1. 工作流存在未连接的必需输入。 2. 模型文件缺失或损坏。 3. 节点参数设置不合理。 | 1. 仔细检查每个节点的输入端口是否都有连接(灰色表示可选,彩色表示必需)。 2. 检查命令行窗口的错误日志,通常会明确提示缺失哪个模型文件,将其放入正确目录。 3. 检查 batch_size等关键参数是否一致。 |
| 生成过程中报错 “CUDA out of memory” | 显存不足。视频生成对显存要求极高。 | 1.降低分辨率:将width/height从 768 降至 512。2.减少帧数:降低 batch_size(如从 32 降到 16)。3.使用 --lowvram参数:修改启动.bat文件,在命令末尾添加--lowvram。4.关闭其他占用显存的程序。 |
| 生成的视频闪烁、抖动严重 | 1.cfg值过高。2. 提示词过于复杂或不稳定。 3. 运动模型与基础模型不匹配。 4. 帧间一致性不足。 | 1. 尝试降低cfg值到 7-8。2. 简化提示词,使用更稳定、具体的描述。 3. 确保使用与基础模型版本匹配的运动模型(如 SD1.5 模型配 SD1.5 的运动模型)。 4. 尝试使用 AnimateDiff插件中的Context Options节点来增强一致性。 |
| 保存的是图片序列而非视频文件 | 缺少视频编码/合成节点。 | 这是正常现象。安装ComfyUI-VideoHelperSuite插件,它提供VHS_VideoCombine节点,可以将图片序列直接合成为.mp4或.gif文件。 |
4.3 工作流的管理与进阶
- 保存与加载:点击界面上的
Save按钮,可以将当前工作流保存为.json文件。点击Load可以加载。当你从社区获得一个.png工作流图时,直接将其拖入 ComfyUI 画布即可自动加载。 - 模块化与分组:对于复杂工作流,你可以选中多个节点,右键选择
Collapse to Group,将其折叠为一个组,并命名(如“提示词编码模块”、“高清修复模块”)。这能极大提升工作流的可读性和可维护性。 - 探索社区工作流:学习 ComfyUI 最快的方式是研究和复现他人分享的优秀工作流。在
Civitai、OpenArt等平台搜索 “ComfyUI Workflow”,下载.json或.png文件加载学习,理解其设计思路。
5. 从学习到生产:最佳实践与扩展方向
当你能够熟练搭建和调试基础工作流后,下一步是思考如何使其更稳定、高效,并探索更强大的功能。
5.1 稳定性与性能最佳实践
- 版本管理:ComfyUI 本体、插件、模型都在快速迭代。在开始一个重要项目前,备份当前可稳定运行的工作流
.json文件以及其对应的完整环境(包括插件版本)。避免在项目中途盲目更新导致工作流崩溃。 - 显存优化策略:
- 使用
--cpu参数:在启动命令后添加--cpu,可以将某些模块(如 CLIP)强制放在 CPU 上运行,节省显存,但会降低速度。 - 分阶段生成:对于超长视频或高分辨率生成,可以设计工作流先生成低分辨率、低帧数的预览,满意后再调用另一个专门的高清化、插帧工作流进行精修。
- 及时清理:生成完成后,点击
“Clear”按钮清空队列,有时有助于释放缓存。
- 使用
- 文件组织:在
models目录下建立清晰的子文件夹结构。对于自定义节点生成的临时文件或中间文件,定期清理,避免占用过多磁盘空间。
5.2 扩展你的工作流能力
基础文生视频只是起点,ComfyUI 的真正威力在于集成和串联。
- 集成 ControlNet:安装
ComfyUI-Impact-Pack或直接使用ControlNet相关节点。你可以通过上传一张姿势图、深度图或线稿,来精确控制视频中人物的动作、场景的构图和透视,极大提升视频的可控性。 - 实现图生视频(视频重绘):使用
Load Image节点加载一张初始图片,然后通过VAE Encode节点将其编码为潜空间特征,再输入给KSampler。结合AnimateDiff,可以实现以图为基础的动画生成。 - 加入高清修复(Hi-Res Fix):在
KSampler之后,连接一个Latent Upscale节点进行潜空间放大,再连接第二个KSampler进行细节重绘,最后VAE Decode。这是提升视频画面细节和分辨率的关键步骤。 - 使用 LoRA 定制风格:在
Load Checkpoint节点后,通过Lora Loader节点加载特定的 LoRA 模型,可以快速为生成的视频赋予特定的画风、角色特征或概念。 - 音频与视频同步:虽然 ComfyUI 本身不处理音频,但你可以生成视频序列后,在后期使用专业工具(如 DaVinci Resolve, Adobe Premiere)或脚本,将生成的视频与音频进行对齐,制作完整的短片。
5.3 学习路径建议
不要试图一次性掌握所有节点和插件。遵循一个渐进的学习路径:
- 第一阶段(掌握核心):彻底弄懂
Load Checkpoint->CLIP Text Encode->KSampler->VAE Decode->Save Image这条最基础的图片生成链。理解数据(MODEL, CLIP, CONDITIONING, LATENT, IMAGE)是如何流动的。 - 第二阶段(引入动态):在基础链上加入
AnimateDiff Loader和调整batch_size,实现文生视频。攻克显存不足、视频闪烁等常见问题。 - 第三阶段(增加控制):集成 ControlNet 实现姿势控制,或集成 LoRA 实现风格化。学习使用
Impact Pack等工具包节点。 - 第四阶段(优化输出):学习高清修复流程、视频合成节点,并开始尝试将多个功能模块(如重绘、放大、合成)组合成一个完整的大型工作流。
- 第五阶段(探索与创造):研究社区中的复杂工作流,理解其设计模式。尝试创造自己的独特节点组合,解决特定的生成任务。
ComfyUI 的学习曲线初期较陡,但一旦理解了其节点化、数据流驱动的范式,你将获得远超传统界面的灵活性和控制力。从成功运行第一个视频工作流开始,逐步拆解、修改、重组,是掌握这门工具最有效的方法。记住,每一个复杂的工作流都是由简单的节点一步步连接而成的。