AI 编码 Agent 每轮会话都从零开始?用 YourMemory 的生物学遗忘曲线让记忆持久化
你有没有遇到过这种情况:在 Claude Code 里花了半天调试好的项目配置习惯,第二天打开 Cursor 写新功能时,Agent 又问你”你偏好用 tabs 还是 spaces”?每周都重新解释一遍自己的技术栈偏好,每次新会话都从零开始建立上下文——这种重复感让人心累。
市面上不乏 AI 记忆方案:Mem0、Zep、LangMem……但大多要么是云端黑盒、要么需要复杂的基础设施。今天介绍一个另辟蹊径的方案——YourMemory,它把艾宾浩斯遗忘曲线搬进了 AI Agent 的记忆系统,用”会自然遗忘”取代”无限堆积”,在多个权威基准上跑出了领先分数。
问题所在:AI 会话的”失忆症”
每个 AI 编码 Agent 会话都是一个独立的沙箱:
Session 1: "告诉我你的 Python 环境是 3.12,用 poetry 管理依赖" Session 2: "你之前说过 Python 环境了吗?我再问你一遍" Session 3: "偏好 tabs 还是 spaces?……好的我记下了" Session 4: "(又是一次轮回)"
这不是 Agent 的错——它们生来就没有跨会话记忆。传统的解决方案(向量数据库 + RAG)要么需要自建全套检索管线,要么依赖云端 API 每次调用都花钱。更重要的是,它们缺少一个关键特性:遗忘。
人脑之所以高效,是因为该忘的会忘。错的项目结构信息、过时的环境配置、上次实验性尝试的失败记录——如果不加筛选地全量保留,反而成了检索阶段的噪音。
YourMemory 的设计哲学
YourMemory 把它的记忆系统建立在一个经典认知心理学模型上:艾宾浩斯遗忘曲线。核心公式很简单:
strength = clamp(importance × e^(−λ × active_days) × (1 + recall_count × 0.2), 0, 1)
关键参数:
- importance(重要性):越重要的信息衰减越慢,用户可以在存储时自定义
- active_days(活跃天数):只计算你实际使用 AI 的日子——休假不会导致记忆丢失
- recall_count(回忆次数):每次被回顾都会增强记忆强度
强度低于 0.05 的记忆会被自动修剪。这意味着你三个月前的一次临时环境变量实验,不会被召回到今天的编码会话中——除非它被反复引用过。
四类记忆,四种衰减速度
YourMemory 把记忆按类别分层,每类有不同的”半衰期”:
| 类别 | 半衰期 | 适用场景 |
|---|---|---|
| strategy(策略) | ~38 天 | 架构决策、工作流模式 |
| fact(事实) | ~24 天 | 个人偏好、稳定的技术栈信息 |
| assumption(假设) | ~19 天 | 推断性上下文、不确定的信念 |
| failure(失败) | ~11 天 | 错误处理、环境特定的坑 |
策略类记忆残留最久——你三个月前决定的”微服务用 gRPC 通信”应该比”昨天临时装的 debug 包”活得更久。
安装与配置:一条命令起步
YourMemory 的安装流程极其简洁。不需要 Docker Compose 或数据库初始化:
pip install yourmemory yourmemory-registeryourmemory-setup
yourmemory-setup 会自动做三件事:
- 拉取本地 embedding 模型(默认
qwen2.5:7b,通过 Ollama 管理,约 4.7 GB) - 创建默认的 DuckDB 向量数据库(零配置)或可选的 PostgreSQL + pgvector
- 在
~/.cursor/rules/memory.mdc等配置文件中注入记忆工具的自动调用规则
激活流程
访问 yourmemoryai.xyz 输入邮箱,验证 6 位验证码后获得 token。注意:YourMemory 并非完全开源——它采用 CC BY-NC 4.0 许可证,个人使用、教育和学术研究免费,但商业用途需要单独授权。
三个 MCP 工具:记忆的 CRUD
YourMemory 通过 MCP(Model Context Protocol)暴露三个工具,AI 编码 Agent 可以在需要时自动调用:
store_memory — 存储新知识
store_memory(
"Sachit prefers tabs over spaces in Python",
importance=0.9,
category="fact",
context_paths=["/projects/backend"]
)
存储时会做主体感知去重:如果新内容与已有记忆指向同一实体(比如都关于”Sachit 的 Python 偏好”),不会重复存储,而是更新强度。如果主体不同(”Sachit 用 DuckDB” vs “YourMemory 用 DuckDB”),则分别存储。
recall_memory — 召回相关记忆
recall_memory("Python formatting", current_path="/projects/backend")
召回分两轮:第一轮用余弦相似度 + BM25 混合检索,返回 top-k 候选;第二轮走实体图 BFS 扩展,把词汇不同但语义相关(通过共享实体连接)的记忆也拉进来。
空间上下文(current_path)还会触发 +0.08 的空间加成——当你在 /projects/backend 里写代码时,关于这个目录的记忆排在前面。
update_memory — 修正过时的记忆
当某个事实变化时(比如项目从 Poetry 换到了 uv),调用 update_memory 不仅更新内容,还会把旧版本写入审计日志,以便追溯。
零成本的离线查询
这是一个让我眼前一亮的功能:YourMemory 的 CLI 可以不调用任何 LLM API 就直接回答记忆中的问题:
yourmemory ask "what database does this project use" yourmemory ask "how do I fix a kubernetes deployment"
当记忆强度足够时,回答零延迟、零 token 消耗、零云端传输。强度不够时,诚实地拒绝并让路给 Claude 等模型——不会为了好看而胡编乱造。
API 代理:透明的记忆注入
如果你的工作流不用 MCP(比如直接调用 OpenAI API),YourMemory 提供了一个 API 代理:
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:3033/proxy/openai"
)
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "What database do I use?"}]
)
代理在每次请求时:
- 召回相关记忆注入到 system prompt
- 把
store_memory和update_memory添加为可用工具 - 当模型调用记忆工具时在本地执行并返回结果
内存仪表盘
启动 MCP 服务器后,访问 http://localhost:3033/ui 就能看到一个完整的记忆浏览器:
- 统计栏:总记忆数、强记忆(≥50%)、正在消退的(5-50%)、即将修剪的(<10%)
- 按 Agent 分页查看各自记忆
- 过滤:按类别(fact / strategy / assumption / failure)、按强度、按最近访问时间
http://localhost:3033/graph 则是交互式的记忆关系图谱,用节点和边展示记忆之间的连接——非常适合一眼看出哪些上下文是孤立的、哪些是高频联系在一起的。
基准表现
YourMemory 在三个标准数据集上做了对比测试:
| 基准 | 分数 | 对比 |
|---|---|---|
| LongMemEval-S Recall@5 | 89.4% | 500 个问题、平均 53 个干扰会话 |
| LoCoMo-10 Recall@5 | 59% | 2× Zep Cloud(28%) |
| HotpotQA BOTH@5 | 71.5% | 实体图加持 +12pp |
尤其值得关注的是 LoCoMo 的成绩——59% 的 Recall@5 直接翻倍了 Zep Cloud 的 28%。YourMemory 的秘密武器是混合检索:纯向量相似度 + BM25 关键词 + 实体图 BFS 的三重组合,让那些”词汇不同但语义连通”的记忆也能被正确召回。
适合谁来用?
- 多 Agent 用户:同时用 Claude Code、Cursor、Cline 的开发者,YourMemory 支持多 Agent 共享实例+权限隔离
- 对隐私敏感的用户:所有记忆处理本地完成,embedding 不走云端
- 团队协作场景:PostgreSQL + pgvector 后端可共享,每个成员有独立
api_key和可见性控制 - 不想增加 API 开销的团队:离线查询和本地处理意味着 0 额外 LLM 成本
小结
YourMemory 用一个从认知科学借来的思路——遗忘曲线——重新思考了 AI Agent 应该怎样”记住”。不是无限堆叠、无差别存储,而是有优先级、有衰减、有自动修剪的生命周期记忆。对于每天在多个 AI 编码工具之间切换的开发者来说,装上这样一层”会自然遗忘”的记忆,能让 Agent 真正越用越顺手。
相关链接: