Developer and self-hosted

Tlon

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

Стан: вбудований Plugin. Підтримуються приватні повідомлення, згадки в групах, гілки, форматований текст, завантаження й вивантаження зображень, а також система схвалення власником. Реакції та опитування не підтримуються.

Вбудований Plugin

Tlon постачається вбудованим у поточні випуски OpenClaw; для пакетних збірок окреме встановлення не потрібне.

У старішій або спеціальній збірці, з якої його виключено, установіть із npm:

bash
openclaw plugins install @openclaw/tlon

Використовуйте назву пакета без версії, щоб відстежувати тег поточного випуску. Закріплюйте версію (@openclaw/tlon@x.y.z) лише для відтворюваних установлень.

З локальної робочої копії:

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

Докладніше: Плагіни

Налаштування

bash
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrup

Або відредагуйте конфігурацію безпосередньо:

json5
{  channels: {    tlon: {      enabled: true,      ship: "~sampel-palnet",      url: "https://your-ship-host",      code: "lidlut-tabwed-pillex-ridrup",      ownerShip: "~your-main-ship", // рекомендовано: ваш корабель, завжди авторизований    },  },}

Після безпосереднього редагування конфігурації перезапустіть Gateway. Потім надішліть боту приватне повідомлення або згадайте його через @ у груповому каналі.

Приватні кораблі та кораблі в LAN

OpenClaw за замовчуванням блокує приватні або внутрішні імена хостів і діапазони IP-адрес для захисту від SSRF. Якщо ваш корабель працює у приватній мережі (localhost, IP-адреса LAN, внутрішнє ім’я хоста), явно дозвольте це:

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

Застосовується до цілей на кшталт http://localhost:8080, http://192.168.x.x:8080 та http://my-ship.local:8080. Вмикайте це лише для URL-адреси корабля, якій довіряєте; це вимикає захист від SSRF для HTTP-запитів цього облікового запису.

Групові канали

Закріпіть канали вручну або ввімкніть автоматичне виявлення:

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

Якщо autoDiscoverChannels не задано в конфігурації, його значення за замовчуванням — false; майстер налаштування за замовчуванням пропонує відповідь «так» і явно записує true. Коли цю функцію ввімкнено, OpenClaw під час запуску виконує scry-запити до груп, до яких приєднано користувача, починає відстежувати нові канали після прийняття запрошень до груп і повторно перевіряє їх кожні 2 хвилини.

Керування доступом

Список дозволених для приватних повідомлень (порожній = приватні повідомлення заборонені, якщо відправник не є ownerShip):

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

Авторизація в групах за замовчуванням має режим restricted для кожного каналу. Задайте defaultAuthorizedShips як базовий список і перевизначайте його для окремих гнізд каналів:

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 або groupInviteAllowlist.

Коли задано ownerShip, неавторизовані запити не просто відкидаються — вони додаються до черги очікування схвалення, а власник отримує приватне повідомлення:

  • Запити на приватне листування від кораблів, яких немає в dmAllowlist
  • Згадки в каналах, де відправник не проходить авторизацію
  • Запрошення до груп від кораблів, яких немає в groupInviteAllowlist (коли автоматичне прийняття вимкнено або ввімкнено, але запрошувача немає у списку дозволених)

Щоб виконати дію із запитом, власник відповідає у приватному листуванні:

Відповідь власника Результат
approve / deny / block Виконує дію з останнім запитом на схвалення, що очікує
approve <id> / deny <id> Виконує дію з конкретним запитом на схвалення за ідентифікатором
block Також блокує корабель нативними засобами, щоб він не міг підключитися повторно
unblock ~ship Скасовує нативне блокування
blocked Показує список заблокованих наразі кораблів
pending Показує список запитів на схвалення, що очікують

Якщо ownerShip не налаштовано, неавторизовані приватні повідомлення та згадки в каналах просто відкидаються й журналюються; запит на схвалення не надсилається.

Налаштування автоматичного прийняття

Автоматично приймати запрошення до приватного листування від кораблів, які вже є в dmAllowlist (запрошення від власника завжди приймаються автоматично незалежно від цього прапорця):

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

Автоматично приймати запрошення до груп від кораблів зі списку дозволених (відмова за замовчуванням: якщо autoAcceptGroupInvites: true, а groupInviteAllowlist порожній, жодне запрошення не від власника не приймається):

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

Гаряче перезавантаження через сховище налаштувань Urbit

Більшість наведених вище налаштувань (dmAllowlist, groupInviteAllowlist, groupChannels, defaultAuthorizedShips, autoDiscoverChannels, autoAcceptDmInvites, autoAcceptGroupInvites, ownerShip, showModelSignature) під час першого запуску дублюються в агенті %settings корабля (desk moltbot, bucket tlon), а надалі зчитуються звідти в реальному часі, тому зміни, внесені через клієнт Landscape або команди налаштувань вбудованого Skills, застосовуються без перезапуску Gateway. channelRules і запити на схвалення, що очікують, також зберігаються там у форматі JSON. Файлова конфігурація залишається джерелом істини для значень, які ніколи не записувалися до сховища налаштувань.

Цілі доставлення (CLI/cron)

Використовуйте з openclaw message send або доставленням через cron:

  • Приватне повідомлення: ~sampel-palnet або dm/~sampel-palnet
  • Група: chat/~host-ship/channel або group:~host-ship/channel

Вбудований Skills

Plugin містить @tloncorp/tlon-skill — CLI для безпосередніх операцій Urbit, який стає доступним автоматично після встановлення Plugin:

  • Активність: згадки, відповіді, непрочитані повідомлення
  • Канали: перегляд списку, створення, перейменування
  • Контакти: перегляд списку, отримання й оновлення профілів
  • Групи: створення, приєднання, процеси запрошення та запиту, ролі
  • Хуки: керування хуками каналів
  • Повідомлення: історія, пошук
  • Приватні повідомлення: надсилання, реакції, прийняття або відхилення
  • Дописи: реакції, видалення
  • Нотатник: публікація в каналах щоденника
  • Налаштування: гаряче перезавантаження конфігурації Plugin через описане вище сховище налаштувань

Можливості

Функція Стан
Приватні повідомлення Підтримується
Групи/канали Підтримується (за замовчуванням потрібна згадка)
Гілки Підтримується (після приєднання продовжує відповідати)
Форматований текст Markdown перетворюється на нативний формат Tlon
Зображення Вхідні завантажуються, вихідні вивантажуються
Реакції Лише через вбудований Skills
Опитування Не підтримується
Нативні команди За замовчуванням доступні лише власнику

Усунення несправностей

bash
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctor

Поширені помилки:

  • Приватні повідомлення ігноруються: відправника немає в dmAllowlist, а ownerShip для процесу схвалення не налаштовано.
  • Групові повідомлення ігноруються: канал не виявлено й не закріплено або відправник не проходить авторизацію, а ownerShip для додавання запиту на схвалення до черги не задано.
  • Помилки підключення: перевірте доступність URL-адреси корабля; для локальних кораблів задайте network.dangerouslyAllowPrivateNetwork.
  • Помилки автентифікації: коди входу змінюються — скопіюйте поточний код зі свого корабля.

Довідник конфігурації

Повна конфігурація: Конфігурація

Ключ Значення
channels.tlon.enabled Вмикає або вимикає запуск каналу.
channels.tlon.ship Назва корабля Urbit бота (наприклад, ~sampel-palnet).
channels.tlon.url URL-адреса корабля (наприклад, https://sampel-palnet.tlon.network).
channels.tlon.code Код входу до корабля.
channels.tlon.network.dangerouslyAllowPrivateNetwork Дозволяє URL-адреси кораблів у localhost/LAN (явна згода на ризик SSRF).
channels.tlon.ownerShip Корабель власника: завжди авторизований, отримує запити на схвалення.
channels.tlon.dmAllowlist Кораблі, яким дозволено надсилати приватні повідомлення (порожній = ніхто, крім власника).
channels.tlon.autoAcceptDmInvites Автоматично приймає приватні повідомлення від кораблів із dmAllowlist.
channels.tlon.autoAcceptGroupInvites Автоматично приймає запрошення до груп від кораблів із groupInviteAllowlist.
channels.tlon.groupInviteAllowlist Кораблі, запрошення до груп від яких приймаються автоматично.
channels.tlon.autoDiscoverChannels Автоматично виявляє приєднані групові канали (за замовчуванням: false).
channels.tlon.groupChannels Вручну закріплені гнізда каналів.
channels.tlon.defaultAuthorizedShips Кораблі, авторизовані для всіх каналів (використовується, якщо жодне правило не збігається).
channels.tlon.authorization.channelRules Режим авторизації та список дозволених для кожного гнізда каналу.
channels.tlon.showModelSignature Додає _[Згенеровано <model>]_ до відповідей.
channels.tlon.responsePrefix Статичний префікс, що додається перед вихідними відповідями.
channels.tlon.accounts.<id> Додаткові іменовані облікові записи (конфігурації з кількома кораблями).

Примітки

  • Для відповідей у групі потрібна згадка через @ (наприклад, ~your-bot-ship), якщо бот ще не приєднався до цієї гілки.
  • Відповіді в гілці надходять до цієї ж гілки; бот також отримує останні 10 повідомлень контексту гілки, додані перед запитом для агента.
  • Форматований текст (жирний, курсив, код, заголовки, списки) перетворюється на нативний формат Tlon.
  • Надсилання вхідного повідомлення із запитом на стислий виклад каналу (наприклад, «підсумуй цей канал») запускає вбудоване підсумовування історії замість звичайного процесу відповіді.

Пов’язані матеріали

Was this useful?
On this page

On this page