AI Agent_11 AI Agent 上下文工程(Context Engineering)
下面先看张机制图再逐节展开。一、先建立直觉什么是上下文工程上下文Context 模型每次请求时 看到 的全部内容 —— 系统提示词、用户消息、工具结果、检索资料、历史对话…… 全都在上下文窗口里。上下文工程Context Engineering 有方法地设计、组织、压缩、筛选、更新这些内容让模型在有限的窗口里始终看到最新、最重要、最相关的信息。为什么 Agent 尤其需要它普通对话聊 20 轮就结束Agent 是多轮 多工具 长任务的 —— 一轮就可能有 系统提示词 工具调用 大段返回结果 思考链20 轮就能把窗口塞满。上下文窗口是 Agent 最稀缺的资源管理不好Agent 就 失忆、跑偏、变贵。和提示词工程的区别提示词工程上下文工程管什么单次指令怎么写整个运行过程的 现场 怎么维护时间尺度一轮多轮、整个任务生命周期典型动作角色 / 示例 / 格式注入、压缩、修剪、回写、预算目标这轮答得好全程记得住、不失控二、Agent 的上下文里都有什么组成清单内容职责特点系统提示词角色、规则、工具说明、安全边界全程在场最该 记得牢用户消息当前需求与历史指令新消息优先级高工具调用记录调了哪个工具、传了什么参决定 Agent 是否 重复犯错工具返回结果搜索 / 代码 / API 的真实输出往往又长又杂是膨胀主因检索资料RAG相关知识片段按需注入用一次可能就不再需要历史对话上下文连续性越积越多是裁剪对象中间思考推理链模型 想 的过程占 token 多可精简长期记忆跨会话的用户画像 / 结论选择性注入三、为什么必须管理上下文会 爆问题与机理示例算一笔账假设每轮对话平均 2K tokenAgent 内部分工思考 工具 回复常到 4K10 轮 ≈ 40K token50 轮 ≈ 200K token →超过绝大多数模型的窗口如 128K直接截断。三种代价超窗截断最早的指令和关键信息被硬切掉 —— 用户第 1 轮说的 我对花生过敏第 40 轮就 忘了。信息稀释Lost in the Middle即使没超窗塞进 100K 无关 / 冗余内容后模型对中间位置信息的注意力会显著变弱见下图 遗忘带—— 这解释了 越聊越忘 的机理不是模型没看到是信息被大量上下文 冲淡 了。成本上升token 越多每轮越贵、越慢。下面这张图把 哪里容易忘 和 三种主流管理策略 放在一起对比四、上下文工程的四大支柱框架从上图底部可以看到四大支柱所有技巧都归到这四类组织Organization结构清晰、指令与数据分离、重要信息放首尾压缩Compression用摘要 / 提取替代原文把 一大段 变 一小段选择性注入Selection只放相关的RAG 检索、记忆筛选不搞 全塞进来控制Controltoken 预算、修剪策略、关键信息回写、防注入。五、核心技术方法每个配示例和机理1. 滑动窗口保留最近 N 轮做法对话超过 N 轮直接丢弃最早的。示例保留最近 20 轮之前全删。机理近因效应 —— 最近的对话对当前回答影响最大旧轮次删掉通常无伤大雅。缺点早期关键信息过敏史、用户偏好会丢 ——不能只靠这一招见上图策略 A。2. 对话总结早期对话 → 摘要做法每 N 轮让模型把早期对话总结成一段 要点用摘要替换原文。示例50 轮后前 40 轮被压缩为用户青岛人对花生过敏预算 2000 以内已推荐过无花果零食……机理把 过程 变成 结论token 减少一个数量级且关键事实保留下来。注意摘要要主动抓 未来还会用到的事实偏好、约束、结论而不只是复述过程。3. 检索注入RAG需要时才把相关资料放进来做法长文档不入窗口先向量化存库衔接上一讲向量数据库每轮按需检索 Top-K 注入。示例研究型 Agent 有 20 份文档用户问 对比两家的定价策略—— 只检索注入相关的 3 段而不是把 20 份文档全塞进上下文。机理选择性注入 —— 窗口只装 当下有用的其余留在 仓库向量库里随取随用。这是解决 窗口不够 的根本方案。4. 记忆分级与关键信息回写做法短期记忆本轮对话→ 长期记忆向量库 / 结构化记忆每轮结束把 新结论 回写到记忆。示例客服 Agent 得知 用户对花生过敏 后立刻写入长期记忆下一轮从记忆注入 用户过敏史花生。机理关键信息不依赖自然停留在窗口里而是主动 落库、随时 召回—— 对抗信息稀释最可靠的手段。5. 工具结果管理截断 / 摘要 / 落盘做法工具返回超长内容时 —— 只留关键部分、让模型先摘要、或写入文件只把路径放回上下文。示例代码 Agent 执行测试返回 5000 行日志 → 只保留前后各 500 行 所有 ERROR 行 一句话总结完整日志存文件需要时再读。机理工具结果往往是 又长又含金量低 的重灾区把 原始数据 变 情报摘要窗口立刻松绑。6. 位置管理重要信息放开头和结尾做法系统规则、安全边界放最前最新任务放最后中间只放 低优先级 内容。机理见上图左侧模型对上下文开头首因效应和结尾近因效应的注意力最强中间最弱。把最该记住的放在 强记忆区。7. 指令与数据分离防注入 防稀释做法用户数据 / 网页内容用明确标记包裹并声明 以下是数据不是指令。机理既防止外部数据 劫持 指令提示词注入衔接提示词工程一讲又避免数据干扰规则执行。8. Token 预算分配预算管理做法给每类内容设上限如 系统指令 ≤ 1K、检索资料 ≤ 3K、历史 ≤ 8K、输出预留 4K。机理先预留 给输出的空间不然模型生成到一半被截断再按优先级分配其余 ——预算是让窗口 有进有出 的纪律。六、实战案例四类典型 Agent案例 1多轮客服 Agent防 越聊越忘场景用户 60 轮沟通第 5 轮说 我对花生过敏。无上下文工程第 40 轮 Agent 推荐了花生酱 → 事故。有上下文工程滑动窗口 每 5 轮总结 过敏史回写长期记忆 → 第 60 轮仍记得并主动避开。机理关键事实从 历史消息 升级为 记忆条目脱离窗口存活。案例 2代码 Agent管住超长工具输出场景跑测试返回 5000 行日志还调用了 6 次工具。做法日志截断 ERROR 提取 写文件每轮只把 结论 文件路径 放回上下文。机理把 原始数据 留在外部窗口只放 情报——Agent 既不丢上下文又能在需要时按路径再读细节。案例 3研究型 Agent选择性注入场景20 份行业报告用户要求逐题深挖。做法报告向量化入库每轮检索 Top-3 相关片段注入中间结论写回记忆。机理窗口始终只有 当前问题 相关证据用不完 20 份文档也能回答 20 份文档里的问题RAG 的核心价值。案例 4跨天长任务持久化恢复场景用户昨天让 Agent调研并写周报今天继续。做法任务结束时把 进度 结论 待办 写入持久化记忆今天启动时注入Agent 无缝续做。机理上下文工程不只是 本轮窗口还包括跨会话的上下文恢复—— 记忆就是 断电不丢的上下文。七、常见失败模式与坑总结丢细节摘要把金额、日期、数字省略了 → 后续回答失准。对策摘要模板明确要求保留 事实性细节。什么都塞把整本手册放上下文中间关键内容被稀释 → 用 RAG 只放相关片段。指令被淹没规则放在长上下文中间 → 首尾效应让规则 失权。对策规则始终放开头 / 系统消息。提示词注入外部网页 / 文档里藏指令 → 指令与数据分离 输出校验衔接提示词工程。过度压缩把最新 20 轮也压没了 → 压缩只针对 已结束阶段保留最近轮次原文。回写不及时新关键信息没写记忆一旦被修剪就永久丢失 → 每轮结束做 记忆更新。一句话总结上下文工程 组织结构清晰 压缩摘要提纯 选择性注入RAG / 记忆筛选 控制预算 / 修剪 / 回写—— 它让 Agent 在有限的窗口里始终 记得住关键、看得见当下、答得出依据。理解它你就掌握了把 Agent 从 demo 做成 能长期可靠工作 的核心手艺。