跳转到内容

上下文压缩策略:长程 Agent 的 Token 优化

上下文压缩策略:长程 Agent 的 Token 优化

1. 概念定义

上下文压缩(Context Summarization)是一种在 Agent 对话接近模型上下文窗口限制时,自动压缩历史消息以释放 Token 空间的技术。它使 Agent 能够维持长程任务(如深度研究、多步数据管道)而不超出模型的最大 Token 限制。

核心思想:将不再需要精确回忆的历史对话压缩为摘要,同时保留近期消息的完整性。

2. 触发策略

上下文压缩的触发方式有三种:

策略触发条件优点缺点
Token 阈值总 Token 数超过 N精确控制 Token 使用需要准确计算 Token 数
消息数量消息数超过 M 条实现简单不考虑消息长度差异
占比阈值当前 Token 数占最大输入的 N%自适应不同模型的上下文窗口实现稍复杂

3. 压缩算法

典型的压缩流程:

3.1 保留策略(Keep Policy)

保留策略决定哪些消息不参与压缩:

  • 保留最近 N 条消息:确保 Agent 对当前任务有完整上下文
  • 保留系统消息:system prompt 始终不压缩
  • 保留工具调用结果:关键的工具输出(如文件内容)不压缩

3.2 中间结果卸载

对于大型中间结果(如长报告、数据集),不将其保留在对话中,而是写入文件系统。后续需要时通过工具重新读取。

4. 设计权衡

4.1 压缩频率

频繁压缩:Token 使用稳定,但压缩操作本身消耗 Token 和延迟。 延迟压缩:节省压缩开销,但可能在触发后急剧压缩大量历史,丢失细节。

4.2 摘要粒度

粗粒度(“用户要求分析一篇论文”):Token 开销小,但可能丢失关键约束。 细粒度(“用户要求分析论文 X 的方法论部分,重点关注 Y 算法”):保留更多细节,但 Token 开销大。

5. 陷阱与规避

5.1 压缩信息丢失

摘要无法保留所有原始信息,可能导致 Agent 忘记关键约束。

规避

  • 保留关键事实(工具调用结果、用户明确要求)不压缩
  • 压缩前将重要中间结果写入文件系统

5.2 压缩成本

压缩本身需要一次 LLM 调用,消耗 Token 和时间。

规避

  • 使用较小的模型执行压缩任务
  • 批量压缩而非逐条压缩

参考来源