Delegación a subagentes
Responsabilidad
delegate_tool permite al agent principal delegar una subtarea a un subagente aislado: el subagente tiene su propia conversación, su propio terminal y su propio conjunto de herramientas, y al acabar solo entrega el resultado final al agente padre. Esto implementa una pipeline de «coste de contexto cero»: el contexto del padre no se contamina con los detalles del proceso de la subtarea. El subagente corre en un worker de ThreadPoolExecutor; los comandos peligrosos se auto-deny por defecto (configurable a auto-approve).
Archivos clave
def delegate_task:2426— entrada de delegaciónclass DelegateEvent:625— enum de eventos de delegacióncallbacks auto-deny / auto-approve:61-103—_subagent_auto_deny(seguro por defecto) /_subagent_auto_approve(opt-in YOLO)_get_subagent_approval_callback:102-160— selecciona el callback según la configdelegation.subagent_auto_approveDaemonThreadPoolExecutor:1978-1990— pool de hilos residente para subagenteswith DaemonThreadPoolExecutor:2651-2660— contexto de ejecución de la delegacióntools/daemon_pool.py— implementación deDaemonThreadPoolExecutorterminal multi-backend:5-15— el terminal del subagente se ejecuta en uno de los 6 backends de sandbox (ver Sandbox)
Flujo de datos
- El bucle principal recibe del provider un
tool_call: delegate. - Se llama a
delegate_task:2426con la descripción de la subtarea y los toolsets opcionales. - Arranca un worker en
DaemonThreadPoolExecutor:2651:- el initializer del worker instala el callback de aprobación (
tools/delegate_tool.py:102); por defecto, auto-deny de comandos peligrosos - el subagente construye su propio contexto de conversación y llama a
run_conversation:588 - las llamadas a herramientas del subagente van al
registry:765(el padre puede restringir los toolsets)
- el initializer del worker instala el callback de aprobación (
- Al acabar, el subagente solo entrega el texto final al padre;
delegate_tasklo envuelve contool_result:798y lo devuelve al padre. - El contexto del padre solo crece en un resultado de tool, sin contaminación de proceso.
Resumen
La delegación a subagentes = aislamiento de contexto + control de comandos peligrosos. El agente padre solo ve resultados, no el proceso, lo que evita que las pipelines largas revienten por el ruido del proceso. Por defecto, auto-deny; en escenarios batch/cron se puede opt-in a auto-approve. La ejecución del terminal cae en los backends de sandbox.