Déléguer à des sous-agents
Donnez au harness intégré des sous-agents aux limites explicites qui partagent sa sandbox.
Déclarer un sous-agent comme outil
Section intitulée « Déclarer un sous-agent comme outil »Déclarez un sous-agent avec defineHarnessSubagent() et exposez-le comme outil du harness parent. Il utilise la sandbox du parent, mais conserve son propre historique de conversation, ses permissions et ses limites.
Le coordinateur décide quand appeler review. Chaque appel démarre le relecteur avec un historique neuf ; result.text contient la réponse finale du coordinateur et result.usage inclut les tokens du relecteur.
Entrées et résultats du sous-agent
Section intitulée « Entrées et résultats du sous-agent »Les enfants partagent la sandbox du parent : ils n’allouent aucun fournisseur et n’ouvrent aucun workspace, si bien que le parent voit leurs modifications immédiatement. Les délégations s’exécutent une à une, même quand les autres outils du parent s’exécutent en parallèle.
Limiter le travail délégué
Section intitulée « Limiter le travail délégué »Chaque boucle garde ses propres compteurs d’étapes et d’appels d’outils, tandis que les budgets de tokens s’additionnent sur les descendants.
Référence API : HarnessLimits.
Une erreur d’outil revient au modèle parent, sauf si le parent définit toolExecution: { onError: "fail" }. Annuler le dispatch arrête aussi les requêtes modèle et les commandes de l’enfant.
Référence API : HarnessLimits et HarnessSubagentOptions.
Permissions et hooks
Section intitulée « Permissions et hooks »Les permissions du parent et celles de l’enfant s’appliquent toutes deux à chaque appel d’outil de l’enfant, y compris aux entrées réécrites par un hook. Les hooks ne s’exécutent que dans le harness qui les déclare : ceux du parent ne voient pas les appels d’outils de l’enfant.
Reprendre une conversation enfant
Section intitulée « Reprendre une conversation enfant »Le transcript de l’enfant va dans le stockage de conversations de son harness et enregistre parentConversation et parentCallId. Passez son identifiant conversation en continuation: { id } à un dispatch() dont l’agent est l’enfant pour la poursuivre seule.
Reprendre le parent ne relance pas l’enfant : le parent rejoue les résultats d’outils enregistrés. Définissez conversations: false sur le harness enfant pour ne conserver aucun transcript enfant.
Suivre et réorienter les sous-agents
Section intitulée « Suivre et réorienter les sous-agents »Chaque délégation émet un événement subagent quand elle démarre, se termine ou échoue. Tous les autres événements de l’enfant, usage compris, portent l’identifiant de son exécution dans subagentId.
Référence API : AgentEvent.
Pour envoyer une instruction à un enfant en cours d’exécution, passez son id comme subagent à steering.send(). Voir Réorienter un agent en cours.
- L’enfant doit être un agent du harness intégré ;
defineHarnessSubagent()refuse les agents CLI. - Les budgets de tokens reposent sur l’usage rapporté : une réponse en cours peut dépasser un plafond avant qu’Outpost ne le constate. Ce ne sont pas des plafonds de dépense prépayés.
- Quand vous reprenez un parent dont une délégation a été interrompue, cet appel revient au modèle comme une erreur d’outil. Outpost ne relance pas l’enfant.
- Un enfant ne peut pas libérer la sandbox partagée.
API : defineHarnessSubagent · HarnessSubagentOptions · HarnessLimits · AgentEvent.