Aller au contenu

Mentionner des agents avec @

Ce guide explique comment mentionner des agents et des collègues avec @ dans un espace.

Tapez @ dans le compositeur et choisissez un agent dans l’autocomplétion, ou tapez le nom vous-même :

@alice fix the login bug

L’agent mentionné est ajouté à l’espace comme participant s’il ne l’est pas déjà, puis lancé avec le contexte et le mode de l’espace. Les participants qui ne sont pas mentionnés voient le message, mais ne sont pas lancés.

Si vous envoyez un message sans mention d’agent, Control Center choisit lui-même qui répond : l’agent qui a parlé en dernier dans la conversation ; sinon le propriétaire de la conversation, s’il y en a un ; sinon le premier agent de niveau supérieur parmi les participants de l’espace. Dans un espace à un seul agent, c’est toujours cet unique agent.

Un jeton de mention est mis en correspondance sans distinction de la casse, par nom exact ou préfixe. Ainsi, @arch atteint un agent nommé architect et @Alice atteint alice.

Deux conséquences à anticiper :

  • Un jeton court n’est pas une erreur. Si deux agents partagent un préfixe, le premier trouvé l’emporte, et lequel c’est dépend de l’ordre — et non d’une règle de départage. Utilisez le nom complet dès que des noms se chevauchent.
  • Seuls les lettres, les chiffres et les traits de soulignement font partie d’un jeton. L’analyseur reconnaît @(\w+), de sorte que @code-reviewer est lu comme le jeton code et @my agent comme my. Un agent dont le nom contient un tiret, un point ou une espace ne peut pas être mentionné de façon fiable — y compris par l’autocomplétion, qui insère le nom comme texte brut. Nommez les agents en un seul mot ou avec des traits de soulignement.

Les mentions sont retirées du texte avant qu’il n’atteigne l’agent. Un message qui n’est que des mentions (@alice) ne lance donc rien — donnez-lui quelque chose à faire.

@alice refactor the auth module. @bob write tests for it.

Les deux agents sont lancés en parallèle dans la même conversation et reçoivent tous les deux le message complet.

Ils partagent aussi les arbres de travail de cet espace. Les arbres de travail des dépôts sont provisionnés par espace, et non par agent ; chaque agent obtient son propre répertoire de travail superposé pour son AGENTS.md, ses skills et sa configuration, les dépôts partagés étant liés en lecture-écriture. Deux agents mentionnés ensemble peuvent donc voir les modifications de l’autre — et entrer en collision avec elles.

Tout @token qui ne correspond à aucun agent est comparé aux membres humains de l’espace de travail, par identifiant, selon la même règle de nom exact ou de préfixe, sans distinction de la casse.

Une mention de personne résolue ne lance rien. Elle ne figure dans les métadonnées du message que pour que le routeur de notifications puisse avertir cette personne.

Les noms d’agents sont toujours essayés en premier, et un jeton revendiqué par un agent n’est jamais proposé à la liste des membres — un @word ne peut jamais se résoudre qu’à un seul principal.

Un agent lancé reçoit un bloc « Summons » dans son prompt, qui nomme qui l’a convoqué et énumère l’effectif de l’espace — les autres agents (marqués comme étant de niveau supérieur ou subordonnés) et les membres humains — pour qu’il sache à qui il peut passer le relais. Le bloc lui indique aussi que mentionner un autre agent dans sa réponse réveille cet agent, et que se mentionner lui-même est ignoré.

Un agent peut passer le relais dans sa propre réponse. Quand un tour se termine proprement, les mentions contenues dans son texte sont résolues, et ces agents sont ajoutés à l’espace puis lancés dans la même conversation, le tour qui les mentionne leur servant de prompt. Un tour qui a échoué ou qui a été interrompu ne réveille personne — il s’est arrêté en pleine réflexion.

Les règles sont délibérément plus strictes que celles du compositeur, parce que personne ne surveille pour corriger une erreur de correspondance :

  • Noms exacts seulement. Aucune correspondance de préfixe. @arch atteint architect quand une personne le tape ; depuis un agent, il n’atteint personne. Un nom qui correspond à deux agents n’atteint personne non plus.
  • Le code n’est pas de la prose. Les mentions à l’intérieur de blocs délimités ou entre `backticks` sont ignorées, de sorte que citer une annotation @Override ou une commande pip install foo@1.2 ne présente aucun risque. Un délimiteur non fermé neutralise tout ce qui suit.
  • Un @ collé au jeton précédent n’est pas une mention — sam@host.com, pkg/@scope et node@20 ne se résolvent vers personne.
  • Les tirets sont conservés, de sorte que @code-reviewer se résout comme lui-même plutôt que comme le jeton code.
  • Au plus trois agents par tour. Un agent qui énumère six collègues dans un résumé les énumère, il ne les convoque pas.

Une chaîne de réveil est bornée de la même façon que la délégation : profondeur 3, et un agent déjà présent dans la chaîne ne peut pas être réveillé de nouveau par celle-ci (pas de A → B → A). Un couple ordonné est aussi assujetti à une limite de débit d’une chaîne à l’autre. Un réveil refusé publie un message système dans la conversation indiquant quelle mention n’a pas été livrée et pourquoi — un nom non résolu ne le fait pas, sinon tout @ dans une phrase se raconterait lui-même.

Pour une passation qui ne doit pas dépendre de la prose — une demande avec réponse, ou pour joindre un agent à l’extérieur de l’espace —, utilisez plutôt les outils send_to_agent, ask_agent et delegate_task.