ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

ComfyUI工作流从零搭建:从文生图到AI视频生成全攻略

ComfyUI工作流从零搭建:从文生图到AI视频生成全攻略 很多新手拿到 ComfyUI 之后第一反应是“界面怎么全是线和节点”完全不知道从哪里下手。网上能搜到的资料虽然多但要么是零散的节点介绍要么直接扔一个复杂工作流让人导入导入后又报错缺少模型、缺少节点、显存不够各种问题堆在一起很难坚持下去。本文打算从零开始用完整、可跟随的思路把 ComfyUI 的工作流搭建过程拆开讲解覆盖环境安装、节点概念、文生图实战、AI 视频工作流搭建以及高频报错的排查方法。不管你是想学 AI 绘画还是想尝试 AI 视频生成都可以先照着本文把基础打牢。1. 为什么要学 ComfyUI 工作流1.1 什么是 ComfyUIComfyUI 是一个基于节点和连线来组织 AI 生成流程的图形化工具底层借助 Stable Diffusion 等扩散模型完成图像或视频生成。传统 WebUI 把参数集成在一个网页表单里而 ComfyUI 把生成过程拆成一个个独立节点例如“加载模型”“输入提示词”“采样器”“解码图片”等节点之间通过连线传递数据。这样做的好处很直接流程透明你看到的每一个节点、每一个参数都是生成过程中的一环。控制力强可以精确控制模型加载、采样策略、潜空间尺寸、降噪强度等细节。可复用性高工作流导出为一个 JSON 文件发给别人就能复现同样的生成流程。自定义空间大安装自定义节点后几乎可以把 ControlNet、LoRA、AnimateDiff、局部重绘等能力都拼接到一张画布上。对习惯了 WebUI 表单操作的人来说ComfyUI 需要一点适应时间但一旦熟悉节点逻辑你会发现它很适合做复杂生成任务的串联与批量处理。1.2 适合哪些读者本文的内容主要面向三类读者零基础新手完全没接触过本地 AI 绘画想从安装到出图走通一遍。用过 WebUI 但想转向 ComfyUI 的玩家已经了解提示词、模型基础但不熟悉节点式工作流。想尝试 AI 视频生成与工作流复用的开发者希望从一张图或一段提示词生成短视频并把流程保存下来反复使用。如果你手里是 NVIDIA 显卡例如 3060、4060 等 8G 到 12G 显存体验会顺畅很多。如果是核显或老显卡也能运行但速度会偏慢需要调整模型分辨率和参数。1.3 学完能获得什么完成本文的学习后你至少能掌握几件事正确安装本地 ComfyUI 环境分清不同安装方式的适用场景。理解 ComfyUI 中常见节点的作用例如加载器、CLIP 文本编码、采样器、VAE 解码。从零搭出一个文生图工作流并保存为可复用的 JSON 文件。了解 AI 视频工作流的基本结构跑通 AnimateDiff 或同类视频生成方案。遇到“缺少模型”“显存不足”“导入失败”等报错时能按排查思路自己解决。2. 环境准备与安装2.1 硬件与显存要求ComfyUI 的核心计算依赖显卡尤其是 NVIDIA 显卡的 CUDA 加速。按照目前的常见配置可以大致参考下面的经验显卡情况能做什么建议NVIDIA 4G 显存SD 1.5 低分辨率出图建议加--lowvram分辨率控制在 512 附近NVIDIA 8G 显存SD 1.5 流畅SDXL 可尝试最推荐的入门门槛NVIDIA 12G 显存SDXL、多个视频模型低分辨率生成3060 12G 是常见选择无 NVIDIA 显卡只能 CPU 慢速出图不推荐视频生成可先学节点逻辑上面提到的 3060 是玩本地 AI 绘画比较常见的卡12G 显存版本在跑 AnimateDiff 这类视频模型时可以生成低分辨率、较短帧数的视频但不要抱太高期待。视频生成比较吃显存实际效果由分辨率、帧数、模型结构共同决定。2.2 软件安装方式对比ComfyUI 的安装方式主要有三种这里按适合人群排列安装方式优点缺点推荐人群一键整合包内置 Python、Git、常用插件解压即用版本可能滞后新手官方 Git 源码更新方便能紧跟最新功能需要自己配 Python 环境进阶用户Docker / 远程容器环境隔离便于迁移显卡透传配置复杂开发调试场景新手最推荐使用秋叶整合包这类一键整合包原因是它解决了大多数环境问题预装好 Python、Git、PyTorch 和常用插件解压后启动脚本就能进入网页界面。文章发布时间较久后整合包版本可能会变化所以安装时注意看说明尽量选择更新日期较近的版本。如果你选择官方源码方式可以按下面的思路准备环境# 以 Windows 为例先安装 Python 和 Git再执行 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI python -m venv .venv .venv\Scripts\activate pip install -r requirements.txtLinux/macOS 的差异主要在虚拟环境激活命令例如 macOS 使用source .venv/bin/activate。无论哪种方式都要记住 ComfyUI 本身是不断更新的开源项目依赖版本会变遇到问题先看官方仓库的 README。2.3 启动与访问安装完成后启动 ComfyUI 的方式python main.py启动成功后终端通常会出现一行地址To see the GUI go to: http://127.0.0.1:8188用浏览器打开这个地址就能看到 ComfyUI 的节点编辑画布了。默认端口是 8188如果你电脑装了其他服务占用端口也可以通过参数修改python main.py --port 8189对新手来说第一次打开界面时不需要着急先熟悉画布、节点面板、菜单栏的位置。ComfyUI 没有像传统软件那样提供“新建文档”按钮它默认打开的是一个基础工作流可以直接从那个基础工作流开始上手。3. ComfyUI 核心概念与节点解析3.1 节点与连线的整体逻辑可以把 ComfyUI 理解成一条“数据流水线”。每个节点是一个加工步骤节点与节点之间的连线是数据传输通道。以最基础的文生图流程为例加载模型节点输出 checkpoint 数据。正负提示词通过 CLIP 文本编码节点转换为模型能理解的条件数据。空潜空间节点定义一个初始噪声图。采样器节点接收模型、条件数据、初始噪声逐步去噪。VAE 解码节点把潜空间张量解码成像素图。保存图片节点把结果写到磁盘。如果只记一个概念那就记住“潜空间”扩散模型并不是直接操作像素而是在一个压缩后的潜空间里做去噪。很多人不理解为什么需要 VAE 解码就是因为采样器的输出并不是一张可以直接查看的图片必须先解码。3.2 常见基础节点说明Load Checkpoint加载模型节点这个节点负责加载 Stable Diffusion 等模型的主文件也就是日常生活中常说的“大模型”或“底模”。它通常有三个输出MODEL用于采样推理的模型组件。CLIP用于文本编码。VAE用于像素与潜空间之间转换。有些新模型格式使用独立加载器例如 FLUX 系列需要分别加载 UNET/DiffusionModel、CLIP、VAE这类工作流更复杂但核心逻辑一致。新手先掌握 checkpoint 加载即可。CLIP Text Encode提示词编码节点把自然语言提示词转换成条件向量。ComfyUI 里通常需要两个一个给正向提示词一个给反向提示词。反向提示词的作用是告诉模型“不要出现什么”例如低质量、畸形、模糊等。Empty Latent Image空潜空间节点定义初始画布大小和批次数量。文生图时Sampler 会在这个尺寸的噪声张量上开始去噪。宽高数值建议按照模型训练分辨率选择SD 1.5 常见 512x512SDXL 常见 1024x1024。数值设置得过高且显存不够时很容易 OOM。KSampler采样器节点整个流程的核心包含以下常见参数steps采样步数默认 20数值越高通常越精细但耗时也更长。cfg提示词相关度俗称 CFG过大会导致颜色过饱和过小会导致画面松散。sampler_name采样算法名例如 dpmpp_2m、euler。scheduler调度器例如 karras、normal。denoise降噪强度文生图时通常为 1图生图时小于 1 可以保留原图结构。VAE DecodeVAE 解码节点把潜空间数据还原为像素图像没有这个节点你看不到最终图片。Save Image / Preview Image保存/预览节点保存图片到ComfyUI/output目录或在页面里直接预览输出。3.3 工作流文件与导入方式ComfyUI 的工作流本质上是一个 JSON 文件里面保存了节点位置、节点参数、连线关系、模型名称等信息。你把别人的工作流 JSON 拖进页面就能复现对方的画布布局和参数设置。新手下载到工作流文件后通常会遇到几种情况正常导入所有节点和连线都完整。提示缺少自定义节点需要去custom_nodes目录安装对应插件。提示缺少模型文件需要把对应模型下载后放入指定目录。工作流文件本身不包含模型文件所以换电脑后必须重新准备模型。这也是新手最容易忽略的一点工作流能打开不代表能直接出图模型缺失时会在运行时的那一步报错。4. AI 绘画实战从零搭一个文生图工作流4.1 构建基础节点下面我们从零开始搭一个最简单的文生图工作流。默认画布上有一个基础工作流如果你已经改乱了可以先清空画布重新添加节点也可以用右上角菜单的“Load Default”恢复默认。先从左键双击画布空白处弹出节点搜索框然后依次添加以下节点Load CheckpointCLIP Text Encode正向CLIP Text Encode反向Empty Latent ImageKSamplerVAE DecodeSave Image节点添加完成后按下图逻辑连线Load Checkpoint 的 MODEL 输出连接到 KSampler 的 model 输入。Load Checkpoint 的 CLIP 输出连接到两个 CLIP Text Encode 节点的 clip 输入。Load Checkpoint 的 VAE 输出连接到 VAE Decode 节点的 vae 输入。正向提示词节点输出连接到 KSampler 的 positive 输入。反向提示词节点输出连接到 KSampler 的 negative 输入。Empty Latent Image 输出连接到 KSampler 的 latent_image 输入。KSampler 的 output 输出连接到 VAE Decode 的 samples 输入。VAE Decode 的 image 输出连接到 Save Image 的 images 输入。这个流程图可以用一句话概括模型、条件、初始噪声一起进入采样器采样结果解码后保存。4.2 配置提示词与采样参数在正向提示词节点里输入一句简单描述例如a cute cat wearing a wizard hat, soft lighting, highly detailed, masterpiece反向提示词节点输入lowres, bad anatomy, bad hands, blurry, watermark, text如果你对负面提示词不太熟悉可以先用比较通用的负面词集合后面再根据出图效果单独调整。Empty Latent Image 设置宽高SD 1.5 模型建议 512x512批次数可以先保持 1。KSampler 建议参数steps: 20 cfg: 7 sampler_name: dpmpp_2m scheduler: karras denoise: 1这些参数不是固定的同一种模型搭配不同采样器效果会有差异。新手可以先保住“能出图”再逐步尝试不同组合。4.3 运行工作流并查看结果点击面板上的“Queue Prompt”排队运行按钮或者按快捷键 CtrlEnterComfyUI 会执行整个流程。运行过程中可以看到节点边框变成进度状态采样节点会显示当前采样进度。完成后Save Image 节点会显示生成的图片预览。生成的图片默认保存在ComfyUI/output目录下文件名会自动带上日期时间和种子信息。如果你在 KSampler 上把 seed 固定同一套参数下次生成时就能得到类似结果如果你希望每次随机seed 可以设为随机值。4.4 工作流示例 JSON下图展示的是核心结构如果你只是想快速测试也可以直接复制下面的 JSON 片段导入 ComfyUI。因为不同版本节点 id 可能会变化这段内容主要用来理解工作流的存储格式实际导入时建议在编辑器里生成后导出一份你自己的模板。{ last_node_id: 7, nodes: [ { id: 1, type: CheckpointLoaderSimple, pos: [100, 100], size: [210, 98], inputs: [], outputs: [ { name: MODEL, type: MODEL }, { name: CLIP, type: CLIP }, { name: VAE, type: VAE } ], widgets_values: [model.safetensors] }, { id: 4, type: EmptyLatentImage, pos: [400, 350], size: [315, 150], widgets_values: [512, 512, 1] }, { id: 5, type: KSampler, pos: [400, 100], size: [315, 262], widgets_values: [0, 20, 7, dpmpp_2m, karras, 1] } ], links: [ [1, 1, 0, 5, 0, MODEL], [4, 4, 0, 5, 2, LATENT] ] }真实完整的工作流 JSON 会比这长很多因为每个节点都要保存坐标、尺寸、连线数组等。但核心思想一致节点数据 连线关系共同描述整个生成流程。日常使用中通过界面导出即可不用手写 JSON。5. AI 视频工作流实战5.1 AI 视频生成的主流方案ComfyUI 中的 AI 视频生成通常可以分为几类方案AnimateDiff在 SD 1.5 模型基础上增加运动模块通过连续帧生成动画视频。Wan 2.1、LTX Video、CogVideoX 等原生视频生成模型直接通过文本或图像生成视频。逐帧图生图 后期合成把视频拆帧逐帧处理后再组装适合风格化改造。不同方案的节点插件、模型目录、显存占用都不太一样。跑视频工作流之前建议先能稳定运行文生图工作流因为大部分视频工作流底层架构与文生图类似都是“模型加载 - 采样 - 解码”区别在于多了一个时间维度的帧处理。对 3060 12G 显卡来说AnimateDiff 是一种相对容易入手的方案主要用来生成短视频片段或 GIF常见做法是先生成初始帧或直接用文本引导再让运动模块生成连续动画。缺点是分辨率太高、帧数太长时很容易爆显存。5.2 视频工作流的核心节点一个典型的 AnimateDiff 视频工作流会包含以下部分加载 checkpoint 模型方式与文生图一致。加载运动模块通过 AnimateDiff LoRA 或专门的 AnimateDiff 加载器连接模型。设置视频长度frame count和帧率。采样器连续去噪输出潜空间视频帧。VAE 解码所有帧。保存视频节点把帧序列编码为视频文件。如果使用原生视频生成模型流程会有些不同。以 Wan 2.1 为例通常还需要独立的文本编码器例如 T5 系列。独立的 VAE视频 VAE 与图片 VAE 结构不一样。专门的采样参数对步数、cfg 设置有自己的推荐值。因为这部分模型更新很快、不同日期模型的部署方式也不同具体参数要以官方工作流模板为准。你可以通过 ComfyUI 官方示例库或模型仓库附带的 prompt 文件来获取最新的推荐配置。5.3 视频保存与合成方法ComfyUI 里如果只保存图像帧会出现在output目录下的一批图片里。如果需要合成视频常见做法在 ComfyUI 中安装支持视频输出的自定义节点直接在节点上输出 mp4。把生成的帧图片保存到本地后用 FFmpeg 命令行合成。FFmpeg 是视频处理常用工具合成帧序列的命令大致如下ffmpeg -framerate 8 -i frame_%05d.png -c:v libx264 -pix_fmt yuv420p output.mp4其中-framerate 8表示每秒 8 帧frame_%05d.png表示文件名按数字序列排列例如frame_00001.png。如果你的帧命名方式不同需要调整匹配规则。如果视频帧数量不多也可以直接使用一些自定义节点输出 GIF更适合短视频裂变场景。GIF 清晰度不如 MP4但不需要额外安装编码器。5.4 视频工作流缺包报错的应对很多视频工作流导入后会出现类似这样的提示请安装缺失的包以使用此工作流这说明工作流里的自定义节点或 Python 依赖没有被完整安装。一般有几种原因没有安装对应自定义节点插件。插件已安装但 Python 依赖缺失。需要额外下载运动模块或视频 VAE 模型。排查建议查看日志确认是哪个节点导入失败。去ComfyUI/custom_nodes目录检查对应插件是否下载完整。查看插件作者提供的 requirements 说明在 Python 环境中执行安装。以 Python 环境安装依赖为例在项目根目录下激活虚拟环境后执行pip install -r custom_nodes/某插件目录/requirements.txt视频类插件通常对 PyTorch、Transformers、safetensors、OpenCV 等依赖有要求如果版本和主程序冲突最好在插件作者的问答区或仓库 Issue 里搜索现成解决方案。6. 模型管理与工作流工程化6.1 模型文件放在哪里ComfyUI 对模型目录有约定同一类模型必须放到指定目录否则加载节点里看不到对应文件。常见目录如下模型类型放置目录大模型/底模ComfyUI/models/checkpointsLoRA 模型ComfyUI/models/lorasVAE 模型ComfyUI/models/vaeText Encoder / CLIPComfyUI/models/clipAnimateDiff 运动模块ComfyUI/models/animatediff_modelsControlNet 模型ComfyUI/models/controlnet视频模型ComfyUI/models/diffusion_models或对应插件的模型目录不要把 LoRA 放到 checkpoints 目录里也不要因为找不到模型就把文件放到任意目录。ComfyUI 加载节点下拉列表中的模型名称实际读取的就是这些约定目录。如果你下载了模型但下拉列表不刷新可以点击节点上的刷新按钮或重启 ComfyUI。如果刷新后仍然看不到检查文件扩展名是否满足要求例如.safetensors、.ckpt、.pt。6.2 工作流的版本管理与复用随着节点变多、参数越调越复杂工作流本身也需要维护。建议把工作流 JSON 文件纳入 Git 管理这样做有几个好处可以回滚到之前能出图的版本。可以比较不同版本之间参数差异。方便团队共享与评审。在 ComfyUI 里也可以利用“小组件”或 Subgraph 功能把一套常用节点封装成组拖拽复用。比如把“放大高清”流程封装成一个子图后续文生图、图生图都能直接复用。6.3 通过 API 提交工作流ComfyUI 不仅仅是一个图形工具它还提供了 API 模式方便程序化提交生成任务。新手可以先知道这个能力后续做自动化或网站集成时非常有用。ComfyUI 启动后API 服务默认监听在 8188 端口。可以通过 Python 的 requests 库提交一个工作流对象。import json import requests # 假设你已经导出了工作流的 API 格式 JSON with open(api_format_workflow.json, r, encodingutf-8) as f: workflow json.load(f) # 修改提示词这里以节点 id 为 6 的 CLIPTextEncode 为例 workflow[6][inputs][text] a beautiful landscape, sunset response requests.post( http://127.0.0.1:8188/prompt, json{prompt: workflow} ) print(response.json())这里要注意的是ComfyUI 界面导出的 JSON 有两种格式一种是界面完整格式另一种是 API 格式。调用/prompt接口时需要使用 API 格式两者字段结构不同不能混用。上面的代码只是一个思路示意正式使用时需要先看工作流的节点 id 和字段名。7. 常见问题与排查思路下面把新手阶段最容易遇到的问题整理成一张排查表。7.1 高频问题汇总表问题现象常见原因解决思路导入工作流后提示缺节点缺少自定义节点插件在custom_nodes目录安装对应插件加载节点下拉列表里没有模型模型没放到对应目录把模型放进正确目录并刷新节点运行时提示CheckpointLoaderSimple找不到文件模型文件名不匹配确认工作流所引用模型已下载名称一致采样时显存不够OOM分辨率/批次数/视频帧数太高调低分辨率、batch_size、开启--lowvram生成图片全黑或全灰VAE 未连接或模型文件损坏检查 VAE 链路重新下载模型出图速度特别慢未使用显卡加速或模型太大检查启动日志确认 PyTorch 是否识别 GPU视频生成出现花屏运动模块与底模不匹配更换兼容模型或检查 AnimateDiff 版本中文提示词无效模型对中文理解弱先用中文翻译成英文提示词再细化描述工作流能打开但运行某个节点报错节点缺少依赖包进入 Python 环境安装 requirements7.2 典型报错拆解以一个常见现象举例Error: Cannot locate model, please check the model path.这类报错通常出现在加载节点上。第一步不是重新下载模型而是先确认工作流所引用的文件名是什么再到对应目录目录下查找。ComfyUI 不会自动下载模型所有模型都必须自己准备。如果模型文件确实存在检查文件名是否包含空格或中文ComfyUI 对不同系统路径支持有差异建议统一改为英文字母命名。另一个常见问题是在 Windows 下遇到路径过长报错。ComfyUI 的 custom_nodes 节点目录结构往往很深Windows 默认路径长度限制可能触发错误。解决方法是开启 Windows 长路径支持。把 ComfyUI 整个目录放在磁盘根目录下例如D:\ComfyUI而不是放在多层文件夹内。避免把模型目录嵌套过深。7.3 显存不足的实战调整顺序如果你遇到显存不足可以按这个顺序依次调整采样器里的 batch_size 降到 1。图像宽高降低例如 512 降到 384。视频生成场景下帧数从 16 降到 8。启动命令追加--lowvram或--novram。更换更轻量的模型。python main.py --lowvram--lowvram让 ComfyUI 按需加载模型层到显存速度会下降但能解决部分 OOM 问题。--novram甚至可以在显存很小的情况下运行但速度更慢。8. 性能优化与工程建议8.1 生成速度优化在硬件不变的情况下可以从几个方面优化步数不是越多越好20 到 25 步已经能覆盖大部分模型。高分辨率放大可以分两步先生成低分辨率图再用放大模型或图生图放大而不是直接挑战高分辨率采样。如果只是测试提示词效果先把分辨率降低等测试稳定后再正式生成。视频生成优先使用短帧数调整提示词效果最终出片时再增加帧数。采样器选择也很关键。dpmpp_2m 是综合表现不错的默认选择euler 更快但细节略粗。不同模型有自己的“舒适区”建议固定底模后多试几组采样器组合找到自己的常用组合。8.2 工作流结构设计随着节点增多画布会变得很乱。建议养成几个习惯给节点分组例如用颜色区分“输入”“处理”“输出”。把固定模板保存成独立工作流文件而不是每次从零搭建。使用 Reroute 节点整理连线避免线跨越过于混乱。在节点标题里标注用途比如“主图生成”“面部修复”“放大输出”。好的工作流不是节点越多越好而是每个节点都有明确职责。阅读别人工作流时可以先把整体流程截图再顺着连线看数据是怎么一步步流转的。8.3 安全与合规提醒本地部署 ComfyUI 并不代表可以随意生成任何内容。无论使用哪种模型都必须遵守法律法规和平台使用规范。这里特别强调几点不要生成涉及违法或违规的内容也不要传播此类工作流文件。下载模型时选择官方或可信渠道避免下载被植入恶意代码的模型文件。自定义节点本质上是在本地执行 Python 代码来源不明的节点可能包含恶意逻辑不要随意加载陌生人分享的自定义节点包。工作流 JSON 也可能被构造为恶意文件导入前先检查节点类型确认没有可疑节点。如果开发 API 服务一定要加权限校验和内容安全过滤避免服务被滥用。安全意识和生成能力同样重要。能在本地跑通 AI 绘画不代表可以无限度地生成和传播合规使用是底线。8.4 进一步工程化方向入门后如果想往工程方向发展可以按顺序研究ComfyUI Manager统一管理自定义节点的安装、更新和缺失检测。批量生成通过批处理或 API 脚本批量读取提示词列表生成图片。多卡/远程部署把 ComfyUI 部署到服务器提供 API 服务。工作流模板系统沉淀团队内部常用工作流统一模型命名与目录规范。与业务系统集成生成图片后自动上传对象存储写入数据库对接业务链路。这些方向并不需要立刻掌握但了解之后你会发现 ComfyUI 不只是“画画工具”它也可以成为 AI 内容生产链路的一个执行引擎。9. 总结与学习路线从环境安装到节点理解从文生图实战到视频工作流搭建这篇文章把 ComfyUI 的核心路径完整走了一遍。现在你应该明白了ComfyUI 的工作流本质就是“数据在节点间流动”模型加载、文本编码、采样、解码、保存每个节点各司其职理解这个骨架后再复杂的自定义节点也只是往骨架上添肉。建议接下来的学习顺序是先用稳定的文生图工作流跑 50 张图熟悉提示词影响和采样器参数差异。学习图生图、局部重绘、ControlNet让生成从“碰运气”变成“可控”。下载并拆解一个开源工作流观察别人如何组织节点学习参数配置思路。训练自己的 LoRA让模型认识特定角色或风格。再回到视频工作流用 AnimateDiff 或原生视频模型生成短视频片段逐步增加帧数和分辨率。每一步都可以在 ComfyUI 的官方文档、开源社区的示例工作流以及模型发布页找到对应资料。遇到问题不要慌先把报错日志贴到搜索引擎确认模型、节点、依赖三个环节绝大多数问题都能定位。如果你顺利跑通了第一个工作流恭喜你已经迈过了最难的阶段。接下来就是不断开放思维、多尝试不同节点组合的过程祝你在 ComfyUI 里玩得开心。
返回列表