File size: 7,767 Bytes
852e525
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
# 专业版模型 1.5/2.5 Pro 自动对齐与分流测试 (v4.1.32)

## 测试目标

验证三层渐进式上下文压缩功能的正确性、稳定性和成本优化效果。

## 前置准备

1. **启动应用**```bash
   cd /Users/lbjlaq/Desktop/xin
   npm run tauri dev
   ```

2. **启用调试日志**```bash
   export RUST_LOG=debug
   ```

3. **准备测试账号**   - 至少 1 个 Google 账号(用于 Gemini API)
   - 确保账号有足够配额

## 测试场景

### 场景 1:Layer 1 工具消息裁剪 (60% 压力)

**目标**:验证工具消息智能裁剪功能

**步骤**1. 使用 Claude Code CLI 或 Cherry Studio
2. 发起一个需要多次工具调用的任务(如代码搜索、文件读取)
3. 持续对话直到触发 60% 上下文压力

**预期结果**- 日志中出现 `[Layer-1] Tool trimming triggered`
- 保留最近 5 轮工具交互
- 删除更早的工具消息
- **无 400 错误**
- **响应速度正常**

**验证命令**```bash
# 查看日志
tail -f ~/Library/Application\ Support/com.antigravity.tools/logs/antigravity.log | grep "Layer-1"
```

---

### 场景 2:Layer 2 Thinking 压缩 (75% 压力)

**目标**:验证 Thinking 内容压缩 + 签名保留

**步骤**1. 使用 Claude 4.5 Opus/Sonnet Thinking 模型
2. 发起复杂推理任务(如代码重构、算法设计)
3. 持续对话直到触发 75% 上下文压力

**预期结果**- 日志中出现 `[Layer-2] Thinking compression triggered`
- Thinking 块文本被压缩为 "..."
- **`signature` 字段完整保留**
- 最近 4 条消息不被压缩
- **无 400 签名错误**

**验证命令**```bash
# 查看签名保留情况
tail -f ~/Library/Application\ Support/com.antigravity.tools/logs/antigravity.log | grep -E "(Layer-2|signature)"
```

---

### 场景 3:Layer 3 Fork 会话 + XML 摘要 (90% 压力)

**目标**:验证 XML 摘要生成和会话 Fork

**步骤**1. 使用任意模型进行超长对话
2. 持续对话直到触发 90% 上下文压力

**预期结果**- 日志中出现 `[Layer-3] Critical context pressure`
- 调用 `gemini-2.5-flash-lite` 生成 XML 摘要
- 创建新的消息序列:`[User: XML摘要] + [Assistant: 确认] + [用户最新消息]`
- **压缩率 86-97%**
- **无 Prompt Cache 破坏**
- **签名链完整**

**验证命令**```bash
# 查看 Layer 3 触发和摘要生成
tail -f ~/Library/Application\ Support/com.antigravity.tools/logs/antigravity.log | grep -E "(Layer-3|XML summary|Fork)"
```

---

### 场景 4:渐进式触发测试

**目标**:验证三层压缩的渐进式触发机制

**步骤**1. 从空对话开始
2. 持续对话,观察压缩层级的触发顺序

**预期结果**- 触发顺序:Layer 1 (60%) → Layer 2 (75%) → Layer 3 (90%)
- 每次压缩后重新估算 Token 用量
- 日志中清晰记录每层的触发和效果

**验证命令**```bash
# 查看所有层级的触发
tail -f ~/Library/Application\ Support/com.antigravity.tools/logs/antigravity.log | grep -E "Layer-[123]"
```

---

### 场景 5:错误处理测试

**目标**:验证 Layer 3 失败时的容错机制

**步骤**1. 临时禁用 Gemini 账号或网络
2. 触发 Layer 3 压缩

**预期结果**- Layer 3 失败时返回 `BAD_REQUEST` 错误
- 错误消息友好:`Context too long and automatic compression failed`
- 提示用户使用 `/compact` 或切换模型

**验证命令**```bash
# 查看错误处理
tail -f ~/Library/Application\ Support/com.antigravity.tools/logs/antigravity.log | grep -E "(Layer-3.*failed|BAD_REQUEST)"
```

---

## 性能验证

### Token 成本节省

**测试方法**1. 记录压缩前的 Token 用量(从日志中提取)
2. 记录压缩后的 Token 用量
3. 计算节省比例

**预期结果**- Layer 1: 60-90% 节省
- Layer 2: 70-95% 节省
- Layer 3: 86-97% 节省

### 响应速度

**测试方法**1. 使用 `time` 命令测量响应时间
2. 对比压缩前后的响应速度

**预期结果**- Layer 1/2: 响应速度无明显变化
- Layer 3: 首次摘要生成可能增加 2-5 秒,后续请求正常

---

## 兼容性测试

### 客户端兼容性

测试以下客户端:
- ✅ Claude Code CLI
- ✅ Cherry Studio
- ✅ Cursor
- ✅ Python OpenAI SDK
- ✅ Kilo Code

### 模型兼容性

测试以下模型:
- ✅ Gemini 3 Flash
- ✅ Gemini 3 Pro High
- ✅ Claude 4.5 Sonnet
- ✅ Claude 4.5 Opus Thinking

---

## 回归测试

### 签名链完整性

**验证点**- Layer 2 压缩后签名不丢失
- Layer 3 Fork 后签名正确恢复
- 无 400 签名错误

### 工具调用链

**验证点**- 工具调用在压缩后仍能正常工作
- 工具结果正确传递
- 无工具调用中断

---

## 日志分析

### 关键日志模式

```bash
# Layer 1 触发
grep "Layer-1.*Tool trimming" antigravity.log

# Layer 2 触发
grep "Layer-2.*Thinking compression" antigravity.log

# Layer 3 触发
grep "Layer-3.*Fork successful" antigravity.log

# Token 节省统计
grep "Compression result.*saved" antigravity.log
```

---

## 测试报告模板

```markdown
## 测试结果

### 场景 1: Layer 1 工具消息裁剪
- [ ] 触发成功
- [ ] 保留最近 5 轮
- [ ] 无 400 错误
- [ ] 响应速度正常

### 场景 2: Layer 2 Thinking 压缩
- [ ] 触发成功
- [ ] 签名完整保留
- [ ] 无签名错误
- [ ] 压缩率达标

### 场景 3: Layer 3 Fork 会话
- [ ] 触发成功
- [ ] XML 摘要生成
- [ ] 压缩率 86-97%
- [ ] 无 Cache 破坏

### 场景 4: 渐进式触发
- [ ] 顺序正确 (1→2→3)
- [ ] Token 重新估算
- [ ] 日志清晰

### 场景 5: 错误处理
- [ ] 失败时友好提示
- [ ] 无崩溃
- [ ] 建议明确

### 性能验证
- Token 节省: ____%
- 响应速度: 正常/慢 (___ms)

### 兼容性
- Claude Code: ✅/❌
- Cherry Studio: ✅/❌
- Cursor: ✅/❌
- Python SDK: ✅/❌

### 回归测试
- 签名链完整: ✅/❌
- 工具调用正常: ✅/❌

## 问题记录

(记录测试中发现的问题)

## 结论

(总体评价和建议)
```

---

## 快速测试脚本

```bash
#!/bin/bash
# 快速测试三层压缩

echo "=== 测试 Layer 1 (工具裁剪) ==="
# 使用 Claude Code 执行多次文件搜索
claude "请搜索项目中所有 .rs 文件,然后读取其中 5 个文件的内容"

echo "=== 测试 Layer 2 (Thinking 压缩) ==="
# 使用 Thinking 模型进行复杂推理
claude --model claude-opus-4-5-thinking "请详细分析这段代码的性能瓶颈并提出优化方案"

echo "=== 测试 Layer 3 (Fork 会话) ==="
# 超长对话触发 Fork
for i in {1..20}; do
  claude "继续上一个话题,请提供更多细节 (第 $i 轮)"
done

echo "=== 查看日志 ==="
tail -100 ~/Library/Application\ Support/com.antigravity.tools/logs/antigravity.log | grep -E "Layer-[123]"
```

---

## 注意事项

1. **测试环境**:确保在干净的环境中测试,避免其他因素干扰
2. **日志级别**:必须设置 `RUST_LOG=debug` 才能看到详细日志
3. **账号配额**:测试前确保账号有足够配额
4. **备份数据**:测试前备份重要数据
5. **版本确认**:确认运行的是 v4.1.32 版本

---

## 问题排查

### 问题 1:Layer 1 未触发
- 检查对话是否达到 60% 压力
- 查看 Token 估算是否准确

### 问题 2:Layer 2 签名丢失
- 检查 `compress_thinking_preserve_signature` 函数
- 验证签名提取逻辑

### 问题 3:Layer 3 摘要失败
- 检查 Gemini 账号是否可用
- 验证 `call_gemini_sync` 函数
- 查看上游 API 错误

### 问题 4:400 错误
- 检查签名链是否完整
- 验证工具调用参数
- 查看上游 API 响应

---

## 联系方式

如有问题,请在 GitHub 提 Issue:
https://github.com/lbjlaq/Antigravity-Manager/issues