Developer and self-hosted

Tlon

Tlon เป็นเมสเซนเจอร์แบบกระจายศูนย์ที่สร้างขึ้นบน Urbit โดย OpenClaw เชื่อมต่อกับยาน Urbit ของคุณและ ตอบกลับข้อความส่วนตัวและข้อความแชตกลุ่ม ตามค่าเริ่มต้น การตอบกลับในกลุ่มต้องมีการกล่าวถึงด้วย @ พร้อม กฎการให้สิทธิ์และกระบวนการอนุมัติโดยเจ้าของที่ทำงานเสริมอยู่ด้านบน

สถานะ: Plugin ที่รวมมาให้ รองรับข้อความส่วนตัว การกล่าวถึงในกลุ่ม เธรด Rich Text การอัปโหลด/ดาวน์โหลดรูปภาพ และ ระบบอนุมัติโดยเจ้าของ แต่ไม่รองรับรีแอ็กชันและแบบสำรวจ

Plugin ที่รวมมาให้

Tlon รวมมาใน OpenClaw รุ่นปัจจุบันอยู่แล้ว บิลด์แบบแพ็กเกจจึงไม่ต้องติดตั้งแยกต่างหาก

สำหรับบิลด์เก่าหรือการติดตั้งแบบกำหนดเองที่ไม่รวม Plugin นี้ ให้ติดตั้งจาก npm:

bash
openclaw plugins install @openclaw/tlon

ใช้ชื่อแพ็กเกจเปล่าเพื่อติดตามแท็กรุ่นปัจจุบัน ตรึงเวอร์ชัน (@openclaw/tlon@x.y.z) เฉพาะเมื่อต้องการให้การติดตั้งทำซ้ำได้เหมือนเดิม

จากเช็กเอาต์ภายในเครื่อง:

bash
openclaw plugins install ./path/to/local/tlon-plugin

รายละเอียด: Plugin

การตั้งค่า

bash
openclaw channels add --channel tlon --ship ~sampel-palnet --url https://your-ship-host --code lidlut-tabwed-pillex-ridrup

หรือแก้ไขการกำหนดค่าโดยตรง:

json5
{  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, ชื่อโฮสต์ภายใน) ให้เลือกอนุญาตอย่างชัดเจน:

json5
{  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 ของบัญชีนั้น

ช่องกลุ่ม

ปักหมุดช่องด้วยตนเอง หรือเปิดการค้นหาอัตโนมัติ:

json5
{  channels: {    tlon: {      groupChannels: ["chat/~host-ship/general", "chat/~host-ship/support"],      autoDiscoverChannels: true,    },  },}

autoDiscoverChannels มีค่าเริ่มต้นเป็น false เมื่อไม่ได้กำหนดในการกำหนดค่า ส่วนตัวช่วยตั้งค่าจะกำหนดค่าเริ่มต้นของ คำถามเป็นใช่ และเขียน true อย่างชัดเจน เมื่อเปิดใช้งาน OpenClaw จะค้นข้อมูลกลุ่มที่เข้าร่วมแล้วเมื่อเริ่มต้น เฝ้าดูช่องใหม่เมื่อมีการยอมรับคำเชิญเข้ากลุ่ม และตรวจสอบซ้ำทุก 2 นาที

การควบคุมการเข้าถึง

รายการอนุญาตข้อความส่วนตัว (ว่าง = ไม่อนุญาตข้อความส่วนตัว เว้นแต่ผู้ส่งคือ ownerShip):

json5
{  channels: {    tlon: {      dmAllowlist: ["~zod", "~nec"],    },  },}

การให้สิทธิ์ในกลุ่มมีค่าเริ่มต้นเป็น restricted สำหรับแต่ละช่อง กำหนด defaultAuthorizedShips เป็น เกณฑ์พื้นฐาน และเขียนทับเป็นรายเนสต์ของช่อง:

json5
{  channels: {    tlon: {      defaultAuthorizedShips: ["~zod"],      authorization: {        channelRules: {          "chat/~host-ship/general": {            mode: "restricted",            allowedShips: ["~zod", "~nec"],          },          "chat/~host-ship/announcements": {            mode: "open",          },        },      },    },  },}

เมื่อบอตตอบกลับภายในเธรดแล้ว บอตจะตอบข้อความถัดมาในเธรดนั้นต่อไป โดยไม่ต้องกล่าวถึงอีกครั้ง

เจ้าของและระบบอนุมัติ

json5
{  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 แล้ว (เจ้าของจะได้รับการยอมรับโดยอัตโนมัติ เสมอ ไม่ว่าค่าแฟล็กนี้จะเป็นอย่างไร):

json5
{  channels: {    tlon: {      autoAcceptDmInvites: true,    },  },}

ยอมรับคำเชิญเข้ากลุ่มโดยอัตโนมัติจากรายการอนุญาต (ปฏิเสธโดยค่าเริ่มต้น: เมื่อ autoAcceptGroupInvites: true และ groupInviteAllowlist ว่าง จะไม่ยอมรับคำเชิญจากผู้ที่ไม่ใช่เจ้าของ):

json5
{  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 ที่รวมมาให้ เท่านั้น
แบบสำรวจ ไม่รองรับ
คำสั่งในระบบ ตามค่าเริ่มต้นใช้ได้เฉพาะเจ้าของ

การแก้ไขปัญหา

bash
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
  • การส่งข้อความขาเข้าที่ขอให้สรุปช่อง (เช่น "สรุปช่องนี้") จะเรียกใช้การสรุปประวัติในตัวแทนกระบวนการตอบกลับตามปกติ

ที่เกี่ยวข้อง

Was this useful?
On this page

On this page