Developer and self-hosted
Tlon
Tlon เป็นเมสเซนเจอร์แบบกระจายศูนย์ที่สร้างขึ้นบน Urbit โดย OpenClaw เชื่อมต่อกับยาน Urbit ของคุณและ ตอบกลับข้อความส่วนตัวและข้อความแชตกลุ่ม ตามค่าเริ่มต้น การตอบกลับในกลุ่มต้องมีการกล่าวถึงด้วย @ พร้อม กฎการให้สิทธิ์และกระบวนการอนุมัติโดยเจ้าของที่ทำงานเสริมอยู่ด้านบน
สถานะ: Plugin ที่รวมมาให้ รองรับข้อความส่วนตัว การกล่าวถึงในกลุ่ม เธรด Rich Text การอัปโหลด/ดาวน์โหลดรูปภาพ และ ระบบอนุมัติโดยเจ้าของ แต่ไม่รองรับรีแอ็กชันและแบบสำรวจ
Plugin ที่รวมมาให้
Tlon รวมมาใน OpenClaw รุ่นปัจจุบันอยู่แล้ว บิลด์แบบแพ็กเกจจึงไม่ต้องติดตั้งแยกต่างหาก
สำหรับบิลด์เก่าหรือการติดตั้งแบบกำหนดเองที่ไม่รวม Plugin นี้ ให้ติดตั้งจาก npm:
openclaw plugins install @openclaw/tlonใช้ชื่อแพ็กเกจเปล่าเพื่อติดตามแท็กรุ่นปัจจุบัน ตรึงเวอร์ชัน (@openclaw/tlon@x.y.z)
เฉพาะเมื่อต้องการให้การติดตั้งทำซ้ำได้เหมือนเดิม
จากเช็กเอาต์ภายในเครื่อง:
openclaw plugins install ./path/to/local/tlon-pluginรายละเอียด: 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 จะค้นข้อมูลกลุ่มที่เข้าร่วมแล้วเมื่อเริ่มต้น
เฝ้าดูช่องใหม่เมื่อมีการยอมรับคำเชิญเข้ากลุ่ม และตรวจสอบซ้ำทุก 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> |
ดำเนินการกับคำขออนุมัติที่ระบุตาม 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 ของยาน (เดสก์ moltbot, บักเก็ต 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 ใหม่ทันทีผ่านที่จัดเก็บการตั้งค่าข้างต้น
ความสามารถ
| คุณสมบัติ | สถานะ |
|---|---|
| ข้อความส่วนตัว | รองรับ |
| กลุ่ม/ช่อง | รองรับ (ต้องมีการกล่าวถึงตามค่าเริ่มต้น) |
| เธรด | รองรับ (ตอบกลับต่อไปเมื่อเข้าร่วมแล้ว) |
| Rich Text | แปลง 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 รายการล่าสุดจากบริบทของเธรด ซึ่งเพิ่มไว้ด้านหน้าสำหรับเอเจนต์
- Rich Text (ตัวหนา ตัวเอียง โค้ด ส่วนหัว รายการ) จะถูกแปลงเป็นรูปแบบในระบบของ Tlon
- การส่งข้อความขาเข้าที่ขอให้สรุปช่อง (เช่น "สรุปช่องนี้") จะเรียกใช้การสรุปประวัติในตัวแทนกระบวนการตอบกลับตามปกติ
ที่เกี่ยวข้อง
- ภาพรวมช่อง — ช่องทั้งหมดที่รองรับ
- การจับคู่ — การยืนยันตัวตนผ่านข้อความส่วนตัวและกระบวนการจับคู่
- กลุ่ม — พฤติกรรมของแชตกลุ่มและข้อกำหนดการกล่าวถึง
- การกำหนดเส้นทางช่อง — การกำหนดเส้นทางเซสชันสำหรับข้อความ
- ความปลอดภัย — โมเดลการเข้าถึงและการเสริมความปลอดภัย