上下文腐化:为何你的智能体运行时间越长,表现越差

发布日期:2026-07-01 10:44:29   浏览量 :7
发布日期:2026-07-01 10:44:29  
7

在生产环境中运行人工智能代理几周后,你会注意到一个现象:与代理进行的全新对话表现敏锐。但如果给同一个代理提供四十条消息的历史记录,它就开始与早期的决策自相矛盾,遗忘约束条件,并产生比会话开始时更差的输出。

这并非随机现象,而是结构性问题。上下文窗口是一个固定大小的工作记忆区,而你正用噪声将其填满。

我称这种现象为“上下文腐化”——随着积累的上下文用陈旧数据、重复的样板文本和无关的对话轮次挤占了有效信号,代理性能逐渐退化。以下是其成因、测量方法,以及三种能真正解决该问题的模式。

实际发生的情况

语言模型在调用之间没有持久记忆。每次请求都是对你提供的整个令牌序列进行一次全新的推理。“记忆”完全依赖于上下文窗口。

随着对话的增长,这会导致几种故障模式:

1. 注意力中的近因偏差。变换器模型的注意力并非均匀分布在上下文中。根据经验,模型往往对最近的令牌以及上下文的最开头部分赋予更高的权重,而对中间部分的权重较低——这通常被称为“中间迷失”现象。来自第三轮对话的重要指令到第三十五轮时可能在功能上变得不可见。

2. 指令稀释。你的系统提示词规定“始终以 JSON 格式响应”。到了第二十轮对话,已有十九个模型以散文形式响应的示例(因为用户用自然语言提出了后续问题)。这些散文示例具有影响力。模型的先验概率发生了偏移。

3. 陈旧状态污染。代理在第八轮对话中基于当时属实的事实做出了决策。到了第三十轮,这些事实已发生变化——但第八轮的推理过程仍保留在上下文中,无声地影响著后续的所有内容。

4. 令牌预算压力。随着上下文接近模型的最大限制,模型可能会开始截断自身的推理过程,偷工减料,或生成更短、质量更低的输出,以保持在限制范围内。

如何检测

在应用任何修复措施之前,请确认你确实存在上下文腐化问题。最简单的测试方法:

import anthropic

client = anthropic.Anthropic()

def test_instruction_following(history: list[dict], probe: str) -> str:
    """
    在给定的对话长度下发送一个已知格式的探测请求。
    如果模型的合规率随着历史记录的增长而下降,则说明存在上下文腐化。
    """
    response = client.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=

免责声明:本文内容来自互联网,该文观点不代表本站观点。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请到页面底部单击反馈,一经查实,本站将立刻删除。

关于我们
热门推荐
合作伙伴
免责声明:本站部分资讯来源于网络,如有侵权请及时联系客服,我们将尽快处理
Copyright © 2025-2027 ToB产业网址导航 公安备案 浙公网安备33010602013138号 浙ICP备16025413号-9
支持 反馈 关注 数据