Update avaliable. Click RELOAD to update.
📱 安装应用到主屏幕,获得更好体验
目录

Context Engineering:AI Agent 上下文工程的完整指南

1. 什么是 Context Engineering

如果你一直在用 AI Agent 构建东西,大概已经注意到一个问题:Agent 在前几步表现得很好——选对工具、推理清晰、按计划推进。但到了第 15 或 20 步,就开始变得”马虎”——忘记你要求什么、调用莫名其妙的工具、输出质量断崖式下降。

大多数人第一反应是”模型不行”。但通常,问题出在模型看到的内容上。

组织模型看到的内容,就是 Context Engineering(上下文工程)。它正在成为构建 AI Agent 最重要的技能之一。

本文作者 Marina Wyss 是 Twitch 的高级应用科学家,从事 Gen AI 工作。她梳理了大量工程博客、会议演讲、学术论文和实践报告,提炼出了这份完整的上下文工程指南。

Context Engineering vs Prompt Engineering

Prompt Engineering 是写出好指令的技能——清晰地表达、给好的示例、告诉模型扮演什么角色。这在跟 ChatGPT 对话时效果很好。

但当你从聊天机器人转向 Agent 时,Prompt Engineering 就远远不够了。原因很简单:Agent 不只是回答一个问题——它要自主地浏览网页、调用 API、写代码、运行命令,一步一步地,有时几十步。每一步的输出都加到模型的上下文中。而上下文是有限的

Anthropic 的工程团队这样定义:上下文是采样 LLM 时包含的 token 集合,上下文工程就是优化这些 token 的效用,以持续达成期望的结果。

上下文窗口就像 Agent 的工作记忆

LangChain 有一个很好的类比:把 LLM 想象成一种新型操作系统——模型本身是 CPU(负责思考),上下文窗口是 RAM(工作记忆),模型当前能看到和推理的所有内容都在这里。

就像电脑 RAM 满了会变慢,Agent 的推理能力在上下文窗口变得拥挤时也会退化。

2. 上下文腐烂与”中间丢失”

Chroma 发表过一项重要研究,评估了 18 个前沿模型——GPT-4.1、Claude 4、Gemini 2.5、Qwen3 等。结果发现:每个模型的性能都随输入长度增长而下降,即便远未达到官方的上下文窗口上限。一个标称 200K token 的模型,可能在 50K token 时就出现明显的性能退化。退化是渐进的,不是突然断崖。

LLM 的 U 型注意力曲线

这就是著名的 “Lost in the Middle” 现象。Liu 领导的研究团队发现,LLM 呈现 U 型注意力曲线——开头和结尾的信息记得好,但中间的信息会被忽略。当相关信息从上下文开头移到中间时,准确率会下降超过 30 个百分点。

这意味着一件事:如果初始指令被五万 token 的工具输出淹没,这些指令实际上就消失了

实践者总结的经验法则:Claude Code 用户在上下文窗口用到 40%-60% 时就会观察到输出质量下降——远未触及硬性限制。

Agent 上下文中的七类信息

Agent 上下文中竞争的七类信息:

  1. 系统提示 — Agent 的身份和行为规则
  2. 工具定义 — 每个工具的 schema
  3. 工具调用结果 — 每次调用的输出
  4. 检索知识 — 从 RAG 拉取的文档
  5. 对话历史 — 整个会话的完整记录
  6. 记忆 — 短期和长期记忆
  7. Agent 状态 — 当前计划、待办事项、进度

3. 四大核心策略

LangChain 发表了一个被广泛引用的框架,将所有上下文工程技术归纳为四类:Write(写入)、Select(选择)、Compress(压缩)、Isolate(隔离)

四大核心策略框架

3.1 Write(写入)

问题很简单:Agent 会忘记事情。当上下文填满被压缩时,信息就丢失了。

Write 策略就是给 Agent 提供在上下文窗口之外持久化信息的方式。三种形式:

3.2 Select(选择)

核心思想:不要把什么都给 Agent,只给它当前这步需要的。

传统 RAG 是系统做选择——用户提问,你检索文档,塞进 prompt,一次性管道。Agentic RAG 反过来——Agent 自己决定要搜什么、用什么工具、什么时候信息够了。这是迭代式的检索,因为在多步任务中,每一步所需的信息都在变化。

LangChain 和 Pinecone 区分了 Agent 可以调用的三种记忆:情景记忆(few-shot 示例)、语义记忆(事实仓库)、程序性记忆(行为规则)。

工具选择是一个特别常见的坑。如果 Agent 有 40+ 个工具,工具定义可能占用上万 token。RAG-MCP 论文测试了语义检索工具描述的方案——工具选择的准确率从 14% 提升到 43%,prompt token 减少了一半。

Anthropic 的混合策略:前置加载基础信息(如 CLAUDE.md),其余按需检索。

3.3 Compress(压缩)

即使选择做得再好,上下文还是会累积。压缩就是减少 token 数量,同时保留关键信息

压缩可以在三个节点进行:

3.4 Isolate(隔离)

隔离策略让多 Agent 系统成为可能。

如果一个 Agent 试图做所有事——研究、规划、编码、测试、调试——在同一个长对话中,上下文必然会填满。但更深层的问题不是空间,而是污染。研究阶段的详细文件搜索还留在上下文里,当 Agent 进入实现阶段时,这些旧的研究内容就成了噪音。

解决方案是上下文隔离:给不同部分的任务分配各自的上下文窗口。父 Agent 将聚焦的子任务委派给子 Agent,子 Agent 在干净的上下文中工作,只返回精简的摘要。

另一种形式是 LangGraph 的状态 Schema 隔离:工具结果放在”后台”字段,只在需要时才对模型可见。

4. Agent 的四种失败模式

Drew Breunig 在 2025 年中发表了两篇有影响力的文章,识别了 Agent 在上下文增长时的四种失败模式。

Agent 的四种失败模式

上下文中毒:幻觉或错误进入上下文后被反复引用,每次迭代都在错误基础上叠加。修复:主动裁剪过时/冲突的信息,验证工具输出,压缩失败尝试的历史。

上下文分心:上下文过长导致模型过度依赖最近历史,不再独立思考。修复:即使有大的上下文窗口也要积极总结和修剪。

上下文混乱:多余内容被模型捡起来导致低质量响应。最典型的是工具混乱——Agent 看到 46 个工具定义后开始调用无关工具。一个量化的 Llama 3.1 8B 模型在给定全部 46 个工具时失败,但只给 19 个工具时正常工作。修复:动态工具管理,RAG-MCP 语义检索。

上下文冲突:新收集的信息与已有内容矛盾(系统提示说一套,检索文档说另一套)。修复:建立明确的权威排序(系统提示 > 检索事实 > 对话历史),使用结构化章节。

5. 系统提示与工具定义的最佳实践

系统提示

Agent 的系统提示和聊天机器人的完全不同。聊天机器人的系统提示只是设定语气。Agent 的系统提示定义架构——控制流、工具使用规则、错误处理、安全护栏。

Anthropic 提出了”合适的海拔高度”的概念:

几个实用建议:

  1. 用 XML 标签或 Markdown 标题组织系统提示
  2. 从最小开始,迭代失败——不要预先猜测所有边缘情况
  3. 最小不意味着短——复杂工作流可能需要数千 token
  4. 用 few-shot 示例展示好的行为

工具定义

生产中越来越通过 MCP(Model Context Protocol) 处理工具连接。但 MCP 让接入很多工具变得太容易——这正是陷阱。

扩展工具集的两个主流方法:

方法一:工具屏蔽(Manus 推荐)。保持所有工具定义在上下文中稳定(利用 KV-cache),但标记某些工具在当前阶段不可用。不要动态增删工具,因为会破坏 KV-cache——缓存的输入 token 每百万 0.30 美元,未缓存的每百万 3.00 美元,10 倍差距。

方法二:RAG 工具选择。语义检索预选择当前步骤所需的工具。

KV-cache 工作原理

6. 实践:频繁有意识压缩

Dex Horthy(HumanLayer CEO)在 AI Engineer Code Summit 上展示了一个方法论,他的团队据称在单个 7 小时会话中用此方法向大型 Rust 代码库交付了约 35000 行代码。

核心思想:主动将工作组织成阶段,每阶段产出紧凑的产物(结构化 Markdown 摘要),每个新阶段用只包含该产物的全新上下文窗口开始。始终保持在上下文窗口的 40%-60% 以下。

三个阶段:

  1. 研究阶段:子 Agent 处理原始文件搜索和代码分析。产出研究文件(Markdown,包含文件路径、函数签名、模式、坑点)。使用隔离写入策略。
  2. 规划阶段:全新上下文窗口,只包含研究文档和问题定义。产出详细实现计划。这是人工审查的最佳节点。
  3. 实现阶段:再次新的上下文窗口,只包含计划。对需要多次压缩的复杂任务,用 progress.md 跟踪进度。

7. 主流平台的做法对比

各平台的上下文工程策略对比

Claude Code

Claude Code 是上下文工程在实践中最有据可查的例子。CLAUDE.md 文件前置加载,使用 glob/grep 等工具按需导航代码库。95% 自动压缩保留架构决策和最近访问的 5 个文件。支持子 Agent 和跨会话记忆工具。Anthropic 的哲学:”做最简单的有效方案”。

Manus

面向数十万用户提供通用 Agent,效率至关重要。贡献:KV-cache 感知的上下文排序、观察压缩管道、持久化待办列表、文件系统作为溢出记忆。

ChatGPT Agent

由 Computer-Using Agent 模型驱动,GUI 优先。截图作为视觉快照加入上下文,视觉 token 昂贵所以必须选择性保留。OpenAI 用强化学习发现最优工具使用策略。

Google ADK

最原则性的架构方法。三个设计原则:存储与展示分离使用显式转换(命名有序的处理器,可测试、可组合)、默认限定作用域(每个模型调用只看到最少必需信息)。

所有平台最终都遵循相同的管线:收集候选信息 → 选择当前步相关的内容 → 压缩 → 按 KV-cache 复用最大化的方式排列 → 组装上下文 → API 调用。

8. 总结

上下文工程不再是可选技能。随着 Gartner 预测到 2026 年底 40% 的企业应用将集成 Agent,那些掌握上下文工程的团队才能真正让 Agent 可靠工作。

核心心法就四个词:写入、选择、压缩、隔离。每次遇到 Agent 出问题,先想想是这四种失败模式中的哪一种——中毒、分心、混乱还是冲突——解决方案自然会落到四个策略之一。

最好的学习方式就是自己动手试。

版权所有,本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可。转载请注明出处:https://www.wangjun.dev//2026/05/context-engineering-for-ai-agents/