单项目深读

ComfyUI:把 diffusion 流程拆成节点图,用连线替代脚本

ComfyUI 以节点图组织 diffusion 生成流程,采样、模型加载各为节点,改 prompt 或换模型只需调整连线。

|INS-0011

同一个采样器,同一组权重,同一条 prompt,为什么有人能十分钟内换三种 ControlNet 组合、切两版 LoRA 权重、再把整条链路回滚到昨天的状态,有人却要改五处脚本、重跑一遍全流程?差别不在模型,在流程的组织方式。

ComfyUI 的答案很直接:把生成流程拆成节点,用连线替代脚本。它在 GitHub 上拿到 138075 星、16451 个 fork,采用 GPL-3.0 许可,仓库创建于 2023 年 1 月,最近一次推送在 2026 年 10 月——这不是一个玩具项目的活跃度。下面拆开看它到底怎么组织这件事。

一、它把「脚本」换成了「图」

传统 diffusion 工作流是一段线性代码:加载模型 → 编码 prompt → 采样 → 解码 → 保存。每一步是写死的语句,改一个环节要么改参数、要么改代码结构。

ComfyUI 把每一步变成一个节点,节点有输入端口和输出端口,连线决定数据流向。README 对这套界面的定位是「a visual node graph for building and reusing image, video, audio, 3D, and text workflows without code」。关键在于 reusable——图可以被保存、被复用、被局部重算,而不是一次性脚本。

这带来三个直接后果,README 里都有对应描述:

  • 可复用子图(reusable subgraphs):一段常用链路可以打包成子图反复调用。
  • 局部重算(partial graph re-execution):改了下游某个节点,不必从头跑整张图。
  • JSON 存盘:workflow 以 JSON 保存和加载,甚至能从支持的生成媒体里恢复完整 workflow 和种子。

最后一条值得单独说:生成出来的图本身可以携带 workflow 与 seed 信息。这意味着「这张图是怎么来的」不再依赖人的记忆或外部文档,而是跟着产物走。

二、架构:三层协作,不是一个大单体

README 里明确写了三个相互关联的仓库,这实际上就是它的架构分层:

层仓库职责发布节奏
核心引擎ComfyUI Core推理执行、节点系统、模型加载、显存管理,是桌面版的基础约每 2 周一个稳定大版本(如 v0.7.0),补丁版本回移植到当前稳定版
桌面外壳Comfy Desktop用最新稳定核心构建发布版跟随核心稳定版
前端ComfyUI Frontend节点图画布与交互每 2 周以上合并进核心仓库,发布前特性冻结

这个切分方式说明一件事:推理引擎和界面是解耦的。核心仓库可以脱离 GUI 单独跑,前端以固定周期并入核心。README 里对「稳定版」的警告很实在——稳定 tag 之外的 commit 可能非常不稳定,会破坏大量自定义节点。这反过来证明自定义节点生态是深度依赖核心接口的。

核心引擎内部,从 README 的功能描述可以归纳出几条并行的职责线:

  • 执行调度:异步队列(asynchronous queueing)+ 局部图重算。
  • 内存管理:智能 VRAM / RAM 管理、模型 offload、量化模型支持。
  • 模型装载:既能加载完整 checkpoint,也能分开加载 diffusion model、VAE、text encoder、LoRA、ControlNet、adapter、upscaler。
  • 内置处理工具:inpainting、outpainting、reference conditioning、mask 与合成、模型合并、放大、补帧、分割、深度估计、媒体处理。
  • 对外接口:本地 API,把 workflow 接进生产管线。

其中最有分量的一条是 README 里那句「state of the art asynchronous weight streaming technology」——用异步权重流式加载,让最大的开源模型也能在低至 4GB 显存 + 8GB 内存上跑起来,并且是相对快速地跑、把 GPU 算力吃满。这不是靠裁剪模型换来的,而是靠权重在需要时才流入显存。对本地消费级硬件用户,这是 ComfyUI 区别于「云端跑大模型」路线的核心卖点。

数据流转大致是这样:前端把节点图序列化成 JSON → 核心解析成有向图,按依赖关系排入异步队列 → 执行时按需从磁盘/内存流式装载权重到显存 → 节点逐个产出张量或媒体 → 结果回传前端展示,同时可写入携带 workflow 元数据的媒体文件。改一个节点,只需重算它的下游子图,而不是整张图。

三、跑起来

README 给了三条路径,按上手成本从低到高:

  1. 桌面应用:Windows 与 macOS,官方称「最省事的开始方式」。
  2. 手动安装:覆盖所有操作系统与 GPU 类型——NVIDIA、AMD、Intel、Apple Silicon、Ascend。
  3. Comfy Cloud:官方付费云版本,面向没有本地硬件的用户。

手动安装的入口在 README 的 #manual-install-windows-linux 段(原文此处被截断,具体命令以仓库文档为准)。装好之后,最小可用流程就是打开画布、加载一个模板 workflow:


Ctrl + Enter          # 把当前图排入生成队列
Ctrl + Shift + Enter  # 插队,作为第一个执行
Ctrl + Alt + Enter    # 取消当前生成
Ctrl + S / Ctrl + O   # 保存 / 加载 workflow
Ctrl + B              # 旁路选中节点(等效于删掉该节点并把线重新接通)
Ctrl + M              # 静音 / 取消静音选中节点

Ctrl + B 的旁路语义很能说明这套设计的思路:节点不是代码里的一行,而是一个可以「拔掉再短接」的元件。想比较「加不加这个 LoRA」,不需要改任何文本,旁路一下即可。

运行模式上还有两个开关值得记住,README 特意区分了它们:

  • --offline:禁用可选的付费 Comfy API 节点,强制全部功能留在本地。
  • --disable-partner-nodes:只禁用 API 节点,其余不变。

配套的还有 extra_model_paths.yaml,用来把额外的模型目录挂进来,不必把权重搬进默认路径。

四、模型覆盖面:不止文生图

站内简介把 ComfyUI 描述为「基于节点图的 diffusion 模型 GUI 与后端」,最典型用法是本地文生图。但 README 的能力清单比这宽得多,且是按任务类型组织的:

任务类型代表模型(README 列举)
图像生成Stable Diffusion 1.5、SDXL、SD3.5、Flux.1、Flux.2、Qwen Image、Hunyuan Image 2.1、HiDream、Lumina Image 2.0 等
图像编辑Flux Kontext、Flux.2 Klein、Qwen Image Edit、HiDream E1.1 / O1、OmniGen2 等
视频生成Wan 2.1 / 2.2、LTX-Video 2 / 2.3、HunyuanVideo 1.5、CogVideoX、Cosmos Predict2、Mochi 等
音频与音视频MiniMax H3、LTX-AV;音频侧 ACE-Step 1.5、Stable Audio 3、MiniMax Music 3、Yue 2
3D 与视觉Hunyuan3D 2.1、TripoSplat、SeedVR2、SUPIR、Depth Anything 3、SAM 3 / 3.1、BiRefNet 等
文本生成Gemma 3 / 4、Qwen3、Qwen3.5、Qwen3-VL(含多模态输入)

README 自己也声明这只是代表性列表,完整可运行的模板在 workflow library 里维护。另外还有 partner nodes,用来接入闭源模型,例如 Nano Banana、Seedance、Hunyuan3D——这也是 --offline 存在的理由。

输出格式上,它支持高位深图像与视频:16 bit PNG、32 bit EXR、10 bit AVIF,以及多种 HDR 视频与图像格式。对需要进后期流程的视觉工作者,这比「能出图」重要得多。

五、和同主题项目比,差在哪

把 ComfyUI 放进这批 Python 深度学习项目里对照,定位差异立刻清晰:

项目定位与 ComfyUI 的差别
ComfyUI节点图驱动的 diffusion 生成引擎以可视化图组织流程,聚焦生成类模型与本地推理
Keras开发者友好的深度学习框架统一 API、可切 TensorFlow / JAX 后端,面向「写代码搭网络」;ComfyUI 面向「连线搭流程」
UltralyticsYOLO 系列训练/验证/推理统一接口几行代码加载权重做检测、分割、姿态估计;任务是判别式视觉,不是生成
yolov5PyTorch 目标检测全流程封装数据加载、训练、导出 ONNX;ComfyUI 不负责训练检测模型
Supervision可复用 CV 工具库提供标注绘制、区域统计等组件,配合检测模型做可视化;ComfyUI 是端到端生成引擎
Real-Time-Voice-Cloning语音克隆工具把说话人编码、TTS、声码器串成固定流程;ComfyUI 的流程是可自由重组的图

一句话概括:Keras、Ultralytics 这类项目把「模型怎么定义、怎么训」抽象掉,ComfyUI 把「生成流程怎么编排、怎么复用、怎么省显存」抽象掉。前者服务训练与推理代码,后者服务创作流程本身。

六、它真正补的空

回到开头那个问题。ComfyUI 补的不是「又一个 diffusion 前端」,而是三件在脚本时代没人管的事:

流程作为一等产物。 workflow 是 JSON,能存、能载、能从生成媒体里恢复。流程本身可版本化、可分发给别人。

执行是增量式的。 异步队列加局部图重算,让「只改一处」真的只跑一处。

硬件门槛被显存管理拉低。 异步权重流式加载让 4GB 显存也能跑大模型,这是本地创作路线成立的前提。

再叠上 App Mode——把复杂 workflow 收进一个简单 UI——和本地 API 端点接生产管线,它同时覆盖了「研究者折腾」和「团队交付」两端。

代价也写在 README 里:稳定 tag 之外的 commit 可能破坏大量自定义节点。节点生态越繁荣,接口稳定性就越值钱,这也是它维持约两周一个稳定版本、补丁回移植的原因。