微信扫码
添加专属顾问
我要投稿
深入解析AI Agent开发中的Context工程:从Prompt到多轮交互的进阶策略。 核心内容: 1. Context工程与Prompt工程的核心区别与应用场景 2. Anthropic提出的AI Agent上下文优化方法论 3. 系统指令与多轮交互中的动态信息配置技巧
本期概要:
2025 年 6 月以来,原名为「Prompt Engineering」的提示词工程,在 AI Agent 概念日趋火热的应用潮中,
经由 Anthropic、LangChain、Manus 等 AI 公司,以及 Andrej Karpathy(前 OpenAI 联创)、Tobi Lutke(Shopify CEO)等行业领袖的传播下,共识成了更适应 Agent 的新概念:
——「Context Engineering」,即上下文工程。
在国内,也对应出现了“Prompt 工程已死,未来属于 context 工程”、“别再卷 prompt 了”等论调。
但,事实尽是如此?
虽然传播一个新概念的“好”方法,就是拿它与出了名的旧事物对比、营造冲突。
但 prompt 仍是 context 工程不可或缺的子集,context 工程则是为适应 AI Agent 架构日趋复杂健全的自然发展。(Anthropic 团队在《Effective Context Engineering for AI Agents》一文中,也提到了一致观点)
要简单区分两者差异的话,可以如此理解:
比如,Context 工程涉及的 system instruction 依旧是 prompt 工程实现的。并非全方位替代,只是需要根据 AI 开发情景,灵活选择实现深度而已
Anthropic 《Effective Context Engineering for AI Agents》:context engineering 与 prompt engineering 的差异
大模型的上下文窗口有限。
从 GPT3.5 的 16K ,到 Claude 3.5 的 200K,再到现在 Gemini 2.5 Pro 的动辄 1M,近年来 LLM 上下文窗口大小,确实提升飞快。
这是否意味着我们可以高枕无忧,把一切 Context 都无脑地塞进去?
答案是否定的——时至今日,上下文依旧需要被视为有递减收益边际的有限资源。
不知道你在和 AI 聊天时,是否发现这么一个现象?
当对话长度不断增加(即使还没超过官方标称的上下文窗口尺度),模型的回复质量也会有明显的下降:
——1M 上下文的 Gemini 2.5 Pro,基本在 tokens 量来到 4w 左右时,会反映为推理缓慢,质量开始有所下降。
是的,最大上下文窗口 ≠ 最佳注意力窗口。
有个专门术语来描述这个普遍的负面模型现象:Context Rot,上下文腐烂。
如同人类在信息过载时会思维混乱,而过长的、充满干扰的上下文,同样会显著降低模型的推理能力。
而模型性能下降(上下文腐烂,context rot)的三大因素如下:
这三个因素会相互放大,导致性能显著下降。
PS:反过来,控制 Context 长度、减少 Context 中的干扰项数量、提升问题与 Context 中有效信息的相似度,就能够提升 Agent 的处理效果
这三大因素来自于 Chroma 团队(打造了目前全球最主流的开源向量数据库之一)名为《Context Rot》的同名实验研究。
实验研究古法人工浓缩如下,个人觉得会对测试 AI 产品有一些实用启发。(比如测试较佳 context 长度)
如果觉得太长,也可以下滑到本段小结~
他们设计了一套实验,来测试影响 LLM 长上下文性能表现的因素:
在传统 NIAH(Needle in a Haystack:即 LLM 大海捞针测试)基础上,进一步拓展任务难度,考察大模型的语义理解层面的捞针能力,而非直接词汇匹配。
传统 NIAH 任务,是评估模型长上下文能力最广使用的基准之一:
将一个随机事实(针信息),放在较长的上下文(干草堆)中,通过直接问答,要求模型回答某个针的信息 ,比如:
干草堆:[大量无关文本]
藏在干草堆的针信息:“我从大学同学那里得到的最好的写作建议是每周都要写作。”
问题 Prompt:“我从大学同学那里得到的最好的写作建议是什么?”
此时,模型被期望能从大量干草堆中,直接找到针信息,并回答“每周都写作”。全程无需间接推理信息,直接根据已有信息回答即可。
传统 NIAH 虽然很有效地考察了 LLM 的大海捞针能力,但实际问答场景往往不会如此直接清晰:
Chroma 团队实际上,也注意到了这一点,并拓展了 4 种不同 NIAH 任务:
看完整体测试过程,我也总结了一些有助于理解 context 工程价值的现象:
而 Context 长度较短时,模型对低相似度的问题,有更高的处理成功率
难:在 10 篇“写作建议”文章中找“最佳写作建议是每周写作”
易:在“量子物理、烹饪、园艺”文章中找“最佳写作建议是每周写作”
⇣⇣⇣
小结:当 AI Agent 在多轮推理和更长的时间线上运行时,模型必然会面临越来越多的 context rot 因素。
冗余的上下文将大量占用模型的思考空间,显著降低其完成复杂任务的思考能力。
而上下文工程(Context Engineering)诞生的实质,正是在探究哪种上下文配置,最有可能引导模型输出我们期望的结果,获取更好的任务效果。
AI Agent 发展至今,已经越来越能够在多轮推理和更长的时间内运行。
这些不断在“思考-行动-观察”中循环运行的 Agent,会在运行中不断产生、积累更多对下一次循环有影响的上下文数据
(包括系统指令 system prompt, 工具调用 tools, MCP, 外部数据, 对话历史 message history 等)
为了避免模型性能的下降,这些数据必须被 context 工程动态优化:
唯有效的 context 才配占据有限的上下文窗口资源。
Anthropic《Effective Context Engineering for AI Agents》:图解 Agent 开发中,context engineering 的起效形式
想要实现有效的 context 工程,大体上分为三类策略:
我们依旧可以从更熟悉的模块开始学习——通过 Prompt 工程,设计清晰、简单直接的系统提示。
有效的上下文,始于清晰的指令。
如果 Prompt 过于具体,使用大量示例、if-else 类的要求,则会使得模型更加僵化,缺乏处理意外情况的能力;
而 Prompt 如果要求过于模糊,或缺少足够的背景信息,则会无法对模型输出进行可控管理。
在 Agent 运行过程中,每一轮推理所产生的部分 context(工具调用返回结果、Chat 回应等) ,也需经由 Prompt 引导其如何输出和被精炼(Kimi 那类 Model as Agent 的路线不在此列),方可具备一定的可预测性与管理意义。
以下是一些经过实践检验、能显著提升模型表现的提示词编写原则:
比如「利用 LLM,评估事情的重要性」:
评估事情的重要性。比如,在 1 到 10 的刻度上,其中 1 是完全世俗的(例如,刷牙,整理床铺)和 10 是极其深刻的(例如,大学录取、结婚)
使用<tag></tag>或##title式的 XML 标签 / Markdown 语法,分割不同指导作用的提示词。
虽然随着模型能力提升,LLM 对复杂糅合的 Prompt 理解能力有所提升,但结构化提示词,依然有助于提升模型些许性能。
更重要的是,大幅简化人类工程师理解、维护 Prompt 的难度。
写第一版提示词时,记得先用你能用到的最聪明模型,写出能大致满足要求的最小化 Prompt。
(只有这样,你才能知道当下 AI 的能力边界,区分哪些是 Prompt 的问题,哪些是模型智力问题)
最小化 Prompt 意味着用最少的提示信息量,优先定义“有什么、做什么”,而不是“怎么做”——把我们的提示词设计“最小化”。(详见:《见知录 Vol.001:最小化提示词原则》)
根据 Prompt 测试过程中发现的问题,迭代必要的指令细节、few-shot,优化生成效果。
最终再迁移到最终的生产模型,完成细化。
是的,我不喜欢滥用 few-shot。过度 few-shot 提示,往往会使得 AI 生成风格容易陷入僵化。
一般来说,个人会尽量避免在推理模型中使用 few-shot。
Anthropic 团队也同样分享了他们的观点:
Few-shot 是非常有效的 AI 提示实践,但要着重避免在 prompt 中塞满过多边缘例子,应该设计一组足够多样化、规范的核心例子,有效展现 Agent 的预期行为。
(一些不好的 system prompt ,甚至会不给出准确、完备的背景信息、目的描述,就在那通过塞一堆“示例”,强行矫正表现不佳的测试结果。
答应我,千万别学这个!
不然,越是开放的复杂任务下,模型泛化越是不堪直视,回答形式也极其僵化……比如虚拟陪伴)
别忘了,system prompt,本身就是最小化的初始 context。
一个清晰、高效的 prompt,能够用最有必要的 tokens,为后续推理交互提供重要的方向指引。
考虑到在真实使用 AI 时,一方面上下文窗口有限,不可能把所有的相关 context 都塞进去。
另一方面,以往在推理前的阶段采用 embedding-based 检索的方案,常常会检索到很多“可能相关但实际没用”的内容。
所以,现在越来越多的 AI 应用,开始采用 AI 自主探索的即时上下文方案:
在这个过程中,Agent 自主导航与检索信息,动态获取所需信息到上下文窗口中。
(对应的,人类会先回忆自己的待办记在哪个备忘录、日历中,在到对应软件中翻阅记录,为大脑的上下文窗口实现动态挂载与减负。)
即使是每一次 Agent 检索所获取的文件名称、大小、文件创建时间,这些信息也都有助于 Agent 在后续推理中,判断信息的相关性与价值(命名规范暗示用途;文件大小暗示复杂性;创建时间可以作为相关性参考)(可以让 Agent 自行记录 memory 笔记,将这些工作记忆摘要与持久化。)
当然,请记得权衡即时上下文探索,与向量检索/直接拼入context 等简单方案的耗时与效果。
虽然模型发展必然会带来更大的上下文窗口…
但如 Chroma 的 Context Rot 研究,无论如何,无关的 Context 占用上下文窗口时,必然会影响模型性能。
在当下的时间节点,Agent 的智能几乎与一次性自主运行时长挂钩。
AI Coding 中的代码重构任务、Deep Research 任务等,往往会运行数十分钟及以上,其产生的 context 必然会远超出模型的上下文窗口限制。
为了保障此类长程任务的连贯性与目标达成,Anthropic 团队引入了专门的上下文工程设计,在框架层面解决上下文污染与限制问题:
1)压缩(Compaction)
最直接的思路,是在上下文接近窗口限制时,把对话内容“有损压缩”,抛弃冗余无用的历史信息,并重新开启一个新的上下文窗口。
仅保留核心决策与细节(比如整体计划决策、执行过程错误和实现细节),以实现在新对话窗口的连贯性。
以 Claude Code 为例,模型会保留开发架构决策、未解决的错误和关键实现细节,同时丢弃冗余的工具输出或过于细枝末节的消息。
2)结构化笔记(Structured Note-taking)
当下,越来越多的 Agent 应用采用了这种外部 memory 策略,例如 Manus 等通用 Agent 的 todo.md,MemU 等记忆框架的 memory 策略,均属于此列:
能够以极小的上下文开销,进行持久化记忆。
我之前在测试 Browser-use Agents 的 2048 游戏最高分时,也将「在每一步游戏操作后,自行反思并记录心得与教训」作为 Agents 的 system prompt。
AI 在游戏过程中,就会额外记录结构化笔记,指导 AI 在新一轮游戏的操作决策,改进游戏得分。如:
- 心得 1:固定一个角落放最大块(常用底部左/右角),尽量不要把它移出该角”
- 心得 2:尽可能往同一个方向合并数字方块
3)多智能体架构(Multi-Agents Architectures)
这是一种更积极的“分而治之”的架构思想。
将一个复杂任务分解到多个子智能体,让专门的 Agent 专注于自己的任务与所需记忆空间,最后由一个主 Agent 在更高维度协调整体的任务计划。
每个子 Agent 的上下文压力都会小很多,模型性能能够发挥的更彻底,不易 context rot。
例如,Manus 所推出的 Wide-Research 功能,就采用了类似方案,有兴趣可以去试试看。因为是并行架构,所以能够在单位时间内开展更加广泛、深入的 Deep Research 研究或其他复杂任务。
⇣
至此,
可以根据 Agent 应用的类型和复杂度灵活组合,共同为超长程任务实现无限上下文,提供切实的可能。
回顾上文,system prompt 编写、即时上下文检索、上下文架构管理,一切讨论的锚点,最终都回归到了 context 工程的核心:
找到以最小 tokens 集合,最大化引出期望 AI 结果的策略。
Context 工程本身并不神秘,只是随着 AI Agent 架构日趋复杂、健全的自然工程发展。
理解了超长上下文如何影响 LLM 的性能表现,和 Agent 内的上下文记忆运作机制,我们才能更好地开展有效 context 工程。
最后的最后,请务必、务必,把上下文窗口视为有限的资源。
Ref:
Anthropic 分享了他们过去一年里,与数十个团队、客户合作构建智能体时,总结下来的实用建议。
关于智能体的定义划分,往往在 workflows 和 agents 中有所混淆。Anthropic 将其统称为 agentic systems,智能系统:
以下是 Anthropic 总结的 workflow 与 Agents 类型,可能为你带来一些参考启发:
Anthropic 把 Agent 定义为:LLMs autonomously using tools in a loop.
Ref:
“在抵达下一个阶段之前,这就是我探索愿意投入的、输得起的代价。”
发现自己在涉及到需要长期投入的重大决策时(如职业选择、亲密关系等),容易过度“忧虑未来的最终结果”。
导致因为畏惧远期回撤心理,不自觉地压抑当下的机会、幸福感,最终决定放弃对自己现阶段更有价值的行动。
比如:
被评价“这个人想得清楚”,看起来是件好事。但有时也会因为犹豫,错过一些机会。
很难区分保守与激进、深思熟虑与开放灵活,孰对孰错。
但重点在于,决策的第一步不仅仅是靠直觉、喜好,而是先明确自己当下最需要解决的问题是什么,盘算清自己愿意押注的筹码底线。
比如现在有多少储蓄,现在来看,最多愿意设置 xx 时间、金钱的止损线。再次之前要尽情探索自己创业可能性,到了止损阶段后,即使回去上班,自己也能接受。
过度忧虑未来、不预分配当前阶段的筹码,混乱地做出“明智、保护自己”的投资,是对流向自己的机会的不尊重。
——未来是很重要,投注成本是很珍贵,但也请多多珍惜当下。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-21
用户体验新范式:AI 如何重新定义产品设计架构
2025-10-21
用 Browser-Use 打造可操作浏览器的 AI 智能体
2025-10-21
为啥Deepseek OCR 牛: 潜在用途
2025-10-21
Agent与Workflow的技术落地实践与思考
2025-10-21
从大脑解码 AI,对话神经网络先驱谢诺夫斯基
2025-10-21
一眼读完一本书?别笑,真有人在干这事
2025-10-21
“AI优先”的时代必然性:揭秘企业坚定投资AI的真实商业回报
2025-10-21
AI Coding实践:CodeFuse + prompt 从系分到代码
2025-08-21
2025-08-21
2025-08-19
2025-09-16
2025-07-29
2025-09-08
2025-09-17
2025-08-19
2025-10-02
2025-09-29
2025-10-20
2025-10-20
2025-10-19
2025-10-18
2025-10-18
2025-10-18
2025-10-16
2025-10-16