← Últimos artículos
🤖 AI

Diffs vs. Whole Files: An Empirical Comparison of Iterative Edit-Based and Direct Generation for Flutter/Dart Code Models

Este artículo demuestra empíricamente que, para la edición de código Flutter/Dart, la generación directa de archivos completos por parte de los grandes modelos de lenguaje supera sustancialmente a la generación iterativa basada en diff en todas las métricas, siendo esta última competitiva únicamente para ediciones cortas y espacialmente localizadas, tales como tareas de refactorización y manejo de errores.

Autores originales: Andrej Andrejev

Publicado 2026-09-09✓ Author reviewed
📖 5 min de lectura🧠 Análisis profundo

Autores originales: Andrej Andrejev

Artículo original bajo licencia CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Esta es una explicación generada por IA del artículo a continuación. No ha sido escrita por los autores. Para mayor precisión técnica, consulte el artículo original. Leer descargo de responsabilidad completo

Cuando un programa informático necesita corregir un error en una pieza de código, hay dos formas principales en las que una máquina inteligente puede realizar el trabajo. La primera forma es reescribir el archivo completo desde el principio, produciendo una versión fresca y completa del documento. La segunda forma es actuar como un editor humano, realizando una serie de cambios pequeños y específicos —encontrando una oración y reemplazándola por una nueva, o eliminando una línea e insertando otra— hasta que el trabajo esté terminado. Este segundo método, a menudo llamado "diff" o parche, es popular en el mundo del software porque parece más eficiente; genera menos texto y emula cómo trabajan las personas. Resulta intuitivo pensar que hacer ediciones pequeñas y dirigidas es mejor que reescribir todo. Sin embargo, si esta intuición se mantiene cierta al enseñar a la inteligencia artificial a escribir código, ha sido una cuestión abierta.

Un estudio reciente se propuso resolver este debate enfrentando estos dos enfoques en un experimento controlado. Los investigadores entrenaron a dos modelos informáticos diferentes para corregir código en un lenguaje de programación específico utilizado para construir aplicaciones móviles. Enseñaron a un conjunto de modelos a reescribir archivos completos de una sola vez, y enseñaron a otro conjunto a realizar las mismas tareas mediante la emisión de una secuencia de ediciones pequeñas y paso a paso. Luego, probaron ambos conjuntos de modelos en casi 1.800 tareas de codificación diferentes para ver qué método producía mejores resultados. Los hallazgos fueron claros y algo sorprendentes: los modelos que reescribían el archivo completo superaron consistentemente a los modelos que intentaban realizar cambios pequeños e iterativos. Esta ventaja se mantuvo en cada medida de éxito, desde si el código realmente funcionaba hasta qué tan cerca estaba de la respuesta correcta.

Los investigadores descubrieron que el fallo del enfoque paso a paso no se debía usualmente a que los modelos se quedaran sin tiempo o se quedaran atrapados en un bucle. De hecho, la mayoría de las veces, los modelos que utilizaban el método paso a paso completaban con éxito su lista de instrucciones. El problema era que el resultado final a menudo estaba sutilmente roto. Un factor determinante en estos fallos es que, cuando el código de entrada contiene dos o más fragmentos idénticos o casi idénticos, la capacidad del modelo para distinguir entre ellos falla; es decir, su heurística de desambiguación no logra identificar con precisión cuál de las secciones debe reemplazar. Este problema de identificación por sí solo explica entre la mitad y dos tercios de los errores cometidos por los modelos en el modo de pasos. Debido a esta dificultad para elegir la sección correcta, los modelos a veces editaban el lugar equivocado o sus pequeños cambios rompían accidentalmente partes del código que previamente funcionaban. Estos errores eran a menudo silenciosos, lo que significaba que el código aún se ejecutaba pero no hacía lo que el usuario pretendía.

Incluso cuando los investigadores filtraron los fallos obvios y observaron solo las tareas donde ambos métodos produjeron código que la computadora podía compilar con éxito, el método de generación directa produjo resultados de mayor calidad. Un juez de inteligencia artificial independiente, que evaluó el código sin saber qué método lo había creado, calificó los resultados de la generación directa como más correctos y mejor escritos. El estudio descartó la idea de que los modelos paso a paso estuvieran simplemente insuficientemente entrenados o que la tarea fuera demasiado difícil para ellos si se hacía por partes. La brecha de rendimiento persistió incluso cuando los investigadores tomaron en cuenta estos factores, lo que sugiere que el método de generar el código en sí mismo era la causa principal de la diferencia.

Sin embargo, la historia no es totalmente unilateral. Los investigadores encontraron que el enfoque paso a paso tenía un nicho específico donde podía competir. Funcionaba bien solo cuando el cambio requerido era muy pequeño y localizado en una parte diminuta del archivo. Por ejemplo, cuando la tarea consistía en corregir un solo error o refactorizar un bloque corto y aislado de código, los modelos paso a paso eran casi tan buenos como los que reescribían el archivo completo. Pero tan pronto como la tarea requería una cadena de cambios más larga o ediciones repartidas en diferentes partes del archivo, el método paso a paso quedaba rápidamente rezagado. Los investigadores concluyeron que el éxito de una estrategia de edición depende de la "localidad" de la tarea: si el cambio es pequeño y autónomo, un parche puede funcionar, pero para cualquier cosa más compleja, reescribir el archivo completo es la opción más segura y fiable.

Este descubrimiento desafía la suposición común de que realizar ediciones pequeñas y dirigidas es siempre el camino más eficiente para la inteligencia artificial. Aunque el método paso a paso ahorra en la cantidad de texto que la computadora necesita generar, introduce un mayor riesgo de errores sutiles que se acumulan con el tiempo. El estudio sugiere que, para construir herramientas de edición de código fiables, el mejor enfoque no es obligar al modelo a usar siempre un método u otro, sino reconocer la naturaleza de la tarea. Cuando el cambio es amplio o complejo, el modelo debería tener permitido reescribir el archivo completo para asegurar la precisión. Solo cuando el cambio es pequeño y confinado a un lugar específico, el sistema debería confiar en una secuencia de pequeñas ediciones. Esta idea ayuda a clarificar cómo diseñar mejores herramientas para los desarrolladores, asegurando que la inteligencia artificial que utilizan produzca código que no solo sea eficiente de generar, sino también correcto y robusto en la práctica.

¿Ahogado en artículos de tu campo?

Recibe resúmenes diarios de los artículos más novedosos que coincidan con tus palabras clave de investigación — con resúmenes técnicos, en tu idioma.

Probar Digest →