公司动态

ComfyUI 零基础入门:从节点工作流到 AI 视频生成的完整路径

📅 2026/8/30 9:16:59
ComfyUI 零基础入门:从节点工作流到 AI 视频生成的完整路径
打开 ComfyUI 的第一天很多人是崩溃的。界面里没有 WebUI 那种清爽的“提示词输入框 生成按钮”只有一张像电路图一样的画布上面布满了方块和连线。你可能会想这真的是个绘画工具吗是的它不仅是绘画工具而且很可能是未来几年里最值得动手掌握的 AI 视觉工作流工具。ComfyUI 的核心不是“生成一张图”而是“把生成过程拆成可编辑的节点再自由搭建成流程”。2027 年的今天AI 绘画和 AI 视频生成的门槛已经比两年前低了很多但真正让创作者拉开差距的已经不是谁的显卡更好而是谁更会搭工作流。这篇文章不会给你一本几百页的说明书而是用一条清晰的路线带你从零开始理解 ComfyUI 的核心逻辑走通第一个文生图工作流再延伸到 LoRA、ControlNet 和 AI 视频生成最后把最常见的坑都列出来。读完这篇文章你不一定能成为专家但一定不会再对着空白画布发懵。1. 这篇文章真正要解决的问题先说一个普遍的误区很多人以为学 ComfyUI就是学“怎么安装软件”“怎么下载模型”。其实安装只是最简单的一步真正难的是理解工作流的结构。如果你之前用过 Midjourney 或 Stable Diffusion WebUI你会发现它们是“填表式”的工具写好提示词点生成出图。ComfyUI 则完全不同它允许你把“加载模型”“写提示词”“设置采样步数”“保存图片”这些环节全部拆开然后像搭积木一样重新连接。这篇文章要解决的问题有三类认知问题ComfyUI 的节点和连线到底代表什么为什么它比 WebUI 更适合做视频和控制类任务操作问题从安装、启动到跑通第一条工作流中间有哪些关键步骤如何避免下载了一堆模型却不知道用哪个进阶问题如何搭建一个包含 LoRA、ControlNet 的实用工作流AI 视频工作流需要哪些必备组件显存不够时有哪些降级方案如果你是下面这类读者这篇文章应该能帮你省下不少时间用过 WebUI但经常被网上的复杂工作流图吓退想系统补上 ComfyUI 这一课。刚接触 AI 绘画直接想从 ComfyUI 入门但被各种版本和插件搞糊涂了。想用 ComfyUI 做视频生成但不知道本地画布、AnimateDiff 和最新视频模型之间是什么关系。2. ComfyUI 的核心概念节点、连线与工作流2.1 节点是什么一个“节点”就是工作流里的一个功能模块。比如“加载大模型”Checkpoint Loader是一个节点“写正向提示词”CLIP Text Encode是一个节点“保存图片”Save Image也是一个节点。每个节点做一件非常具体的事它接收上游传来的数据处理后传给下游。你可以把节点想象成工厂流水线上的一台台机器一台负责搅拌原料一台负责压制成型一台负责包装。所有机器串联起来就是一条完整的生产线。在 ComfyUI 里这条生产线叫做“工作流”Workflow。你画布上看到的所有方块和连线本质上是一张可编辑的生产流程图。2.2 数据在节点之间怎么流动节点之间的连线是有方向的一般从左侧输入从右侧输出。常见的三种数据类型MODEL模型整个生成过程的核心引擎负责理解提示词并生成潜空间特征。CLIP文本编码器把自然语言提示词转换成模型能理解的向量。VAE变分自编码器负责把潜空间数据解码为真实的像素图片。理解这三者的分工你就能看懂大部分工作流的结构。一个最简单的文生图工作流逻辑就是加载大模型 → 文本编码正向提示词 负向提示词→ 创建空白潜空间 → 采样器生成潜空间图像 → VAE 解码 → 保存图片2.3 ComfyUI 与 WebUI 的本质差异ComfyUI 更像“可视化编程”WebUI 更像“一键式工具”。很多人在 WebUI 里调整参数点击“生成”按钮后其实是软件内部帮你执行了一整套固定流程。你虽然能改提示词、步数、采样器但很难改变流程本身。ComfyUI 则把流程控制权交还给你。你想在采样之前插入一个 ControlNet想连续跑两次采样想把多张图拼接起来都可以通过连线实现。这意味着学习 ComfyUI 的曲线确实比 WebUI 更陡但它的上限也高得多。尤其是当你需要做精准控制、批量处理或视频生成时ComfyUI 几乎是当前本地工具里最合适的选择。3. 环境准备显卡、显存与本地部署方式3.1 硬件要求先看显存再看 GPU 型号ComfyUI 是本地部署工具对硬件有要求。对 2027 年的新手来说可以按这个标准判断轻度体验文生图分辨率 512-7684GB 以上显存可以跑但速度较慢建议 8GB 起步。日常使用文生图 LoRA ControlNet8GB 显存是入门底线12GB 以上更从容。AI 视频生成建议 12GB 以上显存。NVIDIA RTX 3060 12GB 是很多入门用户的选择能跑但需要控制分辨率、帧数和模型规模。需要说明的是NVIDIA 显卡在 AI 生成领域依然是首选因为 CUDA 生态和 PyTorch 的适配最成熟。如果只有核显或 AMD 显卡也不是完全不能用但大概率会有驱动和环境上的麻烦新手不建议走这条路。3.2 安装方式一整合包新手最推荐对完全没有命令行经验的新手最稳妥的方案是使用社区整合包。秋叶一键整合包ComfyUI 版本是中文社区里常见的打包方案它把 Python 环境、ComfyUI 主程序、常用自定义节点和部分模型封装在一起解压即可运行。使用整合包的注意事项下载后先看解压说明确认是否包含“启动脚本”和“模型放置目录”。整合包通常自带独立的 Python 环境不需要你手动安装 Python。遇到报错时优先去整合包作者提供的说明文档里找答案不要直接重装。3.3 安装方式二手动安装进阶推荐如果你有一定的 Python 基础或者以后想深度二次开发手动安装能让你更清楚每一步在做什么。核心步骤# 1. 克隆 ComfyUI 仓库 git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 2. 创建虚拟环境并安装依赖 python -m venv venv source venv/bin/activate # Windows 下为 venv\Scripts\activate pip install -r requirements.txt # 3. 启动 ComfyUI python main.py启动成功后浏览器访问http://127.0.0.1:8188就能看到工作台界面。3.4 模型目录在哪里ComfyUI 的模型目录默认在ComfyUI/models/下下面几个子目录需要记清楚目录名存放内容checkpoints主模型大模型如 SD1.5、SDXL 系列lorasLoRA 模型controlnetControlNet 模型vaeVAE 模型embeddings负面嵌入或文本反转模型diffusion_models扩散模型部分视频工作流和最新架构会用到下载模型之前先确认你下载的模型类型应该放进哪个目录否则加载时会找不到模型。4. 从零开始搭建第一个文生图工作流4.1 打开后的第一件事跑通默认工作流新安装的 ComfyUI 打开后画布上通常已经有一个默认工作流。请不要急着删掉先直接点击右侧或底部的“运行”按钮Queue Prompt。如果一切正常你会看到画布上的节点逐步亮起最后生成一张图片。此时祝贺你已经完成了 ComfyUI 的“Hello World”。接下来要做的是理解这个默认工作流里到底发生了什么。4.2 读懂一个文生图工作流的每个节点以常见的默认工作流为例通常包含以下节点节点类型作用关键参数Checkpoint Loader加载主模型ckpt_nameCLIP Text Encode编码正向提示词textCLIP Text Encode编码负向提示词textEmpty Latent Image创建空白潜空间widthheightbatch_sizeKSampler采样器seedstepscfgsampler_nameschedulerdenoiseVAE Decode潜空间解码为图片无Save Image保存图片filename_prefix其中最容易让新手困惑的是KSampler采样器。它的作用是在潜空间里通过逐步去噪的过程把随机噪声“演化”成符合提示词描述的图像。你可以暂时把它理解为“渲染引擎”它需要知道seed随机种子相同 seed 在相同条件下会生成相同结果。想要变化通常就改 seed。steps采样步数去噪迭代次数。步数太少会模糊太多会浪费时间常见设置在 20-30。cfg提示词引导系数数值越高图像越严格遵循提示词过高会导致色彩过饱和或伪影。常见设置在 5-8。denoise重绘幅度如果是文生图通常为 1如果是图生图降低它表示保留更多原图结构。4.3 动手搭建从空白画布搭一条完整链路不用怕搭工作流就像拼积木。你只需要按顺序把节点拖出来然后用鼠标从一个节点的输出口拖到另一个节点的输入口。CheckpointLoaderSimple ├─ MODEL → KSampler ├─ CLIP → CLIPTextEncode正向→ KSampler ├─ CLIP → CLIPTextEncode负向→ KSampler └─ VAE → VAEDecode → SaveImage EmptyLatentImage → KSampler一个完整的组装顺序双击画布空白处弹出节点搜索框。输入CheckpointLoaderSimple并回车把它放到画布上。搜索CLIPTextEncode添加两个分别作为正向和负向提示词输入。搜索EmptyLatentImage设置宽度 512、高度 512、批量大小 1。搜索KSampler设置 seed 为 12345steps 为 25cfg 为 7sampler_name 为dpmpp_2mscheduler 为karras。搜索VAEDecode和SaveImage。按照数据流方向把所有节点连起来输入一段简单提示词运行。如果连线正确你应该能在运行后看到一条完整的执行路径。运行失败的常见原因通常是节点类型不匹配比如把 CLIP 接到了 VAE 输入口、模型没放进正确目录、显卡显存不足。5. 工作流进阶LoRA、ControlNet 与批量生成5.1 加入 LoRA用轻量模型改变画风LoRALow-Rank Adaptation是一种轻量模型微调技术。在 ComfyUI 中加入 LoRA本质上是在 KSampler 之前把 LoRA 的权重叠加到主模型的 MODEL 和 CLIP 上。操作步骤确定主模型与 LoRA 的兼容性。比如 SD1.5 的 LoRA 不能用在 SDXL 主模型上。把 LoRA 文件放到ComfyUI/models/loras/。添加LoraLoader节点选择 LoRA 文件并设置strength_model模型权重强度和strength_clip文本编码器强度。像插线一样把原本从 Checkpoint Loader 直接到 KSampler 的 MODEL 和 CLIP 连线改为先经过 LoraLoader 再进入 KSampler。常见问题是“LoRA 加载了但看不出效果”。这时先确认权重强度是否太低一般 0.6-0.9 比较明显再确认提示词中是否写出了触发词LoRA 作者通常会提供推荐触发词。5.2 接入 ControlNet精准控制构图ControlNet 可以在生成时加入额外条件比如控制人物姿势、边缘线稿、深度信息等。以姿态控制为例工作流会变成CheckpointLoaderSimple → MODEL → ControlNetLoader加载控制模型 图像加载姿势参考图→ 预处理器 → ControlNet 应用节点 → KSampler涉及的关键节点ControlNetLoader加载 ControlNet 模型。预处理器从参考图中提取姿势骨骼或线稿。ControlNet 应用条件把处理后的条件数据注入采样过程。新手第一次接入 ControlNet 时最容易出错的是预处理器的输出类型与 ControlNet 模型要求的输入类型不一致。建议先从官方示例工作流开始跑通后再替换自己的图片。5.3 批量出图用 API 调用 ComfyUIComfyUI 本身也可以作为一个后端服务用你可以通过 HTTP API 提交工作流任务然后轮询获取结果。这对需要批量生成或集成到业务系统的场景非常有用。核心接口是POST /promptimport json import urllib.request server_address 127.0.0.1:8188 # 工作流 JSON 文件可以先在 ComfyUI 界面中通过“导出工作流”得到 with open(workflow.json, r, encodingutf-8) as f: workflow json.load(f) # 修改要调整的节点参数比如提示词节点 for node in workflow.values(): if node[class_type] CLIPTextEncode: node[inputs][text] a beautiful landscape, best quality payload json.dumps({prompt: workflow}).encode(utf-8) req urllib.request.Request( fhttp://{server_address}/prompt, datapayload, headers{Content-Type: application/json}, ) with urllib.request.urlopen(req) as resp: result json.loads(resp.read()) print(任务 ID:, result.get(prompt_id))提交成功后可以通过GET /history/{prompt_id}查看任务状态和输出结果。生产环境里建议把每次提交的 workflow 存一份副本并记录 prompt_id方便回溯。6. AI 视频工作流从关键帧到视频生成6.1 视频工作流和图像工作流有什么不同图像工作流的终点是“一张图”视频工作流的终点是“一系列连续的帧”。因此视频工作流通常会在图像工作流的基础上增加几个环节图像生成链路生成关键帧→ 帧间插值 / 视频模型生成 → 帧序列 → 视频编码 → 保存视频最简单的理解方式先确定关键帧的构图与风格再让模型生成中间帧最后把帧序列合成视频文件。6.2 常见的本地视频生成方案从 2025 年到 2027 年本地视频生成的方案已经非常多样。在 ComfyUI 生态中常见的有AnimateDiff基于 Stable Diffusion 的动画工作流。它把“时间”维度加入潜空间让同一套文生图模型生成连续帧。优点是社区工作流多、入门资料丰富缺点是帧间一致性和动作幅度需要调参。Wan 系列视频模型国内开源社区中的视频生成模型支持文生视频和图生视频对中文提示词理解较好逐渐成为本地视频工作流中的热门选择。其他基于扩散模型的视频方案不同模型的 ComfyUI 节点包不同但核心链路仍然是“文本/图像输入 → 视频扩散模型 → 帧序列 → 视频输出”。以 AnimateDiff 为例一个基础工作流一般需要加载主模型和 AnimateDiff 专用模型。设置视频长度帧数和分辨率。使用专门的采样流程生成帧序列。将帧序列通过视频编码节点保存为 MP4 或 GIF。6.3 显存不足时的降级方案很多新手问“3060 12GB 能跑视频吗”。从材料看12GB 显存属于入门水平可以跑但非常依赖参数控制。建议采用以下降级方案降低分辨率视频生成的分辨率越高显存占用呈平方级增长。先把分辨率降到 512 或 640 级别。减少帧数帧数直接决定时序维度的计算量。从 16 帧开始测试跑通后再增加。关闭无关插件画布上尽量只保留当前工作流用到的节点不要加载大量未使用的自定义节点。使用低显存优化选项部分节点支持lowvram或medvram模式可以在启动参数中配置。整合包一般也有相应的启动选项。视频生成是一个重资源任务实际迭代会很慢。建议先跑通一个小尺寸的完整流程确认效果后再逐步放大。6.4 视频工作流的保存与导出视频生成完成后会得到一系列帧图。ComfyUI 里通常会有专门的节点负责把帧序列编码成视频文件常见格式是 MP4H.264或 GIF。如果你在别人分享的工作流里找不到保存视频的节点可以尝试添加节点时搜索VHSVideoHelperSuite系列节点它提供了从帧序列合成视频的常用工具。要注意不同节点包的版本差异最好在 ComfyUI Manager 里先确认已安装的组件。7. 完整示例文生图工作流 JSON 与 API 批量生成7.1 工作流 JSON 长什么样ComfyUI 的工作流可以导出为 JSON 文件。下面是一个简化版文生图工作流的逻辑示例帮助你理解结构{ 1: { class_type: CheckpointLoaderSimple, inputs: { ckpt_name: your_model.safetensors } }, 2: { class_type: CLIPTextEncode, inputs: { text: a beautiful landscape, best quality, clip: [1, 1] } }, 3: { class_type: CLIPTextEncode, inputs: { text: blurry, low quality, clip: [1, 1] } }, 4: { class_type: EmptyLatentImage, inputs: { width: 512, height: 512, batch_size: 1 } }, 5: { class_type: KSampler, inputs: { seed: 12345, steps: 25, cfg: 7, sampler_name: dpmpp_2m, scheduler: karras, denoise: 1, model: [1, 0], positive: [2, 0], negative: [3, 0], latent_image: [4, 0] } }, 6: { class_type: VAEDecode, inputs: { samples: [5, 0], vae: [1, 2] } }, 7: { class_type: SaveImage, inputs: { filename_prefix: output, images: [6, 0] } } }这个 JSON 的实质是节点字典每个节点的inputs里的[1, 0]表示“引用 1 号节点的第 0 个输出”。理解这个格式后你就能用代码动态修改工作流参数了。7.2 完整批量生成脚本在 Python 中提交任务并等待结果import json import time import urllib.request import urllib.parse SERVER 127.0.0.1:8188 def queue_prompt(workflow): data json.dumps({prompt: workflow}).encode(utf-8) req urllib.request.Request( fhttp://{SERVER}/prompt, datadata, headers{Content-Type: application/json}, ) with urllib.request.urlopen(req) as resp: return json.loads(resp.read()) def get_history(prompt_id): with urllib.request.urlopen(fhttp://{SERVER}/history/{prompt_id}) as resp: return json.loads(resp.read()) def wait_for_result(prompt_id, timeout120): start time.time() while time.time() - start timeout: history get_history(prompt_id) if prompt_id in history: outputs history[prompt_id].get(outputs, {}) if outputs: return outputs time.sleep(3) raise TimeoutError(等待任务超时) if __name__ __main__: with open(workflow.json, r, encodingutf-8) as f: wf json.load(f) prompt_id queue_prompt(wf)[prompt_id] print(已提交任务:, prompt_id) result wait_for_result(prompt_id) print(任务完成输出信息:) print(json.dumps(result, indent2, ensure_asciiFalse))运行这个脚本的前提是 ComfyUI 已经启动并且workflow.json中的节点参数正确。如果返回 400 错误多半是 JSON 格式不对或节点引用的数据类型不匹配。7.3 如何验证生成结果判断工作流是否运行成功不能只看“有没有输出图片”还要关注以下指标执行时间如果某个节点执行时间异常长可能是模型太大或显存溢出。图片内容是否与提示词基本吻合有无明显畸变或色彩异常。日志输出ComfyUI 控制台会打印每个节点的加载时间和执行状态。如果某个节点报错控制台信息里一般会指明原因。8. 常见问题与排查方法这里整理了 ComfyUI 新手使用过程中最常见的几类问题建议收藏备用。问题现象可能原因排查方式解决方案启动后浏览器打不开端口被占用或服务未启动查看控制台是否显示Starting server确认端口 8188 是否被其他程序占用或修改启动参数换端口加载模型失败模型文件缺失或路径不对检查ComfyUI/models/checkpoints/是否存在模型下载模型放入正确目录确认文件名含中文时导致编码问题则重命名为英文弹窗提示“请安装缺失的包或节点”工作流使用了未安装的自定义节点查看弹窗提示的具体节点名通过 ComfyUI Manager 搜索并安装缺失节点也可手动将节点包放进custom_nodes/后重启生成速度极慢显存不足或模型过大打开任务管理器查看显存占用降低分辨率、减少 batch_size、或开启低显存模式显存溢出Out of Memory工作流包含多个高分辨率模型查看报错是否出现在特定节点降低分辨率关闭其他占显存程序必要时改用集成显卡布局为 GPU图中出现大量伪影或颜色异常cfg 过高或 sampler 不匹配尝试修改 KSampler 参数降低 cfg 到 5-7更换 sampler 为euler_a或dpmpp_2m图生图时形状变化太大denoise 过高查看节点传入的重绘幅度降低 denoise 到 0.3-0.6视频生成结果抖动剧烈帧间一致性不足检查 AnimateDiff 或视频模型参数调整运动强度、上下文长度、或改用更高质量的视频模型下载工作流后打开全是红色报错缺少自定义节点或模型逐个查看红色节点提示先装节点包再下载对应模型按工作流原作者的说明放置API 提交任务后无响应服务未启动或端口错误使用浏览器访问http://127.0.0.1:8188确认 ComfyUI 正常运行检查防火墙是否拦截 API 请求新手最需要注意的是不要在缺少自定义节点的情况下强行运行别人分享的工作流。先安装 ComfyUI Manager再用它来查询和安装缺失组件能省掉一半的报错时间。9. 实践建议与学习方向9.1 不要一上来就搭“大而全”的视频工作流正确路线是先跑通文生图再接入 LoRA 和 ControlNet最后尝试视频生成。每一步都要先复制一个可用的示例再改动参数最后再自己从零搭建。复制、运行、拆解、重建是学习 ComfyUI 最快的路径。9.2 善于收藏工作流但也要会拆工作流看到网上别人分享的工作流不要直接下载运行后就走。你可以把它看作“别人写好的代码”先跑通再逐个节点看它做了什么。这能帮你理解优秀工作流的设计思路也能帮你积累自己的节点库。9.3 注意模型版权和内容安全边界使用本地模型时要注意模型的许可协议。部分模型仅限研究用途商用需要单独授权。生成视频和图像时也应注意内容合规尤其是在公开平台发布或用于商业项目时需要确认素材授权和生成内容的使用边界。9.4 下一步值得深入的方向自定义节点开发如果你会 Python可以试着写一个简单节点理解 ComfyUI 的执行机制。这会让你的工作流能力提升一个档次。多模型协同工作流把多个不同功能的模型串联在一个工作流里比如先用 SDXL 生成人物再用修复模型放大最后用视频模型做成动态画面。API 与自动化集成把 ComfyUI 作为一个生成服务接入业务系统通过脚本批量提交任务、管理输出文件。家庭服务器部署如果有多张显卡或一台闲置服务器可以研究远程调用和任务排队让不同设备协同工作。ComfyUI 的学习曲线确实存在但它几乎会把 AI 视觉创作的所有控制权交到你手里。从“照着别人的工作流跑”到“搭建自己的生产链路”这个过程中积累的节点理解、参数调优和问题排查能力才是真正值钱的东西。建议你先从跑通默认工作流开始然后下载一个你感兴趣的风格 LoRA加进你的工作流里看看画面发生了什么变化。这一步走通之后ComfyUI 的大门就正式为你打开了。