Delega el problema grande a un agent nuevo
«Process isolation gives context isolation for free.» El subagent hace el trabajo sucio; el padre recibe solo el resumen limpio.
El dilema del agent padre
Imagina que le pides a Claude Code que «entienda cómo gestiona la concurrencia este repositorio Rust de 100 000 líneas». La forma directa: buscar con ls, cat y grep dentro del contexto principal.
El problema: esta exploración mete 30 tool_results en messages[], cada uno con varios miles de tokens. Para cuando el modelo empieza a escribir la respuesta, el contexto ya está desbordado de exploración previa — unas pocas vueltas más y toca el límite, con una respuesta desordenada.
La solución de s04: delegar la exploración a un agent nuevo. El nuevo agent arranca con messages=[], explora por su cuenta y al final solo devuelve el summary al agent padre. En el contexto del padre solo queda un «llamé a la herramienta task y el resultado fue XXX» — limpio.
def run_subagent(prompt: str) -> str: sub_messages = [{"role":"user", "content": prompt}] # contexto completamente nuevo for _ in range(30): # límite de seguridad para evitar desbocarse response = client.messages.create(..., messages=sub_messages, tools=CHILD_TOOLS, ...) ... # solo devuelve el texto final; el razonamiento intermedio se descarta return "".join(b.text for b in response.content if hasattr(b, "text"))
Comparativa de contextos padre e hijo
Este widget simula una tarea real: «lista todos los usos de la API deprecated en este repositorio». Puedes ejecutarla con dos estrategias: (A) el agent padre lo hace todo; (B) lanza un subagent. Compara el tamaño final de cada contexto.
CHILD_TOOLS: qué herramientas tiene el hijo
Hay un detalle en s04 que es fácil pasar por alto: el agent hijo no tiene la herramienta task.
# El hijo solo tiene herramientas básicas; no puede lanzar nietos CHILD_TOOLS = [bash, read_file, write_file, edit_file] # El padre tiene además la herramienta task PARENT_TOOLS = CHILD_TOOLS + [task]
¿Por qué? Para evitar que el dispatch recursivo explote en árbol. Un subagent que lanza 4 sub-subagents, que a su vez lanzan más... en pocas rondas son decenas de llamadas concurrentes que ningún rate limit de API resiste. La convención de s04: la jerarquía es plana, padre → hijo y nada más. El código real de Claude Code funciona igual — la herramienta Task prohíbe llamar a otra Task.
Visible e invisible
Clasifica estas afirmaciones: ¿cuáles son True y cuáles False?