La inteligencia artificial ha revolucionado numerosos aspectos del desarrollo de software, y uno de los campos que ha empezado a experimentar una transformación interesante es la revisión de código. He decidio construir un agente de revisión de código con IA en cuestión de pocas horas, con el propósito de descubrir qué tan complejo es crear una herramienta útil que realmente aporte valor a los equipos de desarrollo. En este análisis comparto las lecciones aprendidas, las ventajas y limitaciones que encontré y cómo vislumbro el futuro de estas tecnologías en el proceso de revisión de código. El concepto detrás de un agente de revisión de código basado en inteligencia artificial es sencillo, pero poderoso: se trata de escuchar los eventos de las solicitudes de cambio o Pull Requests (PR), enviar cada diferencia o diff en la PR a un modelo de lenguaje (LLM) y pedirle que detecte posibles problemas, para después comentar en la PR con cualquier incidencia identificada. La idea principal es que el agente actúe como una capa adicional en la revisión, capaz de detectar fallos o detalles que un revisor humano podría haber pasado por alto, mejorando así la calidad y estabilidad del software.
Actualmente, existen varias herramientas prominentes en el mercado que ofrecen funciones similares, incluyendo GitHub Copilot Review, Coderabbit, Greptile, Korbit, Qodo, entre otras. Sin embargo, la pregunta clave es: ¿realmente estos agentes son útiles? ¿Y qué tan difícil es construir uno desde cero que sea verdaderamente eficaz? Durante unas semanas estuve utilizando Coderabbit en el entorno de desarrollo de Sourcebot. En términos generales, me llamó la atención que aunque muchas veces las sugerencias que generaba no eran demasiado relevantes o útiles, en ocasiones ofrecía recomendaciones que un revisor humano ni siquiera había considerado. Esto indica que estas herramientas pueden ser un valioso complemento para mejorar la revisión manual, siempre y cuando se revisen con criterio. Un ejemplo particular fue cuando estábamos añadiendo soporte para Bitbucket en Sourcebot.
Bitbucket cuenta con dos APIs diferentes: una para la versión en la nube y otra para la auto hospedada. Yo había asumido erróneamente que la API de paginación era similar en ambas pero Coderabbit logró detectar la diferencia, señalando un posible error. Aunque lo correcto hubiera sido hacer pruebas más exhaustivas, un revisor humano poco familiarizado con la API no habría notado este detalle. Por otro lado, no todas las sugerencias fueron tan acertadas; en el mismo proyecto se propuso agregar un campo "projects" a una estructura que gestiona los repositorios u organizaciones faltantes, lo que resultó problemático porque ese campo nunca se leía y hubiera introducido un error sutil en la interfaz. Esto nos lleva a una conclusión importante: los agentes IA pueden detectar problemas que se pasan por alto, pero sus sugerencias no deben aceptarse sin un análisis cuidadoso.
Con el interés por entender qué diferencia a un agente de revisión exitoso de uno que no aporta valor, decidí crear uno básico por mi cuenta. Gracias a las API de GitHub y a una clave de OpenAI, pude desarrollar en pocas horas un agente que detecta PRs, divide los cambios en bloques pequeños, los envía a un modelo GPT y luego comenta en el PR con las respuestas. Utilicé una versión ligera de GPT-4, y el costo aproximado por chequeo de cada diff resultó ser muy bajo, alrededor de 0.0006 dólares, lo que hace el proceso escalable para repositorios donde se generan muchas PRs. Sin embargo, me encontré con un problema recurrente: los modelos de lenguaje no siempre obedecen las instrucciones al pie de la letra.
En el prompt especificaba claramente que no generaran resumen, feedback general o elogios, sino que se centraran estrictamente en los posibles errores. Aun así, muchas veces se desviaban y eran incapaces de ignorar esa “tentación” de añadir información adicional innecesaria. Otro reto importante es la falta de contexto global del código. Un agente que solo analiza fragmentos dif sin acceso a una vista más amplia o al funcionamiento general puede terminar haciendo sugerencias poco útiles o incluso erróneas. Por ejemplo, en un caso particular el agente propuso una mejora que no consideraba cómo una función completada era utilizada en otras partes del proyecto, lo que habría complicado el mantenimento del código.
Aquí veo una gran oportunidad para integrar herramientas como Sourcebot, que permiten indexar y realizar consultas sobre millones de líneas de código, otorgando un contexto profundo y relevante para mejorar la calidad del análisis. Incorporar esta capacidad podría transformar a un agente básico en una poderosa herramienta de soporte para desarrolladores. Mi experiencia me llevó a la conclusión de que aunque los agentes de revisión basados en IA tienen un gran potencial, la realidad es que construir uno que sea realmente útil y confiable requiere mucho trabajo. No encuentro recomendable que equipos sin experiencia inviertan esfuerzos en crear su propio agente desde cero, ya que el camino desde una solución rudimentaria hasta una herramienta que realmente facilite la revisión es largo y complejo. Más allá de la idea de un simple agente que observa los cambios y genera comentarios, el núcleo del problema es lograr que el modelo de lenguaje comprenda profundamente el código.
El agente es solo la interfaz que fragmenta y gestiona los diffs para enviar solicitudes al modelo IA. Sin una buena comprensión del proyecto, el valor de la revisión resultará limitado. Creo firmemente que en el futuro cercano surgirán marcos y plataformas especializados que facilitarán la construcción de agentes de desarrollo poderosos y adaptables. Estos permitirán a los equipos personalizar y controlar sus propios asistentes, en lugar de depender completamente en soluciones comerciales genéricas. Además, la flexibilidad para integrar contexto, reglas internas y bases de conocimiento específicas será fundamental para que la inteligencia artificial aporte un verdadero valor añadido.
El desarrollo y uso estratégico de agentes de revisión de código con IA representa una gran oportunidad para mejorar la calidad del software y optimizar tiempos en el ciclo de desarrollo. Sin embargo, estos agentes deben ser considerados como un complemento a la revisión humana, combinando la precisión y experiencia del desarrollador con el análisis riguroso y exhaustivo que la IA puede brindar. Se requiere cautela y experiencia para sacarles el máximo provecho, y es imprescindible no tener un enfoque acrítico ante sus sugerencias. En definitiva, la creación de un agente de revisión de código con inteligencia artificial en solo unas horas me permitió entender mejor los desafíos técnicos y conceptuales detrás de estas soluciones. La tecnología ya está lo suficientemente avanzada para ofrecer un apoyo tangible, pero la integración del contexto del proyecto y el control fino sobre los resultados serán la clave para su adopción masiva y éxito en el mundo real.
Aquellos desarrolladores y equipos interesados en potenciar sus procesos encontrarán aquí un campo fascinante para explorar y experimentar con soluciones futuras. Si esta temática te resulta interesante y deseas profundizar o compartir ideas, estaré encantado de conectar y conversar sobre cómo construir y aprovechar al máximo estas innovadoras herramientas en el desarrollo de software.