Auto-Plan: prompt NODAL funcional ganador 100 % calidad vía OpenRouter (s48)
Resumen
En la sesión 48 (2026-05-03), tras 10+ iteraciones manuales con seed=43 fijo, el prompt de Auto-Plan AI converge a 100 % de calidad sobre el plano de prueba de 68 racks usando el modelo google/gemma-4-26b-a4b-it:free vía OpenRouter BYOK Google AI Studio.
El cambio clave es la reformulación del criterio de clasificación NODAL: de un único predicado restrictivo (ONLY 3+ cables) a 4 condiciones disjuntivas inclusivas, cerrando así el experimento de migración desde self-host EPYC.
Contexto
Self-host s47g (EPYC pve-epyc-02) | OpenRouter BYOK — s48 | |
|---|---|---|
| Tiempo plano 70 racks | 4:45 | 2:09 ⚡ 2,2× |
| Calidad racks | 100 % (68/68) | 100 % (68/68) |
| Walls | — | 18 |
| Texts | — | 22 |
| Connections | — | 67 |
| Coste | servidor EPYC fijo | $0 (free tier personal) |
| Mantenimiento | Proxmox + LXC + llama.cpp | sin servidor |
| Reproducibilidad | varianza de muestreo | bit-a-bit con seed=43 |
Cambios en los prompts
Archivos afectados (sincronizados):
prompts/blueprint_analyst.mdprompts/blueprint_analyst_default.md
Sección 1 — RACKS & NODAL HUBS (reescrita)
Antes (s47g):
"NODAL": A rack is ONLY a NODAL if it acts as a central hub where
cables from MULTIPLE (3+) other racks converge.
*** ANTI-HALLUCINATION WARNING ***: Do NOT classify a rack as NODAL
just because it is physically large or colored.
ORPHAN RULE: A NODAL without any cables connected to it in your final
JSON is a hallucination.
Después (s48):
A rack MUST be classified as "NODAL" if ANY of these conditions is true:
- It is the endpoint or hub of cables coming from MULTIPLE (3+) other racks.
- It unifies/aggregates connections from a group of racks (distribution point).
- It is colored orange / red / yellow or visually highlighted vs its neighbours.
- It is labeled "NODE", "NODO", "MDF", "IDF", "MAIN", "DIST", "CORE" or similar.
IMPORTANT: NODAL is a FUNCTIONAL role, NOT about size.
IMPORTANT: COUNT the cables before classifying. ≥3 → NODAL by default.
IMPORTANT: A network drawing typically contains MULTIPLE NODAL racks.
Razonamiento del cambio: Las reglas anti-hallucination de s47g producían sub-clasificación: el modelo ignoraba el NODAL grande (visualmente destacado) por miedo a “alucinar” y lo dividía en racks adyacentes. Edu comprobó empíricamente que usar color y label como pistas es beneficioso, no perjudicial.
Sección 3 — Walls (addendum)
Añadido detect colors: "black", "blue", "green", "red", etc. para enriquecer la extracción estructural.
Sin cambios
Secciones 2 (CONNECTIONS), 4 (TEXTS & SYMBOLS) y OUTPUT FORMAT permanecen idénticas a s47g.
Validación PROD
Plano test: 70 racks visibles / 68 ground truth.
- Racks: 68/68 ✅ — ambos nodales unificados, posiciones correctas (verificación visual de Edu).
- Walls: 18 | Texts: 22 | Connections: 67 | Symbols: 0.
- Tiempo de procesamiento: 2 min 9 s.
- Coste: $0 (Google AI Studio free tier vía BYOK personal).
- Reproducibilidad: bit-a-bit con
seed=43(2 disparos consecutivos idénticos).
Palancas descartadas en iteraciones previas
Durante la sesión 48, antes de converger al cambio de prompt, se probaron y descartaron como neutras o perjudiciales las siguientes palancas técnicas del driver OpenRouter:
- Resolución de imagen.
detail(OpenAI-style).- Calidad JPEG.
temperature.frequency_penalty.
El único cambio efectivo fue la reformulación del criterio NODAL en el texto del prompt.
Próximo paso
Decidir el destino del servidor EPYC pve-epyc-02: apagar, repurposar o mantener como fallback DR. Pendiente para sesión 49.
Véase también
- [[entity—autoplan—endpoint—import]]
- [[feature—autoplan—openrouter-driver]]
- [[concept—autoplan—nodal-classification]]
- [[decision—20260503—openrouter-vs-selfhost-epyc]]