Cursor Agent en proyectos grandes: 7 métodos para resolver archivos no encontrados y código incorrecto

Apareció el tercer mensaje de error en pantalla.
Hace un momento pedí a Cursor Agent que refactorizara el módulo de login: cinco archivos — formulario frontend, ruta API, middleware de autenticación, modelo de usuario y capa de caché Redis. Tras dos minutos, el Agent dijo con confianza: «Listo». Ejecuté el código y… se cayó.
Al revisar descubrí que encontró cuatro archivos pero solo modificó tres. Peor aún: «optimizó» la lógica del middleware que ya era correcta y todas las peticiones de login devolvían 401. Media hora revirtiendo a mano, reordenando dependencias y terminando yo el resto.
En ese momento dudaba: ¿puede un asistente de programación con IA manejar proyectos grandes?
Pasé dos semanas estudiando cómo funciona Cursor Agent, leyendo decenas de artículos y probando en proyectos reales. Acabé con un método para que el Agent sea más fiable en proyectos grandes. Ahora la tasa de éxito al refactorizar con Agent subió de menos del 50% a más del 90%.
Este artículo comparte 7 trucos prácticos desde gestión de contexto, división de tareas y revisión de código. No son teoría: son lecciones de proyectos reales.
Por qué el Agent falla en proyectos grandes
Antes de los trucos, conviene entender por qué falla. No es que «sea tonto»: hay tres limitaciones objetivas.
El contexto es el mayor cuello de botella
Aunque un modelo prometa 200k tokens, en un proyecto real no alcanza. Un proyecto frontend/backend mediano tiene cientos de archivos principales, cada uno con cientos o miles de líneas. Suma package.json, configs, tests… y superas el límite con facilidad.
El Agent no puede «ver» todo el proyecto. Solo ve los archivos mencionados en la conversación más lo que el índice automático de Cursor asocia. Es como buscar en un campo de fútbol viendo solo cinco metros: lo que se pierde es inevitable.
Probé en un proyecto React+Node.js: la misma petición en proyecto pequeño (20 archivos) tenía 85% de éxito a la primera; en mediano (50) bajaba al 60%; en grande (100+) caía al 35%. La diferencia es clara.
El «miopía» del Agent
El Agent suele «no ver» archivos de dependencia indirecta.
Si pides cambiar una ruta API, modifica la ruta y el Controller correspondiente. Pero ese Controller llama a una utilidad, que depende de un módulo de config… En cadenas ocultas, a menudo deja de rastrear en el segundo nivel.
Lo peor es la preferencia por lo reciente: prioriza archivos abiertos recientemente o mencionados en el chat. Si antes hablaste de un archivo sin relación con la tarea, puede incluirlo y cambiarlo mal. Y el archivo clave que no nombraste puede quedar fuera.
Falta de visión global
Es lo más grave.
Un desarrollador repasa mentalmente la arquitectura: ¿qué módulos intervienen? ¿Cómo se comunican? ¿Cambiar A afecta a B? El Agent no. Cada tarea es «optimización local»: mira el código a mano, elige la solución más razonable y actúa.
Vi un caso extremo: pedí optimizar consultas a base de datos. Añadió índices y ajustó SQL; fue más rápido. Tres días después la memoria explotó: para «optimizar» había puesto precarga de datos completos en caché y Redis colapsó.
El Agent no conoce el diseño global. Ve rendimiento y optimiza rendimiento; ve duplicación y extrae funciones, sin pensar si rompe la intención del diseño.
3 trucos clave de gestión de contexto
Sabiendo el problema, toca actuar. La gestión de contexto es lo primero: controla lo que el Agent «ve» y muchos problemas desaparecen.
Truco 1: optimizar Project Rules
Muchos meten todas las rules del proyecto en modo always. Es el error más grande.
always significa «cargar estas rules en cada conversación». Suena bien, pero consume tokens sin parar. Frontend, backend, tests, docs… cada uno con sus normas. Si todo va en always, un tercio de los tokens se va antes de empezar.
Lo correcto: Auto Attached + coincidencia glob
Ejemplo de un proyecto frontend/backend que mantengo:
# .cursorrules (raíz del proyecto)
# Reglas generales (solo lo esencial)
- type: always
rules:
- Usar TypeScript
- Seguir configuración ESLint
- Toda operación async debe tener manejo de errores
# Reglas frontend (solo al modificar frontend)
- type: auto
glob: "src/frontend/**/*.{ts,tsx}"
rules:
- Usar React Hooks
- Componentes con PropTypes o tipos TypeScript
- Usar Tailwind CSS, sin estilos inline
# Reglas backend (solo al modificar backend)
- type: auto
glob: "src/backend/**/*.ts"
rules:
- Rutas API con validación de entrada
- Operaciones de BD en transacciones
- No registrar información sensible en logs
# Reglas de tests
- type: auto
glob: "**/*.test.ts"
rules:
- Cada test con descripción clara
- Estructura Jest describe/it
Así el Agent carga reglas solo cuando hace falta. Medí: uso de tokens bajó un 70% y ya no se distrae con reglas irrelevantes.
Truco: al final de cada regla añade «si no estás seguro, pregúntame primero». Con eso, en casos límite pregunta en lugar de adivinar.
Truco 2: Long Context y Summarized Composers
Cursor tiene dos funciones útiles que muchos ignoran.
Long Context
Es un interruptor; actívalo en tareas complejas. El Agent usa una ventana de contexto mayor y ve más código.
No lo dejes siempre activo: consume tokens rápido y alarga el tiempo de respuesta. Mi hábito:
- Tareas normales (función, bug): desactivado
- Tareas complejas (refactor, nueva función): activado
- Muy complejas (refactor entre módulos): activado + referencias manuales con @
Summarized Composers
Permite acceder a resúmenes de conversaciones anteriores, no al historial completo. Ideal para proyectos largos.
Ayer el Agent escribió una utilidad; hoy quieres extenderla. Si dices «usa la función de ayer», puede no encontrarla. Con Summarized Composers busca en resúmenes del historial.
Mi flujo: al terminar un módulo grande, abro un Chat nuevo y empiezo con «En este proyecto ya implementamos XX, código en XX». Contexto histórico sin arrastrar demasiado detalle.
Truco 3: gestionar el contexto de forma activa
Lo más importante y lo que más se olvida.
No esperes que el Agent encuentre todos los archivos: dile qué ver y qué no.
Referencia archivos clave: sintaxis @
Al describir la tarea, marca con @archivo:
Ayúdame a refactorizar el flujo de autenticación. Archivos implicados:
@src/routes/auth.ts (ruta de autenticación)
@src/middleware/jwt.ts (middleware JWT)
@src/models/User.ts (modelo de usuario)
@src/utils/password.ts (utilidad de contraseña)
No modifiques otros archivos.
Esa última frase importa. Medí: con ella, cambios en archivos irrelevantes bajan del 30% a menos del 5%.
Limitar el alcance de cambios
Si solo afecta a un subdirectorio, dilo:
Añade un componente de recuperación de contraseña en src/frontend/components/auth/,
sin modificar código de otros directorios.
Uso avanzado: lista blanca + negra
Puedes modificar: todos los archivos bajo src/api/**
No modifiques: src/api/legacy/** (código legacy pendiente de retirar)
Libertad suficiente sin tocar lo prohibido.
Mi hábito: antes de asignar una tura, pienso «¿cuántos archivos como máximo debería tocar? ¿qué directorios?» y se lo digo al Agent. Parece molesto, pero ahorra mucho tiempo corrigiendo bugs después.
2 reglas de oro para dividir tareas
La gestión de contexto mitiga «no ver todo», pero tareas demasiado complejas también fallan. Ahí entra la división de tareas.
Truco 4: dividir por responsabilidad, no por archivos
Fue el error más grande que cometí.
Al principio dividía por archivos. Registro de usuario:
- Componente de formulario frontend
- Ruta API backend
- Modelo de base de datos
Suena razonable, pero en la práctica:
- Frontend sin saber la forma de la API
- Backend con parámetros distintos a lo que esperaba el frontend
- Modelo con tipos incorrectos; frontend y backend otra vez
Mucho ida y vuelta, más lento.
División correcta: por responsabilidad funcional
Mismo ejemplo de registro:
Paso 1: flujo básico de registro (MVP)
Tarea 1: registro mínimo viable
- Frontend: formulario solo con usuario y contraseña
- Backend: API de registro + validación básica
- BD: modelo User (campos mínimos)
Objetivo: flujo completo que registre un usuario
Paso 2: validación y seguridad
Tarea 2: validación y seguridad
- Formato de email
- Fortaleza de contraseña
- Anti-duplicados
- Almacenamiento cifrado
Paso 3: experiencia de usuario
Tarea 3: mejorar UX de registro
- Validación en tiempo real
- Auto-login tras registro
- Email de bienvenida
¿La diferencia? Cada tarea es vertical: frontend, backend y BD en un punto funcional independiente.
Ventajas:
- Cada tarea se prueba sola: tras la tarea 1 ya corre
- Menos retrabajo: frontend y backend juntos detectan problemas de API al instante
- El Agent entiende mejor: objetivo claro, menos confusión
Medí: con división por responsabilidad, éxito a la primera del 60% al 85%.
Truco 5: checkpoints claros
Este truco me salvó muchas veces.
En proyectos grandes: cambias mucho, la dirección era mala y ya no puedes volver. Con Agent no pregunta «¿guardamos antes?» y modifica. Cuando te das cuenta, pueden ser docenas de archivos.
Usar Checkpoint
Cursor tiene Checkpoint, muy útil y subestimado.
Antes de empezar, crea un checkpoint:
# En Cursor: Cmd/Ctrl + Shift + P
# Escribe Create Checkpoint
# Nota: antes de refactorizar módulo de login
Deja trabajar al Agent. Si algo va mal, rollback al checkpoint y se deshace todo.
Mi hábito:
- Nueva tarea grande: checkpoint
- Tras el Agent: pruebas OK → borrar checkpoint; fallan → rollback
- Varias tareas pequeñas: checkpoint cada 2-3 tareas
Si el Agent falla, pierdes como mucho una tarea pequeña.
Desarrollo guiado por pruebas (TDD)
Más avanzado: tests primero, implementación después.
Parece trabajo extra, pero en proyectos grandes ayuda:
1. Escribe tests manualmente (comportamiento esperado)
2. Ejecuta y confirma que fallan (aún no hay implementación)
3. Pide al Agent implementar hasta que pasen
4. Si no pasan, el Agent entendió mal: para de inmediato
Los tests son una condición de parada clara. El Agent no divaga; busca «hacer pasar los tests».
En un proyecto Node.js refactoricé todo el módulo de autenticación así: siete iteraciones, sin desviarse. Sin tests, más de diez intentos con bugs.
2 prácticas clave de revisión y monitorización
Lo anterior reduce errores, pero cero no es realista. La última línea: revisión y monitorización — detectar pronto y cortar pérdidas.
Truco 6: revisión en varios niveles
Error común: creer que con IA ya no hace falta Code Review.
Al contrario: con IA la revisión importa más. Los errores del Agent suelen ser sutiles — sintaxis correcta, lógica aparentemente coherente, pero «no encaja». Lo que un humano ve al instante, el Agent puede no ver.
Reglas automáticas en Cursor Rules
Puedes definir reglas de Code Review en .cursorrules. Mi configuración:
# .cursorrules (sección de revisión)
code_review_rules:
# Crítico (obligatorio corregir)
critical:
- "No hardcodear contraseñas, API keys u otros secretos"
- "Consultas BD parametrizadas para evitar SQL injection"
- "Validar y sanitizar toda entrada externa"
# Advertencia (muy recomendable)
warning:
- "Funciones no más de 50 líneas; considerar dividir"
- "Evitar any; tipos explícitos"
- "Async con try-catch o .catch()"
# Info (optimización opcional)
info:
- "Considerar tests unitarios"
- "Comentarios en lógica compleja"
- "Extraer código duplicado a funciones comunes"
Tras cada tarea, pido auto-revisión:
Tarea terminada. Revisa el código según code_review_rules en .cursorrules
y lista problemas critical y warning.
El Agent lista problemas; a menudo detecta en revisión lo que escribió antes. Es mirar el código desde otro ángulo.
Estrategia humano + máquina
Solo Agent no basta; solo manual es agotador. Nivel por nivel:
- Primera pasada Agent (auto): errores sintácticos y de estilo obvios
- Revisión humana focalizada:
- ¿Lógica de negocio correcta? (donde más falla el Agent)
- ¿Condiciones límite completas?
- ¿Impacto en rendimiento? (N+1, etc.)
- ¿Seguridad? (SQL injection, XSS, etc.)
- Validación con tests: no romper funcionalidad existente
No revises línea a línea — pierdes tiempo. Centra la lógica core y riesgos; el resto, herramientas y tests.
En proyectos grandes, ~15-20% del código del Agent tiene problemas:
- 5% bugs graves (lógica, seguridad)
- 10% calidad (rendimiento, mantenibilidad)
- 5% funciona pero no cumple normas del proyecto
Sin revisión, salen semanas después con coste de diagnóstico mucho mayor.
Truco 7: Git como último seguro
Suena básico, pero muchos no le dan importancia.
Usa git diff
Tras cambios del Agent, lo primero no es ejecutar tests:
git diff
Qué archivos cambiaron y cómo. Siempre reviso:
- ¿Volumen de cambios esperado? (decenas de archivos = alerta)
- ¿Archivos irrelevantes tocados?
- ¿Lógica clave alterada?
Truco: git diff --stat primero:
git diff --stat
# Ejemplo de salida:
# src/api/auth.ts | 25 +++++---
# src/models/User.ts | 12 ++--
# src/utils/password.ts | 3 +-
# src/config/database.ts | 150 ++++++++++++++++++++++++++++++++++++++++++++++
Si un archivo suma 150 líneas y la tarea no lo pedía… mira qué pasó.
Checkpoint + Git juntos
Doble seguro:
1. Antes de empezar:
- git checkout -b feature/xxx (nueva rama)
- Crear Cursor Checkpoint
2. Tras el Agent:
- git diff (revisar)
- Ejecutar tests
- Si OK: git commit
- Si no:
- Problema pequeño: arreglo manual o corrección puntual
- Grande: rollback Checkpoint o git reset --hard
3. Tras confirmar:
- git push
- Abrir Pull Request
Ventajas:
- Checkpoint: rollback rápido sin historial Git
- Rama Git: aislamiento de la rama principal
- Historial de commits: trazabilidad
Hábito: en commits de tareas del Agent anoto:
git commit -m "feat: añadir registro de usuario (by AI Agent)"
Si hay problemas después, el commit indica código generado por Agent y reviso con más cuidado.
Conclusión
Volvamos a la escena de la una de la madrugada del inicio.
Si hoy refactorizara el módulo de login con Cursor Agent:
- Contexto: .cursorrules del módulo de auth; @ en los 5 archivos clave; «solo modifica estos 5»
- División: no todo de golpe; flujo básico, luego validación, luego caché
- Revisión: tras cada subtarea, git diff, tests, y seguir solo si está bien
Así, probabilidad de no encontrar archivos del 50% a menos del 10%; de código incorrecto del 30% a menos del 5%. Tiempo extra por tarea: 5-10 minutos.
Las herramientas de programación con IA no son omnipotentes. No diseñan arquitectura, no entienden negocio por ti ni asumen calidad de código. Pero bien usadas duplican eficiencia — si aprendes a «gestionarlas».
Contexto, división de tareas, revisión de código — las tres dimensiones son imprescindibles. Contexto para que el Agent «vea bien»; división para que «haga bien»; revisión para que «duermas tranquilo».
Sugerencia: si usas Cursor Agent en un proyecto grande, dedica 10 minutos hoy a revisar Project Rules. Cambia always por auto + glob: ahorras tokens y el Agent mejora al instante.
La tecnología avanza, pero algunos principios no cambian: requisitos claros, tareas divididas, verificación continua. Válido para IA y para cualquier proyecto complejo.
¿Qué problemas has tenido con Cursor Agent? Comparte en los comentarios.
Flujo completo de Cursor Agent en proyectos grandes
Desde el inicio de la tarea hasta la confirmación final, para que el Agent trabaje de forma eficiente y fiable en proyectos grandes
Estimated time: PT30M
-
1
Step 1: Preparación: contexto y checkpoints
La gestión de contexto es clave; antes de empezar hay que preparar bien: -
2
Step 2: Ejecución: controlar el alcance del Agent
En ejecución hay que acotar el trabajo del Agent y evitar omisiones o cambios indebidos: -
3
Step 3: Revisión: comprobar cambios en varios niveles
Tras el Agent, revisión multinivel antes de confirmar: -
4
Step 4: Decisión y commit: tras pasar pruebas
Según revisión y tests, decidir el siguiente paso: -
5
Step 5: Confirmación final: push y PR
Tras confirmar cambios, subir al remoto y abrir Pull Request:
FAQ
¿Por qué usar auto + glob en lugar del modo always para configurar Project Rules?
Ventajas de auto + glob:
• El Agent solo carga reglas relevantes al modificar el código correspondiente (p. ej., reglas de frontend al tocar frontend)
• Uso de tokens reducido un 70%
• El Agent no se distrae con reglas irrelevantes y se centra en la tarea
• Ejemplo de configuración: type: auto, glob: "src/frontend/**/*.{ts,tsx}"
Resultado medido: en proyectos medianos, tras pasar a auto, la velocidad de respuesta del Agent subió un 50% y entiende mejor los requisitos.
¿Qué diferencia hay entre dividir por responsabilidad y por archivos? ¿Por qué se recomienda lo primero?
• Primero frontend → luego backend → por último base de datos
• Al escribir frontend no sabes cómo será la API y adivinas
• Al escribir backend descubres parámetros incorrectos del frontend y hay que volver atrás
• El modelo de datos sale mal y frontend/backend hay que rehacerlo
• Mucho retrabajo y menos eficiencia
Ventajas de dividir por responsabilidad (vertical):
• Cada tarea es una funcionalidad completa (frontend + backend + base de datos)
• Ej.: tarea 1 flujo básico de registro, tarea 2 validación reforzada, tarea 3 UX
• Tras la tarea 1 ya puedes probar sin esperar a terminar todo
• Frontend y backend juntos: los problemas de API salen al momento
• El Agent entiende mejor el objetivo y no se confunde
Dato medido: con división por responsabilidad, la tasa de éxito a la primera pasa del 60% al 85%.
¿Qué diferencia hay entre Cursor Checkpoint y una rama Git? ¿Cuál usar?
Cursor Checkpoint:
• Creación y rollback rápidos sin tocar el historial Git
• Ideal para cambios experimentales o tareas inciertas
• Tras rollback se deshace todo al instante, sin rastro
• Inconveniente: no se sube al remoto, solo local
Rama Git:
• Aísla cambios sin afectar la rama principal
• Historial completo de commits para trazabilidad
• Se puede push al remoto, mejor para equipo
• Rollback con git reset o git revert
Uso combinado recomendado:
1. Antes de empezar: rama Git (aislar) + Checkpoint (rollback rápido)
2. Tras el Agent: problema pequeño → rollback Checkpoint; grande → git reset --hard
3. Tras pasar pruebas: git commit (historial) y borrar Checkpoint
Así tienes rollback rápido y ventajas de control de versiones.
¿Cuándo conviene activar el modo Long Context?
Escenarios adecuados:
• Refactorización entre módulos (5+ archivos)
• Desarrollo complejo (varios módulos interactuando)
• Bugs en varios archivos
• Optimización de rendimiento revisando la cadena de llamadas
No hace falta activarlo:
• Cambiar una función o componente
• Bug simple (1-2 archivos)
• Añadir comentarios o documentación
• Formateo de código
Criterio:
• ≤ 3 archivos: no activar
• 4-6 archivos: según complejidad
• ≥ 7 archivos: activar y referenciar archivos clave con @
Truco: si dudas, empieza sin activarlo. Si no encuentra archivos clave o entiende mal, activa Long Context y repite.
¿Qué proporción del código del Agent suele tener problemas? ¿Cuáles son los más frecuentes?
Distribución:
• 5% bugs graves (lógica, seguridad, riesgo de pérdida de datos)
• 10% calidad (rendimiento, mantenibilidad, duplicación)
• 5% funciona pero no cumple normas del proyecto (nombres, comentarios, etc.)
Tipos más comunes:
1. Error de lógica de negocio (el más frecuente)
- Implementación literal ignorando reglas implícitas
- Ej.: borrado físico en lugar de soft delete al «eliminar usuario»
2. Condiciones límite incompletas
- Nulos, excepciones, conflictos de concurrencia
3. Problemas de rendimiento
- Consultas N+1, fugas de memoria, carga de datos completos
4. Riesgos de seguridad
- SQL injection, XSS, filtración de datos sensibles, permisos faltantes
Cómo actuar:
• No confíes ciegamente; haz Code Review
• Revisa lógica de negocio, límites, rendimiento y seguridad
• Reglas automáticas en .cursorrules (code_review_rules)
• Pide al Agent auto-revisión antes de dar por cerrado
Tras detectar: arreglo manual o corrección puntual; si es grave, rollback.
¿Cómo evitar que el Agent modifique archivos que no debe?
Delimitar el alcance:
• Al final de la tarea: «No modifiques otros archivos»
• Medido: con esa frase, la probabilidad de cambios erróneos baja del 30% a menos del 5%
Lista blanca + negra:
• Permitido: «Puedes modificar todos los archivos bajo src/api/**»
• Prohibido: «No modifiques src/api/legacy/** (código legacy)»
• Da libertad sin tocar lo prohibido
Referencia con @:
• Lista explícita de archivos a modificar
• Ej.: «Archivos implicados: @src/routes/auth.ts, @src/middleware/jwt.ts»
• El Agent prioriza esos archivos
git diff al terminar:
• Ejecuta git diff --stat
• Comprueba que la lista de archivos coincide
• Si hay archivos extraños, rollback o restauración manual
.cursorrules:
• Regla: «Sin autorización explícita, no modifiques módulos core»
• Comentarios en directorios críticos explicando por qué no tocarlos
Combinados, minimizan la probabilidad de modificaciones indebidas.
¿Cómo ayuda el desarrollo guiado por pruebas (TDD) al Agent?
Problemas del enfoque tradicional:
• Tras implementar, no sabes si entendió bien
• Puede haber cambiado docenas de archivos en la dirección equivocada
• Retrabajo costoso y posible rotura de otras funciones
Ventajas de TDD:
• Los tests definen el comportamiento esperado
• El Agent se centra en «hacer pasar los tests», sin divagar
• Fallo inmediato = parar a tiempo
• Los tests documentan el comportamiento
Flujo:
1. Escribe tests manualmente (o con Agent, pero revísalos)
2. Ejecuta y confirma que fallan (aún no hay implementación)
3. Pide al Agent: «Implementa XX para que pasen los tests en @test/xxx.test.ts»
4. Tras terminar: pasan → commit; fallan → revisar o rollback
Caso real:
• Refactor de autenticación con TDD: siete iteraciones, sin desviarse
• Sin tests: más de diez intentos con bugs
Clave: la calidad de los tests determina el resultado del Agent.
13 min de lectura · Publicado el: 10 ene 2026 · Actualizado el: 21 ago 2026
Guía completa de Cursor
Si llegaste desde búsqueda, lo más rápido es ir al artículo anterior o siguiente de esta misma serie.
Anterior
Configuración avanzada de Cursor Rules: crea tu asistente de programación con IA
Aprende la configuración avanzada de Cursor Rules para un asistente de IA personalizado: evolución del sistema, formato MDC, casos reales y técnicas de depuración con reglas completas para React, Next.js y Python
Parte 6 de 25
Siguiente
Modo Agent de Cursor en la práctica: 10 trucos que tardé tres meses en dominar
De pesadillas con bugs a las dos de la madrugada a una colaboración fluida: experiencia real con el modo Agent de Cursor, errores a evitar y trucos de productividad para dominar de verdad tu asistente de programación con IA
Parte 8 de 25



Comentarios
Inicia sesión con GitHub para dejar un comentario