
Herramientas actuales de comprensión de códigos basadas en AI que utilizan la sumamarización, la generación aumentada de recuperación (RAG), y gráficos de conocimiento son como el uso de una lupa para mapear un continente. Son frágiles y a menudo pierden la imagen más grande, especialmente para grandes bases de código.
Inspirado por Rich SuttonBitter Lesson, el Método Contexto completo toma un enfoque diferente. En lugar de descomponer la base de códigos en pedazos y construir bases de códigos que comprendan pieza por pieza usando trucos de divide-y-conquer y software, nuestro método abarca una solución holística, impulsada por el aprendizaje. En este breve post, examinaremos por qué los métodos fragmentados caen cortos y dibujan paralelos a la evolución de AI. También reportaremos algunos resultados cualitativos iniciales con nuestro método, con un análisis más profundo que llegará en un post posterior. El futuro de la comprensión del código está aquí, y no depende de trucos de software y heurísticas diseñadas por humanos.
La Lección de la Bitter y por qué los atajos fallan
Rich Sutton, uno de los fundadores del aprendizaje de refuerzo computacional (y también autor de mi libro de texto favorito), escribióLa lección del bitteren su sitio web personal. Es un recordatorio de que "los métodos generales que aprovechan la computación son en última instancia los más eficaces y por un gran margen". Los métodos generales superan constantemente los conocimientos especializados, diseñados por el ser humano y los conocimientos de dominio. La historia de AI apoya esto con ejemplos llamativos.
- Ajedrez, Azul profundo y AlfaZero: En 1997 Azul venció al campeón mundial, Kasparov. Profundidad Blue utilizó una combinación de búsqueda masiva y tácticas de ajedrez humanos. En 2017, AlphaZero de DeepMind dominaba el ajedrez desde cero a través del autojuego. No sólo superó a todos los humanos, sino que también sopló Stockfish - el mejor programa de ajedrez de computadora en el mundo - fuera del agua. Desde entonces, Stockfish y otros programas de ajedrez "tradicionales" también han comenzado a incluir redes neuronales en sus motores para seguir siendo competitivos.
- Computer Vision: A principios de los años 2000, los sistemas de visión dependían de la ingeniería de características, como SIFT o HOG. Para 2016, las redes neuronales convolutivas profundas, como ResNet, entrenadas en píxeles crudos, superaron estos métodos con precisión sobrehumana.
- StarCraft y AlphaStar: En 2019, DeepMind’s AlphaStar dominó StarCraft II de Blizzard modelando estados de juego enteros, incluyendo cientos de unidades, mapas y estrategias, sin depender de reglas selectivas, superando jugadores profesionales.
- Arqueología: En 2022, DeepMind de Google reconstruyó tabletas cuneiformes antiguas aprendiendo de patrones lingüísticos brutos, no hipótesis expertas.
- Protein Folding: En 2023, AlphaFold 2 resolvió los desafíos de plegamiento de proteínas de larga data aprendiendo de datos moleculares brutos, superando los modelos químicos de fabricación humana.
El retiro parece ser que el aprendizaje holístico y generalizado de datos brutos junto con un montón de compute supera constantemente los atajos inteligentes. Esperamos ver un arco similar en la comprensión de código AI también.
¿Por qué las luchas de comprensión del código para grandes bases de código
A principios de 2025, los copilotos de código luchan cuando el contexto que necesitan para trabajar abarca más de decenas de miles de líneas de código. Los generadores de documentación de código AI producen resultados de deslumbramiento para bases de código masivas. Esto se debe principalmente a las ventanas de contexto más pequeñas (~100k token) de muchos LLM y a las limitaciones de los trucos comunes utilizados para superarlo. Trucos como:
- Summarización y memoria: Un enfoque común para tratar con grandes contextos es asignar una parte de ella hacia un resumen de todo lo que se ve hasta ahora. Este proceso, por su propio diseño, es perjudicial. Para la comprensión de códigos, mientras que este enfoque puede captar dependencias locales, a menudo se pierden dependencias globales multimodule en toda la base de código.
- Generación aumentada en recuperación (RAG): RAG se basa en tener una base de datos vectorial de trozos de la base de código y recupera los trozos más "relevant" en la base de código para una consulta dada. RAG puede ser útil para la recuperación de información específica, pero a menudo no es confiable. Además, RAG no es útil para tareas que necesitan un gran número de pedazos.
- Gráficos de conocimiento (KGs): Los KG son grandes para responder preguntas dentro de un dominio específico donde el vocabulario de objetos y relaciones es limitado. Sin embargo, luchan por escalar para bases de código grandes y cambiantes.
Las ventanas de contexto más pequeñas obligan a los desarrolladores a romper las bases de código en fragmentos y trabajar con un número limitado de fragmentos a la vez. Este enfoque pierde matices ya que el código es un artefacto vivo con patrones que abarcan miles de archivos. Nuestro equipo generó documentación para PyTorch (1.5+ millones de líneas de código) utilizando técnicas estándar basadas en la sumamarización y encontró que la documentación resultante era de baja calidad y falta de dependencias críticas. En cambio, nuestro Método Contexto completo produjo documentación mucho más clara y precisa.
El Método Contexto completo
¿Y si en lugar de enfocarnos en un uso económico de las fichas, nos centramos en maximizarla? Podríamos dejar de fragmentar bases de código y capturar incluso las interdependencias más complejas. El Método Contexto completo hace exactamente eso. Utiliza LLMs con las ventanas de contexto más grandes disponibles para procesar repositorios enteros, incluyendo cada archivo, commit y comentario, como un único contexto unificado. Así es como funciona:
- Ingestión completa: Procesa bases de códigos masivas, como PyTorch (1.2M líneas), en un sentido, capturando interdependencias que faltan métodos fragmentados.
- Commit-Aware Learning: It fine-tunes on commit histories to understand intent and evolution, beyond just static code.
- Living Documentation Hub: Crea un centro interactivo que se actualiza automáticamente a medida que evoluciona la base de código, sirviendo a desarrolladores y mantenedores.
Conclusión: Abrazando la Lección de Bitter
AlphaZero se enseñó ajedrez de clase mundial basado en métodos generales de aprendizaje, auto-juego y búsqueda, junto con un compute masivo. Del mismo modo, el Método Contexto completo no depende de las heurísticas artesanales, abstracciones perdidas o tuberías modulares que intentan “extraer” el problema. En su lugar, abarca la Lección de Bitter: esa verdadera comprensión no proviene de la codificación de conocimientos de dominio frágil, sino de la palanca de sistemas de aprendizaje escalable que pueden descubrir los patrones que hemos estado tratando de ingeniería manual.
El código, como las mentes, es irreductiblemente complejo. Como Sutton escribe, el mundo real está lleno de estructura arbitraria: preocupaciones transversales, hacks legados, interacciones dinámicas entre miles de módulos. El impulso de simplificarlo con modelos humanos es una trampa. La única manera confiable de avanzar es construir sistemas que puedan aprender a entender, no sistemas que sólo contienen nuestra comprensión actual.
En un futuro post, compartiremos puntos de referencia y ejemplos más detallados en grandes bases de código como PyTorch, Kubernetes y sistemas empresariales heredados. Pero incluso ahora, una cosa es clara: La próxima generación de herramientas de desarrollador no vendrá de hacks más inteligentes. Vendrá de ver todo.
Referencias
- Sutton, R. S. (2019). La Lección de Bitter (Ideas incompletas).
- Silver, D., et al. (2017). Mastering ajedrez y shogi por auto-juego con un algoritmo de aprendizaje de refuerzo general (arXiv).
- Vinyals, O., et al. (2019). Nivel de Grandmaster en StarCraft II utilizando el aprendizaje de refuerzo multiagente (Naturaleza).
- Jumper, J., et al. (2021). Predicción de la estructura de proteínas muy precisa con AlphaFold (Naturaleza).
- Assael, Y., et al. (2022). Restaurar y atribuir textos antiguos utilizando redes neuronales profundas (Naturaleza).