Lección 07 · 2 min de lectura

Dale a la inicialización su propia fase

Haz que el agente averigüe cómo construir y arrancar el proyecto mientras además hace el trabajo, y cada corrida empieza en un mundo algo distinto y medio roto. La preparación merece su propio paso.

💡Mise en place antes del servicio

Una cocina hace su preparación antes del primer pedido: caldos hechos, estaciones montadas, cuchillos afilados. El servicio no es momento de descubrir que no hay cebollas. La inicialización es el mise en place del agente: construye el mundo y demuestra que está sano una vez, por adelantado, para que el trabajo nunca pare a arreglar el entorno.


Por qué el setup no es el paso cero

Cuando la preparación del entorno se improvisa dentro de la tarea, aparece la deriva silenciosa: una dependencia que se instaló la vez pasada pero no esta, una variable de entorno que casualmente estaba puesta, un servicio que ya estaba corriendo. El agente gasta contexto real diagnosticando el entorno en vez de trabajar, y los resultados no son reproducibles.

Sacar el init a su propia fase hace explícito e idéntico el mundo de partida en cada ejecución. «Funcionaba en mi máquina» deja de ser una categoría de fallo.

flowchart LR
  Start["Arranca la corrida"] --> Init["init.sh, construye y revisa el entorno"]
  Init -->|exit distinto de cero| Fail["La corrida falla antes de cualquier agente"]
  Init -->|exit 0| Work["Construye funciones contra un mundo probado"]
  linkStyle 1 stroke:#e0493f,stroke-width:2.5px,color:#e0493f
  linkStyle 2 stroke:#2ea043,stroke-width:2.5px,color:#2ea043
init.sh corre una vez y debe probar la salud antes de la primera función.

Un script de init repetible

Captura la preparación como un único comando que construye el mundo desde cero: instala dependencias, configura, migra y arranca aquello contra lo que corre el agente. Debe ser idempotente y rápido de reejecutar.

.agentum-harness/init.sh
# Smoke-test del entorno, se corre UNA vez antes de toda función.
# Un exit distinto de cero aborta la corrida, el entorno no está listo.
set -euo pipefail
command -v git  >/dev/null || { echo "FAIL: git";  exit 1; }
command -v make >/dev/null || { echo "FAIL: make"; exit 1; }
make setup && make check   # demuestra que el mundo está sano
echo "OK, entorno listo"

Que sea rápido y barato, y que demuestre la salud antes de empezar: en Agentum un init.sh con exit distinto de cero significa que no se lanza ningún agente.

El init en el bucle de Agentum

El Harness Engine corre .agentum-harness/init.sh exactamente una vez, antes de la primera función, la corrida queda en el estado init_verifying mientras se ejecuta. Un exit distinto de cero mueve toda la corrida a failed antes de lanzar un solo agente, así que un entorno roto falla fuerte y temprano en vez de corromper función tras función. Cada función posterior arranca contra el mismo mundo demostrado.

Puntos clave

  • Meter el setup en la tarea causa deriva silenciosa y no reproducible.
  • Haz de la inicialización una fase dedicada e idempotente que construye el mundo desde cero.
  • Termina el init con una comprobación de salud que valide el entorno antes de empezar.
  • Agentum corre el init antes del bucle, así cada tarea arranca de un mundo conocido-bueno.

Ejercicios

  1. Escribe init.sh. Captura la preparación de tu proyecto en un script idempotente que termina demostrando que el entorno está sano.
  2. Rómpelo a propósito. Quita una dependencia y confirma que init falla fuerte en vez de a mitad de tarea.

Para seguir leyendo

Esta lección reformula para Agentum el capítulo equivalente del curso abierto de Walking Labs. Lee el original ↗