Developer and self-hosted
Tlon
Tlon เป็นเมสเซนเจอร์แบบกระจายศูนย์ที่สร้างบน Urbit OpenClaw เชื่อมต่อกับ Urbit ship ของคุณและสามารถ ตอบกลับ DM และข้อความแชทกลุ่มได้ การตอบกลับกลุ่มต้องมีการกล่าวถึงด้วย @ ตามค่าเริ่มต้น และสามารถ จำกัดเพิ่มเติมผ่าน allowlist ได้
สถานะ: Plugin ที่รวมมาให้แล้ว รองรับ DM, การกล่าวถึงในกลุ่ม, การตอบกลับในเธรด, การจัดรูปแบบข้อความแบบ rich text และ การอัปโหลดรูปภาพแล้ว ยังไม่รองรับ reactions และ polls
Plugin ที่รวมมาให้แล้ว
Tlon มาพร้อมเป็น Plugin ที่รวมมาให้แล้วใน OpenClaw รุ่นปัจจุบัน ดังนั้น build แบบแพ็กเกจปกติ จึงไม่ต้องติดตั้งแยกต่างหาก
หากคุณใช้ build เก่ากว่าหรือการติดตั้งแบบกำหนดเองที่ไม่รวม Tlon ให้ติดตั้ง แพ็กเกจ npm ปัจจุบัน:
ติดตั้งผ่าน CLI (npm registry):
openclaw plugins install @openclaw/tlon
ใช้แพ็กเกจแบบไม่ระบุเวอร์ชันเพื่อให้ตามแท็กรุ่นทางการปัจจุบัน ระบุ เวอร์ชันที่แน่นอนเฉพาะเมื่อคุณต้องการการติดตั้งที่ทำซ้ำได้เท่านั้น
การ checkout ภายในเครื่อง (เมื่อรันจาก git repo):
openclaw plugins install ./path/to/local/tlon-plugin
รายละเอียด: Plugins
การตั้งค่า
- ตรวจสอบว่า Tlon Plugin พร้อมใช้งาน
- OpenClaw รุ่นแพ็กเกจปัจจุบันรวมไว้ให้แล้ว
- การติดตั้งเก่ากว่า/แบบกำหนดเองสามารถเพิ่มเองได้ด้วยคำสั่งด้านบน
- รวบรวม URL ของ ship และรหัสเข้าสู่ระบบของคุณ
- กำหนดค่า
channels.tlon - รีสตาร์ท gateway
- DM ไปยังบอตหรือกล่าวถึงบอตในช่องกลุ่ม
การกำหนดค่าขั้นต่ำ (บัญชีเดียว):
{
channels: {
tlon: {
enabled: true,
ship: "~sampel-palnet",
url: "https://your-ship-host",
code: "lidlut-tabwed-pillex-ridrup",
ownerShip: "~your-main-ship", // recommended: your ship, always allowed
},
},
}
ship ส่วนตัว/LAN
ตามค่าเริ่มต้น OpenClaw จะบล็อก hostname และช่วง IP ส่วนตัว/ภายในเพื่อป้องกัน SSRF หาก ship ของคุณทำงานอยู่บนเครือข่ายส่วนตัว (localhost, IP ของ LAN หรือ hostname ภายใน) คุณต้องเลือกเปิดใช้อย่างชัดเจน:
{
channels: {
tlon: {
url: "http://localhost:8080",
allowPrivateNetwork: true,
},
},
}
สิ่งนี้ใช้กับ URL เช่น:
http://localhost:8080http://192.168.x.x:8080http://my-ship.local:8080
⚠️ เปิดใช้งานเฉพาะเมื่อคุณไว้วางใจเครือข่ายภายในของคุณเท่านั้น การตั้งค่านี้จะปิดการป้องกัน SSRF สำหรับคำขอไปยัง URL ของ ship ของคุณ
ช่องกลุ่ม
การค้นหาอัตโนมัติเปิดใช้งานตามค่าเริ่มต้น คุณยังสามารถปักหมุดช่องด้วยตนเองได้:
{
channels: {
tlon: {
groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"],
},
},
}
ปิดการค้นหาอัตโนมัติ:
{
channels: {
tlon: {
autoDiscoverChannels: false,
},
},
}
การควบคุมการเข้าถึง
allowlist สำหรับ DM (ว่าง = ไม่อนุญาต DM, ใช้ ownerShip สำหรับขั้นตอนการอนุมัติ):
{
channels: {
tlon: {
dmAllowlist: ["~zod", "~nec"],
},
},
}
การอนุญาตของกลุ่ม (จำกัดตามค่าเริ่มต้น):
{
channels: {
tlon: {
defaultAuthorizedShips: ["~zod"],
authorization: {
channelRules: {
"chat/~host-ship/general": {
mode: "restricted",
allowedShips: ["~zod", "~nec"],
},
"chat/~host-ship/announcements": {
mode: "open",
},
},
},
},
},
}
เจ้าของและระบบอนุมัติ
ตั้งค่า owner ship เพื่อรับคำขออนุมัติเมื่อผู้ใช้ที่ไม่ได้รับอนุญาตพยายามโต้ตอบ:
{
channels: {
tlon: {
ownerShip: "~your-main-ship",
},
},
}
owner ship จะ ได้รับอนุญาตโดยอัตโนมัติทุกที่ — คำเชิญ DM จะถูกยอมรับอัตโนมัติ และ
ข้อความในช่องจะได้รับอนุญาตเสมอ คุณไม่จำเป็นต้องเพิ่มเจ้าของใน dmAllowlist หรือ
defaultAuthorizedShips
เมื่อตั้งค่าแล้ว เจ้าของจะได้รับการแจ้งเตือนทาง DM สำหรับ:
- คำขอ DM จาก ship ที่ไม่อยู่ใน allowlist
- การกล่าวถึงในช่องที่ไม่มีการอนุญาต
- คำขอเชิญเข้ากลุ่ม
การตั้งค่าการยอมรับอัตโนมัติ
ยอมรับคำเชิญ DM อัตโนมัติ (สำหรับ ship ใน dmAllowlist):
{
channels: {
tlon: {
autoAcceptDmInvites: true,
},
},
}
ยอมรับคำเชิญเข้ากลุ่มอัตโนมัติจาก ship ที่เชื่อถือได้:
{
channels: {
tlon: {
autoAcceptGroupInvites: true,
groupInviteAllowlist: ["~zod"],
},
},
}
autoAcceptGroupInvites จะปฏิเสธโดยอัตโนมัติเมื่อ groupInviteAllowlist ว่าง ตั้งค่า
allowlist เป็น ship ที่ควรยอมรับคำเชิญเข้ากลุ่มโดยอัตโนมัติ
เป้าหมายการส่ง (CLI/cron)
ใช้สิ่งเหล่านี้กับ openclaw message send หรือการส่งผ่าน cron:
- DM:
~sampel-palnetหรือdm/~sampel-palnet - กลุ่ม:
chat/~host-ship/channelหรือgroup:~host-ship/channel
Skill ที่รวมมาให้แล้ว
Tlon Plugin มี Skill ที่รวมมาให้แล้ว (@tloncorp/tlon-skill)
ซึ่งให้การเข้าถึงการทำงานของ Tlon ผ่าน CLI:
- รายชื่อผู้ติดต่อ: รับ/อัปเดตโปรไฟล์, แสดงรายชื่อผู้ติดต่อ
- ช่อง: แสดงรายการ, สร้าง, โพสต์ข้อความ, ดึงประวัติ
- กลุ่ม: แสดงรายการ, สร้าง, จัดการสมาชิก
- DM: ส่งข้อความ, react ต่อข้อความ
- Reactions: เพิ่ม/ลบ emoji reactions ในโพสต์และ DM
- การตั้งค่า: จัดการสิทธิ์ Plugin ผ่านคำสั่ง slash
Skill จะพร้อมใช้งานโดยอัตโนมัติเมื่อ Plugin ได้รับการติดตั้ง
ความสามารถ
| ฟีเจอร์ | สถานะ |
|---|---|
| ข้อความโดยตรง | ✅ รองรับ |
| กลุ่ม/ช่อง | ✅ รองรับ (ต้องมีการกล่าวถึงตามค่าเริ่มต้น) |
| เธรด | ✅ รองรับ (ตอบกลับอัตโนมัติในเธรด) |
| Rich text | ✅ แปลง Markdown เป็นรูปแบบ Tlon |
| รูปภาพ | ✅ อัปโหลดไปยังพื้นที่จัดเก็บของ Tlon |
| Reactions | ✅ ผ่าน Skill ที่รวมมาให้แล้ว |
| Polls | ❌ ยังไม่รองรับ |
| คำสั่งเนทีฟ | ✅ รองรับ (เฉพาะเจ้าของตามค่าเริ่มต้น) |
การแก้ไขปัญหา
รันลำดับนี้ก่อน:
openclaw status
openclaw gateway status
openclaw logs --follow
openclaw doctor
ความล้มเหลวที่พบบ่อย:
- DM ถูกละเว้น: ผู้ส่งไม่อยู่ใน
dmAllowlistและไม่ได้กำหนดค่าownerShipสำหรับขั้นตอนการอนุมัติ - ข้อความกลุ่มถูกละเว้น: ไม่พบช่องหรือผู้ส่งไม่ได้รับอนุญาต
- ข้อผิดพลาดการเชื่อมต่อ: ตรวจสอบว่า URL ของ ship เข้าถึงได้; เปิดใช้
allowPrivateNetworkสำหรับ ship ภายในเครื่อง - ข้อผิดพลาดการยืนยันตัวตน: ตรวจสอบว่ารหัสเข้าสู่ระบบเป็นปัจจุบัน (รหัสจะหมุนเวียน)
อ้างอิงการกำหนดค่า
การกำหนดค่าแบบเต็ม: การกำหนดค่า
ตัวเลือกผู้ให้บริการ:
channels.tlon.enabled: เปิด/ปิดการเริ่มต้นช่องchannels.tlon.ship: ชื่อ Urbit ship ของบอต (เช่น~sampel-palnet)channels.tlon.url: URL ของ ship (เช่นhttps://sampel-palnet.tlon.network)channels.tlon.code: รหัสเข้าสู่ระบบของ shipchannels.tlon.allowPrivateNetwork: อนุญาต URL localhost/LAN (ข้าม SSRF)channels.tlon.ownerShip: owner ship สำหรับระบบอนุมัติ (ได้รับอนุญาตเสมอ)channels.tlon.dmAllowlist: ship ที่ได้รับอนุญาตให้ DM (ว่าง = ไม่มี)channels.tlon.autoAcceptDmInvites: ยอมรับ DM อัตโนมัติจาก ship ที่อยู่ใน allowlistchannels.tlon.autoAcceptGroupInvites: ยอมรับคำเชิญเข้ากลุ่มอัตโนมัติจาก ship ที่อยู่ใน allowlistchannels.tlon.groupInviteAllowlist: ship ที่คำเชิญเข้ากลุ่มอาจได้รับการยอมรับอัตโนมัติchannels.tlon.autoDiscoverChannels: ค้นหาช่องกลุ่มอัตโนมัติ (ค่าเริ่มต้น: true)channels.tlon.groupChannels: nest ของช่องที่ปักหมุดด้วยตนเองchannels.tlon.defaultAuthorizedShips: ship ที่ได้รับอนุญาตสำหรับทุกช่องchannels.tlon.authorization.channelRules: กฎการยืนยันสิทธิ์รายช่องchannels.tlon.showModelSignature: ต่อท้ายชื่อโมเดลในข้อความ
หมายเหตุ
- การตอบกลับกลุ่มต้องมีการกล่าวถึง (เช่น
~your-bot-ship) เพื่อให้ตอบกลับ - การตอบกลับเธรด: หากข้อความขาเข้าอยู่ในเธรด OpenClaw จะตอบกลับในเธรด
- Rich text: การจัดรูปแบบ Markdown (ตัวหนา, ตัวเอียง, code, headers, lists) จะถูกแปลงเป็นรูปแบบเนทีฟของ Tlon
- รูปภาพ: URL จะถูกอัปโหลดไปยังพื้นที่จัดเก็บของ Tlon และฝังเป็นบล็อกรูปภาพ
ที่เกี่ยวข้อง
- ภาพรวมช่อง — ช่องที่รองรับทั้งหมด
- การจับคู่ — การยืนยันตัวตน DM และขั้นตอนการจับคู่
- กลุ่ม — พฤติกรรมแชทกลุ่มและการควบคุมด้วยการกล่าวถึง
- การกำหนดเส้นทางช่อง — การกำหนดเส้นทางเซสชันสำหรับข้อความ
- ความปลอดภัย — โมเดลการเข้าถึงและการเสริมความแข็งแกร่ง