Cuándo usar
- Cambiar nombres de clase de nodo: Cambiaste el nombre de clase de un nodo (en su lugar, usa
DISPLAY_NAMEpara cambios de nombre para mostrar) - 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 hook del ciclo de vidaon_load de tu extensión. Crea un archivo dedicado (por ejemplo, node_replacements.py) en tu paquete de nodos personalizados:
Ejemplo completo
Aquí tienes un ejemplo completo que muestra cómo estructurar los reemplazos de nodos en un paquete de nodos personalizados:Ejemplos principales
El núcleo de ComfyUI usa reemplazos de nodos para las migraciones de nodos integrados. Aquí hay ejemplos reales decomfy_extras/nodes_replacements.py:
Fusión simple de nodos
CuandoLoad3DAnimation se fusionó con Load3D:
Corrección de un error tipográfico
Cómo corregir un error tipográfico enSDV_img2vid_Conditioning → SVD_img2vid_Conditioning:
Renombrar entradas con valores predeterminados
Cómo reemplazarImageScaleBy por ResizeImageMaskNode:
Asignación de entradas con Autogrow
Para los nodos que usan Autogrow (entradas dinámicas), usa la notación con punto:Parámetros de NodeReplace
Asignación de entradas
Cada entrada de la asignación define cómo se transfiere una entrada del nodo anterior al nuevo. Asignar desde la entrada anterior:Asignación de salidas
Las asignaciones de salidas usan referencias basadas en índices:Vinculación de ID de widget
El campoold_widget_ids asigna los ID de widget a sus índices posicionales. Esto es requerido porque el JSON del flujo de trabajo almacena los valores de los widgets por posición, no por ID.
REST API
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 actualice
- Aplica las asignaciones de entrada y salida automáticamente
- Conserva las conexiones y los valores de los widgets