clase:daw:daw-proyecto:tema02
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Próxima revisión | Revisión previa | ||
| clase:daw:daw-proyecto:tema02 [2026/10/13 19:39] – creado Lorenzo | clase:daw:daw-proyecto:tema02 [2026/10/14 16:05] (actual) – [Claude Code y OpenCode] Lorenzo | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| - | ====== 2. Git en el proyecto ====== | + | ====== 2. IA y agentes ====== |
| + | |||
| + | Objetivo del tema: saber qué es lo que se va a usar durante todo el módulo. Es un repaso rápido de programar con agentes: qué es un agente, cómo funcionan Claude Code y OpenCode, qué es una skill, qué es un MCP y qué son los subagentes y los bucles de revisión. Nada de esto se profundiza aquí: lo que ya está en el [[cursos: | ||
| + | |||
| + | ===== Qué es un agente | ||
| + | |||
| + | Un **modelo de lenguaje** responde a un texto con otro texto. Un **agente** es ese modelo metido en un bucle con **herramientas**: | ||
| + | |||
| + | El bucle es siempre el mismo: | ||
| + | |||
| + | - Recibe una petición («añade un endpoint que devuelva los clientes de una provincia»). | ||
| + | - Decide qué herramienta usar (leer '' | ||
| + | - Ejecuta la herramienta y el resultado entra en la conversación. | ||
| + | - Con lo que ha visto, decide la siguiente (editar el fichero, lanzar '' | ||
| + | - Repite hasta que considera que ha terminado, y responde. | ||
| + | |||
| + | Dos consecuencias que explican casi todo lo que viene después: | ||
| + | |||
| + | * **Lo que el agente sabe es lo que tiene en la conversación.** No recuerda nada de la anterior. Lo que tenga que saber siempre, va en un fichero que lee al empezar ('' | ||
| + | * **Lo que el agente puede hacer es lo que sus herramientas y sus permisos le dejan.** Por eso en este módulo se le dan permisos justos y se le quitan los peligrosos (tema 3 y tema 5). | ||
| + | |||
| + | El detalle, con los tipos de agente que existen, está en [[cursos: | ||
| + | |||
| + | ===== Claude Code y OpenCode ===== | ||
| + | |||
| + | Son los dos agentes de terminal que se usan en el módulo. Se abren en la carpeta del proyecto, leen sus instrucciones fijas y, a partir de ahí, se habla con ellos. Hacen lo mismo con nombres distintos: | ||
| + | |||
| + | ^ ^ Claude Code ^ OpenCode ^ | ||
| + | | Instrucciones fijas del proyecto | '' | ||
| + | | Skills | '' | ||
| + | | Modo plan: solo lee, no toca código | '' | ||
| + | | Cambiar de modelo | ''/ | ||
| + | | Ver cuánto contexto va usado | ''/ | ||
| + | | Vaciar la conversación | ''/ | ||
| + | | Permisos | ''/ | ||
| + | | Servidores MCP | '' | ||
| + | |||
| + | Se usa cualquiera de los dos, y todo lo del proyecto (instrucciones, | ||
| + | |||
| + | |||
| + | Modos de Claude code | ||
| + | |||
| + | ^ Modo ^ Leer ^ Editar en la propia carpeta ^ Comandos simples (mkdir, mv, cp, rm…) ^ Todo el resto ^ | ||
| + | | **Manual** | ✅ | Pregunta | Pregunta | Pregunta | | ||
| + | | **Accept Edits** | ✅ | ✅ | ✅ | Pregunta | | ||
| + | | **Plan** | ✅ | No edita en modo plan | ✅ (revisado por el clasificador) | Pregunta | | ||
| + | | **Auto** | ✅ | ✅ | ✅ | ✅ (revisado por el clasificador; | ||
| + | ===== El contexto ===== | ||
| + | |||
| + | El **contexto** es todo lo que el modelo tiene delante en una conversación: | ||
| + | |||
| + | * **Es limitado y se llena.** Cuando está lleno, el agente trabaja peor y cada petición cuesta más. | ||
| + | * **Lo que no está en el contexto no existe para el agente.** Y lo que está de más, estorba: un log de doscientas líneas pegado entero tapa las tres que importan. | ||
| + | |||
| + | De aquí sale la regla de oro del módulo, que ya aparecía en el tema 1: **una conversación por fase**, ''/ | ||
| + | |||
| + | ===== Skills ===== | ||
| + | |||
| + | Una **skill** es un fichero de instrucciones que el agente carga cuando toca. Es la forma de enseñarle cómo se hace algo **en este proyecto** sin repetírselo en cada conversación: | ||
| + | |||
| + | <sxh yaml; | ||
| + | --- | ||
| + | name: hola | ||
| + | description: | ||
| + | --- | ||
| + | Saluda en castellano a la persona cuyo nombre llega en $ARGUMENTS. | ||
| + | Si no llega ningún nombre, pregúntalo. | ||
| + | </ | ||
| + | |||
| + | Lo que importa de cada parte: | ||
| + | |||
| + | * **'' | ||
| + | * **El cuerpo** es el procedimiento, | ||
| + | * **'' | ||
| + | |||
| + | Cómo escribir una skill: se le pide al propio agente un primer borrador («escribe una skill que haga X con estos pasos») y se corrige. Se prueba lanzándola y mirando qué hace; si se salta un paso o se inventa uno, se afina el texto. Qué es una skill, cómo se escribe su descripción y los tipos que hay: [[cursos: | ||
| + | |||
| + | ===== MCP ===== | ||
| + | |||
| + | Un **MCP** (//Model Context Protocol//) es un servidor que da al agente **herramientas nuevas**: abrir un navegador y ver una página, consultar la documentación actual de una librería, hacer consultas a una base de datos. El agente las usa como las suyas propias. Lo que es, cómo se conecta y qué servidores existen: [[cursos: | ||
| + | |||
| + | La diferencia con una skill: la skill es **conocimiento** (cómo se hace algo aquí); el MCP es **capacidad** (poder hacer algo que antes no podía). En el módulo se usan dos y ninguno más, Context7 y Playwright, y se configuran en el tema 5. | ||
| + | |||
| + | ===== Subagentes y bucles ===== | ||
| + | |||
| + | Un agente puede lanzar **otro agente** para una parte del trabajo: un **subagente**, | ||
| + | |||
| + | * **Mantener limpio el contexto principal.** Buscar en qué ficheros se usa una clase lleva leer veinte; el subagente los lee y devuelve una lista de tres líneas. | ||
| + | * **Especializar.** Un subagente que solo revisa, con instrucciones de revisor y sin permiso para editar, no se deja llevar por lo que acaba de escribir. Un agente que revisa su propio código tiende a darlo por bueno; **otro agente, con otro contexto, no**. | ||
| + | |||
| + | Con subagentes se montan **bucles**: un agente hace, otro comprueba, y se repite hasta que la comprobación pasa. El patrón más útil es [[cursos: | ||
| + | |||
| + | En este módulo el bucle no está dentro de una herramienta: | ||
| + | |||
| + | El resto de patrones (pipeline, orquestador, | ||
| + | |||
| + | ===== Lo que el agente no decide ===== | ||
| + | |||
| + | Todo lo anterior hace el trabajo; nada de lo anterior decide **qué** trabajo. Qué se construye, si lo que ha salido es lo que se quería y si se da por bueno, lo decide una persona, y en el módulo eso tiene tres sitios fijos: el issue y la spec, el navegador y los tests, y la revisión antes de cerrar. El agente propone en ficheros y la persona decide entre comandos, nunca dentro de ellos. Es lo que hace que el día de trabajo del tema 1 sea posible sin que nadie se fíe a ciegas. | ||
| + | |||
| + | ===== Ejercicios ===== | ||
| + | |||
| + | ==== Ejercicio 1 ==== | ||
| + | * Instala Claude Code y OpenCode siguiendo el curso. Abre cada uno en una carpeta vacía y pídele que cree un '' | ||
| + | * Con ''/ | ||
| + | |||
| + | ==== Ejercicio 2 ==== | ||
| + | * Crea la skill ''/ | ||
| + | * Cambia la '' | ||
| + | |||
| + | ==== Ejercicio 3 ==== | ||
| + | * En Claude Code, pídele que revise un fichero de código cualquiera **usando un subagente** y que te devuelva solo los hallazgos. Compara el ''/ | ||
| + | * Pídele que corrija uno de los hallazgos y que después un subagente **distinto** compruebe que está corregido. Es el bucle ejecutor-revisor hecho a mano; en el tema 6 lo harán las skills. | ||
clase/daw/daw-proyecto/tema02.1791913147.txt.gz · Última modificación: por Lorenzo
