题目
Agent 执行长程任务(数十步、跨会话)时上下文会爆炸。请列出管理上下文的工程手段。
参考答案
问题:Agent 每步都把历史(思考、行动、观察)拼进 prompt,几十步后上下文超窗口;即使不超,注意力也会被稀释,模型”忘了”早期关键信息。
管理手段:
1. 滚动窗口
- 只保留最近 N 轮交互,旧部分丢弃。
- 简单但会丢早期关键信息,适合短任务。
2. 摘要压缩
- 用 LLM 把旧历史压缩成摘要,摘要替代原文。
- 可分层:摘要的摘要(多级金字塔),支持超长任务。
- 注意:摘要会丢细节,关键决策点需保留原文。
3. 结构化状态外置
- 把关键信息抽到结构化状态(JSON/数据库),而非塞进 prompt。
- 如:任务进度、待办清单、已收集事实、关键变量。
- prompt 只放当前需要的少量状态,按需检索。
4. 记忆系统(短期 + 长期)
- 短期:当前上下文窗口,放最近步骤。
- 长期:向量库/键值库存历史事实,需要时检索召回。
- 类似人脑的工作记忆与长期记忆分工。
5. 子任务分解
- 把长任务拆成子任务,每个子任务独立 Agent 独立上下文。
- 主 Agent 只汇总各子任务结果,避免单上下文承载全部。
- LangGraph 的子图天然支持此模式。
6. 检查点(Checkpoint)
- 定期把状态持久化,失败可回滚。
- 长任务中断后续跑靠 checkpoint 恢复。
7. 上下文路由
- 不同子任务用不同模型/不同上下文配置,按需加载。
- 简单子任务用小模型短上下文,复杂推理用大模型长上下文。
实战组合:
- 短任务(< 10 步):滚动窗口即可。
- 中等任务(10–50 步):滚动 + 摘要。
- 长任务(50+ 步):结构化状态外置 + 长期记忆 + 子任务分解。
- 跨会话:长期记忆库 + checkpoint。
面试加分点:
- 强调”上下文不是越多越好”——无关内容稀释注意力,召回关键信息变难(“lost in the middle”现象)。
- 结构化状态外置是生产 Agent 的关键:把”工作记忆”从 prompt 移到外部,prompt 只放当下所需。
- LangGraph 的 checkpointer + store 是工程化这两层记忆的典型实现。
出处:Agent 工程面经、LangGraph 文档。
内容来源
整理自 Agent 工程面经
本站内容整理自公开面经与开源仓库,仅供学习交流,严禁杜撰。