Réparer un workflow ComfyUI cassé avec Claude
Une méthode concrète pour récupérer un ancien workflow ComfyUI devenu inutilisable après une mise à jour : préserver le JSON et les journaux, tester le workflow par défaut, faire classer la panne par Claude, ne modifier qu’une copie et confirmer le résultat avec une image réellement enregistrée.
Sommaire

Ne demandez pas d’abord à Claude de réécrire tout le workflow. Conservez le JSON original au format de sauvegarde normal ainsi que les erreurs exactes, vérifiez qu’un workflow par défaut actuel fonctionne avec les custom nodes désactivés, puis laissez Claude classer uniquement les preuves fournies. Modifiez une dépendance à la fois, reconstruisez le plus petit graphe viable, exécutez une image et vérifiez vous-même que le résultat apparaît dans Save Image, peut être enregistré et rouvert.
Cette méthode transforme le vague constat « ComfyUI a beaucoup changé » en couches testables : cœur de ComfyUI, extensions frontend, custom nodes, fichiers de modèles ou ancien graphe. Le guide officiel de dépannage ComfyUI recommande également de tester le workflow par défaut, de désactiver les custom nodes et de lire l’erreur exacte du terminal avant d’appliquer un correctif.
La séquence de réparation en bref
- Gardez le workflow original au format de sauvegarde normal et ne l’écrasez jamais.
- Capturez le rapport complet, le journal de démarrage, le type d’installation, les versions et les changements récents.
- Désactivez tous les custom nodes et lancez le workflow d’image par défaut actuel.
- Donnez à Claude un dossier de preuves limité ; l’analyse précède toute modification ou installation.
- Classez la panne : core, frontend, custom node, model ou unknown.
- Mettez à jour ou remplacez un seul nœud incompatible, ou reconstruisez un graphe minimal actuel.
- Exécutez une petite image et vérifiez le fichier réellement enregistré.
1. Figez le workflow et les preuves avant toute modification
Enregistrez l’ancien workflow en JSON normal, puis créez une copie de travail distincte. Un petit dossier rend l’enquête reproductible :
comfyui-repair-case/
workflow-original.json
workflow-working.json
error-report.txt
startup-log.txt
environment.md
Considérez workflow-original.json comme étant en lecture seule. Placez dans error-report.txt tout le texte de Show report, et non un résumé comme « le nœud est cassé ». Dans startup-log.txt, conservez les échecs d’importation, conflits de dépendances et tracebacks du terminal de lancement. Dans environment.md, notez Desktop, Portable ou installation manuelle, la version de ComfyUI, le système, le GPU et ce qui a été mis à jour récemment : core, frontend, custom nodes ou modèles.
Préservez aussi la distinction entre Save format et API format. La page officielle Workflow API Format explique qu’une sauvegarde normale conserve positions, couleurs, groupes et autres métadonnées d’édition, tandis que le format API est allégé pour l’envoi programmatique. Gardez l’original en format normal pour la réparation. N’exportez une copie API séparée que si la tâche utilise réellement une API.
2. Prouvez d’abord qu’une base ComfyUI propre fonctionne
L’ancien graphe ne doit pas être le premier test. Désactivez temporairement les nœuds tiers. Dans Desktop, utilisez le réglage prévu ; une installation manuelle peut généralement être lancée ainsi :
python main.py --disable-all-custom-nodes
Chargez le modèle actuel Image Generation, choisissez un checkpoint compatible déjà visible dans le sélecteur et générez une image. Le guide officiel sur les custom nodes fournit une séparation utile : si le problème disparaît avec les custom nodes désactivés, l’un d’eux est impliqué ; s’il persiste, examinez core, frontend, modèles ou environnement.
Utilisez le résultat pour choisir la branche suivante :
| Résultat de base | Couche la plus probable | Preuve suivante |
|---|---|---|
| Le workflow par défaut ne s’ouvre pas ou ne s’exécute pas | Installation core, frontend, modèle ou matériel | Réparer la base avant l’ancien graphe |
| Le défaut fonctionne, l’ancien affiche missing nodes | Custom nodes absents, renommés ou non chargés | Relier les types JSON à leurs paquets |
| L’ancien graphe charge puis échoue sur un nœud | Architecture du modèle, connexions, dépendances ou mémoire | Conserver le premier nœud fautif et le rapport complet |
| L’interface revient après désactivation des extensions frontend | Extension tierce incompatible | Réactiver par moitiés pour en isoler une |
Si le graphe par défaut échoue, réécrire l’ancien JSON ne prouve aucune réparation.
3. Donnez à Claude un dossier de preuves strictement délimité
Anthropic décrit Claude Code comme capable de lire une base de code, modifier des fichiers et exécuter des commandes. C’est utile, mais la première passe doit donc rester analytique. Lancez Claude dans le dossier du cas, ou joignez les mêmes fichiers dans un chat, avec des limites explicites :
Tu diagnostiques un workflow ComfyUI arrêté après une mise à jour.
Lis uniquement :
- workflow-original.json
- workflow-working.json
- error-report.txt
- startup-log.txt
- environment.md
N’installe, ne mets à jour, ne supprime, ne renomme et ne modifie encore rien.
Commence par :
1. Inventorier les types de nœuds et les fichiers de modèles référencés.
2. Classer chaque problème : ComfyUI core, frontend extension,
custom node, model file ou unknown.
3. Citer le champ JSON ou la ligne d’erreur exacte pour chaque conclusion.
4. Proposer le plus petit changement réversible.
5. Attendre mon accord avant de modifier workflow-working.json.
N’annonce pas la réussite avant que j’exécute une image et confirme un fichier enregistré.
Une réponse utile est un tableau de correspondance : ancien type de nœud, extension propriétaire, contrat d’entrées/sorties, remplacement possible, migration des paramètres, preuve et risque. Si le propriétaire ou le remplacement n’est pas établi, Claude doit écrire unknown au lieu de déduire un paquet à partir d’un nom similaire.
4. Classez la panne au lieu de tout mettre à jour
Nœud manquant : identifiez son propriétaire avant de le remplacer
Inspectez le type, le titre et les liens du nœud dans le JSON normal. Des noms proches ne garantissent pas des sockets ni des valeurs de widgets compatibles ; remplacer une chaîne dans le JSON n’est donc pas une migration sûre. Déterminez si le nœud appartient au core ou à un dépôt de custom node précis, puis comparez entrées, sorties et paramètres.
Si l’extension est maintenue, mettez uniquement celle-ci à jour et retestez. Si elle est abandonnée, choisissez une alternative maintenue ou reconstruisez cette petite fonction avec des nœuds core. Le guide officiel propose les mêmes options : mettre à jour, remplacer, signaler à l’auteur ou retirer/désactiver le nœud.
Conflit frontend : désactivez, puis procédez par dichotomie
Certains custom nodes injectent aussi des extensions frontend. Interface vide, connexions cassées, aperçus absents ou communication frontend/backend interrompue peuvent venir de cette couche. Désactivez d’abord les extensions frontend tierces. Si le symptôme disparaît, réactivez-en la moitié à chaque étape. Cette recherche binaire conserve la causalité et est plus sûre qu’une réinstallation générale.
Modèle manquant : vérifiez dossiers et chemins de recherche
Un ancien graphe peut référencer un checkpoint, VAE, LoRA ou ControlNet supprimé, renommé ou déplacé. ComfyUI découvre les modèles dans les sous-dossiers de ComfyUI/models/ et dans les chemins définis dans extra_model_paths.yaml. Si un sélecteur est vide ou affiche null, vérifiez l’emplacement réel, puis actualisez ou redémarrez ComfyUI. Ne renommez pas un modèle incompatible pour satisfaire un ancien nom.
Architecture incompatible : vérifiez la famille, pas seulement le fichier
Le guide officiel sur les modèles conseille de garder les modèles d’un workflow dans la même famille d’architecture. Mélanger checkpoint, VAE, text encoder ou ControlNet de familles différentes peut produire des erreurs de dimensions pendant le sampling ou le VAE decode. Claude peut corréler la trace avec le graphe, mais un modèle officiel de la famille visée constitue une meilleure base de compatibilité.
5. Modifiez un seul nœud dans la copie de travail
Avant d’approuver une édition, demandez ce plan à Claude :
| Élément | Question obligatoire |
|---|---|
| Ancien nœud | Quel est le type JSON exact ? |
| Propriétaire | Core, custom node ou frontend extension ? |
| Remplacement | Les types d’entrée et de sortie correspondent-ils ? |
| Migration | Quelles widget values restent et lesquelles doivent être recréées ? |
| Retour arrière | Comment restaurer le précédent workflow-working.json ? |
N’autorisez des changements que dans workflow-working.json, une panne à la fois. Rechargez après chaque édition et vérifiez présence du nœud, validité des connexions et alignement des paramètres avant de poursuivre. Une mise à jour globale de tous les custom nodes peut créer un second conflit et supprime la preuve de la modification réellement utile.
Les pages communautaires peuvent aider à reconnaître des symptômes, mais ne constituent pas des diagnostics universels. Par exemple, frontend issue #6328 et ComfyUI discussion #14344 sont des rapports individuels. Utilisez-les seulement si version, erreur et contexte du nœud correspondent.
6. Reconstruisez une ossature d’image minimale et actuelle
Si l’ancien graphe contient de nombreuses branches LoRA, ControlNet, upscale, preview et utilitaires devenues obsolètes, tout réparer en même temps est plus risqué que restaurer le cœur. Reconstruisez-le à partir de l’exemple minimal officiel au format Save de ComfyUI. Il ne s’agit pas d’une chaîne en série : plusieurs sorties convergent vers KSampler, tandis que VAEDecode reçoit séparément le VAE du checkpoint.
| Port de sortie | Port d’entrée |
|---|---|
CheckpointLoaderSimple.MODEL | KSampler.model |
CheckpointLoaderSimple.CLIP | CLIPTextEncode.clip du prompt positif |
CheckpointLoaderSimple.CLIP | CLIPTextEncode.clip du prompt négatif |
CLIPTextEncode.CONDITIONING du prompt positif | KSampler.positive |
CLIPTextEncode.CONDITIONING du prompt négatif | KSampler.negative |
EmptyLatentImage.LATENT | KSampler.latent_image |
KSampler.LATENT | VAEDecode.samples |
CheckpointLoaderSimple.VAE | VAEDecode.vae |
VAEDecode.IMAGE | SaveImage.images |
EmptyLatentImage ne reçoit pas de conditioning. KSampler exige quatre entrées indépendantes —model, positive, negative et latent_image—, tandis que VAEDecode exige à la fois samples et le vae du checkpoint. Ce n’est qu’après avoir relié ces ports comme indiqué que le graphe minimal peut être mis en file et enregistrer une image.
N’utilisez ce câblage que si l’architecture du checkpoint choisi correspond à l’exemple officiel. Un modèle récent peut nécessiter un autre loader, text encoder, nœud latent ou chemin VAE ; dans ce cas, suivez le workflow officiel propre à ce modèle au lieu de forcer ce graphe. Pour la base, choisissez un checkpoint compatible déjà visible dans Load Checkpoint, utilisez batch size 1 et une résolution modérée, et laissez les anciennes branches facultatives déconnectées. Une fois l’ossature validée, ajoutez un LoRA, ControlNet, upscaler ou post-traitement personnalisé, puis relancez après chaque ajout.
L’objectif n’est pas que le nouveau graphe ressemble visuellement à l’ancien. Il faut obtenir une ossature actuelle dont le fonctionnement est prouvé, puis migrer seulement les capacités nécessaires. Claude peut comparer les deux JSON et préparer la carte de migration, mais l’exécution reste le test d’acceptation.
7. Exécutez une image et vérifiez le résultat enregistré
Un workflow qui s’ouvre seulement n’est pas réparé. Fermez la boucle avec le guide officiel de première génération :
- Après installation ou déplacement de modèles, appuyez sur
Rpour actualiser les listes, ou redémarrez si nécessaire. - Vérifiez que
Load Checkpointaffiche un modèle visible et compatible. - Cliquez sur
Runou appuyez surCtrl + Enter. - Attendez la fin de la file sans missing node, validation error ni nœud rouge en échec.
- Vérifiez que l’image apparaît dans
Save Image. - Enregistrez-la localement par clic droit, notez son nom et rouvrez-la dans une visionneuse.
- Facultatif : faites glisser le PNG généré dans ComfyUI pour vérifier la lecture de ses métadonnées de workflow.
- Enregistrez le graphe réparé en format normal sous
workflow-repaired.jsonet conservezworkflow-original.jsonintact.
Le dossier d’acceptation doit contenir le nom du workflow réparé, celui de l’image, le modèle utilisé, les custom nodes actifs, les remplacements et les limites connues. Alors seulement « réparé » devient un état étayé.
Si une branche échoue encore
- Le workflow par défaut échoue avec les custom nodes désactivés : arrêtez d’éditer l’ancien graphe et réparez installation, modèle, pilote ou frontend.
- Le défaut fonctionne mais l’ancien a encore des missing nodes : poursuivez la cartographie des propriétaires et remplacements, sans renommer les types au hasard.
- Le graphe charge mais la génération échoue : partez du premier nœud fautif dans
Show report; vérifiez famille du modèle et connexions avant la mémoire. - La panne revient à l’activation d’un groupe : continuez la dichotomie jusqu’à isoler un custom node ou frontend extension.
- Le nœud original n’est plus maintenu : remplacez ou reconstruisez sa fonction et documentez toute différence.
- Claude ne cite ni erreur ni champ JSON : traitez la proposition comme une hypothèse et ne l’exécutez pas encore.
Conclusion
Claude est ici plus fiable comme organisateur de preuves et planificateur de changements que comme bouton de réparation automatique non vérifiée. La boucle robuste est sauvegarde → base propre → classification → changement minimal → une image → vérification du fichier enregistré. Gardez le graphe original, ne changez qu’une variable à la fois et laissez le résultat réel de ComfyUI, plutôt qu’une explication assurée, déterminer si la réparation est terminée.