无限上下文窗口是个神话:别再往里塞东西了

Elizabeth Fuentes Leone · AWS · 2026-10-13
听中文精华AI 合成朗读00:00
无限的上下文窗口是一个神话。
— Elizabeth Fuentes Leone

关联

来自 AWS 的 Elizabeth Fuentes Leone(开场时她还纠正了议程上的名字错误)做了一场快节奏的演讲,主题是:智能体应用(agent)为什么经常越跑越糊涂?

答案不是更大的上下文窗口,而是更好地管理窗口里的内容。她把这叫作上下文工程(context engineering)。

为什么窗口越大,智能体反而越笨?

一个典型的场景:你有一个智能体,负责监控某个应用,每次都去拉取日志。

每次拉取,数据都堆进上下文窗口,窗口越滚越大,因为智能体就是靠窗口来记住事情的 。

一年前流行答案是:加 token,换更大的窗口。

但现在我们知道这不管用——因为存在注意力 U 型曲线:数据太多时,模型会忘掉中间的部分,只记得开头和结尾 。

更糟的是,窗口里的信息还可能毒害智能体——比如混进提示注入攻击 。

所以上下文工程的定义很简单:在模型需要的时候,给它需要的信息,而不是一股脑全给它。

四个策略:外置、筛选、压缩、隔离

Elizabeth 把应对手段归为四类。

外置(externalize):把大数据挪到持久化存储里,窗口里只留一个记忆指针。筛选(select):只取相关的内容。压缩(compress):做摘要、压缩信息。

隔离(isolate):不同智能体各用各的上下文,不互相污染 。

具体怎么落地?她用了 strands——AWS 维护的开源框架,完全免费,而且不绑定任何模型,想换 OpenAI、Anthropic 的模型,加一行代码就行 。

对话越聊越长怎么办?

最简单的办法是框架内置的对话管理器,3 种策略:滑动窗口只保留最近的消息;摘要式管理器把旧消息总结掉、保留近几条;

也可以两者结合 。

比如摘要策略只需一行配置:保留最近 4 条消息,其余 50% 做摘要。每次会话都自动这样管理窗口 。

记忆分三种,别全塞进一个窗口

短期记忆就是最近的对话历史。但新会话开始时怎么办?

可以建长期记忆,用向量数据库存过去的对话,用不同的提示词决定存什么 。

还有关系型记忆,用实体图(她推荐去 Neo4j 的展台了解)来表达事物之间的关联。三种可以组合使用。

海量日志的正确处理方式

回到那个日志爆炸的例子。正确做法是:工具拉回日志后,另一个工具把日志存到存储里,只返回一个存储 ID 留在窗口里。

再由一个工具去理解日志,直接告诉智能体「日志没问题,你不用看原文」。真需要原文时,再凭 ID 去取 。

多智能体协作,更要少共享

应用复杂到一个智能体不够时,就要上多智能体(她展示了 strands 的 swarm 模式)。

她的警告很直白:在智能体之间共享整个上下文窗口,等于「往别的智能体里倒垃圾」,因为不是每个智能体都需要全部信息 。

做法还是记忆指针——通过共享的调用状态传 ID,而不是传数据本身。

智能体死循环怎么办?

有的智能体会陷入死循环,反复调用同一个工具,永不停止。

解决办法是给工具设调用上限,比如某个搜索工具最多调 3 次,循环自然终止 。

另外,工具的返回要有清晰明确的响应,模糊的返回也是循环的诱因。

外部接口太慢,就用异步

调用外部 API 或 MCP 工具时,如果对方迟迟不响应,同步等待会把整个应用拖死。

改用异步:先发起任务(比如用 FastAPI 写两个工具,一个启动任务、一个查询状态),下一次调用时再取回结果。

她实测后说效果差别很大 。

最后的四条反模式

不要上下文塞满(context stuffing)——不需要把整个厨房都搬进窗口。慎用摘要,因为摘要过程可能丢掉智能体真正需要的信息。

不要把所有东西都传给引擎。

工具返回大数据时,外置、筛选、用记忆指针;多个智能体需要同一大数据时,共享指针不共享数据。

本集带走

  • 上下文窗口越大不等于效果越好:数据太多时模型会忘掉中间,只记得头尾。
  • 上下文工程的核心:在需要的时刻,给模型需要的信息。
  • 四大策略:外置到存储、筛选相关内容、压缩摘要、按智能体隔离上下文。
  • 大文件(日志、数据库结果)用记忆指针代替原文,多智能体间也只共享指针。
  • 给工具设调用上限防止死循环,慢接口改异步处理。
全部金句 5 条

无限的上下文窗口是一个神话。
The infinite content window is a myth.
—— Elizabeth Fuentes Leone · [00:34]

我们有大量数据,但如果数据超级超级大,智能体会忘记曲线中间的部分。
We have a lot of data, but if the data is super, super big, the agent is going to forget the middle in the curve.
—— Elizabeth Fuentes Leone · [02:19]

上下文工程就是在模型需要的时候,给它所需要的信息。
But content engineering is giving the model information it needs when it needs it.
—— Elizabeth Fuentes Leone · [02:43]

有时候内容窗口在毒害智能体,因为你的内容窗口里可能有提示词注入。
Sometimes the content window is poisoning the agent because you can have a prominent injection inside your content window.
—— Elizabeth Fuentes Leone · [02:54]

在智能体之间共享上下文窗口,就像是给其他智能体添加垃圾,因为并不是所有智能体都需要彼此之间的信息。
You share the context window between agents is like add garbage to the other agents because no all the agents need the information between them.
—— Elizabeth Fuentes Leone · [09:59]

接着看

顺着「智能体」挖下去

换个口味