← pinyu.ai
Context Engineering

The Rot

上下文越长,智能越短。8 篇前沿文献交汇于同一个被忽视的真相——以及同一套解法。

pinyu · 2026.03
Core Thesis

实战表现最好的 AI Agent 收敛到了同一个极简架构——一个 while 循环。18 个模型的控制实验揭示了原因:上下文越长,智能越短。解法不是更大的窗口,而是更好的过滤:渐进式披露管理输入,强制验证管理输出,增量式工作管理时间跨度。

证据线:Anthropic · Cursor · Manus · LangChain · Chroma Research · SWE-agent · Liu et al. · 12 Factor Agents (18 models, 194k+ LLM calls, 8 papers)
01

Harness

脚手架决定智能

2025 年底,Vercel 做了一个违反直觉的决定:删掉 Agent 80% 的工具。

Token 从 145k 降到 67k。步骤从 100 降到 19。延迟从 12 分钟降到两分半。Agent 从无法完成任务——变成了顺利完成。

少给了 80%,多做了 100%。

如果这是孤例,不过是个趣闻。但 2026 年初,一个趋势已经无法忽视:Claude Code、Cursor、Manus——当下最成功的 AI Agent 产品,架构上收敛到了同一个极简结构。

The Loop
while model returns tool_call:
    result   = execute(tool_call)
    context.append(result)
    response = call_model(context)
没有 DAG 编排,没有多角色辩论,没有状态机。
模型决定下一步做什么,脚手架只负责执行并返回结果。

Claude Code、Cursor、Manus、Devin——底层全是这个循环。Anthropic 称之为"模型控制循环"。它把一个跨越漫长上下文的复杂决策,劈碎成一连串短上下文的简单决策。

42→78%
同一模型 (Opus 4.5)
仅换脚手架 · CORE-Bench
−46.9%
Cursor 按需加载
token 削减量
0→100%
Vercel 删除 80% 工具后
任务成功率

LangChain 用自己的数据补了一块拼图:不换模型,只调脚手架——Deep Agent 在 Terminal Bench 2.0 上从 Top 30 升至 Top 5

Princeton 的 SWE-agent 走得更远——连交互界面都重新设计。他们称之为 Agent-Computer Interface(ACI):不给人类的 Shell,而是定制命令集——文件查看器每次最多 100 行,搜索最多返回 50 条。SWE-bench 成功率从 3.8% 升至 12.5%。同一个模型,换一副更合手的工具。

Harrison Chase(LangChain)的定义最直接:"框架是抽象,脚手架是开箱即用的全套方案。"所有人在比引擎马力,赢家在调方向盘的角度。但为什么更少的信息反而产生更好的结果?


02

Context Rot

支持长上下文 ≠ 长上下文效果好

2025 年 7 月,Chroma Research 发布了一份技术报告:Context Rot——上下文腐烂。

实验极其克制:固定任务难度,只增加输入长度。18 个主流模型,194,480 次调用。

核心发现
所有模型,性能随输入长度单调下降。无一例外。即使任务难度完全不变。即使在最简单的复制粘贴任务上。

这些模型号称百万级 token 窗口,在 NIAH(Needle in a Haystack)基准上接近满分。但 NIAH 本质是字面检索——在干草堆里搜一根已知的针。真实任务几乎从不是字面匹配。当 Chroma 把任务改为语义匹配,性能曲线开始塌陷。 引入语义相近的干扰项后,退化进一步加剧。

Liu et al.(Stanford / UC Berkeley)揭示了退化的另一个维度——位置。他们发现了一条 U 型性能曲线:模型对上下文开头和结尾的信息利用率最高,中间部分几乎被"遗忘"。这不是分心——是 Transformer 架构的位置偏差。即使把无关文档替换成占位符,U 型曲线依然存在。信息不只是"太多了"——还放错了地方。

Chroma 还揭露了一个更反常识的现象:所有 18 个模型处理打乱顺序的上下文时,表现反而优于处理逻辑连贯的文本。连贯叙事的"惯性"误导了模型——当语义干扰项被打散,注意力反而不容易被牵着走。

最具穿透力的证据来自一个看似荒诞的实验——Repeated Words。

任务:给模型一万个 "apple" 中混入一个 "apples",要求原样输出。零推理,纯复制粘贴。

所有模型性能随长度下降。但真正让人停下来的,是失败的方式

模型失败方式
Gemini 2.5 Pro输出乱码:-\n-\n--\n-\n-
Claude Opus 4拒绝执行——"可能涉及版权材料的复制"
GPT-4.1直接拒绝——"I'm sorry, but I can't help with that"
Qwen3-8B"I need to chill out. Maybe go to the beach."

连复制粘贴都做不好,失败方式又如此离奇——暴露出来的,是架构本身的边界。别把它们当数据处理器——它们是注意力驱动的动态系统。输入长度不只改变了数据量,它改变了系统本身的行为。五千个 "golden" 把 Qwen 推入了潜空间的某个完全不同的区域。在那里,它变成了另一个东西。

不同模型的腐烂方式也不同:

Claude 系列
不确定时倾向拒绝回答
"No answer can be found."
宁可不答,不可答错。
VS
GPT 系列
不确定时倾向自信地给出错误答案
幻觉率最高。
总要给一个答案。

同一个压力源,完全不同的失败路径。腐烂的方式取决于被腐烂的材质。

更致命的是,长上下文让检索和推理互相侵蚀:

Focused · ~300 tokens
只给相关片段。模型只需推理。
表现优异。
VS
Full · ~113k tokens
给完整对话历史。检索+推理同时发生。
性能显著下降。

所有模型都能推理——focused input 已经证明了。但当检索和推理被迫在同一个长上下文中发生,两者互相侵蚀。检索消耗了注意力预算,留给推理的不够了。让一个数学天才在安静书房解方程——轻松。让同一个人在嘈杂菜市场解方程,同时还要找一个穿蓝衣服的人——方程没变难,认知资源被分流了。

Dex Horthy("12 Factor Agents")把阈值划在模型容量的 40%。超过这个点,信噪比退化,Agent 开始犯看似推理错误、实际是信息过载的错误。


03

渐进式披露

解法

如果注意力是有限预算,解法就是分层花它。

1990 年代,Nielsen Norman Group 提出了渐进式披露(Progressive Disclosure):只展示用户此刻需要的,其余按需呈现——降低认知负荷,让注意力聚焦。三十年后,这条 UX 原则在 AI Agent 内部找到了新生。

多篇文献不约而同地指向同一个范式转换:从"推送"到"拉取"。不是把所有可能相关的信息推入上下文,而是让 Agent 自己发现此刻需要什么。Manus 用文件系统作为无限容量的外部上下文——信息不丢失,只是移出了注意力窗口,上下文中仅保留路径引用——一种可恢复的压缩。

核心思路归结为分层加载。上下文窗口的每个 token 都在竞争注意力——把它当预算花,别当垃圾桶倒。先给轻量索引做路由,确认相关后才加载完整内容。

Claude Code 的 Skills 是教科书式的实现:启动时只加载 Skill 名称和描述,几十个 Skill 的元数据占不了多少 token;当用户请求匹配时,才加载完整内容;执行中需要文档和示例,再按需读取。三层渐进——索引 → 内容 → 支撑材料——上下文成本随实际使用增长,而非随安装量增长。

Cursor 把同样的思路用在工具上:MCP 工具只暴露名称,完整定义按需加载——本质上是 Tool RAG,从工具注册表中只取当前相关的工具。A/B 测试 token 降 46.9%。Manus 每步重写 todo.md,把全局计划锚定在注意力最强的近端区域。

而 Claude Code 那个看似什么都不做的 TodoWrite——不执行计算,不修改文件,只让模型写下当前计划。为什么有效?长任务中,上下文持续膨胀,模型逐渐"忘记"自己在做什么。TodoWrite 强制模型重新显式化目标——在不断膨胀的上下文中手动放置一盏灯。

洞见
这些空操作工具的真正角色,是对注意力衰减的工程修补。每次"写下计划",就是把全局目标重新拉回注意力的近端——强制刷新,防止漂移。

每一步,模型只看当前结果和近期历史。全局靠锚点维持,错误靠即时反馈修正。一个循环,一套分层过滤,足矣。


04

假设它会犯错

可靠性来自不信任

渐进式披露解决了输入端——模型看到什么。但输出端呢?

LangChain 发现最普遍的失败模式:Agent 生成代码后,仅凭"看起来正确"就宣布完成。解决方案不是让模型更聪明——是假设它一定会犯错,然后为此设计系统。

他们加了两道 Middleware。PreCompletionChecklistMiddleware 在 Agent 退出前注入验证清单——强制跑测试,不是建议。LoopDetectionMiddleware 追踪文件编辑次数——同一文件改超过阈值,打断循环,强制重新规划。

Anthropic 更激进——用 Puppeteer 做端到端浏览器测试。不是单元测试,是像真实用户一样点击界面来验证功能。SWE-agent 在 ACI 层内置语法检查护栏:提交的编辑有语法错误?系统直接拒绝并返回错误信息,让 Agent 立刻修复。

反直觉
Manus 发现:不要清理失败信息。保留错误的动作和堆栈跟踪在上下文中——模型能从中学习,避免重复犯错。你的第一反应是清理噪声,但这些"噪声"恰恰是最有价值的负面示例。

当任务跨越多个上下文窗口,挑战从"这一步对不对"升级为"方向还对不对"。Anthropic 的方案最系统:每个 Agent 会话只处理一个功能,完成后 git commit 并更新 progress.txt 进度日志。下一个无状态的 Agent 从日志中恢复方向——增量式工作流,每步留下一个干净的、有文档记录的状态。

在单次会话内,资源分配也有讲究。LangChain 的 Reasoning Sandwich:在规划和验证阶段投入最高推理预算,中间执行阶段适当节约——比全程最高预算高出 12.6 个百分点(66.5% vs 53.9%)。不是总预算更多,是分配更聪明。

洞见
可靠的 Agent 不是不犯错的 Agent——是犯错后能恢复的 Agent。渐进式披露管理输入,强制验证管理输出,增量式工作管理时间跨度。三层防线共同对抗 Context Rot。

05

盲点

这可能只是过渡方案

Google 赌的是另一个方向:200 万 token 窗口,让模型自己搞定。如果 Context Rot 是当前架构的弱点而非根本约束,下一代架构——更好的位置编码、更高效的注意力机制——可能大幅上移那个 40% 阈值。Anthropic 自己也承认:Claude Code 的脚手架被设计为"随模型进步而缩减"的。

但 40% 阈值会逼近 100% 吗?

一个迹象值得注意。Chroma 测试的模型跨越三代架构:GPT-3.5 到 4.1,Claude 3.5 到 4,Gemini 2.0 到 2.5。退化幅度在缩小,但退化本身从未消失。每一代更好了,没有一代突破"越长越差"的规律。

还有一条来自完全不同领域的线索。人类工作记忆——著名的 7±2 项目——几万年来没有显著扩大。大脑走了另一条路——进化出精密的过滤机制:选择性注意、抑制性控制、分块编码。过滤,而非扩容。

这可能只是类比。也可能暗示一个更深的约束——注意力的有效性与其承载量之间,存在某种不可消除的张力。

开放问题
Context Rot 是工程问题还是物理约束?如果下一代架构将衰减曲线压平到可忽略的程度,当前的一切只是历史注脚。如果衰减无法消除——只能缓解——那这就是 Agent 设计的永恒第一原理。
Coda

8 篇独立的文献——从控制实验到工程实战——交汇于同一个结论:精心管理模型"看到什么",比扩大模型"能看多少"更重要。

这对 AI 系统成立。对人类呢?

信息过载的时代,你面前的 token 越来越多,但你过滤它们的认知带宽没有增长。

模型需要脚手架来过滤。你需要什么?

Sources
Chroma Research — Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)
Anthropic — Effective Harnesses for Long-Running Agents (Jan 2026)
Cursor — Dynamic Context Discovery (Jan 2026)
Manus — Context Engineering for AI Agents (Jul 2025)
LangChain — Improving Deep Agents with Harness Engineering (Feb 2026)
Liu et al. — Lost in the Middle (TACL 2024)
Yang et al. — SWE-agent (NeurIPS 2024)
Horthy — 12 Factor Agents
Honra — Progressive Disclosure for AI Agents (Feb 2026)
延伸阅读
The Shape of Intelligence →
凸性、率失真理论、闭环反馈如何统一解释"智能"。本文所用的几何框架的完整推导。
Closing the Loop →
从控制论看 Agentic LLM 通往 AGI 的路径。while 循环为什么是 Agent 架构的唯一正确答案。