subagent isolation, /compact และการกู้คืนหลัง crash
แนวคิด
เมื่อสำรวจ codebase ใหญ่ output ที่เยอะเยิง เช่น ผลค้นหา log และเนื้อไฟล์ จะท่วม context หลักได้เร็ว มีสามเครื่องมือที่ช่วยจัดการ หนึ่งคือ subagent delegation สองคือ /compact และสามคือการออกแบบ state สำหรับกู้คืนหลัง crash แต่ละอย่างแก้ปัญหาคนละมุมของการจัดการบริบทในงานยาว
subagent delegation คือมอบงานสำรวจที่ verbose ให้ subagent ทำในบริบทแยกของมันเอง เช่น "หาไฟล์เทสต์ทั้งหมด" หรือ "ไล่ dependency ของ refund flow" subagent ค้นในหน้าต่างของมัน แล้วคืนเฉพาะบทสรุปกลับมา output ยิบย่อยจึงอยู่ในบริบทของ subagent ไม่ล้น context หลัก ส่วน agent หลักยังคงโฟกัสอยู่กับการประสานภาพรวมระดับสูง
/compact คือคำสั่งลดการใช้ context ระหว่างเซสชันสำรวจที่ยืดยาว เมื่อ context เริ่มเต็มด้วย output จากการค้น การ compact จะสรุปประวัติให้กระชับลง คืนพื้นที่ให้ทำงานต่อได้ ส่วนการกู้คืนหลัง crash คือให้แต่ละ agent export สถานะไปยังตำแหน่งที่รู้กัน แล้ว coordinator โหลด manifest ตอน resume เพื่อประกอบสถานะกลับ
ทำไมสำคัญ
เอกสาร subagents ของ Claude Code อธิบายว่า subagent ทำงานในหน้าต่าง context ของตัวเอง มี system prompt เฉพาะ สิทธิ์ tool จำกัด และคืนเฉพาะผลสรุปกลับมา ประโยชน์หลักคือการรักษาบริบท คือกันงานสำรวจและงานลงมือออกจากบทสนทนาหลัก เมื่องานเสร็จ context หลักจะไม่บวมด้วยรายละเอียดที่ไม่ถูกอ้างซ้ำ นี่คือเหตุผลที่ subagent isolation เหมาะกับงาน verbose อย่างการรันเทสต์หรือประมวลผล log
เอกสาร costs ของ Claude Code เสริมด้านการจัดการ context อย่างเป็นรูปธรรม มันอธิบาย auto-compaction ที่สรุปประวัติเมื่อใกล้ขีดจำกัด และให้เพิ่มคำสั่งกำกับ compaction ได้ เช่น /compact Focus on code samples and API usage เพื่อบอกว่าตอนสรุปให้เก็บอะไรไว้ นอกจากนี้ยังแนะนำให้ delegate งาน verbose ให้ subagent เพื่อให้ output อยู่ในบริบทของ subagent และคืนแค่บทสรุปกลับมา
สิ่งที่ต้องเข้าใจให้ลึกคือการกู้คืนหลัง crash ต้องออกแบบล่วงหน้า ไม่ใช่หวังให้ resume แล้วทุกอย่างกลับมาเอง แนวคิดคือให้แต่ละ agent export สถานะเป็นโครงสร้างไปที่ตำแหน่งรู้กัน แล้ว coordinator โหลด manifest ตอน resume มาฉีดเข้า prompt ของ agent แนวคิดนี้ตรงกับ multi-session pattern ของ memory tool ที่มีคำเตือน "ASSUME INTERRUPTION" คือ context อาจถูกรีเซ็ตเมื่อไรก็ได้ จึงต้องจดความคืบหน้าลง memory เพื่อไม่ให้งานที่ยังไม่ถูกบันทึกสูญหาย เซสชันใหม่จึง resume ต่อจากสถานะที่เซสชันก่อนบันทึกไว้ได้
ตัวอย่าง
เฟสสำรวจ codebase ใหญ่:
1. agent หลัก → spawn subagent "หา test files ทั้งหมด"
subagent ค้นในบริบทแยก คืนแค่: "พบ 214 ไฟล์ *.test.tsx, รูปแบบวางข้างไฟล์ต้นทาง"
2. context เริ่มเต็ม → /compact Focus on refund flow และ test layout
3. เขียน manifest.json เมื่อจบเฟส:
{ "phase": "explore", "done": ["auth","tests"], "next": ["billing"],
"state_files": ["findings.md"] }
→ ถ้า crash: resume โหลด manifest แล้วไปต่อที่ billing ไม่ต้องสำรวจซ้ำ
เช็คความเข้าใจ
subagent delegation ช่วยจัดการ context ในงานสำรวจ codebase ใหญ่อย่างไร
การกู้คืนหลัง crash ควรออกแบบอย่างไร