EverMind 发布了 EverOS,这是一个面向 AI 智能体的开源记忆运行时。它采用 Apache 2.0 许可证发布。它针对的是智能体构建者在早期就会遇到的一个问题:大语言模型是无状态的。对话一旦结束,上下文就消失了。
EverOS 提出了一种不同的基础架构。它没有将记忆锁定在向量数据库内部,而是将记忆以纯 Markdown 文件的形式写入。这些文件成为智能体跨会话读取、编辑和搜索的事实来源。
概要
- EverOS 将智能体记忆存储为可编辑的 Markdown 文件,并由 SQLite 和 LanceDB 建立索引。
- 混合检索将 BM25、向量搜索和标量过滤整合到一次查询中。
- 案例可提炼为可复用的技能,赋予智能体程序化的、自我演进的记忆能力。
- 基准测试分数表现强劲,但由 EverMind 自行报告;请根据自身工作负载进行验证。
- 该项目在 Apache 2.0 许可证下开源,云端和自托管功能一致。
什么是 EverOS?
EverOS 是一个 Python 库和一个本地优先的记忆运行时。它作为一个服务器运行,配有 CLI 和 FastAPI HTTP API,全程异步优先。你可以将其嵌入现有的智能体循环中,而无需重建技术栈。
该设计将记忆分为两个轨道。用户侧记忆包含用户画像、事件片段、事实和前瞻。智能体侧记忆包含案例和技能。将两者分开的做法并不常见;大多数库仅围绕聊天历史进行设计。
每条记录都以 `.md` 文件的形式存储。你可以打开、编辑、使用 grep 搜索、进行 Git 版本管理,或在 Obsidian 中查看。EverAlgo 是一个独立的无状态库,负责处理提取算法。EverOS 则负责编排并持久化结果。
端点栈与 OpenAI 协议兼容。通过更改基础 URL,它可以连接到 OpenAI、OpenRouter、vLLM、Ollama 或 DeepInfra。这使得集成几乎只需更改一处配置。
该运行时默认采用本地优先架构。数据无需离开你的环境,并且每一层都是可检查的。对于不希望自托管的团队,还提供了托管的 EverOS Cloud 选项。两者共享相同的 SDK、检索引擎和记忆格式。
架构——Markdown、SQLite 和 LanceDB
EverOS 使用三层存储栈。Markdown 是事实来源。SQLite 管理状态和队列。LanceDB 管理向量、BM25 和标量过滤器。
这比典型的生产级记忆系统设置要轻量得多。无需 MongoDB、Elasticsearch、Milvus、Redis 或 Kafka。对于独立开发者和小型团队来说,这降低了运营成本。
检索是混合式的。单个 LanceDB 查询结合了 BM25 关键词匹配、稠密向量搜索和标量过滤。EverMind 将这种多模态检索路径称为 mRAG。
级联索引同步机制确保文件与索引保持一致。编辑 `.md` 文件会触发文件监听器,从而重新同步索引。记忆保持可检查状态,且不会过时。
检索在不同标识符之间也是正交的。你可以通过 user_id、agent_id、app_id、project_id 和 session_id 来限定搜索范围。这种范围限定在需要数据隔离的多智能体和多用户部署中非常重要。
记忆如何自我进化——案例变为技能
一个显著特征是程序性记忆。EverOS 将每个完成的智能体任务记录为一个案例。重复出现的成功模式会在离线状态下被提炼为可复用的技能。
这就是所谓的“自我进化”,说得直白些。技能在智能体团队中共享,无需人工管理,也无需硬编码。目标是让智能体在使用中不断改进,而不是每次会话都从头开始。
1.1.0 版本增加了更多生命周期管理机制。它引入了知识 API,用于支持带有分类和主题搜索的、基于源文件的 Markdown 页面。还增加了反思功能,这是一个离线处理过程,用于合并情节簇,并在会话之间优化用户画像和技能。
记忆模型很简单。情景记忆回答“发生了什么”。画像记忆回答“这个用户是谁”。程序性记忆回答“这个任务如何完成”。
基准测试
EverMind 团队报告在 LoCoMo 上达到 93.05%,在 LongMemEval 上达到 83.00%,在 HaluMem 上达到 93.04%。它还引用了低于 500 毫秒的 p95 检索延迟。LoCoMo 和 LongMemEval 衡量长期对话记忆;HaluMem 针对的是记忆幻觉。这些数据来自 EverMind 的发布文章。
下表将 EverOS 与常见的替代方案在具体设计维度上进行了比较:
| 维度 | EverOS | 朴素 RAG | 全上下文窗口 | 其他记忆库 |
|---|---|---|---|---|
| 数据源 | 纯 Markdown .md 文件 | 向量数据库记录 | 仅提示词 | API 或数据库状态 |
| 本地技术栈 | Markdown + SQLite + LanceDB | 向量数据库 + 应用代码 | 无 | 通常是托管服务 |
| 检索 | 混合 BM25 + 向量 + 标量 | 仅稠密向量 | 无(不进行检索) | 视情况而定 |
| 程序性记忆 | 案例被提炼为技能 | 无 | 无 | 罕见 |
| 多模态摄入 | 一次调用处理 PDF、图片、Office 文档、URL | 手动流程 | 仅通过上下文 | 部分 |
| LoCoMo 准确率 | 93.05%(EverMind 报告) | — | 不适用(上下文限制) | 视情况而定 |
| 许可证 | Apache 2.0 | 视情况而定 | 不适用 | 视情况而定 / 专有 |
用例及实际示例
该库链接了可用的集成方案。它们展示了持久化记忆在实际产品中能够实现的功能。
Hive Orchestrator 是一个浏览器原生的蜂巢思维系统,专为命令行编码智能体设计。Claude Code、Codex、Gemini 和 OpenCode 通过共享的团队协议,以真实的 PTY 进程形式进行协作。
Reunite 利用语义记忆进行公共价值搜索。父母描述他们记得的事情,孩子描述他们回忆的内容,系统则会呈现其中的关联。
其他示例涵盖医疗和硬件领域。其中包括一个阿尔茨海默症记忆助手和一个 AI 可穿戴设备。该可穿戴设备能聆听日常生活并将其转化为记忆。一个具有自我进化记忆功能的学习伙伴也在示例之列。更广泛的生态系统还增加了一个 Claude Code 插件和一个基于 MCP 的记忆层,用于编码助手。
五分钟代码讲解
安装使用标准的 Python 工具。EverOS 需要 Python 3.12 或更高版本。本地演示无需 API 密钥。
# Requires Python 3.12+
uv pip install everos # or: pip install everos
everos demo # local educational visualizer, no keys
everos init # paste OpenRouter + DeepInfra keys into .env
everos server start # starts the FastAPI server
curl http://127.0.0.1:8000/health # -> {"status":"ok"} 添加和搜索记忆都是简单的 HTTP 调用。下面的示例存储一个事实,强制进行提取,然后将其检索出来。
# 1) Add a short conversation
curl -X POST http://127.0.0.1:8000/api/v1/memory/add \
-H 'Content-Type: application/json' \
-d '{"session_id":"demo-001","app_id":"default","project_id":"default",
"messages":[{"sender_id":"alice","role":"user","timestamp":1750000000000,
"content":"I love climbing in Yosemite every spring."}]}'
# 2) Flush to force extraction (local demo)
curl -X POST http://127.0.0.1:8000/api/v1/memory/flush \
-H 'Content-Type: application/json' \
-d '{"session_id":"demo-001","app_id":"default","project_id":"default"}'
# 3) Search it back
curl -X POST http://127.0.0.1:8000/api/v1/memory/search \
-H 'Content-Type: application/json' \
-d '{"user_id":"alice","app_id":"default","project_id":"default",
"query":"Where do I like to climb?","top_k":5}' 多模态摄入是一个可选附加功能。安装 `everos[multimodal]` 可以增加对图片、PDF 和音频的解析能力。Office 文档额外需要 LibreOffice,它会在解析前将文件转换为 PDF。
试试看:交互式记忆演示
下面嵌入的演示在您的浏览器中模拟了 EverOS 的循环流程。添加一段内容,观察它被提取和标记,然后通过混合检索将其搜索回来。此演示仅供说明,并未连接到真实服务器。