跳转到内容

Effective context engineering for AI agents

这是一篇 Anthropic 于 2025-09-29 发布的工程文章。它的核心判断是:随着 agent 进入多轮、长时、强工具使用的工作流,prompt engineering 已不足以描述真实工程问题,开发重点正在转向更宽的 Context engineering

  • 文章把 context engineering 定义为:在每次推理时,持续策划并维护“哪些 token 进入模型上下文”,而不只是写好 system prompt。
  • 它明确把 prompt engineering 视为较窄的子问题;当系统里出现工具、Model Context Protocol (MCP)、外部数据、消息历史和运行时检索后,真正要优化的是整个上下文状态。
  • 文章把 context 当成有限且会衰减的资源。随着 token 变多,模型会出现 context rot,注意力预算也会被不断稀释,因此“更多上下文”不自动意味着“更好表现”。
  • 它给出的总原则很清楚:找出“最小的高信号 token 集合”,让模型最有可能产出目标行为。
  • system prompt 的设计重点不是越长越细,而是处在合适的 altitude。过度硬编码会脆,过度抽象又会缺乏行为锚点。
  • 工具设计在这篇里被当成上下文设计问题的一部分:工具应该清晰、低重叠、token 高效,否则 agent 会在选择、误用和长回合维护中浪费上下文预算。
  • few-shot examples 仍然重要,但文章反对把大量 edge cases 当规则清单塞进 prompt;更好的做法是用少量 canonical examples 提供稳定信号。
  • 文章更偏好 agentic retrieval 而不是一次性预取全部信息。让 agent 在运行时按需探索,通常比预先塞满索引、长摘要和静态上下文更稳。
  • 同时它也承认存在混合策略:像 Claude Code 这样,先把 CLAUDE.md 一类稳定项目指令放入上下文,再通过 globgrep 等工具做 just-in-time 检索。
  • 对长时任务,文章重点列出三类 context engineering 技术:compaction、structured note-taking / agentic memory、以及 sub-agent architectures。
  • compaction 的重点不只是“缩短历史”,而是高保真地保留架构决策、未解问题和关键实现细节,同时清掉冗余工具输出。
  • structured note-taking 则把重要状态写到上下文外部记忆里,让 agent 能跨多轮、多次重置后继续推进复杂任务。
  • sub-agent 架构在这里的价值不是单纯并行,而是把大体量探索隔离在独立 context window 里,再向主 agent 返回压缩后的结果。
  • 文章最后的工程建议仍然非常克制:随着模型更强,系统会逐步需要更少人类预先编排,但短期内最稳的原则仍是 “do the simplest thing that works”。

ℹ️ Conflict:

  • 这篇强烈主张“最小高信号上下文”,但最小集合并不存在通用答案;任务目标、风险容忍度和可验证性不同,都会改变最佳边界。
  • 它偏向 just-in-time retrieval 和渐进式探索,但在高时效、高结构化场景里,前置加载部分稳定信息仍可能更高效,因此预取与运行时探索通常是一条连续谱。
  • 更大的 context window 会缓解一部分约束,但文章明确认为它不会消除 context pollution、信息相关性和注意力稀释问题,因此“等更大窗口”并不是长期解法。
  • Anthropic, “Effective context engineering for AI agents”, 2025-09-29.
  • 原文摘录:[llm-wiki/raw/anthropic/Effective context engineering for AI agents](/raw/anthropic/Effective context engineering for AI agents.md)