ComfyUI自定义节点V3版本:依赖解析及标准规范详解

CN
ComfyUI.org
2025-06-12 18:01:48

自定义节点不仅是ComfyUI的功能组件,更是其核心基石。ComfyUI团队正式公布Nodes v3计划——一项旨在彻底重塑自定义节点开发体验的革新工程。目前方案仍在完善中,团队诚邀节点开发者提供反馈:哪些设计值得保留,哪些需要改进,以及一切相关建议。

重点解决问题

🔹 稳定性
当前ComfyUI的任何内部改动都可能导致自定义节点失效。Nodes v3将通过标准化公共API和向后兼容承诺解决这一问题。

🔹 依赖冲突
不同节点包的Python依赖可能互相冲突,甚至导致ComfyUI无法运行。新方案拟采用进程隔离技术规避此问题。

🔹 动态I/O与控件
现有动态输入/输出和自定义控件实现较为脆弱。v3将为其提供原生级支持和更清晰的声明规范。

🔹 模型管理
本地模型的管理日益繁琐,未来计划引入自动检测机制和结构化存储方案。

🔹 前瞻性设计
Nodes v3为以下功能预留了扩展空间:

  • 跨机器分布式工作流

  • 单机多节点并行执行

  • 更多可能性

技术方案

📌 公共API
版本化的标准化API既能保护现有节点,又为ComfyUI演进留出空间。

📌 依赖隔离
采用公共API的节点包可运行在独立Python进程中,大幅降低冲突概率。

📌 现代声明规范
面向对象的结构化schema替代晦涩的字典配置,提升可读性和灵活性。

📌 异步执行
通过async/await语法支持未来并行/分布式计算,现有工作流无需重构即可适配。

为何称为"v3"?

该版本基于两次前期工作演进而来:

  • v1:原始(当前主流)实现方案

  • v2:前端部分重构尝试
    Nodes v3代表着全栈级别的重新设计

参与共建

团队诚邀节点开发者加入讨论:

  • 所有用户ComfyUI Discord

  • 注册开发者:专属频道#exclusive-custom-node-devs

技术深潜:节点规范

当前测试节点采用v1规范编写:(Pyhton)

mbt946zwiu69cytt00g111.webp
# 现行方案(v1)示例
class TestNode:
    @classmethod
    def INPUT_TYPES(cls):
        return {"required": {"image": ("IMAGE",)}}

    RETURN_TYPES = ("IMAGE",)
    FUNCTION = "execute"
    # ...共需定义7个类成员

新方案(v3)
以下是拟议中的v3等效规范(开发过程中可能随时调整):(Python)

mbt94vocwylf54iuxqp222222.webp
# 新方案(v3)示例
class TestNode:
    @classmethod
    def DEFINE_SCHEMA(cls):
        return Schema(
            inputs=[ImageInput("image")],
            outputs=[ImageOutput("processed_image")]
        )

核心改进包括:

  • 无状态设计:适配进程隔离/分布式环境

  • 类型安全:内置验证与提示

  • 动态I/O:原生支持运行时调整

API版本管理

通过版本锁定确保兼容性:(Python)

from comfy_api.v0_0_3 import ComfyAPI  # 锁定特定稳定版  
api = ComfyAPI()  
await api.set_progress(0.5)  # 异步调用