一句话定义
ComfyUI 是由开发者 comfyanonymous 于 2022 年底开源的节点图(node graph)式生成式 AI 工作台:把生成一张图像/视频所需的每道工序(加载模型、编码提示词、采样去噪、解码保存)做成一个"节点",用连线把节点拼成一张工作流,程序按依赖关系调度执行——它本身不包含任何模型,只负责编排。
为什么重要
- 新模型的事实标准接口:Flux、SD3、Qwen-Image、Wan、HunyuanVideo 等新模型发布时,官方几乎都先给出 ComfyUI 工作流。读懂它,你就拥有了"即插即用一切新模型"的能力。
- 把黑盒变成透明管线:按钮式工具把"生成"藏在一个按钮后面;节点图让你看见数据从噪声到图像的每一步,出问题时能定位到具体环节。
- 可保存、可分享、可自动化:一张工作流就是一个 JSON 文件,能发给别人复现,也能交给 API 批量执行——这是它区别于普通工具的工程价值。
- 学习扩散模型的最好教具:想理解潜空间、CLIP、采样器这些概念,没有比亲手把节点连起来更直观的方式。
前置知识
无。会安装软件、会用浏览器即可。
核心概念
- 节点(Node):一道工序。左侧是输入端口(吃什么),右侧是输出端口(吐什么),中间是参数控件(比如步数、种子)。
- 连线(Link):端口之间的有向数据流。类型严格匹配:模型端口(紫色)只能连模型端口,图像端口只能连图像端口。
- 工作流(Workflow):整张图。保存为
.json,或直接内嵌在生成的 PNG 里。 - 执行引擎:点击"运行"后,程序从输出节点反向找到依赖,按拓扑顺序执行,并缓存未变化的部分——只改提示词时,加载模型的节点不会重跑。
原理与机制
ComfyUI 采用数据流编程(dataflow programming)范式:程序 = 图,执行 = 沿边传播数据。这与传统命令式编程(写一行跑一行)不同,与电子表格(改一格,依赖它的格子自动重算)更接近。
提示词 ──┐ ┌── 图像
├─→ [条件编码] ─→ [采样器] ─┤
模型 ────┤ (条件) (去噪) └── 保存
└─→ [VAE解码] ←── (潜空间)引擎的三个关键行为:
- 拓扑执行:按依赖排序,被依赖的先跑,没有循环依赖。
- 子图缓存:每个节点的输出被缓存;队列新任务时,上游输入没变的节点直接复用结果。
- 队列(Queue):多次点击运行会排队,可长时间无人值守批量生成。
公式 / 模型 / 图示
一个最小工作流的依赖关系:
Load Checkpoint ──MODEL──→ KSampler ──LATENT──→ VAE Decode ──IMAGE──→ Save Image
│├──────CLIP──→ CLIP Text Encode(正) ──CONDITIONING──↗ ↑
│└──────CLIP──→ CLIP Text Encode(负) ──CONDITIONING──↗ │
└───────VAE───────────────────────────────────────────────────┘
Empty Latent Image ──LATENT──→ KSampler直观类比
- 菜谱流水线:每个节点是一道工序(备菜、炒制、装盘),连线是传递食材的传送带。菜谱(工作流)可以写下来发给别人,照着做就能得到同一道菜。
- 电子表格:B2 = A2×2,改 A2 只重算 B2——ComfyUI 改提示词只重跑采样,不重载模型。
实例与案例
- 默认安装自带的文生图模板,5 个节点即可出图,是所有人的起点(见 第一个文生图工作流解剖)。
- 社区工作流往往几十上百个节点(如带面部修复、放大、多 ControlNet 的电商图管线),但拆开看仍是同样的"工序 + 传送带"。
- 开发者 comfyanonymous 最初只是想让 Stable Diffusion 的采样过程可见可调,这个个人项目后来成为整个生态的枢纽(历史见 历史与生态格局:ComfyUI 从哪来,凭什么赢)。
常见误区
- "ComfyUI 里内置了模型":错。它只是编排器,模型是独立下载的文件(见 模型文件与目录组织),没模型只能画图不能生成。
- "节点画布上的左右位置 = 执行顺序":执行顺序由连线依赖决定,与摆放心位置无关(但整齐的布局确实利于阅读)。
- "节点式比按钮式高级,所以人人该用":它牺牲了上手速度换取灵活性;如果你只是偶尔生成图片,WebUI 类工具更省事。选型对比见 历史与生态格局:ComfyUI 从哪来,凭什么赢。
自测题
- ComfyUI 自身包含扩散模型吗?模型从哪里来?
- 为什么改了提示词后,重新运行时"加载模型"节点不会重新执行?
- 保存的工作流以什么形式存在?有哪两种获取/分享方式?
- 数据流编程与你熟悉的过程式编程,核心差异是什么?
参考答案
- 不包含。模型是独立文件(.safetensors 等),下载后放入
models/对应目录。 - 执行引擎做了子图缓存:上游输入未变化的节点直接复用上次的输出。
- 保存为
.json文件;同时 ComfyUI 会把工作流内嵌到生成 PNG 的元数据里,把图片拖回画布即可恢复。 - 数据流以"图 + 数据沿边传播"为核心,执行顺序由依赖决定并可缓存;过程式按语句顺序执行、状态由变量维护。
与其他知识点的关系
- 节点与工作流的心智模型:端口、连线与执行 是它的展开:节点、端口、执行引擎的完整心智模型。
- 安装与首次启动:三种途径与硬件对照 / 界面导览:画布、侧栏、队列与模板 把"是什么"落地为"装起来、看得懂"。
- 历史与生态格局:ComfyUI 从哪来,凭什么赢 回答"它从哪来、凭什么成为标准"。
延伸阅读
- 官方仓库 README:github.com/comfyanonymous/ComfyUI
- 官方文档入门:docs.comfy.org
- 官方博客(版本发布公告):blog.comfy.org
前置知识
无
关联知识点
节点与工作流的心智模型:端口、连线与执行界面导览:画布、侧栏、队列与模板历史与生态格局:ComfyUI 从哪来,凭什么赢