使用场景
- 更改节点类名:您更改了节点的类名(对于显示名称更改,请使用
DISPLAY_NAME) - 合并节点:多个节点合并为一个(例如,
Load3DAnimation合并到Load3D) - 重构输入:版本之间输入名称或类型发生变化
- 修复拼写错误:在不破坏现有工作流的情况下更正节点名称
在哪里注册替换
在扩展的on_load 生命周期钩子中注册替换。在您的自定义节点包中创建一个专用文件(例如 node_replacements.py):
完整示例
以下是一个完整示例,展示如何在自定义节点包中构建节点替换:核心示例
ComfyUI 核心使用节点替换进行内置节点迁移。以下是comfy_extras/nodes_replacements.py 中的实际示例:
简单节点合并
当Load3DAnimation 合并到 Load3D 时:
拼写错误修复
更正SDV_img2vid_Conditioning → SVD_img2vid_Conditioning 中的拼写错误:
带默认值的输入重命名
用ResizeImageMaskNode 替换 ImageScaleBy:
Autogrow 输入映射
对于使用 Autogrow(动态输入)的节点,使用点表示法:NodeReplace 参数
| 参数 | 类型 | 描述 |
|---|---|---|
new_node_id | str | 替换节点的类名 |
old_node_id | str | 已弃用节点的类名 |
old_widget_ids | list[str] | None | 将小部件 ID 绑定到其相对索引的有序列表 |
input_mapping | list | None | 如何将输入从旧节点映射到新节点 |
output_mapping | list | None | 如何将输出从旧节点映射到新节点 |
输入映射
每个输入映射条目定义了输入如何从旧节点传输到新节点。 从旧输入映射:输出映射
输出映射使用基于索引的引用:小部件 ID 绑定
old_widget_ids 字段将小部件 ID 映射到其位置索引。这是必需的,因为工作流 JSON 按位置而不是 ID 存储小部件值。
REST API
获取所有已注册的替换:前端行为
当工作流包含已弃用的节点时,前端会:- 从
GET /api/node_replacements获取替换信息 - 检测匹配
old_node_id的节点 - 提示用户升级
- 自动应用输入/输出映射
- 保留连接和小部件值