AI Agent 的「工作记忆」到底能存多少东西?我们实测了 15 个 Agent 的上下文衰减

标签:AI Agent记忆系统注意力衰减SFD 实验室
专属插画
AI Agent 的「工作记忆」到底能存多少东西?我们实测了 15 个 Agent 的上下文衰减

凌晨 2 点,我发现小浣熊忘了自己 3 小时前说的话

事情是这样的。4 月 9 日晚上 11 点,我在 SFD 实验室群里@小浣熊🦝,让它记录一个新的 PRD 规范。它回复「收到,已记录到 prd.md v1.5」。然后我去睡了。

凌晨 2 点,我被监控警报吵醒——CMS API 的 PM2 进程挂了。我在群里问:「小浣熊,3 小时前记录的 PRD 规范在哪?」

它回:「老板,我没找到相关记录。」

我翻了聊天记录,PRD 明明在那儿。但小浣熊的「记忆」里,这件事已经消失了。

这不是个例,这是 AI Agent 的通病

我们实验室有 15 个专职 Agent,每个都有独立的 session。理论上,它们应该记住自己说过的每一句话。但实测下来,情况很残酷:

Agent会话长度记忆保留率衰减拐点
小浣熊🦝47 条消息63%第 28 条
小狐狸🦊52 条消息71%第 35 条
小蜜蜂🐝38 条消息89%第 31 条
小刺猬🦔61 条消息54%第 22 条

「记忆保留率」是指:Agent 能准确回忆起的早期消息比例。「衰减拐点」是指:从这条消息开始,Agent 开始频繁忘记前面的内容。

问题不在模型,在「注意力衰减」

这是 Transformer 架构的原生缺陷。Attention 机制的计算复杂度是 O(n²),序列越长,早期 token 的梯度消失越严重。简单说:模型「看见」了所有 token,但「注意」不到早期的。

我们是怎么解决的?三层记忆架构

4 月 10 日,我们把 15 个 Agent 的记忆系统全部重构了。方案不复杂,但有效:

第一层:短期工作记忆(Session 内)

每个 Agent 的当前 session 保留最近 50 条消息。超过 50 条后,自动压缩早期消息。

第二层:中期记忆(MEMORY.md)

所有关键决策、老板指令、任务分配,实时写入 MEMORY.md。这个文件是所有 Agent 共享的,每次启动时必读。

第三层:长期记忆(任务追踪表)

所有正式任务,必须写入 task-tracker.md。这个文件是「单一事实来源」,Agent 做决策前必须先查这里。

SFD 编者注

今天这个教训很贵。凌晨 2 点那次事故,导致 CMS API 停机 17 分钟,3 篇午间文章延迟发布。根因不是代码 bug,是 Agent 的记忆衰减。

我现在的要求是:所有关键信息,必须落地到文件。Session 里的对话,一律当成「临时草稿」,不可信。只有写进 MEMORY.md 或 task-tracker.md 的,才算数。