- "Un experimento confuso que cambió mi forma de pensar sobre el análisis de código con IA"
- Observó que las IA existentes fallaban con frecuencia al analizar codebases de React
- Se dio cuenta de que la causa era un enfoque de análisis solo línea por línea, como cuando un desarrollador junior lee código por primera vez
La diferencia entre la época del bootcamp y la mentalidad senior
- Cuando era junior, solía leer los archivos en orden, línea por línea, y a menudo perdía el rumbo rápidamente
- Un desarrollador senior usa un enfoque como este al revisar PRs grandes
- Revisa primero los archivos clave
- Agrupa y entiende los cambios por funcionalidad
- Primero comprende la arquitectura completa y después revisa los detalles de implementación
- Decidió aplicar este enfoque a la IA
El experimento
- Probó un método que agrupa archivos por funcionalidad y le da primero a la IA información de contexto sobre cada grupo
- En el código de ejemplo, define la interfaz
FileGroup y procesa los archivos agrupándolos según la funcionalidad relacionada y el tamaño del archivo
- Construye prompts por grupo para indicarle a la IA “qué área funcional es y en qué debería enfocarse”
El momento del cambio sorprendente
- Antes, la IA respondía de forma simple con algo como “incluye lógica de autenticación con tokens JWT”
- Luego empezó a ofrecer observaciones al nivel de un desarrollador senior, como “el impacto en conexiones WebSocket y la posibilidad de condiciones de carrera con PRs fusionados recientemente”
- La IA empezó a señalar problemas considerando el contexto completo del sistema
Lo que realmente cambió
- La clave no fue usar un modelo de machine learning más complejo, sino darle a la IA el orden de pensamiento de un desarrollador senior
- Contexto primero: empezar por entender el sistema completo
- Pattern matching: agrupar archivos similares para encontrar lógica repetida
- Análisis de impacto: reconocer cómo los cambios afectan a todo el sistema
- Comprensión del historial: rastrear incluso las razones o el contexto de cambios pasados en el código
Efectos secundarios inesperados
- En lugar de limitarse a corregir solo el punto deseado, también detectó insights como estos
- Identificación de bloques de código duplicados por copy-paste
- Alertas sobre patrones inconsistentes de manejo de errores
- Detección de posibles cuellos de botella de rendimiento
- Sugerencias de mejora arquitectónica según patrones de uso
Por qué importa
- Los IDEs basados en IA recientes se están enfocando en generar código automáticamente
- Pero hacer sugerencias simples sin el contexto de todo el sistema puede ser tan riesgoso como “un desarrollador junior que acaba de integrarse”
- Lo verdaderamente importante es la “comprensión profunda del código”
Preguntas pendientes
- El problema de decidir cuándo actualizar y cuándo mantener el contexto (información histórica)
- Cómo responder cuando se detectan patrones que entran en conflicto entre sí
- Cómo mostrarle al usuario resultados de análisis con alta incertidumbre
La dirección a futuro
- Está pensando si también se le puede enseñar a la IA, como a un desarrollador senior, una intuición como la siguiente
- Capacidad para detectar deuda técnica de forma anticipada
- Capacidad para proponer activamente mejoras de arquitectura
- Capacidad para detectar problemas de seguridad a partir de patrones de uso
- Sensibilidad para identificar reglas informales dentro del equipo
- El objetivo final no es simplemente generar “más código”, sino enseñar “cómo entender en profundidad todo el código como un desarrollador senior”
3 comentarios
¿No están bastante estandarizadas las preguntas que vale la pena hacer para analizar y mejorar una base de código? Parece que el autor está demasiado entusiasmado.
Parece estar en la misma línea que en Cursor te explican todo el proyecto en el bloc de notas.
Opinión de Hacker News
En los comentarios, la gente está siendo crítica. Este artículo trata un resultado breve y positivo sobre la posibilidad de una nueva herramienta, e incluye ideas honestas y razonables.
Este es otro ejemplo de un LLM haciendo algo sorprendente. Sin embargo, construir un sistema que funcione de forma consistente y precisa para todas las entradas es muy difícil.
Probablemente aquí haya lecciones para construir mejores sistemas de agentes para escribir código.
Leí la primera línea del artículo y me sentí como un extraterrestre. Tendría que leer el texto completo, pero eso de leer el código existente de forma secuencial me parece raro.
Se enfatiza la importancia del factor humano. Sin una comprensión contextual del codebase, no se puede saber qué significan las alertas de la IA.
Es difícil evitar que la IA invente APIs que no existen. Cuando funciona bien, está bueno, pero la mayor parte del tiempo no funciona bien.
El contexto y la comprensión del código son importantes para mejorar la calidad del código generado por LLM.
Como en la queja de John McCarthy, esto es una historia, no un experimento ni una prueba.
Los resultados son impresionantes. Hay críticas sobre el estilo y la uniformidad, pero el resultado parece útil.
Parece que en el artículo falta una parte importante de esta técnica. No aparece la implementación de getFileContext() ni de shouldStartNewGroup().