Todas las páginas
En esta página

Relays remotos y emparejamiento Nuevo en 0.9.4

Si ejecutas más de un relay de OAR, por ejemplo uno en tu estación de trabajo y otro en un servidor, puedes emparejarlos. Un agente de cualquier conversación puede entonces listar y leer las sesiones del otro relay, enviar un prompt a una, iniciar una nueva, esperar la respuesta y traerte una pregunta que hizo el otro agente. Tú decides a qué relays puede acceder un agente, y hasta dónde.

Los agentes usan para ello la herramienta relay_tool. Sus acciones se describen en la referencia; esta página trata de lo que configuras y lo que ves. Para sesiones en el mismo relay, consulta Sesiones de agente.

Emparejamiento #

  1. Abre Settings → Relays (Ajustes → Relays).
  2. En Add a relay (Añadir un relay), pega la dirección web del otro relay: la dirección con la que lo abres en un navegador.
  3. Deja marcada Also add this relay there (Añadir también este relay allí) si el otro relay también debe listar este. Pulsa Add (Añadir).

OAR comprueba la dirección con el token de este relay, o con el ?token= que lleve el enlace pegado. Solo si eso falla aparece un campo Token of the other relay (Token del otro relay); pega allí el token del otro relay y vuelve a pulsar Add. También puedes abrir el campo desde el principio con Use a different token (Usar otro token). El token se envía una vez y no se guarda en la página.

El relay obtiene el nombre del otro relay del propio otro relay. Con Also add this relay there marcada, después se presenta usando su Public address (Dirección pública), para que el emparejamiento funcione en ambos sentidos. La línea de estado bajo el formulario te dice cómo ha ido, por ejemplo que el relay se añadió y también añadió este, o que añadirlo allí falló y por qué. El relay del otro lado muestra la entrada con una etiqueta Paired automatically (Emparejado automáticamente). Ese relay conserva la entrada aunque todavía no pueda llegar a la dirección.

El nombre y la dirección de este relay #

En Settings → Relays, la parte superior de la pestaña muestra el nombre de este relay y los campos que necesitan los otros relays:

  • Relay name (Nombre del relay) se configura en General; la pestaña Relays solo lo muestra. Si está vacío, se usa el nombre de host de la máquina.
  • Public address es cómo llegan los otros relays a este: la dirección con la que abres este relay desde otro dispositivo. Hace falta para Also add this relay there. Si está vacía cuando añades un relay, OAR guarda como dirección pública la dirección de la página desde la que emparejas, salvo que esa página esté en una dirección de loopback como localhost; entonces el emparejamiento de vuelta falla hasta que introduces una.
  • Accept prompts from other relays' agents (Aceptar prompts de agentes de otros relays) se describe más abajo.

Quitar un emparejamiento #

Remove (Quitar) en la fila de un relay termina el lado de este relay: los agentes de aquí ya no pueden trabajar en ese relay. No deshace el otro lado:

  • El otro relay conserva su propia entrada para este. Quítala allí también para desemparejarlos en ambos sentidos.
  • Si el emparejamiento entregó el token de este relay, el otro relay lo sigue teniendo. Quitar la entrada no lo revoca. Cambia el token de este relay para dejar fuera al otro relay.

El token es el verdadero límite

Cualquiera que tenga el token de un relay tiene acceso total a él. Agents may (Los agentes pueden) y Accept prompts from other relays' agents limitan lo que hacen los agentes a través de la herramienta; no limitan lo que hace directamente quien tiene el token.

Cuando los tokens son distintos #

Si ambos relays usan el mismo token, no se entrega nada. Si el otro relay necesita otro token para llamar de vuelta a este, la presentación lleva el token de este relay, y los agentes del otro relay pueden entonces trabajar aquí. Un relay que ya está en la lista del otro relay conserva la dirección y el token guardados para él; cámbialos en sus propios ajustes.

En línea o sin conexión #

Cada relay emparejado muestra un punto y una línea con su nombre de host, su versión de OAR (cuando se conoce) y cuándo se vio por última vez, o not reached yet (aún no alcanzado). Para un punto distinto de Online (En línea) o Not checked yet (Aún no comprobado), el motivo aparece bajo el nombre. Este relay comprueba cada relay emparejado una vez por minuto. Check (Comprobar) comprueba uno ahora. Open (Abrir) abre el relay en una pestaña nueva.

Punto Significado
Online El relay respondió.
Offline (Sin conexión) No se pudo llegar a él, o una pasarela delante de él informa de que está caído.
Token not accepted (Token no aceptado) Respondió, pero rechazó el token guardado para él.
Error Algo más salió mal; la línea bajo el nombre dice qué.
Not checked yet Todavía no ha terminado ninguna comprobación.

Mencionar un relay para desbloquearlo #

Los agentes siempre pueden ver qué relays están emparejados. Pero un relay emparejado está bloqueado en una conversación hasta que lo abres, para que un agente no entre en un relay al que no te referías. Dos cosas lo abren:

  • Lo mencionas en uno de tus mensajes. Escribe @ y elige el relay de la lista, o escribe su nombre o su nombre de host. Un nombre de host que es una dirección IP o localhost nunca cuenta, y un relay cuyo nombre es una dirección solo cuenta con una @ delante.
  • Un agente de ese relay escribe en la conversación. El relay queda entonces abierto para la conversación, dentro de lo que permite Agents may, para que el agente al que se preguntó pueda responder, repreguntar o informar más tarde.

Una vez desbloqueado, un relay queda abierto durante el resto de la conversación. Un prompt de un agente nunca desbloquea ningún otro relay. Un relay bloqueado lo rechaza todo excepto listar los relays; al agente se le indica que te pida que lo menciones. Este relay en sí no necesita mención.

Qué pueden hacer los agentes #

Cada relay emparejado tiene un menú Agents may en su fila. Los emparejamientos nuevos empiezan en Full (Acceso total).

Nivel Qué puede hacer un agente en ese relay
Read only (Solo lectura) Mirar: listar y leer sesiones, leer la salida de un comando en segundo plano, ver los proveedores y lo que les queda a los planes, esperar una respuesta, vigilar sesiones.
Read and prompt (Leer y enviar prompts) Todo lo anterior, y enviar prompts a una sesión existente.
Full Todo lo anterior, e iniciar sesiones, Nuevo en 0.9.16 cambiar sus ajustes, responder preguntas, detener turns y archivar.

La referencia lista las acciones por nivel.

Accept prompts from other relays' agents #

Este interruptor está en este relay y decide qué pueden hacer aquí los agentes de otros relays. Está activado de forma predeterminada. Si lo desactivas, sus agentes todavía pueden listar y leer aquí las sesiones y la salida de los comandos en segundo plano, esperar respuestas y ver los proveedores y el consumo del plan de este relay. Se rechaza todo lo que cambia algo: enviar prompts, iniciar sesiones, responder preguntas, detener turns, archivar y desarchivar, y vigilar sesiones aquí. El rechazo que reciben dice: This relay does not accept prompts from other relays' agents (Este relay no acepta prompts de agentes de otros relays).

El interruptor solo afecta a los agentes de otros relays. A los agentes de este relay que trabajan en sesiones de aquí los rige el ajuste Agents may start and use sessions on this relay (Los agentes pueden iniciar y usar sesiones en este relay), no este interruptor.

Es una decisión distinta de Agents may: ese limita a tus agentes en otro relay; este limita a los suyos en el tuyo.

Límites que te protegen #

  • Dos relays, no tres. Un prompt que ya ha cruzado dos relays no pasa a un tercero salvo que hayas desbloqueado ese relay tú mismo con una mención. Siempre se puede responder al relay del que vino el prompt. Leer y esperar nunca se limitan de esta forma.
  • 30 prompts, y luego se te pregunta. Cuando el agente de una conversación ha enviado 30 prompts a otros agentes sin un mensaje tuyo entremedias, el siguiente te pregunta en una tarjeta, en cualquier modo del relay. Enviar un prompt, iniciar una sesión y responder una pregunta cuentan cada uno, y también los dirigidos a sesiones de este relay. Allow (Permitir) reinicia la cuenta.
  • Aprobación en ask y plan. En estos modos del relay, cada acción que cambia algo en otro relay te pregunta primero en una tarjeta de pregunta: enviar prompts, iniciar una sesión, responder una pregunta, detener y archivar.
  • Al agente del otro lado se le avisa. El prompt que recibe empieza con una línea que dice que otro agente le está hablando, con el relay y la sesión que lo envían.
  • Tus cuentas no se mueven. Una sesión iniciada en otro relay usa las cuentas de proveedor de ese relay, no las tuyas de aquí.

Lo que ves #

En el relay que recibe el prompt de un agente:

  • ↗ from … (de …) en el mensaje: una insignia con el relay que lo envía, su sesión y el modelo del agente. Enlaza de vuelta a la sesión de origen.
  • ↗ name en la lista de conversaciones, en una sesión que creó un agente del relay name.
  • Ninguna notificación de «respuesta lista» para un turn que inició un agente. El agente que espera la respuesta informa él mismo a su usuario. Las notificaciones de preguntas siguen llegando.

En el relay donde corre el agente, la llamada aparece como una línea de actividad con un 🛰️, y una pregunta del agente remoto llega como una tarjeta en tu conversación. Las esperas más largas se fijan con Longest wait per tool call (Espera máxima por llamada a herramienta) en Sesiones de agente; ese control deslizante también se aplica a los relays emparejados.

Un agente también puede pedir que lo despierten cuando pase algo en sesiones de un relay emparejado. Eso se llama vigilar sesiones; el lado de la herramienta está en la referencia.

Direcciones y tokens #

  • Las direcciones remotas deben usar https://. Una dirección pegada sin esquema se lee como https://. Un enlace del cliente web pegado funciona; OAR lo reduce a la dirección base del relay.
  • http:// sin cifrar solo se acepta para direcciones de loopback (un reenvío de puertos por SSH, por ejemplo) y rangos de red privados: 10.x.x.x, 172.16.x.x a 172.31.x.x, 192.168.x.x, 100.64.x.x a 100.127.x.x y el rango IPv6 fc00::/7. Un relay al que se llega así se marca con un aviso. En un rango privado, el aviso dice que el token cruza tu red sin cifrar.
  • Un ?token= en un enlace pegado se usa para el emparejamiento y no se guarda como parte de la dirección almacenada.
  • El token del otro relay se guarda en este relay. Nunca aparece en la lista de ajustes ni en la página web. La herramienta nunca da un token a un agente: sus llamadas pasan por este relay, que lo añade. Sin embargo, un agente corre como el usuario del relay y podría leer lo que está guardado en disco: consulta Secretos.

Si no funciona #

Qué pasa Por qué, y qué hacer
El agente dice que el relay está bloqueado (REMOTE_RELAY_LOCKED) No lo has mencionado en esta conversación. Escribe @ y elige el relay.
La fila muestra Offline (o el agente recibe REMOTE_RELAY_OFFLINE) El otro relay no está en marcha o no se puede llegar a él en la dirección guardada. Pulsa Check cuando vuelva.
Token not accepted (o REMOTE_RELAY_UNAUTHORIZED) El token del otro relay cambió. Vuelve a añadir el relay con su dirección e introduce su token cuando se te pida; la fila existente se actualiza.
Al añadirlo se indica que el otro relay no aceptó el token Pega su token en Token of the other relay y vuelve a pulsar Add.
Añadirlo funcionó, pero "adding this relay there failed" A menudo Public address está vacía, o el otro relay ejecuta un OAR antiguo sin emparejamiento. Añade este relay a mano en el otro lado.
El otro relay ejecuta un OAR antiguo Un relay de antes del emparejamiento se puede seguir añadiendo desde aquí, y su fila muestra su versión de OAR, pero no puede emparejarse de vuelta. Algunas acciones, como el consumo del plan y vigilar sesiones, necesitan un relay más nuevo y lo indican.
Los agentes del otro relay no pueden enviar prompts aquí (REMOTE_INBOUND_DISABLED) Accept prompts from other relays' agents está desactivado en este relay.
Un agente recibe un rechazo con REMOTE_RELAY_HOP_LIMIT El prompt en el que trabaja vino de otro relay y viajaría a un tercero. Menciona tú mismo ese tercer relay para permitirlo.
Esa dirección es este relay Pegaste la dirección de este mismo relay. Pega la dirección de otro relay.

Todos los códigos de error aparecen en Errores.