ComfyUI 生态与替代¶
一、这页讲什么¶
本地部署不是唯一选择。这一页给出三条路线的分界:本地 ComfyUI、在线出图服务、直接用接口跑;以及本地实例怎样被程序调用。
读完能做到:按需求判断该不该本地部署;用 curl 把一张 API 格式工作流提交给本地实例并取回图片;说清本地部署的维护成本在哪。
二、开始之前¶
| 项 | 内容 |
|---|---|
| 版本与日期 | ComfyUI 2026-10 最新版;2026-10-21 核实 |
| 预计耗时 | 25 分钟 |
| 前置 | 04-节点与工作流已完成,会导出 API 格式 |
| 风险级别 | 低:调用的是本机服务 |
三、动手做¶
1. 先判断该不该本地部署¶
| 情况 | 建议 | 理由 |
|---|---|---|
| 只是试几次效果 | 在线服务 | 不用装、不用下模型 |
| 固定流程、要批量出图 | 本地 + 接口 | 可控、可排队、成本固定 |
| 机器没有 NVIDIA 显卡 | 在线服务 | CPU 出图慢到不可用 |
| 模型有合规或保密要求 | 本地 | 数据不出机器 |
| 多人共用一套流程 | 本地服务器 + 反向代理 | 一处部署、多人用,见反向代理与 HTTPS |
| 依赖大量第三方节点 | 本地 | 在线服务未必装得下这些节点 |
看到这个就算成:能对着一个具体需求说出选哪条路,以及另一个选项为什么不合适。
2. 导出 API 格式工作流¶
在界面里用「Save (API Format)」导出 JSON。这份 JSON 是提交给接口的输入,与平时存的前端工作流不是同一种格式。
看到这个就算成:文件里是节点 id 到输入的映射,没有画布坐标一类前端信息。
3. 提交任务¶
$ curl -s -X POST http://127.0.0.1:8188/prompt \
-H 'Content-Type: application/json' \
-d @workflow_api.json > resp.json
$ cat resp.json
{"prompt_id": "c9f1a2b3-...", "number": 0, "node_errors": {}}
看到这个就算成:返回里有 prompt_id,node_errors 是空的。返回 400 时看 node_errors,里面会写哪个节点的哪个输入不合法。
4. 查结果¶
$ curl -s http://127.0.0.1:8188/history/c9f1a2b3-...
{"c9f1a2b3-...": {"prompt": [0, "c9f1a2b3-...", {}, {}, []], "outputs": {"9": {"images": [{"filename": "ComfyUI_00001_.png", "subfolder": "", "type": "output"}]}}}}
执行完成后,history 里该 prompt_id 记录的输出节点会带文件名与子目录。取图用 /view:
$ curl -s "http://127.0.0.1:8188/view?filename=ComfyUI_00001_.png&subfolder=&type=output" -o out.png
$ file out.png
out.png: PNG image data, 1024 x 1024, 8-bit/color RGB, non-interlaced
看到这个就算成:out.png 能打开,就是刚才那张图。
5. 拿进度¶
/ws 是 WebSocket,推送队列与执行进度;/queue 看当前排队与正在跑的任务;/object_info 列出所有可用节点及其输入定义,写调用脚本时用 /object_info 校验参数。
看到这个就算成:能用 /queue 判断任务是在排队还是已经跑完,不必一直猜。
6. 判断维护成本¶
本地部署要长期维护的部分:升级、节点兼容、显存、端口与访问控制、模型来源。只出几次图时,这些成本明显高于收益。
看到这个就算成:能说出这台机器上「谁负责升级、谁负责磁盘、占哪个端口」三个问题的答案。
四、做完怎么确认¶
- 能用 curl 提交一个任务并拿到图片。
- 能读懂
node_errors并定位到具体节点。 - 能说出本机实例的端口、访问范围与升级负责人。
- 对一个新需求,能给出「本地 / 在线 / 接口」中的选择与理由。
五、卡住了怎么排查¶
| 症状 | 多半是 | 先验证 | 处理 |
|---|---|---|---|
| 提交返回 400 | 提交的是前端格式,或缺必需节点 | 看 node_errors 里的节点 id |
重新导出 API 格式;补装节点 |
Connection refused |
服务没起,或端口不是 8188 | $ curl -s http://127.0.0.1:8188/queue |
启动服务;核对 --port |
| 提交成功但一直不出图 | 任务在排队,或卡在缺模型 | /queue、/history 一起看 |
清队列;补齐模型 |
/view 取不到图 |
文件名或 type 参数不对 |
/history 里的输出记录 |
按记录里的 filename、subfolder、type 拼 |
| 在线服务返回 401/403 | 缺 API Key 或额度用尽 | 看响应体里的错误信息 | 补凭证;换服务 |
| 换平台后工作流跑不通 | 节点不是标准实现 | 对比节点清单 | 用核心节点重画关键链路 |
六、为什么这样能成¶
接口提交的是图,不是参数集合。 /prompt 收到的是整张节点图的 JSON,服务端按依赖顺序执行。所以换平台时要换的是「图怎么表达」,不是几个参数名。
API 格式与前端格式分工不同。 前端格式带画布信息,供人看;API 格式只保留执行所需的结构,供程序提交。两者互相不能直接替换。
本地部署买的是控制权。 模型、节点、数据都在自己机器上,代价是升级、显存、访问控制都要自己维护。在线服务买的是省事,代价是模型与流程受服务方限制。
七、边界与替代¶
- 不做商业选型:具体用哪家在线服务、价格怎么算,按实际预算与合规要求定,本页只给判断框架。
- 不教提示词与美学:出图质量属于经验,写在经验。
- 访问控制另做:把实例暴露到组网或公网时,认证与域名见 反向代理与 HTTPS。
- 别把本地实例当无成本:机器、电费、维护时间都是成本,短期需求直接用在线服务更划算。
八、官方资料¶
- 服务端接口路由:https://docs.comfy.org/development/comfyui-server/comms_routes
- 服务端消息格式:https://docs.comfy.org/development/comfyui-server/comms_messages
- 工作流概念(前端与 API 格式):https://docs.comfy.org/basic-concepts/workflow
- 模板库:https://docs.comfy.org/interface/features/template
- 本地部署的另一种形态(桌面版):https://docs.comfy.org/installation/desktop/windows
核实日期:2026-10-21。