Clase 9

Consejos clave — Con saber esto, ya puedes dar instrucciones

Que los agentes solo manejen el código no es el final. Para delegar builds, despliegues y monitoreo a los agentes, el sistema entero debe ser legible por los agentes. No necesitas entender los internos de Docker. El agente maneja todo.

Al agente: “Agrega un endpoint /health al servidor. Que devuelva el estado de conexión a la DB, la tasa de error y el uptime como JSON.”

Esta sola frase le da al agente ojos para leer el estado del sistema. Con /health, el agente puede verificar mecánicamente “¿el servidor está vivo?” Sin ello, es un cirujano operando a ciegas.

Al agente: “Configura este proyecto como docker-compose.yml. Incluye servidor de la app y DB. Todo debería arrancar con docker compose up.”

No necesitas saber qué es Docker. Solo saber que es una herramienta que empaqueta apps en una caja para que funcionen igual en cualquier lugar es suficiente. El agente maneja desde la instalación hasta la configuración.

Al agente: “Configura rollback automático en caso de fallo del deploy. Si /health falla, revierte a la versión anterior.”

Los agentes inevitablemente cometerán errores. Los errores deben ser reversibles. Esta sola frase es la red de seguridad.

Tres frases. Dale ojos al servidor, declara el sistema, tiende la red de seguridad. El agente hace el resto.


Prueba rápida

Abre cualquier proyecto (o la app de la Clase 1) con Claude Code:

“Agrega un endpoint /health al servidor. Que devuelva el estado de conexión a la DB, la tasa de error y el uptime como JSON. Todos los tests Hurl existentes deben pasar.”

Después de que el agente agregue el código:

“Crea un test Hurl que verifique que /health devuelve 200. Verifica también que la respuesta JSON tenga los campos db, status y uptime.”

Este es el inicio de la Observabilidad. El agente ahora puede leer mecánicamente el estado del sistema.


Por qué debes dar instrucciones de esta manera

Introducción: Más allá del código

En la Clase 8 hicimos que el código fuera legible y editable por agentes. Dividimos archivos con filefunc, aseguramos tests con tsma, rastreamos historial de cambios con whyso.

¿Pero es suficiente que solo el código sea agent-operable?

Después de modificar código, hay que compilar. Después de compilar, desplegar. Después de desplegar, monitorear. Si algo falla, revertir. Si cualquiera de estos pasos requiere acción manual humana, el alcance autónomo del agente termina en “editar código.”

Todo este proceso manual debería estar conectado como un solo pipeline. El agente edita código, ejecuta tests, compila, despliega, monitorea — los humanos solo presionan el botón de aprobación.

Esto es Agent Operable System.


Del código al sistema

El código es una parte del sistema. El sistema es la totalidad de código + infraestructura + pipeline de despliegue + monitoreo + procedimientos operativos.

Si algún eslabón de esta cadena es opaco para el agente, todo lo que sigue se convierte en responsabilidad humana. Un eslabón roto derrumba toda la automatización.


4 condiciones para Agent Operable System

Condición 1. Observabilidad — Todo estado mecánicamente observable

Los agentes no tienen ojos. No pueden ver pantallas. No pueden leer dashboards. Para que un agente conozca el estado del sistema, ese estado debe salir como texto.

# Observación del agente
$ curl -s localhost:8080/health | jq .
{
  "status": "ok",
  "db": "connected",
  "uptime": "3h42m",
  "error_rate_5m": 0.02
}
→ ¿error_rate > 0.05? → Alerta

Núcleo de la observabilidad: no lo que los humanos ven, sino lo que las máquinas pueden parsear.

Un sistema sin observabilidad es un cirujano operando a ciegas.


Condición 2. Declarativo — Todas las acciones definidas declarativamente

Cuando le dices a un agente “despliega”, ¿qué hace?

Sin sistema declarativo: El agente adivina “normalmente se hace así.” SSH al servidor, git pull, reiniciar proceso… y se le olvida algo.

Con sistema declarativo: Todo está escrito en archivos. Sin adivinación. Los archivos son la verdad.

# docker-compose.yml — Qué servicios ejecutan
services:
  app:
    build: .
    ports: ["8080:8080"]
    environment:
      DATABASE_URL: ${DATABASE_URL}

# Makefile — Qué comandos hacen qué
deploy:
    docker compose up -d
    curl -sf localhost:8080/health || (docker compose logs && exit 1)

El principio SSOT de la Clase 4 se aplica idénticamente aquí. Docker es una herramienta que empaqueta apps en una caja para que funcionen igual en cualquier lugar. Terraform gestiona servidores como archivos de código. No necesitas entender los internos. El agente se encarga.


Condición 3. Reversible — Todos los cambios verificables y reversibles

Si el agente desplegó y el servicio murió, se necesitan dos cosas: poder saber qué salió mal, y poder revertir al estado anterior.

Los cambios irreversibles no se pueden delegar a agentes. Los agentes cometerán errores — y lo harán inevitablemente — así que los errores deben ser reversibles.


Condición 4. Human-in-the-loop — Las puertas de aprobación son explícitas

La más importante de las cuatro condiciones. Estructura donde el agente juzga y el humano aprueba. No “humano instruye, agente ejecuta” sino “agente propone, humano aprueba.”

TareaAuto-ejecutarNecesita aprobación
Ejecutar testsO
Formateo de códigoO
Deploy a stagingO
Deploy a producciónO
Cambio de esquema de DBO
Cambio de variables de entornoO
Rollback (pre-aprobado)O

Las tareas reversibles pueden auto-ejecutarse. Las de difícil reversión o alto impacto deben pasar por aprobación.


El pipeline completo: De “agrega funcionalidad” al despliegue

En un proyecto con Agent Operable System, decir “agrega funcionalidad de consulta de historial de pedidos”:

1. Edición SSOT
   Agente: Agrega ListOrders a features.yaml
   Agente: Define GET /orders en OpenAPI
   Agente: Define tabla orders en DDL
   Agente: Declara flujo de servicio en SSaC
   Agente: Escribe escenario de prueba en Hurl

2. Validación de consistencia
   Agente: yongol validate → 0 errores

3. Generación de código
   Agente: yongol generate → Controlador Go, consultas sqlc, componente React

4. Tests pasan
   Agente: go test → PASS
   Agente: Tests Hurl → PASS

5. Compilación
   Agente: docker build → Éxito

6. Despliegue (puerta de aprobación)
   Agente: "Todas las validaciones pasaron. Solicito aprobación para deploy a staging."
   Humano: "Aprobado"
   Agente: deploy staging → verificación /health → Normal

7. Deploy producción (puerta de aprobación)
   Agente: "30 minutos sin errores en staging. Solicito aprobación para deploy a producción."
   Humano: "Aprobado"
   Agente: deploy producción → verificación /health → Normal

8. Completado
   Agente: "Funcionalidad ListOrders desplegada.
   Monitoreando. Rollback automático ante anomalías."

Lo que hizo el humano: “Agrega funcionalidad de consulta de historial de pedidos” + “Aprobado” dos veces. Lo que hizo el agente: Todo lo demás.

Esta es la forma completa del escalamiento del vibe coding.


Visión — El final del escalamiento del vibe coding

Clase 1: "Agrega funcionalidad" → Aparece código → Se derrumba a 5 funcionalidades

Clase 9: "Agrega funcionalidad" + "Aprobar"
  → Generación de código → Tests pasan → Compilar → Desplegar → Monitorear
  → Todo el pipeline dirigido por el agente

Una estructura donde personas sin formación en ingeniería de software pueden mantener, desplegar y operar 100+ endpoints.

Pero aún falta algo. Estructuramos el código, estructuramos el sistema. ¿Pero los datos?

La Clase 10 completa el último puzzle.


Ejercicio

Ejercicio obligatorio (no técnicos)

Objetivo: Agregar un endpoint /health y verificar con Hurl.

Paso 1 — Establecer observabilidad

Al agente: "Agrega un endpoint /health al servidor.
Que devuelva el estado de conexión a la DB, la tasa de error y el uptime como JSON.
Todos los tests Hurl existentes deben pasar."

Paso 2 — Escribir test Hurl

Al agente: "Crea un test Hurl que verifique que /health devuelve 200.
Verifica también que la respuesta JSON tenga los campos db, status y uptime."

Verificar:

  • ¿/health devuelve 200?
  • ¿El test Hurl pasa?

Ejercicio de desafío (opcional)

No necesitas instalar Docker tú mismo ni entender los archivos de configuración. Dile todo al agente.

Paso 1 — Docker Compose

Al agente: "Si Docker no está instalado, instálalo.
Configura este proyecto como docker-compose.yml.
Incluye servidor de la app y PostgreSQL.
Todo debería arrancar con docker compose up.
Agrega comandos build, deploy, test al Makefile."

Paso 2 — Pipeline CI/CD

Al agente: "Crea un workflow de GitHub Actions.
Al hacer push a la rama main:
1. Ejecutar go test
2. Ejecutar tests Hurl
3. Docker build
4. Desplegar a staging si todo pasa
Pero el deploy a producción requiere aprobación manual."

Paso 3 — Demo de integración

Pide al agente agregar una funcionalidad. Demuestra el pipeline completo desde la edición SSOT hasta el deploy a staging, con solo el deploy a producción requiriendo aprobación manual.


Artículos relacionados


Curso completo de Reins Engineering

ClaseTítulo
Clase 1Cómo dirigir la IA
Clase 2Cómo desconfiar de la IA
Clase 3Aplicaciones irrompibles
Clase 4Decisiones fuera del código
Clase 5IA con riendas
Clase 6Si pasa, se bloquea
Clase 7Invertir la adulación
Clase 8La fábrica de agentes
Clase 9Automatización más allá del código
Clase 10La ley de los datos

Fuentes

  • Referencia Clase 8: Stanford “Lost in the Middle” (2024), Amazon “Context Length Alone Hurts LLM Performance” (2025) — El contexto innecesario degrada el rendimiento del agente un 30-85%
  • Principios de observabilidad — La salida estructurada parseable por máquinas (endpoints /health, logs JSON) como prerequisito para operación por agentes
  • Docker Compose — Configuración declarativa de servicios para que agentes lean y ejecuten sistemas sin adivinar
  • Terraform — Infraestructura como Código, definición declarativa y cambios reversibles del estado de infraestructura
  • CI/CD (GitHub Actions) — Automatización declarativa de pipelines de compilar-probar-desplegar
  • Diseño Human-in-the-loop — Auto para tareas reversibles, puerta de aprobación obligatoria para tareas de alto impacto