# Body Diff JSON（요청 본문 증분 비교）

## 배경

Claude Code의 MainAgent는 전체 컨텍스트 전송 방식을 채택하고 있어, 매 요청마다 완전한 대화 이력, system prompt, 도구 정의 등의 내용을 포함합니다. 이는 대화가 진행될수록 요청 본문이 점점 커진다는 것을 의미하며, 원시 Body를 직접 확인해서는 "이번에 실제로 무엇이 추가되었는지"를 빠르게 파악하기 어렵습니다.

Body Diff JSON은 바로 이 문제를 해결하기 위한 것입니다. 전후 두 MainAgent 요청의 body를 자동으로 비교하여 증분 부분을 추출함으로써, 이번 요청에서 실제로 추가된 내용을 한눈에 파악할 수 있습니다.

## 동작 원리

1. **연속된 MainAgent 요청 식별**: 현재 요청이 MainAgent 타입이며, 이전 MainAgent 요청이 존재해야 함
2. **필드별 비교**: 요청 본문의 모든 최상위 필드를 순회하며, `_` 접두사의 내부 속성은 건너뜀
3. **스마트 차이 추출**:
   - 추가된 필드: 그대로 표시
   - 삭제된 필드: 표시하지 않음 (일반적으로 이해에 영향 없음)
   - 변경된 필드: 현재 값을 표시
   - `messages` 배열 특별 처리: 추가된 메시지만 표시 (일반 대화는 추가 모드이므로 접두사 메시지는 변경되지 않음)
4. **요청 본문 축소 감지**: 현재 요청 본문이 이전보다 작으면 컨텍스트 잘림 또는 세션 리셋이 발생했음을 의미하며, diff 대신 알림 메시지를 표시

## 일반적인 시나리오

정상적인 대화 라운드에서 Body Diff JSON은 보통 다음만 포함합니다:
- `messages`: 추가된 1~2개의 메시지 (사용자 입력 + 이전 어시스턴트의 응답)

diff에 `system`, `tools`, `model` 등 필드의 변경이 나타나면, 이번 요청에서 설정 변경이 발생했음을 의미하며, 이는 캐시 재구축의 원인이기도 합니다.

## 사용 방법

- Body Diff JSON은 MainAgent 요청의 상세 패널에 표시됩니다
- 제목을 클릭하여 펼치기/접기 가능
- JSON과 Text 두 가지 보기 모드를 지원하며, 원클릭 복사 가능
- 좌측 상단 **CC-Viewer → 전역 설정**에서 "Body Diff JSON 기본 펼치기"를 설정할 수 있습니다
