你有没有过这种经历:跟某个 AI 助手聊得挺好,关掉对话框再打开,它又跟你像陌生人一样问"有什么可以帮你"。你上次说你喜欢喝美式、你孩子在学钢琴、这周五项目要上线——它全忘了。
这不是模型笨,是它默认只有"当前这一轮对话"的脑子。想让它跨会话记得你,得自己额外接一套记忆系统。我最近翻到一个开源项目EverMemOS(现在改名叫 EverOS 了,后面会讲),思路挺清楚:它不跟某个大模型绑死,而是独立做一个"记忆操作系统",对话来了抽记忆、要用了再查出来喂给模型。我把它核心的东西捋了一遍,讲给同样想给 Agent 加长期记忆的朋友。
几个词先说明白,后面不反复解释: -Agent(智能体):能自己调工具、跑流程完成任务的 AI 程序,不是单纯聊天框。 -中间件:夹在两个系统中间、负责转手的那层组件。 -RAG(检索增强生成):先搜相关资料、再把资料喂给模型回答,减少胡说。
它到底是啥
一句话:EverMemOS 是夹在"你的对话 / Agent"和"大模型"中间的一层记忆中间件。
打个比方:大模型像个临时工,每次来上班都不认识你;EverMemOS 就是前台那本登记簿,把每个访客的喜好、历史都记下来,临时工上岗前先翻一翻。
它想解决的就是一句话——让 Agent 跨会话、跨平台、还能推理地"记住"东西,而不是聊完就忘。
记忆是怎么存进去、又怎么取出来的
EverMemOS 把整套流程拆成三段。名字挺学术,其实不难懂:
1. Encoding(编码 / 抽取)
你发一条消息,它调大模型把里面有价值的信息"抠"出来:发生了啥事、你知道的某条事实、你的偏好、你跟谁啥关系。
2. Consolidation(巩固 / 整理)
抠出来的记忆不会直接堆着。它会按"情节"和"用户 / 实体画像"归拢,重复的合并、新的补上,慢慢长成一张长期记忆网。就像你不会把聊天记录全塞一个文件夹,而是整理成"他的喜好""你们的共同朋友"。
3. Retrieval(检索 / 取用)
下次要回答你时,它按你的问题去翻记忆库,把相关的几条捞出来拼进提示词(prompt)再问大模型。所以模型"看起来"记得你,其实是 EverMemOS 在背后递小纸条。
它到底记得哪些东西
不是所有记忆都一个样。EverMemOS 分了四类,各管各的:
| 类型 | 记的是什么 | 生活里的例子 |
|---|---|---|
| Episodes(情节) | 什么时候、在哪、发生了啥 | "上周三你说要去上海出差" |
| Facts(事实) | 一条条客观信息 | "你老家是成都" |
| Preferences(偏好) | 你喜欢 / 讨厌什么 | "不喝奶茶,爱喝美式" |
| Relations(关系) | 你跟谁、什么关系 | "你是张三的项目搭档" |
这四类合起来,比单纯存"聊天原文"强在哪?原文是死的,分类后的记忆能被精准检索、能被推理。比如你问"我下周去上海要不要带伞",它需要的是"你下周去上海"(情节)+ 外部天气,而不是去翻三周前的整段聊天。
想找的时候怎么找
存进去容易,找得准才难。EverMemOS 给了四种检索方式,按场景挑:
| 方式 | 怎么找 | 适合啥 |
|---|---|---|
| BM25(关键词) | 按词匹配,像传统搜索引擎 | 专有名词、精确说法,比如"订单号 A123" |
| Embedding(向量) | 按意思找,同义词也能命中 | "他喜欢啥运动"能捞出"爱踢球" |
| Hybrid(混合) | 上面俩结合,默认平衡款 | 大多数情况闭眼选这个 |
| Agentic(智能体) | 让 AI 自己决定怎么查、怎么排序 | 复杂多步问题,代价高但更准 |
- 向量检索(Embedding):把文字变成一串数字,意思接近的文字数字也接近,所以能按"意思"而不是"字"来搜。
- BM25:老牌关键词算法,就是"这段话里出现了这几个词,所以相关"。
效果到底行不行
吹得再好,得看 benchmark。EverMemOS 在LoCoMo(一个专门考长上下文记忆和推理的基准)上做到了93% 的推理准确率。
- LoCoMo 是啥:Long-Context Memory 的缩写,给 AI 一堆长对话,然后考它记不记得细节、能不能做单跳 / 多跳推理(比如"他提到的那个朋友家在哪"需要连推两步)。93% 在同类型里算很靠前的数。
底层也不是玩具。它直接用生产级组件:
- Milvus:专门存向量的数据库(管"意思相近"那种检索)
- Elasticsearch:全文搜索引擎(管 BM25 关键词)
- MongoDB:存结构化记忆和元数据
- Redis:做缓存、管会话
换句话说,真要上生产,这套栈不用你自己拼。
谁适合用
我翻了一圈文档和用例,觉得这几类人会最有感觉:
- 做对话助手的开发者:用户偏好、历史话题跨会话保留,回答更一致。
- 客服系统:记用户的问题、设备号、处理结果,下次接入自动带上。
- 个人 / 团队知识 Agent:把文档、会议、聊天沉淀成可检索的记忆。
- 多 Agent 协作:不同 Agent 共用一套记忆,或者按角色隔离。
- 做记忆 / 推理研究的人:它自带 LoCoMo、LongMemEval、PersonaMem 这些基准的复现脚本。
上手跑一下
环境要求:Python 3.10+、Docker 20.10+、uv(一个比 pip 快的 Python 包管理器)、大概 4GB 内存。
# 1. 克隆并进入目录 git clone https://github.com/EverMind-AI/EverMemOS.git cd EverMemOS # 2. 启动依赖(MongoDB、Elasticsearch、Milvus、Redis) docker compose up -d # 3. 装 uv 和依赖 curl -LsSf https://astral.sh/uv/install.sh | sh uv sync # 4. 配置 API Key cp env.template .env # 编辑 .env,填 LLM_API_KEY(抽取用)和 VECTORIZE_API_KEY(向量化 / 重排) # 5. 启动服务 uv run python src/run.py # 6. 健康检查 curl http://localhost:1995/health # 返回 {"status": "healthy", ...} 就说明起来了服务跑在http://localhost:1995。
写一条记忆、再查出来,核心 API 就这两个:
import requests API_BASE = "http://localhost:1995/api/v1" # 写入一条对话消息,系统会自动抽取并入库 requests.post(f"{API_BASE}/memories", json={ "message_id": "msg_001", "create_time": "2025-02-01T10:00:00+00:00", "sender": "user_001", "content": "I love playing soccer on weekends" })# 按问题检索相关记忆 response = requests.get(f"{API_BASE}/memories/search", json={ "query": "What sports does the user like?", "user_id": "user_001", "memory_types": ["episodic_memory"], "retrieve_method": "hybrid" # bm25 / embedding / hybrid / agentic 选一个 }) result = response.json().get("result", {}) for memory_group in result.get("memories", []): print(memory_group)项目结构 & 配置(略讲)
src/:服务入口和编码 / 巩固 / 检索逻辑docs/:配置、API、架构说明evaluation/:各基准评估脚本docker-compose.yaml:一键起那四个依赖
配置主要两处:.env(填 key)和config.json(端口、连接、检索默认参数)。
另外 EverMind-AI 还在办Memory Genesis Competition 2026(记忆相关的开源竞赛),分 Agent+Memory、平台插件、OS 基础设施几个赛道,想参与的可以去 Discord 组队。
改名后记(重要)
写这篇时我去仓库确认了一下:原项目EverMemOS 已经更名为 EverOS,现在地址是github.com/EverMind-AI/EverOS,最新版本v1.4.1。上面代码里的 clone 地址和 API 细节是按我当时看到的材料(v1.2.0)写的,大方向没变,但真要上手建议直接去新仓库看最新文档,避免按旧名找不到。
名词速查表
- LLM(大语言模型):ChatGPT、Claude 那种能理解和生成文字的 AI。
- Agent(智能体):能自己调工具、跑流程完成任务的 AI 程序。
- RAG(检索增强生成):先搜相关资料、再把资料喂给模型回答,减少胡说。
- 向量 / Embedding:把文字转成一串数字,意思近的数字也近,方便按语义搜。
- BM25:经典关键词搜索算法,按"词出现"算相关度。
- LoCoMo:长上下文记忆基准,考 AI 记不记得之前聊过啥、能不能推理。
- Milvus / Elasticsearch / MongoDB / Redis:分别是向量库 / 搜索引擎 / 文档库 / 缓存,都是成熟的生产组件。