# 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"
