Agentes de IA

Revisar código de IA verificando la intención en lugar de leer diffs

Los ingenieros de Aviator cuadruplicaron el rendimiento de las solicitudes de extracción (PR) al cambiar el enfoque de la revisión de diffs línea por línea a la verificación de la intención, los invariantes y las evidencias.

Lista de verificación holográfica representando la verificación automatizada sobre un teclado, con diffs de papel ignorados en el fondo.
Ilustración generada para este artículo

Traducido automáticamente del original en inglés.

Los ingenieros de Aviator han reestructurado su proceso de revisión de código para gestionar un aumento cuádruple en las solicitudes de extracción generadas por IA. Al desplazar el foco desde la lectura de cada línea de código hacia la verificación de la intención, los criterios de aceptación y los invariantes del sistema, el equipo redujo el tiempo mediano de fusión de 2,1 días a 3,4 horas. Este enfoque mantiene la supervisión humana mientras automatiza las comprobaciones rutinarias, permitiendo que nueve ingenieros gestionen más de 400 PR fusionadas por semana.

Qué ocurrió

A medida que el flujo de trabajo de desarrollo de Aviator pasó de código escrito por humanos con asistencia de IA a código generado por IA con guía humana, el volumen de cambios se disparó. Las solicitudes de extracción fusionadas semanalmente saltaron de aproximadamente 100 a más de 400, con tamaños medianos de PR alcanzando las 640 líneas. Esto superó el umbral de 400 líneas donde la detección de errores suele disminuir. Los métodos tradicionales de revisión no lograron escalar: añadir un revisor de IA sepultaba las decisiones críticas de diseño bajo trivialidades, mientras que imponer un SLA de revisión de cuatro horas llevó a aprobaciones vacías ya que los ingenieros hacían una lectura superficial para cumplir con los plazos.

El equipo comprendió que detectar errores nunca fue el objetivo principal de la revisión de código. Citando un estudio de Microsoft de 2013, señalaron que solo el 14% de los comentarios de revisión abordan defectos. El valor central de la revisión es el intercambio de conocimiento y el mantenimiento de un modelo mental actualizado del sistema. Con agentes de IA escribiendo la mayor parte del código, esta función de transferencia de conocimiento estaba en riesgo. En lugar de intentar leer mejor el diff, que muestra qué cambió pero no por qué, el equipo dejó de revisar el diff por completo.

Cómo funciona

El nuevo flujo de trabajo divide las tareas de la revisión de código en etapas distintas manejadas por diferentes mecanismos. Primero, los agentes de revisión se examinan mutuamente antes de que exista una PR, debatiendo sobre detalles de implementación y registrando desacuerdos. Solo los problemas no resueltos, como las convenciones de nombres, se escalan a los humanos. Segundo, el sistema captura la intención y los criterios de aceptación directamente de la sesión de codificación. Cada vez que un ingeniero corrige a un agente o responde sus preguntas, esas interacciones se convierten en criterios verificables. La intención explica por qué se realiza un cambio, mientras que los criterios de aceptación definen cómo debe comportarse.

Tercero, el equipo codificó los comentarios de revisión repetidos en invariantes del sistema. Mediante la minería de un año de historial de revisiones, destilaron 11.400 comentarios en 64 invariantes aprobados, como exigir entradas de registro de auditoría para cambios de configuración. Estos invariantes se compilan en reglas deterministas utilizando herramientas como ast-grep, que se ejecutan en segundos junto con comprobaciones probabilísticas de modelos. Finalmente, cada criterio de aceptación se demuestra con evidencia. Los agentes lanzan entornos de vista previa para ejecutar escenarios similares a los de usuario, registrando capturas de pantalla y logs para verificar el comportamiento. Esto proporciona una prueba concreta de que una función funciona según lo previsto, en lugar de simplemente pasar una comprobación de CI.

Detalles clave

  • Aumento del rendimiento: Los mismos nueve ingenieros ahora fusionan 4 veces más solicitudes de extracción por semana, pasando de ~100 a >400.
  • Mejora de velocidad: El tiempo mediano hasta la fusión cayó de 2,1 días a 3,4 horas.
  • Métrica de calidad: Las revertidas por cada 100 PR disminuyeron un 40%, indicando una mayor calidad inicial del código.
  • Eficiencia de revisión: Los hilos de comentarios humanos por PR cayeron de 6,2 a 1,3, centrándose solo en decisiones de alto nivel.
  • Creación de invariantes: Se analizaron 11.400 comentarios históricos para crear 64 invariantes aprobados y 212 reglas candidatas.
  • Velocidad de verificación: Diecinueve invariantes clave se ejecutan de forma determinista en 0,3 segundos, proporcionando retroalimentación rápida sin latencia de modelo.

Por qué importa

Para los equipos de ingeniería que adoptan agentes de codificación de IA, este caso de estudio demuestra que los cuellos de botella tradicionales de la revisión pueden resolverse cambiando lo que los humanos evalúan. A medida que los tamaños de las PR crecen más allá de los límites cognitivos humanos para una inspección detallada, depender de los diffs se vuelve ineficaz. Automatizando la verificación de reglas y comportamiento, los ingenieros pueden centrarse en las decisiones arquitectónicas y la comprensión del sistema. Este cambio protege el aspecto de intercambio de conocimiento de la revisión, crítico para la mantenibilidad a largo plazo, mientras deja que las máquinas manejen la validación repetitiva de restricciones.

El enfoque también destaca la importancia de capturar la intención temprano en el ciclo de desarrollo. Cuando los criterios de aceptación se derivan de interacciones en tiempo real entre ingenieros y agentes de IA, reflejan los requisitos reales con mayor precisión que la escritura de pruebas a posteriori. Esto asegura que el proceso de verificación pruebe lo que importa para la lógica de negocio, no solo lo que es fácil de automatizar. Los equipos que construyen flujos de trabajo nativos de IA deben considerar separar la aplicación de reglas de la toma de decisiones para mantener la velocidad sin sacrificar la calidad.

Qué puedes hacer

  • Audita tus comentarios de revisión: Categoriza los comentarios pasados de PR en reglas, decisiones y correcciones puntuales para identificar candidatos para la automatización.
  • Define invariantes del sistema: Extrae restricciones recurrentes de tu base de código y codifícalas como comprobaciones deterministas usando herramientas como ast-grep.
  • Captura la intención durante la codificación: Guarda el diálogo entre ingenieros y agentes de IA para generar criterios de aceptación automáticamente.
  • Implementa verificación basada en evidencia: Usa agentes automatizados para ejecutar escenarios similares a los de usuario en entornos de vista previa y registrar logs como prueba.
  • Cambia el foco de la revisión humana: Entrena a los revisores para omitir los diffs línea por línea y evaluar en su lugar la intención, la evidencia y las decisiones de diseño no resueltas.
  • Debate de agentes pre-PR: Configura agentes de IA para debatir sobre detalles de implementación antes de crear una PR, resolviendo automáticamente los problemas triviales.
  • #ai code review
  • #developer productivity
  • #software engineering
  • #automation
  • #code quality

Herramientas de la Tienda de Bytechap

$79

WorkBento

Suite de RR. HH. y gestión del entorno laboral impulsada por IA que puedes alojar tú mismo.

Demo en vivo

Seguir leyendo

Todos los artículos