别再死磕提示词了:Anthropic 说,AI Agent 真正的胜负手是“上下文工程”

别再死磕提示词了:Anthropic 说,AI Agent 真正的胜负手是"上下文工程"

原文:mp.weixin.qq.com/s/ok8ZhGtdc...

你有没有遇到过这种情况?

跟 AI 聊到第 50 轮,它开始忘记你前面说过的要求。让 Agent 跑一个长任务,做到一半,它开始重复劳动,甚至答非所问。

很多人的第一反应是:提示词写得不够好。

于是反复改提示词、加规则、加例子。

但 Anthropic 在一篇研究文章里给出了另一个答案:问题可能不在"说什么",而在模型此刻"看到了什么"。

这就是最近很火的概念------上下文工程(Context Engineering)。

这篇文章,我把 Anthropic 的这篇研究,和他们配套的 Cookbook 实战案例,一起拆给你看。

一、从提示词工程,到上下文工程

先说结论:Anthropic 把上下文工程看作提示词工程的自然演进。

›

提示词工程:研究怎么写、怎么组织指令,尤其是系统提示词。

›

上下文工程 :研究怎么在推理过程中,挑选并维护那组最优的 token。

这里的"上下文",指的是采样时放进模型的全部 token。

不只有你写的提示词,还包括:

›

系统指令

›

工具(Tools)

›

MCP

›

外部数据

›

消息历史

早期用大模型,多是一次性的分类、生成任务,写好提示词就够了。

但 Agent 不一样。它在循环里跑:每一轮都会产生新数据,这些数据下一轮可能有用,也可能没用。

所以上下文工程的本质,是从这个不断膨胀的信息宇宙里,挑出能放进有限窗口的那一小部分。

文章里有个很准的定义:现在的问题变成了------

"什么样的上下文配置,最可能让模型产生我们想要的行为?"

二、为什么上下文越多,反而越糟?

直觉上,窗口越大越好。

但 Anthropic 指出一个现象:上下文腐烂(context rot)。

随着窗口里的 token 增多,模型准确回忆其中信息的能力会下降。有的模型下降得温和些,但这个现象在所有模型上都存在。

因此,上下文必须被当作一种"边际收益递减的有限资源"。

文章用了一个很形象的比喻:注意力预算。

就像人的工作记忆有限,LLM 解析大量上下文时也要消耗预算。每多一个 token,预算就被消耗一点。

原因来自 Transformer 架构:每个 token 都要和其他所有 token 建立关联,n 个 token 就有 n² 组两两关系。上下文一长,注意力就被"摊薄"了。

再加上训练数据里短序列更常见,模型对超长依赖的经验也更少。

但请注意,这不是一道"悬崖",而是一个性能渐变的坡:长上下文下模型依然很强,只是检索精度和长程推理会打折扣。

所以 Anthropic 给出的指导原则很简洁:

找到最小的一组高信号 token,让期望结果出现的可能性最大化。

三、好的上下文长什么样?

文章分别拆了几个组成部分。

→1. 系统提示词:找到"合适的高度"

两种常见的失败方式:

›

太死板:在提示词里硬编码复杂、脆弱的逻辑,维护成本越来越高。

›

太模糊:只给空泛的高层指引,没有具体信号,还默认模型"懂你的背景"。

最佳状态是中间的"金发姑娘区":足够具体以引导行为,又足够灵活以提供强启发。

另外两个提醒:

›

用 XML 标签或 Markdown 标题把提示词分区,但格式本身会随着模型变强而越来越不重要。

›

"最小"不等于"短"。该给的信息要给够。

建议的做法:先用最好的模型测试一个最简提示词,再根据发现的失败模式逐步补充指令和例子。

→2. 工具:别搞"大杂烩"

工具是 Agent 与环境之间的契约。

最常见的失败,就是工具集臃肿,功能重叠,让人(和模型)不知道该选哪个。

文章里有句话很扎心:

如果人类工程师都说不清某种情况该用哪个工具,就别指望 AI Agent 能做得更好。

好的工具应当自包含、容错、用途清晰,返回的信息要节省 token。

→3. 示例:要"经典",别"穷举"

少样本提示依然值得推荐。

但不要把一长串边缘情况全塞进去。更好的做法是挑一组多样且有代表性的经典示例。

对 LLM 来说,示例就是"一图胜千言"里的那张图。

四、让 Agent 自己去"找"信息:即时检索

Anthropic 现在对 Agent 的定义很简单:LLM 在循环中自主使用工具。

传统做法是推理前用 embedding 检索,把相关内容预先塞进上下文。

现在越来越多团队加入"即时(just-in-time)"策略:

不预先加载所有数据,只保留轻量级的引用(文件路径、已存储的查询、网页链接),需要时再用工具动态加载。

Claude Code 就是这样处理大型数据库分析的:写有针对性的查询、保存结果、用 head、tail 等命令,从不把完整数据对象装进上下文。

这和人类很像。我们不会背下整个图书馆,而是依赖文件系统、收件箱、书签来按需查找。

引用本身的元数据也是信号:

›

tests 文件夹里的 test_utils.py,和 src/core_logic/ 里的同名文件,含义完全不同。

›

文件大小暗示复杂度,命名暗示用途,时间戳暗示相关性。

这带来了渐进式披露:Agent 逐层探索,只把必要的东西留在工作记忆里。

当然也有代价:运行时探索比预先检索更慢,而且需要精心设计,否则 Agent 可能误用工具、钻死胡同。

所以很多场景适合混合策略:

Claude Code 会把 CLAUDE.md 直接放进上下文以求速度,同时用 glob、grep 实现按需检索。法律、金融这类动态内容较少的场景,混合策略可能更合适。

Anthropic 的建议依然是那句:"do the simplest thing that works"(做最简单有效的事)。

五、长任务怎么办?三个杀手锏

当任务持续几十分钟甚至数小时(比如大型代码库迁移、综合性研究),token 总量必然超过窗口。

等更大的窗口行不行?Anthropic 认为不行:至少在可预见的未来,任何尺寸的窗口都会面临上下文污染和相关性问题。

于是他们总结了三种技术:

→技巧 1:压缩(Compaction)

当对话接近窗口上限时,总结内容,用摘要开启一个新窗口。

在 Claude Code 里,做法是让模型总结关键细节:保留架构决策、未解决的 bug、实现细节,丢弃冗余的工具输出,再加上最近访问的 5 个文件继续工作。

压缩的艺术在于取舍:压得太狠,可能丢掉当下看不出、之后才发现很关键的细节。

文章给工程师的建议是:

先最大化召回,确保压缩提示词覆盖所有相关信息;

再迭代提高精确度,删掉多余内容。

最安全、最轻量的压缩方式之一,是清理工具调用结果:一个工具在历史深处被调用过,Agent 为什么还需要再看一遍原始结果?这项能力已在 Claude 开发者平台上线。

→技巧 2:结构化笔记(Agentic Memory)

让 Agent 定期把笔记写到上下文窗口之外,需要时再读回来。

就像 Claude Code 列待办清单,或自定义 Agent 维护一个 NOTES.md。

文章举了个有趣的例子:Claude 玩《宝可梦》。

它能在数千步里精确记账,比如"过去 1,234 步我一直在 1 号道路训练,皮卡丘已经提升了 8 级,目标是 10 级"。没有任何关于记忆结构的提示,它自己就画出了已探索区域的地图,记下了解锁的成就和战斗策略。

上下文重置后,它读自己的笔记,继续数小时的训练或探险。

配合 Sonnet 4.5 发布,Anthropic 还推出了文件式的记忆工具(公开测试版)。

→技巧 3:子智能体架构(Sub-agents)

主 Agent 负责高层规划,专门的子 Agent 在干净的上下文里处理聚焦任务。

每个子 Agent 可能探索用掉几万 token 甚至更多,但只返回一份精炼的摘要,通常是 1,000--2,000 token。

详细的搜索上下文被隔离在子 Agent 内部,主 Agent 专心做综合分析。在复杂研究任务上,这种模式比单 Agent 有显著提升。

六、实战:5 个工单,Token 消耗差了多少?

理论讲完,看 Cookbook 里的真实案例。

场景是一个客服 Agent 处理一队工单。每张工单要走 7 步:

取工单 → 分类 → 查知识库 → 设优先级 → 转派团队 → 起草回复 → 标记完成

5 张工单,就是 35 次以上的工具调用。

→不压缩会怎样?

每一轮,整个历史(包括之前所有工具结果)都要重新发给模型。

结果是线性增长:

›

共 37 轮

›

输入 token:204,416

›

输出 token:4,422

›

总计:208,838

›

最后一轮单次输入已涨到 9,475

处理第 5 张工单时,上下文里还背着前 4 张工单的全部细节。

→开启自动压缩呢?

只需要在工具运行器里加一个 compaction_control 参数。这里阈值设为 5,000 token。

机制是:

监控每轮的 token 用量;

超过阈值,注入一条总结请求;

模型生成包裹在 <summary></summary> 标签里的摘要;

清空历史,只带着摘要继续。

实际发生了 2 次压缩:第一次消息数从 31 条降为 1 条,第二次从 15 条降为 1 条。

›

共 26 轮

›

输入 token:82,171

›

输出 token:4,275

›

总计:86,446

总消耗从 208,838 降到 86,446,减少约 59%。(这是我根据文中总数算出的比例。)

而且质量没掉:5 张工单依然全部完成分类、定优先级、转派并起草回复。

摘要里保留了每张工单的客户、问题、类别、优先级、团队、状态,还有"已学到的知识库信息"和"下一步"。

这很像真实的客服:处理完一单,简要登记,关掉,下一单。 你不会一直开着每篇知识库文章和完整回复草稿。

小提醒:Cookbook 正文里有一处写"只用了 79,000 tokens",与其给出的统计表(总计 86,446)不一致。本文以统计表里的数字为准。

七、怎么配置?什么时候别用?

→可调的关键点

›

阈值:不要设得太低,否则摘要本身就可能再次触发压缩。演示用 5,000 只是为了看效果,实际要多试。

›

摘要模型:可以用更快更便宜的模型来生成摘要。

›

自定义摘要提示词:告诉模型必须保留哪些信息。

›

没有工具的聊天应用:同样的原则,需要自己实现:统计 token → 超阈值请求摘要 → 用摘要替换历史 → 继续对话。

另外,如果你用的是 Claude Opus 5.5 或 Sonnet 5.5,Cookbook 推荐直接用服务端压缩,无需 SDK 层配置。本文介绍的 SDK 方式,适合不支持服务端压缩的模型,或想用另一个更便宜模型做摘要的情况。

→适合压缩的场景

›

逐项顺序处理(像工单)

›

多阶段工作流,每阶段可先总结再推进

›

分块处理大数据集

›

长时间的分析会话

›

每项相互独立的批量操作

→不适合压缩的场景

›

短任务:50k--100k token 内就能完成,压缩只是额外开销

›

需要完整审计留痕的任务

›

每步都严重依赖之前全部细节的高度迭代任务

›

服务端采样循环(如服务端网页搜索工具):缓存 token 会累积,可能基于缓存内容而非真实对话历史提前触发压缩

还要记住一点:摘要必然有损。 对工单这类场景通常可以接受,但要有意识。

八、给你的 5 条行动清单

把两篇文章合起来,可以这样落地:

先问自己: 此刻放进窗口的,哪些是高信号,哪些是噪音?

精简工具集: 能合并就合并,让"该用哪个"一目了然。

用经典示例代替规则清单。

让 Agent 保留引用,而不是堆满原文, 需要时再加载。

长任务先找"天然压缩点": 每处理完一项、每完成一个阶段就总结一次;阈值从 5k--10k 起试,看触发时机,检查质量,再调整。

写在最后

Anthropic 的结论很朴素:

即使模型越来越强,把上下文当作珍贵而有限的资源,依然是构建可靠 Agent 的核心。

更聪明的模型,需要的"手把手"规定更少。但每一步让什么信息进入模型有限的注意力预算,这件事不会过时。

下次你的 Agent "变笨"了,先别急着改提示词。

先看看它的上下文里,塞了多少不该塞的东西。

互动一下: 你在做 Agent 或长对话应用时,踩过哪些"上下文爆炸"的坑?欢迎留言聊聊。觉得有用,点个"在看"转给做 AI 的朋友吧。

资料来源:

›

*Anthropic:*Effective context engineering for AI agents

›

*Claude Cookbook:*Automatic context compaction

相关推荐
mCell19 分钟前
AI 时代,我为什么开始追求 100% 的测试覆盖率?
llm·ai编程·测试
后端小肥肠27 分钟前
漫画工坊上线用户破百:公众号漫画从需求到变现全复盘
人工智能·aigc·agent
isboyjc1 小时前
Lomo Agent:面向创作型、持续协作 Agent 的架构设计与工程实践
人工智能·架构·agent
Together_CZ1 小时前
EvoSkill: Automated Skill Discovery for Coding Agents——面向多智能体系统的自动化技能发现
agent·skill·skill discovery·evoskill·—面向多智能体系统的·自动化技能发现·coding agents
积流成海3 小时前
Agent演化史(九):多智能体的暗面,当一次 prompt 注入可以横向移动
prompt·agent·智能体·大模型应用
Dawson Zhu4 小时前
【LLM推理与Serving⑤】Prefix Cache前缀缓存:让重复prompt不再重复计算
人工智能·语言模型·架构·aigc·agi
Rocky Ding*4 小时前
深入浅出IDM-VTON论文精读:虚拟试衣怎样同时保住服装语义与局部细节
论文阅读·人工智能·深度学习·机器学习·aigc·ai-native·idm-vton
lucas_AI6 小时前
给 Claude Code 挂上代码地图:token 省了 39%,但先看你的瓶颈在哪
llm·agent
又过二十14 小时前
macOS 录屏剪辑工具DogSC「逐文件」搬进 Windows —— DogSC Desktop 转写记
ai·aigc·录屏工具