claudio.cool
CCDV-FLecciones

CCDV-F · Agentes y flujos de trabajo

Cómo se construye el agente, con loop propio, Agent SDK o Managed Agents

⏱ 3 min de lecturaBorrador

Un agente es siempre lo mismo por dentro: Claude pide una herramienta, alguien la ejecuta, el resultado vuelve y se repite hasta terminar. Ese ciclo es el bucle del agente (agent loop), y el código que lo sostiene es el harness (harness). La pregunta del examen casi nunca es “¿se puede hacer?”, sino “¿quién conviene que escriba y opere ese harness?”.

Tres formas de construirlo

Opción Quién corre el loop Cuándo conviene
Loop propio con el SDK de cliente (Messages API) Tu código, de punta a punta Control fino, pocas herramientas propias, nada de archivos ni terminal
Claude Agent SDK (Claude Agent SDK) Una librería en un proceso que operás vos Querés el loop, las herramientas integradas, los permisos, las sesiones, los hooks y la compactación de Claude Code dentro de tu app o tu CI
Agentes gestionados (Claude Managed Agents) Un harness alojado por Anthropic Tareas largas y asíncronas, sin gente para armar infraestructura; el sandbox puede ser de Anthropic o propio

Fijate en las pistas del escenario:

  • “Mantenemos a mano lectura de archivos, permisos, reanudar sesiones y compactación” → eso ya viene en el Agent SDK.
  • “Somos dos, no tenemos infraestructura y el agente corre horas de noche” → Managed Agents.
  • “Una llamada con una herramienta propia” → alcanza la API directa; no hace falta un framework ni un SDK de agentes.

Si escribís el loop vos

El loop se gobierna con el motivo de corte (stop_reason) de cada respuesta, no con el texto:

  1. Mientras stop_reason sea tool_use, ejecutás las herramientas pedidas y seguís.
  2. Devolvés un tool_result por cada bloque tool_use, con su tool_use_id, todos juntos en el siguiente mensaje de usuario. Si Claude pidió tres herramientas y devolvés una, la API responde 400.
  3. Con cualquier otro valor (end_turn, max_tokens, refusal) el loop termina o se maneja aparte.
  4. Siempre hay un tope de iteraciones o de presupuesto, como red de seguridad.

Cortar cuando el modelo escribe “LISTO” falla en las dos direcciones: a veces no lo escribe y el loop se dispara, a veces lo escribe antes de tiempo.

Lo que tiene que pasar siempre va en un hook

Un hook (hook) es código tuyo que corre en un punto fijo del ciclo, por ejemplo antes de ejecutar una herramienta (PreToolUse) o después (PostToolUse). Corre siempre, decida lo que decida el modelo:

  • registrar cada llamada y su resultado en la auditoría;
  • bloquear un comando destructivo o un monto fuera de política;
  • normalizar un resultado antes de que lo lea Claude.

Una instrucción en el system prompt (“registrá cada acción”) es una sugerencia: va a fallar en algún porcentaje de casos.

Las trampas típicas

  • Pedir en el prompt, con mayúsculas o con ejemplos, lo que un hook garantiza en código.
  • Un loop sin tope, o que corta por una palabra del texto.
  • Reimplementar herramientas, permisos y sesiones que el Agent SDK ya trae.
  • Armar loop, sandbox y sesiones propios cuando el equipo no tiene quién los opere y ningún requisito lo exige.
  • Sumar un framework de agentes “por las dudas” a una llamada simple.

En el examen

Leé quién va a operar el agente y qué ya está resuelto. Si el equipo reinventa lo que hace Claude Code, la respuesta es el Agent SDK; si no quiere operar nada y la tarea es larga, Managed Agents; si el problema es que el loop no termina o termina mal, buscá la opción que mira stop_reason y agrega un tope. Y si aparece “sin excepciones”, descartá todo lo que sea prompt y buscá el hook.

Pregunta rápida

Una pregunta del simulacro sobre este dominio. Cuenta para tu progreso.

An insurance broker's platform team built an intake assistant with the Claude Agent SDK. Every new claim must go through the same four steps in order: extract the policy number from the uploaded form, validate it against the policy database, classify the claim type, and draft an acknowledgment email. The agent receives all four instructions in its system prompt and has a tool for each step.

After a month in production, the operations lead reviewed 300 runs. In about 6% of them the agent skipped validation when the policy number "looked right", and in a few others it drafted the email before classifying the claim. The team tried rewording the system prompt with "ALWAYS" in capitals, which reduced the skips but did not eliminate them.

The team is four developers working in Python, and the next audit of the claims process is in two months.

What is the best change to the design?

Practicá este dominio en el simulacro →