CCA · Foundations

subagent ไม่สืบทอดบริบท ต้องส่งให้ชัดเจน

แนวคิด

ความเข้าใจผิดที่พบบ่อยคือคิดว่า subagent จะ "รู้" ทุกอย่างที่ agent หลักรู้ ความจริงตรงข้าม subagent เริ่มด้วยบริบทใหม่ที่สดใหม่ ไม่มีประวัติการสนทนาของ parent มาด้วย ช่องทางเดียวที่ข้อมูลจาก parent ส่งถึง subagent คือ prompt string ที่แนบไปตอนเรียกเครื่องมือ spawn

นั่นแปลว่าอะไรก็ตามที่ subagent ต้องใช้ ทั้งพาธไฟล์ ข้อความ error หรือการตัดสินใจที่ตกลงกันไปแล้ว ต้องใส่ลงใน prompt นั้นตรง ๆ สิ่งที่ subagent ได้รับคือ system prompt ของตัวมันเอง กับ prompt ที่ส่งมา ส่วนสิ่งที่มันไม่ได้รับคือประวัติการสนทนาของ parent, ผล tool ของ parent, และ system prompt ของ parent

การแยกบริบทแบบนี้มีข้อดี เพราะ subagent ค้นไฟล์เป็นสิบโดยไม่ทำให้บริบทของ parent บวม parent ได้แค่ข้อความสรุปสุดท้าย ไม่ใช่ทุกไฟล์ที่ subagent อ่าน แต่ข้อแลกคือเราต้องตั้งใจส่งบริบทเข้าไปเอง

ทำไมสำคัญ

ถ้าลืมส่งบริบทที่จำเป็น subagent จะทำงานบนสมมติฐานที่ผิด เช่น coordinator วิเคราะห์ไปแล้วว่าไฟล์ไหนมีปัญหา แต่ถ้าไม่ได้บอกพาธนั้นใน prompt subagent จะเริ่มค้นใหม่ตั้งแต่ต้น เสียเวลาและ token ซ้ำในสิ่งที่ทำไปแล้ว

เมื่อส่งข้อมูลระหว่าง agent ควรใช้รูปแบบข้อมูลที่มีโครงสร้าง แยกเนื้อหาออกจาก metadata เช่น URL แหล่งที่มา ชื่อเอกสาร หรือเลขหน้า เพื่อรักษาการอ้างอิงต้นทางไว้ ตัวอย่างชัดคือเวลาส่งผลค้นเว็บและผลวิเคราะห์เอกสารให้ agent สังเคราะห์ ถ้าปนเนื้อหากับที่มาเข้าด้วยกันเป็นก้อนเดียว agent สังเคราะห์จะอ้างอิงแหล่งไม่ได้ตอนเขียนรายงาน

อีกจุดที่ควรออกแบบคือ prompt ของ coordinator ควรระบุ "เป้าหมายและเกณฑ์คุณภาพ" มากกว่าจะสั่งเป็นขั้นตอนละเอียดทีละก้าว เพราะการบอกเป้าหมายเปิดให้ subagent ปรับตัวเข้ากับสิ่งที่มันค้นพบระหว่างทาง ขณะที่ขั้นตอนตายตัวจะบีบให้มันเดินตามแม้สถานการณ์เปลี่ยน

ตัวอย่าง

{
  "goal": "สรุปผลกระทบของ AI ต่ออุตสาหกรรมดนตรี",
  "findings": [
    {
      "claim": "รายได้สตรีมมิงโต 12% ในปี 2024",
      "source_url": "https://example.org/report",
      "document": "Music Industry Report 2024",
      "page": 8
    }
  ]
}

การแยก claim ออกจาก source_url และ document ทำให้ agent ปลายทางอ้างอิงต้นทางได้ครบตอนสังเคราะห์

เช็คความเข้าใจ

ช่องทางเดียวที่บริบทจาก agent หลักส่งถึง subagent คืออะไร

ทำไมจึงควรส่งบริบทระหว่าง agent เป็นข้อมูลที่มีโครงสร้างแยกเนื้อหาออกจาก metadata

อ่านต่อ