← 关联知识节点:上下文压缩体系:microcompact、collapse 与 autocompact
交互工具 · 直觉

上下文压缩 · 前后对照

Agent 修一个 bug,工具结果就吃掉近万 token——窗口眼看要满。压缩分两级:microcompact 只清旧工具输出,推理过程全保留、随时可翻;autocompact 更彻底,把整个历史折叠成一张摘要卡,token 最省,但细节回不来了。切换三档,看窗口占用和会话形态怎么变。

纯前端模拟,预设会话脚本,token 账按预设值累计,零 API、零延迟。

上下文窗口占用

演示窗口 14,000 tok(真实模型几十万~百万)
11,353/ 14,000 tok · 占 81%

窗口已用 81%——再来一两轮大工具就要溢出。真实 harness 会在阈值(约 92%)自动触发压缩,这里你手动切。

帮我修一下 src/api/auth.ts 里的登录超时 bug,超时好像根本没生效26 tok
Read src/api/auth.ts1,850 tok

返回 320 行源码

看完 320 行,先说结论:超时是硬编码的 3 秒,写死在 createServer 里,配置文件的 timeout 字段压根没被读进来。第 47 行 timeout: 3,第 88 行 createServer 调用没传 options——而 config.ts 里明明有 timeout: 10。接下来确认配置文件结构。380 tok
Grep "timeout" src/640 tok

命中 14 处

Read src/config/config.ts2,200 tok

返回 410 行

根因确认:config.timeout 存在且默认 10 秒,但 auth.ts 的 createServer 调用没透传。修复方案:把 config.timeout 接进 createServer 参数,同时删掉硬编码的 3。顺手检查有没有别处也硬编码了超时。320 tok
Edit src/api/auth.ts150 tok

改动 2 处

Bash npm test3,400 tok

88 个测试全过,输出很长

测试全绿,修复完成:超时现在读 config.timeout(默认 10 秒),硬编码 3 秒已删,88 个测试全部通过,没有破坏现有行为。260 tok
顺便把失败自动重试也加上?12 tok
Read src/utils/retry.ts1,600 tok

返回 260 行

retry.ts 已有基础结构(attempt 计数和 sleep),但没有指数退避,也没有上限控制。我来加:最多重试 3 次、指数退避(1s/2s/4s)、重试间打日志,改完跑测试验证。240 tok
Edit src/utils/retry.ts180 tok

改动 3 处

重试逻辑加好了:失败最多重试 3 次,间隔指数退避(1s→2s→4s),每次重试打日志,回归 14 个测试全过。这两轮一共改了 auth.ts 和 retry.ts 两个文件,需要我再检查别的吗?95 tok

注意 token 账本:14 条消息里聊天文字才约 1,300 tok,7 块工具输出占 9,870 tok——Agent 烧窗口的不是话多,是工具结果大。