Skip to content

Délégation à un sous-agent

源码版本v2026.7.20

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

Flux de données

  1. La boucle principale reçoit un tool_call: delegate du provider.
  2. delegate_task:2426 est appelé, reçoit la description de la sous-tâche et les toolsets optionnels.
  3. 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:588 pour boucler
    • les appels d'outils du sous-agent passent par registry:765 (les toolsets peuvent être restreints par le parent)
  4. Une fois le sous-agent terminé, seul le texte final est renvoyé ; delegate_tool l'enveloppe via tool_result:798 pour réinjection au parent.
  5. 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.

Site d'apprentissage communautaire non officiel. Basé sur le code source de NousResearch/hermes-agent (licence MIT).