# Resumen Operativo — Pipeline de Generación Automática en Flowise

## Objetivo

Montar un sistema multi-agente dentro de **Flowise** que automatice la generación de imágenes anime NSFW sugerente para X/Patreon, conectando Stable Diffusion local (Forge Neo) con LLMs de orquestación y un crítico visual de visión.

## Arquitectura del Flujo

```
┌─────────────────────┐
│  Input del Usuario  │  ("Genera 5 imágenes de Marin Kitagawa sugerente")
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Agente Diseñador   │  Command R+ vía Omniroute
│  (Prompt Builder)   │  Lee wildcards.yaml + reglas de PlumLoom
│                     │  Genera prompt estructurado Danbooru
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  MCP Tool           │  sd-webui-mcp → Forge Neo API
│  (generate-image)   │  Puerto 7860, resolución 768x1152
│                     │  Genera la imagen con WAI-Illustrious-SDXL
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Agente Crítico     │  Qwen2.5-VL-72B vía OVHcloud (gratis)
│  (Vision QA)        │  Evalúa anatomía, ojos, manos, reflejos
│                     │  Responde: APTO o RECHAZADO + razón
└──────────┬──────────┘
           ▼
┌─────────────────────┐
│  Decisión           │
│  ¿APTO?             │
├──── SÍ ─────────────┼──→ Guardar en /output/X_sugerente/
│                     │
├──── NO ─────────────┼──→ Reintentar con nuevo seed
│                     │    (loop máx. 3 intentos)
└─────────────────────┘
```

## Estado Actual de la Configuración

### ✅ Completado

| Componente | Estado | Detalles |
|------------|--------|----------|
| **Flowise** | ✅ corriendo | Docker v3.1.3, `http://localhost:3000` |
| **Forge Neo** | ✅ corriendo | Puerto 7860, `--listen` activado |
| **sd-webui-mcp** | ✅ compilado | `C:\PlumLoom_AI\mcp_servers\sd-webui-mcp` |
| **Conexión Docker→Forge** | ✅ verificada | `host.docker.internal:7860` |
| **Protocolo MCP** | ✅ configurado | `CUSTOM_MCP_PROTOCOL=stdio` |
| **Seguridad MCP** | ✅ desactivada | `CUSTOM_MCP_SECURITY_CHECK=false` |
| **MCP Tools** | ✅ disponibles | generate-image, list-models, check-status, etc. |
| **Agente Diseñador** | ✅ configurado | Command R+ vía Omniroute |
| **LLM Crítico (OVHcloud)** | ✅ configurado | Qwen2.5-VL-72B, endpoint Kepler |

### 🔧 En Progreso

| Componente | Estado | Acción requerida |
|------------|--------|------------------|
| **Agente Crítico ( nodo Agent)** | ⏳ pendiente | Crear nodo Agent con system prompt de validación |
| **Conexión MCP→Crítico** | ⏳ pendiente | Conectar salida generate-image a entrada del Crítico |
| **Lógica de reintentos** | ⏳ pendiente | Implementar loop APTO/RECHAZADO |

### 📋 Pendiente

| Componente | Estado |
|------------|--------|
| Memoria de grafos (excepciones por personaje) | Pendiente |
| Lectura de archivos Obsidian/via YAML | Pendiente |
| Guardado automático de imágenes aprobadas | Pendiente |

## Credenciales y Endpoints

| Servicio | URL | API Key |
|----------|-----|---------|
| Flowise | `http://localhost:3000` | Local (cuenta propia) |
| Forge Neo API | `http://localhost:7860` | No requerida |
| OVHcloud Vision | `https://oai.endpoints.kepler.ai.cloud.ovh.net/v1` | Anónimo (sin key) |
| Omniroute (Command R+) | `http://localhost:3000/api/v1/prediction/...` | `LBOlCuilL4r7zpoVQwe9xfnL9yPUOug__66ajigrR8U` |

## Variables de Entorno Docker (docker-compose.yml)

```yaml
environment:
  - PORT=3000
  - HOST=0.0.0.0
  - CUSTOM_MCP_SECURITY_CHECK=false
  - CUSTOM_MCP_PROTOCOL=stdio
```

## System Prompt del Agente Crítico

```
Eres el Crítico Visual de PlumLoom. Tu única función es analizar imágenes anime generadas por Stable Diffusion y evaluar si son aptas para publicación.

Criterios de RECHAZO (responde RECHAZADO + razón):
- Ojos desalineados, pupilas derretidas o mirada bizca
- Miembros extra (3 brazos, más de 5 dedos en una mano)
- Espejos o reflejos rotos (clon flotando en vidrio)
- Cuerpos estirados artificialmente
- Fondos abstractos de color plano en lugar de escenarios reales
- Manos deformes o dedos fusionados

Si la imagen es anatómicamente correcta, responde únicamente: APTO
Si encuentra errores, responde: RECHAZADO: [describe el error brevemente]
```

## Siguientes Pasos Inmediatos

1. **Crear nodo Agent** en Flowise con el system prompt del Crítico
2. **Conectar** la salida del MCP generate-image a la entrada del Agente Crítico
3. **Configurar** la lógica condicional: si APTO → guardar, si RECHAZADO → reintentar
4. **Probar** el flujo completo con una imagen de prueba
5. **Optimizar** el system prompt según resultados reales

## Notas Técnicas

- **Sharp** se instaló dentro del contenedor Docker para el MCP server
- **Ruta del MCP server** dentro de Docker: `/app/mcp_servers/sd-webui-mcp/dist/index.js`
- **Volumen Docker** montado: `c:/PlumLoom_AI/mcp_servers:/app/mcp_servers`
- Forge Neo debe estar corriendo con `--listen` para aceptar conexiones desde Docker
