Skip to content

Delegación a subagentes

源码版本v2026.7.20

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

Flujo de datos

  1. El bucle principal recibe del provider un tool_call: delegate.
  2. Se llama a delegate_task:2426 con la descripción de la subtarea y los toolsets opcionales.
  3. 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)
  4. Al acabar, el subagente solo entrega el texto final al padre; delegate_task lo envuelve con tool_result:798 y lo devuelve al padre.
  5. 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.

Sitio de aprendizaje comunitario no oficial. Basado en el código fuente de NousResearch/hermes-agent (licencia MIT).