10.e.1 - Agentes, skills y herramientas de desarrollo

Objetivo

Comprender la diferencia entre un chatbot y un agente de inteligencia artificial, identificar qué son las skills o habilidades especializadas y aplicar buenas prácticas para utilizar herramientas de IA integradas en el desarrollo de software.

1. Contenidos

1.1 Del chatbot al asistente de desarrollo

Hasta ahora hemos trabajado la inteligencia artificial como una herramienta conversacional: escribimos una pregunta, recibimos una respuesta y decidimos si nos sirve. Este modelo se parece a hablar con un chatbot.

Sin embargo, en programación existen herramientas de IA más integradas en el proceso de desarrollo. Algunas pueden leer archivos del proyecto, analizar errores, proponer cambios, modificar código o ejecutar comandos. A este tipo de herramienta se le suele llamar agente de IA.

Idea clave: Un chatbot responde. Un agente puede actuar sobre un entorno de trabajo. Por eso un agente puede ser más útil, pero también requiere más supervisión.

En un proyecto real, esta diferencia es importante. No es lo mismo pedir una explicación teórica que permitir a una herramienta modificar archivos de una aplicación.

1.2 ¿Qué es un chatbot?

Un chatbot es una herramienta que mantiene una conversación con el usuario. El usuario escribe una petición y el sistema genera una respuesta en forma de texto, código, explicación, tabla o lista de pasos.

En programación, un chatbot puede ayudarnos a:

  • Explicar un concepto.
  • Interpretar un mensaje de error.
  • Generar un ejemplo de código.
  • Comparar dos soluciones.
  • Proponer casos de prueba.
  • Redactar documentación.

Ejemplo de uso:


Estoy aprendiendo Java. Explícame qué diferencia hay entre un método static
y un método no static con un ejemplo sencillo.
				

El chatbot puede responder con una explicación útil, pero normalmente no tiene acceso directo al proyecto completo ni modifica archivos por sí mismo.

1.3 ¿Qué es un agente de IA?

Un agente de IA es un sistema que no solo genera respuestas, sino que puede realizar acciones para cumplir una tarea. En programación, un agente puede trabajar sobre un proyecto de software y tomar decisiones intermedias para avanzar hacia un objetivo.

Un agente de programación puede realizar acciones como:

  • Leer archivos del proyecto.
  • Buscar dónde se define una clase, método o variable.
  • Proponer cambios sobre varios archivos.
  • Modificar código.
  • Ejecutar comandos de compilación o pruebas.
  • Analizar errores devueltos por la terminal.
  • Preparar cambios para Git.

Ejemplo de petición a un agente:


Analiza este proyecto Java y localiza dónde se calcula el precio final de un pedido.
No modifiques ningún archivo todavía. Primero explícame qué archivos has revisado
y qué función cumple cada uno.
				

Buena práctica: Antes de pedir a un agente que modifique código, conviene pedirle solo análisis. Primero entender, después cambiar.

1.4 Diferencias entre chatbot y agente

La siguiente tabla resume las diferencias principales entre trabajar con un chatbot y trabajar con un agente de IA en programación.

AspectoChatbotAgente de IA
Forma de trabajoResponde a preguntas.Puede planificar y ejecutar acciones.
Acceso al proyectoNormalmente solo ve lo que el usuario pega en el chat.Puede leer archivos del proyecto si tiene permiso.
Modificación de códigoPropone código para copiar o adaptar.Puede modificar archivos directamente.
Ejecución de comandosNo suele ejecutar el proyecto.Puede lanzar pruebas, compilación o comandos de terminal.
RiesgoPuede dar respuestas incorrectas.Puede dar respuestas incorrectas y además cambiar archivos.
Supervisión necesariaRevisar la respuesta.Revisar la respuesta, los cambios y los comandos ejecutados.

Conclusión: Cuanta más capacidad tenga una herramienta para actuar sobre el proyecto, más importante es revisar lo que hace.

1.5 ¿Qué es una skill?

Una skill o habilidad es una capacidad especializada que permite a una herramienta de IA realizar mejor una tarea concreta. Puede entenderse como una función adicional, un procedimiento preparado o una integración con una herramienta específica.

Ejemplos de skills relacionadas con programación:

  • Analizar un repositorio de código.
  • Ejecutar pruebas automáticas.
  • Leer documentación técnica.
  • Generar una página HTML siguiendo una plantilla.
  • Crear una consulta SQL.
  • Preparar un commit de Git.
  • Revisar errores de compilación.

Una skill no convierte a la IA en infalible. Simplemente le permite trabajar mejor en una tarea concreta porque dispone de instrucciones, herramientas o procedimientos más específicos.

Analogía: Un modelo de IA es como un trabajador generalista. Una skill sería una herramienta concreta o una guía de trabajo para una tarea especializada.

1.6 Herramientas de IA en el entorno de desarrollo

Las herramientas de IA para programación pueden integrarse en diferentes lugares del flujo de trabajo del desarrollador.

Tipo de herramientaDónde se utilizaUso habitual
Chat webNavegadorExplicaciones, ejemplos, revisión de fragmentos.
Asistente en el IDEVisual Studio Code, IntelliJ IDEA u otro editor.Autocompletado, explicación de código, sugerencias en contexto.
Agente en terminalLínea de comandos.Analizar proyectos, editar archivos, ejecutar pruebas.
Herramienta conectada a GitRepositorio local o remoto.Revisar cambios, ayudar con commits, explicar diferencias.

La elección de herramienta depende de la tarea. Para una duda conceptual puede bastar un chat. Para modificar un proyecto completo puede ser más útil un agente integrado con los archivos del proyecto.

1.7 Qué puede hacer un agente en un proyecto de programación

Un agente puede ayudar a realizar tareas que implican varios pasos. Por ejemplo, si una aplicación Java no compila, el agente puede revisar el error, localizar el archivo afectado, proponer un cambio y volver a ejecutar la compilación.

Ejemplo de flujo de trabajo:

  1. El programador describe el problema.
  2. El agente revisa la estructura del proyecto.
  3. El agente identifica los archivos relevantes.
  4. El agente propone una hipótesis sobre el error.
  5. El agente modifica una parte del código, si tiene permiso.
  6. El agente ejecuta una prueba o compilación.
  7. El programador revisa los cambios y decide si los acepta.

Prompt recomendado:


Revisa por qué este proyecto Java no compila.
Antes de modificar archivos:
1. Resume el error principal.
2. Indica qué archivos vas a revisar.
3. Propón el cambio mínimo necesario.
No hagas cambios hasta que los haya revisado.
				

Control del proceso: El programador debe decidir cuándo el agente puede leer, modificar o ejecutar. No conviene dar permisos amplios sin revisar el plan.

1.8 Riesgos de trabajar con agentes

Los agentes son herramientas potentes, pero tienen riesgos específicos. Al poder actuar sobre archivos reales, sus errores pueden afectar al proyecto.

RiesgoEjemploMedida de prevención
Cambios excesivosModifica muchos archivos cuando solo hacía falta cambiar una línea.Pedir cambios mínimos y revisar el diff.
Pérdida de estiloCambia nombres, formato o estructura sin necesidad.Indicar las normas del proyecto.
Errores ocultosEl código compila, pero cambia el comportamiento.Ejecutar pruebas y comparar resultados.
Datos sensiblesEnvía claves, tokens o datos privados al modelo.No compartir secretos ni información personal.
DependenciaEl alumno acepta cambios que no entiende.Exigir explicación y defensa del código.

Regla profesional: Un cambio que no entiendes es un cambio que todavía no deberías aceptar.

1.9 Buenas prácticas con Git antes de usar agentes

Cuando un agente puede modificar archivos, es recomendable trabajar con control de versiones. Git permite guardar el estado del proyecto y revisar qué ha cambiado.

Antes de pedir cambios a un agente, conviene:

  • Tener el proyecto funcionando o, al menos, conocer su estado actual.
  • Guardar los cambios propios antes de empezar.
  • Hacer commits pequeños y claros.
  • Revisar el diff después de cada modificación.
  • No aceptar cambios grandes de una sola vez.
  • Ejecutar pruebas después de cada cambio importante.

Comandos útiles de Git:


git status
git diff
git add .
git commit -m "Añade validación de edad"
				

Buena práctica: Si el agente estropea algo, Git permite ver qué cambió y volver a una versión anterior.

1.10 Cómo pedir cambios seguros a un agente

La forma de pedir cambios a un agente debe ser más cuidadosa que en un chatbot, porque el agente puede actuar sobre archivos reales.

Un prompt seguro suele incluir:

  • Objetivo concreto.
  • Archivos o zona del proyecto que puede tocar.
  • Archivos o zonas que no debe modificar.
  • Restricción de cambio mínimo.
  • Petición de explicación antes o después del cambio.
  • Pruebas que debe ejecutar o proponer.

Ejemplo de prompt seguro:


Añade una validación para que la edad no pueda ser negativa.

Restricciones:
- Modifica solo la clase ValidarEdad.java.
- Mantén los nombres actuales de los métodos.
- Haz el cambio mínimo necesario.
- Antes de cambiar nada, explica qué línea modificarías y por qué.
- Después del cambio, propón tres casos de prueba.
				

Este tipo de prompt reduce la probabilidad de que el agente haga cambios innecesarios o difíciles de revisar.

1.11 Revisión de cambios: el diff

Cuando una herramienta modifica código, no basta con mirar el archivo final. Es importante revisar el diff, es decir, la comparación entre la versión anterior y la versión modificada.

El diff permite ver:

  • Qué líneas se han añadido.
  • Qué líneas se han eliminado.
  • Qué archivos se han modificado.
  • Si el cambio es mayor de lo esperado.

Ejemplo simplificado de diff:


- if (edad >= 18) {
+ if (edad != null && edad >= 18) {
	System.out.println("Acceso permitido");
}
				

Pregunta de revisión: ¿El cambio soluciona el problema sin introducir otros nuevos?

1.12 Cuándo no conviene usar un agente

Aunque los agentes pueden ser muy útiles, hay situaciones en las que no conviene utilizarlos o debemos limitar mucho su actuación.

  • Cuando el ejercicio busca practicar una técnica básica que el alumno aún no domina.
  • Cuando el proyecto contiene claves, contraseñas o datos personales.
  • Cuando no existe copia de seguridad o control de versiones.
  • Cuando no entendemos los cambios que propone.
  • Cuando la tarea requiere una decisión académica o profesional que debe tomar una persona.

En estos casos puede ser mejor pedir una explicación, una pista o una revisión parcial, en lugar de permitir que el agente modifique el proyecto.

Principio final: La IA puede ayudar a programar, pero no debe decidir por nosotros ni asumir la responsabilidad del resultado.

2. Ejercicios

2.1 Chatbot o agente

Enunciado: Indica si en cada situación sería más adecuado usar un chatbot o un agente de IA. Justifica la respuesta.

  1. Quieres entender qué es una clase en Java.
  2. Quieres que una herramienta revise todos los archivos de un proyecto y localice dónde se produce un error.
  3. Necesitas un ejemplo sencillo de bucle for.
  4. Quieres modificar una aplicación para añadir una validación en una clase concreta.
  5. Necesitas que alguien te explique un mensaje de error que has copiado de la terminal.

2.2 Identifica posibles skills

Enunciado: Para cada tarea, indica qué skill o habilidad especializada sería útil.

  1. Analizar un archivo HTML y comprobar si sigue una plantilla.
  2. Ejecutar pruebas automáticas de un proyecto Java.
  3. Explicar los cambios realizados entre dos versiones de un archivo.
  4. Generar una consulta SQL a partir de una descripción.
  5. Preparar un mensaje de commit claro y profesional.

2.3 Redacta un prompt seguro para un agente

Enunciado: Imagina que tienes una clase Java llamada Calculadora.java y quieres añadir una validación para impedir divisiones entre cero.

Tareas:

  1. Redacta un prompt para un agente de IA.
  2. Indica qué archivo puede modificar.
  3. Indica qué restricciones debe respetar.
  4. Pide que explique el cambio antes de aplicarlo.
  5. Pide al menos tres casos de prueba.

2.4 Revisión de un diff

Enunciado: Un agente ha realizado el siguiente cambio:


- public static Boolean esMayorDeEdad(Integer edad) {
- 	return edad >= 18;
- }
+ public static Boolean esMayorDeEdad(Integer edad) {
+ 	if (edad == null) {
+ 		return false;
+ 	}
+ 
+ 	if (edad < 0) {
+ 		return false;
+ 	}
+ 
+ 	return edad >= 18;
+ }
				

Tareas:

  1. Explica qué líneas se han añadido.
  2. Indica qué problema intenta resolver el cambio.
  3. Propón tres casos de prueba para comprobarlo.
  4. Indica si aceptarías el cambio y por qué.

2.5 Git y agentes

Enunciado: Ordena las siguientes acciones para trabajar de forma segura con un agente de IA:

  • Revisar el diff.
  • Pedir al agente que modifique el código.
  • Ejecutar pruebas.
  • Comprobar el estado del repositorio con git status.
  • Hacer un commit con un mensaje claro.
  • Pedir primero un análisis sin cambios.

Después, explica por qué no conviene aceptar cambios grandes sin revisión.

Reto: Diseña un protocolo de uso de agentes

Diseña un pequeño protocolo para usar agentes de IA en una práctica de programación de clase.

El protocolo debe incluir:

  1. Qué puede hacer el agente.
  2. Qué no puede hacer el agente.
  3. Qué debe revisar siempre el alumno.
  4. Cómo se deben registrar los prompts utilizados.
  5. Qué pruebas deben realizarse antes de entregar.
  6. Qué normas de privacidad deben respetarse.

Después, aplica el protocolo a un caso concreto: corregir un error en una clase Java sencilla.

Entrega recomendada: Incluye el protocolo, un ejemplo de prompt seguro, una lista de comprobación y una breve reflexión sobre los riesgos de trabajar con agentes.

3. Bibliografía