一、项目概述
什么是 MemOS
MemOS(Memory Operating System)是一个面向 LLM 和 AI Agent 的记忆操作系统,提供 OS 级别的记忆层。它将记忆作为可管理的系统资源进行统一表示、调度和演化。
+43.70%
准确率提升
35.24%
Token 节省
75.80
LoCoMo 基准
+2568%
PrefEval-10
📚 参考链接:
GitHub: https://github.com/MemTensor/MemOS
文档: https://memos.openmem.net
论文: arXiv:2507.03724
二、核心架构
三层架构设计
应用层 Application & API Layer
统一 API:add / search / update / delete / transfer
调度层 Memory Scheduling Layer
MemScheduler 异步调度 · 意图预测 · 动态预加载
存储层 Storage & Substrate Layer
Neo4j 图数据库 · Qdrant 向量数据库 · Redis 调度
核心模块
MOS (Memory Operating System)
编排层,管理跨多种记忆类型的预测性异步调度。连接 MemCube 容器与 LLM,提供统一的 API(添加、搜索、更新、转移、回滚),支持跨模型、跨设备的互操作性(MIP 协议)。
MemCube (记忆立方体)
模块化、可移植的记忆容器,类似灵活的知识"卡带"。支持用户、Agent 或会话级别的记忆存储,可跨会话、模型、设备动态注册、更新、移除。
三类记忆类型
| 记忆类型 | 存储形式 | 特点 | 适用场景 |
|---|---|---|---|
| Parametric Memory | 模型权重 | 长期、高效、难编辑 | 即将支持 |
| Activation Memory | KV Cache | 短期、瞬态、动态行为控制 | 运行时状态 |
| Plaintext Memory | 结构化文本 | 可编辑、可追溯、快速更新 | 个性化 & 多Agent共享 |
Plaintext Memory 子类
- GeneralTextMemory: 基于向量的灵活存储,支持语义搜索和元数据过滤
- TreeTextMemory: 层次化图结构记忆,结合树形层次和跨分支链接,支持 Neo4j 图数据库
三、核心功能
统一 Memory API
from memos.api.client import MemOSClient
client = MemOSClient(api_key="YOUR_API_KEY")
# 添加记忆
client.add_message(
messages=[
{"role": "user", "content": "I like coffee. Please remember this."}
],
user_id="user_123",
conversation_id="conv_001"
)
# 搜索记忆
result = client.search_memory(
query="What do I like to drink?",
user_id="user_123",
conversation_id="conv_001"
)
# 记忆反馈修正
client.feedback_memory(
user_id="user_123",
memory_id="mem_xxx",
feedback="纠正:我更喜欢茶而不是咖啡"
)
# 删除记忆
client.delete_memory(
user_id="user_123",
memory_id="mem_xxx"
)
多模态记忆支持
# 文本记忆
text_memory = {
"type": "text",
"content": "用户喜欢在周末去咖啡馆工作"
}
# 图像记忆
image_memory = {
"type": "image",
"content": "用户上传了产品设计图",
"image_url": "https://example.com/design.png"
}
# 工具调用记忆
tool_memory = {
"type": "tool_trace",
"tool_name": "web_search",
"input": "MemOS 文档",
"output": "找到相关文档...",
"timestamp": "2025-12-24T10:00:00Z"
}
知识库管理
# 上传文档
client.upload_document(
user_id="user_123",
mem_cube_id="kb_001",
file_path="./docs/product_manual.pdf",
metadata={"source": "product_manual", "category": "technical"}
)
# 解析 URL
client.parse_url(
user_id="user_123",
mem_cube_id="kb_001",
url="https://example.com/article"
)
MemScheduler 异步调度
基于 Redis Streams 的异步任务调度,支持任务优先级、自动恢复和配额调度。
四、部署指南
快速开始(云服务)
# pip install MemoryOS -U
from memos.api.client import MemOSClient
client = MemOSClient(api_key="YOUR_API_KEY")
# 5 分钟集成,毫秒级响应
本地部署(Docker)
# 1. 克隆仓库
git clone https://github.com/MemTensor/MemOS.git
cd MemOS
# 2. 配置 .env 文件
# 创建 MemOS/.env,配置 LLM API Key、嵌入模型、数据库连接等
# 3. 启动服务
cd docker
docker compose up
# 4. 验证部署
# 访问 http://localhost:8000/docs 查看 API 文档
环境变量配置
# LLM 配置
OPENAI_API_KEY=sk-xxx
MOS_CHAT_MODEL=qwen3-max
# 嵌入模型配置
MOS_EMBEDDER_MODEL=text-embedding-v4
MOS_EMBEDDER_API_BASE=https://dashscope.aliyuncs.com/compatible-mode/v1
EMBEDDING_DIMENSION=1024
# 图数据库配置
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=12345678
# 向量数据库配置
QDRANT_HOST=qdrant-docker
QDRANT_PORT=6333
本地插件(MemOS Lite)
对于 OpenClaw 用户,提供 100% 本地插件:
# macOS / Linux
curl -fsSL https://cdn.memtensor.com.cn/memos-local-openclaw/install.sh | bash
# Windows
powershell -c "irm https://cdn.memtensor.com.cn/memos-local-openclaw/install.ps1 | iex"
MemOS Lite 特点
- 零云依赖,数据完全本地存储(SQLite)
- 混合搜索(FTS5 + 向量)
- 任务摘要 & 技能演化
- 多 Agent 协作
- 完整的 Memory Viewer 可视化面板
五、API 参考
添加记忆
端点: POST /product/add
import requests
import json
data = {
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"mem_cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca",
"messages": [
{"role": "user", "content": "I like strawberry"}
],
"async_mode": "sync"
}
response = requests.post(
"http://localhost:8000/product/add",
headers={"Content-Type": "application/json"},
data=json.dumps(data)
)
print(response.json())
搜索记忆
端点: POST /product/search
data = {
"query": "What do I like",
"user_id": "8736b16e-1d20-4163-980b-a5063c3facdc",
"mem_cube_id": "b32d0977-435d-4828-a86f-4f47f8b55bca"
}
response = requests.post(
"http://localhost:8000/product/search",
headers={"Content-Type": "application/json"},
data=json.dumps(data)
)
记忆反馈
端点: POST /product/feedback
data = {
"user_id": "user_123",
"memory_id": "mem_xxx",
"feedback": "User prefers tea, not coffee"
}
删除记忆
端点: POST /product/delete
data = {
"user_id": "user_123",
"memory_id": "mem_xxx"
}
六、竞品对比
| 特性 | MemOS | OpenAI Memory | LangChain | AutoGen |
|---|---|---|---|---|
| 记忆类型 | 三层(参数/激活/文本) | 仅文本 | 多样但不统一 | 基础文本 |
| 图结构 | ✅ Neo4j 原生 | ❌ | ❌ | ❌ |
| 向量检索 | ✅ Qdrant | ✅ | ✅ | ❌ |
| 异步调度 | ✅ Redis Streams | ❌ | ❌ | ❌ |
| 多模态 | ✅ 文本/图像/工具 | ❌ | ✅ | ❌ |
| 知识库 | ✅ 文档/URL | ❌ | ✅ | ❌ |
| 技能演化 | ✅ | ❌ | ❌ | ❌ |
| 部署方式 | 云/私有/本地 | 仅云 | 私有 | 私有 |
七、最佳实践
快速启动建议
1. 从 GeneralTextMemory 开始 → 2. 根据需要扩展到图结构记忆 → 3. 使用异步模式处理高并发场景 → 4. 配置合理的记忆优先级和 TTL
记忆组织策略
# 按用户组织 MemCube
user_cube = MemCube(
cube_id="user_{user_id}",
owner_type="user",
sharing_policy="private"
)
# 按项目组织 MemCube
project_cube = MemCube(
cube_id="project_{project_id}",
owner_type="agent",
sharing_policy="team",
parent_cube_id="user_cube"
)
# 按会话临时组织
session_cube = MemCube(
cube_id="session_{session_id}",
owner_type="session",
sharing_policy="private",
ttl="24h"
)
性能优化
# 1. 使用批量操作
client.batch_add_messages(
messages=[...], # 批量添加
user_id="user_123"
)
# 2. 配置适当的召回数量
search_config = {
"top_k": 10,
"similarity_threshold": 0.75,
"use_reranker": True
}
# 3. 定期清理低价值记忆
client.cleanup_memory(
user_id="user_123",
retention_policy={
"max_memories": 10000,
"min_confidence": 0.5,
"max_age_days": 90
}
)
八、应用场景
企业级应用
| 场景 | MemOS 解决方案 |
|---|---|
| 客服助手 | 跨会话记忆用户偏好和历史问题 |
| 销售 Agent | 记住客户信息和跟进记录 |
| HR 助手 | 管理员工档案和公司政策知识库 |
| 法务顾问 | 构建法规知识库并持续更新 |
个人助手
| 场景 | MemOS 解决方案 |
|---|---|
| 健康顾问 | 记录健康数据和个人习惯 |
| 学习助手 | 跟踪学习进度和知识薄弱点 |
| 旅行规划 | 记忆偏好和历史旅行记录 |
| 理财顾问 | 记忆财务目标和投资偏好 |
九、总结
MemOS 代表了 LLM 记忆管理的下一代范式:
- 统一性: 将参数记忆、激活记忆、文本记忆统一管理
- 可观测性: 图结构使记忆可追溯、可编辑
- 高效性: 异步调度和智能检索显著降低 Token 消耗
- 扩展性: 模块化设计支持多种后端和自定义插件
- 生产级: 经过企业验证的性能和稳定性
⭐⭐⭐⭐⭐
推荐指数
适用场景
- 需要长期记忆的 AI 助手
- 多 Agent 协作系统
- 企业知识管理系统
- 个性化推荐系统