Boom Field Lab

Context Budget: ทำให้ Claude Code ไม่ลืมงานกลางทาง — ตัวเลขจริงจากการเขียนบทความชุดนี้ด้วย agent 4 ตัวพร้อมกัน

context window คืองบประมาณ ไม่ใช่พื้นที่ว่าง ทุกไฟล์ที่อ่าน ทุก output ที่พิมพ์ออกมา กินงบก้อนเดียวกัน นี่คือ 6 วิธีที่ใช้จริงตอนสร้าง Terminal พร้อมตัวเลขจริง: subagent 4 ตัวใช้รวมกว่า 1.3 ล้าน token แต่ session หลักรับกลับแค่รายงานสั้นๆ

โดย วรัญชัย ยิ่งคำนึง (Boom) · เผยแพร่ครั้งแรก · ตรวจทานล่าสุด

ห้องเก็บเอกสารมืดที่มีชั้นวางแฟ้มเรียงยาว แสงไฟส่องเฉพาะจุด พร้อมข้อความ Context คืองบ ไม่ใช่พื้นที่ว่าง

ถ้าคุณเคยเห็น Claude Code ทำงานได้ดีมากในชั่วโมงแรก แล้วเริ่ม "ลืม" สิ่งที่ตกลงกันไว้ในชั่วโมงที่สาม นั่นไม่ใช่มันขี้ลืม มันคืองบ context ที่ถูกใช้หมดไปกับของที่ไม่จำเป็น

ตอนสร้าง Boom Leverage Terminal ผมต้องจัดการเรื่องนี้ตลอด เพราะงานส่วนใหญ่คืออ่านเอกสารยาว log ยาว และ output ยาว บทความนี้คือวิธีที่ใช้ได้จริง พร้อมตัวเลขจากการเขียนบทความชุดนี้เอง

ทำไม agent ถึง "ลืม" งานกลางทาง?

เอกสาร Claude Code อธิบายไว้ว่ามันส่งบทสนทนาทั้งหมดไปกับทุก request และทุกครั้งที่ใช้เครื่องมือก็ส่งผลของเครื่องมือนั้นไปด้วย เมื่อใกล้ถึงขีดจำกัด ระบบจะ สรุปประวัติเก่า เพื่อคืนพื้นที่ (auto-compaction)

แผนภาพชั้นของสิ่งที่กิน context: output จากเครื่องมือเป็นชั้นใหญ่สุด, บทสนทนา, ไฟล์กฎ CLAUDE.md และ MEMORY.md, system prompt และเครื่องมือ
สิ่งที่อยู่ใน context ของทุก request · ชั้นที่โตเร็วที่สุดในงานจริงคือ output จากเครื่องมือ (ไฟล์ที่อ่าน, ผลคำสั่ง, ผลค้นเว็บ)

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

วิธีที่ 1: ส่งงานที่ output เยอะไปให้ subagent

นี่คือวิธีที่ได้ผลที่สุด เอกสาร Claude Code แนะนำตรงๆ ให้ส่งงานที่มี output มาก (รัน test, ดึงเอกสาร, ประมวลผล log) ไปให้ subagent เพื่อให้ output อยู่ใน context ของ subagent และส่งกลับมาแค่สรุป

ตัวอย่างจริงจากวันนี้: บทความนำร่อง 4 ชิ้นของ Field Notes ถูกเขียนโดย subagent 4 ตัวพร้อมกัน แต่ละตัวอ่านบทความต้นฉบับ ค้นเว็บตรวจข้อเท็จจริง อ่านโค้ด เรนเดอร์รูปแล้วเปิดดูทีละรูป

กราฟแท่ง token ที่ subagent แต่ละตัวใช้: บทความ payments 335,432, harness 333,146, งบการเงิน 328,344, video hosting 322,048 รวม 1,318,970
token ที่ subagent แต่ละตัวใช้ตามรายงานการใช้งานเมื่อจบงาน · 27 ก.ย. 2026 · ทั้งหมดนี้ไม่ได้เข้า context ของ session หลัก
subagent (บทความ)token ที่ใช้
Stripe + PromptPay335,432
Harness คืออะไร333,146
อ่านงบ 3 มุม328,344
Mux vs Bunny322,048
รวม1,318,970

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

แผนภาพ: session หลักส่งงานให้ subagent, subagent อ่านไฟล์ ค้นเว็บ และเรนเดอร์รูปใน context ของตัวเอง แล้วส่งกลับแค่รายงานสรุป
รูปแบบการแยกงาน: ของเยอะอยู่ที่ subagent ของสรุปกลับมาที่ session หลัก

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

วิธีที่ 2: อ่านเฉพาะช่วงที่ต้องใช้

กฎที่ผมเขียนไว้ใน CLAUDE.md ของ lab:

การ์ดกฎจริงจาก CLAUDE.md: ห้าม Read subordinate output เกิน 300 lines ให้ใช้ Read limit และ Grep
กฎจริงในหัวข้อ Context budget ของ CLAUDE.md ใน lab repo · ตรวจเมื่อ 27 ก.ย. 2026

ห้าม Read subordinate 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 เดียวทำงานยาวได้ทั้งวันโดยไม่ลืมว่าตกลงอะไรกันไว้ตอนเช้า

BOOM FIELD LAB

อยากเห็นว่าเครื่องมือพวกนี้ประกอบร่างเป็น Terminal จริงได้ยังไง?

Workshop 60 นาที — ดูการทำงานจริงบนหน้าจอ พร้อม workbook ให้ลงมือตาม ไม่ใช่สไลด์ทฤษฎี