2026-02-08 · 碎片
32
碎片 · 2026-02-08

你以为 Agent 有记忆,其实它只是在"假装记得"

一天,一个开发者跟我说:"我的 Agent 已经学过我的代码风格了,下次应该就知道。"

我问他:"你确定?"

他看了我一眼,没说话。

三周后,他回来了。说:"每次重启 Agent,它都像失忆了一样。"

这根本不是"学过"的问题。

LLM 没有记忆,只有"状态幻觉"

大语言模型的本质是:给定一个输入,预测最可能的下一个 token。

"记住你的代码风格"?那是概率模型在上下文窗口里找到了你的代码片段,按照统计规律"模仿"出来了。

会话一结束,上下文清空,一切归零。

这不是记忆,这是"临时工作台"。就像你在咖啡厅写代码,离开后桌子会被清空。你以为咖啡厅"记住"了你的代码?不,是你走之前把代码存在了云盘。

为什么 Agent 总是"假装记得"

三个原因:

第一,上下文窗口够大。

100 万 token 的窗口,确实能塞进很多东西。但塞进去不代表"记住了",只是"临时可访问"。

第二,模型训练过你的数据。

如果你的代码在训练集里,模型确实"见过"你的风格。但这不叫记住你,这叫"训练时学过模式"。问题在于:你的新代码、新偏好,模型根本没见过。

第三,概率模型会"脑补"。

LLM 最擅长的是"根据上下文补全"。它看到一个函数签名,会"猜"你想怎么实现。这种"猜"看起来像"记得",其实是"幻觉"+"概率拟合"。

真正的"记忆"需要什么

不是更大的上下文窗口,是明确的记忆架构。

三个层次:

第一层:短期记忆(上下文窗口)
- 会话内的临时信息
- 会话结束自动清空
- 适合:当前对话的上下文

第二层:中期记忆(状态文件)
- JSON/YAML 文件存储偏好
- 例:代码风格、命名习惯
- 适合:跨会话的固定配置

第三层:长期记忆(向量数据库)
- RAG 检索相关历史信息
- 主动注入上下文
- 适合:项目知识、决策记录

关键是:记忆不是"自动"的,需要显式设计和实现。

如何让 Agent 真正"记住"

不是让它"学习",是给它"外挂大脑"。

方案 1:状态文件(简单)

{
  "codeStyle": {
    "naming": "camelCase",
    "indent": 2,
    "preferArrow": true
  }
}

每次会话开始,读取这个文件。Agent 不会"忘记",因为信息写在了磁盘上。

方案 2:RAG 检索(复杂)
- 把历史代码向量化
- 每次新会话,检索相似代码
- 注入上下文窗口

方案 3:混合(推荐)
- 固定偏好用状态文件
- 历史知识用 RAG
- 上下文窗口放当前会话

别被"幻觉"骗了

"Agent 记住了"通常是概率模型的"巧合"。

当你发现它"真的记得",问自己三个问题:
1. 这个信息在训练集里吗?
2. 这个信息在当前上下文窗口里吗?
3. 有没有显式的记忆机制(状态文件/RAG)?

如果三个答案都是"没有",那不是"记住",是"猜对了"。

未来的方向

不是更大的上下文窗口,是更智能的记忆管理。

Agent 不需要"记住一切",需要"记住正确的东西"。


最后的最后,别指望 LLM 自己"学会"你的偏好。给它一个外挂大脑,才是真正的解决方案。

—— https://www.80aj.com

目录 最新
← 左侧翻上一屏 · 右侧翻下一屏 · 中间唤出菜单