ComfyUI:用节点图驱动 AI 内容创作的模块化引擎
posts posts 2026-08-09T03:22:48+08:00ComfyUI 是一个基于节点图界面的 AI 内容创作引擎,支持图像、视频、3D、音频等多种模态的模型编排。本文解析其节点图架构设计、模型支持范围与本地运行能力。技术笔记ComfyUI, AI图像生成, 节点图, 扩散模型, 开源先看结论
ComfyUI 解决的不是"给扩散模型加个界面",而是把一次生图从"一段跑完就扔的脚本"变成"一张可编辑、可复用、可分享的图"。它把模型推理的每一步——加载检查点、文本编码、采样、VAE 解码——都拆成独立节点,用户连线编排,系统按拓扑序执行。界面只是入口,真正的工作发生在节点之间的数据流上。
这套设计带来三个直接结果:
- 换模型只动一个节点:从 SDXL 换到 Flux.2,替换加载节点即可,其余结构不动
- 工作流可序列化为 JSON:既能保存复用,也能通过 API 远程驱动
- 改参数只重跑受影响子图,不必整个流程从头再来
ComfyUI 用 Python 编写,以 GPL-3.0 许可发布,截至本文写作时在 GitHub 上获得超过 13 万 Star。展开细节之前,先把它拆成四层,后面各节都对应其中一层:
| 层级 | 负责什么 | 典型组件 |
|---|---|---|
| 前端画布 | 节点编排、连线校验、参数编辑 | Web 前端、节点类型注册表 |
| 后端执行 | 队列调度、拓扑排序、部分图重执行 | 执行器、异步队列 |
| 模型层 | 模型加载、文本编码、采样、解码 | Load Checkpoint、KSampler、VAE Decode |
| 生态层 | 自定义节点、模板、App Mode、API | Custom Nodes、工作流模板 |
读完全文,你应该能说清这四层各自的工作方式,并能判断自己该不该自建一套。
节点图架构:从画布到推理
ComfyUI 的界面是一张无限画布。用户从搜索面板拖出节点,用连线(Wire)把上游节点的输出端口连到下游节点的输入端口,形成一张有向无环图(DAG)。按下 Ctrl+Enter 后,系统对这张图做拓扑排序,依次执行每个节点。
每个节点只声明输入类型和输出类型,连线合法性由系统自动校验——类型不匹配的端口连不上。这一步把"参数传错"这类错误从运行时提前到了编辑时。复杂工作流因此保持可读:看得见的数据流,就是执行顺序。
一个典型的文生图工作流:
- Load Checkpoint 加载
.safetensors模型文件,输出 MODEL、CLIP、VAE 三个对象 - CLIP Text Encode 接收 CLIP 对象和提示词文本,输出条件向量(Conditioning)
- Empty Latent Image 生成一张空白潜空间图像,指定分辨率
- KSampler 接收 MODEL、正向条件、负向条件、潜空间图像,执行扩散采样
- VAE Decode 把采样后的潜空间数据解码为像素图像
- Save Image 保存结果到磁盘
一条任务如何流过系统
以"把 SDXL 工作流换成 Flux.2 重新出图"为例,看各层如何配合:
- 用户在画布上把 Load Checkpoint 节点从 SDXL 检查点切换为 Flux.2 检查点
- 前端把改动提交给后端,后端重新校验下游连线的类型兼容性(Flux 系模型通常不需要负面条件)
- 拓扑排序后只重跑受影响子图——从新的 Load Checkpoint 开始,经文本编码、采样到 VAE 解码,其余节点不动
- 结果图片保存,同时把整张工作流图(模型路径、提示词、采样参数、随机种子)写进 PNG 元数据
这条路径串起了三套机制:连线校验保证图始终合法,部分图重执行避免全量重跑,PNG 元数据让结果可以完整复现。
模型支持:广度与分层
ComfyUI 原生支持的模型覆盖当前主流生成模型家族,按模态大致分为:
| 模态 | 代表模型 |
|---|---|
| 图像生成 | Stable Diffusion 1.5 / SDXL / SD3.5、Flux.1 / Flux.2、Qwen Image、Z-Image、Hunyuan Image 2.1 |
| 图像编辑 | Flux Kontext、Qwen Image Edit、OmniGen2 |
| 视频生成 | Wan 2.1 / 2.2、LTX-Video 2 / 2.3 / 2.5、HunyuanVideo 1.5 |
| 音频生成 | ACE-Step 1.5、Stable Audio 3、MiniMax Music 3 |
| 3D 与视觉 | Hunyuan3D 2.1、TripoSplat、SAM 3 / 3.1、Depth Anything 3 |
| 文本生成 | Gemma 3 / 4、Qwen3 / Qwen3.5(含多模态输入) |
除了开源模型,ComfyUI 还通过 API Nodes 接入按调用计费的闭源模型(如 Nano Banana、Seedance、Wan 3.0、Hunyuan3D)。这些节点需要联网且可能产生费用;想完全离线使用,启动时加 --disable-api-nodes 参数即可屏蔽所有付费 API 节点。
模型文件不限于完整检查点,也支持分散加载:Text Encoder、VAE、LoRA、ControlNet、Adapter、Upscaler 都能作为独立节点接入,按需组合。extra_model_paths.yaml 配置允许指定额外的模型目录,方便与 Automatic1111 WebUI 等其他工具共享模型文件。
本地执行与资源管理
执行层有几个关键设计:
- 异步队列:生成任务排队执行,不阻塞 UI 线程,提交后可以继续编辑工作流
- 部分图重执行:只重新执行受影响的子图,参数微调不必从头跑
- 显存管理:自动检测可用 VRAM,在 GPU 和 CPU 之间做模型卸载(Offload),让显存有限的设备也能跑大模型
- 量化支持:支持 FP8、GGUF 等量化格式,进一步降低显存占用
显存卸载把本地运行的门槛从"显存够大"压到"显存够用"。GPU 覆盖 NVIDIA、AMD、Intel、Apple Silicon(通过 MPS 后端)以及华为昇腾(Ascend)。最低 PyTorch 版本要求 2.7,官方建议用更新版本以启用完整优化;NVIDIA 20 系及以上还需要 cu130 以上的 PyTorch。
安装方式
三种安装路径:
桌面应用(推荐新手):从 comfy.org/download 下载,支持 Windows 和 macOS(Apple Silicon),安装过程最简单。
Windows 便携包:从 GitHub Releases 下载 .7z 压缩包,解压后直接运行,自带 Python 3.13 和 PyTorch。分 NVIDIA、AMD、Intel 三个版本。
手动安装(全平台):
git clone https://github.com/Comfy-Org/ComfyUI
cd ComfyUI
pip install -r requirements.txt
python main.py也可以用官方 CLI:
pip install comfy-cli
comfy install安装后默认监听 http://127.0.0.1:8188,浏览器打开即可看到节点图编辑器。
工作流的保存与复用
工作流以 JSON 格式保存,包含节点类型、参数和连线关系。一个实用能力:生成的 PNG 文件内嵌完整工作流元数据,把图片拖回编辑器就能恢复整个工作流(包括模型路径、提示词、采样参数和随机种子),复现和分享都很直接。
此外,Subgraph 功能允许把一组节点封装成单个自定义节点,在多个工作流中复用;App Mode 则把复杂工作流暴露为简化界面,非技术用户填几个输入框就能使用。
版本节奏
ComfyUI 迭代很快,大版本间隔常在两三天到一周,具体节奏随模型适配调整。截至本文写作时最新版本为 v0.34.1(2026 年 8 月 26 日发布)。
项目由三个相互关联的仓库构成:
- ComfyUI Core:推理引擎和节点系统(即本文介绍的仓库)
- Comfy Desktop:桌面应用封装
- ComfyUI Frontend:Web 前端界面,定期合并进 Core 仓库
适用边界与采用顺序
ComfyUI 适合需要对生成过程精细控制的人:调参、切换模型、组合 ControlNet、设计复杂工作流。如果只是输入提示词快速出图,Automatic1111 WebUI 或模型官方 Demo 更直接;如果连本地环境都不想搭,直接用在线平台。
按场景决定先上哪套:
- 本地创作者:从桌面应用或便携包开始,跑官方模板,再逐步引入自定义节点
- 开发者:用手动安装,通过 API 把工作流嵌进自己的服务
- 只做轻量尝试:先别装,用云端在线版验证工作流是否满足需求,再决定是否自建
自定义节点生态(Custom Nodes)是另一大优势,社区贡献了大量扩展节点,覆盖后处理、动画、批量处理等场景。但非稳定版本 Core 可能与部分自定义节点不兼容,生产工作流建议钉在稳定版上。
常见问题
想完全离线、不产生 API 费用? 启动参数加 --disable-api-nodes,付费 API 节点会被整体屏蔽。
显存不够跑大模型? 依次尝试:用 FP8 / GGUF 量化版本、启用动态显存卸载、降低输出分辨率、用分块(Tiled)VAE 解码。
想和 A1111 WebUI 共用模型文件? 在 extra_model_paths.yaml 里把模型目录指到同一个路径,两边都能读到。
浏览器打不开页面? 默认端口是 8188,先确认端口没被占用,再检查服务是否真的启动成功(终端最后几行会打印监听地址)。
自定义节点装不上或报错? 多数情况是依赖冲突或版本不兼容,先看该节点的 README 要求的 Python / PyTorch 版本,再对照自己环境;确认在稳定版 ComfyUI 上运行。
结尾判断
回到开头那句判断:ComfyUI 把"推理管线"变成了"可编辑对象"。节点图让它可组合,JSON 序列化让它可复用,PNG 元数据让它可复现。要不要自建,取决于你是否需要这份控制力;需要,它就是当前最完整的开源选择之一。
项目地址:github.com/Comfy-Org/ComfyUI · 官网:comfy.org · 许可证:GPL-3.0
参与讨论
使用 GitHub 登录。欢迎补充事实、异议与实践。
讨论暂时无法加载。