Multi-agent
เลนเฉพาะทางแบบขนาน
เลนเฉพาะทางแบบขนานช่วยให้ Gateway เดียวกำหนดเส้นทางแชตหรือห้องต่าง ๆ ไปยัง ตัวแทนที่แตกต่างกันได้ พร้อมกับรักษาประสบการณ์ผู้ใช้ให้รวดเร็ว เคล็ดลับคือการมอง การทำงานแบบขนานเป็นปัญหาการออกแบบทรัพยากรที่มีจำกัด ไม่ใช่แค่การมี "ตัวแทนมากขึ้น"
หลักการพื้นฐาน
เลนเฉพาะทางจะเพิ่มปริมาณงานได้ก็ต่อเมื่อช่วยลดการแย่งใช้ คอขวดจริง:
- ล็อกเซสชัน: ควรมีเพียงหนึ่งการรันที่แก้ไขเซสชันหนึ่ง ๆ ได้ในเวลาเดียวกัน
- ความจุโมเดลโดยรวม: การรันแชตที่มองเห็นได้ทั้งหมดยังคงใช้ขีดจำกัดของผู้ให้บริการร่วมกัน
- ความจุของเครื่องมือ: งานเชลล์ เบราว์เซอร์ เครือข่าย และรีโพซิทอรีอาจช้ากว่า รอบการตอบของโมเดลเอง
- งบประมาณบริบท: ทรานสคริปต์ที่ยาวทำให้ทุกเทิร์นในอนาคตช้าลงและโฟกัสน้อยลง
- ความไม่ชัดเจนของความเป็นเจ้าของ: ตัวแทนซ้ำซ้อนที่ทำงานเดียวกันทำให้ความจุสูญเปล่า
OpenClaw ทำให้การรันในแต่ละเซสชันเป็นแบบลำดับอยู่แล้ว และจำกัดการทำงานแบบขนานโดยรวมผ่าน คิวคำสั่ง เลนเฉพาะทางเพิ่มนโยบายไว้ด้านบน: ตัวแทนใดเป็นเจ้าของงานใด อะไรยังอยู่ในแชต และอะไรกลายเป็นงานเบื้องหลัง
การเปิดใช้ที่แนะนำ
ระยะที่ 1: ข้อตกลงของเลน + งานหนักเบื้องหลัง
ให้ทุกเลนมีข้อตกลงเป็นลายลักษณ์อักษรในเวิร์กสเปซและพรอมป์ต์ระบบของตน:
- วัตถุประสงค์: งานที่เลนนี้เป็นเจ้าของ
- สิ่งที่ไม่ใช่เป้าหมาย: งานที่ควรส่งต่อแทนที่จะพยายามทำเอง
- งบประมาณแชต: คำตอบสั้น ๆ อยู่ในแชต งานยาวควรรับทราบสั้น ๆ แล้วจึงรันในตัวแทนย่อยหรืองานเบื้องหลัง
- กฎการส่งต่อ: เมื่อเลนอื่นเป็นเจ้าของงาน ให้บอกว่าควรส่งไปที่ใดและ ให้สรุปสำหรับส่งต่อแบบกระชับ
- กฎความเสี่ยงของเครื่องมือ: เลือกพื้นผิวเครื่องมือที่เล็กที่สุดซึ่งทำงานให้สำเร็จได้
นี่คือระยะที่ต้นทุนต่ำที่สุดและแก้การอุดตันส่วนใหญ่ได้: งานเขียนโค้ดหนึ่งงานจะไม่ ทำให้เลนวิจัยช้าจนหน่วงอีกต่อไป และแต่ละแชตรักษาบริบทของตัวเองให้สะอาด
ระยะที่ 2: การควบคุมลำดับความสำคัญและการทำงานพร้อมกัน
ปรับคิวและความจุโมเดลตามคุณค่าทางธุรกิจของแต่ละเลน:
{
agents: {
defaults: {
maxConcurrent: 4,
subagents: { maxConcurrent: 8 },
},
},
messages: {
queue: {
mode: "collect",
debounceMs: 1000,
cap: 20,
drop: "summarize",
},
},
}
ใช้แชตโดยตรง/ส่วนตัวและตัวแทนงานปฏิบัติการโปรดักชันสำหรับงานที่มีลำดับความสำคัญสูง ให้ งานวิจัย งานร่าง และงานเขียนโค้ดแบบแบตช์ย้ายไปเป็นงานเบื้องหลังเมื่อระบบ ไม่ว่าง
ระยะที่ 3: ผู้ประสานงาน / ตัวควบคุมทราฟฟิก
เพิ่มรูปแบบผู้ประสานงานขนาดเล็กเมื่อมีหลายเลนทำงานอยู่:
- ติดตามงานและเจ้าของของเลนที่กำลังทำงาน
- ตรวจจับคำขอซ้ำกันข้ามกลุ่ม
- กำหนดเส้นทางสรุปการส่งต่อระหว่างเลน
- แสดงเฉพาะตัวบล็อก ผลลัพธ์ที่เสร็จแล้ว และการตัดสินใจที่มนุษย์ต้องทำ
อย่าเริ่มจากจุดนี้ ผู้ประสานงานที่ไม่มีข้อตกลงของเลนมีแต่จะประสานความโกลาหล
เทมเพลตข้อตกลงของเลนขั้นต่ำ
# Lane contract
## Owns
- <job this lane is responsible for>
## Does not own
- <work to hand off>
## Chat budget
- Answer quick questions directly.
- For multi-step, slow, or tool-heavy work: acknowledge briefly, spawn/background
the work, then return the result when complete.
## Handoff
If another lane owns the request, reply with:
- target lane
- objective
- relevant context
- exact next action
## Tool posture
Use the smallest tool surface that can complete the task. Avoid broad shell or
network work unless this lane explicitly owns it.