从「提示工程」到「上下文工程」:Anthropic 一文把 Agent 的注意力账算清楚

0 阅读10分钟

堆进窗口的 token 越多,context rot 越真实——不是某一家模型不行,而是长上下文里「大海捞针」普遍变难。Anthropic 把 context engineering 说成 prompt engineering 的自然延伸:前者管每一轮推理前整盘状态怎么策展,后者只管 instructions 怎么写;手段包括 JIT 检索、压缩、结构化笔记、子 Agent 分工——像剪辑师剪掉废镜头。[1]

Context 在采样时就是送进模型的那坨 token:system、工具、MCP、外部材料、历史消息……它不是无限硬盘,而是会贬值的注意力预算。[1]

先扫一眼

  • 主线:为何 context 会「腐烂」→ context engineering 是什么 → 运行时与长程手段 → 对 Agent 落地 意味着什么
  • 深度:文内  ### 深度解析 与 官方叙事与可核对事实;文末 结论与讨论 与 延伸阅读

一、一句话心智模型

工程目标:找到尽可能小的一组高信号 token,让模型稳定产出你要的行为。[1]

人话:别用「字数多」感动自己;要像剪辑师——剪掉废镜头,留下的每一帧都要推动剧情。

图片


二、context engineering vs. prompt engineering

维度Prompt engineeringContext engineering
焦点主要写 system / 指令怎么组织整盘状态:本轮到底喂啥给模型 [1]
时间感偏一次性把指令写好多轮循环里每次都要策展 [1]
典型组成系统提示系统提示 + 工具 + MCP + 外部数据 + 消息历史 …… [1]

Agent 在循环里会不断制造「可能有用」的信息;上下文工程就是每次决定带什么上路的艺术与科学(Anthropic 引用社区表述称之为 art and science)。[1]

图片

深度解析:(n^2) 直觉与「窗口变大」的误区

事实:文内给出 Transformer 注意力随长度增长的直觉。原文观点:窗口再大仍要策展。本文解读:工程上应区分 「模型窗口上限」 与 「任务有效上下文」——后者常由工具返回长度、日志噪声决定;优化工具比盲目扩窗口更划算(与同系列 Writing tools 一致)。[1][3]


三、为什么「上下文工程」正在成为主线

3.1 context rot(上下文腐烂)

needle-in-a-haystack 类评测揭示:上下文越长,从其中精确回忆信息的能力往往越差——文献与业界讨论中常称 context rot。[1][5]

这不是「某一家模型不行」,而是普遍现象;不同模型只是衰减陡缓不同。[1]

3.2 attention budget(注意力预算)

类比人类工作记忆有限,模型在长上下文里也有注意力预算每多一个 token,都在消耗这份预算。[1]

3.3 架构直觉(非恐吓,是算账)

Transformer 里 token 之间存在两两关联,长度 (n) 时关系规模大致按  (n^2)  的量级去思考「为啥越长越吃力」;上下文拉长还会与位置编码外推等带来的精细度折损并存——因此往往是性能渐变而不是「一到某长度立刻全废」。[1]

对团队的意义:窗口再大,污染与相关性问题仍在;追求「最强 Agent 表现」时,**策展比「全塞进去」**更关键。[1]


四、有效上下文的「解剖课」

4.1 System prompt:海拔要刚好(Goldilocks)

两个常见翻车:[1]

  1. 太矮:堆砌 if-else、 brittle 规则,维护地狱。
  2. 太高:空泛大词,假设模型和你共享未言明的背景。

正解够具体能约束行为,又够弹性留下稳健启发式——像飞机自动驾驶:航道要清,但别手写每一个气流扰动的应对。[1]

实操:可用分区(如背景、指令、## Tool guidance## Output description),XML 标签或 Markdown 标题分块;但模型变强后,格式本身可能次要,关键仍是信息是否最小且充分。[1]

起步法:用最的 prompt + 当前最好模型试跑,再按失败模式增量补指令与示例。[1]

4.2 Tools:合同要写「省 token、促进行为」

工具是 Agent 与行动/信息空间的契约;返回要 token-efficient,并引导 Agent 少做无效扩展。[1]

原则(与专文一致):自包含、鲁棒、意图极清晰;参数名描述性不歧义、发挥模型长处。[1][3]

常见失败:工具集浮肿、功能重叠 → 该用哪个工具人类都说不清,别指望模型更好。[1]

中文例search_orders 描述写清「按日期/状态/金额搜订单,返回字段含运费与支付」优于 query_db 一句话糊弄。

4.3 Examples:要「典范画」,不要「条款汇编」

few-shot 仍是强建议;但不建议把无穷边界条件洗衣清单塞进 prompt。[1]

改法:少量多样、典型、直接演示期望行为的例子——对 LLM,例子是一图胜千言。[1]


五、运行时检索与 Agentic search:「即时加载」

图片

5.1 从「推理前一把检索」到「边干边取」

很多应用先做 embedding 检索,把材料一次堆进 prompt。Agent 思潮下,越来越多团队叠加 just-in-time(即时)  策略:只带轻量句柄(路径、已存查询、链接),用时再工具拉取。[1]

Claude Code 叙事:针对大库可写定向查询、落盘结果,用 head/tail 等只看局部,而不把整坨原始对象塞进上下文。[1]

比喻:人类不会背下整本法规,而是靠目录、书签、检索;Agent 也一样。

5.2 元数据也是信号

同名的 test_utils.py 在 tests/ 与 src/core_logic/语义不同;目录层级、命名、时间戳都在帮人和模型判断「何时用、怎么用」。[1]

5.3 Progressive disclosure(渐进披露)

允许 Agent 探索式一层层揭示上下文:文件大小暗示复杂度,命名暗示用途,时间暗示新鲜度;工作记忆里只留当前必要子集,其它靠「记笔记」外置。[1]

5.4 Trade-off

运行时探索慢于预计算好的检索;还要给模型对的工具+启发式,否则会浪费上下文追死胡同。[1]

5.5 Hybrid(混合)

预取一部分换速度,再按需深挖;边界因任务而异。Claude Code 被点名:例如 CLAUDE.md 可先塞进上下文,glob/grep 再即时捞文件——兼避陈旧索引复杂语法树硬啃。[1]

个人延伸(非原文结论) :合规/金融材料「变更少」的场景,预取+版本戳往往更划算;研发代码库则偏 JIT


六、长程任务:窗口不够用时三板斧

长程=动作序列跨越远长于窗口仍要保持目标一致(大规模迁移、长研究项目等)。原文认为:等窗口无限大不是银弹——污染与相关性仍会拖累「最强表现」。[1]

6.1 Compaction(压缩/折叠)

窗口快满时,把对话摘要新开一轮上下文,以摘要接续。[1]

Claude Code 做法叙事:把历史交给模型压缩,保留架构决策、未解 bug、关键实现细节,扔掉冗余工具输出;再继续时附最近访问的少量文件(原文举「五个最近文件」类叙述)。[1]

艺术在取舍:压太狠会丢了「当时不起眼、后来要命」的细节;建议在复杂 trace 上调压缩 prompt:先召回拉满,再迭代精度删冗余。[1]

低风险小动作:深层历史里的工具调用/raw 结果,常可清掉——已经执行过,未必还要原文重看;Claude 开发者平台上也有 tool result clearing / context management 一类能力自述,可对照文档使用。[1][6]

6.2 Structured note-taking(结构化笔记 / Agent 记忆)

让 Agent 定期写笔记到上下文外,后续再读回。[1]

例子:Claude Code 的 to-do;你自己的 NOTES.mdPokémon 长程玩法叙事:跨成千上万步仍记里程式目标、地图、战术笔记;上下文重置后读自己的笔记续跑。[1]

产品侧:Sonnet 4.5 周期曾强调 memory / context 管理能力,开发者平台有 file-based memory tool beta 叙述,适合跨会话堆知识库与项目状态(以当前文档为准)。[1]

6.3 Sub-agent architectures(子 Agent)

主 Agent 规划,子 Agent 用干净窗口深搜;子 Agent 可能烧几万 token,但只回报 1k–2k 级浓缩结论。[1]

原文指向多 Agent 研究系统实践,称复杂研究任务上相对单 Agent 显著提升。[1][4]

6.4 怎么选(原文归纳)

  • 对话来回多 → compaction
  • 迭代开发、里程碑清晰 → note-taking
  • 复杂研究、并行探索划算 → multi-agent [1]

七、Agent 定义(文中更新)

在 Building effective AI agents 一文之后,Anthropic 更倾向一句定义:Agent = 在循环里自主使用工具的 LLM(并引用社区讨论)。[1][2]
模型越强,自主等级可越高。[1]


八、重要「指标」与工程考量(原文多为定性,整理成检查表)

考量你要问自己的
信号密度本轮上下文是否还能删而不伤目标?[1]
context rot 风险暴长历史是否让「大海捞针」变难?[1][5]
工具税工具返回是否啰嗦、是否诱发无用扩展?[1][3]
JIT 成本探索延迟 vs 预取 staleness(陈旧)之间的平衡?[1]
长程连续性compaction 是否丢关键细节?笔记是否可检索?子 Agent 摘要是否失真?[1]
人能否判决若工程师都说不清该用哪个工具,模型也不会 magically 更好 [1]

九、思辨延伸(非 Anthropic 结论)

  1. 上下文工程 = 组织知识治理:谁有权写 CLAUDE.md、谁维护 NOTE、何时 compaction——是流程问题。
  2. 「最小高信号」与合规:金融场景的最小集合可能必须含固定Disclaimer——「小」不等于「短」,但要去噪音。
  3. 评测:除端到端任务外,可加 context  Budget 指标(每步有效 token、工具返回平均长度)。
  4. 和 RAG 的关系:RAG 是解决「材料从哪来」;context engineering 还多解决「本轮带多少旧历史」「哪些工具痕迹可删」。

官方叙事与可核对事实:Claude Code 叙事与通用 Agent

事实:文中大量举例来自 Claude Code 实践。原文观点:JIT、笔记、子 Agent、compaction。本文解读(推断) :其他载体(浏览器 Agent、纯 API 无本地文件)需 替换等效 primitive(例如以检索/对象存储代替 grep);照搬名词不照搬环境会失灵。


十、上手与延伸阅读(官方入口)

文末指向 Claude Developer Platform 上的 memory and context management cookbook(链接以官网为准)。[1]

设计与工具书写:Writing tools for AI agents。[3]
多 Agent 模式:How we built our multi-agent research system。[4]


结论与讨论

技术坐标

context engineering 把 prompt engineering 从「写好说明书」扩展到 「每轮推理前的状态策展」——与 工具设计、记忆产品、多 Agent 同一流水线;context rot 论述把「长窗口」从卖点拉回 信号密度 问题。

批判性问题

  1. Compaction 是否删掉 事后才重要 的 trace——如何留「可检索的外置笔记」?
  2. 子 Agent 摘要 失真 时谁负责——有无交叉检验?
  3. 「最小高信号」与 审计留痕 是否冲突?

独立判断(事实 / 原文观点 / 本文解读)

类型内容
事实原文 URL;引用 context rot 讨论与 Chroma 等链接。[1][5]
原文观点每轮策展;JIT、渐进披露;长程三板斧。
本文解读最值得建立的是 上下文预算指标(工具返回均长、有效 token 比例),否则优化无的放矢。

模型再强,上下文仍是珍贵且有限的注意力预算。Anthropic 这篇的核心就一句:每一轮都问——「为了达成目标,最少要给对方看哪几样高信号?」 [1]

能力、API 与特性发布节奏以 Anthropic / Claude 平台最新文档为准。


参考文献与延伸阅读

  • [1] Effective context engineering for AI agents — 原文
  • [2] Building effective agents
  • [3] Writing tools for AI agents
  • [4] Multi-agent research system
  • [5] Chroma — context rot
  • [6] Anthropic — context management 新闻稿/产品页(以页面更新为准)
  • 可先读 Building effective agents 建立 Agent 与工具循环概念,再读本篇「每轮策展」。