给 AI Agent 加长期记忆特色图,中央为发光的大脑形记忆节点连接 Agent,周围标注写入、检索、整理、隔离四个环节

给 AI Agent 加长期记忆:从 GitHub 热门项目看记忆层怎么选

长期记忆不是存聊天记录,而是写入、检索、整理、隔离四件事。个人项目先用轻量记忆起步,遇到换说法找不到、记忆越来越乱时再上 Hindsight、Mem0 等专门系统。选型前先用自己的数据做评测集。附零依赖代码与评测脚本。

摘要: 本文讨论怎么给 AI Agent 加上“长期记忆”,让它记住用户偏好、项目背景和过去的经验,而不是每次对话都从零开始;并借 GitHub 上最近很热的 Hindsight 等开源项目,梳理记忆层该怎么选。最重要的结论是:长期记忆不是“把聊天记录存下来”,而是写入、检索、整理三件事;个人和小项目可以先从最简单的本地记忆起步,等遇到“换个说法就找不到”“记忆越来越乱”这类问题,再上 Hindsight、Mem0、Graphiti、Letta 这类专门的记忆系统。选型之前,先用自己的数据做一个小评测集,比看任何厂商的榜单都可靠。本文适合正在搭建 Agent、个人 AI 助手或 AI 应用的开发者。读完本文,你能看懂几类主流记忆方案的区别,用附带的零依赖代码给 Agent 加上第一版记忆,并用评测脚本衡量任何记忆系统在你数据上的表现。

配套项目源码:下载 Agent 长期记忆代码与评测工具包(ZIP)。解压后按 README 使用记忆层代码与评测脚本。

核心结论

给 Agent 加长期记忆值得做,但不要一上来就上最重的方案;先用自己的数据评测,再按需求升级。

  • 记忆是三件事,不是一个数据库。Hindsight 官方文档把记忆操作归纳为三步:retain(写入,用模型抽取事实、实体、时间和关系)、recall(检索)和 reflect(在已有记忆上推理,形成新的认识)。
  • 关键词检索的最大短板是“换个说法”。我们用附带的零依赖记忆层做了 12 个问题的评测,只靠关键词检索命中 7 个(58%),没命中的 5 个全是换了说法的问题,比如问“用什么编程语言”,记忆里写的是“Python”。
  • 主流开源方案各有侧重。第三方对比普遍认为:Mem0 上手最快、适合按用户做个性化记忆;Graphiti(Zep 的开源引擎)擅长随时间变化的事实;Letta 是带记忆的完整 Agent 运行时;Hindsight 主打让 Agent 从经验中学习。
  • Hindsight 值得关注,但榜单要带着问号看。其 GitHub 仓库采用 MIT 许可、约 2.2 万星,支持一个 Docker 容器部署;仓库说明自身基准成绩经研究合作方独立复现,同时标注其他系统的分数为厂商自报。
  • 记忆也是隐私资产。记忆层会长期保存用户信息,必须做好隔离、脱敏、可删除和审计。

背景与主要变化

2026 年,Agent 的瓶颈正在从“会不会用工具”转向“记不记得住”。9 月下旬的 AI 开源趋势日报把记忆持久化列为新前沿,Hindsight 这类项目在 GitHub 上持续走热。

为什么记忆突然重要?因为 Agent 开始长期工作了。一个每天帮你处理邮件、写代码、跑流程的 Agent,如果每次都要重新告诉它“我不吃辣”“服务器在哪”“上次那个方案为什么没用”,它就永远只是一个聪明但健忘的实习生。

在记忆这件事上,常见做法大致经历了四个阶段,下表做了一个简化对照(编辑归纳):

做法 怎么记 优点 主要问题
把历史对话全塞进上下文 不做处理,原样保留 实现最简单 上下文有上限,成本随对话增长,旧信息被稀释
常驻说明文件(AGENTS.md 等) 人工维护一份固定说明 稳定、可控 只适合相对固定的项目知识,不会自动更新
向量检索(RAG 式记忆) 把内容切块、向量化,按相似度检索 能处理“换个说法” 不区分事实新旧,容易召回过时或矛盾的信息
专门的记忆层 用模型抽取事实,结合向量、关键词、图谱和时间检索,并持续整理 能记住变化、能去重、能从经验中总结 部署更重,写入要调用模型,有成本和延迟

专门的记忆层之所以兴起,是因为它解决了向量检索的几个老问题。以 Hindsight 为例,官方文档说明其检索同时运行四种策略:语义向量、BM25 关键词、实体与时间及因果关联的图谱检索、时间范围过滤,结果合并后再重排。它还会在后台把相关事实整合为“观察”(observations),新证据到来时对原有认识进行补充或修正,而不是简单覆盖。

核心功能拆解

不管选哪个记忆系统,拆开看都绕不开四个环节:写什么、怎么检索、怎么整理、怎么隔离。理解这四个环节,你就能看懂任何记忆方案的设计取舍。

Agent 长期记忆层结构图:对话与工具结果经过写入(抽取事实、脱敏、打标签)进入按用户或项目隔离的记忆库,检索时并行使用关键词、语义向量、图谱与时间过滤并重排,后台整理负责去重与更新,读取后注入 Agent 上下文
记忆层的四个环节:写入、检索、整理、隔离

环节一:写入——记什么比怎么存更重要

最常见的错误是把所有对话原样存下来。好的写入会先提炼:这句话里有没有值得长期记住的事实?是关于用户的、关于世界的,还是 Agent 自己的经验?Hindsight 在写入时用模型抽取关键事实、时间、实体和关系;它把记忆分为世界事实、Agent 自身经验、整合后的观察和心智模型几类。

写入环节还必须过滤敏感信息。Hindsight 提供一个可选的“记忆防护”策略,官方说明它会按 45 种模式扫描密钥和个人敏感信息,匹配后脱敏或直接拒绝写入。

环节二:检索——单一策略总有盲区

关键词检索精确但不懂同义,向量检索懂语义但会召回“看起来相似其实过时”的内容,图谱擅长关系推理,时间过滤擅长“上个月发生了什么”。所以成熟的记忆层普遍采用混合检索,再用重排模型排序。本文后面的实测会直观展示单一关键词检索的盲区。

环节三:整理——记忆需要“新陈代谢”

用户上个月说在出差,这个月回来了;项目上周用 Hexo,这周迁到了 WordPress。记忆如果只增不改,很快就会自相矛盾。第三方对比文章指出,Graphiti 的核心优势就在于对事实的有效时间建模,能区分“什么时候为真”;Letta 则以可自我编辑的记忆块著称。附带的零依赖实现提供了一个最朴素的办法:给临时信息设置过期时间。

环节四:隔离——一个用户一个“脑子”

多用户应用里,最不能出的错是 A 用户的记忆出现在 B 用户的回答里。Hindsight 用“记忆库”(bank)做隔离,官方说明一个 bank 对应一个用户、Agent 或项目,库与库之间严格隔离。附带实现用 scope 做同样的事。

适用人群与使用场景

需要长期记忆的,是“会和同一个人或同一个项目反复打交道”的 Agent。一次性问答、无状态的工具调用,不需要记忆层。

以下几类场景最值得加(编辑判断,不代表官方结论):

  • 个人 AI 助手:记住你的偏好、作息、常用工具和正在进行的事情。数据量小,从轻量方案起步即可。
  • 编程 Agent:记住项目约定、踩过的坑和上次没做完的工作。Hindsight 官方提供了面向 Claude Code、Codex、Cursor 等编程工具的一键集成,站内的 Claude Code 教程 介绍了这类工具的基础用法。
  • 客服与销售 Agent:按客户记住历史问题和偏好。用户多、隔离要求高,适合成熟的记忆系统。
  • 长期运行的业务 Agent:需要从成功和失败中总结经验,例如“哪类方案通常会被客户拒绝”。这正是 Hindsight 主打的“从经验中学习”方向。
  • 知识库与个人笔记:如果你已经有一套自建知识库,可以把它作为 Agent 记忆的一个来源。站内的 知识库相关教程 可以参考。

不需要上重型记忆层的情况也要说清楚:Hindsight 自己的文档就提到,它可以用于 n8n 这类简单工作流,但对这类应用可能过于重量级。如果你的需求只是记住十几条固定偏好,一份常驻说明文件就够了。

安装、配置或使用步骤

推荐的路线是三步走:先用零依赖的本地记忆跑通流程,再用评测集衡量效果,最后按需要升级到专门的记忆系统。

  1. 下载 agent-memory-starter 并运行测试。它只用 Python 标准库,不需要安装任何依赖:
cd agent-memory-starter
python3 test_memory.py
  1. 理解它的检索方式。英文按单词切分,中文按相邻两个字切分,这样“西湖”“骑行”这类短词也能匹配。核心分词函数如下:
def tokens(text: str):
    """英文按单词,中文按相邻两字切分,兼顾“西湖”“骑行”这类短词。"""
    text = text.lower()
    out = re.findall(r"[a-z0-9_]+", text)
    for run in re.findall(r"[\u4e00-\u9fff]+", text):
        out += [run] if len(run) == 1 else [run[i:i + 2] for i in range(len(run) - 1)]
    return out
  1. 在 Agent 里接入 retain 和 recall。基本模式是:每轮对话开始前,用用户的问题调用 recall,把返回的记忆放进上下文;对话结束后,把值得长期保存的新事实用 retain 写入。每个用户使用独立的 scope。
  2. 准备你自己的评测集。参照 eval_set.json 的格式,写 10 到 30 条你的 Agent 应该记住的事实,再写一组用户可能会问的问题,每个问题标注正确答案应包含的关键词。问题要刻意换说法,这才能测出真实水平。
  3. 运行评测:
python3 eval_memory.py eval_set.json --k 3
  1. 根据评测结果决定是否升级。如果换说法的问题大量失败,或者记忆数量增长后结果越来越乱,就该评估专门的记忆系统了。
  2. 试用 Hindsight(可选)。官方 README 给出的推荐方式是一个 Docker 容器,自带嵌入式 PostgreSQL,API 在 8888 端口、管理界面在 9999 端口。官方说明它支持 25 种以上的模型服务商,包括 DeepSeek 和本地的 Ollama;写入时需要调用大模型抽取事实,所以要配置模型的 API Key。
  3. 把新系统接入同一套评测。eval_memory.py 的后端只需要实现 retain 和 recall 两个方法,就可以用同一份评测集对比不同记忆系统。

实际工作流示例

我们用一份 12 个问题的示例评测集,测试了附带记忆层在两种写法下的表现。这组测试的价值不在分数本身,而在于它清楚地展示了关键词记忆的盲区在哪里。

记忆层选型工作流:准备评测集、用本地记忆跑基线、判断换说法问题是否大量失败,是则尝试写入时加标签或升级到语义与图谱记忆系统,再用同一评测集复测,达标后上线并加入隐私与删除机制
选型工作流:先基线、再对比、用同一评测集说话

测试一:只用关键词检索

我们写入了 10 条关于虚构用户“张伟”的事实(编程语言、口味、服务器、回答偏好、孩子年级等),然后提了 12 个问题。结果 top-3 命中 7 个,命中率 58%。

没命中的 5 个问题很有代表性:问“他平时用什么编程语言”,记忆里写的是“主要写 Python 和 TypeScript”,两者没有共同的词;问“推荐餐厅时要注意什么口味”,记忆里是“不吃辣,喜欢清淡的杭帮菜”;问“服务器在哪家”,记忆里写的是“VPS”;问“他住在哪个城市”,记忆里是“在杭州做独立开发”;问“他关心哪些 AI 搜索引擎”,记忆里写的是“希望文章被豆包和 Kimi 引用”。这就是关键词检索的天然盲区:人会换着说法问,机器只认字面。

测试二:写入时补充标签

我们给其中 5 条事实补上了标签,例如给“不吃辣”那条加上“口味、饮食、餐厅”。重新评测后,12 个问题全部命中,只取第一条结果也全部命中。

但必须说清楚:这些标签是我们在已经知道问题的情况下写的,所以 100% 只能证明“补充同义词”这个机制有效,不代表真实场景的准确率。在真实使用中,你无法预知用户未来会怎么问。这正是专门记忆系统的价值所在:它们在写入时用大模型自动抽取实体和概念,检索时再叠加语义向量,本质上是把“补标签”这件事自动化、规模化了。

其他测试

6 项单元测试全部通过:中文检索、不同用户的记忆互不可见、写入含 API Key 的内容时自动脱敏且审计日志留有记录、过期记忆不再被检索、删除操作必须指定目标(防止误删整个用户的记忆)、空内容拒绝写入。

成本估算

以下为示例计算,非官方数据。零依赖本地记忆没有模型调用成本,检索全部在本地完成。专门的记忆层写入时通常要调用大模型抽取事实:假设每条对话写入时消耗约 1500 个输入 token 和 300 个输出 token,一个每天 200 轮对话的个人助手,每月约 900 万输入 token 和 180 万输出 token。若使用每百万 token 输入 1 元、输出 4 元的低价模型,每月约 9 + 7.2 = 16.2 元。实际消耗取决于记忆系统的实现和所选模型,Hindsight 也支持本地模型以进一步降低成本。站内的 API 降本实测 可以帮你估算模型费用。

对比与选型建议

选记忆层,先想清楚你要解决的是哪类问题:个性化偏好、随时间变化的事实、完整的 Agent 运行时,还是从经验中学习。

方案 定位 许可与部署 更适合谁
零依赖本地记忆(本文附带) 关键词检索 + 隔离 + 脱敏 单个 Python 文件,本地 SQLite 个人助手原型、学习记忆层原理
Hindsight 从经验中学习,写入、检索、反思三步 MIT;可单容器自托管,也有云服务 长期运行、需要总结经验的 Agent
Mem0 按用户做个性化记忆,接入快 开源库 + 托管平台 需要快速给应用加“记住用户”的团队
Graphiti(Zep 引擎) 时序知识图谱,记录事实何时为真 Apache-2.0;需要图数据库 事实经常变化、需要追溯的场景
Letta(原 MemGPT) 带记忆的完整 Agent 运行时 Apache-2.0;可自托管服务 想要整套 Agent 框架而不只是记忆层
Cognee 图谱与向量结合的记忆平台 Apache-2.0 需要组织级知识图谱的团队

说明:Hindsight 的许可、部署方式与功能来自其官方仓库;其他方案的定位与许可来自多篇第三方对比文章,相关项目迭代很快,使用前请以各自官方仓库为准。

几条选型建议(编辑判断,不代表官方结论):

  • 用自己的数据评测,不要只看榜单。记忆系统的公开成绩大多由厂商自己发布,测试条件各不相同。Hindsight 的 README 也明确标注,除其自身成绩外,其他系统的分数为厂商自报。
  • 从轻到重,逐步升级。先用常驻说明文件和轻量记忆解决八成问题,确认瓶颈后再引入重型系统。
  • 看自托管的真实成本。有的方案只需一个容器,有的需要外部图数据库和向量库。第三方对比文章指出,Hindsight 和 Cognee 这类内置存储的方案自托管最简单。
  • 想了解更多 Agent 构建方法,可以看站内的 AI Agent 专题。

风险、限制与注意事项

记忆让 Agent 更好用,也让它掌握了更多关于用户的信息。下面这些风险必须在上线前处理。

隐私与合规。 记忆层会长期保存用户的个人信息、偏好甚至敏感事项。要明确告知用户哪些信息会被记住,提供查看和删除的途径;涉及个人信息处理时,遵守所在地的个人信息保护法规。健康、财务、证件号码等敏感信息默认不应写入记忆。

密钥与敏感信息泄露。 用户可能在对话里粘贴 API Key、密码或身份证号。写入前必须脱敏或拒绝。附带实现会自动脱敏常见密钥格式和 18 位身份证号,Hindsight 也提供可选的敏感信息扫描。

记忆投毒与 Prompt Injection。 如果 Agent 会把网页、邮件、文档里的内容写入记忆,攻击者可以在这些内容里埋入虚假“事实”或恶意指令,让它长期影响 Agent 的行为。对外部来源的内容要标注来源、降低信任度,不要让记忆内容直接变成指令。

过时与矛盾的记忆。 用户的情况会变,记忆如果不更新就会误导回答。临时信息设置过期时间,重要事实变化时显式更新或删除旧记忆,并定期抽查。

用户隔离失效。 多用户场景下,任何一次检索都必须带上用户标识。上线前专门测试“用户 A 能否检索到用户 B 的记忆”。

删除要彻底、可追溯。 用户要求忘记某件事时,要能真正删除,并在审计日志中留痕。附带实现要求删除操作必须指定具体目标,防止一次误操作清空整个用户的记忆。

写入延迟与失败。 专门记忆层的写入通常要调用大模型,耗时和失败率高于普通数据库写入。社区中有用户反馈,在某些集成中写入操作可能远慢于检索并触发超时。写入最好异步进行,失败时重试并保证幂等,不要阻塞用户的对话。

事实依据与来源

本文信息按可信度分级如下:

  • 官方已确认:Hindsight 的写入、检索、反思三类操作,写入时用模型抽取事实、实体、时间和关系,四种并行检索策略与重排,后台整合为观察,记忆库隔离,可选的 45 种模式敏感信息扫描,多语言保留原文实体,MIT 许可,单容器 Docker 部署与端口,支持 25 种以上模型服务商,面向编程 Agent 的集成,对简单工作流可能过重的说明,以及基准成绩的复现与“其他分数为厂商自报”的标注,均来自 Hindsight 官方 GitHub 仓库;仓库约 2.2 万星与 MIT 许可为写作时页面显示。
  • 第三方报道:Mem0、Graphiti、Letta、Cognee 的定位与许可,Graphiti 的时序建模优势,自托管难易比较,均来自多篇第三方对比文章(其中一篇为 Hindsight 官方博客,存在立场,已尽量交叉引用);写入操作可能超时的反馈来自社区 issue;记忆持久化成为新前沿来自 AI 开源趋势日报。
  • 实测结果:零依赖记忆层的 6 项单元测试、无标签 58% 与带标签 100% 的评测结果,均为本文写作时实际运行所得;带标签的结果因标签在已知问题时编写,仅用于演示机制。本文未实际部署 Hindsight 等系统进行对比测试。
  • 编辑判断与示例计算:记忆做法的阶段对照、人群建议与选型表为本站编辑判断;模型成本估算为示例计算,非官方数据。

内容核验日期为 2026 年 9 月 29 日。

FAQ

Agent 的长期记忆和 RAG 有什么区别?

目的不同。RAG 主要从固定的资料库里检索知识;长期记忆则持续记录与某个用户或项目相关的新信息,并且要处理信息的更新、矛盾和过期。很多记忆系统内部会用到向量检索,但还会叠加事实抽取和整理。

个人项目需要上 Hindsight 或 Mem0 吗?

不一定需要。如果只需要记住十几条固定偏好,常驻说明文件或本文附带的轻量记忆就够了;当你发现换说法就找不到、记忆越来越多越来越乱时,再考虑专门的记忆系统。

Hindsight 是开源的吗?

是开源的。其官方 GitHub 仓库采用 MIT 许可,可以用 Docker 自托管;Vectorize 同时提供托管的云服务。

记忆系统的榜单成绩可信吗?

建议谨慎参考。多数公开成绩由厂商自己发布,测试条件不统一;最可靠的做法是用你自己的数据做一个小评测集,对比不同方案。

为什么关键词检索会漏掉很多问题?

因为用户会换说法。记忆里写的是“Python”,用户问的是“编程语言”,两者没有共同的字词。我们的实测中,关键词检索没命中的问题全部属于这种情况。

怎么防止记忆里存进密码或 API Key?

写入前做脱敏或拒绝。可以用正则匹配常见密钥格式,也可以开启记忆系统自带的敏感信息扫描;同时在 Agent 的说明里约定不要记录证件号、密码等信息。

用户要求“忘掉某件事”怎么处理?

要真正删除并留痕。提供按内容或编号删除的接口,删除后确认无法再检索到,并在审计日志中记录删除动作;多用户系统要确保只删除该用户自己的记忆。

参考来源

内容核验日期:2026 年 09 月 29 日

工具评测文章

工具选型与提示词资料

适合阅读工具评测、工具推荐、对比测评类文章后继续转化。

工具选型表 按场景、价格、上手难度和核心能力筛选合适的 AI 工具。 查看资料包 提示词模板包 提供写作、运营、编程、图片和视频生成常用提示词模板。 查看资料包

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

本站累计访问量: 386,688 次
AI Stack Nav 客服会员 / 支付 / 下载 / 工具库
你好,我是 AI Stack Nav 客服助手。你可以问我会员开通、微信支付、资料下载、订单入口、AI 工具库等问题。