☰
ComfyUI实战:从零搭建节点式AI工作流,实现步骤图与API批量生成
2026/10/8 6:08:05 网站建设 项目流程

这次我们来看一个很实用的方向:用 ComfyUI 搭建人工智能工作流,并把它整理成步骤图、时间线、节点式组网的形式,直接用于 AI 初创公司、SaaS 平台和科技公司的技术方案演示与内部流程复用。

很多团队一提到“工作流”,第一反应是 n8n、Coze、Dify 这类流程编排平台。但如果你做的是 AI 图像、视频、音频生成类业务,ComfyUI 反而是更值得关注的节点式组网引擎。它的每一个节点就是一个功能模块,节点之间连的线就是数据流转关系,这本质上就是一张“人工智能流程图”。你搭好一套工作流之后,既能手动调试,也能批量跑任务,还能通过 API 暴露给上层系统调用,和“步骤图时间线”“关系网服务网络”这些概念天然对齐。

这篇文章不是只讲理论,而是带你把下面这串事情完整走一遍:怎么安装 ComfyUI 环境、怎么从零搭建一个节点式 AI 工作流、怎么把流程保存成可复用的模板、怎么通过 API 接入批量任务,以及怎么把工作流整理成步骤图 / 时间线给团队和客户看。如果你正好在 AI 初创公司或 SaaS 团队,这篇文章可以直接收藏。

1. 核心能力速览

能力项说明
项目类型节点式 AI 工作流引擎 + 可视化流程设计
核心概念节点式组网、步骤图、时间线、数据流关系
主要功能文生图、图生图、局部重绘、批量生成、API 调用
适用对象AI 初创公司、SaaS 平台、科技公司、独立开发者
部署方式本地部署 / 服务器部署 / 云端 GPU 实例
启动方式命令行启动、启动脚本、一键整合包
浏览器访问默认 WebUI 地址http://127.0.0.1:8188
是否支持 API支持,/prompt提交任务,WebSocket 监听进度
是否支持批量任务支持,队列机制可连续提交多个任务
显存需求需按实际模型版本测试,不同模型差异较大
是否支持 CPU部分节点可跑 CPU,但图像模型建议使用 GPU
适合场景技术方案演示、AI 内容批量生产、内部流程编排、原型验证

从项目形态来看,ComfyUI 最大的价值不是“生图”,而是把 AI 能力拆成可复用的节点。你不必每次重新写推理代码,只要调整连线,就能组合出全新的处理流程。这个思路和 SaaS 平台的“服务网络”概念很像:节点就是微服务,连线就是服务之间的调用关系。

2. 适用场景与使用边界

先说清楚这个东西适合谁。

如果你在 AI 初创公司做产品原型,需要在几天内把“输入图片 → 预处理 → 模型推理 → 后处理 → 输出结果”的流程跑通,ComfyUI 是效率很高的选择。你不用先写一整套后端推理服务,先在 ComfyUI 里把流程搭好、调通,再通过 API 把同一套流程接到业务后端。

如果你在 SaaS 平台做批量内容生成,比如电商主图、广告素材、封面图,ComfyUI 的队列机制可以连续跑几十张、几百张图。配合 API,可以做一个简单的任务队列:提交参数 → 排队执行 → 结果回传。对早期团队来说,这套方案比直接购买商业 API 更可控。

如果你在科技公司做技术方案演示,ComfyUI 的可视化工作流天然就是一张“步骤图”:每个节点代表一个步骤,节点之间的连线代表数据流向。可以直接截图放到 PPT 里,也可以导出工作流 JSON 作为技术方案附件。

但边界也要说清楚。

ComfyUI 擅长的是AI 生成类任务的流程编排,它不是通用业务编排平台。如果你的目标是“员工请假审批流”“订单状态流转”“多系统数据同步”,那应该用 n8n、Dify、Coze 或者公司内部的 workflow 引擎,而不是 ComfyUI。把两类工具混为一谈,项目后期会很难维护。

另外,如果工作流里涉及人脸处理、声音克隆、版权图片素材,必须提前确认授权。本地部署不等于可以随意使用,发布到公网或商用前,要自己完成效果复核,并做必要的合规检查。

3. 环境准备与前置条件

下面这套检查清单适用于大多数 ComfyUI 本地部署场景。如果你的团队已经有 GPU 服务器,直接跳过本机安装,把清单里的路径换成服务器路径即可。

3.1 硬件要求

  • GPU:NVIDIA 显卡优先,显存建议 8GB 起步。这只是参考,实际以你选择的模型为准。6GB 显存也可以跑低分辨率 + 少步数的小模型,4GB 会比较紧张。
  • CPU:不做硬性要求,但 CPU 推理速度明显慢于 GPU,只适合测试节点连通性。
  • 内存:16GB 以上比较稳妥。
  • 磁盘:ComfyUI 本体很小,但模型文件很大。建议预留 20GB 以上空间,如果你要下载多个大模型,按需增加。

3.2 软件依赖

  • Windows 10/11,或者 Linux / macOS。
  • Python 3.10 以上(ComfyUI 当前版本对 Python 版本有要求,具体以官方仓库说明为准)。
  • GPU 驱动 + CUDA 环境。如果不想手动装 CUDA,可以在安装 PyTorch 时选择对应的 CUDA 版本。
  • Git,用于拉取项目仓库。

3.3 端口准备

ComfyUI 默认端口是8188。如果本机端口被占用,启动时换一个端口。检查端口是否被占用的命令:

# Windows netstat -ano | findstr 8188 # Linux / macOS lsof -i :8188

如果端口被占用,先看哪个进程占用了端口,确认不是系统服务后再决定是否结束进程,或者干脆给 ComfyUI 换端口。

4. 安装部署与启动方式

ComfyUI 的安装路径很多:官方仓库git clone、秋叶整合包、Docker 镜像。这里给两套常见方式。

4.1 官方仓库手动安装

这种方式对技术团队最透明,也最容易排查问题。

git clone https://github.com/comfyanonymous/ComfyUI.git cd ComfyUI # 创建虚拟环境(推荐) python -m venv venv # Windows 激活虚拟环境 venv\Scripts\activate # Linux / macOS 激活虚拟环境 source venv/bin/activate # 安装 PyTorch,具体命令以 PyTorch 官网为准 pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 # 安装 ComfyUI 依赖 pip install -r requirements.txt

启动服务:

python main.py

启动成功后,终端会显示类似这样的地址:

To see the GUI go to: http://127.0.0.1:8188

浏览器打开这个地址,就是 ComfyUI 的可视化界面。

4.2 秋叶一键整合包

如果你不想折腾 Python 环境,可以用秋叶整合包。这类整合包通常把 Python、依赖、常用模型路径都处理好了,解压后双击启动脚本即可。它的优点是省事,适合个人开发者快速验证;缺点是环境相对封闭,出了问题排查路径不够透明。

实际使用中更稳妥的办法是:先用整合包跑通流程,确认工作流和模型没有问题之后,再在服务器上用官方仓库方式重新搭一套干净环境,尤其是要接 API 做生产化部署的时候。

4.3 局域网访问

如果你在同机房或局域网的其他机器上访问 ComfyUI,启动时加--listen参数:

python main.py --listen 0.0.0.0 --port 8188

注意,暴露到非本地地址后,必须做访问控制。最简单的方式是在防火墙层限制来源 IP,或者用 Nginx 反代加 Basic Auth。不要让没有任何鉴权的 ComfyUI 直接暴露在公网。

4.4 模型文件放置

ComfyUI 默认从models/checkpoints目录读取大模型。下载好的模型放进这个目录后,刷新网页即可在模型选择节点的列表里看到。如果你有自定义的 VAE、LoRA、ControlNet 模型,分别放入models/vae、models/loras、models/controlnet对应目录。

目录结构示例:

ComfyUI/ ├── models/ │ ├── checkpoints/ # 主模型 │ ├── loras/ # LoRA 模型 │ ├── vae/ # VAE 模型 │ ├── controlnet/ # ControlNet 模型 └── input/ # 输入图片 └── output/ # 输出图片

5. 从零搭建节点式 AI 工作流

环境跑通之后,接下来就是核心内容:怎么把“步骤图 / 时间线”的思路落到 ComfyUI 工作流里。

5.1 先画步骤图,再连线

打开 ComfyUI 页面,默认会有一个简单的文生图工作流。先不要急着调参数,先想清楚你的步骤图长什么样。

举一个电商主图生成的例子:

  1. 加载模型。
  2. 输入提示词。
  3. 设置图像尺寸。
  4. 加正向提示词和负向提示词。
  5. 采样器生成图像。
  6. VAE 解码。
  7. 保存图像。

这个流程在纸面上就是七个步骤。ComfyUI 的好处是,这七个步骤在画布上就是七个节点,你按从上到下的顺序摆放,就成了一张时间线图。

实际搭建中,你只需要四类核心节点:

  • Load Checkpoint:加载主模型,输出模型给采样器。
  • CLIP Text Encode:把提示词编码成模型能理解的向量。
  • KSampler:核心采样节点,控制步数、CFG、采样器名称、种子。
  • VAE Decode:把潜空间表示解码成图像。
  • Save Image:保存生成结果。

在画布上右键,选择“Add Node”,就能找到这些节点。节点之间的连线规则是:从上游的输出端口拖到下游的输入端口。

5.2 一个最小可用的文生图工作流

下面是工作流 JSON 中的一个核心片段示例,帮助你理解节点之间的参数传递关系。实际工程中不需要手写这个 JSON,直接在网页上搭建更直观。

{ "3": { "class_type": "KSampler", "inputs": { "seed": 156680208700286, "steps": 20, "cfg": 7, "sampler_name": "euler", "scheduler": "normal", "denoise": 1, "model": ["4", 0], "positive": ["6", 0], "negative": ["7", 0], "latent_image": ["5", 0] } }, "4": { "class_type": "CheckpointLoaderSimple", "inputs": { "ckpt_name": "your_model.safetensors" } } }

这里"model": ["4", 0]表示从节点4的第0个输出端口获取模型数据。这个格式就是节点式组网在代码层面的表达:每个节点的输入,引用另一个节点的输出。一张完整的步骤图,本质上就是一张有向无环图,Chrome 开发者工具里的 Network 请求关系图、SaaS 平台的服务调用链,都是这个逻辑。

5.3 把工作流变成时间线展示

工作流搭好之后,不要急着关掉。ComfyUI 顶部有一个保存按钮,可以把工作流导出为 JSON 文件。这个 JSON 文件本身就是一张完整的“步骤图”数据描述,包含每个节点的坐标、类型、参数和连线关系。

要把工作流变成漂亮的步骤图 / 时间线给客户看,有两种做法:

  • 把 ComfyUI 画布截图,放到设计工具里标注步骤编号,适合快速汇报。
  • 把工作流 JSON 解析成结构化的步骤列表,再用前端图表库绘制成时间线组件,适合放在产品官网或 SaaS 平台帮助文档里。

如果你的团队在做 AE 模板类的动态演示,可以把工作流截图和节点关系图导入 After Effects,在 AE 里对每个节点图层添加出现动画、连线生长动画,做成“步骤图时间线”的动态模板。这个模板后续可以用于 AI 初创公司的路演 PPT、SaaS 平台产品介绍视频、科技公司技术方案汇报,一套素材反复复用。

5.4 用 Group Node 做模块化管理

当节点数量超过 20 个之后,画布会变得难维护。ComfyUI 的 Group Node(分组节点)功能可以把一组节点包成一个大节点,对外只暴露必要的输入和输出。这对 AI 初创公司尤其重要:团队里不同同学负责不同模块,用分组节点可以定义清晰的模块边界,谁改哪个模块,互不影响。

比如把“图像预处理”和“后处理上色”各做成一个组,外部调用时只关心入口和出口,内部细节在展开组时才能看到。这种组织方式和微服务架构里的“服务边界”思路完全一致,也是“关系网服务网络”在 ComfyUI 里的落地方式。

6. ComfyUI API 与批量任务

搭建好工作流之后,你大概率不会一直手动点“Run”。把工作流接入 API,是 AI 初创公司和 SaaS 平台走向工程化的关键一步。

6.1 API 地址确认

ComfyUI 启动后,默认会提供 HTTP API 服务。常用端点包括:

  • POST /prompt:提交工作流任务。
  • GET /history/{prompt_id}:查询任务执行结果。
  • WS /ws?clientId=...:WebSocket 实时监听任务进度。

也就是说,ComfyUI 跑起来之后,它不只是一个可视化工具,同时也是一个 API 服务。你完全可以写代码向前端提交任务,再通过 WebSocket 接收进度通知。

6.2 Python 调用示例

下面是一个 Python 端的通用调用模板。你需要把workflow_json换成你在网页上导出的工作流 JSON,并把某个节点的参数改成你自己传入的值。

import json import uuid import requests # 1. 读取工作流模板 with open("workflow.json", "r", encoding="utf-8") as f: workflow = json.load(f) # 2. 修改某个节点的参数,例如把 KSampler 的 seed 改成随机种子 for node_id, node_data in workflow.items(): if node_data["class_type"] == "KSampler": workflow[node_id]["inputs"]["seed"] = random.randint(0, 2**32) # 3. 构造提交请求 comfy_url = "http://127.0.0.1:8188" client_id = str(uuid.uuid4()) payload = { "prompt": workflow, "client_id": client_id } response = requests.post(f"{comfy_url}/prompt", json=payload, timeout=30) print(response.status_code) print(response.json())

如果返回的 JSON 里有prompt_id,说明任务已经进入队列。接下来可以用历史接口轮询结果,或者用 WebSocket 监听进度。

6.3 WebSocket 进度监听

要实时看到任务跑到了哪一步,最可靠的方式是接 WebSocket。

import json import requests import websocket comfy_url = "ws://127.0.0.1:8188/ws?clientId=your_client_id" ws = websocket.create_connection(comfy_url) # 循环接收服务端推送的消息 while True: message = ws.recv() data = json.loads(message) if data["type"] == "executing": if data["data"].get("node") is None: print("任务执行完成") break else: node_id = data["data"]["node"] print(f"正在执行节点: {node_id}")

这段代码可以帮你把 ComfyUI 的任务进度同步到自己的管理后台,给用户展示“正在生成第几张图”这样的效果。

6.4 批量任务队列设计

批量任务的核心是:一个任务循环 + 一个失败重试机制。下面是一个简单的批量控制脚本思路:

import json import time import requests workflow_template = "workflow.json" task_configs = [ {"prompt": "a cat", "output_name": "cat_01"}, {"prompt": "a dog", "output_name": "dog_01"}, {"prompt": "a bird", "output_name": "bird_01"}, ] def submit_task(workflow, config): for node_id, node_data in workflow.items(): if node_data["class_type"] == "CLIPTextEncode": workflow[node_id]["inputs"]["text"] = config["prompt"] if node_data["class_type"] == "SaveImage": workflow[node_id]["inputs"]["filename_prefix"] = config["output_name"] resp = requests.post( "http://127.0.0.1:8188/prompt", json={"prompt": workflow}, timeout=30, ) return resp.json().get("prompt_id") for idx, config in enumerate(task_configs): max_retry = 3 for attempt in range(max_retry): try: prompt_id = submit_task(json.load(open(workflow_template)), config) print(f"任务 {idx} 已提交: {prompt_id}") break except Exception as e: print(f"任务 {idx} 提交失败,第 {attempt + 1} 次重试: {e}") time.sleep(2)

实际生产环境里,建议把任务状态写在数据库里,而不是只靠内存列表。至少要有三个状态:pending、executing、done,失败任务标记为failed并记录错误信息。这样即使服务重启,也能恢复未完成的任务。

7. 资源占用与性能观察

在 ComfyUI 跑任务时,重点观察三块资源:显存、内存、磁盘。

7.1 显存观察方法

Windows 下可以在任务管理器里查看 GPU 显存占用。Linux 下使用:

nvidia-smi

也可以开一个实时刷新:

watch -n 1 nvidia-smi

当你提交一个生成任务后,显存占用会明显上涨。不同模型、不同分辨率、不同步数的显存占用差异很大。如果任务中途直接报CUDA out of memory,说明显存不够,要从这些方向优化:

  • 降低生成分辨率。
  • 减少 batch size。
  • 减少采样步数。
  • 使用显存友好的优化参数,比如--lowvram或--cpu-vae之类的启动参数,具体以官方文档为准。

7.2 CPU 与 GPU 的差异

ComfyUI 默认优先 GPU 推理。如果你没有 GPU,可以安装 CPU 版 PyTorch,但图像模型的生成速度会非常慢,只适合验证节点链路是否通,不适合做批量任务。商业场景下,最好还是租一台带 GPU 的云服务器。

7.3 分辨率、步数、批量数对性能的影响

一次生成任务的总耗时,大致由这几个因素决定:

  • 分辨率越大,采样耗时越长。
  • 步数越多,耗时越长,但画面细节不一定成正比提升。
  • batch size 越大,单张均摊耗时可能下降,但显存峰值会上升。
  • 最终保存图像的分辨率越高,VAE 解码和写盘耗时越长。

建议第一次跑通时先用小分辨率、少步数,比如512x512、20步,确认整个链路工作正常后,再逐步加大。

7.4 端口冲突与服务残留

如果你开多个 ComfyUI 实例,或者服务异常退出后再启动,容易碰到端口冲突。排查方式在第三章已经说过。服务异常退出后,建议先检查进程列表,杀掉残留的python main.py进程再重启。

# Linux ps aux | grep main.py | grep -v grep kill -9 进程ID

8. 常见问题与排查方法

问题现象可能原因排查方式解决方案
启动后浏览器打不开页面端口被占用或服务未启动成功查看启动日志,检查 8188 端口更换端口,或重启服务
WebUI 里看不到模型模型文件未放到正确目录检查models/checkpoints目录将模型移动到对应目录后刷新
生成时报CUDA out of memory显存不足,参数设置过高nvidia-smi查看显存占用降低分辨率、步数、batch size
生图速度极慢使用了 CPU 推理查看 PyTorch 是否启用 CUDA安装 CUDA 版 PyTorch
API 提交返回 400工作流 JSON 格式有误检查prompt的节点引用是否完整用网页端重新保存工作流
WebSocket 收不到进度client_id不匹配检查提交任务时的client_id确保提交和监听使用同一 ID
批量任务卡住前一个任务异常占用队列查看队列状态和日志停止任务,重启 ComfyUI
输出质量不稳定提示词不一致或随机种子变化检查seed是否固定批量任务中显式设置 seed

如果碰到“请安装缺失的包以使用此工作流”这类提示,不要慌。这个提示通常是工作流里用了某个自定义节点,但当前环境没有安装对应的插件依赖。一般做法是:

  1. 查看工作流 JSON 引用了哪些自定义节点类型。
  2. 在 ComfyUI Manager 里安装对应插件。
  3. 安装后重启 ComfyUI,再重新加载工作流。

社区常见的关键词是ComfyUI Manager,它可以在网页端管理插件和自定义节点。如果你的环境里没有这个插件,可以先手动安装它,后面再装其他节点都会方便很多。

9. 给初创公司与 SaaS 团队的工程化建议

9.1 第一次先小参数验证

不要一上来就跑 1080P 大图,也不要一次提交 100 张批量任务。先跑通最小链路,确认输出质量,再逐步加大参数。

9.2 保留一套最小可运行配置

团队里每个人都可能改工作流,建议在仓库里维护一个workflow_minimal.json,保证任何环境里都能用最少依赖跑通。新的工作流只有在稳定之后,才替换到正式目录。

9.3 分目录管理素材和输出

输入素材放进input,输出结果按月或者按任务批次归档。命名规则要统一,例如project_task_batch.png,否则批量任务跑完,文件会堆积到难以复盘。

9.4 批量任务必须加日志和失败重试

批量任务不是“点一个 Run 就完事”。每个任务都要记录提交时间、开始时间、结束时间、状态和错误信息。失败任务要支持自动重试,同时设置最大重试次数,避免无限循环。

9.5 API 服务要限制访问范围

ComfyUI 的/prompt接口可以执行任意工作流。如果暴露在公网且没有任何鉴权,等于把一台 GPU 机器变成公开算力池,风险非常大。生产环境必须加防火墙限制、API Key、访问白名单,或者用反向代理包装一层自己的鉴权逻辑。

9.6 涉及人脸、声音、版权素材必须确认授权

如果工作流里用到人脸图片、品牌 Logo、版权图片,要确认是否有合法授权。本地部署和模型生成不能替代授权审查。发布公众号、上架应用商店、承接商业订单之前,对输出内容做一次人工复核,是底线。

10. 总结

这次的文章从 ComfyUI 的安装部署开始,一直讲到了节点式工作流的设计、API 接入、批量任务和工程化建议。对 AI 初创公司、SaaS 平台和科技公司来说,最容易出成果的路径是先搭一套最小可用的 ComfyUI 工作流,把它跑通成一张步骤图 / 时间线,再用 API 把同一套流程接入业务系统,最后依据业务需求做批量生产。

如果你现在正准备开始,建议按三个优先级来:

  1. 先跑通一个最小文生图工作流,确认环境没有问题。
  2. 把工作流保存成 JSON 模板,并尝试通过 API 提交一次任务。
  3. 设计自己的批量任务队列和目录规范,为后续业务接入打好基础。

最容易踩的坑有两个:一是把 ComfyUI 当成通用业务编排平台,强行用它做审批流、订单流;二是不做访问控制,直接把服务暴露到公网。前一个会让你后期维护痛苦,后一个会带来真实的安全风险。从节点式组网的角度理解 ComfyUI,把它定位成“AI 生成能力的可视化编排层”,整个技术方案就会清晰很多。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询