Compartir una conversación
Compartir da a una conversación un enlace público de solo lectura. Cualquiera a quien se lo envíes puede leer la transcripción en su navegador sin iniciar sesión, y sigue la conversación a medida que avanza. No puede enviar, detener, cambiar ni abrir nada más en tu relay. Tú decides qué muestra el enlace: se pueden ocultar mensajes sueltos, y las rutas del host del relay se filtran. Tú siempre ves la conversación completa, y Settings → Sharing (Ajustes → Compartir) lista todos los enlaces con un registro de quién los abrió.
El enlace es público
Cualquiera que tenga la dirección puede leer la transcripción compartida, y puede pasarla a otros. El relay no pregunta quién la abre. Trátala como una contraseña para esa conversación concreta, y lee la conversación con Preview as shared (Vista como compartida) antes de enviarla.
Crear el enlace #
- Abre la conversación.
- Abre su menú
⋯y elige ➡️ Share conversation (Compartir la conversación).
No hay ningún cuadro de diálogo. El relay crea el enlace y lo copia en tu portapapeles, y un aviso breve lo indica:
Share link copied to clipboard.
Si el navegador no deja que la página escriba en el portapapeles, el aviso muestra en su lugar la propia dirección, y la copias desde ahí.
La dirección es como https:// seguida de un token
aleatorio largo (64 caracteres hexadecimales). El host es el que usaste para
llegar al relay; detrás de un proxy en otra máquina es el que informa el proxy,
una vez que el relay confía en ese proxy. Si el relay se sirve bajo una subruta (remote en
config.json), la subruta forma parte de la
dirección.
Volver a elegir ➡️ Share conversation no crea un segundo enlace: mientras la conversación tiene un enlace activo, recibes la misma dirección. Se puede compartir cualquier conversación, también una archivada.
Tus enlaces compartidos Nuevo en 0.9.11 #
Settings → Sharing lista todas las conversaciones que tienen un enlace en este momento, con cuándo se compartieron (y renovaron), cuándo se abrieron por última vez, cuántas veces y por cuántos espectadores. Un clic en el título abre la conversación. Cada fila tiene:
| Botón | Qué hace |
|---|---|
| Copy link (Copiar enlace) | Copia el enlace. |
| Renew link (Renovar el enlace) | Da a la conversación un enlace nuevo, tras una confirmación, y lo copia. El enlace antiguo deja de funcionar de inmediato. El registro de accesos pasa al enlace nuevo. Úsalo cuando un enlace llegó más lejos de lo debido. |
| Stop sharing (Dejar de compartir) | Termina el enlace, tras una confirmación. Deja de funcionar de inmediato, también para quien esté leyendo en ese momento, y su registro de accesos se elimina. |
| Access log (Registro de accesos) | Despliega el registro de accesos del enlace. |
Mientras la conversación abierta está compartida, su menú ⋯ también tiene
⛔ Stop sharing, que también pregunta antes.
Después de dejar de compartir o renovar #
Un enlace detenido o renovado responde con un simple 404, tanto la página como
los datos, exactamente como un enlace que nunca existió. Una página compartida
que sigue abierta con él se detiene en su siguiente actualización, en un segundo
aproximadamente. Volver a elegir ➡️ Share conversation tras dejar de
compartir crea un enlace nuevo con un token nuevo; una dirección antigua no
vuelve nunca.
Lo mismo funciona sin la app, con el token de autenticación (El token de acceso) como cabecera, por ejemplo para dejar de compartir desde un script:
curl -X DELETE -H "Authorization: Bearer YOUR_TOKEN" \
https://relay.example.com/api/conversation/CONVERSATION_ID/share
POST a la misma dirección crea el enlace, POST …/ lo renueva, y
GET / los lista.
El registro de accesos #
Cada fila de la lista se despliega en su registro de accesos, con lo más reciente primero. Una entrada es una apertura de la página compartida, no cada actualización: la página recarga la conversación cada segundo aproximadamente, y solo cuenta la primera carga. Una segunda carga del mismo espectador en menos de 10 segundos cuenta una sola vez. Un espectador que vuelve tras 30 minutos sin leer cuenta de nuevo, por ejemplo una página que estuvo dormida en una pestaña en segundo plano. Un script que lee el enlace sin la página cuenta de la misma forma, así que nadie lee el enlace sin dejar una entrada.
| Parte de una entrada | De dónde viene |
|---|---|
| Hora | Cuándo se abrió la página. |
| Dirección IP | La dirección del espectador, tal como la ve el relay. Detrás de un proxy es la dirección que informa el proxy, si el relay confía en él; si no, todos los espectadores tienen la dirección del proxy. IP not stored (IP no guardada) cuando Store viewer IP addresses (Guardar las direcciones IP de los espectadores) estaba desactivado. |
| País | El código de país que añade un túnel de Cloudflare, tomado solo de un proxy de confianza. Vacío en los demás casos. |
viewer … |
Un hash corto con clave de la dirección y el navegador, el mismo para cada apertura del mismo espectador, también cuando no se guarda la dirección. |
| Navegador | El user agent que envió el navegador del espectador, como texto. |
La lista muestra las 200 aperturas más recientes e indica cuántas hay en total.
El registro pasa al enlace nuevo cuando lo renuevas. Se conserva mientras el enlace esté compartido, y se elimina cuando dejas de compartir o eliminas la conversación.
Store viewer IP addresses en Access log (activado de forma predeterminada) decide si las entradas nuevas guardan la dirección. Si está desactivado, las entradas nuevas no guardan ninguna, y tampoco la línea del registro propio del relay para una lectura compartida. Si ya hay direcciones guardadas, OAR pregunta si eliminarlas también: Remove them (Eliminarlos) las borra de todas las entradas del registro de accesos y del registro de estado de las lecturas compartidas, y las entradas en sí se quedan; Keep them (Conservarlos) las deja. El ajuste se aplica a todos los enlaces del relay.
Rutas y nombres de archivo Nuevo en 0.9.11 #
Una vista compartida no lleva las rutas del host del relay completas. El relay filtra todo lo que sirve a un enlace según el ajuste Paths and file names (Rutas y nombres de archivo) de Settings → Sharing:
| Opción | Lo que ve un espectador para / |
|---|---|
| Show every path and file name (Mostrar todas las rutas y nombres de archivo) | la ruta tal cual |
| Hide the path, show the file name (Ocultar la ruta, mostrar el nombre del archivo) (el predeterminado) | cart. |
| Hide paths and file names (Ocultar rutas y nombres de archivo) | ‹hidden› |
El ajuste se aplica a todos los enlaces del relay, desde la siguiente actualización de una página compartida. Tu propia vista siempre lo muestra todo.
Lo que atrapa el filtro:
- Siempre: rutas en los argumentos de herramientas, menciones de archivos
(
@file:,@folder:, también las relativas), nombres de adjuntos, registros de subagents y las cabeceras de archivo de los diffs. - En texto libre, es decir, respuestas, razonamiento, salida de herramientas
y bloques de código: las carpetas que conoce el relay (la carpeta de trabajo de
la conversación, las raíces del workspace, tu carpeta personal, las carpetas de
datos y de archivos subidos del propio relay) con lo que las siga, rutas
absolutas de Windows y Unix, rutas
~/y tu nombre de usuario entre separadores. Esto se hace lo mejor posible, sin garantías.… - No se atrapa: rutas relativas en texto libre (
src/), rutas de un solo nivel comocart. js /, direcciones web y nada que esté dentro de una imagen.tmp
Preview as shared (Vista como compartida) #
🔍 Preview as shared en el menú ⋯ de la conversación abre la conversación
como la muestra su enlace, sin crear un enlace y sin una entrada en ningún
registro de accesos. El verde marca lo que reciben los espectadores en lugar de
una ruta. El ámbar marca lo que todavía parece una: una ruta relativa con
extensión de archivo, un fragmento home/ o Users/, tu nombre de usuario
como palabra y, con Show every path and file name, cualquier ruta absoluta.
Lee las marcas en ámbar y oculta un mensaje que revele más de lo que
debería.
Al archivar, eliminar o compactar #
- Archivar no termina el enlace: una conversación archivada sigue siendo legible a través de él, y desarchivarla no cambia nada.
- Eliminar lo termina y elimina su registro de accesos: el enlace responde
404. - Compactar (consulta Compactar una conversación) archiva la conversación y continúa en una nueva. El enlace se queda con la conversación antigua, archivada, y sigue mostrando lo que mostraba. La conversación nueva no tiene enlace, así que no está compartida hasta que la compartas.
Consulta La lista de conversaciones para archivar y eliminar.
Lo que ve un espectador #
El enlace abre la conversación con el diseño normal del chat, sin la barra lateral y sin el área de redacción. El título es el título de la conversación.
| Parte de la conversación | En la vista compartida |
|---|---|
| Tus mensajes y las respuestas | Se muestran, con las rutas filtradas. |
| Líneas de actividad de herramientas y razonamiento | Se muestran, con las rutas filtradas. |
| Adjuntos e imágenes | Se muestran, incluidas las imágenes que generó un agente, con un nombre filtrado. El espectador puede abrir los de los mensajes que puede ver. |
| Filas de subagents | Se muestran. Nuevo en 0.9.11 Una fila abre el registro del subagent, de solo lectura, sin Stop (Detener) y filtrado como el resto. |
| Tarjetas de vista previa | Se muestran solo con su etiqueta, sin el enlace. Un enlace de vista previa citado en cualquier parte del texto dice [preview link removed]. Una conversación compartida no publica la app de la vista previa. |
| Filas de eventos del relay (de sesiones vigiladas) | Se muestran como filas de eventos. El texto nombra la sesión vigilada. |
| Mensajes que llegaron de otro relay | Se muestran con una insignia. Se quitan la dirección del relay y el id de la otra conversación; su nombre, el título de la otra conversación, el proveedor y el modelo se quedan. |
| Tarjetas de pregunta y tableros del plan | No se muestran. No forman parte de los datos que recibe un espectador, así que un espectador solo ve lo que el agente escribió en torno a ellos. |
| Imágenes y enlaces a archivos en el texto de los mensajes que apuntan a archivos de tu relay | No se cargan para un espectador: esos archivos necesitan tu inicio de sesión. |
| Mensajes que ocultaste | No se envían en absoluto. |
| Mensajes fijados y la lista 🙈 | No se muestran: son tuyos. |
| Carpeta de trabajo, detalles de la sesión y de la runtime | No se envían. |
| La búsqueda, el botón de contexto, los selectores de modelo y de modo, la pantalla completa, la instalación de la app | No disponibles. |
Los datos que carga la página también llevan el modelo usado en cada mensaje. La página compartida pide a los buscadores que no la indexen.
Actualizaciones en vivo #
La página compartida recarga la conversación cada 0,9 segundos mientras está en primer plano, así que los mensajes nuevos aparecen a medida que la conversación continúa. No abre una conexión en vivo con el relay, y una página en una pestaña en segundo plano no se recarga. Un espectador que se desplaza hacia arriba para leer no es arrastrado al final.
Espectadores #
Cada página compartida abierta le dice al relay cada 12 segundos que está ahí.
Ves cuántos están leyendo como información emergente sobre el título de la
conversación en tu propia vista, por ejemplo 2 watchers currently reading this conversation. El
indicador solo está mientras al menos uno está leyendo. Un espectador que lleva
45 segundos en silencio sale de la cuenta.
Ocultar mensajes sueltos #
Cada mensaje en tu propia vista tiene un botón Hide (Ocultar), que aparece cuando pasas el puntero por el mensaje (en pantallas táctiles, toca el mensaje). Púlsalo y el mensaje sale de la vista compartida. No se elimina. Cada mensaje se oculta por separado: ocultar tu pregunta no oculta la respuesta, ni al revés. La actividad de herramientas y el razonamiento de una respuesta van con la respuesta.
- En tu vista, el mensaje sigue completo y está marcado como Hidden from shared viewers (Oculto a los espectadores del enlace compartido). Su botón dice ahora Unhide (Mostrar); púlsalo y el mensaje vuelve a ser visible para los espectadores.
- Un espectador no ve nada en su lugar. El mensaje simplemente no está en la transcripción. Los adjuntos de un mensaje oculto tampoco se pueden obtener a través del enlace, salvo que el mismo archivo esté adjunto a un mensaje visible.
- Un aviso confirma cada cambio:
Message hidden from shared viewers.oMessage visible to shared viewers. - Hide no se ofrece para un mensaje que sigue en cola, ni para los mensajes del turn en curso. Ocúltalos después del turn.
Un mensaje oculto está oculto en todos los enlaces de la conversación, incluido un enlace nuevo creado después. La marca sobrevive a un reinicio del relay.
La lista 🙈 Nuevo en 0.9.11 #
Mientras una conversación oculta mensajes, un botón 🙈 con su número está junto a 📍 en su cabecera (nunca en la vista compartida). Abre la lista de mensajes ocultos, como la de los fijados:
- Una fila salta a su mensaje, también a uno muy arriba en el historial, y tiene Unhide.
- Unhide all (Mostrar todos) pregunta antes. Un mensaje cuyo turn sigue en curso se queda oculto, y la lista lo nombra.
- El número y la lista incluyen mensajes que aún no se han cargado, y otras pestañas y dispositivos siguen un cambio sin recargar.
Lo que puede hacer un espectador #
El menú ⋯ de la vista compartida tiene una sola entrada, ☀️ Day mode o
🌙 Night mode (Modo Día / Modo Noche), que cambia el tema de la página para
ese espectador. Aparte de eso, el espectador puede desplazarse por la
transcripción, cargar mensajes anteriores, abrir la actividad plegada, abrir
registros de subagents y abrir adjuntos. El campo de entrada está desactivado y
dice Shared conversation (read-only) (Conversación compartida, solo lectura).
Nada de lo que hace un espectador cambia la conversación.
Límites #
| Espectadores contados a la vez, por conversación | 200 (shared). |
| Espectadores contados a la vez, en total | 5000 (shared). |
| Caducidad | Ninguna. Un enlace funciona hasta que dejas de compartir, lo renuevas o eliminas la conversación. |
Ambos límites están en config.json. Cuando se alcanza un límite, el espectador que lleva más tiempo inactivo sale de la cuenta para dejar sitio a uno nuevo. Los límites acotan la cuenta, es decir, el número que ves como espectadores; la propia solicitud de la transcripción no los comprueba, así que un espectador por encima de la cuenta puede seguir leyendo.
Llegar al relay #
La página compartida y sus imágenes las sirve tu relay, no oar.sh ni ningún otro
servicio. Un espectador tiene que poder llegar a la dirección del relay desde
donde esté. Un relay que solo escucha en tu propia máquina (localhost) no
lo puede abrir nadie más. Para compartir fuera de tu red, haz que se llegue al
relay a través de un túnel.
Si el túnel tiene reglas de acceso, también se aplican al enlace compartido. Con
una aplicación de Cloudflare Access sobre el nombre de host, a los espectadores se les pide
iniciar sesión y el enlace no les funciona, salvo que la aplicación deje pasar
/ y / sin inicio de sesión. Tampoco pongas una regla de
caché en /: la página recarga esa dirección para seguir la
conversación, y una respuesta en caché seguiría mostrando un estado antiguo.
Por proveedor #
Nada cambia según el proveedor. Compartir lee la conversación guardada, así que
funciona igual para los chats de GitHub Copilot, OpenAI, Claude, Claude Cloud,
Cursor, Grok y DeepSeek, y para los chats de OpenAI Image, cuyas imágenes
generadas se sirven a través del enlace. Nuevo en 0.9.11 Una respuesta lleva el
chip rojo ran on … en la vista compartida solo cuando de verdad se ejecutó en
un proveedor distinto del de la conversación.
Si no funciona #
| Lo que ves | Causa y solución |
|---|---|
El enlace responde 404 |
Se dejó de compartir, se renovó el enlace o se eliminó la conversación. Settings → Sharing lista los enlaces que funcionan. |
| Al espectador se le pide iniciar sesión, o ve un estado antiguo | Cloudflare Access o una regla de caché delante del relay. Consulta Llegar al relay. |
| Todas las entradas del registro de accesos tienen la misma dirección | Un proxy en otra máquina en el que el relay no confía. Configura trust. |
| Sigue apareciendo una ruta en la vista compartida | Es relativa, o está dentro de una imagen. Compruébalo con Preview as shared y oculta el mensaje. |
Para la transcripción que lee el espectador, consulta Leer la transcripción.