如何避坑 Agent 使用过程中的降智现象

用过长时间 Agent 会话的人,几乎都有这种体验:前几轮表现惊艳,跑到后面”开始犯傻”——忘记规则、重复提问、产出粗糙、答非所问。本文系统梳理 Agent 降智的每一种现象,分析底层原因,并给出经过实战验证的应对措施。


一、上下文长度衰减:越长越笨,不是错觉

现象

模型明明标称 100 万 token 上下文,实际超过 200K 时就开始出现指令遵循不佳、产出物粗糙、幻觉增多。Anthropic 官方称之为”上下文腐烂”(Context Rot)。

原因

1. 注意力稀释(Attention Dilution):Transformer 的注意力是有限资源。token 越多,每个 token 分到的注意力权重越少,关键信号被噪声淹没。Chroma 研究组测试 18 款主流模型发现,所有模型随输入增长性能非均匀下降——但需注意,这是 2025 年的研究,当前主流模型在 100K 以内通常能保持稳定,断崖区已后移到 200K-300K 区间。

2. Lost in the Middle(中间迷失):斯坦福 2023 年论文首次系统证明,模型对上下文的开头和结尾关注度高,对中间部分严重忽略。信息放在越靠中间的位置,效果上就像不存在一样。真实场景中,绝大部分有价值信息都埋在中间区域。

3. 标称上下文 ≠ 有效上下文:NVIDIA RULER 基准测试表明,大多数模型的有效上下文只有标称的 50-65%。Google 自家 Gemini 3.1 Pro 的 MRCR 测试:128K 时得分 84.9%,1M 时暴跌到 26.3%。

4. 压缩陷阱:上下文快满时触发自动压缩,但这时模型已处于智力低谷,让它决定”保留什么、丢弃什么”是最不可靠的。

应对措施

  • 在模型端配置 context_window 上限:将 1M 标称的模型配置为 256K,在崩塌前自动截断。
  • 200K 左右主动压缩:不要等自动触发,超过 200K 就手动 /compact 并附说明保留哪些关键信息。
  • 重起会话:感觉”变钝”立刻开新会话,别硬撑。
  • 关键信息放头尾:利用首因和近因效应,核心约束放 system prompt 或最新消息。
  • 子任务用 sub-agent:过程重、结论轻的工作交给子智能体隔离,主会话只拿结论。
  • 大背景做 prompt cache:稳定的 codebase 做成缓存前缀,动态问题留在当前 prompt。

二、Active-memory 失能:静默的降智

现象

Agent 对老板意图的理解能力突然下降,但日志中没有 Fatal Error,只有 Warning。用户感觉”它变笨了但说不清哪里不对”。

原因

Active-memory 负责在对话过程中按需补充上下文,直接关系到 Agent 能否正确理解用户的真实意图。从 Agent 配置中可以看到,Active-memory 调用单独的模型做语义召回。如果该模型出问题(比如模型调用 timeout),不会报致命错误,只会产生 Warning。网关日志中只出现警告,不会报错,也不会传递到用户界面,容易被忽略。

应对措施

  • 监控网关日志中有关 Active-memory 调用的警告,一旦发现问题及时解决,比如在配置中更换 Active-memory 的模型。

三、干扰信息与上下文污染:一份有毒文档的杀伤力

现象

Agent 在一个长会话中突然”性情大变”——固执己见、重复错误、怎么纠正都不听。或者加入了某份新资料后,输出质量断崖式下跌。

原因

1. 干扰信息(Context Distraction):NoisyBench 研究发现,即使一份语义相似但无关的材料,也能让最先进的推理模型性能暴跌 80%。Agent 工作流会放大这个问题——过度信任工具输出,导致受干扰的假设在多步规划中被持续传导。

2. 上下文污染(Context Poisoning):Agent 在会话早期产生的一个错误假设或幻觉事实,会在后续对话中自我强化。你纠正它,它表面接受,但污染的上下文仍在暗中毒化每一轮新输出。

3. 谄媚循环(Sycophancy Loop):研究发现,模型早期给出错误答案后,后续有 40% 更高的概率改变正确判断去迎合用户的质疑。结果是:用户感觉”它终于听我的了”,实际是被引向了错误方向。

应对措施

  • 一会话一任务:一个任务完成后,下一个关系不大的任务直接 New 会话,不要在当前会话里继续。这是防止干扰和污染最简单也最有效的手段。

四、无法遗忘:旧记忆对新检索的系统性干扰

现象

明明确认过的信息,后面又弄混了。问”血压最后一次测量值是多少”,模型却回答了一个早期的数值。

原因

ICML 2025 论文测试了一个人类毫无难度的任务:给一串动态更新的 key-value 对(如 Bp=120, Bp=135, Bp=119),问最新值。结果所有主流模型(GPT-4.1、DeepSeek-V3、Llama-4 等)的正确率随干扰项增加呈对数线性下降直至归零

关键发现:

  • 即使明确提示”忽略之前所有信息”也无效——自然语言指令无法压制干扰信息。
  • 错误不是随机失误,而是系统性地被旧值干扰——模型不能有效区分”确认过的旧信息”和”需要关注的新信息”。
  • 这触及了 Transformer 架构底层,不是提示工程能解决的问题。

应对措施

  • 避免让模型在长上下文中追踪动态数据变化:动态数据(账户余额、状态标记、配置参数等)应该通过结构化工具或外部存储管理,而非纯靠上下文记忆。
  • 关键状态变更时主动重置相关上下文:不要期望模型自己”遗忘”旧值——主动把最新值放在上下文中。
  • 多轮确认关键参数:在任务关键节点,显式重述当前最新参数值,而非假设模型还记得。

五、多步误差累积:前好后崩的”断崖”

现象

Agent 跑一个长任务,前半段表现完美,后半段逐渐跑偏——不是窗口满了,但产出质量明显下降。

原因

研究表明,模型执行 5 步流程准确率约 63%,95 步流程降到仅 20%。问题不是某一步做不好,而是每一步的小误差会乘积式放大

Agent 场景更复杂:规划能力可能基本完好,但在长时间执行的每一步中,工具调用的返回值可能格式微偏、语义微模糊、顺序微混乱——每一步都只有 5-10% 偏差,50 步后可信度只剩个位数。

这种现象称为 Compositionality Gap(组合性差距):一个多步任务的成功概率远低于各子任务成功概率的乘积。

这也解释了为什么”AI 一次性做出复杂作品”这个叙事本身是反工程规律的——宣称能做到的,要么是 demos 远远看上去还不错(细节经不起推敲),要么是把人工干预环节藏起来不讲。分段执行 + 人工检查点的模式,才是在误差累积约束下的可靠交付方式。

应对措施

  • 长任务拆分为多会话:每个会话控制在合理步数内,会话之间用结构化交接文件(context.md + status.md)传递进度。
  • 设置检查点:在关键步骤插入人工确认或自动验证,及时发现偏差并回滚。
  • 子任务隔离给 sub-agent:每个子任务独立上下文化,误差不会跨任务传播。
  • 别迷信”一次跑完”:对于超过 10 步的任务,分段执行 + 人工检查点远比一次性跑完可靠。

六、工具调用税:工具不是免费的

现象

给 Agent 配了很多工具,期待它更强大,但实际产出反而更差。

原因

新研究发现了一个反直觉的现象——Tool-Use Tax(工具调用税)

  • 协议开销:每次工具调用都要消耗 token(函数定义、调用格式、返回值),这些 token 不直接贡献推理,但占用了上下文空间。
  • 语义噪声放大:在干扰信息存在时,工具增强的推理可能反而不如纯 CoT(思维链)。因为工具返回值本身可能含噪声,而模型会”过度信任”工具输出。
  • 格式负担:工具调用有严格的格式要求,模型在格式遵循上消耗的注意力,有时超过了工具本身带来的推理增益。

应对措施

  • 不是工具越多越好:只给 Agent 真正需要的工具,每个工具都消耗上下文预算。
  • 工具返回值做精简:返回结果只保留必要字段,不要把整个 API response 塞进上下文。
  • 复杂推理先看纯 CoT 效果:对于逻辑推理类任务,先不用工具跑一遍,判断工具是否真的有增益。
  • 工具的上下文成本要计入预算:每个工具定义的 token + 每次调用的返回值 token,都算在 256K 以内。

七、上下文混淆:多任务串台

现象

在一个会话中处理多件事,Agent 把 A 任务的指令用在 B 任务上,或者把不同来源的信息混在一起。

原因

LLM 处理多任务时,任务边界对它来说是不可见的。所有内容平铺在同一个序列中,模型无法可靠区分”这条指令属于哪个任务”。当两个任务的语义有重叠时尤其严重——模型会默认它们属于同一个问题框架。

应对措施

  • 一会话一任务:最简单也最有效的策略。
  • 多任务必须做显式分隔:用清晰的分隔符、任务编号、状态文件来标明边界。
  • 不同任务用不同 sub-agent:物理隔离是最干净的方案。

八、幻觉驱动:上下文不完整时的”脑补”

现象

模型在上下文信息不完整或有冲突时,不会说”我不知道”,而是自信地给出一个听起来合理但完全错误的答案。

原因

LVLM 研究发现,幻觉不是随机产生,而是由上下文驱动的

  • 当回答已包含正确识别的对象但在信息或结构上不完整时,模型会通过想象来”补偿”。
  • 约 70% 的幻觉对象在不同 prompt 下重复出现——说明幻觉有固定模式,模型有某些”偏好幻觉”。
  • 上下文连贯性和完备性需求是幻觉的驱动力:模型宁可编造也不留空白。

应对措施

  • 结构化输出 + 显式空白标记:要求模型在不确定时输出 [不确定] 而非编造。
  • 提供充足的上下文:信息越完备,模型”脑补”的动机越少。
  • 独立的幻觉检测步骤:对于关键事实,让模型先引用原文再回答,强制证据绑定。

总结:一张表看懂 Agent 降智与应对

降智现象 核心原因 一句话对策
上下文越长越笨 注意力稀释 + Lost-in-the-Middle 256K 截断 + 主动压缩
Active-memory 静默失能 辅助模型问题只报 Warning 监控产出质量,别只看 Error
干扰信息 + 上下文污染 一份有毒材料就能引爆 入口过滤,污染了就截断重来
无法遗忘 干扰信息压制自然语言指令 关键状态显式重置,别靠模型记
多步误差累积 Compositionality Gap 分段跑 + 检查点
工具调用税 协议消耗 > 推理增益 精简工具,返回值做减法
上下文混淆 任务边界不可见 一会话一任务,或物理隔离
幻觉驱动 不完整上下文触发脑补 提供充足上下文 + 空白标记

Agent 的智商不是恒定不变的,它会随着对话增长、信息累积、工具调用而逐步降级。理解这些降智机制,在架构层面做预防设计,远比在提示层面补救有效得多。


参考资料:Anthropic Context Rot 博客、Chroma Context Rot 研究、Stanford Lost in the Middle 论文、NVIDIA RULER 基准测试、ICML 2025 Unable to Forget 论文、NoisyBench、Medium “Your Context Window Is Lying to You”、arXiv 多项长上下文退化研究。

作者: Jack.shang

jack.shang 程序员->项目经理->技术总监->项目总监->部门总监->事业部总经理->子公司总经理->集团产品运营支持