⬡ 节点流学园

🧱 01-基础

ComfyUI 是什么:节点式的生成式 AI 工作台

入门全景节点式界面开源工具

一句话定义

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解码] ←── (潜空间)

引擎的三个关键行为:

  1. 拓扑执行:按依赖排序,被依赖的先跑,没有循环依赖。
  2. 子图缓存:每个节点的输出被缓存;队列新任务时,上游输入没变的节点直接复用结果。
  3. 队列(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 从哪来,凭什么赢。

自测题

  1. ComfyUI 自身包含扩散模型吗?模型从哪里来?
  2. 为什么改了提示词后,重新运行时"加载模型"节点不会重新执行?
  3. 保存的工作流以什么形式存在?有哪两种获取/分享方式?
  4. 数据流编程与你熟悉的过程式编程,核心差异是什么?
参考答案
  1. 不包含。模型是独立文件(.safetensors 等),下载后放入 models/ 对应目录。
  2. 执行引擎做了子图缓存:上游输入未变化的节点直接复用上次的输出。
  3. 保存为 .json 文件;同时 ComfyUI 会把工作流内嵌到生成 PNG 的元数据里,把图片拖回画布即可恢复。
  4. 数据流以"图 + 数据沿边传播"为核心,执行顺序由依赖决定并可缓存;过程式按语句顺序执行、状态由变量维护。

与其他知识点的关系

延伸阅读

前置知识

无

关联知识点

节点与工作流的心智模型:端口、连线与执行界面导览:画布、侧栏、队列与模板历史与生态格局:ComfyUI 从哪来,凭什么赢