Developer and self-hosted
Tlon
Tlon — це децентралізований месенджер, побудований на Urbit. OpenClaw підключається до вашого корабля Urbit і відповідає на приватні повідомлення та повідомлення групових чатів. За замовчуванням для відповідей у групі потрібна згадка через @, а поверх цього застосовуються правила авторизації та процес схвалення власником.
Стан: вбудований Plugin. Підтримуються приватні повідомлення, згадки в групах, гілки, форматований текст, завантаження й вивантаження зображень, а також система схвалення власником. Реакції та опитування не підтримуються.
Вбудований Plugin
Tlon постачається вбудованим у поточні випуски OpenClaw; для пакетних збірок окреме встановлення не потрібне.
У старішій або спеціальній збірці, з якої його виключено, установіть із npm:
openclaw plugins install @openclaw/tlonВикористовуйте назву пакета без версії, щоб відстежувати тег поточного випуску. Закріплюйте версію (@openclaw/tlon@x.y.z)
лише для відтворюваних установлень.
З локальної робочої копії:
openclaw plugins install ./path/to/local/tlon-pluginДокладніше: Плагіни
Налаштування
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrupАбо відредагуйте конфігурацію безпосередньо:
{ 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, внутрішнє ім’я хоста), явно дозвольте це:
{ 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-запитів цього облікового запису.
Групові канали
Закріпіть канали вручну або ввімкніть автоматичне виявлення:
{ channels: { tlon: { groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"], autoDiscoverChannels: true, }, },}Якщо autoDiscoverChannels не задано в конфігурації, його значення за замовчуванням — false; майстер налаштування за замовчуванням
пропонує відповідь «так» і явно записує true. Коли цю функцію ввімкнено, OpenClaw під час запуску виконує scry-запити до груп, до яких приєднано користувача,
починає відстежувати нові канали після прийняття запрошень до груп і повторно перевіряє їх кожні 2 хвилини.
Керування доступом
Список дозволених для приватних повідомлень (порожній = приватні повідомлення заборонені, якщо відправник не є ownerShip):
{ channels: { tlon: { dmAllowlist: ["~zod", "~nec"], }, },}Авторизація в групах за замовчуванням має режим restricted для кожного каналу. Задайте defaultAuthorizedShips як
базовий список і перевизначайте його для окремих гнізд каналів:
{ channels: { tlon: { defaultAuthorizedShips: ["~zod"], authorization: { channelRules: { "chat/~host-ship/general": { mode: "restricted", allowedShips: ["~zod", "~nec"], }, "chat/~host-ship/announcements": { mode: "open", }, }, }, }, },}Після того як бот відповів у гілці, він продовжує відповідати на наступні повідомлення в цій гілці без потреби в новій згадці.
Власник і система схвалення
{ 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 (запрошення від власника завжди приймаються автоматично
незалежно від цього прапорця):
{ channels: { tlon: { autoAcceptDmInvites: true, }, },}Автоматично приймати запрошення до груп від кораблів зі списку дозволених (відмова за замовчуванням: якщо autoAcceptGroupInvites: true, а
groupInviteAllowlist порожній, жодне запрошення не від власника не приймається):
{ 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 |
| Опитування | Не підтримується |
| Нативні команди | За замовчуванням доступні лише власнику |
Усунення несправностей
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.
- Надсилання вхідного повідомлення із запитом на стислий виклад каналу (наприклад, «підсумуй цей канал») запускає вбудоване підсумовування історії замість звичайного процесу відповіді.
Пов’язані матеріали
- Огляд каналів — усі підтримувані канали
- Сполучення — автентифікація приватних повідомлень і процес сполучення
- Групи — поведінка групових чатів і вимога згадки
- Маршрутизація каналів — маршрутизація сеансів для повідомлень
- Безпека — модель доступу та посилення захисту