Developer and self-hosted
Tlon
Tlon adalah perpesanan terdesentralisasi yang dibangun di atas Urbit. OpenClaw terhubung ke ship Urbit Anda dan menanggapi DM serta pesan obrolan grup. Secara default, balasan grup memerlukan penyebutan @, dengan aturan otorisasi dan alur persetujuan pemilik yang diterapkan di atasnya.
Status: plugin bawaan. DM, penyebutan grup, utas, teks kaya, unggah/unduh gambar, dan sistem persetujuan pemilik didukung. Reaksi dan jajak pendapat tidak didukung.
Plugin bawaan
Tlon disertakan dalam rilis OpenClaw saat ini; build terpaket tidak memerlukan instalasi terpisah.
Pada build lama atau instalasi khusus yang tidak menyertakannya, instal dari npm:
openclaw plugins install @openclaw/tlonGunakan nama paket tanpa tambahan untuk mengikuti tag rilis saat ini. Sematkan versi (@openclaw/tlon@x.y.z)
hanya untuk instalasi yang dapat direproduksi.
Dari checkout lokal:
openclaw plugins install ./path/to/local/tlon-pluginDetail: Plugin
Penyiapan
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrupAtau edit konfigurasi secara langsung:
{ channels: { tlon: { enabled: true, ship: "~sampel-palnet", url: "https://your-ship-host", code: "lidlut-tabwed-pillex-ridrup", ownerShip: "~your-main-ship", // disarankan: ship Anda, selalu diotorisasi }, },}Mulai ulang Gateway setelah mengedit konfigurasi secara langsung. Kemudian kirim DM kepada bot atau sebutkan bot dengan @ di kanal grup.
Durabilitas pesan masuk
OpenClaw mempertahankan peristiwa DM dan obrolan grup Tlon yang diterima sebelum mengirimkannya ke agen. Giliran yang tertunda atau dapat dicoba ulang tetap bertahan setelah Gateway dimulai ulang, dan pekerjaan tetap diserialkan per kanal grup atau rekan langsung. ID pesan Urbit yang stabil juga menekan peristiwa yang dikirim ulang selama catatan antrean atau catatan penyelesaian yang dipertahankan masih ada.
Pengiriman dilakukan setidaknya sekali pada batas antrean-ke-agen: kegagalan saat serah terima dapat memutar ulang suatu giliran. Karena itu, tindakan agen yang menghasilkan efek samping eksternal harus tetap idempoten jika memungkinkan.
Ship privat/LAN
Secara default, OpenClaw memblokir nama host dan rentang IP privat/internal untuk perlindungan SSRF. Jika ship Anda berjalan di jaringan privat (localhost, IP LAN, nama host internal), ikut serta secara eksplisit:
{ channels: { tlon: { url: "http://localhost:8080", network: { dangerouslyAllowPrivateNetwork: true, }, }, },}Berlaku untuk target seperti http://localhost:8080, http://192.168.x.x:8080, dan
http://my-ship.local:8080. Aktifkan ini hanya untuk URL ship yang Anda percayai; tindakan ini menonaktifkan perlindungan
SSRF untuk permintaan HTTP akun tersebut.
Kanal grup
Sematkan kanal secara manual, atau aktifkan penemuan otomatis:
{ channels: { tlon: { groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"], autoDiscoverChannels: true, }, },}autoDiscoverChannels secara default menjadi false saat tidak ditetapkan dalam konfigurasi; wizard penyiapan secara default
menetapkan prompt ke ya dan menulis true secara eksplisit. Saat diaktifkan, OpenClaw melakukan scry pada grup yang telah diikuti ketika dimulai,
memantau kanal baru saat undangan grup diterima, dan memeriksa ulang setiap 2 menit.
Kontrol akses
Daftar yang diizinkan untuk DM (kosong = tidak ada DM yang diizinkan kecuali pengirimnya adalah ownerShip):
{ channels: { tlon: { dmAllowlist: ["~zod", "~nec"], }, },}Otorisasi grup secara default menggunakan restricted per kanal. Tetapkan defaultAuthorizedShips sebagai
dasar, lalu timpa per sarang kanal:
{ channels: { tlon: { defaultAuthorizedShips: ["~zod"], authorization: { channelRules: { "chat/~host-ship/general": { mode: "restricted", allowedShips: ["~zod", "~nec"], }, "chat/~host-ship/announcements": { mode: "open", }, }, }, }, },}Setelah bot membalas di dalam suatu utas, bot akan terus menanggapi pesan berikutnya di utas tersebut tanpa memerlukan penyebutan lagi.
Tetapkan channels.tlon.implicitMentions.threadParticipation: false agar penyebutan eksplisit baru diwajibkan
untuk pesan lanjutan tersebut. Penimpaan akun menggunakan channels.tlon.accounts.<id>.implicitMentions. Tlon
saat ini tidak menghasilkan fakta replyToBot atau quotedBot, sehingga flag tersebut tidak berpengaruh di sini.
Sistem pemilik dan persetujuan
{ channels: { tlon: { ownerShip: "~your-main-ship", }, },}Ship pemilik diotorisasi di mana saja: undangan DM selalu diterima otomatis, undangan grup
selalu diterima otomatis, dan pesan kanal selalu lolos otorisasi. Pemilik tidak perlu
berada di dmAllowlist, defaultAuthorizedShips, atau groupInviteAllowlist.
Saat ownerShip ditetapkan, permintaan yang tidak diotorisasi tidak hanya dibuang — permintaan tersebut mengantrekan
persetujuan tertunda dan mengirim DM kepada pemilik:
- Permintaan DM dari ship yang tidak ada di
dmAllowlist - Penyebutan di kanal tempat pengirim gagal memperoleh otorisasi
- Undangan grup dari ship yang tidak ada di
groupInviteAllowlist(saat penerimaan otomatis dinonaktifkan, atau diaktifkan tetapi pengundang tidak ada dalam daftar yang diizinkan)
Pemilik membalas melalui DM untuk menindaklanjuti permintaan:
| Balasan pemilik | Efek |
|---|---|
approve / deny / block |
Menindaklanjuti persetujuan tertunda terbaru |
approve <id> / deny <id> |
Menindaklanjuti persetujuan tertentu berdasarkan id |
block |
Juga memblokir ship secara native agar tidak dapat terhubung kembali |
unblock ~ship |
Membatalkan pemblokiran native |
blocked |
Mencantumkan ship yang saat ini diblokir |
pending |
Mencantumkan permintaan persetujuan yang tertunda |
Tanpa konfigurasi ownerShip, DM dan penyebutan kanal yang tidak diotorisasi hanya dibuang dan dicatat;
tidak ada prompt persetujuan.
Pengaturan penerimaan otomatis
Terima otomatis undangan DM dari ship yang sudah ada di dmAllowlist (pemilik selalu diterima otomatis
terlepas dari flag ini):
{ channels: { tlon: { autoAcceptDmInvites: true, }, },}Terima otomatis undangan grup dari daftar yang diizinkan (gagal tertutup: dengan autoAcceptGroupInvites: true dan
groupInviteAllowlist kosong, tidak ada undangan dari selain pemilik yang diterima):
{ channels: { tlon: { autoAcceptGroupInvites: true, groupInviteAllowlist: ["~zod"], }, },}Muat ulang langsung melalui penyimpanan pengaturan Urbit
Sebagian besar pengaturan di atas (dmAllowlist, groupInviteAllowlist, groupChannels,
defaultAuthorizedShips, autoDiscoverChannels, autoAcceptDmInvites,
autoAcceptGroupInvites, ownerShip, showModelSignature) dicerminkan ke agen
%settings milik ship (desk moltbot, bucket tlon) saat pertama kali dijalankan, lalu dibaca langsung dari sana,
sehingga perubahan yang dilakukan melalui klien Landscape atau perintah pengaturan skill bawaan diterapkan tanpa
memulai ulang Gateway. channelRules dan persetujuan tertunda juga disimpan di sana sebagai JSON. Konfigurasi
file tetap menjadi sumber kebenaran untuk nilai yang tidak pernah ditulis ke penyimpanan pengaturan.
Target pengiriman (CLI/Cron)
Gunakan dengan openclaw message send atau pengiriman Cron:
- DM:
~sampel-palnetataudm/~sampel-palnet - Grup:
chat/~host-ship/channelataugroup:~host-ship/channel
Skill bawaan
Plugin ini menyertakan @tloncorp/tlon-skill, sebuah CLI untuk
operasi Urbit langsung, yang tersedia secara otomatis setelah plugin diinstal:
- Aktivitas: penyebutan, balasan, belum dibaca
- Kanal: mencantumkan, membuat, mengganti nama
- Kontak: mencantumkan/mendapatkan/memperbarui profil
- Grup: membuat, bergabung, alur undangan/permintaan, peran
- Hook: mengelola hook kanal
- Pesan: riwayat, pencarian
- DM: mengirim, bereaksi, menerima/menolak
- Postingan: bereaksi, menghapus
- Buku catatan: memposting ke kanal diari
- Pengaturan: memuat ulang langsung konfigurasi plugin melalui penyimpanan pengaturan di atas
Kemampuan
| Fitur | Status |
|---|---|
| Pesan langsung | Didukung |
| Grup/kanal | Didukung (secara default dibatasi oleh penyebutan) |
| Utas | Didukung (terus membalas setelah bergabung) |
| Teks kaya | Markdown dikonversi ke format native Tlon |
| Gambar | Pesan masuk diunduh, pesan keluar diunggah |
| Reaksi | Hanya melalui skill bawaan |
| Jajak pendapat | Tidak didukung |
| Perintah native | Secara default hanya untuk pemilik |
Pemecahan masalah
openclaw statusopenclaw gateway statusopenclaw logs --followopenclaw doctorKegagalan umum:
- DM diabaikan: pengirim tidak ada di
dmAllowlistdan tidak adaownerShipyang dikonfigurasi untuk alur persetujuan. - Pesan grup diabaikan: kanal tidak ditemukan/disematkan, atau pengirim gagal memperoleh otorisasi tanpa
ownerShipuntuk mengantrekan persetujuan. - Kesalahan koneksi: periksa apakah URL ship dapat dijangkau; tetapkan
network.dangerouslyAllowPrivateNetworkuntuk ship lokal. - Kesalahan autentikasi: kode masuk berubah secara berkala — salin kode saat ini dari ship Anda.
Referensi konfigurasi
Konfigurasi lengkap: Konfigurasi
| Kunci | Arti |
|---|---|
channels.tlon.enabled |
Mengaktifkan/menonaktifkan dimulainya kanal. |
channels.tlon.ship |
Nama ship Urbit bot (misalnya ~sampel-palnet). |
channels.tlon.url |
URL ship (misalnya https://sampel-palnet.tlon.network). |
channels.tlon.code |
Kode masuk ship. |
channels.tlon.network.dangerouslyAllowPrivateNetwork |
Mengizinkan URL ship localhost/LAN (ikut serta SSRF). |
channels.tlon.ownerShip |
Ship pemilik: selalu diotorisasi, menerima permintaan persetujuan. |
channels.tlon.dmAllowlist |
Ship yang diizinkan mengirim DM (kosong = tidak ada selain pemilik). |
channels.tlon.autoAcceptDmInvites |
Menerima otomatis DM dari ship di dmAllowlist. |
channels.tlon.autoAcceptGroupInvites |
Menerima otomatis undangan grup dari groupInviteAllowlist. |
channels.tlon.groupInviteAllowlist |
Ship yang undangan grupnya diterima otomatis. |
channels.tlon.autoDiscoverChannels |
Menemukan otomatis kanal grup yang diikuti (default: false). |
channels.tlon.implicitMentions.threadParticipation |
Mengizinkan tindak lanjut pada utas yang diikuti melewati pembatasan penyebutan. |
channels.tlon.groupChannels |
Sarang kanal yang disematkan secara manual. |
channels.tlon.defaultAuthorizedShips |
Ship yang diotorisasi untuk semua kanal (digunakan saat tidak ada aturan yang cocok). |
channels.tlon.authorization.channelRules |
Mode autentikasi per sarang kanal + daftar yang diizinkan. |
channels.tlon.showModelSignature |
Menambahkan _[Generated by <model>]_ ke balasan. |
channels.tlon.responsePrefix |
Prefiks statis yang ditambahkan di awal balasan keluar. |
channels.tlon.accounts.<id> |
Akun bernama tambahan (penyiapan multi-ship). |
Catatan
- Balasan grup memerlukan penyebutan @ (misalnya
~your-bot-ship) kecuali bot sudah bergabung dalam utas tersebut. - Balasan utas masuk ke dalam utas; bot juga menerima 10 pesan terakhir dari konteks utas yang ditambahkan di awal untuk agen.
- Teks kaya (tebal, miring, kode, tajuk, daftar) dikonversi ke format asli Tlon.
- Mengirim pesan masuk yang meminta ringkasan kanal (misalnya "rangkum kanal ini") akan memicu perangkuman riwayat bawaan, bukan alur balasan normal.
Terkait
- Ikhtisar Kanal — semua kanal yang didukung
- Pemasangan — autentikasi DM dan alur pemasangan
- Grup — perilaku obrolan grup dan pembatasan berdasarkan penyebutan
- Perutean Kanal — perutean sesi untuk pesan
- Keamanan — model akses dan penguatan