Comparando asistentes de codificación AI: aider, cursor y windsurf probados en un desafío de un solo aviso
En este tutorial, profundizamos en las capacidades de tres asistentes de codificación AI populares—aider, cursor y windsurf—para entender cuán eficientemente pueden crear una aplicación de generación aumentada por recuperación (RAG) utilizando solo un aviso detallado. Al realizar este experimento, nuestro objetivo es evaluar las fortalezas de las herramientas, su aplicabilidad en el mundo real y el papel de los asistentes de codificación impulsados por AI en la configuración de los flujos de trabajo modernos de desarrollo de software.
Introducción al experimento del asistente de codificación AI
Este desafío no es un ejercicio ordinario de construcción de aplicaciones; empuja a estas herramientas a gestionar las complejidades de las aplicaciones RAG modernas utilizando solo un aviso conciso, mientras se adhiere a requisitos de modularidad y restricciones específicas, y tiene en cuenta los matices de las actualizaciones recientes de LangChain. Exploremos cómo aider, cursor y windsurf manejaron esta tarea.
Qué es la generación aumentada por recuperación (RAG) y por qué esta prueba?
RAG se refiere a la combinación de información recuperada (por ejemplo, de una base de datos o almacenamiento de archivos) con el razonamiento de un modelo de lenguaje grande para responder de manera inteligente las consultas de los usuarios. Requiere una sólida ingeniería de backend para implementar interacciones sin problemas entre recuperadores, almacenes de vectores y modelos de lenguaje grande. Aunque las aplicaciones RAG poseen interfaces de usuario simples (UI), las operaciones detrás de escena presentan una prueba desafiante para los asistentes de codificación AI debido a la necesidad de un diseño modular, configuraciones de dependencias precisas y depuración metódica.
Elegimos esta prueba para evaluar a los asistentes en un caso de uso que se alinea con las transformaciones impulsadas por AI en los flujos de trabajo de software. Si bien la aplicación es de menor alcance en comparación con un sistema de producción grande, sus matices crean obstáculos que solo desarrolladores hábiles—o asistentes inteligentes—pueden manejar competentemente.
La configuración del experimento y metodología
El proceso seguido para cada herramienta fue idéntico, asegurando equidad en la evaluación:
- Se preparó un solo aviso detallado que combinaba requisitos con especificaciones precisas, como estructuras de archivos modulares y restricciones de tecnología.
- Se proporcionó la documentación más reciente de LangChain para la creación de aplicaciones RAG como referencia para cada herramienta.
- A cada herramienta AI se le asignó la tarea de crear una aplicación completamente funcional interpretando el aviso y haciendo referencia a la documentación según fuera necesario.
- Se monitorearon los errores y se proporcionó una guía mínima para ver cuán efectivamente los asistentes se adaptaron a las correcciones iterativas.
Aider: el codificador guiado
Configuración inicial y ejecución
Aider comenzó fuerte. Dentro de una estructura de carpetas pre-creada en VS Code que contenía el aviso y la documentación de LangChain, Aider generó rápidamente todos los componentes esenciales: requirements.txt
, app.py
y archivos adicionales necesarios como document_loader.py
, vector_store.py
y rag_chain.py
.
Aider generando los archivos requeridos
La IA también modularizó su salida como se solicitó, con:
- Cargador de Documentos: Maneja la extracción de contenido basado en la web.
- Almacén de Vectores: Gestiona las incrustaciones dentro de una base de datos local ChromaDB.
- Cadena RAG: Facilita preguntas y respuestas impulsadas por LLM.
- Streamlit app.py: Procesa la entrada del usuario a través de una interfaz de usuario simple.
Manejo de restricciones y depuración
Cuando surgieron errores (como problemas de gestión de bases de datos o manejo de parámetros faltantes), Aider mostró su capacidad para abordarlos utilizando capturas de pantalla detalladas de errores proporcionados por el usuario. Una fortaleza clave de Aider radica en su capacidad no solo para depurar código, sino también para aclarar sus soluciones en un lenguaje accesible para cualquier desarrollador.
Por ejemplo, identificó problemas con atributos persistentes de configuraciones de bases de datos alterados por APIs recientemente revisadas y aplicó correcciones de manera eficiente.
Limitaciones
Ocasionalmente, la salida inicial de Aider requería ajustes adicionales que exigían a los usuarios ejecutar comandos fuera de la herramienta, como configurar entornos virtuales y manejar manualmente dependencias específicas como actualizaciones a ChromaDB.
Cursor: un competidor competitivo
El modo Composer de Cursor fue el siguiente, y siguió un patrón familiar. Usando el aviso único y la documentación de LangChain, Cursor leyó y analizó los archivos para generar salidas modulares similares a Aider.
Explicación de la generación de aplicaciones modulares de Cursor
Al igual que Aider, Cursor se centró en crear archivos modulares:
- Cargador para manejo de entradas.
- Base de datos de vectores para almacenamiento de incrustaciones a través de ChromaDB.
- Cadenas que integran LangChain y LLModels.
Interacciones de depuración
Los errores relacionados con los parámetros del analizador de Beautiful Soup destacaron las capacidades de Cursor para ajustar su código sin problemas con mínimas entradas del usuario. Los usuarios podían proporcionar capturas de pantalla detalladas para la depuración, y Cursor reescribía rápidamente las secciones afectadas mientras mantenía su estructura.
También ofreció sugerencias valiosas sobre empaquetado, asegurando que los usuarios pudieran crear entornos listos para pip-install con un mínimo esfuerzo.
Desafíos identificados
Cursor a veces simplificaba en exceso ciertas configuraciones, haciendo suposiciones sobre los valores predeterminados de los parámetros que chocaban con las últimas actualizaciones de LangChain. Notablemente, sobrescribió accidentalmente archivos cruciales con claves falsas (por ejemplo, claves .env
de OpenAI), creando inconvenientes menores que un desarrollador tendría que abordar manualmente.
Windsurf: el nuevo jugador en la codificación AI
Finalmente, Windsurf se preparó para afrontar el desafío. Aunque es más nuevo en comparación con Cursor o Aider, esta herramienta trajo características únicas a la mesa. Comenzó de manera similar cargando la documentación de LangChain y generando componentes modulares de manera eficiente.
Windsurf inicializando la aplicación RAG
Sin embargo, la integración de documentación de Windsurf y su capacidad para contextualizar comandos complejos se sintió algo más fluida, especialmente al generar resúmenes concisos para restricciones definidas por el usuario.
Enfoque de depuración
Windsurf requería menos capturas de pantalla manuales que sus competidores, sugiriendo una mejor retención de contexto y mecanismos de autocorrección. Sin embargo, al igual que los otros, luchó con errores similares de atributos de persistencia en bases de código ChromaDB—probablemente una deficiencia derivada de los datos de entrenamiento del modelo AI subyacente en lugar de la herramienta misma.
Un inconveniente señalado durante las pruebas fue la falta de características UI de depuración en línea que se encuentran en Cursor o Aider. Windsurf, en cambio, requería que los usuarios copiaran los errores y mensajes manualmente en su interfaz, haciendo que la iteración fuera menos fluida.
Comparación: fortalezas y debilidades
Fortalezas
- Aider: Mejores capacidades de depuración y configuraciones modulares, con sugerencias precisas durante las correcciones.
- Cursor: Generación de código rápida y receptiva, con herramientas versátiles para la refactorización y manejo de dependencias.
- Windsurf: Gran análisis contextual, menos ciclos de intervención de AI, y mejor para tareas de generación modular concisa.
Desafíos de depuración entre herramientas
Debilidades
- Aider: La sobredependencia de entradas manuales en la terminal redujo ligeramente la conveniencia.
- Cursor: Propenso a sobrescribir detalles de configuración .env o sensibles; luchas con las nuevas parametrizaciones de API.
- Windsurf: Carece de UIs de depuración sofisticadas que ofrecen los competidores y requiere intervenciones manuales basadas en texto para errores.
Veredicto final y lo que aprendimos
Aunque ninguno fue perfecto, el progreso de los asistentes de codificación AI es innegable. Tareas que requerirían semanas de esfuerzo del desarrollador pueden ser significativamente aceleradas usando estas herramientas, siempre que los usuarios se mantengan adaptables a pequeñas correcciones iterativas. Entre los asistentes, la elección se reduce a las preferencias del usuario (por ejemplo, depuración despreocupada versus profundidad de análisis contextual).
Comparación final de las aplicaciones RAG completadas
Cada asistente logró crear una aplicación RAG que integraba estructuras modulares como UIs de Streamlit, cargadores de documentos y almacenes de vectores. Aunque ninguna herramienta se destacó como "la mejor", la alta adaptabilidad de la codificación soportada por AI es un claro ganador para los desarrolladores hoy.
Conclusión: forjando el futuro con codificación asistida por AI
Asistentes de codificación AI como aider, cursor y windsurf ya no parecen novedades; se están convirtiendo en herramientas esenciales en las tuberías de desarrollo de software. Estos experimentos demuestran su impacto transformador: prototipado de aplicaciones más rápido, depuración en tiempo real y abstracciones modulares—todo con una entrada mínima.
Si estás emocionado por explorar más o compartir ideas sobre la codificación con AI, considera unirte a la Comunidad Skool para discutir, intercambiar ideas y aprender. ¡Juntos, codifiquemos el futuro—con AI al mando!