ComfyUI 节点图机制:数据流与张量传递

核心 约 25 分钟 ComfyUI节点图数据流工作流实践
前置知识点(建议先学)
学习状态:

一句话定义

ComfyUI 把文生图管线表达为一张节点有向图:每个节点是一个接受张量/模型/条件输入并输出结果的纯函数,连线即数据依赖,执行引擎按依赖拓扑求值并缓存未变子图的结果。

定位说明:ComfyUI 的界面操作与工作流搭建另有独立站点(comfyui)专门讲解;本知识点只讲节点图背后的机制与调参原理,操作细节不在此展开。

为什么重要

ComfyUI 已是开源图像生成的生产力标准(截至 2026-10),而多数使用问题(为什么改一个参数全图重跑、为什么两条链可以共用一段、这个报错为什么指向类型不匹配)都是节点图机制问题。理解「连线 = 数据依赖」这一件事,界面就不再是拼图游戏而是可推理的计算图;本库此前所有机制(三件套、CFG、采样器)在节点图上都有精确的落点。

前置知识

kp-008(三件套架构——节点图正是它的可视化形态);kp-022(标准管线,本节可与其对照阅读)。

核心概念

原理与机制

节点图是一个声明式计算图:你声明的不是「操作步骤」而是「数据如何流动」,执行顺序由拓扑排序决定而非节点摆放位置——这是与表单式工具(一栏到底的参数列表)的本质区别,也是它能表达任意管线(双 CFG、分块放大、多分支融合)的原因。以最小文生图链为例(对照 kp-022 的参数拆解):

CheckpointLoaderMODEL→KSamplerLATENT→VAEDecodeIMAGE→SaveImage CLIPTextEncode ×2(正/负)CONDITIONING→KSampler EmptyLatentImageLATENT→KSampler

KSampler 的五个输入精确对应 kp-008 的三件套与 kp-010 的 CFG:model(主干)、positive/negative(条件对)、latent(起点)、seed/steps/cfg/sampler_name(采样链配置)。缓存机制的粒度是「节点级输入指纹」:改正向提示词只有 CLIPTextEncode 及其下游(KSampler、VAEDecode)重算,CheckpointLoader 命中缓存;两段独立分支共享上游节点时同样按指纹判断——这解释了「多分支工作流为什么快」。类型系统的深层意义:MODEL 是三件套的主干对象、CONDITIONING 是「嵌入 + 可选控制信息」的复合对象(kp-019 的权重语法、kp-014 的 ControlNet 注入都发生在 CONDITIONING 的加工节点上)——工作流里那些 ConditioningCombine / ConditioningSetTimestepRange 节点,就是 CFG 与条件调度在图上的显式形态。

公式与推导

本节不适用——节点图是机制(kp-008~kp-010)的工程表达,不引入新数学。

直观类比

节点图像流水线工厂图纸:每个车间(节点)只看进料口(输入)与出料口(输出),车间怎么排(画布位置)不重要,图纸上的传送带(连线)才决定工序。原料没变的车间直接出货(缓存),改了配方只有下游车间返工。

实例或案例

常见误区

自测题

  1. 「连线表示什么?执行顺序由什么决定?」

答案要点:连线表示类型化数据依赖;执行由依赖拓扑排序决定,与节点摆放位置无关。

  1. 为什么改正向提示词不必重跑 CheckpointLoader?

答案要点:其输入(模型文件)未变,节点输出命中缓存;只有提示词下游的节点输入指纹变化。

  1. KSampler 的五个输入分别对应前面哪个知识点的哪个概念?

答案要点:model=kp-008 主干、pos/neg=kp-010 条件对、latent=kp-003 潜码起点、cfg/steps/sampler=kp-009/kp-010 采样链。

与其他知识点的关系

kp-022 把标准链拆到参数级(本节的姊妹篇);kp-023 决定图里加载哪个 checkpoint;kp-024 的算力账决定图的分支策略。

延伸阅读

ComfyUI 官方仓库 README 与示例工作流(本库不引链接,操作与工作流搭建见独立站点 comfyui)。

相关知识点