真实面经题目 · 原创解析
Agent 上下文压缩应该在什么时候触发,如何在 token 预算、信息损失和任务连续性之间取舍?
这题考上下文压缩的运行时策略:触发点不能只看 token 快满,而要结合任务阶段、信息密度、工具结果、记忆状态、失败风险和可恢复性来决定。
真实面经题目 · 原创解析
这题考上下文压缩的运行时策略:触发点不能只看 token 快满,而要结合任务阶段、信息密度、工具结果、记忆状态、失败风险和可恢复性来决定。
Agent 上下文压缩不应该等到模型窗口溢出才被动触发,而应该是运行时的预算管理策略。我会把触发条件分成几类:第一类是硬阈值,比如当前上下文达到窗口的 70% 到 85%、预计下一轮工具结果会超预算、或者检索内容和历史消息无法同时放入;第二类是阶段切换,比如需求澄清结束、完成一次工具调用链、生成中间方案、进入执行或总结阶段,此时可以把旧对话压缩成任务状态和决策摘要;第三类是信息密度变化,比如历史里有大量重复确认、日志、长工具输出和低价值闲聊,可以摘要或裁剪;第四类是风险触发,比如模型开始遗漏约束、重复问已确认信息、引用旧状态冲突,说明上下文需要整理而不是继续堆叠。压缩时要保留任务目标、用户约束、关键决策、当前计划、未完成事项、工具结果摘要、引用来源和不可丢失的原文片段;可以丢弃或弱化寒暄、重复推理、过期计划和已确认无效分支。取舍上,压缩能节省 token、降低噪声、改善长会话稳定性,但会损失细节和可追溯性,所以要保留原始消息或 trace 供回查,并给摘要加版本、时间、来源和置信度。一个好的工程方案还会有评估指标:压缩后任务完成率、约束遗漏率、追问重复率、幻觉率、成本延迟、摘要可恢复性和人工抽检质量。
最浅的回答是“token 不够就压缩”,但线上 Agent 往往在溢出前就已经被噪声、过期状态和长工具结果拖累。更好的触发点应该同时考虑当前 token 占用、下一步预计输入、任务阶段、上下文质量和失败迹象。压缩是为了让模型看到更正确的状态,而不仅是塞进更短的文本。
可以设置上下文窗口的软阈值和硬阈值,例如接近窗口上限前提前压缩,或者在预估下一轮工具结果、检索结果、用户上传内容会超过预算时先压缩。硬预算触发简单可靠,但如果只依赖阈值,会在关键细节还没整理好时仓促摘要,也可能在长任务早期积累太多噪声。
Agent 完成需求澄清、工具调用、子任务执行、错误恢复或阶段性计划后,通常会形成一批稳定信息。这时把历史压缩成目标、约束、决策、当前状态、待办和证据引用,能减少后续推理负担。阶段触发比单纯 token 触发更符合任务连续性,因为它在语义边界处压缩,信息损失更可控。
压缩不是平均缩短所有内容。必须强保留用户目标、硬约束、权限边界、关键事实、执行结果、失败原因、未完成事项和重要原文引用;可以弱化或丢弃重复确认、过期计划、冗长日志、低价值寒暄、模型中间草稿和已被否定的分支。工具结果如果很长,应保留结论、关键字段、异常和可回查引用。
摘要本身需要版本、生成时间、覆盖消息范围、来源 trace、置信度和不可覆盖字段。否则后续模型很难判断摘要是否过期,也无法在冲突时回查原始上下文。对于高风险事实,可以保留原文片段或引用,而不是只留一句自然语言总结。
压缩策略不能只用平均 token 降幅证明有效。应该观察任务完成率、约束遗漏率、重复追问率、工具误调用率、长会话恢复率、摘要冲突率、成本延迟和人工抽检结果。若压缩后模型更常忘记用户限制或错误引用旧状态,就说明触发时机或摘要结构需要调整。
截断通常按位置删除内容,容易丢掉早期关键约束;压缩会按语义提取目标、状态、决策和证据,并保留可回查引用。压缩更复杂,但对长任务连续性更友好。
稳定的任务状态和硬约束可以放在靠前的上下文区或专门状态块里,普通历史摘要可以作为历史记忆消息。关键是区分规则、事实、计划和证据,不要把所有内容混成一段自然语言。
通常要先抽取结论、错误码、关键字段、时间范围和可回查位置,再决定是否保留原文片段。长日志不应完整塞进上下文,但也不能只留下没有证据的笼统结论。
摘要要有版本和来源范围。新信息优先进入当前状态,冲突字段标记为待确认或按时间、可信来源和用户确认策略解决,必要时回查原始 trace。
常见问题是忘记用户硬约束、重复询问已确认事项、执行过期计划、引用不存在的工具结果、把低置信摘要当事实,最终表现为误调用、幻觉和任务中断。