Context Budget: ทำให้ Claude Code ไม่ลืมงานกลางทาง — ตัวเลขจริงจากการเขียนบทความชุดนี้ด้วย agent 4 ตัวพร้อมกัน
context window คืองบประมาณ ไม่ใช่พื้นที่ว่าง ทุกไฟล์ที่อ่าน ทุก output ที่พิมพ์ออกมา กินงบก้อนเดียวกัน นี่คือ 6 วิธีที่ใช้จริงตอนสร้าง Terminal พร้อมตัวเลขจริง: subagent 4 ตัวใช้รวมกว่า 1.3 ล้าน token แต่ session หลักรับกลับแค่รายงานสั้นๆ
โดย วรัญชัย ยิ่งคำนึง (Boom) · เผยแพร่ครั้งแรก · ตรวจทานล่าสุด
ถ้าคุณเคยเห็น Claude Code ทำงานได้ดีมากในชั่วโมงแรก แล้วเริ่ม "ลืม" สิ่งที่ตกลงกันไว้ในชั่วโมงที่สาม นั่นไม่ใช่มันขี้ลืม มันคืองบ context ที่ถูกใช้หมดไปกับของที่ไม่จำเป็น
ตอนสร้าง Boom Leverage Terminal ผมต้องจัดการเรื่องนี้ตลอด เพราะงานส่วนใหญ่คืออ่านเอกสารยาว log ยาว และ output ยาว บทความนี้คือวิธีที่ใช้ได้จริง พร้อมตัวเลขจากการเขียนบทความชุดนี้เอง
ทำไม agent ถึง "ลืม" งานกลางทาง?
เอกสาร Claude Code อธิบายไว้ว่ามันส่งบทสนทนาทั้งหมดไปกับทุก request และทุกครั้งที่ใช้เครื่องมือก็ส่งผลของเครื่องมือนั้นไปด้วย เมื่อใกล้ถึงขีดจำกัด ระบบจะ สรุปประวัติเก่า เพื่อคืนพื้นที่ (auto-compaction)

ปัญหาคือการสรุปแปลว่ารายละเอียดหาย ถ้ากฎสำคัญอยู่ในข้อความที่พิมพ์ไว้กลางแชต มันอาจเหลือแค่ประโยคเดียวในบทสรุป — หรือหายไปเลย
วิธีที่ 1: ส่งงานที่ output เยอะไปให้ subagent
นี่คือวิธีที่ได้ผลที่สุด เอกสาร Claude Code แนะนำตรงๆ ให้ส่งงานที่มี output มาก (รัน test, ดึงเอกสาร, ประมวลผล log) ไปให้ subagent เพื่อให้ output อยู่ใน context ของ subagent และส่งกลับมาแค่สรุป
ตัวอย่างจริงจากวันนี้: บทความนำร่อง 4 ชิ้นของ Field Notes ถูกเขียนโดย subagent 4 ตัวพร้อมกัน แต่ละตัวอ่านบทความต้นฉบับ ค้นเว็บตรวจข้อเท็จจริง อ่านโค้ด เรนเดอร์รูปแล้วเปิดดูทีละรูป

| subagent (บทความ) | token ที่ใช้ |
|---|---|
| Stripe + PromptPay | 335,432 |
| Harness คืออะไร | 333,146 |
| อ่านงบ 3 มุม | 328,344 |
| Mux vs Bunny | 322,048 |
| รวม | 1,318,970 |
session หลักที่ประสานงานได้รับกลับมาแค่รายงานสรุปของแต่ละตัว (ไฟล์ที่เขียน รูปที่ได้ ข้อเท็จจริงที่ตรวจ และจุดที่ไม่แน่ใจ) — ทำให้ session หลักยังมีพื้นที่ทำงานต่อได้อีกหลายชั่วโมง

ข้อควรรู้: subagent ไม่ได้ฟรี token ที่มันใช้ยังนับรวมในโควตาหรือค่าใช้จ่ายของคุณ วิธีนี้ประหยัด พื้นที่ของ session หลัก ไม่ได้ประหยัดเงินเสมอไป
วิธีที่ 2: อ่านเฉพาะช่วงที่ต้องใช้
กฎที่ผมเขียนไว้ใน CLAUDE.md ของ lab:

ห้าม
Readsubordinate output >300 lines (ใช้Read limit=+Grep)
อีกข้อที่คล้ายกันคือรายงานประจำวัน: กฎบอกให้อ่านเฉพาะ key ที่ต้องใช้ ห้าม cat ทั้งไฟล์ เพราะไฟล์ JSON ใหญ่ 29 KB และหน้า HTML 44 KB — อ่านทั้งก้อนทุกเช้าคือการเผางบฟรีๆ
วิธีที่ 3: /clear เมื่อเปลี่ยนเรื่อง
เอกสาร Claude Code แนะนำให้ใช้ /clear เมื่อสลับไปงานที่ไม่เกี่ยวกัน เพราะ context เก่าที่ค้างอยู่จะถูกส่งไปกับทุกข้อความถัดไป และ /clear ไม่มีค่าใช้จ่าย ขณะที่ /compact ต้องอ่านบทสนทนาทั้งหมดเพื่อสรุป ซึ่งเป็น request ใหญ่ในตัวเอง ถ้าต้องการสรุปแบบเลือกได้ ใช้ /compact พร้อมบอกว่าให้เก็บอะไร และดูว่าอะไรกินพื้นที่ด้วย /context
วิธีที่ 4: กฎที่ต้องรอดอยู่ในไฟล์ ไม่ใช่ในแชต
กฎที่พิมพ์ไว้กลางบทสนทนามีโอกาสถูกสรุปทิ้ง กฎที่อยู่ใน CLAUDE.md และไฟล์ความจำถูกโหลดใหม่ทุก session ผมจึงมีกติกาเพิ่มว่า หลัง compaction ให้โหลดเอกสารอ้างอิงที่จำเป็นซ้ำ ก่อนทำงานประเภทนั้นต่อ รายละเอียดเรื่องการออกแบบไฟล์กฎอยู่ใน CLAUDE.md ที่ใช้ได้จริง และจุดที่มันเอาไม่อยู่
วิธีที่ 5: ย้ายขั้นตอนเฉพาะงานออกจาก CLAUDE.md
CLAUDE.md ถูกโหลดทุกครั้งแม้งานวันนั้นจะไม่เกี่ยว เอกสาร Claude Code แนะนำให้ย้ายขั้นตอนเฉพาะ (เช่นขั้นตอนรีวิว PR หรือ migration) ไปเป็น skill ที่โหลดเมื่อเรียกใช้ และตั้งเป้าให้ CLAUDE.md ไม่เกิน 200 บรรทัด ใน lab ของผมใช้ตาราง "โหลดไฟล์นี้ก่อนทำงานประเภทนี้" แทนการยัดทุกขั้นตอนไว้ในไฟล์หลัก
วิธีที่ 6: กรอง output ก่อนมันเข้าตา agent
แทนที่จะให้ agent อ่าน log หมื่นบรรทัดเพื่อหา error ให้ hook หรือสคริปต์กรองเหลือเฉพาะบรรทัดที่ต้องดู เอกสาร Claude Code ยกตัวอย่าง hook ที่เปลี่ยนคำสั่งรัน test ให้แสดงเฉพาะส่วนที่ fail — ลด context จากหลักหมื่น token เหลือหลักร้อย ใน lab ผมใช้หลักเดียวกันกับเครื่องมือทุกตัว: output ต้องสั้นพอให้อ่านจบในหน้าจอเดียว
สรุป
context window คืองบประมาณ ใช้กับของที่ต้องใช้จริง: ส่งงานเยอะไปให้ subagent อ่านเฉพาะช่วง ล้างเมื่อเปลี่ยนเรื่อง เก็บกฎไว้ในไฟล์ ย้ายขั้นตอนเฉพาะงานออกจาก CLAUDE.md และกรอง output ก่อนเข้าตา agent ทำครบหกข้อนี้ session เดียวทำงานยาวได้ทั้งวันโดยไม่ลืมว่าตกลงอะไรกันไว้ตอนเช้า