Cuándo usar
- Cambiar nombres de clase de nodo: Cambiaste el nombre de clase de un nodo (usa
DISPLAY_NAMEpara cambios de nombre para mostrar en su lugar) - Fusionar nodos: Varios nodos consolidados en uno (p. ej.,
Load3DAnimationfusionado enLoad3D) - Refactorizar entradas: Los nombres o tipos de las entradas cambiaron entre versiones
- Corregir errores tipográficos: Corregir nombres de nodos sin romper los flujos de trabajo existentes
Dónde registrar los reemplazos
Registra los reemplazos durante el gancho de ciclo de vidaon_load de tu extensión. Crea un archivo dedicado (p. ej., node_replacements.py) en el paquete de tu nodo personalizado:
Ejemplo completo
Aquí tienes un ejemplo completo de cómo estructurar los reemplazos de nodos en un paquete de nodo personalizado:Ejemplos del núcleo
El núcleo de ComfyUI usa reemplazos de nodos para las migraciones de nodos integrados. Aquí tienes ejemplos reales decomfy_extras/nodes_replacements.py:
Fusión simple de nodos
CuandoLoad3DAnimation se fusionó en Load3D:
Corrección de errata
Corrección de una errata enSDV_img2vid_Conditioning → SVD_img2vid_Conditioning:
Renombrar entradas con valores predeterminados
SustituirImageScaleBy por ResizeImageMaskNode:
Mapeo de entradas Autogrow
Para los nodos que usan Autogrow (entradas dinámicas), usa la notación con puntos:Parámetros de NodeReplace
Mapeo de entradas
Cada entrada del mapeo define cómo se transfiere una entrada del nodo antiguo al nuevo. Mapear desde una entrada antigua:Mapeo de salidas
Los mapeos de salidas usan referencias basadas en índices:Vinculación de IDs de widget
El campoold_widget_ids asigna los IDs de widget a sus índices posicionales. Esto es necesario porque el JSON del flujo de trabajo guarda los valores de los widgets por posición, no por ID.
API REST
Recupera todos los reemplazos registrados:Comportamiento del frontend
Cuando un flujo de trabajo contiene un nodo obsoleto, el frontend:- Obtiene los reemplazos desde
GET /api/node_replacements - Detecta los nodos que coinciden con
old_node_id - Pide al usuario que los actualice
- Aplica las asignaciones de entrada/salida automáticamente
- Conserva las conexiones y los valores de los widgets