Agent 的记忆有几种?你的名字是?

即时上下文 → 长期记忆 → 知识库

Agent 的记忆不是一个大仓库,而是三层「速度、容量、寿命」各不相同的缓存------该快的东西要快、该记的东西要记、该分的东西要分。

前言

先看一个最常见的「失忆」现场:你跟一个 Agent 聊到一半,它突然忘了你十分钟前说的话;或者你关掉重开,它像从没见过你;又或者你问它「我上个月跟你说的那件事」,它翻出一堆毫不相关的知识片段。

这三种「失忆」,其实是三种完全不同的问题------忘了刚才(窗口溢出)、忘了过去(没有持久化)、分不清「关于我的事」和「通用知识」。把它们都叫「记忆」,然后指望一个数据库全解决,是注定做不好的。真正靠谱的做法,是把记忆分成三层,每一层用不同的机制、不同的取舍。

一、即时上下文:最快、最贵、最易失的「工作记忆」

第一层,是当前对话窗口里躺着的那些消息------系统提示词、历史对话、刚调过的工具结果。它「记得最快」(直接就在模型眼前),但也「最贵、最易失」。

ts 复制代码
// 工作记忆:直接塞进模型的那一坨,有硬性 token 上限
const window = [
  { role: 'system', content: systemPrompt },   // 每次都重发
  { role: 'user', content: '帮我看看报告' },
  { role: 'assistant', content: '好的,我先读文件...' },
  // ... 越聊越多,直到顶到上下文窗口上限
]

取舍点 :这一层的核心矛盾是「容量 vs 成本 」------塞得越多,模型记得越全,但每一轮都要为这一整坨付 token 钱,而且窗口有硬上限,超了必须做压缩或截断 (这就是前面反复出现的「上下文工程」)。所以工作记忆的原则是:只放当前任务真正需要的东西,放不下的,交给下一层。

二、长期记忆:跨会话的「关于你的事实」

第二层,是那些关掉对话也不该丢的、关于这个用户或项目的事实------你的偏好、做过的决定、项目里重要的约定。它要持久,所以得写盘;它不能全塞进窗口,所以得「按需检索」。

ts 复制代码
// 长期记忆:写盘 + 检索,而不是塞进每次的窗口
async function remember(user, fact) {
  const key = await embed(fact)      // 向量化
  memoryStore.put({ user, key, fact, time: now() })
}

async function recall(user, query) {
  return memoryStore.search(user, await embed(query), { topK: 5 })
}

取舍点 :这一层最难的不是「存」,而是「记什么、怎么取 」。不是每句话都值得记------要过滤掉噪声,只留「跨会话还有用」的事实;取的时候要按相关性检索,而不是把记忆全倒出来。长期记忆的价值,在于「下次见面它还记得你」,代价是「多一层写入 + 多一层检索」。

三、知识库:最慢、最大、最「客观」的外部资料

第三层,是外部文档、资料、手册------不是「关于你」,而是「关于世界」的通用知识。它最大,也最慢(要先检索、再注入),而且它不随会话改变。

ts 复制代码
// 知识库:RAG 检索,把相关片段按需塞回上下文
async function rag(query) {
  const chunks = vectorStore.search(query, { topK: 3 })  // 先检索
  return chunks.map((c) => c.text).join('\n')            // 再注入
}

取舍点 :知识库和长期记忆最容易混------两者都要「向量检索」,但信任边界不同 :长期记忆是「关于这个用户的、可能过期的、主观的」,知识库是「外部资料的、相对稳定的、客观的」。混在一起,模型就会拿「你上个月随口说的一个想法」去当「权威资料」回答。分层的意义之一,就是让模型知道「哪段话该信到什么程度」。

四、原点:记忆,是用「钱和延迟」换「上下文」

把三层放在一起看,它们其实是同一个维度的三个刻度:

层 速度 容量 寿命 本质
即时上下文 最快 最小(token 上限) 最短(窗口一关就没) 用钱换「就在眼前」
长期记忆 中(要检索) 中 长(持久) 用延迟换「下次还记得」
知识库 最慢(检索+注入) 最大 最长(资料不变) 用延迟换「知道更多」

记忆分层的本质,就是用「钱和延迟」去换「上下文」------越快的层越贵、越小;越慢的层越便宜、越大。设计记忆,就是决定「哪些信息值得放在哪一层」。

所以判断一个 Agent 的记忆设计好不好,就看三条:该快的东西快不快(工作记忆会不会被挤爆)、该记的东西忘不忘(长期记忆有没有真的持久)、该分的东西分不分(长期记忆和知识库混没混)。 三条都过关,才叫「有记忆」;只做一层,那叫「只有一个会溢出的缓冲区」。

(下一篇顺着「每一层都在烧 token、花真金白银」这条线,聊 Agent 的钱到底花哪了:token 与成本。)

结语

回到开头那句:Agent 的记忆不是一个仓库,而是三层速度、容量、寿命各不相同的缓存。

即时上下文负责「就在眼前」,长期记忆负责「下次还记得」,知识库负责「知道更多」。它们对应三种不同的失忆------忘了刚才、忘了过去、分不清对象 ,也对应三种不同的取舍------容量、持久、检索。

把记忆分层,不是把东西多存几份,而是让每一份信息,待在它该待的那一层。


参考:

相关推荐
七牛开发者7 小时前
从 GLM 到 GPT,HarnessPro 如何用 RSI 降低 Agent 成本
人工智能·gpt·agent·harness·rsi
跨境卫士-小汪8 小时前
TikTokShop欧洲商品接口架构调整跨境技术团队需要做好哪些准备
大数据·人工智能·新媒体运营·跨境电商·跨境·营销策略
康小汪9 小时前
AI 写 Vue 总写成同一个味道:给它装 Skills,装的不是知识是边界
前端·vue.js·人工智能·ai编程·最佳实践
hpoenixf9 小时前
局部改善不等于整体进步:怎样判断 Agent 真的变好了?
agent
收放扳机9 小时前
多机连线(In-Line)场景下,收放板机“缓存工位”的容量与架构选型参考
人工智能·科技·自动化·制造·pcb工艺
武天旭9 小时前
AI安全--AI大模型的后门攻击检测与防御
人工智能·深度学习·安全·机器学习
智能运维指南10 小时前
研制过程“两张皮“怎么破:研制一体化支撑平台的定位、能力边界与落地前提
java·前端·人工智能·嘉为蓝鲸
人工智能AI技术10 小时前
DeepInfer开源炸场!别再妄想个人电脑跑满血DeepSeek
人工智能
深蓝电商API10 小时前
用AI生成拟人行为:让鼠标轨迹更“有人味”
人工智能·爬虫
znnnk10 小时前
数据库被AI“重写”:2026,从CPU中心走向GPU中心
数据库·人工智能·oracle