ระบบเอเจนต์ย่อย
ภาพรวม
เอเจนต์ย่อย (Subagent) คือกลไกการแยกย่อยและมอบหมายงานของพื้นที่ทำงาน Agent หลักสามารถแยกงานคู่ขนานที่ซับซ้อนออกเป็นงานย่อย สร้างเอเจนต์ย่อยเฉพาะทางเพื่อดำเนินการอย่างอิสระ และเมื่อเอเจนต์ย่อยทำงานเสร็จก็จะส่งผลลัพธ์กลับให้ Agent หลักดำเนินการต่อ
ระบบรองรับเอเจนต์ย่อย 3 ประเภท โดยมีความลึกในการซ้อนสูงสุด 3 ระดับ
เอเจนต์ย่อยทั้ง 3 ประเภท
| ประเภท | ชื่อเครื่องมือ | วิธีสร้าง | สถานการณ์ที่เหมาะสม | ตำแหน่งดำเนินการ |
|---|---|---|---|---|
| สร้างอัตโนมัติ | create_local_sub_agent |
Agent สร้างเองระหว่างการอนุมาน | การแยกงานย่อยชั่วคราว | โหนดในเครื่อง |
| ส่งงานแบบลงทะเบียนล่วงหน้า | dispatch_sub_agent |
ผู้ใช้กำหนดค่าไว้ล่วงหน้า | บทบาทเฉพาะทางที่ใช้งานซ้ำ | โหนดในเครื่อง |
| ส่งงานข้ามโหนด | dispatch_multi_node_agent |
Agent เลือกโหนดระยะไกล | ต้องใช้ทรัพยากรหรือความสามารถระยะไกล | โหนดระยะไกล |
เอเจนต์ย่อยที่สร้างอัตโนมัติ (create_local_sub_agent)
เมื่อ Agent ประเมินระหว่างการอนุมานว่างานปัจจุบันจำเป็นต้องแยกย่อย Agent จะเรียกใช้เครื่องมือ create_local_sub_agent ด้วยตนเอง เพื่อสร้างเอเจนต์ย่อยชั่วคราว ผู้ใช้ยังสามารถสั่งให้ Agent สร้างเอเจนต์ย่อยผ่านพรอมต์ในบทสนทนาได้ เช่น:
"กรุณาสร้างเอเจนต์ย่อยหนึ่งตัวเพื่อรับผิดชอบการค้นหาข้อมูลที่เกี่ยวข้อง แล้วสร้างเอเจนต์ย่อยอีกตัวเพื่อเขียนเอกสาร"
พารามิเตอร์การสร้าง:
| พารามิเตอร์ | คำอธิบาย | จำเป็น |
|---|---|---|
task |
คำอธิบายงานของเอเจนต์ย่อย | ใช่ |
systemPrompt |
การกำหนดตัวตน/บทบาทของเอเจนต์ย่อย | ใช่ |
cwd |
ไดเรกทอรีการทำงาน (ค่าเริ่มต้นสืบทอดจากระดับบน) | ไม่ |
maxSpawnDepth |
ความลึกในการซ้อน (1-3) ค่าเริ่มต้น 1 | ไม่ |
ขั้นตอนการดำเนินการ:
- Agent หลักตัดสินใจสร้างเอเจนต์ย่อยและกำหนดงาน
- ระบบเริ่ม Agent Loop อิสระ (ค่าเริ่มต้นสูงสุด 50 รอบ)
- เอเจนต์ย่อยมีลูปเครื่องมืออิสระ กระบวนการดำเนินการมองเห็นได้ในหน้าต่างบทสนทนาของ Agent หลัก
- เมื่อเอเจนต์ย่อยทำงานเสร็จ จะส่งผลลัพธ์สุดท้ายกลับให้ Agent หลัก
- Agent หลักดำเนินงานต่อโดยอิงจากผลลัพธ์
เอเจนต์ย่อยแบบส่งงานลงทะเบียนล่วงหน้า (dispatch_sub_agent)
ผู้ใช้สามารถลงทะเบียนล่วงหน้าในการตั้งค่า APP เพื่อสร้างเอเจนต์ย่อยที่มีการกำหนดค่าเฉพาะ และ Agent จะเรียกใช้ผ่านเครื่องมือ dispatch_sub_agent เมื่อจำเป็น
คำอธิบายของเอเจนต์ย่อยที่ลงทะเบียนล่วงหน้าจะถูกแทรกอัตโนมัติเข้าสู่ระบบพรอมต์ของ Agent หลัก และเมื่อ LLM เห็นงานที่ตรงกัน ก็จะเลือกเอเจนต์ย่อยที่เหมาะสมโดยอัตโนมัติ
รายการการกำหนดค่า:
| การกำหนดค่า | คำอธิบาย |
|---|---|
name |
ชื่อเอเจนต์ย่อย |
description |
คำอธิบายความสามารถ (แทรกเข้าสู่ระบบพรอมต์ของ Agent หลัก) |
systemPrompt |
การกำหนดตัวตน/บทบาท |
tools |
รายการอนุญาตเครื่องมือ (หากละไว้จะสืบทอดทั้งหมด) |
disallowedTools |
รายการห้ามเครื่องมือ |
skills |
รายการ ID ทักษะที่ใช้ได้ |
mcpServers |
รายการชื่อเซิร์ฟเวอร์ MCP ที่ใช้ได้ |
model |
แทนที่โมเดลของระดับบน |
maxTurns |
แทนที่จำนวนรอบสูงสุดเริ่มต้น |
canSpawn |
สามารถสร้างเอเจนต์ย่อยระดับล่างได้หรือไม่ |
maxSpawnDepth |
ความลึกในการซ้อนสูงสุด |
ดูรายละเอียดหน้าจอการจัดการได้ที่ การลงทะเบียนและการจัดการเอเจนต์ย่อย
การส่งงานข้ามโหนด (dispatch_multi_node_agent)
เมื่องานต้องใช้ทรัพยากรหรือความสามารถของอุปกรณ์ระยะไกล Agent สามารถส่งงานไปยังโหนดอื่นเพื่อดำเนินการผ่านเครื่องมือ dispatch_multi_node_agent
ขั้นตอนการทำงาน:
- Agent หลักดูรายการโหนดออนไลน์ (แทรกเข้าสู่ระบบพรอมต์)
- เลือกโหนดเป้าหมายตามการประกาศความสามารถของโหนด
- ส่ง
node.invoke.requestผ่าน Gateway WebSocket - โหนดระยะไกลเริ่ม Agent Loop อิสระเพื่อดำเนินงาน
- เมื่อเสร็จ จะส่งผลลัพธ์กลับผ่าน
node.invoke.result
ตัวอย่างสถานการณ์:
- เว็บฝั่งบนคอมพิวเตอร์ A เริ่มบทสนทนา
- งานต้องเข้าถึงไฟล์ในเครื่องบนคอมพิวเตอร์ B
- Agent ส่งงานย่อยการดำเนินการกับไฟล์ไปยังโหนด APP ของคอมพิวเตอร์ B ผ่าน Gateway
- โหนด B ดำเนินการแล้วส่งผลลัพธ์กลับ และแสดงบทสนทนาต่อบนคอมพิวเตอร์ A
การควบคุมความลึกในการซ้อน
เอเจนต์ย่อยรองรับการสร้างแบบซ้อน โดยมีความลึกสูงสุด 3 ระดับ:
ความลึก 0: Agent หลัก (บทสนทนากับผู้ใช้)
└── ความลึก 1: เอเจนต์ย่อย A
└── ความลึก 2: เอเจนต์ย่อยของย่อย A-1
└── ความลึก 3: เอเจนต์ระดับลึกที่สุด (ไม่สามารถมอบหมายต่อได้)
| พารามิเตอร์ | ค่า | คำอธิบาย |
|---|---|---|
DEFAULT_MAX_SPAWN_DEPTH |
1 | ค่าเริ่มต้น: เอเจนต์ย่อยไม่สามารถสร้างระดับล่างได้ |
MAX_ALLOWED_SPAWN_DEPTH |
3 | ขีดจำกัดสูงสุดแบบตายตัว |
SUBAGENT_DEFAULT_MAX_TURNS |
50 | จำนวนรอบสูงสุดเริ่มต้นของเอเจนต์ย่อย (สูงกว่า Agent หลักที่ 25) |
ยิ่งความลึกมาก ความเป็นอิสระยิ่งสูง แต่การใช้ Token และเวลาดำเนินการก็เพิ่มขึ้นตามไปด้วย
กลไกการสืบทอดเครื่องมือ
| โหมด | คำอธิบาย |
|---|---|
| สืบทอดโดยค่าเริ่มต้น | เอเจนต์ย่อยสืบทอดเครื่องมือที่ใช้ได้ทั้งหมดของ Agent หลัก |
| รายการอนุญาต | พารามิเตอร์ tools ระบุรายการเครื่องมือที่อนุญาตให้ใช้ |
| รายการห้าม | พารามิเตอร์ disallowedTools ยกเว้นเครื่องมือเฉพาะ |
| สืบทอดทักษะ | สามารถสืบทอดหรือแทนที่ทักษะและเซิร์ฟเวอร์ MCP ของระดับบน |
| แทนที่โมเดล | เอเจนต์ย่อยสามารถใช้โมเดล LLM ที่ต่างจากระดับบน |
การแสดงผล UI
เอเจนต์ย่อยจะมีเครื่องหมายพิเศษแสดงในหน้าต่างบทสนทนา Work:

| องค์ประกอบการแสดงผล | คำอธิบาย |
|---|---|
| SubagentToolRow | แถวการเรียกใช้เครื่องมือเฉพาะของเอเจนต์ย่อย พร้อมสีระบุพิเศษ (สีมรกต emerald) |
| การส่งผ่านกิจกรรม | กระบวนการเรียกใช้เครื่องมือของเอเจนต์ย่อยแสดงแบบเรียลไทม์ในหน้าต่างบทสนทนาของ Agent หลัก |
| การแสดงผลลัพธ์ | เมื่อเอเจนต์ย่อยทำงานเสร็จ ผลลัพธ์สุดท้ายจะแสดงเป็นเอาต์พุตของเครื่องมือ |
ผู้ใช้สามารถเห็นได้อย่างชัดเจนว่าการดำเนินการใดทำโดย Agent หลัก และการดำเนินการใดทำโดยเอเจนต์ย่อย
วิธีสร้างเอเจนต์ย่อยผ่านบทสนทนา
คุณสามารถสั่งให้ Agent สร้างเอเจนต์ย่อยด้วยภาษาธรรมชาติในบทสนทนา ต่อไปนี้คือตัวอย่างพรอมต์บางส่วน:
| พรอมต์ | ผลลัพธ์ |
|---|---|
| "สร้างเอเจนต์ย่อยหนึ่งตัวเพื่อค้นหาและจัดระเบียบข้อมูลที่เกี่ยวข้อง" | Agent สร้างเอเจนต์ย่อยที่เน้นการค้นหา |
| "แบ่งงานนี้ให้เอเจนต์ย่อยสองตัวทำ: ตัวหนึ่งรับผิดชอบโค้ด อีกตัวรับผิดชอบเอกสาร" | Agent สร้างเอเจนต์ย่อยสองตัวที่ต่างเชี่ยวชาญกัน |
| "ช่วยสร้างเอเจนต์ย่อยความลึก 2 เพื่อจัดการงานที่ซับซ้อนนี้" | Agent สร้างเอเจนต์ย่อยที่สามารถมอบหมายต่อได้อีก |
| "ใช้โหนดระยะไกลเพื่อดำเนินงานประมวลผลไฟล์นี้" | Agent ใช้ dispatch_multi_node_agent |
การอ่านหน้าจอระหว่างการทำงานของเอเจนต์ย่อย

| องค์ประกอบ UI | ความหมาย |
|---|---|
| แถวเครื่องมือที่มีเครื่องหมายสีมรกต | นี่คือการเรียกใช้เครื่องมือที่เอเจนต์ย่อยกำลังดำเนินการ |
| การเรียกใช้เครื่องมือ "create_local_sub_agent" | Agent หลักกำลังสร้างเอเจนต์ย่อย |
| การเรียกใช้เครื่องมือภายในเอเจนต์ย่อย | เครื่องมือที่เอเจนต์ย่อยตัดสินใจเรียกใช้เอง แสดงแบบเรียลไทม์ |
| ผลลัพธ์สุดท้าย | เอาต์พุตสรุปหลังจากเอเจนต์ย่อยทำงานเสร็จ |
ผลกระทบต่อค่าใช้จ่าย
การใช้ token ของเอเจนต์ย่อยจะถูกคำนวณแยกต่างหาก:
| สถานการณ์ | ประมาณการการใช้ token |
|---|---|
| เฉพาะ Agent หลัก (ไม่มีเอเจนต์ย่อย) | 1x |
| Agent หลัก + เอเจนต์ย่อย 1 ตัว | 1.5x ~ 2.5x |
| Agent หลัก + เอเจนต์ย่อย 2 ตัว | 2x ~ 4x |
| ซ้อน 3 ระดับ (หลัก + ลูก + หลาน + เหลน) | 3x ~ 6x |
คำแนะนำ: เอเจนต์ย่อยเหมาะกับงานซับซ้อนที่จำเป็นต้องแยกย่อยจริง ๆ สำหรับงานง่าย ๆ ให้ Agent หลักจัดการโดยตรงได้เลย ไม่จำเป็นต้องสร้างเอเจนต์ย่อย
เมื่อใดควรใช้ / ไม่ควรใช้เอเจนต์ย่อย
| เหมาะกับการใช้เอเจนต์ย่อย | ไม่จำเป็นต้องใช้เอเจนต์ย่อย |
|---|---|
| งานแบ่งออกเป็นส่วนย่อยที่เป็นอิสระโดยธรรมชาติ (เช่น: ค้นหาข้อมูล + เขียนเอกสาร) | งานเชิงเส้นเดี่ยว ๆ (เช่น: อ่านไฟล์หนึ่งไฟล์แล้วสรุป) |
| ต้องการมุมมองเชี่ยวชาญที่ต่างกัน (เช่น: รีวิวโค้ด + ตรวจสอบความปลอดภัย) | คำถาม-คำตอบง่าย ๆ |
| ต้องการทรัพยากรของโหนดระยะไกล (เช่น: ไฟล์บนเซิร์ฟเวอร์ระยะไกล) | การดำเนินการกับไฟล์ในเครื่อง |
| ปริมาณงานมาก สามารถทำคู่ขนานเพื่อเร่งความเร็วได้ | งานง่ายและรวดเร็ว |
ไม่แนะนำให้กำหนดบทบาทที่ต่างกันให้ SubAgent เพื่อแบ่งงานทำร่วมกัน เพราะในยุค AI การทำงานร่วมกันกลับลดประสิทธิภาพและคุณภาพลง เอเจนต์ย่อยเหมาะกับสถานการณ์ที่ดำเนินงานคู่ขนานเพื่อประหยัดเวลาและเพิ่มประสิทธิภาพมากกว่า
เอกสารที่เกี่ยวข้อง
- การลงทะเบียนและการจัดการเอเจนต์ย่อย — การกำหนดค่าเอเจนต์ย่อยที่ลงทะเบียนล่วงหน้า
- สถาปัตยกรรมหลายโหนด — กลไกพื้นฐานของการส่งงานข้ามโหนด
- เอนจิน Agent Loop — Agent Loop ที่เอเจนต์ย่อยใช้งาน
