Génération d'images locale ComfyUI (prompts en chinois)
Liste des fichiers du skill (lisez d'abord ceci, puis décidez ce qui est nécessaire)
| Fichier | Quand le lire |
|---|---|
SKILL.md | Ce fichier : prérequis / priorité locale / démarrage/arrêt cloud / trois modes d'appel / paramètres / conventions à long terme / attente des résultats |
image_gen.py | Implémentation de generate_image() ; appeler selon SKILL.md, ne lire la fonction que si l'on modifie son comportement |
feed_screen.py | Flux d'informations vidéo (modèle d'interface) : spec → six phrases squelette → soumission |
references/01-Environnement-et-routage.md | Avant de commencer : vérifier les prérequis, routage prioritaire local, démarrage/arrêt automatique du cloud |
references/02-Appel-et-parametres.md | Comment appeler generate_image, valeurs par défaut des paramètres, emplacement des résultats |
references/03-Regles-verification-tenue.md | En cas d'erreur ValueError sur une image de personnage : vérifier les règles et conditions de validation |
references/04-Attente-resultats-lot.md | Pour générer plusieurs images : deux méthodes d'attente et critères pour « l'interface ne bouge pas » |
references/05-Conventions-long-terme.md | Avant d'écrire un prompt, de transmettre une image de référence, ou en cas d'erreur de tenue ou <imageN> : consulter les critères rouges |
references/06-Flux-informations-video.md | Pour créer des modèles d'interface comme les flux vidéo (page de lecture, page en direct, page de notes, page produit, avec barre d'état, barre de navigation, nombres d'interactions, navigation inférieure) : consulter l'ordre des sections, les cinq zones UI, le tableau des tailles et les critères de validation |
Soumettre des « prompts en chinois » à une instance ComfyUI locale (workflow de traitement d'images Qwen2.1), générer un PNG et retourner le chemin local.
La logique centrale se trouve dans image_gen.py : generate_image se contente de mapper les paramètres, la véritable « soumission du workflow avec placeholders → sondage → téléchargement via HTTP »
est réalisée par le client partagé fxai-workflow/comfy_client.py (partagé avec fxai-scene-gen / fxai-fourview-gen / fxai-mv-pipeline). Utilisation uniforme du mode placeholder (les placeholders fxai_xxx sont injectés par comfy_client).
🚨 Prérequis de démarrage (lire d'abord, puis agir)
- 🔴 Première étape : lire la section « 🚨 Règles impératives du mode serveur ComfyUI » de
fxai-workflow/SKILL.md— ces règles sont écrites dans le SKILL.md de la dépendance, pas danscomfy_client.py(qui ne contient que les fonctions). Essentiel : ComfyUI est géré par la « console IA locale Fengxi » / un lanceur ; ce skill se contente d'envoyer des requêtes HTTP à l'adresse ; si le port 8188 local est inaccessible → utiliser le cloud ou demander à l'utilisateur de démarrer ; la disponibilité des ressources ne dépend que des interfaces serveur.
🔴 Restriction de licence des polices (à lire avant d'écrire du texte)
🔴 Si le résultat de ce skill (couverture / illustration) contient du texte, lisez d'abord fxai-standard/references/06-Licences-polices-et-ressources.md : les polices doivent être choisies uniquement dans la liste blanche du document 06 (priorité à Noto Sans SC / OFL en local ; Microsoft YaHei fourni avec Windows est également acceptable). Les polices commerciales comme Huawen sont interdites ; enregistrez le nom de la police et sa licence dans la livraison.
Prérequis
Les quatre autres prérequis se trouvent dans references/01-Environnement-et-routage.md.
🔴 Priorité locale, cloud seulement en second recours
Les détails du routage et le démarrage/arrêt du cloud se trouvent dans references/01-Environnement-et-routage.md.
Cloud Xiàngōngyún : démarrage automatique + arrêt à la fin
Trois modes d'appel
Mode A : Import direct (recommandé pour les scripts dans la conversation)
Voir le document 02.
Mode B : CLI (exécutable en Bash, nécessite d'autoriser le réseau sandbox pour se connecter à ComfyUI)
Voir le document 02.
Mode C : Flux d'informations vidéo (modèle d'interface)
python feed_screen.py <spec.json> --tag <projet>_<interface> --save-dir <répertoire_projet>
python feed_screen.py <spec.json> --print-only # Voir seulement le prompt assemblé
Ordre des sections, cinq zones UI, tableau des tailles et critères de validation : voir references/06-Flux-informations-video.md.
Paramètres (generate_image)
Conventions à long terme (à respecter impérativement, détails dans references/05-Conventions-long-terme.md)
- 🔴 Image de référence : Utiliser toujours les personnages propriétaires 000/001 (
role=woman/man/bothou chemin relatif personnalisé) ; pour les couvertures/affiches, utiliser l'image du personnage de l'œuvre elle-même, pas la bibliothèque globale d'avatarsavatar/000, 001. - 🔴 Prompt : En chinois directement pour l'image, pas besoin d'anglais ; si une personne est présente dans l'image, écrire obligatoirement [tenue/vêtements] + [coiffure/type de cheveux], avec validation stricte par
check_outfit(). - 🔴 Images de référence multiples : Si N images sont transmises, écrire
<imageN>pour chacune ; une omission entraîne uneValueError(check_image_refs()) ; le numéro correspond à l'ordre des images, le personnage masculin en premier. - Règle rouge des tenues : Les zones poitrine / intimes doivent rester couvertes, avec un niveau « transparent mais non révélateur ».
- Validation du résultat : Après téléchargement HTTP,
png_okvérifie la présence de IEND ; en cas d'incomplétude, réessayer. Ce skill se limite à générer l'image ; la publication est gérée parfxai-weixin-gzh-publisher.
Répertoire de sortie
Emplacement des résultats : voir references/02-Appel-et-parametres.md.
Attente des résultats : par écoute globale (intégrée)
generate_image utilise en interne comfy_client.submit_workflow ; après soumission, l'attente se fait par écoute globale :
Le log affiche queued <pid> suivi des mises à jour en temps réel, puis l'URL est automatiquement récupérée et téléchargée vers un chemin local —
utilisez ce canal d'écoute pour attendre les résultats (un sondage manuel avec /history ou /fxai/tasks/result renverrait des statuts dupliqués).
En attente GPU, l'écoute vérifie /queue pour confirmer que la tâche est encore en file d'attente et continue d'attendre. Vérification manuelle :
comfy_watch.py status <préfixe_pid> / comfy_watch.py top (skill fxai-comfyui-watcher).
🔴 Attente pour la génération par lots
Dès que l'état « encore en cours / sera notifié automatiquement » est reçu, cesser immédiatement les requêtes ; utiliser block=true uniquement si le temps restant ≤ 60 secondes. Les trois états de task_id et le critère « l'interface ne bouge pas ≠ bloqué » : voir references/04-Attente-resultats-lot.md.
Validation
Après modification de image_gen.py, exécuter : python image_gen.py "Test, paysage pur" --role "" --tag smoke_test,
Vérifier qu'un chemin PNG valide est retourné et que le fichier est complet (>100 octets, contient IEND).
Une fois la tâche identifiée, ne lire que les un ou deux fichiers correspondants ; ne pas lire les autres.
Liste des projets (afficher la progression sur la page)
Créer le répertoire du projet dès que les résultats sont prêts, mettre à jour après chaque étape ; structure voir fxai-standard document 01.
P=~/.workbuddy/skills/fxai-standard/scripts/fxai_project.py
python "$P" init "<projet>" --title <nom> --category image --skill fxai-comfyui-image-gen
python "$P" stage "<projet>" --script 2 --image 1 --audio 0 --video 0