该技能提供 ComfyUI 自定义节点包从 V1 到 V3 注册方式迁移的打包回退方案,主要面向需要迁移节点注册逻辑的开发者。
用途:帮助理解并处理迁移过程中的注册路由冲突与节点标识变更风险,避免出现新节点不出现且无错误提示的情况。
主要能力:
- 说明模块加载时 NODE_CLASS_MAPPINGS 优先:当该映射存在且不为 None 时,加载在该处停止,同一模块中的 comfy_entrypoint 不会被调用;空映射同样优先,只有缺失或为 None 时才继续向下。
- 指出半迁移模块表现为“新节点未出现”且无错误,建议整体迁移模块,或将两代注册保留在独立包中。
- 强调更改节点 id 会破坏所有使用该 id 的已保存工作流,应显式迁移标识而非重命名。
- 区分弃用与替换两个阶段:is_deprecated 标记仍注册的节点,引导新用户避开而旧工作流继续运行;替换仅当旧类不再注册后生效。建议先弃用,同一版本注册替换,最终移除旧类的版本承载迁移。
- 提供替换构建方式:io.NodeReplace(new_node_id=…, old_node_id=…, old_widget_ids=…, input_mapping=…, output_mapping=…),并 await node_replacement.register(...)。替换仅在旧类未出现在已加载目录时触发;旧 id 仅使用第一个注册的替换;未映射输入被丢弃;控件值按位置匹配,由 old_widget_ids 排序;将下游链接移动到不同输出位置需要 output_mapping 条目。
使用方式:资料未提供具体安装命令或操作步骤,暂未提供。
适用场景:适用于需要将自定义节点包从 V1 迁移到 V3 注册、处理弃用与替换过渡、以及避免破坏已保存工作流的开发场景。
限制:运行时若未暴露 node_replacement,则没有替换路径,应明确说明该限制而非绕过。