El desafío de los commits grandes

El desarrollo moderno a menudo implica commits que cambian muchos archivos. Ya sea una adición de funcionalidad importante, un esfuerzo de refactorización o fusionar una rama de larga duración, los commits grandes pueden exceder los límites de tamaño de los proveedores de IA. AI Diff Review resuelve esto con procesamiento por lotes inteligente que divide automáticamente commits grandes en fragmentos manejables.

Cómo funciona el procesamiento por lotes

Cuando un commit o alcance seleccionado excede el presupuesto activo (256 KB para proveedores cloud, 128 KB para locales), AI Diff Review divide automáticamente la solicitud en múltiples lotes. Pero no solo divide aleatoriamente—usa una estrategia sofisticada de relación primero para mantener archivos relacionados juntos, mejorando la calidad del análisis.

Estrategia de relación

El sistema de procesamiento por lotes usa heurísticas ligeras para determinar qué archivos están relacionados:

Referencias de importación y paquete

Los archivos que importan símbolos definidos en otros archivos modificados se consideran relacionados. Por ejemplo, si UserService.java importa User desde User.java, y ambos están modificados, se agruparán juntos.

Menciones de símbolos

Los archivos que mencionan nombres de clases, objetos o funciones definidos en otros archivos modificados se agrupan juntos. Esto captura relaciones incluso cuando los imports explícitos no están presentes.

Proximidad de directorio

Los archivos en el mismo paquete o directorio se consideran débilmente relacionados, sirviendo como desempate cuando otras relaciones no son claras.

Algoritmo de agrupación

El sistema de procesamiento por lotes construye un grafo no dirigido de archivos conectados por las relaciones anteriores, luego calcula componentes conectados como grupos iniciales. Esto asegura que los archivos que se referencian mutuamente permanezcan juntos en el mismo lote.

Estrategia de empaquetado

Los grupos se colocan en lotes usando un algoritmo first-fit-decreasing por tamaño de solicitud estimado. Esto:

  • Preserva grupos cuando es posible (mantiene archivos relacionados juntos)
  • Maximiza la eficiencia del tamaño del lote
  • Asegura que cada lote se mantenga bajo el límite de tamaño

Manejo de grupos sobredimensionados

Si un solo grupo de archivos relacionados excede el presupuesto, se divide por orden de búsqueda en amplitud (BFS) mientras preserva aristas de alto peso. Esto significa que las relaciones más fuertes se mantienen incluso cuando la división es necesaria.

Experiencia del usuario

Cuando ocurre el procesamiento por lotes, la ventana de herramientas muestra el progreso como "Lote X/Y", dejando claro que se están procesando múltiples lotes. Los resultados se fusionan sin problemas entre lotes, por lo que ves una vista unificada de todos los hallazgos. Ordenar, filtrar y buscar funcionan en todos los resultados como si vinieran de un solo análisis.

Tamaños de lote por defecto

El sistema prefiere lotes de 3-7 archivos cada uno cuando hay muchos archivos presentes, pero los tamaños exactos varían según:

  • Tamaño de diff y contenido por archivo
  • Límites de tamaño específicos del proveedor
  • Relaciones de relación

Este equilibrio asegura procesamiento eficiente mientras mantiene la calidad del análisis.

Beneficios del procesamiento por lotes inteligente

Mejor calidad de análisis

Al mantener archivos relacionados juntos, la IA puede entender el contexto y las relaciones, llevando a hallazgos más precisos. Por ejemplo, si cambias tanto una clase de modelo como su servicio, analizarlos juntos ayuda a la IA a entender el impacto completo de tus cambios.

Manejo automático

No necesitas dividir manualmente commits o preocuparte por límites de tamaño. El plugin lo maneja automáticamente, por lo que puedes enfocarte en tu código.

Experiencia sin problemas

Los resultados se fusionan automáticamente, por lo que ves una vista unificada sin importar cuántos lotes se necesitaron. No necesitas combinar manualmente resultados o cambiar entre diferentes análisis.

Cuándo ocurre el procesamiento por lotes

El procesamiento por lotes se activa cuando:

  • Un commit cambia muchos archivos (típicamente 10+ archivos)
  • Los archivos son grandes (incluso unos pocos archivos grandes pueden activar el procesamiento por lotes)
  • Se incluye contenido completo del archivo (aumenta significativamente el tamaño)
  • El tamaño combinado excede los límites del proveedor

Mejores prácticas

Mantener commits enfocados

Si bien el procesamiento por lotes maneja bien commits grandes, commits más pequeños y enfocados siguen siendo mejores para revisión de código y comprensión. Considera dividir cambios grandes en commits lógicos cuando sea posible.

Confiar en el sistema

El algoritmo de procesamiento por lotes está diseñado para preservar relaciones y mantener la calidad del análisis. Confía en que los archivos relacionados se analizarán juntos, incluso a través de lotes si es necesario.

Revisar todos los resultados

Dado que los resultados se fusionan, asegúrate de revisar hallazgos de todos los lotes. La vista unificada facilita esto, pero ten en cuenta que commits grandes pueden tener muchos hallazgos a través de múltiples lotes.

Detalles técnicos

El sistema de procesamiento por lotes usa un estimador rápido de tamaño de solicitud que aproxima el tamaño de la carga útil envuelta en JSON para mantenerse bajo el límite por lote. Esta estimación ocurre antes de enviar, asegurando uso eficiente de los límites del proveedor.

Conclusión

El procesamiento por lotes inteligente hace posible analizar commits grandes sin intervención manual. Al mantener archivos relacionados juntos y gestionar automáticamente tamaños de lote, AI Diff Review asegura análisis completo independientemente del tamaño del commit.

La estrategia de relación primero mantiene la calidad del análisis mientras que la división automática asegura que puedes analizar commits de cualquier tamaño. Combinado con fusión sin problemas de resultados, el procesamiento por lotes proporciona una experiencia fluida incluso para los cambios más grandes.

¿Listo para analizar commits grandes? Instala AI Diff Review y ve cómo maneja tus cambios más grandes.