长上下文 Agent 工程拆解:200K+ token 的 6 个隐性陷阱与三层架构

当上下文从 8K 跃升到 200K,不是把窗口填满就好。Anthropic 工程团队把这种现象归纳为「context engineering」——系统指令、工具描述、MCP 外部数据与历史消息一起争夺有限的 attention budget,真正的工程难点是「怎么在预算下做出决策」。

核心事件

2024 年 Liu 等人在 arXiv 2307.03172 提出「Lost in the Middle」,证明 LLM 对长上下文中间段的信息利用率显著低于首尾两端。Anthropic 在 2026 年发布的「Effective context engineering for AI agents」文中进一步指出:把窗口撑到 200K 之后,信息检索与长程推理的表现反而比短上下文更脆弱——这与「窗口越大越好」的直觉相反。Google DeepMind 的工程博客「What is a long context window?」也呼应了这一点:200K 窗口打开了能力上限,但没有解决注意力分配的物理限制。社区端,HN 上关于长窗口是否「solve all your problems」的讨论长期分裂——一方把 200K 当成记忆的替代品,另一方坚持它只是容量不是记忆。

技术解析

Anthropic 把 Agent 上下文拆成三层:① 系统指令与工具描述(几乎不变,占窗口但几乎不消耗推理预算);② 实时消息与工具结果(高频变化);③ 长期记忆与外部检索(MCP、知识库)。LLM 的「attention budget」决定了第二层一旦膨胀,第二层与第三层都会受影响——这正是「Lost in the Middle」问题的工程化表现。Anthropic 在文中明确写到:即便模型有 200K 甚至更大的窗口,系统提示词、工具描述、MCP 资源描述这三类常量都会持续占据 attention 容量,真正给到对话历史的预算会被显著压缩。

mermaid diagram

Anthropic 提出三条核心工程动作:compaction 把历史消息摘要回写到 working memory;structured note-taking 把关键决策从消息流抽离到外部笔记;multi-agent architectures 用子 Agent 隔离上下文,父 Agent 只看到结果摘要。vLLM 在 GitHub 累计 89,175 stars,2026-08-16 仍在活跃维护,正是 PagedAttention 解决长上下文 KV cache 的开源代表——它把 KV cache 分页管理,避免长序列下显存碎片;LangGraph(39,784 stars,同日活跃)把 compaction 设计成内置节点,checkpointer 把摘要落到 PostgreSQL 或 SQLite——这是 OpenAI tiktoken(19,003 stars,2026-05-24 最后提交)之外另一层级的工程取舍:tiktoken 在 token 计数与预算控制层提供基础,而 LangGraph/vLLM 把长上下文的运行时开销与状态管理做成框架能力。

mermaid diagram

进一步看,multi-agent 隔离上下文并不是简单的「拆任务」:每个子 Agent 持有独立的 system prompt、独立的工具集、独立的对话历史,父 Agent 看到的只是「这个子任务的结果 + 一段结构化结论」。这种隔离在生产环境带来三个直接收益:① 子任务失败不会污染父上下文;② 子 Agent 的 system prompt 可以针对子任务特化,提升单步质量;③ 父 Agent 的 attention budget 被显著释放,长程规划能力提升。代价是 token 总量上升(子 Agent 之间需要结构化传递),工程上需要把「摘要粒度」与「子任务边界」调成可配置项,LangGraph 的 sub-graph + Send API 正是为此设计。

关键点

  • Lost-in-the-Middle 实证:首尾段信息利用率高,中段断崖式下降,与直觉相反——这是 attention budget 的物理限制,不是 prompt 工程能彻底解决的
  • attention budget 是隐性约束:200K 窗口不等于 200K 可用,系统指令 + 工具描述都会争夺预算,真实可分配给历史的容量往往只有声称值的 60-70%
  • compaction + note-taking + multi-agent 是工业界三件套:Anthropic、LangGraph、vLLM 各取一项,组合起来才能撑住 200K Agent 的生产
  • 子 Agent 隔离上下文是 2026 年主流:父 Agent 不直接持有子任务的全量消息,而是只看到结构化结果,这是「在 200K 下不丢决策」的关键
  • tiktoken 与 LangGraph/vLLM 是不同抽象层:前者管 token 计数与预算,后者管运行时开销与状态,生产 Agent 两层都要用
  • HN 社区共识:长窗口是容量不是记忆——HN 39419008 等讨论长期分裂,大多数从业者把它当成 buffer 不是 store,真正的工程是「怎么在该丢的时候丢」

行业影响

长上下文从「窗口竞赛」转向「context engineering」,意味着 LLM 厂商与 Agent 框架都会把 compaction、检索、multi-agent 当作一等公民能力,而不是 prompt 调优的边角。生产环境评测会从「最大窗口多少」变成「compaction 后召回率多少」「长程任务成功率多少」「子 Agent 摘要保真度多少」。对开发者来说,选型时要把「框架是否原生支持 compaction」「是否有 production-grade checkpointer」「子 Agent 隔离是否开箱即用」放进评估表——纯靠 prompt 工程撑 200K 的方案,在 attention budget 限制下会持续暴露出失败模式。

结语

200K+ token 时代,工程重点不是窗口大小,而是「在 attention budget 下,Agent 该看见什么、该记住什么、该丢掉什么」。Anthropic 的 compaction、LangGraph 的 checkpointer、vLLM 的 PagedAttention,三件套拼起来才是可生产的 200K Agent——窗口从来不是免费的午餐。

参考资料

官方文档

开源项目

行业报道 / 学术

社区讨论


本文由 AI 生成。内容基于公开资料整理,可能存在事实偏差,引用链接请以原始来源为准。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注