อัปเดตล่าสุด 2025

OpenClaw Subagent Development
สร้าง AI Agent หลายตัวทำงานร่วมกัน

เรียนรู้การพัฒนา Subagent บน OpenClaw ตั้งแต่พื้นฐาน การใช้ sessions_spawn ตัวอย่างการใช้งานจริง และ Best Practices สำหรับการสร้างระบบ Multi-Agent ที่มีประสิทธิภาพ

อ่าน 15 นาที ระดับกลาง TypeScript/JSON

สารบัญ

1

OpenClaw Subagent คืออะไร?

Subagent คือ AI Agent ตัวเล็กๆ ที่ถูกสร้างขึ้นมาเพื่อทำงานเฉพาะทาง (Specialized Agent) โดย Main Agent หรือ Agent หลักเป็นคนสั่งให้ทำงาน เมื่องานเสร็จแล้ว Subagent จะรายงานผลกลับไป

แนวคิดหลัก: แทนที่จะให้ AI ตัวเดียวทำทุกอย่าง เราแบ่งงานออกเป็นส่วนๆ และมอบหมายให้ Subagent เฉพาะทางจัดการแต่ละส่วน

โครงสร้างการทำงาน

Main Agent
Research
Agent
Code
Agent
Writer
Agent
Reviewer
Agent

ข้อดีของ Subagent

โฟกัสเฉพาะทาง

แต่ละ Subagent เชี่ยวชาญงานเฉพาะ ทำให้ได้ผลลัพธ์ที่แม่นยำกว่า

แบ่งงานได้ชัดเจน

งานซับซ้อนแบ่งเป็นส่วนย่อย จัดการได้ง่ายและตรวจสอบได้

ทำงานขนานได้

หลาย Subagent ทำงานพร้อมกัน ลดเวลาดำเนินการโดยรวม

Retry ได้เฉพาะส่วน

ถ้าส่วนไหน fail ให้ retry เฉพาะส่วนนั้น ไม่ต้องเริ่มใหม่ทั้งหมด

2

วิธีสร้าง Subagent ด้วย sessions_spawn

ใน OpenClaw เราใช้ sessions_spawn ใน subagents tool เพื่อสร้าง Subagent ใหม่

รูปแบบการเรียกใช้งาน

JSON - sessions_spawn request
{
  "action": "spawn",
  "target": "agent:main:subagent",
  "message": "คำอธิบายงานที่ต้องการให้ Subagent ทำ",
  "context": {
    "label": "my-worker",
    "skills": ["skill1", "skill2"],
    "model": "ollama-local/kimi-k2.5:cloud"
  }
}

Parameters สำคัญ

Parameter ประเภท คำอธิบาย
action string ใช้ค่า "spawn" เพื่อสร้าง subagent ใหม่
target string รูปแบบ "agent:main:subagent"
message string รายละเอียดงานที่ต้องการให้ทำ (ควรละเอียดชัดเจน)
context.label string ชื่อ identifier สำหรับ subagent (optional)
context.skills array รายชื่อ skills ที่ต้องการให้ subagent ใช้ (optional)
context.model string โมเดล AI ที่ต้องการใช้ (optional)

ขั้นตอนการทำงาน

1

Main Agent สร้าง Subagent

เรียกใช้ sessions_spawn พร้อมระบุงานที่ชัดเจน

2

Subagent ทำงานอย่างอิสระ

Subagent ทำงานตามที่ได้รับมอบหมาย สามารถเรียกใช้ tools ได้ตามสิทธิ์

3

Push-based Completion

เมื่อ Subagent เสร็จงาน จะรายงานผลกลับไปหา Main Agent อัตโนมัติ

4

Main Agent รวบรวมผล

Main Agent รับผลจาก Subagent และนำไปใช้ต่อหรือส่งให้ผู้ใช้

3

ตัวอย่างการใช้งานจริง

1 สร้างบทความอัตโนมัติ

ตัวอย่างการใช้ Subagent เขียนบทความและ deploy เว็บไซต์

Example: Article Writing Subagent
{
  "action": "spawn",
  "target": "agent:main:subagent",
  "message": "เขียนบทความ 'Docker Best Practices' สำหรับเว็บไซต์ wiki-tlog.web.app
  
เนื้อหาที่ต้องการ:
1. Docker fundamentals
2. Security best practices
3. Performance optimization
4. Common pitfalls

เขียนเป็นภาษาไทย เก็บไฟล์เป็น HTML ใน public/articles/docker-best-practices.html
แล้ว deploy ไปยัง Firebase (wiki-tlog project)",
  "context": {
    "label": "article-writer"
  }
}

2 วิจัยและสรุปข้อมูล

ตัวอย่างการใช้ Subagent ค้นคว้าข้อมูลจากเว็บและสรุปผล

Example: Research Subagent
{
  "action": "spawn",
  "target": "agent:main:subagent",
  "message": "ค้นคว้าเกี่ยวกับ 'Kubernetes vs Docker Swarm' 

งานที่ต้องทำ:
1. ค้นหาข้อมูลล่าสุดเกี่ยวกับ Kubernetes และ Docker Swarm
2. เปรียบเทียบข้อดีข้อเสียของแต่ละตัว
3. สรุปเป็นตารางเปรียบเทียบ
4. แนะนำว่าควรใช้ตัวไหนในกรณีใด

ส่งผลลัพธ์กลับมาเป็น markdown",
  "context": {
    "label": "researcher",
    "skills": ["web_search", "web_fetch"]
  }
}

3 Code Review และ Refactoring

ตัวอย่างการใช้ Subagent ตรวจสอบและปรับปรุงโค้ด

Example: Code Review Subagent
{
  "action": "spawn",
  "target": "agent:main:subagent",
  "message": "Review และ refactor ไฟล์ /src/api/handlers.ts

งานที่ต้องทำ:
1. อ่านไฟล์ handlers.ts
2. ตรวจสอบ code quality, security issues, performance problems
3. แนะนำการปรับปรุง
4. แก้ไขไฟล์ตามข้อแนะนำ (ถ้าได้รับอนุญาต)

รายงานผลกลับมาพร้อมสรุปการเปลี่ยนแปลง",
  "context": {
    "label": "code-reviewer",
    "skills": ["read", "edit", "write"]
  }
}

4 การใช้หลาย Subagent พร้อมกัน (Parallel Execution)

ตัวอย่างการ spawn หลาย subagent เพื่อทำงานขนานกัน

Example: Parallel Subagents
// Spawn 3 subagents พร้อมกัน

// Subagent 1: Research
{
  "action": "spawn",
  "target": "agent:main:subagent",
  "message": "ค้นหาข้อมูลเกี่ยวกับ Firebase Hosting...",
  "context": { "label": "research-1" }
}

// Subagent 2: Write Code
{
  "action": "spawn",
  "target": "agent:main:subagent",
  "message": "สร้าง Firebase deployment script...",
  "context": { "label": "coder-1" }
}

// Subagent 3: Test
{
  "action": "spawn",
  "target": "agent:main:subagent",
  "message": "เตรียม test cases สำหรับ deployment...",
  "context": { "label": "tester-1" }
}

หมายเหตุ: การทำงานแบบขนานช่วยลดเวลาโดยรวม แต่ต้องแน่ใจว่าแต่ละ subagent ไม่ขัดแย้งกัน (เช่น แก้ไขไฟล์เดียวกันพร้อมกัน)

4

Best Practices

1. อธิบายงานให้ชัดเจน

Message ที่ส่งให้ Subagent ควรมีรายละเอียดครบถ้วน:

  • ✓ ระบุ context และ background เพียงพอ
  • ✓ ระบุ output ที่ต้องการอย่างชัดเจน
  • ✓ ระบุ constraints และ limitations
  • ✓ ระบุไฟล์/ทรัพยากรที่เกี่ยวข้อง

2. กำหนด Scope ให้แคบลง

แต่ละ Subagent ควรทำงานเดียวและทำให้ดี:

❌ ไม่แนะนำ:

"จัดการทุกอย่างเกี่ยวกับเว็บไซต์ให้เรียบร้อย"

✅ แนะนำ:

"สร้างไฟล์ HTML สำหรับหน้า About ตาม template ที่กำหนด"

3. ใช้ Label สำหรับติดตาม

ตั้งชื่อ label ที่สื่อความหมายเพื่อให้ติดตามและ debug ได้ง่าย:

// Good labels
"label": "article-writer-docker"
"label": "research-k8s-vs-docker"
"label": "deploy-firebase-wiki"

// Bad labels
"label": "agent1"
"label": "worker"
"label": "test"

4. จัดการ Error อย่างเหมาะสม

วางแผนสำหรับกรณีที่ Subagent fail:

  • • กำหนด timeout ที่เหมาะสม
  • • เตรียม fallback plan
  • • Log error messages เพื่อนำไปแก้ไข
  • • พิจารณา retry logic (แต่ไม่ควร retry ไม่รู้จบ)

5. สิ่งที่ควรหลีกเลี่ยง

  • Don't busy-poll: อย่าวนลูปถาม status ตลอด ใช้ push-based completion
  • Don't spawn recursively: อย่าให้ Subagent spawn Subagent ซ้อนกันเกินไป
  • Don't share mutable state: หลีกเลี่ยงการแชร์ state ที่เปลี่ยนแปลงได้ระหว่าง Subagent
  • Don't ignore security: ตรวจสอบสิทธิ์และ permissions ของแต่ละ Subagent

6. การ Monitor และ Debug

เครื่องมือสำหรับติดตามและจัดการ Subagent:

Subagent Management Commands
// List all running subagents
{ "action": "list" }

// Kill a specific subagent
{ "action": "kill", "target": "agent:main:subagent:uuid" }

// Send additional instructions
{ "action": "steer", "target": "agent:main:subagent:uuid", "message": "..." }

สรุป

สิ่งสำคัญที่ต้องจำ:

  • Subagent = Agent เฉพาะทางที่ทำงานเดียวได้ดี
  • ใช้ sessions_spawn เพื่อสร้าง Subagent ใหม่
  • Push-based completion = ไม่ต้อง poll
  • อธิบายงานให้ชัดเจน กำหนด scope ให้แคบ

ขั้นตอนต่อไป:

  • ลองสร้าง Subagent ง่ายๆ สำหรับงานที่ทำบ่อย
  • ศึกษา skills ที่มีในระบบ
  • ทดลองใช้หลาย Subagent พร้อมกัน
  • พัฒนา workflow ที่เหมาะกับงานของคุณ