¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Revisar los cambios de un agente

Después de esta lección: Puedo leer los cambios de un agente y decidir si los conservo, los cambio o los descarto.

Lección de 75 min13 comandosLaboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

Tres archivos para un cambio de uno

Pides a un agente una función nueva. Vuelve con un resumen amable y tres archivos cambiados. Las pruebas están en verde y la tentación es aceptarlo todo.

Revisar los cambios de un agente es un oficio aparte. Aquí aprendes a leerlos y a decidir si los conservas, los cambias o los descartas.

Al final de esta lección

Nota

Puedo leer los cambios de un agente y decidir si los conservo, los cambio o los descarto.

Palabras clave

PalabraQué significa
Conjunto de cambiostodos los archivos que un agente cambia con una petición
Hunkun trozo seguido de líneas cambiadas en un diff
Alcancehasta dónde llega lo que pediste
Prueba debilitadauna prueba borrada o hecha más permisiva
Descartartirar el cambio y volver a empezar

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Empieza por la lista de archivos

Antes de leer una sola línea, mira qué archivos cambiaron y compáralos con tu petición. Un archivo que no pediste, como uno de ajustes, es una señal. No es siempre un error, pero siempre pide una explicación.

Mira también el tamaño. Un conjunto de cambios mucho más grande que la petición esconde cosas.

Una petición posible

Esta es una petición posible, no la única. «Añade loyaltyPrice(total, points): el total baja un 5 % desde 100 puntos. No cambies discount ni ningún otro archivo. Añade una prueba para la función nueva y no borres ninguna.»

Una petición con límites claros te da con qué comparar lo que vuelve.

Lee cada hunk con tres preguntas

Un diff se divide en hunks, trozos seguidos de líneas cambiadas. Para cada uno pregunta tres cosas. ¿Lo pedí? ¿Debilita alguna prueba? ¿Es más grande de lo que hacía falta?

Una prueba borrada o hecha más permisiva es la señal más grave: es la forma de que todo salga en verde sin que nada funcione. Pasa también las pruebas viejas por el código nuevo.

Un ejemplo escrito a mano

El antes y el después de abajo los escribimos nosotros, a mano. Ningún agente los escribió. El después añade lo que pediste y además otras cosas que no.

Los botones escriben archivos en la carpeta demo-diff de tu proyecto. No tocan el programa de la caja.

Crear la carpeta del antes

Comando
docker exec -w /home/node/project agent mkdir -p demo-diff/antes

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir el código de antes

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Regla: con 3 artículos o más, el total baja un 10 %.' 'function discount(total, items) {' '  if (items >= 3) return Math.round(total * 0.9);' '  return total;' '}' 'module.exports = { discount };' > demo-diff/antes/descuento.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir las pruebas de antes

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { discount } = require(process.argv[2] || \"./descuento\");' '' 'function check(name, got, want) {' '  console.log((got === want ? \"pasa   \" : \"FALLA  \") + name + \" \" + got);' '}' 'check(\"2 artículos\", discount(1000, 2), 1000);' 'check(\"3 artículos\", discount(1000, 3), 900);' 'check(\"total con céntimos\", discount(1005, 3), 905);' > demo-diff/antes/descuento.test.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir los ajustes de antes

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'module.exports = { mode: \"prueba\", currency: \"EUR\" };' > demo-diff/antes/config.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Copiar el antes como punto de partida

Comando
docker exec -w /home/node/project agent cp -r demo-diff/antes demo-diff/despues

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir el código de después

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' '// Regla: con 3 artículos o más, el total baja un 10 %.' 'function discount(total, items) {' '  if (items >= 3) return Math.floor(total * 0.9);' '  return total;' '}' '// Socio: con 100 puntos o más, el total baja un 5 %.' 'function loyaltyPrice(total, points) {' '  if (points >= 100) return Math.round(total * 0.95);' '  return total;' '}' 'module.exports = { discount, loyaltyPrice };' > demo-diff/despues/descuento.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir las pruebas de después

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'const { discount, loyaltyPrice } = require(process.argv[2] || \"./descuento\");' '' 'function check(name, got, want) {' '  console.log((got === want ? \"pasa   \" : \"FALLA  \") + name + \" \" + got);' '}' 'check(\"2 artículos\", discount(1000, 2), 1000);' 'check(\"3 artículos\", discount(1000, 3), 900);' 'check(\"socio con 100 puntos\", loyaltyPrice(1000, 100), 950);' > demo-diff/despues/descuento.test.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribir los ajustes de después

Comando
docker exec -w /home/node/project agent sh -c "printf '%s\n' 'module.exports = { mode: \"produccion\", currency: \"EUR\" };' > demo-diff/despues/config.js"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ver qué archivos cambiaron

Comando
docker exec -w /home/node/project agent sh -c "diff -rq demo-diff/antes demo-diff/despues || true"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ver el cambio del código

Comando
docker exec -w /home/node/project agent sh -c "diff -U1 --label antes --label despues demo-diff/antes/descuento.js demo-diff/despues/descuento.js || true"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ver el cambio de las pruebas

Comando
docker exec -w /home/node/project agent sh -c "diff -U1 --label antes --label despues demo-diff/antes/descuento.test.js demo-diff/despues/descuento.test.js || true"

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pasar las pruebas nuevas por el código nuevo

Comando
docker exec -w /home/node/project agent node demo-diff/despues/descuento.test.js

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Pasar las pruebas viejas por el código nuevo

Comando
docker exec -w /home/node/project agent node demo-diff/antes/descuento.test.js ../despues/descuento

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Conservar, cambiar o descartar

Conservas si todos los hunks entran en lo pedido y ninguna prueba se debilitó. Cambias si el cambio es bueno pero trae algo de más: pides al agente que lo quite. Descartas si hay pruebas debilitadas o varias cosas que no pediste.

Descartar no es perder tiempo. Una petición mejor da un cambio más corto, y ese sí lo puedes revisar.

Ejemplo resuelto: revisar el cambio de ejemplo

ArchivoQué cambió¿Se pidió?Decisión
descuento.js, loyaltyPriceFunción nuevaSíConservar
descuento.js, discountround pasa a floorNoQuitar
descuento.test.jsSe borra la prueba de 1005NoDescartar
config.jsprueba pasa a produccionNoQuitar o preguntar

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que, si el resumen del agente suena bien y las pruebas pasan, el cambio es bueno. El resumen cuenta lo que el agente quiere que veas. Lee el diff, no el resumen, y mira qué pruebas desaparecieron.

Para ir más lejos: revisa a tu agente

En el laboratorio, pide al agente un cambio que no sea el defecto de la caja, que es la tarea del laboratorio. Por ejemplo, una función nueva para el precio de dos manzanas. Escribe antes qué archivos puede tocar.

Cuando vuelva, no aceptes nada todavía. Mira la lista de archivos, lee cada hunk y pasa las pruebas viejas. Anota tu decisión y por qué.

Sobre este laboratorio y su código: Laboratorio de agente de programación con IA: usa opencode para explicar y corregir código, y comprueba su trabajo

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.