Tlon es un mensajero descentralizado construido sobre Urbit. OpenClaw se conecta a tu nave de Urbit y
responde a mensajes directos y mensajes de chat grupal. Las respuestas en grupos requieren una mención @ de forma predeterminada, con
reglas de autorización y un flujo de aprobación del propietario superpuestos.
Estado: plugin incluido. Se admiten mensajes directos, menciones de grupo, hilos, texto enriquecido, carga/descarga de imágenes y un
sistema de aprobación del propietario. Las reacciones y encuestas no lo están.
Plugin incluido
Tlon se distribuye incluido en las versiones actuales de OpenClaw; las compilaciones empaquetadas no necesitan una instalación aparte.
En una compilación anterior o una instalación personalizada que lo excluya, instálalo desde npm:
openclaw plugins install @openclaw/tlon
Usa el nombre de paquete sin más para seguir la etiqueta de versión actual. Fija una versión (@openclaw/tlon@x.y.z)
solo para instalaciones reproducibles.
Desde un checkout local:
openclaw plugins install ./path/to/local/tlon-plugin
Detalles: Plugins
Configuración
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrup
O edita la configuración directamente:
{
channels: {
tlon: {
enabled: true,
ship: "~sampel-palnet",
url: "https://your-ship-host",
code: "lidlut-tabwed-pillex-ridrup",
ownerShip: "~your-main-ship", // recomendado: tu nave, siempre autorizada
},
},
}
Reinicia el gateway después de editar la configuración directamente. Luego envía un mensaje directo al bot o menciónalo con @ en un
canal de grupo.
Naves privadas/LAN
OpenClaw bloquea nombres de host internos/privados y rangos de IP para protección contra SSRF de forma predeterminada. Si tu
nave se ejecuta en una red privada (localhost, IP de LAN, nombre de host interno), actívalo explícitamente:
{
channels: {
tlon: {
url: "http://localhost:8080",
network: {
dangerouslyAllowPrivateNetwork: true,
},
},
},
}
Se aplica a destinos como http://localhost:8080, http://192.168.x.x:8080 y
http://my-ship.local:8080. Activa esto solo para una URL de nave en la que confíes; desactiva la protección contra SSRF
para las solicitudes HTTP de esa cuenta.
channels.tlon.allowPrivateNetwork (clave plana) está retirada. openclaw doctor --fix la mueve a
channels.tlon.network.dangerouslyAllowPrivateNetwork automáticamente.
Canales de grupo
Fija canales manualmente o activa el descubrimiento automático:
{
channels: {
tlon: {
groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"],
autoDiscoverChannels: true,
},
},
}
autoDiscoverChannels tiene el valor predeterminado false cuando no está definido en la configuración; el asistente de configuración establece la
pregunta en sí de forma predeterminada y escribe true explícitamente. Con esto activado, OpenClaw inspecciona los grupos unidos al iniciar,
observa canales nuevos cuando se aceptan invitaciones de grupo y vuelve a comprobar cada 2 minutos.
Control de acceso
Lista de permitidos de mensajes directos (vacía = no se permiten mensajes directos salvo que el remitente sea ownerShip):
{
channels: {
tlon: {
dmAllowlist: ["~zod", "~nec"],
},
},
}
La autorización de grupos tiene el valor predeterminado restricted por canal. Define defaultAuthorizedShips para una
base y sobrescribe por nest de canal:
{
channels: {
tlon: {
defaultAuthorizedShips: ["~zod"],
authorization: {
channelRules: {
"chat/~host-ship/general": {
mode: "restricted",
allowedShips: ["~zod", "~nec"],
},
"chat/~host-ship/announcements": {
mode: "open",
},
},
},
},
},
}
Una vez que el bot ha respondido dentro de un hilo, sigue respondiendo a mensajes posteriores en ese hilo
sin requerir otra mención.
Propietario y sistema de aprobación
{
channels: {
tlon: {
ownerShip: "~your-main-ship",
},
},
}
La nave propietaria está autorizada en todas partes: las invitaciones a mensajes directos siempre se aceptan automáticamente, las invitaciones a grupos
siempre se aceptan automáticamente y los mensajes de canal siempre pasan la autorización. El propietario no necesita
estar en dmAllowlist, defaultAuthorizedShips ni groupInviteAllowlist.
Cuando ownerShip está definido, las solicitudes no autorizadas no solo se descartan: ponen en cola una
aprobación pendiente y envían un mensaje directo al propietario:
- Solicitudes de mensajes directos de naves que no están en
dmAllowlist
- Menciones en canales donde el remitente no supera la autorización
- Invitaciones de grupo de naves que no están en
groupInviteAllowlist (cuando la aceptación automática está desactivada, o activada pero el
invitador no está en la lista de permitidos)
El propietario responde por mensaje directo para actuar sobre una solicitud:
| Respuesta del propietario | Efecto |
|---|
approve / deny / block | Actúa sobre la aprobación pendiente más reciente |
approve <id> / deny <id> | Actúa sobre una aprobación específica por id |
block | También bloquea la nave de forma nativa para que no pueda reconectarse |
unblock ~ship | Revierte un bloqueo nativo |
blocked | Lista las naves bloqueadas actualmente |
pending | Lista las solicitudes de aprobación pendientes |
Sin ownerShip configurado, los mensajes directos y menciones de canal no autorizados simplemente se descartan y se registran;
no hay aviso de aprobación.
Ajustes de aceptación automática
Acepta automáticamente invitaciones a mensajes directos de naves que ya están en dmAllowlist (el propietario siempre se acepta automáticamente
independientemente de esta opción):
{
channels: {
tlon: {
autoAcceptDmInvites: true,
},
},
}
Acepta automáticamente invitaciones de grupo de una lista de permitidos (falla cerrado: con autoAcceptGroupInvites: true y
un groupInviteAllowlist vacío, no se acepta ninguna invitación de no propietario):
{
channels: {
tlon: {
autoAcceptGroupInvites: true,
groupInviteAllowlist: ["~zod"],
},
},
}
La mayoría de los ajustes anteriores (dmAllowlist, groupInviteAllowlist, groupChannels,
defaultAuthorizedShips, autoDiscoverChannels, autoAcceptDmInvites,
autoAcceptGroupInvites, ownerShip, showModelSignature) se reflejan en el agente
%settings de la nave (desk moltbot, bucket tlon) en la primera ejecución y luego se leen en vivo desde allí,
por lo que los cambios hechos mediante un cliente Landscape o los comandos de ajustes de la skill incluida se aplican sin
reiniciar el gateway. channelRules y las aprobaciones pendientes también se conservan allí como JSON. La
configuración de archivo sigue siendo la fuente de verdad para los valores que nunca se escriben en el almacén de ajustes.
Destinos de entrega (CLI/cron)
Úsalo con openclaw message send o entrega por cron:
- Mensaje directo:
~sampel-palnet o dm/~sampel-palnet
- Grupo:
chat/~host-ship/channel o group:~host-ship/channel
Skill incluida
El plugin incluye @tloncorp/tlon-skill, una CLI para
operaciones directas de Urbit, disponible automáticamente una vez que el plugin está instalado:
- Actividad: menciones, respuestas, no leídos
- Canales: listar, crear, renombrar
- Contactos: listar/obtener/actualizar perfiles
- Grupos: crear, unirse, flujos de invitación/solicitud, roles
- Hooks: gestionar hooks de canal
- Mensajes: historial, búsqueda
- Mensajes directos: enviar, reaccionar, aceptar/rechazar
- Publicaciones: reaccionar, eliminar
- Notebook: publicar en canales de diario
- Ajustes: recargar en caliente la configuración del plugin mediante el almacén de ajustes anterior
Capacidades
| Función | Estado |
|---|
| Mensajes directos | Compatible |
| Grupos/canales | Compatible (con mención obligatoria de forma predeterminada) |
| Hilos | Compatible (sigue respondiendo una vez que se ha unido) |
| Texto enriquecido | Markdown convertido al formato nativo de Tlon |
| Imágenes | Descargadas al entrar, cargadas al salir |
| Reacciones | Solo mediante la skill incluida |
| Encuestas | No compatible |
| Comandos nativos | Solo propietario de forma predeterminada |
Solución de problemas
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
Fallos comunes:
- Mensajes directos ignorados: el remitente no está en
dmAllowlist y no hay ownerShip configurado para el flujo de aprobación.
- Mensajes de grupo ignorados: el canal no se ha descubierto/fijado, o el remitente no supera la autorización sin
ownerShip para poner en cola una aprobación.
- Errores de conexión: comprueba que la URL de la nave sea accesible; define
network.dangerouslyAllowPrivateNetwork para naves locales.
- Errores de autenticación: los códigos de inicio de sesión rotan; copia el código actual desde tu nave.
Referencia de configuración
Configuración completa: Configuración
| Clave | Significado |
|---|
channels.tlon.enabled | Activar/desactivar el inicio del canal. |
channels.tlon.ship | Nombre de nave de Urbit del bot (p. ej., ~sampel-palnet). |
channels.tlon.url | URL de la nave (p. ej., https://sampel-palnet.tlon.network). |
channels.tlon.code | Código de inicio de sesión de la nave. |
channels.tlon.network.dangerouslyAllowPrivateNetwork | Permitir URL de naves en localhost/LAN (activación de SSRF). |
channels.tlon.ownerShip | Nave propietaria: siempre autorizada, recibe solicitudes de aprobación. |
channels.tlon.dmAllowlist | Naves autorizadas a enviar mensajes directos (vacío = ninguna aparte del propietario). |
channels.tlon.autoAcceptDmInvites | Aceptar automáticamente mensajes directos de naves en dmAllowlist. |
channels.tlon.autoAcceptGroupInvites | Aceptar automáticamente invitaciones de grupo de groupInviteAllowlist. |
channels.tlon.groupInviteAllowlist | Naves cuyas invitaciones de grupo se aceptan automáticamente. |
channels.tlon.autoDiscoverChannels | Descubrir automáticamente canales de grupo unidos (predeterminado: false). |
channels.tlon.groupChannels | Nests de canal fijados manualmente. |
channels.tlon.defaultAuthorizedShips | Naves autorizadas para todos los canales (se usa cuando ninguna regla coincide). |
channels.tlon.authorization.channelRules | Modo de autorización + lista de permitidos por nest de canal. |
channels.tlon.showModelSignature | Añadir _[Generated by <model>]_ a las respuestas. |
channels.tlon.responsePrefix | Prefijo estático añadido al principio de las respuestas salientes. |
channels.tlon.accounts.<id> | Cuentas con nombre adicionales (configuraciones de varias naves). |
Notas
- Las respuestas de grupo necesitan una mención @ (p. ej.,
~your-bot-ship) salvo que el bot ya se haya unido a ese hilo.
- Las respuestas de hilo se entregan dentro del hilo; el bot también recibe los últimos 10 mensajes de contexto del hilo antepuestos
para el agente.
- El texto enriquecido (negrita, cursiva, código, encabezados, listas) se convierte al formato nativo de Tlon.
- Enviar un mensaje entrante que pide un resumen de canal (por ejemplo “resume este
canal”) activa una resumición de historial integrada en lugar del flujo de respuesta normal.
Relacionado