CULTIVA IA — Agentes-IA

Recuperación Iterativa de Contexto

Patrón multiagente: el subagente encuentra los ficheros correctos sin ahogarse en tokens — en 2 ciclos

🏢 VendaFlow SaaS
🐛 Bug #347 — Exportación PDF plan Basic
📁 Repo: ~600 ficheros .ts
🔄 Ciclos ejecutados: 2 / 3 máx
🎯
Tarea del subagente
Bug #347: Los usuarios con plan Basic no pueden exportar informes en PDF
La exportación falla silenciosamente. No aparece error en la UI. Solo afecta a plan Basic; los planes Pro y Enterprise funcionan correctamente. El subagente debe encontrar el contexto relevante (5–8 ficheros de 600) para diagnosticar y corregir el bug.
1
Ciclo 1 — Búsqueda inicial amplia
Términos obvios: export, pdf, report
⚡ Dispatch

Query inicial — términos de la tarea, rutas amplias:

export pdf report download

Patrones buscados:

src/**/*.ts routes/**/*.ts services/**/*.ts

Excluidos:

*.test.ts *.spec.ts node_modules/**
🔍 Evaluate

Candidatos encontrados y puntuación de relevancia:

services/report.service.ts
0.90
routes/reports.router.ts
0.75
controllers/export.ctrl.ts
0.60
utils/date-format.ts
0.15
models/report-template.ts
0.30
Gap detectado: Ningún fichero menciona lógica de planes/subscripción. El bug puede estar en un guardia de permisos, no en el export en sí.
✏️ Refine

El codespace usa terminología propia — descubierta en los ficheros de alta relevancia:

AÑADIR plan subscription permission feature-flag tier
EXCLUIR utils/date-format.ts
ENFOCAR middleware/** guards/**

Codebase usa SubscriptionGuard como patrón de permisos.

🔁 Loop

Decisión — ¿suficiente contexto?

NO — continuar ciclo 2
Solo 2 ficheros con score ≥ 0.7. Gap crítico: sin contexto de guards/permisos de plan. El bug probablemente vive ahí.
Contexto acumulado: 2 ficheros de alta relevancia guardados para combinar con ciclo 2.
refinando query
2
Ciclo 2 — Términos del dominio real
SubscriptionGuard, feature-flag, plan tier
⚡ Dispatch

Query refinada con terminología del codebase:

SubscriptionGuard feature-flag plan tier permission

Nuevas rutas incluidas:

middleware/**/*.ts guards/**/*.ts config/features*.ts

Excluidos (confirmados irrelevantes):

utils/date-format.ts models/report-template.ts
🔍 Evaluate

Nuevos candidatos — muy alta relevancia:

guards/subscription.guard.ts
0.95
config/feature-flags.ts
0.88
middleware/plan-check.ts
0.92
models/subscription.model.ts
0.70
Gap resuelto: plan-check.ts contiene la lógica allowedFeatures['pdf-export'] — el bug está aquí: plan Basic no está en la lista permitida.
✏️ Refine

Contexto prácticamente completo. Un último ajuste:

AÑADIR allowedFeatures PlanType
ENFOCAR types/plans.ts

La causa raíz es clara: el objeto allowedFeatures en plan-check.ts tiene pdf-export: ['Pro', 'Enterprise'] — falta 'Basic'.

✅ Stop

Decisión — ¿suficiente contexto?

SÍ — contexto suficiente
6 ficheros con score ≥ 0.70. Causa raíz identificada. Sin gaps críticos pendientes. El subagente puede proceder al fix sin más iteraciones.
Total acumulado: 6 ficheros relevantes de 600. Tokens leídos: ~12.000 de ~480.000 disponibles.
Contexto final entregado al subagente
2 ciclos completados — Bug localizado — Listo para fix
6
ficheros relevantes
600
ficheros en repo
2.5%
tokens usados
2
ciclos (de 3 máx)
Ficheros entregados al subagente (score ≥ 0.70)
🛡️
middleware/plan-check.ts
Causa raíz — allowedFeatures['pdf-export']
0.92
🔒
guards/subscription.guard.ts
Guard que invoca plan-check
0.95
⚙️
config/feature-flags.ts
Definición de flags por plan
0.88
📊
services/report.service.ts
Servicio de generación PDF
0.90
🗺️
routes/reports.router.ts
Endpoints y aplicación del guard
0.75
📦
models/subscription.model.ts
Tipo PlanType (Basic/Pro/Enterprise)
0.70
Fix propuesto — plan-check.ts
// ANTES (bug) const allowedFeatures: Record<string, PlanType[]> = { 'pdf-export': ['Pro', 'Enterprise'], // ← Basic excluido silenciosamente 'csv-export': ['Basic', 'Pro', 'Enterprise'], 'scheduled-reports': ['Enterprise'], }; // DESPUÉS (fix bug #347) const allowedFeatures: Record<string, PlanType[]> = { 'pdf-export': ['Basic', 'Pro', 'Enterprise'], // ✓ Bug #347 resuelto 'csv-export': ['Basic', 'Pro', 'Enterprise'], 'scheduled-reports': ['Enterprise'], };
💡
Terminología descubierta
Ciclo 1 reveló que el codebase usa "SubscriptionGuard" y "feature-flag" — no "permission" ni "role". Sin iteración, el agente habría buscado en el lugar equivocado.
🎯
Precisión quirúrgica
Solo 6 de 600 ficheros. El subagente trabajó con el 2.5% del repo en tokens, manteniendo >97% del contexto disponible para razonar sobre la solución.
Stop temprano
El bucle paró en ciclo 2 (de 3 máximo) al detectar que la causa raíz era clara y no quedaban gaps críticos. Menos ciclos = menos latencia y coste.