ComfyUI工作流
全库目录221
本文目录8
节点图能连通,只证明接口类型可接,不能证明模型与潜变量语义匹配。一份可复现工作流需要把输入怎样进入节点、任务何时执行,以及哪些文件证明完成连起来。这里以自托管文生图为例,沿图、请求ID和输出清单追踪一次任务。
执行图与数据语义
检查点加载器可同时给出去噪模型、文本编码器和VAE。正负文本分别编码为条件,初始潜变量提供空间尺寸与批量,采样器输出去噪潜变量,VAE再解码成图像:
Checkpoint Loader → Model ───────────────────────→ Sampler
→ Text Encoder → Positive/Negative → Sampler
Empty Latent ────────────────────────────────────→ Sampler
Sampler → Denoised Latent → matching VAE Decode → Save Image图中的每条线都连接一个明确输出槽。例如模型、文本编码器和VAE即使来自同一加载器,也是不同输出。把VAE接到解码器只说明它接受该类型;不同模型使用的潜变量通道、尺度和训练语义仍须匹配。错误VAE有时仍能输出图片,颜色异常因此不能仅靠“节点执行成功”排除。采样与条件模型机制分别见 扩散模型、生成条件控制。
编辑器保存的工作流还含节点位置等界面数据。API执行图按节点ID记录类型与输入,上游连接表达为节点ID和输出槽。假设采样器引用加载器的模型输出,而解码器误引用另一加载器的VAE,只按截图检查顺序就可能漏掉这份差异。提交前检查实际引用关系与模型身份,不能仅看连线颜色。
固定依赖与参数
同一名称的检查点可能被另一份权重覆盖,所以任务保存模型、VAE、LoRA与控制模型的内容哈希,并固定ComfyUI与自定义节点提交。模型登记库用逻辑ID映射工作进程的本地路径,启动时校验内容,避免工作流依赖某个人电脑的绝对目录。模型获取与许可登记在执行前完成,生成进程只读取已登记依赖。
外部参数集中写成一份请求:文本、种子、宽高与批量、采样步数、CFG、采样器与调度器、去噪强度,以及适配器权重、活动窗口、参考图和遮罩。每个字段定义范围和单位,排队前拒绝不存在的模型、非法尺寸及不兼容组合。工作流哈希与请求参数一起进入任务记录,否则内部节点的默认值改变会成为未记录的输入变化。
固定种子只固定随机输入的一部分。框架、精度、计算核、GPU和批量顺序还可能改变求值,基准输出因此附环境信息。自定义节点是可执行代码,依赖和文件访问也属于环境;固定版本、隔离工作目录和审查节点代码,才有可控制的升级范围。
提交与完成确认
外围任务先保存请求,再向服务提交API图。自托管/prompt校验并接纳后返回prompt_id。任务记录把自己的job ID与该ID关联,随后通过/ws观察进度,并用/history/{prompt_id}查询完成记录:
job = persist(workflowHash, inputHashes, parameters, expectedOutputNodes)
reply = POST /prompt with API graph
persist mapping(job.id, reply.prompt_id)
observe /ws; recover status through /history/{prompt_id}
validate every expected output
commit output manifest, then mark job Succeeded这是接口协议伪代码,请求库、认证和服务地址由部署提供。收到提交响应时任务只是Queued,服务实际开始后才是Running。假设job17已保存prompt_id=Q,WebSocket在生成途中断开;恢复后仍查询Q,不能直接提交job18来“补救”。连接断开没有说明GPU是否停止,新请求反而可能重复执行。
更困难的情况是服务接纳了请求,提交响应却丢失,外围没有拿到prompt_id。此时不能从超时推断未执行,也不能假定服务会按外围job ID去重。执行层需要可查询的操作登记、受控输出标识与产物对账;没有这些能力时先保持未知状态,在暂存区排查,避免重复发布。通用恢复边界见 Agent资产管线。
产物清单与发布
历史完成记录只说明节点报告了输出。任务还需确认所有预期输出节点都有对应文件,文件可读取、尺寸和格式正确,再计算哈希。假设请求批量2,清单只发现1张512×512图,任务保持部分失败;把这一张标成整个批量完成会丢失一个输出,而且重试时无法区分哪些文件属于旧尝试。
每次尝试使用任务ID与变体ID组织文件名和暂存目录。提示词只作为内容保存,不直接拼路径;其中可能含非法字符、私人信息和过长文本。清单记录输入、全部种子、工作流与依赖哈希、实际环境、输出哈希与颜色空间、父任务、后处理和审核状态。嵌入图片的元数据只是便捷副本,编辑软件清除它以后,独立清单仍能恢复来源。
正式入口在整组产物验证后切换,已批准关键帧则按内容版本锁定。视频任务若逐帧独立生成,可以按失败帧重跑;联合去噪或跨帧状态任务需要从片段检查点恢复,不能随意用一张新帧替换后宣称时序关系已保持。
失败、取消与容量
OOM反映当前请求与设备容量不匹配。相同参数无限重试通常不会改变需求,还会阻塞后续任务。调度器限制GPU并发与显存峰值,可改用更大设备,或按允许范围降低批量、分辨率与精度;改变生成参数后使用新变体ID,原始请求与降级结果分别保留。
取消也先记录请求,再等待执行终态,之后才清理该尝试的临时文件。后台仍在写入时删除目录,既可能清理失败,也可能留下随后出现的孤立文件。自定义节点异常保存输入、节点版本、堆栈和已生成文件,由调度器判断是否可重试。工作进程退出后,还要确认其外部子进程已停止写入。
验收覆盖缺模型、VAE不匹配、提交响应丢失、WebSocket中断、OOM、批量部分输出和取消后迟到写入。每个输入都能对应到图引用、任务状态或文件清单中的具体证据;模型画面质量另由固定验证集判断。
实现与证据
2026年10月23日再次核读自托管路由文档的/prompt、/history与/ws。本文展开应用层任务协议,未连接本机ComfyUI实例或运行模型;服务实际历史保留、取消与节点接口需按锁定部署版本验证。图类型检查、文件完整性和视觉通过分别保存结果。
相关主题
参考资料
- ComfyUI Server Routes:Routes、Core API Routes、WebSocket Communication;2026年10月23日核读。