Délégation à un sous-agent
Responsabilité
delegate_tool permet à l'agent principal de déléguer une sous-tâche à un sous-agent isolé : le sous-agent a sa propre conversation, son propre terminal, son propre set d'outils ; une fois terminé, il ne rend que le résultat final à l'agent parent. Cela réalise un pipeline « à coût de contexte nul » — le contexte du parent n'est pas pollué par les détails du process de la sous-tâche. Le sous-agent tourne dans un worker ThreadPoolExecutor ; les commandes dangereuses sont auto-deny par défaut (auto-approve configurable).
Fichiers clés
def delegate_task:2426— entrée de la délégationclass DelegateEvent:625— enum des événements de délégationcallbacks auto-deny / auto-approve:61-103—_subagent_auto_deny(défaut sûr) /_subagent_auto_approve(opt-in YOLO)_get_subagent_approval_callback:102-160— choisit le callback selon la configdelegation.subagent_auto_approveDaemonThreadPoolExecutor:1978-1990— pool de threads résident pour les sous-agentswith DaemonThreadPoolExecutor:2651-2660— contexte d'exécution de la délégationtools/daemon_pool.py— implémentation deDaemonThreadPoolExecutorterminal multi-backends:5-15— le terminal du sous-agent s'exécute sur l'un des 6 backends de bac à sable (voir Bac à sable)
Flux de données
- La boucle principale reçoit un
tool_call: delegatedu provider. delegate_task:2426est appelé, reçoit la description de la sous-tâche et les toolsets optionnels.- Un worker est lancé dans
DaemonThreadPoolExecutor:2651:- l'initializer du worker installe le callback d'approbation (
tools/delegate_tool.py:102), auto-deny par défaut pour les commandes dangereuses - le sous-agent construit son propre contexte de conversation, appelle
run_conversation:588pour boucler - les appels d'outils du sous-agent passent par
registry:765(les toolsets peuvent être restreints par le parent)
- l'initializer du worker installe le callback d'approbation (
- Une fois le sous-agent terminé, seul le texte final est renvoyé ; delegate_tool l'enveloppe via
tool_result:798pour réinjection au parent. - Le contexte du parent n'a grossi que d'un résultat d'outil, sans pollution par le process.
Résumé
Délégation à un sous-agent = isolation de contexte + contrôle des commandes dangereuses. Le parent ne voit que le résultat, pas le process, ce qui évite que les longs pipelines n'explosent sous le bruit de process. La sécurité par défaut est auto-deny ; l'auto-approve est opt-in pour les scénarios batch / cron. L'exécution du terminal se pose sur un backend de bac à sable.