Developer and self-hosted
Tlon
Tlon ist ein dezentraler Messenger, der auf Urbit basiert. OpenClaw verbindet sich mit Ihrem Urbit-Ship und antwortet auf Direktnachrichten und Gruppenchat-Nachrichten. Für Gruppenantworten ist standardmäßig eine @-Erwähnung erforderlich, zusätzlich gelten Autorisierungsregeln und ein Genehmigungsablauf durch den Eigentümer.
Status: gebündeltes Plugin. Direktnachrichten, Gruppenerwähnungen, Threads, Rich Text, Bildupload/-download und ein Genehmigungssystem für den Eigentümer werden unterstützt. Reaktionen und Umfragen werden nicht unterstützt.
Gebündeltes Plugin
Tlon ist in aktuellen OpenClaw-Versionen gebündelt; für paketierte Builds ist keine separate Installation erforderlich.
Installieren Sie bei einem älteren Build oder einer benutzerdefinierten Installation, die es ausschließt, das Paket von npm:
openclaw plugins install @openclaw/tlonVerwenden Sie den reinen Paketnamen, um dem aktuellen Release-Tag zu folgen. Fixieren Sie eine Version (@openclaw/tlon@x.y.z)
nur für reproduzierbare Installationen.
Aus einem lokalen Checkout:
openclaw plugins install ./path/to/local/tlon-pluginDetails: Plugins
Einrichtung
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrupOder bearbeiten Sie die Konfiguration direkt:
{ channels: { tlon: { enabled: true, ship: "~sampel-palnet", url: "https://your-ship-host", code: "lidlut-tabwed-pillex-ridrup", ownerShip: "~your-main-ship", // empfohlen: Ihr Ship, immer autorisiert }, },}Starten Sie den Gateway nach der direkten Bearbeitung der Konfiguration neu. Senden Sie dem Bot anschließend eine Direktnachricht oder erwähnen Sie ihn mit @ in einem Gruppenkanal.
Dauerhaftigkeit eingehender Nachrichten
OpenClaw speichert akzeptierte Tlon-Ereignisse aus Direktnachrichten und Gruppenchats dauerhaft, bevor sie an den Agenten weitergeleitet werden. Ausstehende oder erneut ausführbare Vorgänge überstehen einen Neustart des Gateway, und die Verarbeitung bleibt pro Gruppenkanal oder direktem Kommunikationspartner serialisiert. Stabile Urbit-Nachrichten-IDs unterdrücken außerdem ein erneut zugestelltes Ereignis, solange der zugehörige Warteschlangeneintrag oder der aufbewahrte Abschlussdatensatz vorhanden ist.
Die Zustellung über die Grenze zwischen Warteschlange und Agent erfolgt mindestens einmal: Ein Absturz während der Übergabe kann einen Vorgang erneut ausführen. Agentenaktionen mit externen Nebenwirkungen sollten daher, soweit praktikabel, idempotent bleiben.
Private Ships/LAN-Ships
OpenClaw blockiert zum Schutz vor SSRF standardmäßig private/interne Hostnamen und IP-Bereiche. Wenn Ihr Ship in einem privaten Netzwerk ausgeführt wird (localhost, LAN-IP, interner Hostname), müssen Sie dies ausdrücklich zulassen:
{ channels: { tlon: { url: "http://localhost:8080", network: { dangerouslyAllowPrivateNetwork: true, }, }, },}Dies gilt für Ziele wie http://localhost:8080, http://192.168.x.x:8080 und
http://my-ship.local:8080. Aktivieren Sie dies nur für eine Ship-URL, der Sie vertrauen; dadurch wird der SSRF-Schutz
für die HTTP-Anfragen dieses Kontos deaktiviert.
Gruppenkanäle
Heften Sie Kanäle manuell an oder aktivieren Sie die automatische Erkennung:
{ channels: { tlon: { groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"], autoDiscoverChannels: true, }, },}autoDiscoverChannels verwendet standardmäßig false, wenn der Wert in der Konfiguration nicht festgelegt ist; im Einrichtungsassistenten lautet die
Standardantwort auf die Abfrage „Ja“, und true wird ausdrücklich geschrieben. Wenn die Option aktiviert ist, fragt OpenClaw beim Start beigetretene Gruppen ab,
überwacht neue Kanäle, sobald Gruppeneinladungen angenommen werden, und prüft alle 2 Minuten erneut.
Zugriffskontrolle
Zulassungsliste für Direktnachrichten (leer = keine Direktnachrichten zulässig, außer der Absender ist ownerShip):
{ channels: { tlon: { dmAllowlist: ["~zod", "~nec"], }, },}Die Gruppenautorisierung verwendet standardmäßig restricted pro Kanal. Legen Sie defaultAuthorizedShips als
Ausgangsbasis fest und überschreiben Sie den Wert pro Kanal-Nest:
{ channels: { tlon: { defaultAuthorizedShips: ["~zod"], authorization: { channelRules: { "chat/~host-ship/general": { mode: "restricted", allowedShips: ["~zod", "~nec"], }, "chat/~host-ship/announcements": { mode: "open", }, }, }, }, },}Sobald der Bot innerhalb eines Threads geantwortet hat, antwortet er weiterhin auf spätere Nachrichten in diesem Thread, ohne dass eine weitere Erwähnung erforderlich ist.
Legen Sie channels.tlon.implicitMentions.threadParticipation: false fest, um für diese Folgenachrichten
eine neue ausdrückliche Erwähnung zu verlangen. Kontoüberschreibungen verwenden channels.tlon.accounts.<id>.implicitMentions. Tlon
erzeugt derzeit keine Fakten vom Typ replyToBot oder quotedBot, daher haben diese Optionen hier keine Auswirkung.
Eigentümer- und Genehmigungssystem
{ channels: { tlon: { ownerShip: "~your-main-ship", }, },}Das Ship des Eigentümers ist überall autorisiert: Einladungen zu Direktnachrichten werden immer automatisch angenommen, Gruppeneinladungen werden
immer automatisch angenommen und Kanalnachrichten bestehen stets die Autorisierungsprüfung. Das Ship des Eigentümers muss nicht in
dmAllowlist, defaultAuthorizedShips oder groupInviteAllowlist enthalten sein.
Wenn ownerShip festgelegt ist, werden nicht autorisierte Anfragen nicht einfach verworfen – sie werden als ausstehende
Genehmigung in die Warteschlange gestellt und dem Eigentümer per Direktnachricht gesendet:
- Direktnachrichtenanfragen von Ships, die nicht in
dmAllowlistenthalten sind - Erwähnungen in Kanälen, in denen der Absender die Autorisierungsprüfung nicht besteht
- Gruppeneinladungen von Ships, die nicht in
groupInviteAllowlistenthalten sind (wenn die automatische Annahme deaktiviert ist oder aktiviert ist, aber der Einladende nicht auf der Zulassungsliste steht)
Der Eigentümer antwortet per Direktnachricht, um eine Anfrage zu bearbeiten:
| Antwort des Eigentümers | Wirkung |
|---|---|
approve / deny / block |
Bearbeitet die neueste ausstehende Genehmigung |
approve <id> / deny <id> |
Bearbeitet eine bestimmte Genehmigung anhand ihrer ID |
block |
Blockiert das Ship zusätzlich nativ, sodass es keine erneute Verbindung herstellen kann |
unblock ~ship |
Hebt eine native Blockierung auf |
blocked |
Listet die derzeit blockierten Ships auf |
pending |
Listet ausstehende Genehmigungsanfragen auf |
Wenn ownerShip nicht konfiguriert ist, werden nicht autorisierte Direktnachrichten und Kanalerwähnungen einfach verworfen und protokolliert;
es wird keine Genehmigungsabfrage angezeigt.
Einstellungen für die automatische Annahme
Nehmen Sie Einladungen zu Direktnachrichten von Ships, die bereits in dmAllowlist enthalten sind, automatisch an (das Ship des Eigentümers wird unabhängig
von dieser Option immer automatisch angenommen):
{ channels: { tlon: { autoAcceptDmInvites: true, }, },}Nehmen Sie Gruppeneinladungen aus einer Zulassungsliste automatisch an (standardmäßig abweisend: Bei autoAcceptGroupInvites: true und
einer leeren groupInviteAllowlist wird keine Einladung eines anderen Ships als des Eigentümers angenommen):
{ channels: { tlon: { autoAcceptGroupInvites: true, groupInviteAllowlist: ["~zod"], }, },}Hot-Reload über den Urbit-Einstellungsspeicher
Die meisten der oben genannten Einstellungen (dmAllowlist, groupInviteAllowlist, groupChannels,
defaultAuthorizedShips, autoDiscoverChannels, autoAcceptDmInvites,
autoAcceptGroupInvites, ownerShip, showModelSignature) werden beim ersten Start in den
%settings-Agenten des Ships (Desk moltbot, Bucket tlon) gespiegelt und anschließend live von dort gelesen,
sodass Änderungen über einen Landscape-Client oder die Einstellungsbefehle des gebündelten Skills ohne einen
Neustart des Gateway wirksam werden. channelRules und ausstehende Genehmigungen werden dort ebenfalls als JSON dauerhaft gespeichert. Die
Dateikonfiguration bleibt die maßgebliche Quelle für Werte, die nie in den Einstellungsspeicher geschrieben wurden.
Zustellungsziele (CLI/Cron)
Verwenden Sie diese mit openclaw message send oder für die Cron-Zustellung:
- Direktnachricht:
~sampel-palnetoderdm/~sampel-palnet - Gruppe:
chat/~host-ship/channelodergroup:~host-ship/channel
Gebündelter Skill
Das Plugin enthält @tloncorp/tlon-skill, eine CLI für
direkte Urbit-Operationen, die nach der Installation des Plugins automatisch verfügbar ist:
- Aktivität: Erwähnungen, Antworten, ungelesene Nachrichten
- Kanäle: auflisten, erstellen, umbenennen
- Kontakte: Profile auflisten/abrufen/aktualisieren
- Gruppen: erstellen, beitreten, Einladungs-/Anfrageabläufe, Rollen
- Hooks: Kanal-Hooks verwalten
- Nachrichten: Verlauf, Suche
- Direktnachrichten: senden, reagieren, annehmen/ablehnen
- Beiträge: reagieren, löschen
- Notizbuch: in Tagebuchkanälen veröffentlichen
- Einstellungen: Plugin-Konfiguration über den oben genannten Einstellungsspeicher per Hot-Reload aktualisieren
Funktionen
| Funktion | Status |
|---|---|
| Direktnachrichten | Unterstützt |
| Gruppen/Kanäle | Unterstützt (standardmäßig nur bei Erwähnung) |
| Threads | Unterstützt (antwortet nach dem Beitritt weiterhin) |
| Rich Text | Markdown wird in das native Format von Tlon konvertiert |
| Bilder | Eingehend heruntergeladen, ausgehend hochgeladen |
| Reaktionen | Nur über den gebündelten Skill |
| Umfragen | Nicht unterstützt |
| Native Befehle | Standardmäßig nur für den Eigentümer |
Fehlerbehebung
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctorHäufige Fehler:
- Direktnachrichten werden ignoriert: Der Absender ist nicht in
dmAllowlistenthalten, und für den Genehmigungsablauf ist keinownerShipkonfiguriert. - Gruppennachrichten werden ignoriert: Der Kanal wurde nicht erkannt/angeheftet, oder der Absender besteht die Autorisierungsprüfung nicht und es gibt kein
ownerShip, um eine Genehmigung in die Warteschlange zu stellen. - Verbindungsfehler: Prüfen Sie, ob die Ship-URL erreichbar ist; legen Sie
network.dangerouslyAllowPrivateNetworkfür lokale Ships fest. - Authentifizierungsfehler: Anmeldecodes wechseln regelmäßig – kopieren Sie den aktuellen Code von Ihrem Ship.
Konfigurationsreferenz
Vollständige Konfiguration: Konfiguration
| Schlüssel | Bedeutung |
|---|---|
channels.tlon.enabled |
Aktiviert/deaktiviert den Start des Kanals. |
channels.tlon.ship |
Urbit-Ship-Name des Bots (z. B. ~sampel-palnet). |
channels.tlon.url |
Ship-URL (z. B. https://sampel-palnet.tlon.network). |
channels.tlon.code |
Anmeldecode des Ships. |
channels.tlon.network.dangerouslyAllowPrivateNetwork |
Erlaubt localhost-/LAN-Ship-URLs (ausdrückliche SSRF-Freigabe). |
channels.tlon.ownerShip |
Ship des Eigentümers: immer autorisiert, empfängt Genehmigungsanfragen. |
channels.tlon.dmAllowlist |
Ships, die Direktnachrichten senden dürfen (leer = außer dem Eigentümer keine). |
channels.tlon.autoAcceptDmInvites |
Nimmt Direktnachrichten von Ships in dmAllowlist automatisch an. |
channels.tlon.autoAcceptGroupInvites |
Nimmt Gruppeneinladungen von groupInviteAllowlist automatisch an. |
channels.tlon.groupInviteAllowlist |
Ships, deren Gruppeneinladungen automatisch angenommen werden. |
channels.tlon.autoDiscoverChannels |
Erkennt beigetretene Gruppenkanäle automatisch (Standard: false). |
channels.tlon.implicitMentions.threadParticipation |
Lässt Folgenachrichten in Threads mit Beteiligung die Erwähnungspflicht umgehen. |
channels.tlon.groupChannels |
Manuell angeheftete Kanal-Nests. |
channels.tlon.defaultAuthorizedShips |
Für alle Kanäle autorisierte Ships (wird verwendet, wenn keine Regel zutrifft). |
channels.tlon.authorization.channelRules |
Autorisierungsmodus und Zulassungsliste pro Kanal-Nest. |
channels.tlon.showModelSignature |
Hängt _[Generated by <model>]_ an Antworten an. |
channels.tlon.responsePrefix |
Statisches Präfix, das ausgehenden Antworten vorangestellt wird. |
channels.tlon.accounts.<id> |
Zusätzliche benannte Konten (Einrichtungen mit mehreren Ships). |
Hinweise
- Antworten in Gruppen benötigen eine @-Erwähnung (z. B.
~your-bot-ship), sofern der Bot diesem Thread nicht bereits beigetreten ist. - Antworten auf Threads werden im jeweiligen Thread veröffentlicht; außerdem werden dem Bot die letzten 10 Nachrichten aus dem Thread-Kontext für den Agenten vorangestellt.
- Rich Text (Fettdruck, Kursivschrift, Code, Überschriften, Listen) wird in das native Format von Tlon konvertiert.
- Wenn eine eingehende Nachricht um eine Zusammenfassung eines Kanals bittet (zum Beispiel „Diesen Kanal zusammenfassen“), wird anstelle des normalen Antwortablaufs eine integrierte Zusammenfassung des Verlaufs ausgelöst.
Verwandte Themen
- Kanalübersicht — alle unterstützten Kanäle
- Kopplung — DM-Authentifizierung und Kopplungsablauf
- Gruppen — Verhalten von Gruppenchats und Erwähnungsbeschränkung
- Kanal-Routing — Sitzungs-Routing für Nachrichten
- Sicherheit — Zugriffsmodell und Absicherung