用途:帮助开发者理解并正确实现 ComfyUI 自定义节点的执行生命周期,从而编写高效、行为正确的节点。
执行流程:前端提交 prompt 后进入校验阶段(查找节点类、调用 INPUT_TYPES()/define_schema()、校验连接与类型、调用 validate_inputs()),随后从输出节点反向拓扑排序构建执行顺序,按序对每个节点做缓存检查、输入解析、惰性求值、执行函数并写入缓存,最后返回前端。只有连接到输出节点的节点才会执行。
缓存控制:V3 用 fingerprint_inputs,V1 用 IS_CHANGED,返回值与上次比较,相同则跳过执行复用缓存,不同则重新执行;未定义时按输入值缓存。not_idempotent=True 只阻止同类型不同实例间共享缓存,不阻止自身复用缓存,若要每次重跑需配合返回唯一值的 fingerprint_inputs/IS_CHANGED。has_intermediate_output 用于交互式 UI 节点,行为类似输出节点但不会自动加入执行列表。
输入校验:validate_inputs(V1 为 VALIDATE_INPUTS)在执行前运行,返回 True 表示有效,返回字符串表示错误。可通过 input_types 参数跳过默认类型检查以接受任意类型。
惰性求值:check_lazy_status 仅在节点含惰性输入时调用,可能被多次调用,返回需要求值的输入名列表,未求值的惰性输入为 None,返回空列表或 None 表示可执行。
其他能力:is_output_node=True 标记执行根节点;列表处理通过 is_input_list/INPUT_IS_LIST 接收列表、is_output_list/OUTPUT_IS_LIST 输出列表;可通过 Caching.CacheProvider 注册外部缓存提供者,在本地缓存未命中时按注册顺序查询,异常不会中断执行;可用 PromptServer.instance.send_sync 向前端发送消息。
限制:资料未提供具体版本兼容范围、性能数据或安装步骤。