ในหน้านี้
ในหน้านี้
Agent coordination
แซนด์บ็อกซ์และเครื่องมือสำหรับหลายเอเจนต์
เอเจนต์แต่ละตัวในการตั้งค่าแบบหลายเอเจนต์สามารถแทนที่นโยบายแซนด์บ็อกซ์และเครื่องมือส่วนกลางได้ หน้านี้ครอบคลุมการกำหนดค่ารายเอเจนต์ กฎลำดับความสำคัญ และตัวอย่างต่าง ๆ
แบ็กเอนด์และโหมด — เอกสารอ้างอิงแซนด์บ็อกซ์ฉบับเต็ม
ดีบักว่า "เหตุใดสิ่งนี้จึงถูกบล็อก"
การเรียกใช้คำสั่งด้วยสิทธิ์ระดับสูงสำหรับผู้ส่งที่เชื่อถือได้
ตัวอย่างการกำหนดค่า
ตัวอย่างที่ 1: เอเจนต์ส่วนตัว + เอเจนต์ครอบครัวแบบจำกัดสิทธิ์
ผลลัพธ์:
- เอเจนต์
main: ทำงานบนโฮสต์และเข้าถึงเครื่องมือได้ทั้งหมด - เอเจนต์
family: ทำงานใน Docker (หนึ่งคอนเทนเนอร์ต่อเอเจนต์) ใช้ได้เฉพาะreadและส่งข้อความภายในการสนทนาปัจจุบัน
ตัวอย่างที่ 2: เอเจนต์สำหรับงานพร้อมแซนด์บ็อกซ์ที่ใช้ร่วมกัน
ตัวอย่างที่ 2ข: โปรไฟล์เขียนโค้ดส่วนกลาง + เอเจนต์สำหรับรับส่งข้อความเท่านั้น
ผลลัพธ์:
- เอเจนต์เริ่มต้นได้รับเครื่องมือเขียนโค้ด
- เอเจนต์
supportใช้ได้เฉพาะการรับส่งข้อความ (+ เครื่องมือ Slack)
ตัวอย่างที่ 3: โหมดแซนด์บ็อกซ์ต่างกันในแต่ละเอเจนต์
ลำดับความสำคัญของการกำหนดค่า
เมื่อมีทั้งการกำหนดค่าส่วนกลาง (agents.defaults.*) และการกำหนดค่าเฉพาะเอเจนต์ (agents.list[].*):
การกำหนดค่าแซนด์บ็อกซ์
การตั้งค่าเฉพาะเอเจนต์จะแทนที่การตั้งค่าส่วนกลาง:
ข้อจำกัดเครื่องมือ
ลำดับการกรองมีดังนี้:
โปรไฟล์เครื่องมือ
tools.profile หรือ agents.list[].tools.profile
โปรไฟล์เครื่องมือของผู้ให้บริการ
tools.byProvider[provider].profile หรือ agents.list[].tools.byProvider[provider].profile
นโยบายเครื่องมือส่วนกลาง
tools.allow / tools.deny
นโยบายเครื่องมือของผู้ให้บริการ
tools.byProvider[provider].allow/deny
นโยบายเครื่องมือเฉพาะเอเจนต์
agents.list[].tools.allow/deny
นโยบายผู้ให้บริการของเอเจนต์
agents.list[].tools.byProvider[provider].allow/deny
นโยบายเครื่องมือของแซนด์บ็อกซ์
tools.sandbox.tools หรือ agents.list[].tools.sandbox.tools
นโยบายเครื่องมือของเอเจนต์ย่อย
tools.subagents.tools หากเกี่ยวข้อง
กฎลำดับความสำคัญ
- แต่ละระดับสามารถจำกัดเครื่องมือเพิ่มเติมได้ แต่ไม่สามารถอนุญาตเครื่องมือที่ถูกปฏิเสธในระดับก่อนหน้าให้กลับมาใช้ได้
- หากตั้งค่า
agents.list[].tools.sandbox.toolsค่านี้จะแทนที่tools.sandbox.toolsสำหรับเอเจนต์นั้น - หากตั้งค่า
agents.list[].tools.profileค่านี้จะแทนที่tools.profileสำหรับเอเจนต์นั้น - คีย์เครื่องมือของผู้ให้บริการรองรับทั้ง
provider(เช่นgoogle-antigravity) หรือprovider/model(เช่นopenai/gpt-5.4)
ลักษณะการทำงานของรายการอนุญาตที่ว่างเปล่า
หากรายการอนุญาตที่กำหนดไว้อย่างชัดเจนรายการใดในลำดับนี้ทำให้การทำงานไม่มีเครื่องมือที่เรียกใช้ได้ OpenClaw จะหยุดก่อนส่งพรอมต์ไปยังโมเดล นี่เป็นพฤติกรรมโดยเจตนา: เอเจนต์ที่กำหนดค่าด้วยเครื่องมือที่ไม่มีอยู่ เช่น agents.list[].tools.allow: ["query_db"] ควรล้มเหลวอย่างชัดเจนจนกว่าจะเปิดใช้งาน Plugin ที่ลงทะเบียน query_db ไม่ใช่ทำงานต่อในฐานะเอเจนต์ที่ใช้ได้เฉพาะข้อความ
นโยบายเครื่องมือรองรับรูปแบบย่อ group:* ซึ่งจะขยายเป็นเครื่องมือหลายรายการ ดูรายการทั้งหมดได้ที่ กลุ่มเครื่องมือ
การแทนที่สิทธิ์ระดับสูงรายเอเจนต์ (agents.list[].tools.elevated) สามารถจำกัดการเรียกใช้คำสั่งด้วยสิทธิ์ระดับสูงเพิ่มเติมสำหรับเอเจนต์ที่ระบุ ดูรายละเอียดที่ โหมดสิทธิ์ระดับสูง
การย้ายจากเอเจนต์เดียว
ก่อนหน้า (เอเจนต์เดียว)
หลังจากนั้น (หลายเอเจนต์)
ตัวอย่างข้อจำกัดเครื่องมือ
เอเจนต์แบบอ่านอย่างเดียว
การเรียกใช้เชลล์โดยปิดใช้งานเครื่องมือระบบไฟล์
การสื่อสารเท่านั้น
sessions_history ในโปรไฟล์นี้ยังคงส่งคืนมุมมองการเรียกคืนข้อมูลที่ถูกจำกัดขอบเขตและปรับให้ปลอดภัย แทนการถ่ายโอนบทสนทนาดิบทั้งหมด การเรียกคืนข้อมูลของผู้ช่วยจะตัดแท็กกระบวนการคิด โครงร่าง <relevant-memories> เพย์โหลด XML ของการเรียกเครื่องมือในรูปข้อความธรรมดา (รวมถึง <tool_call>...</tool_call>, <function_call>...</function_call>, <tool_calls>...</tool_calls>, <function_calls>...</function_calls> และบล็อกการเรียกเครื่องมือที่ถูกตัดทอน) โครงร่างการเรียกเครื่องมือที่ถูกลดระดับ โทเค็นควบคุมโมเดลแบบ ASCII/ความกว้างเต็มที่รั่วไหล และ XML การเรียกเครื่องมือของ MiniMax ที่มีรูปแบบไม่ถูกต้องออก ก่อนการปกปิด/ตัดทอน
ข้อผิดพลาดที่พบบ่อย: "non-main"
การทดสอบ
หลังจากกำหนดค่าแซนด์บ็อกซ์และเครื่องมือสำหรับหลายเอเจนต์แล้ว:
ตรวจสอบการจับคู่เอเจนต์
ตรวจสอบคอนเทนเนอร์แซนด์บ็อกซ์
ทดสอบข้อจำกัดเครื่องมือ
- ส่งข้อความที่ต้องใช้เครื่องมือที่ถูกจำกัด
- ตรวจสอบว่าเอเจนต์ไม่สามารถใช้เครื่องมือที่ถูกปฏิเสธได้
เฝ้าติดตามบันทึก
การแก้ไขปัญหา
เอเจนต์ไม่ได้ทำงานในแซนด์บ็อกซ์แม้ตั้งค่า `mode: 'all'`
- ตรวจสอบว่ามี
agents.defaults.sandbox.modeส่วนกลางที่แทนที่ค่านี้หรือไม่ - การกำหนดค่าเฉพาะเอเจนต์มีลำดับความสำคัญสูงกว่า ดังนั้นให้ตั้งค่า
agents.list[].sandbox.mode: "all"
เครื่องมือยังคงใช้งานได้แม้อยู่ในรายการปฏิเสธ
- ตรวจสอบลำดับการกรองทั้งหมด: โปรไฟล์ → โปรไฟล์ผู้ให้บริการ → นโยบายส่วนกลาง → นโยบายผู้ให้บริการ → นโยบายเอเจนต์ → นโยบายผู้ให้บริการของเอเจนต์ → แซนด์บ็อกซ์ → เอเจนต์ย่อย
- แต่ละระดับทำได้เพียงจำกัดเพิ่มเติมเท่านั้น ไม่สามารถอนุญาตสิทธิ์กลับคืนมาได้
- ดูแซนด์บ็อกซ์เทียบกับนโยบายเครื่องมือเทียบกับสิทธิ์ยกระดับ สำหรับการแก้ไขข้อบกพร่องแบบทีละขั้นตอน
คอนเทนเนอร์ไม่ได้แยกต่อเอเจนต์
- ค่าเริ่มต้นของ
scopeคือ"agent"(หนึ่งคอนเทนเนอร์ต่อรหัสเอเจนต์) - ตั้งค่า
scope: "session"เพื่อใช้หนึ่งคอนเทนเนอร์ต่อเซสชัน หรือตั้งค่าscope: "shared"เพื่อใช้คอนเทนเนอร์เดียวร่วมกันระหว่างเอเจนต์
ที่เกี่ยวข้อง
- โหมดสิทธิ์ยกระดับ
- การกำหนดเส้นทางแบบหลายเอเจนต์
- การกำหนดค่าแซนด์บ็อกซ์
- แซนด์บ็อกซ์เทียบกับนโยบายเครื่องมือเทียบกับสิทธิ์ยกระดับ — การแก้ไขข้อบกพร่องว่า "เหตุใดสิ่งนี้จึงถูกบล็อก"
- การทำแซนด์บ็อกซ์ — เอกสารอ้างอิงแซนด์บ็อกซ์ฉบับเต็ม (โหมด ขอบเขต แบ็กเอนด์ อิมเมจ)
- การจัดการเซสชัน