
关于
当 Agent 会话产生数百万 token 的对话历史时,压缩变得不可避免。朴素方法是激进压缩以最小化每次请求的 token 数量。
name: context-compression description: "当 Agent 会话产生数百万 token 的对话历史时,压缩变得必不可少。朴素方法是激进压缩以最小化每次请求的 token 数。" risk: unknown source: community
上下文压缩策略
当 Agent 会话产生数百万 token 的对话历史时,压缩变得必不可少。朴素方法是激进压缩以最小化每次请求的 token 数。正确的优化目标是每任务 token 数:完成一个任务所消耗的总 token 数,包括压缩丢失关键信息时的重新获取成本。
适用场景
在以下情况下激活此技能:
- Agent 会话超出上下文窗口限制
- 代码库超出上下文窗口(500万+ token 系统)
- 设计对话摘要策略
- 调试 Agent "忘记"修改了哪些文件的情况
- 构建压缩质量评估框架
核心概念
上下文压缩在 token 节省和信息丢失之间进行权衡。存在三种生产就绪的方法:
-
锚定迭代摘要:维护结构化、持久的摘要,包含会话意图、文件修改、决策和后续步骤的明确章节。当压缩触发时,仅摘要新截断的范围并与现有摘要合并。结构通过为特定信息类型分配专用章节来强制保留。
-
不透明压缩:生成针对重建保真度优化的压缩表示。实现最高压缩比(99%+)但牺牲可解释性。无法验证保留了什么。
-
再生式完整摘要:每次压缩时生成详细的结构化摘要。产生可读输出,但由于完全再生而非增量合并,可能在重复压缩周期中丢失细节。
关键洞察:结构强制保留。专用章节充当检查清单,摘要器必须填充,防止信息静默漂移。
详细主题
为什么每任务 Token 数很重要
传统压缩指标针对每请求 token 数。这是错误的优化方向。当压缩丢失关键细节如文件路径或错误消息时,Agent 必须重新获取信息、重新探索方法,浪费 token 恢复上下文。
正确的指标是每任务 token 数:从任务开始到完成消耗的总 token 数。一种压缩策略节省 0.5% 更多 token 但导致 20% 更多重新获取,总体成本更高。
制品轨迹问题
制品轨迹完整性是所有压缩方法中最薄弱的维度,在评估中得分 2.2-2.5(满分 5.0)。即使具有明确文件章节的结构化摘要也难以在长会话中维护完整的文件追踪。
编码 Agent 需要知道:
- 创建了哪些文件
- 修改了哪些文件以及更改了什么
- 读取但未更改的文件
- 函数名、变量名、错误消息
这个问题可能需要超越通用摘要的专门处理:单独的制品索引或 Agent 脚手架中的显式文件状态追踪。
结构化摘要章节
有效的结构化摘要包含明确的章节:
## Session Intent
[What the user is trying to accomplish]
## Files Modified
- auth.controller.ts: Fixed JWT token generation
- config/redis.ts: Updated connection pooling
- tests/auth.test.ts: Added mock setup for new config
## Decisions Made
- Using Redis connection pool instead of per-request connections
- Retry logic with exponential backoff for transient failures
## Current State
- 14 tests passing, 2 failing
- Remaining: mock setup for session service tests
## Next Steps
1. Fix remaining test failures
2. Run full test suite
3. Update documentation
这种结构防止文件路径或决策的静默丢失,因为每个章节必须被明确处理。
压缩触发策略
何时触发压缩与如何压缩同样重要:
| 策略 | 触发点 | 权衡 | |----------|---------------|-----------| | 固定阈值 | 70-80% 上下文利用率 | 简单但可能过早压缩 | | 滑动窗口 | 保留最近 N 轮 + 摘要 | 可预测的上下文大小 | | 基于重要性 | 先压缩低相关性部分 | 复杂但保留信号 | | 任务边界 | 在逻辑任务完成时压缩 | 干净的摘要但时机不可预测 |
对于大多数编码 Agent 用例,带结构化摘要的滑动窗口方法在可预测性和质量之间提供最佳平衡。
基于探针的评估
传统指标如 ROUGE 或嵌入相似度无法捕获功能性压缩质量。一个摘要可能在词汇重叠上得分很高,却遗漏了 Agent 需要的那个文件路径。
基于探针的评估通过在压缩后提问来直接测量功能质量:
| 探针