Toutes les pages
Sur cette page

Relais distants et association Ajouté en 0.9.4

Si vous faites tourner plus d’un relais OAR, par exemple un sur votre poste de travail et un sur un serveur, vous pouvez les associer. Un agent, dans n’importe quelle conversation, peut alors lister et lire les sessions de l’autre relais, envoyer un prompt à l’une d’elles, en démarrer une nouvelle, attendre la réponse et vous rapporter une question posée par l’autre agent. Vous décidez à quels relais un agent peut toucher, et jusqu’où.

Les agents utilisent pour cela l’outil relay_tool. Ses actions sont décrites dans la référence ; cette page traite de ce que vous configurez et de ce que vous voyez. Pour les sessions sur le même relais, voir Sessions d’agent.

Association #

  1. Ouvrez Settings → Relays (Réglages → Relais).
  2. Sous Add a relay (Ajouter un relais), collez l’adresse web de l’autre relais : l’adresse avec laquelle vous l’ouvrez dans un navigateur.
  3. Laissez Also add this relay there (Ajouter aussi ce relais là-bas) coché si l’autre relais doit lui aussi lister celui-ci. Appuyez sur Add (Ajouter).

OAR vérifie l’adresse avec le token de ce relais, ou avec le ?token= que porte le lien collé. Ce n’est qu’en cas d’échec qu’apparaît un champ Token of the other relay (Token de l’autre relais) ; collez-y le token de l’autre relais et appuyez de nouveau sur Add. Vous pouvez aussi ouvrir ce champ d’emblée avec Use a different token (Utiliser un autre token). Le token est envoyé une seule fois et n’est pas conservé dans la page.

Le relais lit le nom de l’autre relais auprès de celui-ci. Avec Also add this relay there coché, il se présente ensuite à lui avec son adresse Public address (Adresse publique), afin que l’association fonctionne dans les deux sens. La ligne d’état sous le formulaire vous indique comment cela s’est passé, par exemple que le relais a été ajouté et qu’il a ajouté celui-ci en retour, ou que l’ajout de l’autre côté a échoué et pourquoi. Le relais de l’autre côté affiche l’entrée avec une étiquette Paired automatically (Associé automatiquement). Ce relais garde l’entrée même s’il ne peut pas encore joindre l’adresse.

Le nom et l’adresse de ce relais #

Dans Settings → Relays, le haut de l’onglet affiche le nom de ce relais et les champs dont les autres relais ont besoin :

  • Relay name (Nom du relais) se règle sous General (Général) ; l’onglet Relays ne fait que l’afficher. S’il est vide, le nom d’hôte de la machine est utilisé.
  • Public address est la façon dont les autres relais joignent celui-ci : l’adresse à laquelle vous ouvrez ce relais depuis un autre appareil. Elle est nécessaire pour Also add this relay there. Si elle est vide quand vous ajoutez un relais, OAR enregistre comme adresse publique l’adresse de la page depuis laquelle vous associez, sauf si cette page est sur une adresse de bouclage comme localhost ; l’association en retour échoue alors tant que vous n’en saisissez pas une.
  • Accept prompts from other relays' agents (Accepter les prompts des agents d’autres relais) est décrit plus bas.

Supprimer une association #

Remove (Retirer) sur la ligne d’un relais met fin au côté de ce relais : les agents d’ici ne peuvent plus travailler sur ce relais-là. Cela n’annule pas l’autre côté :

  • L’autre relais garde sa propre entrée pour celui-ci. Supprimez-la aussi là-bas pour dissocier les deux sens.
  • Si l’association a transmis le token de ce relais, l’autre relais le détient toujours. Supprimer l’entrée ne le révoque pas. Changez le token de ce relais pour exclure l’autre relais.

Le token est la vraie frontière

Quiconque détient le token d’un relais y a un accès complet. Agents may (Les agents peuvent) et Accept prompts from other relays' agents limitent ce que font les agents via l’outil ; ils ne limitent pas ce que fait directement un détenteur du token.

Quand les tokens diffèrent #

Si les deux relais utilisent le même token, rien n’est transmis. Si l’autre relais a besoin d’un token différent pour rappeler celui-ci, la présentation transporte le token de ce relais, et les agents de l’autre relais peuvent alors travailler ici. Un relais qui figure déjà dans la liste de l’autre relais conserve l’adresse et le token enregistrés pour lui ; modifiez-les dans ses propres réglages.

En ligne ou hors ligne #

Chaque relais associé affiche une pastille et une ligne avec son nom d’hôte, sa version d’OAR (si elle est connue) et le moment où il a été vu pour la dernière fois, ou not reached yet (pas encore joint). Pour une pastille autre que Online (En ligne) ou Not checked yet (Pas encore vérifié), la raison s’affiche sous le nom. Ce relais vérifie chaque relais associé une fois par minute. Check (Vérifier) en vérifie un tout de suite. Open (Ouvrir) ouvre le relais dans un nouvel onglet.

Pastille Signification
Online Le relais a répondu.
Offline (Hors ligne) Il n’a pas pu être joint, ou une passerelle placée devant lui signale qu’il est hors service.
Token not accepted (Token refusé) Il a répondu, mais a refusé le token enregistré pour lui.
Error (Erreur) Autre chose a échoué ; la ligne sous le nom dit quoi.
Not checked yet Aucune vérification n’est encore terminée.

Mentionner un relais pour le déverrouiller #

Les agents peuvent toujours voir quels relais sont associés. Mais un relais associé est verrouillé dans une conversation tant que vous ne l’ouvrez pas, pour qu’un agent n’aille pas dans un relais que vous ne visiez pas. Deux choses l’ouvrent :

  • Vous le mentionnez dans l’un de vos messages. Tapez @ et choisissez le relais dans la liste, ou écrivez son nom ou son nom d’hôte. Un nom d’hôte qui est une adresse IP ou localhost ne compte jamais, et un relais dont le nom est une adresse ne compte qu’avec un @ devant.
  • Un agent de ce relais écrit dans la conversation. Le relais est alors ouvert pour la conversation, dans les limites de ce qu’autorise Agents may, afin que l’agent sollicité puisse répondre, poser une question en retour ou faire son rapport plus tard.

Une fois déverrouillé, un relais reste ouvert pour le reste de la conversation. Un prompt venant d’un agent ne déverrouille jamais aucun autre relais. Un relais verrouillé refuse tout sauf la liste des relais ; l’agent est invité à vous demander de le mentionner. Ce relais-ci n’a besoin d’aucune mention.

Ce que les agents peuvent faire #

Chaque relais associé a un menu Agents may sur sa ligne. Les nouvelles associations démarrent à Full (Accès complet).

Niveau Ce qu’un agent peut faire sur ce relais
Read only (Lecture seule) Regarder : lister et lire les sessions, lire la sortie d’une commande de fond, voir les fournisseurs et ce qu’il reste aux forfaits, attendre une réponse, surveiller des sessions.
Read and prompt (Lecture et prompts) Tout ce qui précède, plus envoyer un prompt à une session existante.
Full Tout ce qui précède, plus démarrer des sessions, Ajouté en 0.9.16 modifier leurs réglages, répondre aux questions, arrêter des turns et archiver.

La référence liste les actions par niveau.

Accept prompts from other relays' agents (Accepter les prompts des agents d’autres relais) #

Cet interrupteur se trouve sur ce relais et décide de ce que les agents d’autres relais peuvent faire ici. Il est activé par défaut. Quand vous le désactivez, leurs agents peuvent toujours lister et lire les sessions et la sortie des commandes de fond ici, attendre des réponses, et voir les fournisseurs et la consommation du forfait de ce relais. Tout ce qui modifie quelque chose est refusé : envoyer des prompts, démarrer des sessions, répondre aux questions, arrêter des turns, archiver et désarchiver, et surveiller des sessions ici. Le refus qu’ils reçoivent dit : This relay does not accept prompts from other relays' agents (Ce relais n’accepte pas les prompts des agents d’autres relais).

L’interrupteur ne concerne que les agents d’autres relais. Les agents de ce relais qui travaillent sur des sessions d’ici relèvent du réglage Agents may start and use sessions on this relay (Les agents peuvent démarrer et utiliser des sessions sur ce relais), pas de cet interrupteur.

C’est une décision distincte du réglage Agents may : celui-ci limite vos agents sur un autre relais, celui-là limite les leurs sur le vôtre.

Des limites qui vous protègent #

  • Deux relais, pas trois. Un prompt qui a déjà traversé deux relais n’est pas transmis à un troisième, sauf si vous avez vous-même déverrouillé ce relais par une mention. Il est toujours possible de répondre au relais d’où vient le prompt. La lecture et l’attente ne sont jamais limitées ainsi.
  • 30 prompts, puis on vous demande. Quand l’agent d’une conversation a envoyé 30 prompts à d’autres agents sans message de votre part entre-temps, le suivant vous est soumis sur une carte, quel que soit le mode du relais. Envoyer un prompt, démarrer une session et répondre à une question comptent chacun, de même que ceux adressés aux sessions de ce relais. Allow (Autoriser) remet le compteur à zéro.
  • Approbation en ask et plan. Dans ces modes du relais, chaque action qui modifie quelque chose sur un autre relais vous est d’abord soumise sur une carte de question : envoyer un prompt, démarrer une session, répondre à une question, arrêter et archiver.
  • L’agent de l’autre côté est prévenu. Le prompt qu’il reçoit commence par une ligne indiquant qu’un autre agent lui parle, avec le nom du relais et de la session d’envoi.
  • Vos comptes restent en place. Une session démarrée sur un autre relais utilise les comptes de fournisseur de ce relais-là, pas les vôtres d’ici.

Ce que vous voyez #

Sur le relais qui reçoit le prompt d’un agent :

  • ↗ from … (de …) sur le message : un badge qui nomme le relais d’envoi, sa session et le modèle de l’agent. Il renvoie à la session source.
  • ↗ name dans la liste des conversations, sur une session qu’un agent du relais name a créée.
  • Pas de notification « reply ready » pour un turn démarré par un agent. L’agent qui attend la réponse fait lui-même son rapport à son utilisateur. Les notifications de questions arrivent toujours.

Sur le relais où l’agent tourne, l’appel s’affiche comme une ligne d’activité avec un 🛰️, et une question de l’agent distant arrive comme une carte dans votre conversation. Les attentes plus longues se règlent avec Longest wait per tool call (Attente maximale par appel d’outil) sous Sessions d’agent ; ce curseur s’applique aussi aux relais associés.

Un agent peut aussi demander à être réveillé quand quelque chose se passe dans des sessions d’un relais associé. C’est ce qu’on appelle surveiller des sessions ; le côté outil se trouve dans la référence.

Adresses et tokens #

  • Les adresses distantes doivent utiliser https://. Une adresse collée sans schéma est lue comme https://. Un lien du client web collé fonctionne ; OAR le réduit à l’adresse de base du relais.
  • Le http:// simple n’est accepté que pour les adresses de bouclage (une redirection de port SSH, par exemple) et les plages de réseau privé : 10.x.x.x, 172.16.x.x à 172.31.x.x, 192.168.x.x, 100.64.x.x à 100.127.x.x et la plage IPv6 fc00::/7. Un relais joint de cette façon est signalé par un avertissement. Sur une plage privée, celui-ci indique que le token traverse votre réseau sans chiffrement.
  • Un ?token= dans un lien collé sert à l’association et n’est pas conservé dans l’adresse enregistrée.
  • Le token de l’autre relais est enregistré sur ce relais. Il n’apparaît jamais dans la liste des réglages ni dans la page web. L’outil ne donne jamais de token à un agent : ses appels passent par ce relais, qui l’ajoute. Un agent tourne toutefois sous l’utilisateur du relais et pourrait lire ce qui est enregistré sur disque : voir Secrets.

Si ça ne marche pas #

Ce qui se passe Pourquoi, et que faire
L’agent dit que le relais est verrouillé (REMOTE_RELAY_LOCKED) Vous ne l’avez pas mentionné dans cette conversation. Tapez @ et choisissez le relais.
La ligne affiche Offline (ou l’agent reçoit REMOTE_RELAY_OFFLINE) L’autre relais ne tourne pas ou n’est pas joignable à l’adresse enregistrée. Appuyez sur Check une fois qu’il est revenu.
Token not accepted (ou REMOTE_RELAY_UNAUTHORIZED) Le token de l’autre relais a changé. Ajoutez de nouveau le relais avec son adresse et saisissez son token quand il est demandé ; la ligne existante est mise à jour.
L’ajout indique que l’autre relais n’a pas accepté le token Collez son token dans Token of the other relay et appuyez de nouveau sur Add.
L’ajout a réussi, mais « adding this relay there failed » (l’ajout de ce relais là-bas a échoué) Souvent, Public address est vide, ou l’autre relais exécute un OAR plus ancien, sans association. Ajoutez ce relais à la main de l’autre côté.
L’autre relais exécute un OAR plus ancien Un relais antérieur à l’association peut toujours être ajouté d’ici, et sa ligne affiche sa version d’OAR, mais il ne peut pas s’associer en retour. Certaines actions, comme la consommation du forfait et la surveillance de sessions, demandent un relais plus récent et le signalent.
Les agents de l’autre relais ne peuvent pas envoyer de prompts ici (REMOTE_INBOUND_DISABLED) Accept prompts from other relays' agents est désactivé sur ce relais.
Un agent est refusé avec REMOTE_RELAY_HOP_LIMIT Le prompt sur lequel il travaille vient d’un autre relais et irait jusqu’à un troisième. Mentionnez vous-même ce troisième relais pour l’autoriser.
That address is this relay (Cette adresse est ce relais) Vous avez collé l’adresse de ce relais lui-même. Collez l’adresse d’un autre relais.

Tous les codes d’erreur sont listés sous Erreurs.