你好,我是茂林,一个AI爱好者,最近一直在折腾OpenClaw/Hermes,踩过老多坑了。我把踩过的坑整理出来,帮你少走弯路。
解决什么问题
智能体做长任务,上下文越来越长,很快就触发 context too large 错误,任务中断。这篇文章给你讲五种实用的上下文压缩方法,从轻量到重度,不同场景用不同方法,解决溢出问题。
什么是上下文压缩
简单说:把长对话历史精简成摘要,去掉废话,保留关键信息,腾出 tokens 空间,让任务能继续往下做。
现在大模型上下文窗口虽然越来越大,但做长任务还是会满,压缩是必备技能。
五种压缩方法(从轻到重)
方法一:摘要压缩(推荐,最常用)
把最近 N 轮对话总结成一段摘要,替换原始长对话。
操作方式:
请帮我做上下文摘要压缩:总结目前已完成的工作、关键结论、下一步计划,保留所有重要信息,精简措辞。
优点:保留信息多,压缩比适中,一般能压掉 50%-70% 空间
缺点:会丢失一些细节,不重要的任务才丢
适用场景:大多数长任务中途压缩,继续做
方法二:分层过滤
只保留:
- 初始任务要求
- 最近 5-10 轮对话
- 关键结论和决策
去掉中间过程性对话、试错记录、重复讨论。
操作方式:
请分层过滤上下文:保留任务目标、最终结论、最近 5 轮,删除中间试错过程。
优点:压缩比大,操作简单,保留核心信息
缺点:早期细节可能丢
适用场景:任务接近尾声,只剩收尾工作
方法三:核心记忆抽离
把重要的规则、决策、结论抽出来放到长效记忆里,上下文里只留索引,不用放全文。
操作方式:
请把本次对话中的重要结论和规则抽离出来,保存到核心记忆,上下文只保留索引引用。
优点:一次抽离,后续一直能用,不占当前上下文空间
缺点:需要记忆系统支持, Hermes/OpenClaw 都有,纯 API 对话没有
适用场景:多会话长周期项目
方法四:滚动窗口
只保留最近 N 轮,直接扔掉更早的。最简单粗暴。
操作方式:
请只保留最近 8 轮对话,更早的删掉。
优点:最简单,压缩比最大
缺点:容易丢重要早期信息
适用场景:对话连续性强,早期信息已经没用了(比如聊天唠嗑)
方法五:语义检索压缩
把整个上下文做向量索引,只召回和当前问题最相关的片段,扔掉不相关的。
优点:智能,只保留相关的,压缩比大还不丢关键信息
缺点:需要向量检索支持,配置稍微复杂一点
适用场景:特别长的对话,几万 tokens 那种
不同场景选什么方法
| 场景 | 推荐方法 | 压缩比 |
|---|---|---|
| 一般长任务中途 | 方法一:摘要压缩 | 50%-70% |
| 任务快做完了,挤一挤收尾 | 方法二:分层过滤 | 60%-80% |
| 跨会话长周期项目 | 方法三:核心记忆抽离 | 不限,永久节省 |
| 纯聊天,早期信息没用了 | 方法四:滚动窗口 | 70%-90% |
| 特别长,几万 tokens | 方法五:语义检索压缩 | 80%-90% |
实战操作模板(直接复制用)
摘要压缩模板
现在上下文 tokens 快满了,请帮我做摘要压缩:
1. 总结任务目标
2. 总结已完成工作和关键结论
3. 总结下一步计划
4. 用精简语言表达,去掉所有无关内容
5. 替换原来的长上下文,让任务能继续进行
分层过滤模板
请帮我做分层过滤压缩:
- 保留:原始任务目标、最终决策结论、最近 5 轮对话
- 删除:中间试错过程、重复讨论、已经放弃的方案
- 保持任务可继续进行
常见问题
Q:压缩会丢信息吗?
A:会丢不重要的过程信息,重要结论不会丢。好的压缩方法是"丢过程,保结论"。
Q:多久需要压缩一次?
A:用到 80% 上下文窗口就可以压缩一次,不要等满了报错再压。
Q:那个方法最好?
A:摘要压缩通用性最好,大多数场景用它就够了。别的方法是特殊场景用。
总结
- 上下文压缩是长任务必备技能,不用买更大上下文模型也能继续干活
- 从轻到重五种方法,不同场景选对就行
- 摘要压缩够用 80% 场景,上面模板直接复制用