# OpenHands Context Condensation for More Efficient AI Agents

> 原文链接：https://openhands.dev/blog/openhands-context-condensensation-for-more-efficient-ai-agents
> 作者/来源：Calvin Smith / OpenHands
> 阅读日期：2026-04-02

## 一句话总结
OpenHands 通过智能 context condensation 机制，在对话历史增长时对旧信息进行战略性摘要压缩，实现了线性而非二次方的 context 增长，在几乎不损失解题能力的前提下将 API 成本降低最多 2 倍。

## 核心论点

文章揭示了 AI agent 开发中的一个根本性挑战：随着对话不断增长，agent 会变得更慢、更低效、更昂贵。这造成三个关键问题：响应速度下降、API 成本上升、以及由于大量不相关历史 context 导致 LLM 效果下降。这不仅仅是成本问题，更是性能问题——过长的 context 会让模型"迷失"在无关信息中。

OpenHands 的解决方案是引入一个智能 context condenser（上下文压缩器）。其核心设计思路是：不丢弃历史，而是对旧的交互进行策略性摘要，同时保持最近的对话完整。压缩器会编码保留关键信息：用户目标（user objectives）、agent 进度（agent progress）、以及剩余任务（remaining tasks）。对于软件开发任务，还会特别保留关键文件路径、失败的测试等技术细节。

技术上，condenser 在对话达到特定大小阈值时触发，并且需要平衡压缩收益与 prompt caching 效率。没有 condensation 时，context 管理的开销随时间呈二次方增长；使用 condensation 后，通过战略性摘要和缓存优化，实现了线性增长。在 SWE-bench Verified 基准测试中，condensation 方案达到了 54% 的解题率（baseline 为 53%），同时激活后每轮 API 成本降低最多 2 倍。

## 关键概念
- **Context Condensation（上下文压缩）**：在 agent 运行过程中对累积的对话历史进行智能摘要，保留关键信息、丢弃冗余细节的技术
- **Bounded Conversation Size（有界对话大小）**：通过 condensation 将对话长度控制在一个上限内，避免无限增长
- **二次方 vs 线性扩展**：无 condensation 时 context 成本随任务复杂度呈 O(n²) 增长，condensation 后降为 O(n)
- **Prompt Caching 与 Condensation 的权衡**：触发 condensation 会使缓存失效，因此需要选择合适的触发阈值来平衡两者
- **信息优先级**：压缩时保留用户目标和 agent 进度 > 技术细节（文件路径、失败测试）> 一般历史对话

## 实践建议
1. 在设计长时间运行的 agent 时，必须考虑 context 增长问题——不能假设"越多 context 越好"
2. Context condensation 的触发阈值需要根据具体 LLM 的 prompt caching 机制来调优，过于频繁的压缩可能浪费缓存
3. 压缩摘要应重点保留任务目标和进度信息，而非对话细节
4. 对于软件开发场景，关键文件路径和失败测试信息是必须保留的技术元数据
5. 可以通过 SWE-bench 等基准测试来验证 condensation 策略不会显著降低 agent 能力

## 独到观点
这篇文章的独特价值在于提供了一个**事后（post-hoc）**的 context 管理方案，与事前控制输入的方法形成互补。特别值得注意的是其关于 prompt caching 与 condensation 之间权衡的讨论——这是一个容易被忽视但在实际部署中至关重要的工程考量。另外，54% vs 53% 的解题率对比说明了一个重要事实：适当的信息压缩不仅不会伤害性能，反而可能因为减少了噪音而略微提升表现。

## 与其他文章的关联
- 与 **HumanLayer Backpressure**（#13）形成"事前/事后"的互补：backpressure 在源头控制输入量，condensation 在事后压缩累积的 context——理想的 agent 系统应该同时采用两种策略
- 与 **Claude Code Best Practices**（#23）相关：长任务中的 context 管理是最佳实践的重要组成部分
- 与 **Anthropic Claude Code Sandboxing**（#16）相关：在沙箱环境中运行的 agent 通常执行更长的任务序列，更需要 context condensation
- 与 **Fowler Quality with Agents**（#20）相关：context 管理直接影响 agent 在长时间任务中的代码质量表现
