ข้าม​ไป​ยัง​เนื้อหา

Subdomain → ขอบเขต​ของ agent (บันได​การ​ยก​ระดับ)

บท​ที่​แล้ว​ปัก​วิทยานิพนธ์​ไว้​ว่า agent หนึ่ง​ตัว​ควร​เป็น bounded context หนึ่ง​อัน และ​ปิด​ท้าย​ด้วย​ทิศ​เดียว: อย่า​เริ่ม​ที่​ความ​ซับซ้อน​สูงสุด บท​นี้​แปล​ทิศ​นั้น​ให้​เป็น​ขั้นตอน​ที่​จับ​ต้อง​ได้ โดย​หยิบ​เครื่องมือ​เชิงกลยุทธ์​ของ DDD ชิ้น​ที่​คุณ​ใช้​คล่อง​อยู่​แล้ว​มา​เป็น​ด่าน​แรก — การ​จำแนก SubdomainSubdomainส่วน​ย่อย​ของ​ปัญหา​ทาง​ธุรกิจ (problem space) แบ่ง​เป็น core, supporting, generic — ก่อน​จะ​ออกแบบ​ว่า​จะ​มี agent กี่​ตัว​และ​แต่ละ​ตัว​ทำ​อะไร ต้อง​วิเคราะห์ subdomain ของ​ธุรกิจ​ก่อน​เสมอ ไม่ใช่​เริ่ม​จาก​อยาก 'มี agent' แล้ว​ค่อย​หา​เรื่อง​ให้​มัน​ทำStrategic Design

DDD แบ่ง problem space ของ​ธุรกิจ​ออก​เป็น​สาม​ชนิด: core (สิ่ง​ที่​ทำให้​เรา​ชนะ​คู่แข่ง ต้อง​ปั้น​เอง​ให้​ดี​ที่สุด), supporting (จำเป็นต่อ​ธุรกิจ​แต่​ไม่ใช่​จุด​ต่าง) และ generic (ใคร​ก็​ทำได้​เหมือน​กัน​หมด ซื้อ​สำเร็จรูป​คุ้ม​กว่า​ปั้น​เอง) การ​จำแนก​นี้​ตอบ​คำถาม​เชิงกลยุทธ์​ว่า “ควร​ลงแรง​ตรง​ไหน” ก่อน​คำถาม​เชิง​เทคนิค​ว่า “จะ​สร้าง​ด้วย​อะไร” เสมอ และ​มัน​คือ​ด่าน​แรก​ที่​กัน​ไม่​ให้​เรา default เป็น “สร้าง agent” กับ​ทุก​กล่อง​บน​กระดาน

📦 code ตัวอย่าง

คอร์ส​นี้​เป็น คอร์ส​ออกแบบ ไม่ใช่​ทัวร์ SDK — code ใน​บท​คือ ภาพร่าง ของ system prompt, ชุด tool และโทโพโล​ยี (Thai Mermaid + pseudo-config สั้นๆ) ไม่ใช่ app ที่​รัน​ได้​จริง ตัวอย่าง​ต่อยอด​จาก domain เดิม​ที่ repo kaen-food-ordering (กำลัง​จัด​ทำ) โดย​มอง​มัน​ผ่าน​เลนส์​ใหม่: ระบบ ops-copilot ที่​ช่วย​ทีม​ปฏิบัติการ​ของ platform

บันได​การ​ยก​ระดับ: เลือก​ขั้น​ที่​ต่ำ​ที่สุด​ที่​พอ

หัวข้อ​ที่​มีชื่อ​ว่า “บันได​การ​ยก​ระดับ: เลือก​ขั้น​ที่​ต่ำ​ที่สุด​ที่​พอ”

คำ​แนะนำ​แกน​กลาง​จาก Building Effective Agents (Anthropic, Dec 2024) ประโยค​เดียว​คือ เริ่ม​จาก​สิ่ง​ที่​ง่าย​ที่สุด​ที่​แก้​ปัญหา​ได้ แล้ว​เพิ่ม​ความ​ซับซ้อน​เมื่อ​จำเป็น เท่านั้น วิธี​ที่​ทำให้​คำ​แนะนำ​นี้​ใช้งาน​ได้​จริง​คือ​มอง​มัน​เป็น “บันได” สาม​ขั้น ไล่​จาก​ต้นทุน​และ​ความ​ไม่​แน่นอน​ต่ำ​สุด​ขึ้น​ไป​สูงสุด:

  • ขั้น 1 — single LLM call (augmented LLM: เรียก model ครั้ง​เดียว​พร้อม tool/retrieval เท่า​ที่​จำเป็น) เหมาะ​กับ​งาน​ที่​จบ​ใน​ครั้ง​เดียว เช่น จัด​หมวด​ตั๋ว สรุป​ข้อความ ดึง​ข้อมูล​ตอบ​กลับ
  • ขั้น 2 — workflow pattern code กำหนด​ลำดับ​ขั้น​ไว้​ล่วงหน้า​และ​ร้อย​การ​เรียก LLM หลาย​ครั้ง​เข้า​ด้วย​กัน​ตาม​เส้นทาง​ที่​รู้​อยู่​แล้ว
  • ขั้น 3 — autonomous agent ปล่อย​ให้ LLM สั่ง​การ Agentic LoopAgentic Loopวงจร​ที่ agent ทำซ้ำ​จนกว่า​จะ​บรรลุ​เป้าหมาย: รับ input → วางแผน/ตัดสิน​ใจ → เรียก tool → สังเกต​ผลลัพธ์ → วน​กลับ​ไป​ตัดสิน​ใจ​ใหม่ — ต่าง​จาก​โปรแกรม​ทั่วไป​ที่​รัน​เส้นทาง​เดียว​จบ วงจร​นี้​เอง​ที่​ทำให้ agent ยืดหยุ่น แต่​ก็​เสี่ยง context rot ถ้า​วน​นาน​เกิน​ไป​โดย​ไม่มี​ขอบเขตProcess ของ​ตัวเอง — วางแผน เรียก tool อ่าน​ผล แล้ว​ตัดสิน​ใจ​ก้าว​ถัด​ไป​เอง​จนกว่า​จะ​จบ

กติกา​การ​ปีน​มี​ข้อ​เดียว: ขึ้น​ที​ละ​ขั้น และ​ขึ้น​ต่อ​เมื่อ​ขั้น​ล่าง​พิสูจน์​แล้ว​ว่า​ไม่​พอ ไม่ใช่​กระโดด​ขึ้น​ขั้น 3 เพราะ​มัน​ฟัง​ดู​ล้ำ หน้าตา​ของ​บันได​และ​เกณฑ์​ตัดสิน​แต่ละ​ขั้น​เป็น​ดังนี้:

flowchart TD
  S["subdomain ที่จะสร้างระบบให้"] --> Q{"งานปลายเปิด และต้องให้ระบบ<br/>ตัดสินใจเส้นทางเองหรือไม่"}
  Q -->|"ไม่ · งานเดียวจบ · generic"| R1["ขั้น 1 — single LLM call<br/>augmented LLM = prompt + tool + retrieval<br/>เกณฑ์: generic subdomain, งานจบในครั้งเดียว<br/>ทางเลือก: ซื้อของสำเร็จ หรือเรียก LLM ตรง ๆ"]
  Q -->|"ไม่ · แต่มีหลายขั้นที่รู้ล่วงหน้า"| R2["ขั้น 2 — workflow pattern<br/>prompt chaining · routing · parallelization ·<br/>orchestrator-workers · evaluator-optimizer<br/>เกณฑ์: supporting subdomain, เส้นทางคาดเดาได้<br/>code กำหนดเส้นทาง test ได้ ถูกและนิ่ง"]
  Q -->|"ใช่ · ปลายเปิดจริง และคุ้มค่าความยืดหยุ่น"| R3["ขั้น 3 — autonomous agent<br/>LLM สั่งการ agentic loop ของตัวเอง<br/>เกณฑ์: core subdomain + ปลายเปิด<br/>เฉพาะเมื่อมี sandbox + guardrails + เงื่อนไขหยุด"]
  R1 -.->|"ไต่ขึ้นเมื่อพิสูจน์แล้วว่าไม่พอ"| R2
  R2 -.->|"ไต่ขึ้นเมื่อพิสูจน์แล้วว่าไม่พอ"| R3
  classDef rung fill:#c7d2fe,stroke:#3730a3,color:#1a1a1f;
  classDef agent fill:#f59e0b,stroke:#92400e,color:#1a1a1f;
  class R1,R2 rung;
  class R3 agent;

คำ​บรรยาย​ภาพ: บันได​สาม​ขั้น​ไล่​จาก​ต้นทุน/ความ​ไม่​แน่นอน​ต่ำ​สุด (ขั้น 1) ขึ้น​ไป​สูงสุด (ขั้น 3) เกณฑ์​แต่ละ​ขั้น​ผูก​กับ​ชนิด​ของ subdomain และ​ระดับ​ความ​ปลาย​เปิด​ของ​งาน — generic กับ​งาน​ครั้ง​เดียว​จอด​ที่​ขั้น 1, supporting ที่​เส้นทาง​คาด​เดา​ได้​จอด​ที่​ขั้น 2, มี​แต่ core ที่​ปลาย​เปิด​จริง​เท่านั้น​ที่ มี​สิทธิ์ ขึ้น​ขั้น 3 ลูกศร​ประ​คือ​การ​ไต่​ขึ้น​เมื่อ​ขั้น​ล่าง​ไม่​พอ ไม่ใช่ default ที่​กระโดด​ข้าม​ได้ สังเกต​ว่า​ขั้น 3 (สี​ส้ม) เป็น​ขั้น​เดียว​ที่​ต้อง​มี sandbox + guardrails + เงื่อนไข​หยุด​กำกับ และ subdomain ส่วน​ใหญ่​ใน​ระบบ​จริง​ไม่​เคย​ไป​ถึง​ขั้น​นี้ — บันได​นี้​จึง​เป็น​เครื่องมือ ลด จำนวน agent ไม่ใช่​แจก agent ให้​ทุก​กล่อง

workflow กับ agent คือ​เส้น​แบ่ง​จริง ไม่ใช่​ป้าย​การ​ตลาด

หัวข้อ​ที่​มีชื่อ​ว่า “workflow กับ agent คือ​เส้น​แบ่ง​จริง ไม่ใช่​ป้าย​การ​ตลาด”

ระหว่าง​ขั้น 2 กับ​ขั้น 3 มี​เส้น​แบ่ง​ที่​คม​กว่า​ที่​หลาย​คน​คิด และ​มัน​คือ​หัวใจ​ของ​บท​นี้ workflow กับ agentWorkflow vs Agentความ​ต่าง​สำคัญ​ที่​มัก​ถูก​มอง​ข้าม: workflow คือ code ที่​กำหนด​ลำดับ​ขั้นตอน​ตายตัว​ไว้​ล่วงหน้า (คาด​เดา​ได้ ทดสอบ​ง่าย) ส่วน agent คือ​ระบบ​ที่​ตัดสิน​ใจ​เส้นทาง​เอง​แบบ​ไดนามิก​ผ่าน agentic loop (ยืดหยุ่น​กว่า​แต่​คาด​เดา​ยาก​กว่า) — โจทย์​ส่วน​ใหญ่​ไม่​ต้องการ agent เต็ม​รูปแบบ workflow ที่​ออกแบบ​ดี​มัก​พอเพียง​และ​เชื่อถือ​ได้​กว่าProcess ต่าง​กัน​ตรง​ที่ ใคร​เป็น​คน​กำหนด​เส้นทาง:

  • ใน workflow code ของ​คุณ​เขียน​เส้นทาง​ไว้​ล่วงหน้า — LLM เติม​ช่องว่าง​ใน​แต่ละ​ก้าว แต่​ลำดับ​ก้าว​ถูก​ล็อก​ไว้​แล้ว ผล​คือ​คาด​เดา​ได้ test ได้​เหมือน code ปกติ ถูก​และ​เร็ว
  • ใน agent LLM เป็น​คน​ตัดสิน​เอง​ว่า​ก้าว​ถัด​ไป​คือ​อะไร วน agentic loop ของ​ตัวเอง​จนกว่า​จะ​บรรลุ​เป้า ผล​คือ​ยืดหยุ่น​กับ​งาน​ที่​คาด​เดา​เส้นทาง​ล่วงหน้า​ไม่​ได้ แต่​แลก​มา​ด้วย token ที่​บานปลาย, latency ที่​สูง​ขึ้น และ​ผลลัพธ์​ที่​คาด​เดา​ยาก​กว่า

จุด​ที่​ต้อง​ฝัง​ให้​ขึ้นใจ​คือ การ​ขยับ​จาก​ขั้น 2 ไป​ขั้น 3 ไม่ใช่ “อัปเกรด​ฟรี” — มัน​คือ​การ​จ่าย​ค่า​ความ​ยืดหยุ่น​ด้วย​ต้นทุน, ความหน่วง และ​ความ​ไม่​แน่นอน ถ้า​งาน​หนึ่ง​เส้นทาง​ตายตัว​อยู่​แล้ว การ​ยก​มัน​ขึ้น​เป็น agent มี​แต่​จะ​ทำให้​แพง​ขึ้น ช้า​ลง และ test ยาก​ขึ้น โดย​ไม่​ได้​อะไร​กลับ​มา

และ​นี่​คือ​เหตุผล​ที่ workflow ขั้น 2 ไม่​ได้​มี​แค่​แบบ​เดียว Building Effective Agents ให้​เมนู workflow pattern ห้า​แบบ​ที่นั่ง​อยู่ ใต้ เกณฑ์ agent พอดี — prompt chaining (ร้อย​เป็น​ทอดๆ), routing (แยก​ทาง​ตาม​ชนิด input), parallelization (ยิง​ขนาน​แล้ว​รวม​ผล), orchestrator-workersOrchestrator-Workersโทโพโล​ยี​ที่ agent ตัว​หนึ่ง (orchestrator) แตก​งาน​ใหญ่​เป็น​งาน​ย่อย​แล้ว​มอบหมาย​ให้ agent ลูก​ทีม (worker) แต่ละ​ตัว​ที่​มี Bounded Context แคบ​และ​ชัดเจน​ของ​ตัวเอง ก่อน​รวม​ผลลัพธ์​กลับ — ต่าง​จาก​การ​ปล่อย​ให้ agent หลาย​ตัว​คุย​กันเอง​แบบ​ไม่มี​ใคร​คุม​ภาพ​รวมArchitecture (ตัว​ประสาน​แตก​งาน​ให้​ลูก​ทีม) และ evaluator-optimizer (วน​แก้​ตาม​คำ​วิจารณ์) ก่อน​จะ​เอื้อม​ไป​ขั้น 3 ให้​ถาม​ก่อน​เสมอ​ว่า​ห้า​แบบ​นี้​แบบ​ใด​แบบ​หนึ่ง​ครอบ​งาน​ได้​หรือ​ยัง เพราะ​ทุก​แบบ​ล้วน​คาด​เดา​ได้​และ​ถูก​กว่า agent เต็ม​รูป

เอา​บันได​มา​วาง​บน domain ฟู้ด​เดลิ​เวอรี​เดิม สมมติ​ทีม​ปฏิบัติการ​อยาก​ได้ ops-copilot เต็ม​รูป เรา​ไล่​จำแนก subdomain แล้ว​เลือก​ขั้น​ให้​แต่ละ​อัน​แทนที่​จะ​เหมา​รวม​ว่า​ทุก​อัน​ต้อง​เป็น agent:

  • generic → ขั้น 1 หรือ​ไม่​ใช้ AI เลย งาน​อย่าง​ส่ง​อีเมล​ยืนยัน​ออเดอร์, ออก​ใบเสร็จ, login — ใครๆ ก็​ทำ​เหมือน​กัน ซื้อ​ของ​สำเร็จรูป​หรือ​เรียก API ตรงๆ จบ ถ้า​ต้อง​แตะ LLM จริง​ก็​แค่ single call เช่น “สรุป​ตั๋ว​ยาวๆ ให้​สั้น” หรือ “จัด​หมวด​คำถาม​ลูกค้า” ไม่มี​เหตุผล​ให้​เป็น agent
  • supporting → ขั้น 2 (workflow หรือ tool) งาน​ติดตาม​สถานะ​ออเดอร์ (order-tracking) มี​ขั้นตอน​ตายตัว: อ่าน​สถานะ → คำนวณ ETA → ร่าง​ข้อความ​ตอบ นี่​คือ prompt chaining หรือ routing ตรงๆ ไม่​ต้อง​มี agentic loop เช่น​เดียว​กับ​งาน​หลัง​ร้าน (restaurant-ops) แบบ​ปรับ​คิว​ตาม​กติกา​ที่​รู้​อยู่​แล้ว — เป็น ToolToolfunction หรือ API ภายนอก​ที่ agent เรียก​ใช้ได้​เพื่อ​กระทำ​สิ่ง​ที่ model ภาษา​เอง​ทำ​ไม่​ได้ เช่น ค้น​เว็บ อ่าน file เรียก​ฐาน​ข้อมูล — ขอบเขต​ของ​ชุด tool ที่ agent หนึ่ง​ถือ​อยู่​ก็​คือ​ส่วน​หนึ่ง​ที่​นิยาม Bounded Context ของ agent นั้น ยิ่ง tool set กว้าง​เกิน​หน้าที่ ยิ่ง​เสี่ยง​ให้ agent ล้ำ​ขอบเขตArchitecture ที่​มี workflow ห่อ ก็​เชื่อถือ​ได้​กว่า​และ​ถูก​กว่า agent
  • core + ปลาย​เปิด → ขั้น 3 (ผู้​สมัคร agent) งาน​แก้​ข้อ​พิพาท​ลูกค้า​ที่​ซับซ้อน (customer-support) — ตีความ​นโยบาย ชั่ง​น้ำหนัก​หลักฐาน เลือก​วิธี​ชดเชย ต่อรอง​ไป​มา — เป็น​งาน​ที่​เส้นทาง​คาด​เดา​ล่วงหน้า​ไม่​ได้​จริง นี่​คือ​กล่อง​เดียว​ใน​ตัวอย่าง​ที่ AgentAgentระบบ​ซอฟต์แวร์​ที่​รับ​เป้าหมาย​แล้ว​วางแผน-ตัดสิน​ใจ-เรียก​ใช้ tool ได้​เอง​หลาย​รอบ (agentic loop) โดย​ไม่​ต้อง​มี​มนุษย์​กำกับ​ทุก​ก้าว ต่าง​จาก​โปรแกรม​ทั่วไป​ที่​รัน​ตาม​ลำดับ​คำ​สั่ง​ตายตัว — ใน​คอร์ส​นี้​มอง​แต่ละ agent เหมือน1 Bounded Context ที่​ต้อง​มี​ขอบเขต ภาษา และ​หน้าที่​ของ​ตัวเอง​ชัดเจนArchitecture เต็ม​รูป​เริ่ม คุ้ม ค่า​ความ​ยืดหยุ่น​ที่​จ่าย​ไป

สังเกต​คำ​ว่า ผู้​สมัคร ให้​ดี — core + ปลาย​เปิด​ทำให้​งาน​นั้น มี​สิทธิ์​สมัคร เป็น agent เท่านั้น ยัง​ไม่ใช่​ใบ​ผ่าน​ทาง เพราะ​ขั้น 3 มา​พร้อม​เงื่อนไข​บังคับ: เฉพาะ​เมื่อ​มี sandbox (จำกัด​พื้นที่​ทำงาน), guardrailsGuardrailกติกา​ที่​ควบคุม​ไม่​ให้ agent ทำ​เกิน​ขอบเขต​หรือ​ก่อ​ความ​เสียหาย เช่น จำกัด tool ที่​เรียก​ได้ ตรวจ output ก่อน​ส่ง​ออก บังคับ human approval สำหรับ​การกระทำ​ที่​ย้อน​กลับ​ไม่​ได้ — เป็น​สิ่ง​ที่​รักษา​ขอบเขต​ของ Bounded Context ของ agent ให้​ไม่​ล้ำเส้นProcess + human-in-the-loopHuman-in-the-loopการ​ออกแบบ​ให้​มนุษย์​เข้า​มา​ตรวจสอบ​หรือ​อนุมัติ​ใน​จุด​ที่​การกระทำ​ของ agent มี​ความ​เสี่ยง​สูง​หรือ​ย้อน​กลับ​ไม่​ได้ เช่น ก่อน​โอน​เงิน​หรือ​ลบ​ข้อมูล​จริง — เป็น guardrail ชนิด​หนึ่ง​ที่​ยัง​จำเป็น​แม้ agent จะ​ฉลาด​ขึ้น​เรื่อย ๆ เพราะ​บาง​การ​ตัดสิน​ใจ​ไม่​ควร​ปล่อย​ให้ agent ตัดสิน​ใจ​เอง​ทั้งหมดProcess (ดัก​การกระทำ​เสี่ยง​ก่อน​เกิด​จริง เช่น คืน​เงิน​ต้อง​มี​คน​อนุมัติ) และ​เงื่อนไข​หยุด (กัน​วน​ไม่รู้​จบ) ครบ​ทั้ง​สาม​อย่าง​เท่านั้น​จึง​จะ​ปล่อย​งาน​ขึ้น​ขั้น 3 ได้

⚠️ จุด​ที่ agent ไม่​เหมือน aggregate

เงื่อนไข​สาม​ข้อ​ข้าง​บน​ไม่ใช่​พิธีกรรม แต่​ปิด​รอย​รั่ว​จริง​ของ​การ​เปรียบ agent กับ bounded context: aggregate ใน DDD รักษา invariant แบบ atomic — กติกา​ถูก​บังคับ ณ ขอบเขต​ธุรกรรม​เสมอ ไม่มี​ทาง​หลุด แต่ context ของ agent หลัง compaction/summarization ไม่​ได้​บังคับ​อะไร​แบบ​นั้น กฎ​ที่​เขียน​ไว้​ใน system prompt อาจ​ถูก​สรุป​ทิ้ง​หรือ​เจือจาง​เมื่อ context ยาว​ขึ้น การ​รักษา​กติกา​ของ agent จึง​เป็น​แบบ best-effort ล้วนๆ นี่​คือ​เหตุผล​ที่​ขั้น 3 ต้อง​มี sandbox + guardrails + เงื่อนไข​หยุด (และทำไมบทหลังๆ ถึง​ต้อง​พึ่ง agent memory และ eval) — การ​ยก​งาน​ขึ้น​เป็น agent ไม่ใช่​การ​ได้​ความ​สามารถ​มา​ฟรี แต่​คือ​การ​รับ​ภาระ​รักษา​กติกา​ที่​ระบบ​ไม่​บังคับ​ให้​เอง​มา​ไว้​บน​บ่า

สัญชาตญาณ​ที่​ผิด​ที่สุด​หลัง​จำแนก subdomain เสร็จ​คือ “ใน​เมื่อ​แบ่ง​กล่อง​มา​สวย​แล้ว ก็ทำ agent หนึ่ง​ตัว​ต่อ​หนึ่ง​กล่อง​สิ” — วาด subdomain ห้า​กล่อง แล้ว​ปั้น agent ห้า​ตัว​แม็ป​ตรง​ตัว มัน​ดู​เป็น​ระเบียบ แต่​มัน​คือ version ดิบ​ที่​ข้าม​บันได​ทั้ง​อัน​ไป:

❌ version ดิบ: แม็ป subdomain → agent แบบ​หนึ่ง​ต่อ​หนึ่ง
subdomains_to_agents:
notifications (generic): agent # ผิด — ขั้น 1: ส่งอีเมลตรง ๆ ก็จบ ไม่ต้องมี LLM ด้วยซ้ำ
order-tracking (supporting): agent # ผิด — ขั้น 2: ขั้นตอนตายตัว เป็น workflow ก็พอ
sales-report (generic): agent # ผิด — ขั้น 1: single LLM call สรุปให้พอ
restaurant-ops (supporting): agent # ผิด — ขั้น 2: ปรับคิวตามกติกา = workflow + tool
dispute-resolution (core, ปลายเปิด): agent # ✅ กล่องเดียวที่ผ่านเกณฑ์ขั้น 3 จริง

จาก​ห้า​กล่อง มี​เพียง​กล่อง​เดียว​ที่​ผ่าน​เกณฑ์​ขั้น 3 ส่วน​ที่​เหลือ​ถูก​ยก​เกิน​ความ​จำเป็น​ทั้งหมด ผล​คือ​ระบบ multi-agent ห้า​ตัว​ที่​แพง​กว่า ช้า​กว่า และ​เปราะ​กว่า​การ​มี workflow สาม​ชิ้น​กับ agent ตัว​เดียว When to use multi-agent systems (and when not to) (Anthropic/Claude) เตือน​ไว้​ตรง​กัน: multi-agentMulti-agentระบบ​ที่​มี agent มากกว่า​หนึ่ง​ตัว​ทำงาน​ร่วม​กัน แต่ละ​ตัว​ควร​มี Bounded Context ของ​ตัวเอง​ชัดเจน​และ​เชื่อม​กัน​ผ่าน context map/handoff ที่​ออกแบบ​ไว้ — ไม่ใช่​คำ​ตอบ​สำเร็จรูป​สำหรับ​ทุก​ปัญหา หลาย​งาน​ทำ​ด้วย agent เดียว​หรือ workflow ธรรมดา​ก็​เพียงพอ​และ​เชื่อถือ​ได้​กว่าArchitecture เผา token ราว 3–10 เท่า​ของ​การ​ทำงาน​แบบ agent เดี่ยว และ​เพิ่ม​ภาระ​การ​ประสาน​งาน​มหาศาล มัน​ควร​เป็น ข้อ​ยกเว้น​ที่​พิสูจน์​ด้วย​เหตุผล ไม่ใช่​ค่า​เริ่มต้น

เส้น​แบ่ง​ของ agent ยัง​คง​ลาก​บน​ความ​ไม่​ต่อ​เนื่อง​ของ ภาษา​และ​ความ​ไว้ใจ เหมือน​บท​ที่​แล้ว ไม่ใช่​บน​ตำแหน่ง​งาน​หรือ​ชื่อ subdomain การ​มี subdomain แยก​กัน​ไม่​ได้​แปล​ว่า​ต้อง​มี agent แยก​กัน — บาง subdomain ควร​เป็น workflow, บาง​คู่​ที่​ภาษา​ใกล้​กัน​อาจ​รวม​เป็น agent เดียว และ​หลาย​อัน​ไม่​ควร​มี agent เลย DDD คือ​วินัย​ที่​บอกว่า​อะไร​ควร​อยู่​ใน agent ที่​มี​ขอบเขต​ดี ตัว​เดียว ก่อน ส่วน​การ​แตก​เป็น​หลาย​ตัว​เป็น​เรื่อง​ของ​บท​ที่ 5 ที่​ต้อง​มี​เหตุผล​มีชื่อ​รองรับ

บท​นี้​เพิ่ม​ขั้นตอน​จับ​ต้อง​ได้​ให้​วิทยานิพนธ์: จำแนก subdomain ก่อน แล้ว​ปีน​บันได​จาก​ขั้น​ต่ำ​สุด​ขึ้น​ไป — generic จอด​ที่ single call หรือ​ซื้อ​ของ​สำเร็จ, supporting จอด​ที่ workflow, มี​แต่ core ที่​ปลาย​เปิด​เท่านั้น​ที่​มี​สิทธิ์​เป็น agent และ​ยัง​ต้อง​มี sandbox + guardrails + เงื่อนไข​หยุด​กำกับ อย่า default เป็น “สร้าง agent” และ​อย่า​แม็ป agent หนึ่ง​ตัว​ต่อ1 subdomain แบบ​อัตโนมัติ บท​ถัด​ไป​จะ​ลง​ไป​ใน​กล่อง​ที่​ผ่าน​เกณฑ์ agent จริง แล้ว​แปลง ubiquitous language ของ​มัน​ให้​เป็น system prompt ที่​ระดับ​ความ​สูง​พอดี พร้อม​ชุด tool ที่​ตั้ง​ชื่อ​เป็น namespace ชัด


🔗 อ้างอิง​เพิ่มเติม​ใน DevIQ

เจาะ​ลึก​แนวคิด​ใน​บท​นี้​ต่อ​ได้ที่​คลัง​อ้างอิง DevIQ และ​คอร์ส​ที่​เกี่ยวข้อง:

  • Subdomain — การ​แบ่ง problem space เป็น core/supporting/generic ที่​บท​นี้​ใช้​เลือก​ขั้น​บันได
  • Strategic Design — ภาพ​รวม​การ​ตัดสิน​ใจ​เชิงกลยุทธ์​ของ DDD ที่ “ควร​ลงแรง​ตรง​ไหน” มา​ก่อน “สร้าง​ด้วย​อะไร”
  • คอร์ส Bounded Contexts & Integration — ที่มา​ของ subdomain กับ bounded context ที่​คอร์ส​นี้​ยืม​มา​ใช้​กับ agent

เช็กความเข้าใจ — บทที่ 2

ข้อ 1 / 3

บนบันไดการยกระดับ subdomain แบบ core (ปลายเปิด) กับ generic แม็ปกับขั้นไหน?