Geração de imagem local com ComfyUI (prompts em chinês)
Lista de arquivos deste skill (leia aqui primeiro, depois decida quais ler)
| Arquivo | Quando ler |
|---|---|
SKILL.md | Este arquivo: pré-requisitos/prioridade local/liga/desliga Xianguan Cloud/três modos de chamada/parâmetros/convenções de longo prazo/aguardar resultados |
image_gen.py | Implementação da generate_image(); consulte SKILL.md, leia a função correspondente apenas se precisar alterar comportamento |
feed_screen.py | Fluxo de informações de vídeo (template de interface): spec → seis partes do esqueleto do prompt → submissão |
references/01-ambiente-e-rota.md | Antes de começar: pré-requisitos, rota de prioridade local, liga/desliga automático da Xianguan Cloud |
references/02-chamada-e-parametros.md | Como chamar generate_image, valores padrão dos parâmetros, destino dos artefatos |
references/03-regras-verificacao-roupa.md | Quando ValueError for lançado em imagens de pessoas, consulte as regras de verificação e condições de aprovação |
references/04-regras-lote-resultados.md | Ao gerar múltiplas imagens de uma vez, consulte os dois métodos de espera e o critério de "interface travada" |
references/05-convencoes-longo-prazo.md | Antes de escrever prompts, enviar imagens de referência, ou ao encontrar erro de verificação de roupa ou <imageN>, consulte as regras vermelhas |
references/06-fluxo-informacao-video.md | Ao criar templates de interface como feed de vídeo (página de reprodução/página ao vivo/detalhes de anotação/detalhes de produto, incluindo barra de status/barra de navegação/números de interação/navegação inferior), consulte a ordem das seções, escrita das 5 áreas da UI, tabela de tamanhos e itens de aceitação |
Submeta "prompts em chinês" ao ComfyUI local (workflow de processamento de imagem Qwen 2.1), gere PNG e retorne o caminho local.
A lógica principal está em image_gen.py: generate_image apenas faz mapeamento de parâmetros; a verdadeira "submissão do workflow com placeholders → polling → download via HTTP"
é feita pelo cliente compartilhado fxai-workflow/comfy_client.py (compartilhado com fxai-scene-gen / fxai-fourview-gen /
fxai-mv-pipeline). Usa o modo de placeholders uniformemente (placeholders fxai_xxx são injetados pelo comfy_client).
🚨 Antes de começar (leia primeiro, depois execute)
- 🔴 Primeiro passo: leia a seção "🚨 Regras rígidas do modo servidor ComfyUI" em
fxai-workflow/SKILL.md— as regras rígidas estão no SKILL.md do componente dependente, não emcomfy_client.py(que só expõe funções). Essencial: ComfyUI é iniciado/parado pelo "Console Local Fengxi AI"/launcher; este skill apenas envia HTTP para o endereço; se porta 8188 local não responder → vai para nuvem ou instrui o usuário a iniciar; a disponibilidade de recursos é determinada apenas pela interface do servidor.
🔴 Portão de licenciamento de fontes (leia antes de gerar texto)
🔴 Sempre que houver texto nos artefatos deste skill (capas/ilustrações), leia primeiro fxai-standard/references/06-licenca-fontes-e-materiais.md: escolha fontes apenas da lista branca do 06 (local prefira Noto Sans SC / OFL, Microsoft YaHei também é aceitável por vir pré-instalado no Windows), proibido usar fontes comerciais como Huawen; registre o nome da fonte e a licença na entrega.
Pré-requisitos
Os outros quatro pré-requisitos estão em references/01-ambiente-e-rota.md.
🔴 Prioridade local, depois Xianguan Cloud
Detalhes da rota e liga/desliga da nuvem em references/01-ambiente-e-rota.md.
Xianguan Cloud: ligar automaticamente + desligar ao terminar
Três modos de chamada
Modo A: import direto (preferido para scripts em diálogo)
Veja o volume 02.
Modo B: CLI (execute diretamente no Bash, precisa liberar rede sandbox para ComfyUI)
Veja o volume 02.
Modo C: Fluxo de informações de vídeo (template de interface)
python feed_screen.py <spec.json> --tag <projeto>_<interface> --save-dir <diretorio_projeto>
python feed_screen.py <spec.json> --print-only # apenas exibe o prompt montado
Ordem das seções, escrita das 5 áreas da UI, tabela de tamanhos e itens de aceitação em references/06-fluxo-informacao-video.md.
Parâmetros (generate_image)
Convenções de longo prazo (obrigatório cumprir, detalhes em references/05-convencoes-longo-prazo.md)
- 🔴 Imagens de referência: personagens sempre usar os próprios 000/001 (
role=woman/man/bothou caminho relativo personalizado); capas/pôsteres usar a imagem do personagem da própria obra, não a biblioteca global de avataresavatar/000, 001. - 🔴 Prompt: chinês direto para a imagem, sem necessidade de inglês; se houver pessoa na cena, deve escrever obrigatoriamente [roupa/vestimenta] + [formato do rosto/cabelo],
check_outfit()faz verificação rigorosa. - 🔴 Múltiplas imagens de referência: se enviar N imagens, cada uma deve ser referenciada como
<imageN>, faltando uma geraValueError(check_image_refs()); numeração segue a ordem das imagens de referência, personagem masculino primeiro. - Linha vermelha de vestimenta: áreas do peito/partes íntimas devem permanecer cobertas, com intensidade entre "transparente mas não exposto".
- Validação do artefato: após download HTTP,
png_okverifica presença de IEND; se incompleto, tenta novamente. Este skill só gera imagens; a publicação é responsabilidade defxai-weixin-gzh-publisher.
Diretório de saída
Destino dos artefatos em references/02-chamada-e-parametros.md.
Aguardar resultados: via escuta global de broadcast (já integrado)
generate_image internamente chama comfy_client.submit_workflow, após submissão aguarda via escuta de broadcast:
após queued <pid> no log, há progresso em tempo real; quando concluído, baixa automaticamente a URL e retorna o caminho local —
use este canal de broadcast para aguardar resultados (fazer polling manual com sleep em /history ou /fxai/tasks/result resultará em estado duplicado).
Ao esperar na fila por GPU, a escuta verifica /queue para confirmar "ainda na fila" e continua esperando.
Consulta manual:
comfy_watch.py status <prefixo_pid> / comfy_watch.py top (skill fxai-comfyui-watcher).
🔴 Como aguardar geração em lote
Após receber "ainda em execução / será notificado automaticamente", pare imediatamente a consulta; use block=true apenas quando ≤60 segundos restantes.
Os três estados do task_id e o critério de "interface travada ≠ travada" estão em references/04-regras-lote-resultados.md.
Validação
Após modificar image_gen.py, execute:
python image_gen.py "teste, cena pura paisagem" --role "" --tag smoke_test,
confirme que retorna um caminho PNG válido e o arquivo está completo (>100 bytes, contém IEND).
Depois de definir o que fazer, leia apenas o volume ou dois correspondentes; não leia os outros.
Lista de projetos (a página exibe o progresso com base nela)
Crie o arquivo do projeto assim que o diretório de artefatos for criado, atualize a cada etapa concluída; estrutura conforme volume 01 do fxai-standard.
P=~/.workbuddy/skills/fxai-standard/scripts/fxai_project.py
python "$P" init "<projeto>" --title <nome> --category image --skill fxai-comfyui-image-gen
python "$P" stage "<projeto>" --script 2 --image 1 --audio 0 --video 0