Generación de imágenes local con ComfyUI (prompts en chino)
Lista de archivos de esta skill (lee esto primero, luego decide qué leer)
| Archivo | Cuándo leerlo |
|---|---|
SKILL.md | Este archivo: requisitos previos/prioridad local/encender-apagar nube/3 modos de llamada/parámetros/acuerdos permanentes/esperar resultados |
image_gen.py | Implementación de generate_image(); sigue SKILL.md, solo lee la función si cambias el comportamiento |
feed_screen.py | Flujo de información de video (plantilla de interfaz): spec → 6 segmentos de prompt esqueleto → envío |
references/01-Entorno y ruteo.md | Antes de empezar: requisitos previos, ruteo de prioridad local, apagado/encendido automático de la nube Xianguiyun |
references/02-Llamada y parámetros.md | Cómo llamar a generate_image, valores predeterminados de parámetros, dónde caen los resultados |
references/03-Reglas de verificación de vestimenta.md | Cuando una imagen de persona es bloqueada por ValueError, consulta las reglas de verificación y condiciones de aprobación |
references/04-Reglas de espera para lotes.md | Para generar varias imágenes a la vez: dos métodos de espera y criterio de "interfaz sin movimiento" |
references/05-Acuerdos permanentes.md | Antes de escribir prompts, pasar imágenes de referencia, o al encontrar errores de vestimenta o <imageN>: criterios de línea roja |
references/06-Flujo de información de video.md | Para hacer plantillas de interfaz como flujo de información de video (página de reproducción/página en vivo/detalle de nota/detalle de producto, con barra de estado/barra de navegación/contadores/navegación inferior): orden de segmentos, escritura de las 5 zonas UI, tabla de dimensiones y elementos de verificación |
Envía "prompts en chino" a ComfyUI desplegado localmente (flujo de trabajo Qwen 2.1 de procesamiento de imágenes), genera PNG y devuelve la ruta local.
La lógica central está en image_gen.py: generate_image solo mapea parámetros; el verdadero "envío de flujo de trabajo con placeholders → sondeo → descarga HTTP"
lo realiza el cliente compartido fxai-workflow/comfy_client.py (compartido con fxai-scene-gen / fxai-fourview-gen /
fxai-mv-pipeline). Usa el modo de placeholders (los placeholders fxai_xxx son inyectados por comfy_client).
🚨 Antes de empezar (lee primero, luego actúa)
- 🔴 Primer paso: lee "🚨 Reglas férreas del modo servidor de ComfyUI" en
fxai-workflow/SKILL.md— las reglas están en el SKILL.md del componente dependiente, no encomfy_client.py(solo extraer la función es obligatorio pasar por alto). Clave: ComfyUI es arrancado/detenido por la "Consola local de Fengxi AI"/lanzador; esta skill solo envía HTTP a la dirección; si el puerto 8188 local no responde → va a la nube o pide al usuario que lo inicie; los recursos solo se reconocen a través de la interfaz del servidor.
🔴 Puerta de licencias de fuentes (lectura obligatoria antes de generar texto)
🔴 Cada vez que aparezca texto en los resultados de esta skill (portadas/ilustraciones), antes de generar el texto, lee obligatoriamente fxai-standard/references/06-Licencias de fuentes y materiales.md: las fuentes solo se seleccionan de la lista blanca del documento 06 (primera opción local Noto Sans SC / OFL, Microsoft YaHei también disponible con Windows preinstalado), prohibido usar bibliotecas comerciales como Huawen; al entregar, registra el nombre de la fuente y la licencia.
Requisitos previos
Los otros cuatro requisitos previos están en references/01-Entorno y ruteo.md.
🔴 Prioridad local, luego Xianguiyun
Los detalles de ruteo y encendido/apagado de la nube están en references/01-Entorno y ruteo.md.
Xianguiyun: encendido automático + apagado al terminar
Tres modos de llamada
Modo A: import directo (preferido para scripts dentro de la conversación)
Ver documento 02.
Modo B: CLI (ejecutar directamente en Bash, la conexión a ComfyUI necesita permiso de red de la caja de arena)
Ver documento 02.
Modo C: Flujo de información de video (plantilla de interfaz)
python feed_screen.py <spec.json> --tag <proyecto>_<interfaz> --save-dir <directorio del proyecto>
python feed_screen.py <spec.json> --print-only # solo ver el prompt generado
Orden de segmentos, escritura de las 5 zonas UI, tabla de dimensiones y elementos de verificación: ver references/06-Flujo de información de video.md.
Descripción de parámetros (generate_image)
Acuerdos permanentes (obligatorio cumplir, detalles en references/05-Acuerdos permanentes.md)
- 🔴 Imágenes de referencia: las personas siempre usan personajes propios 000/001 (
role=woman/man/botho ruta relativa personalizada); para portadas/pósters usa la imagen del personaje de la propia obra, no la biblioteca global de avataresavatar/000, 001. - 🔴 Prompts: en chino directo a imagen, no requiere inglés; si hay personas en la escena, debe escribir [vestimenta/ropa] + [tipo de cabeza/peinado],
check_outfit()verifica estrictamente. - 🔴 Múltiples imágenes de referencia: si se pasan N imágenes, se debe escribir
<imageN>para cada una; si falta una, ValueError (check_image_refs()); el número = orden de las imágenes de referencia, el protagonista masculino primero. - Línea roja de vestimenta: el pecho/partes íntimas deben estar cubiertos, con intensidad "transparente pero no visible".
- Verificación del resultado: después de la descarga HTTP,
png_okverifica que incluya IEND; si está incompleto, reintenta. Esta skill solo genera imágenes; la publicación la gestionafxai-weixin-gzh-publisher.
Directorio de salida
La ubicación de los resultados está en references/02-Llamada y parámetros.md.
Esperar resultados: usar monitorización global de broadcast (ya integrado)
generate_image internamente usa comfy_client.submit_workflow, después del envío espera los resultados mediante monitorización de broadcast:
después de queued <pid> en el registro, sigue el progreso en tiempo real; una vez completado, obtiene automáticamente la URL y descarga para devolver la ruta local —
para esperar resultados, usa esta ruta de broadcast (hacer sondeo manual con /history o /fxai/tasks/result devolverá estados duplicados).
Mientras espera GPU en cola, la monitorización verifica /queue para confirmar "todavía en cola" y sigue esperando. Consulta manual:
comfy_watch.py status <prefijo pid> / comfy_watch.py top (skill fxai-comfyui-watcher).
🔴 Cómo esperar con generación por lotes
Al recibir "todavía en ejecución / será notificado automáticamente", detén la consulta inmediatamente; block=true solo se usa cuando quedan ≤60 segundos. Los tres estados de task_id y el criterio de "interfaz sin movimiento ≠ atascado" están en references/04-Reglas de espera para lotes.md.
Verificación
Después de modificar image_gen.py, ejecuta: python image_gen.py "prueba, paisaje puro de escena" --role "" --tag smoke_test,
confirma que devuelve una ruta PNG válida y que el archivo está completo (>100 bytes, contiene IEND).
Una vez que determines qué hacer esta vez, lee solo los uno o dos archivos correspondientes; no leas el resto.
Lista de proyectos (la página muestra el progreso según esto)
Al crear el directorio de resultados, se crea un archivo de proyecto; se actualiza al completar cada segmento; la estructura está en el documento 01 de fxai-standard.
P=~/.workbuddy/skills/fxai-standard/scripts/fxai_project.py
python "$P" init "<proyecto>" --title <nombre> --category image --skill fxai-comfyui-image-gen
python "$P" stage "<proyecto>" --script 2 --image 1 --audio 0 --video 0