Lección 04 · planificación

Manejar grandes problemas a un agente recién abierto

"El aislamiento de procesos proporciona aislamiento de contexto de forma gratuita". El agente secundario hace el trabajo sucio y el agente principal solo recopila el resumen limpio.

⏱ ~10 min · 📝 3 widgets interactivos · 🧑‍💻 Basado en shareAI-lab · s04_subagent.py

El dilema del agente padre

Imagínese que le pide a Claude Code que "descubra cómo este repositorio Rust de 100.000 líneas maneja la concurrencia". Enfoque intuitivo: realiza ls, cat, grep y busca en el contexto principal.

Problema: esta ronda de exploración acumulará 30 resultados de herramientas en mensajes[], cada uno con varios miles de tokens. Para cuando realmente comienza a escribir la respuesta, el contexto ya se ha llenado con el proceso de exploración: el límite superior se activará después de unos pocos pasos más y la respuesta seguirá siendo confusa.

Solución para s04: lanzar la tarea de exploración a un nuevo agente. El nuevo agente comienza desde messages=[], explora el suyo propio y finalmente solo devuelve el resumen al agente principal. El contexto principal solo tiene una oración más: "La herramienta de tarea se ajustó una vez y el resultado fue XXX", lo cual es refrescante.

def run_subagent(mensaje: str) -> cadena:
    sub_messages = [{"rol":"usuario", "content": aviso}] # Nuevo contexto
    para _ en rango(30): # Límite superior de seguridad para evitar la pérdida de control
        respuesta = cliente.messages.create(..., mensajes=sub_mensajes, herramientas=CHILD_TOOLS, ...)
        ...
    # Solo se devuelve el último texto, se descarta todo el razonamiento intermedio
    return "".join(b.text for b in respuesta.content if hasattr(b, "text"))

Comparación del contexto de padre e hijo

Este widget simula una tarea real: "Enumerar todos los lugares en este almacén que llaman a API obsoletas". Puede ejecutarlo con dos estrategias: (A) el agente principal lo hace solo; (B) genere un subagente. Compare los tamaños de los dos últimos contextos izquierdo y derecho.

CHILD_TOOLS: ¿Qué herramientas puede obtener el subagente?

Hay un detalle en la implementación de s04 que es fácil pasar por alto: el subagente no puede obtener la herramienta de tareas.

# El subagente solo puede usar herramientas básicas y no puede generar nietos
CHILD_TOOLS = [bash, leer_archivo, escribir_archivo, editar_archivo]

# El agente principal tiene una herramienta de tarea más
PARENT_TOOLS = CHILD_TOOLS + [tarea]

¿Por qué? Evite que el envío recursivo se convierta en una explosión de árboles. Un subagente genera cuatro subsubagentes y hay docenas de llamadas simultáneas en tan solo unas pocas rondas. Ni el token ni el límite de velocidad de la API pueden soportarlo. La convención de s04: spawn es plano y una capa de padre → hijo es una capa. Este también es el caso en la implementación real de Claude Code: está prohibido volver a llamar a la herramienta Tarea en la herramienta Tarea.

visibles e invisibles

Seleccionemos los derechos y responsabilidades: ¿Cuál de las siguientes preguntas crees que es T y cuál F crees?

Interactivo

Widget 1 · Padre vs Niño · comparación de tamaño de contexto

Dos estrategias para la misma tarea. Haga clic en Ejecutar y observe la longitud final de los mensajes[] en ambos lados y la estimación total del token.

🧠 父 agent 亲自做
messages: 0 · ~0 tokens
🎯 spawn subagent
messages: 0 · ~0 tokens
Interactivo

Widget 2 · Verdadero o Falso · Derechos y responsabilidades de los agentes padre e hijo

6 T/F para poner a prueba tu comprensión de los límites del aislamiento.

答对 0 / 6
Interactivo

Widget 3 · Cuándo generar · ¿Qué tareas son adecuadas para asignarlas al subagente?

Se le proporcionan 6 descripciones de tareas, decida si (A) el agente principal lo hace por sí mismo o (B) el subagente de generación. No existe un "derecho absoluto", pero sí ventajas y desventajas obvias.

答对 0 / 6