Saltar al contenido principal
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. 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 propietarioEfecto
approve / deny / blockActúa sobre la aprobación pendiente más reciente
approve <id> / deny <id>Actúa sobre una aprobación específica por id
blockTambién bloquea la nave de forma nativa para que no pueda reconectarse
unblock ~shipRevierte un bloqueo nativo
blockedLista las naves bloqueadas actualmente
pendingLista 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"],
    },
  },
}

Recarga en caliente mediante el almacén de ajustes de Urbit

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ónEstado
Mensajes directosCompatible
Grupos/canalesCompatible (con mención obligatoria de forma predeterminada)
HilosCompatible (sigue respondiendo una vez que se ha unido)
Texto enriquecidoMarkdown convertido al formato nativo de Tlon
ImágenesDescargadas al entrar, cargadas al salir
ReaccionesSolo mediante la skill incluida
EncuestasNo compatible
Comandos nativosSolo 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
ClaveSignificado
channels.tlon.enabledActivar/desactivar el inicio del canal.
channels.tlon.shipNombre de nave de Urbit del bot (p. ej., ~sampel-palnet).
channels.tlon.urlURL de la nave (p. ej., https://sampel-palnet.tlon.network).
channels.tlon.codeCódigo de inicio de sesión de la nave.
channels.tlon.network.dangerouslyAllowPrivateNetworkPermitir URL de naves en localhost/LAN (activación de SSRF).
channels.tlon.ownerShipNave propietaria: siempre autorizada, recibe solicitudes de aprobación.
channels.tlon.dmAllowlistNaves autorizadas a enviar mensajes directos (vacío = ninguna aparte del propietario).
channels.tlon.autoAcceptDmInvitesAceptar automáticamente mensajes directos de naves en dmAllowlist.
channels.tlon.autoAcceptGroupInvitesAceptar automáticamente invitaciones de grupo de groupInviteAllowlist.
channels.tlon.groupInviteAllowlistNaves cuyas invitaciones de grupo se aceptan automáticamente.
channels.tlon.autoDiscoverChannelsDescubrir automáticamente canales de grupo unidos (predeterminado: false).
channels.tlon.groupChannelsNests de canal fijados manualmente.
channels.tlon.defaultAuthorizedShipsNaves autorizadas para todos los canales (se usa cuando ninguna regla coincide).
channels.tlon.authorization.channelRulesModo de autorización + lista de permitidos por nest de canal.
channels.tlon.showModelSignatureAñadir _[Generated by <model>]_ a las respuestas.
channels.tlon.responsePrefixPrefijo 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