# Body Diff JSON (การเปรียบเทียบส่วนเพิ่มของเนื้อหาคำร้องขอ)

## ภูมิหลัง

MainAgent ของ Claude Code ใช้กลไกการส่งบริบทแบบเต็ม — ทุกคำร้องขอจะมีประวัติการสนทนาทั้งหมด, system prompt, คำจำกัดความเครื่องมือ ฯลฯ ซึ่งหมายความว่าเมื่อการสนทนาดำเนินไป เนื้อหาคำร้องขอจะใหญ่ขึ้นเรื่อยๆ การดู Body ดิบโดยตรงจึงยากที่จะระบุได้อย่างรวดเร็วว่า "รอบนี้เพิ่มอะไรมาบ้าง"

Body Diff JSON ถูกสร้างขึ้นเพื่อแก้ปัญหานี้: มันเปรียบเทียบ body ของคำร้องขอ MainAgent สองรายการที่ต่อเนื่องกันโดยอัตโนมัติ สกัดส่วนที่เพิ่มขึ้น ให้คุณเห็นเนื้อหาที่เพิ่มจริงในคำร้องขอนี้ได้ทันที

## หลักการทำงาน

1. **ระบุคำร้องขอ MainAgent ที่ต่อเนื่องกัน**: คำร้องขอปัจจุบันต้องเป็นประเภท MainAgent และต้องมีคำร้องขอ MainAgent ก่อนหน้า
2. **เปรียบเทียบทีละฟิลด์**: วนผ่านฟิลด์ระดับบนสุดทั้งหมดของเนื้อหาคำร้องขอ ข้ามคุณสมบัติภายในที่มีคำนำหน้า `_`
3. **การสกัดความแตกต่างอัจฉริยะ**:
   - ฟิลด์ที่เพิ่มใหม่: แสดงโดยตรง
   - ฟิลด์ที่ถูกลบ: ไม่แสดง (โดยปกติไม่ส่งผลต่อความเข้าใจ)
   - ฟิลด์ที่เปลี่ยนแปลง: แสดงค่าปัจจุบัน
   - การจัดการพิเศษสำหรับอาร์เรย์ `messages`: แสดงเฉพาะข้อความที่เพิ่มใหม่ (เพราะในการสนทนาปกติเป็นโหมดเพิ่มต่อท้าย ข้อความนำหน้าไม่เปลี่ยนแปลง)
4. **การตรวจจับเนื้อหาที่เล็กลง**: หากเนื้อหาคำร้องขอปัจจุบันเล็กกว่าก่อนหน้า แสดงว่าเกิดการตัดทอนบริบทหรือรีเซ็ตเซสชัน ในกรณีนี้จะแสดงข้อความแจ้งเตือนแทน diff

## สถานการณ์ทั่วไป

ในรอบการสนทนาปกติ Body Diff JSON มักจะมีเพียง:
- `messages`: ข้อความใหม่ 1~2 รายการ (อินพุตของผู้ใช้ + คำตอบของผู้ช่วยจากรอบก่อนหน้า)

หากคุณเห็นการเปลี่ยนแปลงของฟิลด์ `system`, `tools`, `model` ฯลฯ ใน diff แสดงว่ารอบนี้มีการเปลี่ยนแปลงการตั้งค่า ซึ่งมักเป็นสาเหตุของการสร้างแคชใหม่ด้วย

## วิธีใช้

- Body Diff JSON แสดงในแผงรายละเอียดของคำร้องขอ MainAgent
- คลิกที่หัวข้อเพื่อขยาย/ยุบ
- รองรับสองโหมดการดู: JSON และ Text รวมถึงการคัดลอกด้วยคลิกเดียว
- ที่มุมซ้ายบนใน **CC-Viewer → การตั้งค่าทั่วไป** สามารถตั้งค่า "ขยาย Body Diff JSON เป็นค่าเริ่มต้น" ได้
