Developer and self-hosted

Tlon

Tlon — децентрализованный мессенджер, построенный на Urbit. OpenClaw подключается к вашему кораблю Urbit и может отвечать на личные сообщения и сообщения в групповых чатах. По умолчанию для ответов в группах требуется упоминание @, а доступ можно дополнительно ограничить с помощью списков разрешений.

Статус: встроенный plugin. Поддерживаются личные сообщения, групповые упоминания, ответы в тредах, форматирование насыщенного текста и загрузка изображений. Реакции и опросы пока не поддерживаются.

Встроенный plugin

Tlon поставляется как встроенный plugin в текущих выпусках OpenClaw, поэтому обычным пакетным сборкам не нужна отдельная установка.

Если вы используете более старую сборку или пользовательскую установку, в которой Tlon исключен, установите актуальный npm-пакет:

Установка через CLI (реестр npm):

bash
openclaw plugins install @openclaw/tlon

Используйте пакет без версии, чтобы следовать текущему официальному тегу выпуска. Закрепляйте точную версию только когда нужна воспроизводимая установка.

Локальный checkout (при запуске из git-репозитория):

bash
openclaw plugins install ./path/to/local/tlon-plugin

Подробнее: Plugins

Настройка

  1. Убедитесь, что plugin Tlon доступен.
    • Текущие пакетные выпуски OpenClaw уже включают его.
    • Более старые/пользовательские установки могут добавить его вручную командами выше.
  2. Получите URL вашего корабля и код входа.
  3. Настройте channels.tlon.
  4. Перезапустите gateway.
  5. Отправьте боту личное сообщение или упомяните его в групповом канале.

Минимальная конфигурация (одна учетная запись):

json5
{  channels: {    tlon: {      enabled: true,      ship: "~sampel-palnet",      url: "https://your-ship-host",      code: "lidlut-tabwed-pillex-ridrup",      ownerShip: "~your-main-ship", // recommended: your ship, always allowed    },  },}

Частные/LAN-корабли

По умолчанию OpenClaw блокирует частные/внутренние имена хостов и диапазоны IP для защиты от SSRF. Если ваш корабль работает в частной сети (localhost, LAN IP или внутреннее имя хоста), нужно явно включить это:

json5
{  channels: {    tlon: {      url: "http://localhost:8080",      allowPrivateNetwork: true,    },  },}

Это относится к URL вроде:

  • http://localhost:8080
  • http://192.168.x.x:8080
  • http://my-ship.local:8080

⚠️ Включайте это только если доверяете своей локальной сети. Эта настройка отключает защиты SSRF для запросов к URL вашего корабля.

Групповые каналы

Автообнаружение включено по умолчанию. Каналы также можно закрепить вручную:

json5
{  channels: {    tlon: {      groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"],    },  },}

Отключить автообнаружение:

json5
{  channels: {    tlon: {      autoDiscoverChannels: false,    },  },}

Управление доступом

Список разрешений для личных сообщений (пустой = личные сообщения не разрешены, используйте ownerShip для потока одобрения):

json5
{  channels: {    tlon: {      dmAllowlist: ["~zod", "~nec"],    },  },}

Авторизация групп (по умолчанию ограничена):

json5
{  channels: {    tlon: {      defaultAuthorizedShips: ["~zod"],      authorization: {        channelRules: {          "chat/~host-ship/general": {            mode: "restricted",            allowedShips: ["~zod", "~nec"],          },          "chat/~host-ship/announcements": {            mode: "open",          },        },      },    },  },}

Владелец и система одобрений

Задайте корабль владельца, чтобы получать запросы на одобрение, когда неавторизованные пользователи пытаются взаимодействовать:

json5
{  channels: {    tlon: {      ownerShip: "~your-main-ship",    },  },}

Корабль владельца автоматически авторизован везде — приглашения в личные сообщения принимаются автоматически, а сообщения в каналах всегда разрешены. Не нужно добавлять владельца в dmAllowlist или defaultAuthorizedShips.

Если владелец задан, он получает DM-уведомления о:

  • запросах личных сообщений от кораблей вне списка разрешений
  • упоминаниях в каналах без авторизации
  • запросах приглашений в группы

Настройки автопринятия

Автоматически принимать приглашения в личные сообщения (для кораблей в dmAllowlist):

json5
{  channels: {    tlon: {      autoAcceptDmInvites: true,    },  },}

Автоматически принимать групповые приглашения от доверенных кораблей:

json5
{  channels: {    tlon: {      autoAcceptGroupInvites: true,      groupInviteAllowlist: ["~zod"],    },  },}

autoAcceptGroupInvites по умолчанию отказывает, когда groupInviteAllowlist пуст. Задайте список разрешений для кораблей, чьи групповые приглашения должны приниматься автоматически.

Цели доставки (CLI/cron)

Используйте их с openclaw message send или доставкой cron:

  • Личное сообщение: ~sampel-palnet или dm/~sampel-palnet
  • Группа: chat/~host-ship/channel или group:~host-ship/channel

Встроенный skill

Plugin Tlon включает встроенный skill (@tloncorp/tlon-skill), который предоставляет CLI-доступ к операциям Tlon:

  • Контакты: получение/обновление профилей, список контактов
  • Каналы: список, создание, публикация сообщений, получение истории
  • Группы: список, создание, управление участниками
  • Личные сообщения: отправка сообщений, реакции на сообщения
  • Реакции: добавление/удаление эмодзи-реакций к публикациям и личным сообщениям
  • Настройки: управление разрешениями plugin через slash-команды

Skill автоматически доступен после установки plugin.

Возможности

Функция Статус
Личные сообщения ✅ Поддерживается
Группы/каналы ✅ Поддерживается (по умолчанию через упоминание)
Треды ✅ Поддерживается (автоответы в треде)
Насыщенный текст ✅ Markdown преобразуется в формат Tlon
Изображения ✅ Загружаются в хранилище Tlon
Реакции ✅ Через встроенный skill
Опросы ❌ Пока не поддерживаются
Нативные команды ✅ Поддерживаются (по умолчанию только владелец)

Устранение неполадок

Сначала выполните эту последовательность:

bash
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctor

Распространенные сбои:

  • Личные сообщения игнорируются: отправитель не в dmAllowlist, и ownerShip не настроен для потока одобрения.
  • Групповые сообщения игнорируются: канал не обнаружен или отправитель не авторизован.
  • Ошибки подключения: проверьте, что URL корабля доступен; включите allowPrivateNetwork для локальных кораблей.
  • Ошибки авторизации: проверьте, что код входа актуален (коды меняются).

Справочник конфигурации

Полная конфигурация: Конфигурация

Параметры провайдера:

  • channels.tlon.enabled: включить/отключить запуск канала.
  • channels.tlon.ship: имя корабля Urbit бота (например, ~sampel-palnet).
  • channels.tlon.url: URL корабля (например, https://sampel-palnet.tlon.network).
  • channels.tlon.code: код входа корабля.
  • channels.tlon.allowPrivateNetwork: разрешить URL localhost/LAN (обход SSRF).
  • channels.tlon.ownerShip: корабль владельца для системы одобрений (всегда авторизован).
  • channels.tlon.dmAllowlist: корабли, которым разрешено писать в личные сообщения (пусто = никто).
  • channels.tlon.autoAcceptDmInvites: автоматически принимать личные сообщения от кораблей из списка разрешений.
  • channels.tlon.autoAcceptGroupInvites: автоматически принимать групповые приглашения от кораблей из списка разрешений.
  • channels.tlon.groupInviteAllowlist: корабли, чьи групповые приглашения могут приниматься автоматически.
  • channels.tlon.autoDiscoverChannels: автоматически обнаруживать групповые каналы (по умолчанию: true).
  • channels.tlon.groupChannels: вручную закрепленные вложения каналов.
  • channels.tlon.defaultAuthorizedShips: корабли, авторизованные для всех каналов.
  • channels.tlon.authorization.channelRules: правила авторизации по каналам.
  • channels.tlon.showModelSignature: добавлять имя модели к сообщениям.

Примечания

  • Для ответов в группах требуется упоминание (например, ~your-bot-ship).
  • Ответы в тредах: если входящее сообщение находится в треде, OpenClaw отвечает в треде.
  • Насыщенный текст: форматирование Markdown (жирный, курсив, код, заголовки, списки) преобразуется в нативный формат Tlon.
  • Изображения: URL загружаются в хранилище Tlon и встраиваются как блоки изображений.

Связанные разделы

Was this useful?
On this page

On this page