上下文压缩三级策略
上下文窗口是有限资源。压缩策略决定哪些信息保留、哪些丢弃、如何压缩——这是 Agent 记忆管理的核心挑战。
为什么需要压缩?
| 问题 | 影响 |
|---|---|
| 上下文窗口有限 | 超长对话会被截断 |
| Token 成本高 | 长上下文 = 高成本 |
| 注意力稀释 | 无关信息干扰 LLM 判断 |
| 检索效率低 | 冗余信息降低检索精度 |
三级压缩策略
第一级:滑动窗口(实时)
保留最近 N 轮对话,丢弃更早的历史。
示例(N=5):
轮次1-3: [丢弃]
轮次4-8: [保留]
轮次9-10: [当前]
| 优点 | 缺点 |
|---|---|
| 实现简单 | 可能丢失重要早期信息 |
| 计算开销小 | 窗口大小需要调优 |
第二级:摘要压缩(会话级)
用 LLM 对旧对话生成摘要,替代原始内容:
原始对话(10轮)→ LLM 摘要 → 保留摘要 + 最近3轮
示例:
摘要: 用户讨论了Python项目,决定用FastAPI框架,
关注了性能优化和部署方案。
最近: [当前对话]
| 优点 | 缺点 |
|---|---|
| 保留关键信息 | 需要额外 LLM 调用 |
| 显著减少 token | 摘要可能丢失细节 |
第三级:重要性加权(智能筛选)
根据重要性分数筛选保留哪些记忆:
| 重要性因素 | 权重 |
|---|---|
| 用户明确提及 | 高 |
| 决策相关 | 高 |
| 情感强度 | 中 |
| 时间近度 | 中 |
| 重复出现 | 中 |
| 闲聊内容 | 低 |
压缩后校验
压缩后需要校验是否破坏关键信息:
| 校验项 | 说明 |
|---|---|
| 关键实体 | 人名、地名、数字是否保留 |
| 决策记录 | 重要决策是否在摘要中 |
| 任务状态 | 当前进度是否清晰 |
| 约束条件 | 用户设定的限制是否保留 |
▶ 对应实操:41-错误Patch回滚-验证-再尝试机制
▶ 对应实操:34-上下文压缩:任务摘要-文件摘要-过程笔记
速记卡(面试闪卡)
Q1:一句话讲清「上下文压缩三级策略」到底是什么?
A:上下文压缩分三级:滑动窗口丢旧、摘要压旧、重要性加权智能筛选保留。
Q2:一、为什么需要压缩 —— 怎么理解?
A:像手机内存有限:上下文窗口是有限资源,超长对话被截断、长上下文=高成本、无关信息稀释注意力、冗余降低检索精度。压缩决定哪些留、哪些丢、怎么压——这是 Agent 记忆管理核心挑战。
Q3:二、第一二级:滑动窗口与摘要 —— 怎么理解?
A:像聊天只留最近几页:第一级滑动窗口保留最近 N 轮、丢更早(简单但可能丢重要早期信息);第二级摘要压缩用 LLM 把旧对话生成摘要替代原文(省 token 但可能丢细节),保留摘要+最近几轮。
Q4:三、第三级:重要性加权 —— 怎么理解?
A:像给记忆打分排序:按用户明确提及、决策相关(高)、情感强度/时间近度/重复出现(中)、闲聊(低)加权筛选保留。压缩后还要校验——关键实体、决策记录、任务状态、约束条件是否还在。
Q5:四、压缩后校验 —— 怎么理解?
A:像搬家用清单核对:压缩后必须校验关键实体(人名/地名/数字)是否保留、决策记录是否在摘要、任务状态是否清晰、约束条件是否还在。避免”压完发现把客户需求压没了”的信息丢失事故。
Q6:核心速记主线有哪些?
-
动机:窗口有限、成本高、注意力稀释、检索低效
-
一级:滑动窗口,保留最近 N 轮,简单但有丢信息风险
-
二级:LLM 摘要压缩,省 token,可能丢细节
-
三级:重要性加权筛选 + 压缩后四项校验
口诀
A:上下文有限度,压缩三级护;
窗口滑近期,摘要代旧处。
重要加权筛,实体决策顾;
压完须校验,信息不迷路。
相关链接
快速问答
| 问题 | 参考答案 |
|---|---|
| 上下文压缩的三级策略? | 第一级:滑动窗口(保留最近N轮);第二级:摘要压缩(LLM生成摘要);第三级:重要性加权(智能筛选) |
| 压缩后如何校验? | 检查关键实体、决策记录、任务状态、约束条件是否保留。避免压缩导致信息丢失 |