
这次我们来看一个面向 AI 绘画与视频生成的全流程 ComfyUI 教程。ComfyUI 作为 Stable Diffusion 的节点式图形界面其灵活性和可扩展性远超传统的 WebUI但学习曲线也相对陡峭。本教程的核心目标是带你从零开始系统性地掌握 ComfyUI 工作流的搭建逻辑覆盖从静态图像生成到动态视频、短剧制作的完整链路。对于想要深入本地 AI 内容创作的开发者或创作者而言ComfyUI 的价值在于其“可视化编程”的特性。你可以通过连接不同的功能节点精确控制生成流程的每一个环节实现批量处理、复杂条件控制以及与其他工具如 After Effects, Blender的集成。这不仅是简单的工具使用更是一种创作范式的转变。本文将重点拆解几个核心场景如何搭建基础的文生图、图生图工作流如何利用 AnimateDiff 等插件实现图生视频如何通过“首尾帧”控制技术构思并生成长视频或短剧内容以及如何管理模型、插件和应对常见的显存与部署问题。无论你是想制作 AI 营销视频、探索 AI 短剧还是希望将 AI 生成能力集成到自己的项目中这篇文章都将提供一套可落地的实操指南。1. 核心能力速览在深入细节之前我们先通过一个表格快速了解 ComfyUI 及其生态的核心能力与门槛这有助于你判断是否值得投入时间学习。能力项说明与评估核心定位基于节点的 Stable Diffusion 高级图形界面用于可视化搭建 AI 图像/视频生成工作流。主要功能文生图、图生图、局部重绘、高清修复、ControlNet 控制、LoRA 模型调用、AnimateDiff 视频生成、视频插帧、批量任务等。硬件门槛GPU 是关键。最低建议 6GB 显存可运行基础模型。流畅进行图生视频或高分辨率生成建议 8GB 或以上显存。显存不足是常见瓶颈。启动方式通常通过命令行启动python main.py或使用第三方整合包如秋叶整合包提供的一键启动脚本。接口能力原生支持 HTTP API 和 WebSocket API可被 Python、JavaScript 等程序调用适合集成到自动化流程或应用中。批量任务核心优势之一。通过工作流可以轻松设计循环、条件分支实现对输入图片列表、提示词列表的批量处理效率远高于手动操作。学习曲线较高。需要理解节点连接逻辑、数据流Latent, Image, Conditioning以及各类模型Checkpoint, VAE, LoRA, ControlNet的作用。适合场景本地化、定制化要求高的 AI 内容生产需要复杂流程控制或批量处理的商业项目希望深入理解 Stable Diffusion 生成流程的技术爱好者。2. 适用场景与使用边界ComfyUI 的强大在于其灵活性但并非所有场景都适合。明确它的边界能帮助你更高效地利用它。它非常适合以下场景精细化内容创作需要对生成过程的每一步进行微调例如结合多个 ControlNet、动态调整提示词权重、混合不同 LoRA 风格。批量内容生产制作电商产品图、社交媒体配图、短视频素材需要为大量输入生成风格统一的输出。AI 视频/短剧实验利用 AnimateDiff 及相关插件探索文生视频、图生视频并尝试通过工作流控制视频的连贯性与剧情。工作流研究与分享将成功的生成流程保存为.json或.png工作流文件便于复现、分享或作为更复杂流程的模块。后端服务集成将其作为 API 服务部署为自有应用提供稳定的 AI 生成能力。它可能不是最佳选择如果你追求极简开箱即用只想快速点几下鼠标出图不关心过程。WebUI 可能更友好。硬件资源极其有限在显存小于 4GB 的电脑上体验会非常吃力大部分视频生成功能无法运行。拒绝学习新概念不愿意花时间理解“采样器”、“调度器”、“潜空间”等基础概念以及节点连接逻辑。重要的合规与伦理边界使用 ComfyUI 生成内容你必须时刻牢记版权与肖像权生成内容若涉及模仿特定艺术家风格或使用真人肖像需确保拥有合法授权或符合合理使用范畴商用需格外谨慎。内容安全不得生成任何违反法律法规、公序良俗的内容。尽管有些模型或 LoRA 声称“无限制”但使用者自身需承担内容合规责任。隐私保护进行换脸如使用 Reactor 节点或声音克隆时必须获得被模仿者的明确授权严禁用于欺诈、诽谤等非法用途。技术滥用不得利用该技术制作虚假信息、进行网络攻击或任何其他非法活动。3. 环境准备与前置条件开始搭建工作流之前确保你的本地环境已就绪。以下是通用的检查清单。1. 硬件与驱动显卡 (GPU)NVIDIA GPU 是首选因为 CUDA 加速对 Stable Diffusion 至关重要。确认你的显卡驱动已更新至较新版本。显存 (VRAM)这是硬指标。打开任务管理器或使用nvidia-smi命令查看可用显存。8GB 是进行视频生成的舒适起点6GB 可尝试基础图像生成4GB 及以下将面临巨大挑战。内存 (RAM)建议 16GB 或以上处理高分辨率图片或视频序列时内存消耗较大。存储空间至少预留 20GB 以上空间用于安装 Python、ComfyUI 本体以及基础模型。如果计划下载多个大模型每个可能 2-7GB则需要 100GB 空间。2. 软件基础Python需要 Python 3.10 或 3.11。不推荐使用 Python 3.12 或更高版本因为许多深度学习库的兼容性可能尚未跟上。可通过python --version检查。Git用于克隆 ComfyUI 仓库及管理插件。确保已安装并能正常使用。CUDA 与 cuDNN如果你使用 NVIDIA 显卡需要安装对应版本的 CUDA 工具包。通常通过安装 PyTorch 时会自动解决依赖但若遇到问题可能需要手动安装。使用nvidia-smi查看驱动支持的 CUDA 最高版本。3. 网络条件首次运行需要下载模型文件如 Stable Diffusion 基础模型、VAE、ControlNet 等文件体积巨大数GB至数十GB请确保网络通畅。部分资源可能需要通过特定渠道获取。4. 安装部署与启动方式ComfyUI 的安装主要有两种路径纯手动安装追求最新和纯净使用整合包追求便捷和开箱即用。这里分别介绍。方案一使用秋叶一键整合包推荐新手这是最快捷的方式集成了 ComfyUI 本体、常用插件、汉化以及启动器。获取整合包从可靠的来源如秋叶大佬的发布页下载最新的 ComfyUI 整合包。解压运行将压缩包解压到不含中文和特殊字符的路径下。进入解压后的文件夹。一键启动找到启动器或run开头的批处理文件如run_nvidia_gpu.bat双击运行。启动器通常会帮你检查环境、安装缺失依赖并启动服务。访问 WebUI启动成功后命令行窗口会显示访问地址通常是http://127.0.0.1:8188。在浏览器中打开此地址即可。方案二手动安装适合开发者/追求定制克隆仓库git clone https://github.com/comfyanonymous/ComfyUI cd ComfyUI创建虚拟环境可选但推荐python -m venv venv # Windows 激活 venv\Scripts\activate # Linux/Mac 激活 source venv/bin/activate安装依赖pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 以 CUDA 12.1 为例 pip install -r requirements.txt下载模型将你的 Stable Diffusion 模型文件.safetensors或.ckpt放入ComfyUI/models/checkpoints/目录。VAE 模型放入models/vae/LoRA 放入models/loras/ControlNet 放入models/controlnet/。启动服务python main.py --port 8188你可以通过--listen参数让服务在局域网中可访问通过--highvram或--lowvram控制显存策略。首次启动常见问题端口冲突如果默认端口 8188 被占用启动时会报错。修改启动命令中的--port参数例如改为--port 7890。缺失节点/插件启动后加载工作流时如果出现“Missing Nodes”红色提示意味着当前工作流使用了未安装的插件。需要根据提示的插件名通过 ComfyUI Manager 或手动 git clone 到ComfyUI/custom_nodes/目录下进行安装。5. 功能测试与效果验证安装成功后我们通过搭建几个核心工作流来验证功能。我们从简到繁确保每个环节都能跑通。5.1 基础文生图工作流搭建这是所有操作的起点理解这个流程是后续进阶的基础。清空画布打开 ComfyUI 后在空白处右键选择“清空”。添加核心节点加载模型右键 -加载器-Checkpoint加载器。在节点中选择你的基础模型。正向提示词右键 -条件-CLIP文本编码器。将节点连接到模型节点的CLIP输出。负向提示词同样添加一个CLIP文本编码器用于输入不希望出现的内容。空潜空间右键 -潜在-空潜空间。设置生成图片的宽度和高度如 512x768。K采样器右键 -采样-KSampler。这是生成的核心。VAE解码右键 -潜在-VAE解码。保存图像右键 -图像-保存图像。连接节点将Checkpoint加载器的MODEL输出连接到KSampler的model输入。将Checkpoint加载器的CLIP输出分别连接到两个CLIP文本编码器的clip输入。将正向CLIP文本编码器的conditioning输出连接到KSampler的positive。将负向CLIP文本编码器的conditioning输出连接到KSampler的negative。将空潜空间的latent_image输出连接到KSampler的latent_image。将KSampler的LATENT输出连接到VAE解码的samples输入。将Checkpoint加载器的VAE输出连接到VAE解码的vae输入。最后将VAE解码的IMAGE输出连接到保存图像的images输入。参数设置与生成在KSampler中设置steps采样步数如20、cfg提示词相关性如7.5选择sampler采样器如euler和scheduler调度器如normal。在正向提示词节点输入描述如masterpiece, best quality, 1girl, in a garden。在负向提示词节点输入通用负面标签如lowres, bad anatomy, worst quality, low quality。点击右下角的提示词队列按钮。如果一切正常你将看到进度条并在ComfyUI/output目录下找到生成的图片。5.2 进阶图生图与ControlNet控制在文生图基础上引入图片输入和控制网络。加载图片右键 -图像-加载图像上传你的参考图。添加ControlNet预处理假设使用 Canny边缘检测控制。右键 -条件-Canny边缘检测预处理。将加载的图片连接到其image输入。添加ControlNet应用节点右键 -条件-ControlNet应用。需要连接control_net从Checkpoint加载器旁添加一个ControlNet加载器节点并加载你的 Canny ControlNet 模型。image连接Canny边缘检测预处理输出的IMAGE。positive/negative分别连接到原有的正向/负向CLIP文本编码器输出的conditioning上。strength控制强度通常设为 0.5-1.0。修改采样器输入将ControlNet应用输出的positive和negative连接到KSampler取代原来直接来自 CLIP 文本编码器的连接。调整潜空间不再使用空潜空间而是使用VAE编码节点。将加载的图片和 Checkpoint 的 VAE 连接到VAE编码将其输出的LATENT连接到KSampler的latent_image。这样就从原图开始生成。生成测试设置一个与图片相关的提示词点击生成。观察生成结果是否在保持原图构图边缘的基础上改变了内容。5.3 图生视频AnimateDiff工作流搭建这是实现 AI 视频的关键。你需要先安装 AnimateDiff 插件通常整合包已包含。基础流程在文生图工作流基础上进行修改。添加运动模块右键 -生成-AnimateDiff 加载器。选择运动模型如mm_sd_v15_v2.ckpt。右键 -生成-ADE_AnimateDiff 上下文选项。设置context_length上下文长度影响连贯性如16、frame_rate帧率如8。连接与替换将AnimateDiff 加载器的MOTION_MODULE输出连接到ADE_AnimateDiff 上下文选项的motion_module。将ADE_AnimateDiff 上下文选项的MOTION_MODULE输出连接到KSampler的model输入。注意这里不是直接连接而是需要通过一个AnimateDiff 应用节点右键 -生成-AnimateDiff 应用来将运动模块注入到原始模型中。更常见的流程是使用AnimateDiff 加载器与AnimateDiff 提示词调度等节点组合。调整潜空间将空潜空间的batch_size设置为视频总帧数如context_length的值。这样采样器会一次性生成一个潜空间序列。使用VAE解码批次将KSampler输出的LATENT连接到一个VAE解码批次节点而不是普通的VAE解码以解码出图像序列。保存视频将VAE解码批次输出的IMAGE连接到一个保存动画或VHS_VideoCombine等节点需安装对应插件最终输出视频文件。测试生成输入提示词点击生成。这个过程显存消耗很大首次测试建议将帧数batch_size和分辨率设小。5.4 “首尾帧”控制长视频/短剧思路生成长视频的挑战在于显存和一致性。一种实用策略是“首尾帧控制”概念不一次性生成整个长视频而是先使用文生图生成视频的“关键帧”如开头、中间转折点、结尾确保这些关键帧在构图、角色上符合剧情。工作流设计生成首尾帧使用基础的文生图或图生图工作流配合精确的提示词和 ControlNet生成代表剧情段落的几张关键图片。帧间插值使用专门的视频插帧模型如 RIFE, FILM或 AnimateDiff 的帧插值功能在两张关键帧之间生成平滑的过渡帧。这需要将首帧和尾帧作为输入。串联成片将各段生成的视频片段按顺序拼接起来。这可以在 ComfyUI 内通过某些节点完成或导出序列帧后在专业视频软件如 Premiere, DaVinci Resolve中完成。音频与字幕在视频软件中添加配音、音效和字幕。ComfyUI 生态中也有 TTS 和字幕生成插件但通常集成在更复杂的工作流中。优势此方法将长视频生成拆解为多个可控的短序列生成任务大幅降低了单次生成的显存压力并允许对每个剧情段落进行独立的质量控制和调整。6. 接口 API 与批量任务ComfyUI 不仅是可视化工具更是强大的自动化引擎。6.1 HTTP API 调用ComfyUI 启动后其 WebUI 背后是一套完整的 API。获取工作流 API 格式在 WebUI 中搭建好工作流后点击右侧的“保存API格式”按钮会下载一个.json文件。这个文件包含了所有节点和连接的详细信息。Python 调用示例import requests import json import io from PIL import Image # ComfyUI 服务器地址 server_address http://127.0.0.1:8188 # 1. 加载你保存的 API 格式工作流 JSON 文件 with open(你的工作流.json, r, encodingutf-8) as f: workflow json.load(f) # 2. 你可以通过修改 workflow 字典中的特定节点值来动态改变输入 # 例如找到提示词节点的 ID修改其 “text” 字段 # 这需要你查看 JSON 结构来确定节点 ID 和字段名 def set_prompt(workflow_data, node_id, new_prompt): for node in workflow_data.values(): if isinstance(node, dict) and node.get(_meta, {}).get(title) CLIPTextEncode: # 这是一个简化的查找逻辑实际需要根据你的工作流结构调整 if node.get(id) node_id: node[inputs][text] new_prompt return workflow_data # 3. 将工作流提交给 ComfyUI 执行 def queue_prompt(workflow_data): p {prompt: workflow_data} data json.dumps(p).encode(utf-8) resp requests.post(f{server_address}/prompt, datadata) return resp.json() # 4. 获取生成结果 def get_image(prompt_id, output_node_id): history requests.get(f{server_address}/history/{prompt_id}).json() images [] for node_id, node_output in history[prompt_id][outputs].items(): if node_id output_node_id and images in node_output: for image in node_output[images]: data requests.get(f{server_address}/view?filename{image[filename]}subfolder{image[subfolder]}type{image[type]}).content images.append(Image.open(io.BytesIO(data))) return images # 使用示例 # updated_workflow set_prompt(workflow, clip_text_encode_node_id, a beautiful landscape) # result queue_prompt(updated_workflow) # prompt_id result[prompt_id] # images get_image(prompt_id, save_image_node_id) # for img in images: # img.save(output.png)注意实际调用需要精确匹配工作流 JSON 中的节点 ID 和结构上述代码仅为示意。6.2 批量任务处理利用 API 或工作流内部的循环机制可以轻松处理批量任务。方式一外部脚本循环调用 API。编写一个 Python 脚本读取一个包含所有提示词和参数的 CSV 或 JSON 文件循环调用上述 API并将输出图片保存到指定目录。方式二使用内置“批量加载”节点。一些插件提供了从文件夹加载多张图片的节点如LoadImageBatch结合Primitive节点控制循环索引可以在一个工作流内实现批量图生图。但这需要更复杂的工作流设计。关键点批量处理时务必加入错误处理和日志记录防止因单张图片生成失败导致整个任务中断。同时注意监控显存使用避免累积占用导致崩溃。7. 资源占用与性能观察高效使用 ComfyUI 离不开对资源占用的监控和优化。观察显存占用Windows打开任务管理器 - 性能 - GPU查看“专用 GPU 内存”的使用情况。命令行在终端使用nvidia-smi命令需安装 NVIDIA 驱动实时查看。ComfyUI 内部有些自定义节点或管理器可以显示显存使用情况。影响性能的关键参数分辨率 (Width/Height)这是显存占用的最大影响因素。分辨率翻倍显存消耗可能增加四倍。从 512x512 开始测试。批大小 (Batch Size)在文生图中一次生成多张图或在视频生成中的总帧数。直接线性增加显存占用。采样步数 (Steps)步数越多生成时间越长但对显存影响相对较小。模型复杂度使用大型基础模型如 SDXL比小型模型消耗更多显存。同时加载多个 LoRA 或 ControlNet 也会增加负担。降低显存占用的技巧使用--lowvram或--medvram参数启动这会改变模型加载策略以时间换空间。启用 CPU 卸载一些插件支持将部分模块如 VAE 解码卸载到 CPU 计算但这会显著降低速度。优化工作流避免在流程中同时保留多个高分辨率图像节点。及时使用图像 - 转换为 - 转换为 Latent等操作在潜空间进行处理。分步处理对于长视频务必采用“首尾帧”或分段生成策略。使用显存优化节点社区有诸如BNK_Empty Latent Image (Powerful)等节点提供更灵活的显存管理选项。8. 常见问题与排查方法遇到问题不要慌大部分都有解决方案。下表列出了典型问题及排查思路。问题现象可能原因排查方式解决方案启动后网页无法访问1. 端口被占用。2. 服务启动失败。3. 防火墙阻止。1. 查看命令行窗口有无报错。2. 使用netstat -ano | findstr :8188(Win) 检查端口。3. 尝试http://localhost:8188。1. 更换启动端口--port 7890。2. 根据命令行错误信息安装缺失依赖。3. 暂时关闭防火墙或添加规则。加载工作流时提示“Missing Nodes”工作流使用了未安装的自定义节点插件。查看红色提示框中缺失的节点名称。1. 使用ComfyUI Manager如果已安装搜索并安装缺失节点。2. 手动到 GitHub 搜索对应插件仓库克隆到custom_nodes目录并安装依赖。生成图片纯黑或纯灰1. VAE 未正确加载或连接。2. 模型文件损坏。3. 采样步数过低或 CFG 值异常。1. 检查VAE解码节点是否连接到正确的 VAE 输出。2. 尝试切换不同的 VAE 模型。3. 检查KSampler参数。1. 确保Checkpoint加载器的VAE输出连接到VAE解码。2. 重新下载模型文件或使用taesd等轻量VAE测试。3. 将steps调至20以上cfg调至7-9之间。生成图片崩溃或显存不足 (OOM)1. 分辨率过高。2. 批大小过大。3. 同时加载了过多大模型。1. 观察崩溃前的显存使用率。2. 尝试生成一张小图。1. 降低生成分辨率。2. 减少batch_size。3. 使用--medvram参数启动。4. 清理不必要的工作流分支。图生视频时人物/场景抖动严重1. 运动模型 (motion_module) 不匹配或质量差。2.context_length设置过小。3. 提示词控制力不足。1. 尝试不同的运动模型。2. 增加context_length如从16增至24。3. 使用 ControlNet如 Depth, OpenPose加强控制。1. 使用社区推荐的运动模型如mm_sd_v15_v2.ckpt。2. 结合AnimateDiff 提示词调度节点在不同帧使用不同提示词。3. 启用freeu等增强稳定性的插件。API 调用返回错误或超时1. 工作流 JSON 格式错误。2. 节点 ID 引用错误。3. 服务器端生成超时。1. 检查 API 请求的 JSON 结构。2. 在 WebUI 中先用相同参数测试成功。3. 查看 ComfyUI 服务端日志。1. 始终使用 WebUI 导出的 API 格式 JSON 作为模板。2. 在 API 调用中增加timeout参数。3. 对于长任务考虑使用 WebSocket 或轮询结果。生成的视频有严重闪烁视频帧间一致性差。检查是否使用了图生视频但未使用任何控制网络。1. 在 AnimateDiff 流程中引入ControlNet如 TemporalNet 专门用于视频。2. 降低cfg_scale值。3. 使用FreeU或StyleAlign等插件来增强一致性。9. 最佳实践与使用建议掌握基础后遵循一些最佳实践能让你的 ComfyUI 之旅更顺畅。项目文件管理工作流备份定期将成功的工作流通过保存JSON格式备份。JSON 格式便于版本管理和分享。资源分类在models目录下清晰分类存放checkpoints,loras,controlnet,vae,upscale_models等。可以使用子文件夹进一步管理。输入输出规范建立固定的input和output文件夹便于批量脚本处理。工作流搭建逻辑模块化思维将复杂流程拆解为功能模块如“提示词处理模块”、“ControlNet预处理模块”、“高清修复模块”分别搭建和测试再组合起来。善用“断点”在流程中间添加预览图像或保存图像节点可以检查中间结果方便调试。从简单开始任何新想法都先构建最小可行工作流MVP进行测试成功后再逐步增加复杂度。性能与稳定性小参数试跑使用新模型、新插件或新工作流时先用低分辨率如 512x512、低步数如 20、小批量1进行测试快速验证流程是否通畅。监控温度长时间批量生成时注意 GPU 温度保持良好的散热环境。定期更新通过 ComfyUI Manager 定期更新本体和插件但注意大版本更新前备份工作流因为节点接口可能变化。学习与社区利用示例多研究社区分享的工作流.json或.png文件这是最快的学习方式。关注日志命令行窗口的输出日志是排查问题的第一手资料遇到错误先仔细阅读日志。参与社区在 GitHub、Discord 或相关论坛上提问时提供你的工作流文件、错误日志和已尝试的步骤能更快获得帮助。从零开始学习 ComfyUI核心是理解其“数据流”思想。每一个节点都是一个函数连线就是数据管道。最初的困惑是正常的但一旦你成功搭建出第一个可控的工作流并看到它按照你的设计稳定输出结果那种成就感是使用自动化工具无法比拟的。无论是制作个性化的 AI 艺术还是构建自动化的内容生产管线ComfyUI 都提供了一个强大而自由的基础。建议从复现一个简单的文生图工作流开始确保每个连接都理解其意义然后再逐步挑战图生图、ControlNet最终迈向动态的视频生成领域。过程中显存管理是你始终需要关注的现实约束而社区共享的无数工作流则是你最好的学习资料库。