📖 本文是「解剖 AI Agent」系列的第 2 篇。← 上一篇:AI Agent 不是 AI
老电影《乍然失忆》(50 First Dates)里,女主角每天早上醒来都会忘记前一天发生的所有事。男主角为了跟她在一起,每天都要重新介绍自己、重新追求她一次。
AI Agent 的处境跟这部电影惊人地相似,而且更严重:语言模型每次对话都在重启,比每天重启更频繁。
为什么模型什么都不记得?
回到最基本的原理:语言模型做的事情就是文字接龙。传进一段文字,它接下去,然后就结束了。下次再传文字进来,它完全不知道上一次发生了什么。
没有内存,没有暂存区,每次都是全新的开始。
AI Agent 怎么制造「记得」的假象?
秘诀其实很笨:每次都把之前聊过的东西全部重新喂给模型。
在通信软件上跟 AI Agent 聊天时,表面上看起来像一来一往的对话。背后 Agent 每次送出的消息其实是这样的结构:
[System Prompt(身份、规则、工具说明)]
+ [之前所有的对话记录]
+ [用户刚刚说的话]
这一大串文字一起塞给语言模型。模型读完之后开始接龙,接出来的结果自然就像「记得之前聊了什么」。
它真的记得吗?不,它只是读了一遍记录,就像翻日记本一样。
System Prompt:AI 的身份证
那 AI 怎么知道自己叫什么名字?怎么知道自己的性格?
答案是 System Prompt。这是一段很长的文字,Agent 每次调用语言模型时都会塞在最前面。里面包含:
- AI 的名字、身份、人格设置
- 可以使用哪些工具、怎么用
- 行为准则和限制
- 主人的偏好和习惯
- 记忆文件的位置
这段 System Prompt 可以非常长,几千甚至上万个 token。这也是为什么使用 AI Agent 很烧钱:即使只问了一句「你好吗」,背后送给模型的文字量可能就有好几千字。
上下文窗口的困境
这套「每次都重讲一遍」的策略有个致命缺陷:文字长度有上限。
语言模型的输入长度被一个叫做 Context Window(上下文窗口)的东西限制住。目前好一点的模型大概能处理上百万个 token,听起来很多,但如果 Agent 24 小时运作,对话不断累积,这个窗口很快就会被塞爆。
而且窗口不是塞满才出问题。研究显示,输入越长,模型的表现就越差。就像一个人读了一整本书之后被问第三页的内容,回答的质量一定比只读了前五页差。
压缩记忆:AI 版的「做笔记」
为了延长 Agent 的使用寿命,框架里通常有上下文压缩(Context Compression)机制。
做法很直觉:当对话记录快要超过窗口上限时,Agent 会把比较早期的对话丢给语言模型,请它「摘要一下」,然后用摘要取代原本的完整记录。
这个压缩可以反复进行。第一次的摘要被压缩进第二次的摘要,像俄罗斯套娃一样。每压一次,早期的细节就会再丢失一些。
这就解释了为什么 AI Agent 对最近一两天的事记得很清楚(因为原始记录还在),但更早之前的事就开始模糊(因为已经被压缩好几轮了)。
还有一些更粗暴的做法:把工具输出的中间部分直接截断(只留开头结尾),或甚至把工具输出整段替换成「这里曾经有过一段内容」。
持久化记忆:写日记的习惯
聪明的 Agent 框架会让 AI 养成写日记的习惯。
在 System Prompt 里会有一段命令告诉模型:「你的记忆每次都会清空。为了确保重要的事不会遗忘,你要主动把它写到文件里。」
于是模型会在对话过程中,自己判断哪些信息值得保留,然后调用文件写入工具,把记忆存成 .md 档。下次 Agent 重启时,System Prompt 会把这些文件的内容加载,模型就能「回想起」过去发生的事。
至于哪些事该存成长期记忆、哪些只是短期日记,这些通通由模型自己判断。比如用户告诉它生日,即使没说「记下来」,一个好的模型也会主动把这个信息写进记忆文件。
「记了个寂寞」:最常见的陷阱
这里有一个非常实用的提醒:
如果 AI 只是嘴巴说「记住了」,但没有实际去写入文件,那它就是什么都没记住。
比较弱的模型特别容易犯这个错。跟它说「记住这件事」,它回复「没问题,一定牢牢记住」,结果它根本没有调用任何写入工具。下次对话一重启,全部忘光。
怎么验证?看它有没有真的打开工具去编辑记忆文件。没有,那就是一场空。
记忆的检索:关键时刻能不能想起来
存了记忆只是第一步,能不能在需要的时候找出来才是关键。
大部分 Agent 框架用的是 RAG(Retrieval-Augmented Generation)的方式:把记忆切成小块,当模型需要回忆时,用关键字或语义相似度去搜索最相关的片段,再把这些片段塞进 Context 里。
这套机制在理想情况下运作良好,但搜索质量取决于切块方式和比对算法。用比较基本的设置,可能只有最近几天的事记得准,更久以前的就开始出现混淆或遗漏。
理解了记忆机制之后,使用 AI 助理时就能更精准地判断它记住了什么、什么是它脑补出来的。

延伸阅读
- AI Agent 不是 AI:搞懂「龙虾」和「大脑」的分工
- AI Agent 的安全风险
- Skill、Sub-agent、Cron:让 AI 24 小时自动工作
- AI Agent 记忆系统教程
- AI 助理的记忆该怎么设计
📖 下一篇:AI Agent 的安全风险:从 YouTube 评论改档到暴走删邮件
小企鹅的经验
OpenClaw 上跑 Opus / Sonnet / Codex 多 agent,实战下来最痛的肯定是记忆这块。要处理好记忆又不让 agent 失忆非常困难,诀窍是把核心文件整理干净:文件越简洁,agent 记得事情的概率就越高。没接向量数据库,全部走 .md 文件系统,主因是记忆量不大,又需要随时手动编辑,RAG 那套对使用节奏反而是负担。
常见问题
Q: 语言模型真的没有记忆吗?
对。语言模型每次被调用时,只看到当下传入的文字,完全不记得之前的对话。Agent 必须每次把历史对话一起塞进去,模型才能「假装」记得。
Q: Context Window 是什么?
Context Window(上下文窗口)是语言模型能处理的文字长度上限。输入加输出超过这个长度就会出错。即使上百万 token 的窗口,在 Agent 长期运作下也会不够用。
Q: AI 说「我记住了」真的有记住吗?
不一定。如果 AI 只是回复「我记住了」但没有实际调用工具去写入记忆文件,那就是「记了个寂寞」。下次对话就忘了。要确认它有真正写入 .md 文件才算数。
本文观念参考台大李宏毅教授公开课程内容,整理:小企鹅 Penchan