Developer and self-hosted
Tlon
Tlon to zdecentralizowany komunikator zbudowany na platformie Urbit. OpenClaw łączy się z Twoim statkiem Urbit i odpowiada na wiadomości prywatne oraz wiadomości na czatach grupowych. Odpowiedzi grupowe domyślnie wymagają wzmianki @, a dodatkowo obowiązują reguły autoryzacji i przepływ zatwierdzania przez właściciela.
Stan: dołączony plugin. Obsługiwane są wiadomości prywatne, wzmianki grupowe, wątki, tekst sformatowany, przesyłanie i pobieranie obrazów oraz system zatwierdzania przez właściciela. Reakcje i ankiety nie są obsługiwane.
Dołączony plugin
Tlon jest dołączony do bieżących wydań OpenClaw; kompilacje pakietowe nie wymagają osobnej instalacji.
W starszej kompilacji lub instalacji niestandardowej, która go wyklucza, zainstaluj go z npm:
openclaw plugins install @openclaw/tlonUżyj samej nazwy pakietu, aby śledzić tag bieżącego wydania. Przypnij wersję (@openclaw/tlon@x.y.z)
tylko w celu uzyskania powtarzalnych instalacji.
Z lokalnego repozytorium roboczego:
openclaw plugins install ./path/to/local/tlon-pluginSzczegóły: Pluginy
Konfiguracja
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrupMożesz też edytować konfigurację bezpośrednio:
{ channels: { tlon: { enabled: true, ship: "~sampel-palnet", url: "https://your-ship-host", code: "lidlut-tabwed-pillex-ridrup", ownerShip: "~your-main-ship", // zalecane: Twój statek, zawsze autoryzowany }, },}Po bezpośredniej edycji konfiguracji uruchom ponownie Gateway. Następnie wyślij botowi wiadomość prywatną lub oznacz go wzmianką @ na kanale grupowym.
Statki prywatne/LAN
OpenClaw domyślnie blokuje prywatne/wewnętrzne nazwy hostów i zakresy adresów IP w celu ochrony przed SSRF. Jeśli Twój statek działa w sieci prywatnej (localhost, adres IP w LAN, wewnętrzna nazwa hosta), jawnie włącz tę możliwość:
{ channels: { tlon: { url: "http://localhost:8080", network: { dangerouslyAllowPrivateNetwork: true, }, }, },}Dotyczy to adresów docelowych takich jak http://localhost:8080, http://192.168.x.x:8080 oraz
http://my-ship.local:8080. Włączaj tę opcję wyłącznie dla zaufanego adresu URL statku; wyłącza ona ochronę przed SSRF
dla żądań HTTP tego konta.
Kanały grupowe
Przypnij kanały ręcznie lub włącz automatyczne wykrywanie:
{ channels: { tlon: { groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"], autoDiscoverChannels: true, }, },}Gdy autoDiscoverChannels nie jest ustawione w konfiguracji, jego wartością domyślną jest false; kreator konfiguracji domyślnie sugeruje
odpowiedź „tak” i jawnie zapisuje true. Po włączeniu tej opcji OpenClaw odpytuje dołączone grupy podczas uruchamiania,
obserwuje nowe kanały w miarę akceptowania zaproszeń do grup i sprawdza je ponownie co 2 minuty.
Kontrola dostępu
Lista dozwolonych nadawców wiadomości prywatnych (pusta = wiadomości prywatne są niedozwolone, chyba że nadawcą jest ownerShip):
{ channels: { tlon: { dmAllowlist: ["~zod", "~nec"], }, },}Autoryzacja grupowa ma domyślnie tryb restricted dla każdego kanału. Ustaw defaultAuthorizedShips jako
wartość bazową i zastępuj ją dla poszczególnych gniazd kanałów:
{ channels: { tlon: { defaultAuthorizedShips: ["~zod"], authorization: { channelRules: { "chat/~host-ship/general": { mode: "restricted", allowedShips: ["~zod", "~nec"], }, "chat/~host-ship/announcements": { mode: "open", }, }, }, }, },}Gdy bot odpowie już w wątku, nadal odpowiada na późniejsze wiadomości w tym wątku bez potrzeby ponownego oznaczania go wzmianką.
Właściciel i system zatwierdzania
{ channels: { tlon: { ownerShip: "~your-main-ship", }, },}Statek właściciela jest autoryzowany wszędzie: zaproszenia do wiadomości prywatnych są zawsze automatycznie akceptowane, zaproszenia do grup są
zawsze automatycznie akceptowane, a wiadomości na kanałach zawsze przechodzą autoryzację. Właściciel nie musi
znajdować się w dmAllowlist, defaultAuthorizedShips ani groupInviteAllowlist.
Gdy ustawiono ownerShip, nieautoryzowane żądania nie są po prostu odrzucane — trafiają do kolejki oczekujących
zatwierdzeń, a właściciel otrzymuje wiadomość prywatną:
- Żądania wiadomości prywatnych od statków spoza
dmAllowlist - Wzmianki na kanałach, na których nadawca nie przechodzi autoryzacji
- Zaproszenia do grup od statków spoza
groupInviteAllowlist(gdy automatyczne akceptowanie jest wyłączone albo włączone, lecz zapraszający nie znajduje się na liście dozwolonych)
Właściciel odpowiada w wiadomości prywatnej, aby obsłużyć żądanie:
| Odpowiedź właściciela | Skutek |
|---|---|
approve / deny / block |
Wykonuje działanie na najnowszym oczekującym zatwierdzeniu |
approve <id> / deny <id> |
Wykonuje działanie na określonym zatwierdzeniu według identyfikatora |
block |
Blokuje również statek natywnie, aby nie mógł połączyć się ponownie |
unblock ~ship |
Cofa natywną blokadę |
blocked |
Wyświetla obecnie zablokowane statki |
pending |
Wyświetla oczekujące żądania zatwierdzenia |
Bez skonfigurowanego ownerShip nieautoryzowane wiadomości prywatne i wzmianki na kanałach są po prostu odrzucane i rejestrowane;
monit o zatwierdzenie nie jest wyświetlany.
Ustawienia automatycznego akceptowania
Automatycznie akceptuj zaproszenia do wiadomości prywatnych od statków już znajdujących się w dmAllowlist (właściciel jest zawsze akceptowany automatycznie
niezależnie od tej flagi):
{ channels: { tlon: { autoAcceptDmInvites: true, }, },}Automatycznie akceptuj zaproszenia do grup od statków z listy dozwolonych (bezpieczne odrzucanie: przy autoAcceptGroupInvites: true i
pustej groupInviteAllowlist żadne zaproszenie od statku innego niż właściciel nie zostanie zaakceptowane):
{ channels: { tlon: { autoAcceptGroupInvites: true, groupInviteAllowlist: ["~zod"], }, },}Przeładowywanie na gorąco przez magazyn ustawień Urbit
Większość powyższych ustawień (dmAllowlist, groupInviteAllowlist, groupChannels,
defaultAuthorizedShips, autoDiscoverChannels, autoAcceptDmInvites,
autoAcceptGroupInvites, ownerShip, showModelSignature) jest podczas pierwszego uruchomienia kopiowana do agenta
%settings statku (pulpit moltbot, zasobnik tlon), a następnie odczytywana stamtąd na bieżąco,
dzięki czemu zmiany wprowadzone przez klienta Landscape lub polecenia ustawień dołączonej umiejętności są stosowane bez
ponownego uruchamiania Gateway. channelRules i oczekujące zatwierdzenia również są tam utrwalane jako JSON. Konfiguracja
plikowa pozostaje źródłem prawdy dla wartości, które nigdy nie zostały zapisane w magazynie ustawień.
Miejsca docelowe dostarczania (CLI/Cron)
Używaj z openclaw message send lub dostarczaniem przez Cron:
- Wiadomość prywatna:
~sampel-palnetlubdm/~sampel-palnet - Grupa:
chat/~host-ship/channellubgroup:~host-ship/channel
Dołączona umiejętność
Plugin zawiera @tloncorp/tlon-skill, narzędzie CLI do
bezpośrednich operacji Urbit, dostępne automatycznie po zainstalowaniu pluginu:
- Aktywność: wzmianki, odpowiedzi, nieprzeczytane wiadomości
- Kanały: wyświetlanie, tworzenie, zmiana nazw
- Kontakty: wyświetlanie/pobieranie/aktualizowanie profili
- Grupy: tworzenie, dołączanie, przepływy zaproszeń/żądań, role
- Hooki: zarządzanie hookami kanałów
- Wiadomości: historia, wyszukiwanie
- Wiadomości prywatne: wysyłanie, reagowanie, akceptowanie/odrzucanie
- Wpisy: reagowanie, usuwanie
- Notatnik: publikowanie na kanałach dziennika
- Ustawienia: przeładowywanie konfiguracji pluginu na gorąco przez opisany powyżej magazyn ustawień
Możliwości
| Funkcja | Stan |
|---|---|
| Wiadomości prywatne | Obsługiwane |
| Grupy/kanały | Obsługiwane (domyślnie wymagają wzmianki) |
| Wątki | Obsługiwane (po dołączeniu nadal w nich odpowiada) |
| Tekst sformatowany | Markdown konwertowany do natywnego formatu Tlon |
| Obrazy | Przychodzące są pobierane, wychodzące są przesyłane |
| Reakcje | Tylko przez dołączoną umiejętność |
| Ankiety | Nieobsługiwane |
| Polecenia natywne | Domyślnie dostępne tylko dla właściciela |
Rozwiązywanie problemów
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctorTypowe problemy:
- Ignorowane wiadomości prywatne: nadawcy nie ma w
dmAllowlisti nie skonfigurowanoownerShipna potrzeby przepływu zatwierdzania. - Ignorowane wiadomości grupowe: kanał nie został wykryty ani przypięty lub nadawca nie przechodzi autoryzacji, a brak
ownerShip, który mógłby dodać zatwierdzenie do kolejki. - Błędy połączenia: sprawdź, czy adres URL statku jest osiągalny; ustaw
network.dangerouslyAllowPrivateNetworkdla statków lokalnych. - Błędy uwierzytelniania: kody logowania są rotowane — skopiuj aktualny kod ze swojego statku.
Dokumentacja konfiguracji
Pełna konfiguracja: Konfiguracja
| Klucz | Znaczenie |
|---|---|
channels.tlon.enabled |
Włącza/wyłącza uruchamianie kanału. |
channels.tlon.ship |
Nazwa statku Urbit bota (np. ~sampel-palnet). |
channels.tlon.url |
Adres URL statku (np. https://sampel-palnet.tlon.network). |
channels.tlon.code |
Kod logowania statku. |
channels.tlon.network.dangerouslyAllowPrivateNetwork |
Zezwala na adresy URL statków w localhost/LAN (jawne włączenie SSRF). |
channels.tlon.ownerShip |
Statek właściciela: zawsze autoryzowany, otrzymuje żądania zatwierdzenia. |
channels.tlon.dmAllowlist |
Statki mogące wysyłać wiadomości prywatne (pusta = żadne poza właścicielem). |
channels.tlon.autoAcceptDmInvites |
Automatycznie akceptuje wiadomości prywatne od statków z dmAllowlist. |
channels.tlon.autoAcceptGroupInvites |
Automatycznie akceptuje zaproszenia do grup od statków z groupInviteAllowlist. |
channels.tlon.groupInviteAllowlist |
Statki, których zaproszenia do grup są automatycznie akceptowane. |
channels.tlon.autoDiscoverChannels |
Automatycznie wykrywa dołączone kanały grupowe (domyślnie: false). |
channels.tlon.groupChannels |
Ręcznie przypięte gniazda kanałów. |
channels.tlon.defaultAuthorizedShips |
Statki autoryzowane dla wszystkich kanałów (używane, gdy żadna reguła nie pasuje). |
channels.tlon.authorization.channelRules |
Tryb autoryzacji i lista dozwolonych dla poszczególnych gniazd kanałów. |
channels.tlon.showModelSignature |
Dodaje _[Wygenerowano przez <model>]_ do odpowiedzi. |
channels.tlon.responsePrefix |
Statyczny prefiks dodawany na początku odpowiedzi wychodzących. |
channels.tlon.accounts.<id> |
Dodatkowe nazwane konta (konfiguracje z wieloma statkami). |
Uwagi
- Odpowiedzi grupowe wymagają wzmianki @ (np.
~your-bot-ship), chyba że bot dołączył już do danego wątku. - Odpowiedzi w wątkach trafiają do wątku; bot otrzymuje również ostatnie 10 wiadomości z kontekstu wątku, dodanych na początku kontekstu agenta.
- Tekst sformatowany (pogrubienie, kursywa, kod, nagłówki, listy) jest konwertowany do natywnego formatu Tlon.
- Wysłanie wiadomości przychodzącej z prośbą o podsumowanie kanału (na przykład „podsumuj ten kanał”) uruchamia wbudowane podsumowywanie historii zamiast zwykłego przepływu odpowiedzi.
Powiązane
- Przegląd kanałów — wszystkie obsługiwane kanały
- Parowanie — uwierzytelnianie wiadomości prywatnych i przepływ parowania
- Grupy — działanie czatów grupowych i wymóg wzmianek
- Routing kanałów — routing sesji dla wiadomości
- Bezpieczeństwo — model dostępu i zabezpieczanie