Comprender tu base de código
Una de las tareas más importantes de un ingeniero de software es formarse un mapa mental de una base de código y entender a fondo cómo funciona el sistema. A medida que un proyecto crece, resulta cada vez más difícil encontrar el código adecuado.
Antes, explorar una base de código extensa implicaba memorizar patrones de expresiones regulares o aprender a usar herramientas especializadas para buscar eficazmente. Con los agentes de programación, puedes describir lo que buscas en lenguaje natural y dejar que el agente use herramientas para encontrarlo.
Cursor proporciona a los agentes herramientas específicas para realizar búsquedas eficaces, y entender cómo funcionan te ayudará a hacer mejores preguntas y obtener resultados más precisos.
Búsqueda agéntica
La forma más precisa de encontrar un fragmento de código es buscar una coincidencia exacta, ya sea el nombre de una función, una variable u otra parte del código.
Los agentes pueden usar grep, una herramienta para encontrar cadenas exactas, y crear patrones regex más complejos o coincidencias en límites de palabra. También existen mejoras de grep, como ripgrep, que permiten realizar búsquedas recursivas.
Ambas herramientas funcionan muy bien. Sin embargo, Cursor ha mejorado aún más grep con Instant Grep, que puede acelerar considerablemente las búsquedas agénticas en bases de código grandes en comparación con ripgrep.
No necesitas configurar nada ni cambiar tu forma de trabajar para usar estas herramientas. Cursor las proporciona automáticamente y, cuando chateas con un agente, este las usa internamente.
Buscar por significado
Cuando no conoces el símbolo ni el texto exactos, Agent puede buscar en tu base de código por significado. Combina esta búsqueda con grep para encontrar archivos relevantes y rastrear referencias exactas. Consulta cómo busca Agent en tu base de código para más detalles.
Hacer buenas preguntas
La forma de plantear las preguntas influye en qué herramientas de búsqueda usa el agente y en la eficacia de los resultados. Hay un espectro que va de lo específico a lo general: puedes empezar pidiendo una coincidencia exacta de texto, como el nombre de una función, o hacer búsquedas más generales, como «ayúdame a entender qué ocurre cuando un usuario realiza un pago en nuestra aplicación».
Empieza por algo específico cuando sepas lo que buscas. Haz búsquedas más generales cuando explores terreno desconocido. Veamos algunos ejemplos.
En este primer ejemplo, el agente empieza con grep porque la instrucción pide algo específico. Busca import.*PaymentService para encontrar todos los archivos que hacen referencia al servicio.
Cuando explores terreno desconocido, haz búsquedas más generales. En este siguiente ejemplo, hacemos una pregunta general sobre cómo la aplicación gestiona los pagos fallidos. Observa que la primera llamada a herramienta es «Buscar en la base de código». El agente encuentra archivos relevantes y luego usa grep para completar los detalles.
El subagente de exploración
El agente también puede generar subagentes para completar tareas de forma más eficiente.
Hay un subagente de exploración integrado que te ayuda a buscar en tu base de código. El subagente de exploración se ejecuta en su propia ventana de contexto, independiente del agente principal, y usa un modelo más rápido, por lo que puede realizar muchas búsquedas en paralelo sin saturar la conversación principal.
No tienes que invocarlo manualmente. El agente lo usará cuando considere que es relevante. Sin embargo, también puedes pedirle que use el subagente directamente si lo prefieres.
Como vimos en el curso de fundamentos, es importante comprender y controlar el consumo de contexto. Si buscas en muchos archivos de tu base de código, se generará mucho contexto. Los subagentes pueden mejorar significativamente la gestión del contexto al devolver solo sus hallazgos y mantener la conversación principal enfocada.
Diagramas arquitectónicos
Para bases de código grandes o poco conocidas, puedes pedirle al agente que genere diagramas arquitectónicos, como diagramas de Mermaid, para visualizar mejor tu base de código.
Estos diagramas son útiles para la incorporación, la documentación y las revisiones de diseño. También pueden revelar problemas arquitectónicos, como un servicio que depende de demasiados otros servicios o un flujo de datos que sigue una ruta inesperada.
Patrón de error común: cambiar antes de comprender
Un error común es pedirle al agente que modifique código sin entender primero lo que ya existe. El agente podría crear una nueva función de utilidad cuando ya hay una, o usar un patrón distinto al del resto de tu base de código.
Antes de pedir cambios, pídele al agente que primero explore:
Los agentes de programación interpretan tus solicitudes literalmente. Cuando no indicas la intención, aplican su mejor criterio. A veces funciona bien. Pero, para cambios que deben seguir patrones existentes, obtendrás mejores resultados si primero entiendes la base de código y sabes exactamente qué pedir.
Qué sigue
Ya sabes buscar y entender código. En el próximo capítulo, aprenderás a pasar de entender a lanzar: planificar funcionalidades, escribir pruebas y convertir diseños en código.