Des agents qui travaillent ensemble
Les agents de Bromure peuvent travailler ensemble. Un agent peut confier un morceau de travail délimité à un nouvel agent. Il peut aussi demander à une session déjà en cours, dans la même machine ou dans une autre, quelque chose qu'elle sait ou qu'elle peut faire. Vous pouvez l'y inviter vous-même (« demande à @payments le schéma du webhook »), ou l'agent peut le décider de lui-même.
Les deux agents ne se parlent jamais directement. Chaque message passe par l'hôte Bromure, qui :
- ne montre à chaque session que les conversations dont elle fait partie
- filtre chaque message pour détecter une injection de prompt
- enregistre chaque message dans la Chronologie de sécurité
- copie les fichiers qui voyagent avec, entre machines
Ce chapitre dit « machine » pour ce que l'éditeur de réglages appelle un espace de travail.
Délégations et requêtes
Il y a deux sortes d'échange :
| Délégation | Requête | |
|---|---|---|
| Qui fait le travail | Une nouvelle session, démarrée pour cela | Une session qui existe déjà, nommée par son @surnom |
| Où | Par défaut dans un worktree git branché sur le dossier du délégant, sur sa propre branche. Elle tourne dans le même dossier quand celui-ci n'est pas un dépôt, et dans un dossier à elle quand la délégation part vers une autre machine. | Là où cette session tourne déjà |
| Comment ça s'ouvre | Avec le titre du délégant, le briefing, ce que « terminé » veut dire (le contrat) et les chemins à ne pas quitter | Comme un avis d'une ligne à l'invite du pair |
| Comment ça se termine | Le délégué livre. Le délégant accepte ou rejette avec close_delegation, ou annule. La session du délégué est alors archivée, tandis que sa branche reste à fusionner ou à jeter. | Le deliver du pair est la réponse. Rien n'est démarré ni terminé de son côté. |
Un délégué est imbriqué sous son délégant dans la barre latérale, comme une session de branche. Une délégation vers une autre machine démarre cette machine si elle est éteinte. Elle le fait discrètement, sans prendre la main sur le chat que vous regardez.
Comment les messages parviennent à un agent
Un agent reçoit les messages de trois façons :
- En attente : si l'agent est bloqué dans
waitouask, il reçoit le message aussitôt. - Au repos : si son invite est au repos, l'hôte y tape un avis d'une ligne, lui disant d'appeler
read_inbox. - Occupé : s'il est au milieu d'un tour, ou qu'un dialogue est affiché sur son écran, l'avis attend que l'invite soit libre.
Un avis non lu quelques minutes plus tard est renvoyé, jusqu'à trois fois. Si l'agent du destinataire s'est terminé, le message le reprend. Par exemple, corriger la trajectoire d'un délégué terminé le ramène là où il en était.
Ce que l'hôte doit encore à une session est enregistré sur le message lui-même, si bien que cela survit à un redémarrage de l'application.
Les @surnoms
Un surnom est la façon dont vous et les autres agents adressez une session. Définissez-en un avec Surnom… dans le menu contextuel de la session ou dans le menu ⋯ de son en-tête.
La feuille explique : « Comment les autres agents joignent « session » : ils la sollicitent avec request(to: "@nom"), et vous pouvez écrire @nom dans n'importe quel compositeur. Lettres, chiffres, points, tirets et soulignés. » Elle prévisualise le résultat (« Sera @payments »). Cliquez Définir, ou Effacer pour le retirer.
Les surnoms sont uniques sur le Mac. En choisir un déjà pris est refusé (« @payments est déjà « Refonte de Payments API ». »). Le surnom s'affiche à côté du titre de la session dans la barre latérale, l'en-tête et les cellules de salle, et vous pouvez le chercher dans la barre latérale.
La palette @
Tapez @ dans le compositeur d'un chat ou sur l'écran de nouvelle session pour obtenir une palette de sessions que vous pouvez nommer :
- Elle liste toutes les sessions sauf la courante.
- Les sessions ayant un surnom s'affichent telles quelles. Celles qui n'en ont pas s'affichent avec le surnom qu'elles recevraient, dérivé du titre et marqué nouveau nom. En choisir une lui donne ce surnom sur le champ, si bien que le @nom que vous venez de taper est un nom qu'un agent peut résoudre.
- Les correspondances de nom passent avant celles de titre, et les sessions nommées avant celles qui ne le sont pas.
- ↑ et ↓ déplacent, Tab ou ⏎ complète, et Échap referme.
Écrire « @nom » dans un message n'envoie rien en soi. Cela dit à votre agent de quel pair vous parlez, et l'agent utilise ensuite request pour le solliciter.
Les outils bromure-delegation
Chaque session d'agent reçoit le serveur MCP bromure-delegation (port vsock 5835). L'hôte identifie la session appelante par la fenêtre de terminal dans laquelle tourne son intermédiaire d'outils, jamais par quoi que ce soit que l'agent affirme.
| Outil | Qui l'utilise | Ce qu'il fait |
|---|---|---|
delegate | délégant | Démarre un délégué : titre, briefing, contrat, portée, agent (le sien par défaut), worktree vrai/faux, un éventuel autre workspace, et des fichiers à envoyer avec. |
request | demandeur | Sollicite un pair par @nick (ou par identifiant de session), avec des fichiers en option. Il attend la réponse : 50 secondes par défaut, jusqu'à 600. |
list_peers | n'importe qui | Liste les sessions qu'il peut joindre, avec leurs surnoms, titres, machines, agents et états, et les machines vers lesquelles il peut déléguer. |
list_delegations | n'importe qui | Liste ses délégations et requêtes, des deux côtés, avec leur statut et le dernier mot. |
read_inbox | n'importe qui | Prend les messages qui l'attendent, les plus anciens d'abord. |
wait | n'importe qui | Bloque jusqu'à l'arrivée d'un message : 50 secondes par défaut, jusqu'à 600. |
ask | délégué / pair | Pose une question bloquante à celui qui a demandé, et attend la réponse. |
report | délégué | Envoie une note d'avancement. Elle n'interrompt jamais le délégant. |
deliver | délégué / pair | Rend le travail (ce qui a changé, comment le vérifier, ce qui reste ouvert), ou répond à une requête. Il peut renvoyer des fichiers. |
answer | délégant | Répond à la question d'un délégué ou d'un pair. |
steer | délégant | Envoie un complément ou une correction de trajectoire, avec des fichiers en option. |
close_delegation | délégant | Clôt une délégation livrée comme acceptée ou rejetée, avec une note. |
cancel | délégant | Arrête un délégué avant qu'il ne livre, ou retire une requête. |
worktree_create, worktree_status, worktree_merge | n'importe qui | Démarre des sessions de branche à partir de son propre dossier, les suit, et vous demande d'en fusionner une. Voir Branches et revue. |
Confiance et questions
Il est dit aux agents que vous les avez configurés pour travailler ensemble. Une requête, un briefing, une réponse ou une correction venant d'un autre agent doit être traitée comme si vous l'aviez demandée, sans revenir vous voir. Le filtrage d'injection de prompt de l'hôte s'applique tout de même.
Les questions remontent par le chemin d'où vient le travail, pour que vous restiez dans une seule fenêtre :
- Un délégué ou un pair qui a besoin d'une décision utilise
askpour joindre celui qui l'a sollicité. Il ne demande jamais à son propre utilisateur. - L'agent demandeur répond depuis sa propre conversation s'il peut.
- S'il ne peut pas, il vous pose la question, mot pour mot et en disant qui demande, puis renvoie votre réponse avec
answer.
Limites
| Limite | Valeur |
|---|---|
| Imbrication des délégations (un délégué qui délègue à son tour) | 3 niveaux |
| Délégations et requêtes ouvertes par session | 8 |
Délai de wait, ask et request | 50 s par défaut, 600 s au plus |
| Fichiers par message | 20 (envoyez un dossier ou une archive pour plus ; un dossier voyage sous forme de tarball) |
| Taille totale des fichiers d'un message | 4 Go (comparée d'abord à l'espace disque libre du destinataire) |
Une requête vers une session archivée est refusée jusqu'à ce que vous la rameniez.
Fichiers et boîte de réception
Les machines ne partagent aucun système de fichiers : les fichiers nommés dans un message sont donc copiés par l'hôte. Ils atterrissent dans le ~/.bromure/inbox/<id>/ de la machine destinataire, avant que celle-ci ne lise le message qui les mentionne.
Les chemins sont résolus par rapport au dossier de l'expéditeur, et ~ est le home de l'expéditeur. Entre deux sessions sur la même machine, la copie est locale.
Filtrage et audit
Chaque briefing, requête, question, réponse, rapport, livraison et correction est analysé par le détecteur d'injection de prompt sur l'appareil avant d'être relayé.
- Un message qui déclenche le détecteur est retenu. Il reste au registre, marqué bloqué. L'expéditeur est informé du pourquoi, on lui montre l'extrait fautif, et on lui demande de reformuler en termes simples.
- Chaque message, relayé ou retenu, est une ligne de la Chronologie de sécurité sous le moteur Délégation d'agents, avec la décision relayé ou retenu — injection de prompt. Sur les installations enrôlées, les lignes vont aussi au journal d'audit de l'organisation. Voir Entreprise.
Le panneau Délégations
Quand une session a délégué ou demandé quelque chose, un panneau Délégations apparaît au-dessus de son compositeur. Son en-tête compte les délégations et les éventuelles questions et livraisons en attente (« 1 question », « 2 livraisons »). Le chevron le replie.
Chaque ligne montre :
- l'avatar et le titre de l'autre session (cliquez pour Ouvrir la session du délégué, ou Ouvrir la session du pair pour une requête)
- une étiquette requête pour les requêtes
- l'état : Démarrage, En cours, A posé une question, Livrée, Acceptée, Rejetée, Annulée ou Échouée
- le nom de la machine quand l'autre session tourne sur une autre machine
- sa branche
- le dernier mot échangé, par exemple « Le délégué a livré : … »
Quand un délégué ou un pair a posé une question, sa ligne montre la question avec un champ Réponse pour l'agent… et Envoyer. « Votre agent peut y répondre aussi — ceci envoie la vôtre à sa place. » Y répondre évite l'aller-retour par votre agent.
À l'autre bout, le chat propre d'un délégué ou d'un pair montre un bandeau disant à qui il répond. Le bandeau indique « Délégué par session » ou « Requête de session », avec l'état et un lien Afficher le délégant (ou Afficher le demandeur).
Un délégué qui se termine sans livrer fait échouer sa délégation, et le délégant en est informé. Les délégations terminées (acceptées, rejetées, annulées ou échouées) archivent la session du délégué. Elle reste lisible dans le repli Archivées.
Entre machines, et entre Mac
- Entre machines de ce Mac : par défaut, les agents de n'importe quelle machine peuvent joindre toutes les autres machines, à la fois pour y déléguer et pour solliciter leurs sessions. Pour restreindre une machine, ouvrez ses réglages, volet Général, section Portée, et désactivez Tous les espaces de travail : un interrupteur apparaît pour chaque autre machine, et ses agents ne peuvent joindre que celles que vous activez (aucune activée, seulement les sessions de leur propre machine). La règle est à sens unique : que les agents de l'autre machine puissent répondre se règle sur cette machine-là. Une machine restreinte cesse aussi de proposer les sessions des Mac distants qu'elle met en miroir (voir le point suivant).
- Entre Mac : quand ce Mac met en miroir un Bromure distant dans une fenêtre de client lourd, les agents d'une machine laissée sur Tous les espaces de travail peuvent aussi envoyer des requêtes aux sessions de ce serveur, par @surnom. La requête voyage par le tunnel du miroir, fichiers compris. Dans le panneau Délégations, la ligne nomme l'hôte vers lequel elle est partie. Cela marche du Mac vers le serveur qu'il met en miroir, pas dans l'autre sens.
- Les miroirs montrent les délégations en lecture seule. Une fenêtre de client lourd montre le panneau Délégations des sessions du serveur, mais vous ne pouvez pas y répondre aux questions.