ในหน้านี้
ในหน้านี้
Configuration
กลุ่มการกระจายข้อความ
ภาพรวม
กลุ่มบรอดแคสต์เรียกใช้ เอเจนต์หลายตัว กับข้อความขาเข้าเดียวกัน เอเจนต์แต่ละตัวประมวลผลข้อความในเซสชันที่แยกจากกันและโพสต์คำตอบของตนเอง ดังนั้นหมายเลข WhatsApp หนึ่งหมายเลขจึงสามารถรองรับทีมเอเจนต์เฉพาะทางในแชตกลุ่มหรือข้อความส่วนตัวเดียวกันได้
ระบบจะประเมินกลุ่มบรอดแคสต์หลังจากรายการอนุญาตของช่องทางและกฎการเปิดใช้งานกลุ่มแล้ว ในกลุ่ม WhatsApp การบรอดแคสต์จะเกิดขึ้นเมื่อโดยปกติ OpenClaw จะตอบกลับ (ตัวอย่างเช่น เมื่อมีการกล่าวถึง ทั้งนี้ขึ้นอยู่กับการตั้งค่ากลุ่มของคุณ) กลุ่มบรอดแคสต์เปลี่ยนเฉพาะว่า เอเจนต์ใดทำงาน เท่านั้น ไม่ได้เปลี่ยนว่าข้อความมีสิทธิ์ได้รับการประมวลผลหรือไม่
เลน QA ของ WhatsApp แบบใช้งานจริงประกอบด้วย whatsapp-broadcast-group-fanout ซึ่งตรวจสอบว่าข้อความในกลุ่มหนึ่งข้อความที่มีการกล่าวถึงสามารถสร้างคำตอบที่มองเห็นได้และแตกต่างกันจากเอเจนต์ที่กำหนดค่าไว้สองตัว
การกำหนดค่า
การตั้งค่าพื้นฐาน
เพิ่มส่วน broadcast ที่ระดับบนสุด (ถัดจาก bindings) คีย์คือ ID ของคู่สนทนา WhatsApp และค่าคืออาร์เรย์ของ ID เอเจนต์:
- แชตกลุ่ม: JID ของกลุ่ม (เช่น
[email protected]) - ข้อความส่วนตัว: หมายเลขโทรศัพท์ E.164 ของผู้ส่ง (เช่น
+15551234567)
ผลลัพธ์: เมื่อ OpenClaw จะตอบกลับในแชตนี้ ระบบจะเรียกใช้เอเจนต์ทั้งสามตัว
ID เอเจนต์ทุกรายการต้องมีอยู่ใน agents.list: การตรวจสอบความถูกต้องของการกำหนดค่าจะรายงาน ID ที่ไม่รู้จัก และรันไทม์จะข้าม ID เหล่านั้นพร้อมคำเตือน Broadcast agent <id> not found in agents.list; skipping
กลยุทธ์การประมวลผล
broadcast.strategy กำหนดวิธีที่เอเจนต์ประมวลผลข้อความ:
| กลยุทธ์ | ลักษณะการทำงาน |
|---|---|
parallel (ค่าเริ่มต้น) |
เอเจนต์ทั้งหมดประมวลผลพร้อมกัน คำตอบอาจมาถึงในลำดับใดก็ได้ |
sequential |
เอเจนต์ประมวลผลตามลำดับในอาร์เรย์ โดยแต่ละตัวรอให้ตัวก่อนหน้าทำงานเสร็จ |
ตัวอย่างฉบับสมบูรณ์
วิธีการทำงาน
ลำดับการไหลของข้อความ
ข้อความขาเข้ามาถึง
ข้อความจากกลุ่ม WhatsApp หรือข้อความส่วนตัวมาถึง
การกำหนดเส้นทางและการรับเข้า
OpenClaw ใช้รายการอนุญาตของช่องทาง กฎการเปิดใช้งานกลุ่ม และความเป็นเจ้าของการเชื่อมโยง ACP ที่กำหนดค่าไว้
การตรวจสอบบรอดแคสต์
หากไม่มีการเชื่อมโยง ACP ที่กำหนดค่าไว้เป็นเจ้าของเส้นทาง OpenClaw จะตรวจสอบว่า ID ของคู่สนทนาอยู่ใน broadcast หรือไม่
หากใช้บรอดแคสต์
- เอเจนต์ทุกรายการประมวลผลข้อความ
- เอเจนต์แต่ละตัวมีคีย์เซสชันและบริบทที่แยกจากกัน
- เอเจนต์ประมวลผลแบบขนาน (ค่าเริ่มต้น) หรือแบบตามลำดับ
- ไฟล์แนบเสียงจะถูกถอดเสียงหนึ่งครั้งก่อนกระจายงาน เพื่อให้เอเจนต์ใช้บทถอดเสียงเดียวกันแทนการเรียก STT แยกกัน
หากไม่ใช้บรอดแคสต์
OpenClaw ส่งต่อไปยังเส้นทางปกติหรือเส้นทางเซสชัน ACP ที่กำหนดค่าไว้ซึ่งถูกเลือกระหว่างการกำหนดเส้นทาง
การแยกเซสชัน
เอเจนต์แต่ละตัวในกลุ่มบรอดแคสต์จะแยกสิ่งต่อไปนี้ออกจากกันโดยสมบูรณ์:
- คีย์เซสชัน (
agent:alfred:whatsapp:group:120363...เทียบกับagent:baerbel:whatsapp:group:120363...) - ประวัติการสนทนา (เอเจนต์จะไม่เห็นคำตอบของเอเจนต์ตัวอื่น)
- พื้นที่ทำงาน (แซนด์บ็อกซ์แยกกันหากกำหนดค่าไว้)
- การเข้าถึงเครื่องมือ (รายการอนุญาต/ปฏิเสธที่แตกต่างกัน)
- หน่วยความจำ/บริบท (
IDENTITY.md,SOUL.mdฯลฯ แยกจากกัน)
มีข้อยกเว้นหนึ่งอย่างที่ตั้งใจให้ใช้ร่วมกัน: บัฟเฟอร์บริบทของกลุ่ม (ข้อความล่าสุดในกลุ่มที่ใช้เป็นบริบท) จะใช้ร่วมกันสำหรับคู่สนทนาแต่ละราย ดังนั้นเอเจนต์บรอดแคสต์ทั้งหมดจะเห็นบริบทเดียวกันเมื่อถูกเรียกใช้ ระบบจะล้างบัฟเฟอร์หนึ่งครั้งหลังจากการกระจายงานเสร็จสิ้น
วิธีนี้ทำให้เอเจนต์แต่ละตัวมีบุคลิก โมเดล ทักษะ และสิทธิ์เข้าถึงเครื่องมือที่แตกต่างกันได้ (ตัวอย่างเช่น อ่านอย่างเดียวเทียบกับอ่านและเขียน)
ตัวอย่าง: เซสชันที่แยกจากกัน
ในกลุ่ม [email protected] ที่มีเอเจนต์ ["alfred", "baerbel"]:
บริบทของ Alfred
บริบทของ Baerbel
กรณีการใช้งาน
- ทีมเอเจนต์เฉพาะทาง: กลุ่มนักพัฒนาที่
code-reviewer,security-auditor,test-generatorและdocs-checkerต่างตอบข้อความเดียวกันจากมุมมองของตนเอง - การรองรับหลายภาษา: แชตสนับสนุนหนึ่งห้องที่มี
support-en,support-de,support-esตอบกลับเป็นภาษาของตนเอง - การประกันคุณภาพ:
support-agentตอบคำถาม ขณะที่qa-agentตรวจสอบและตอบเฉพาะเมื่อพบปัญหา - งานอัตโนมัติ:
task-tracker,time-loggerและreport-generatorรับข้อมูลอัปเดตสถานะเดียวกันทั้งหมด
แนวทางปฏิบัติที่แนะนำ
1. ให้งานของเอเจนต์มีขอบเขตชัดเจน
กำหนดหน้าที่เดียวที่ชัดเจนให้เอเจนต์แต่ละตัว (formatter, linter, tester) แทนการใช้เอเจนต์ "dev-helper" แบบทั่วไปหนึ่งตัว
2. ใช้ ID และชื่อที่สื่อความหมาย
3. กำหนดค่าการเข้าถึงเครื่องมือให้แตกต่างกัน
reviewer อ่านได้อย่างเดียว fixer อ่านและเขียนได้
4. ตรวจสอบประสิทธิภาพ
เมื่อมีเอเจนต์จำนวนมาก ให้เลือกใช้ "strategy": "parallel" (ค่าเริ่มต้น) จำกัดกลุ่มบรอดแคสต์ไว้เพียงไม่กี่เอเจนต์ และใช้โมเดลที่เร็วขึ้นสำหรับเอเจนต์ที่ทำงานง่ายกว่า
5. ความล้มเหลวถูกแยกออกจากกัน
เอเจนต์ล้มเหลวแยกจากกัน ข้อผิดพลาดของเอเจนต์หนึ่งตัวจะถูกบันทึก (Broadcast agent <id> failed: ...) และไม่ขัดขวางเอเจนต์ตัวอื่น
ความเข้ากันได้
ผู้ให้บริการ
ปัจจุบันกลุ่มบรอดแคสต์ใช้งานได้เฉพาะกับ WhatsApp (ช่องทางเว็บ) ช่องทางอื่นจะละเว้นการกำหนดค่า broadcast
การกำหนดเส้นทาง
กลุ่มบรอดแคสต์ทำงานร่วมกับการกำหนดเส้นทางที่มีอยู่:
GROUP_A: มีเพียง alfred ที่ตอบกลับ (การกำหนดเส้นทางปกติ)GROUP_B: agent1 และ agent2 ตอบกลับ (บรอดแคสต์)
การแก้ไขปัญหา
เอเจนต์ไม่ตอบกลับ
ตรวจสอบ:
- ID เอเจนต์มีอยู่ใน
agents.list(การตรวจสอบความถูกต้องของการกำหนดค่าจะปฏิเสธ ID ที่ไม่รู้จัก) - รูปแบบ ID ของคู่สนทนาถูกต้อง (JID ของกลุ่ม เช่น
[email protected]หรือ E.164 เช่น+15551234567สำหรับข้อความส่วนตัว) - ข้อความผ่านการคัดกรองตามปกติ (กฎการกล่าวถึง/การเปิดใช้งานยังคงมีผล)
แก้จุดบกพร่อง:
การกระจายงานที่สำเร็จจะบันทึก Broadcasting message to <n> agents (<strategy>)
มีเอเจนต์เพียงตัวเดียวตอบกลับ
สาเหตุ: ID ของคู่สนทนาอาจอยู่ในการเชื่อมโยงเส้นทางปกติแต่ไม่อยู่ใน broadcast หรืออาจตรงกับการเชื่อมโยง ACP แบบเฉพาะสิทธิ์ที่กำหนดค่าไว้
วิธีแก้: เพิ่มคู่สนทนาที่ผูกกับเส้นทางปกติลงในการกำหนดค่าบรอดแคสต์ หรือลบ/เปลี่ยนการเชื่อมโยง ACP ที่กำหนดค่าไว้ หากต้องการการกระจายงานแบบบรอดแคสต์
ปัญหาด้านประสิทธิภาพ
หากทำงานช้าเมื่อมีเอเจนต์จำนวนมาก: ลดจำนวนเอเจนต์ต่อกลุ่ม ใช้โมเดลที่เบากว่า และตรวจสอบเวลาเริ่มต้นของแซนด์บ็อกซ์
ตัวอย่าง
ตัวอย่างที่ 1: ทีมตรวจสอบโค้ด
ข้อมูลโค้ดหนึ่งชุดในกลุ่มจะสร้างคำตอบสี่รายการ ได้แก่ การแก้ไขรูปแบบ ข้อค้นพบด้านความปลอดภัย ช่องว่างของความครอบคลุมการทดสอบ และข้อสังเกตเล็กน้อยเกี่ยวกับเอกสาร
ตัวอย่างที่ 2: ไปป์ไลน์หลายภาษา
ข้อมูลอ้างอิง API
สคีมาการกำหนดค่า
ฟิลด์
strategy"parallel" | "sequential"default: "parallel"วิธีกำหนดการประมวลผลของเอเจนต์ parallel เรียกใช้เอเจนต์ทั้งหมดพร้อมกัน ส่วน sequential เรียกใช้ตามลำดับในอาร์เรย์
[peerId]string[]JID ของกลุ่ม WhatsApp หรือหมายเลขโทรศัพท์ E.164 ค่าคืออาร์เรย์ของ ID เอเจนต์ที่ต้องประมวลผลข้อความทั้งหมดจากคู่สนทนารายนั้น
ข้อจำกัด
- จำนวนเอเจนต์สูงสุด: ไม่มีขีดจำกัดตายตัว แต่เอเจนต์จำนวนมาก (10 ตัวขึ้นไป) อาจทำงานช้า
- บริบทที่ใช้ร่วมกัน: เอเจนต์จะไม่เห็นคำตอบของกันและกัน (เป็นไปตามการออกแบบ)
- ลำดับข้อความ: คำตอบแบบขนานอาจมาถึงในลำดับใดก็ได้
- ขีดจำกัดอัตราการใช้งาน: คำตอบทั้งหมดมาจากบัญชี WhatsApp เดียว ดังนั้นคำตอบของเอเจนต์ทุกตัวจะนับรวมในขีดจำกัดอัตราการใช้งาน WhatsApp เดียวกัน