在 AI Agent 的时代,记忆是智能的基石。但如何让 Agent 拥有高效、持久、可检索的终身记忆?SimpleMem 给出了一个优雅的答案。
本文将深度解析 SimpleMem 的三阶段架构、核心技术和应用场景。
---
一、项目概览
1.1 基本信息
| 项目 | 内容 |
|---|---|
| 作者团队 | aiming-lab (UC Berkeley 等) |
| 论文 | arXiv:2601.02553 |
| GitHub | 3k+ stars, 294 forks |
| 许可证 | MIT |
| 核心定位 | 面向 LLM Agent 的高效终身记忆框架 |
1.2 性能亮点
| 指标 | SimpleMem | 对比 |
|---|---|---|
| LoCoMo F1 | 43.24% | +26.4% vs Mem0 |
| 推理 Token | ~550 | 30× 少于全上下文 |
| 端到端时间 | 480.9s | 12.5× 快于 A-Mem |
| 跨会话提升 | 48 分 | +64% vs Claude-Mem |
二、问题背景:为什么需要 SimpleMem?
2.1 现有方案的困境
| 方案类型 | 代表 | 问题 |
|---|---|---|
| 全上下文扩展 | 原始 LLM | 冗余信息多,上下文膨胀 |
| 迭代推理过滤 | A-Mem | 计算成本高,延迟大 |
| 被动累积 | Mem0 | 信息密度低,检索效率差 |
2.2 核心挑战
用户: "明天下午2点和 Bob 在星巴克见面"
↓
传统系统存储: 完整对话历史(含寒暄、重复确认)
↓
问题: 低熵噪声占用上下文,检索时淹没关键信息
SimpleMem 的洞察:记忆系统应该像人脑一样——压缩、整合、按需检索。
---
三、三阶段架构深度解析
3.1 Stage 1: 语义结构化压缩 (Semantic Structured Compression)
目标:将非结构化对话蒸馏为紧凑的多视角索引记忆单元
工作流程:
原始对话
↓
熵感知过滤(去除低价值内容)
↓
指代消解 + 时间标准化
↓
原子化记忆单元
↓
三视角索引(语义 + 词汇 + 符号)
示例转换:
# 输入(含噪声)
"He'll meet Bob tomorrow at 2pm" # 指代模糊、时间相对
# 输出(原子化)
{
"content": "Alice will meet Bob at Starbucks on 2025-11-16T14:00:00",
"entities": ["Alice", "Bob", "Starbucks"],
"timestamp": "2025-11-15T14:30:00",
"type": "event"
}
三视角索引:
| 视角 | 类型 | 用途 | 实现 |
|---|---|---|---|
| 语义 | Dense | 概念相似度 | 1024-d 向量嵌入 |
| 词汇 | Sparse | 精确词匹配 | BM25 关键词索引 |
| 符号 | Metadata | 结构化过滤 | 时间、实体、人物 |
3.2 Stage 2: 在线语义合成 (Online Semantic Synthesis)
目标:会话内即时整合相关上下文,消除冗余
与传统方案的区别:
| 方案 | 时机 | 方式 |
|---|---|---|
| 传统 | 异步后台 | 定期合并 |
| SimpleMem | 写入时即时 | proactive 合成 |
# 片段 1
"User wants coffee"
# 片段 2
"User prefers oat milk"
# 片段 3
"User likes it hot"
# 合成结果
"User prefers hot coffee with oat milk" # 单一紧凑表示
技术特点:
- 在当前会话范围内执行
- 相关记忆单元实时整合
- 维护紧凑连贯的记忆拓扑
3.3 Stage 3: 意图感知检索规划 (Intent-Aware Retrieval Planning)
目标:推断搜索意图,动态确定检索范围,高效构建精确上下文
动态检索策略:
查询输入
↓
LLM 推理 → 生成检索计划
↓
{语义查询, 词汇查询, 符号约束, 检索深度}
↓
并行多视角检索
↓
ID 去重合并
↓
精确上下文构建
自适应深度:
| 查询复杂度 | 检索策略 | 示例 |
|---|---|---|
| 简单 | 直接事实查找,单记忆单元 | "会议时间?" |
| 复杂 | 跨多事件聚合,扩展深度 | "过去一周的项目进展?" |
{q_sem, q_lex, q_sym, d} ~ P(q, H)
其中:
- q_sem: 语义查询向量
- q_lex: 词汇查询
- q_sym: 符号约束
- d: 检索深度
- H: 历史上下文
---
四、核心创新点
4.1 语义无损压缩
关键洞察:并非所有信息都同等重要
# 高熵信息(保留)
"明天下午2点和 Bob 在星巴克见面"
# 低熵噪声(过滤)
"嗯...好的...那个..." # 填充词
"谢谢!再见!" # 礼貌用语
压缩效果:在 LoCoMo 基准上,Token 消耗减少 30 倍,同时保持 43.24% F1。
4.2 生物启发设计
SimpleMem 的设计灵感来自互补学习系统理论 (CLS):
| 生物机制 | SimpleMem 实现 |
|---|---|
| 海马体快速编码 | 语义结构化压缩 |
| 皮层慢速整合 | 在线语义合成 |
| 情境依赖回忆 | 意图感知检索 |
4.3 生产级优化
| 优化 | 效果 |
|---|---|
| 并行处理 | 8 工作器并行构建,4 工作器并行检索 |
| 分层存储 | SQLite (会话) + LanceDB (向量) |
| OpenRouter 集成 | 更快响应,更高可用性 |
五、跨会话记忆 (SimpleMem-Cross)
5.1 核心能力
SimpleMem-Cross 扩展了基础框架,支持跨对话持久记忆:
| 功能 | 描述 |
|---|---|
| 会话生命周期 | 完整的 start/record/stop/end 管理 |
| 自动上下文注入 | 新会话开始时自动注入相关历史 |
| 事件收集 | 消息、工具使用、文件变更 |
| 观察提取 | 启发式提取决策、发现、学习 |
| 来源追溯 | 每个记忆条目链接回源证据 |
| 记忆整合 | 衰减、合并、修剪旧记忆 |
5.2 使用示例
from cross.orchestrator import create_orchestrator
async def main():
orch = create_orchestrator(project="my-project")
# 开始会话 — 自动注入历史上下文
result = await orch.start_session(
content_session_id="session-001",
user_prompt="Continue building the REST API",
)
print(result["context"]) # 来自之前会话的相关上下文
# 记录会话事件
await orch.record_message(result["memory_session_id"],
"User asked about JWT")
await orch.record_tool_use(
result["memory_session_id"],
tool_name="read_file",
tool_input="auth/jwt.py",
tool_output="class JWTHandler: ..."
)
# 结束会话 — 提取观察,生成摘要,存储记忆
report = await orch.stop_session(result["memory_session_id"])
print(f"Stored {report.entries_stored} memory entries")
5.3 架构图
Agent Frameworks (Claude / Cursor / Custom)
|
+------------+------------+
| |
Hook/Lifecycle Adapter HTTP/MCP API
| |
+------------+------------+
|
CrossMemOrchestrator
|
+-------+-------+--------+
| | |
Session Context Consolidation
Manager Injector (decay/merge/prune)
| |
+-------+
|
Cross-Session Vector Store (LanceDB)
---
六、MCP 集成
SimpleMem 提供云端 MCP (Model Context Protocol) 服务:
6.1 支持的客户端
- Claude Desktop
- Cursor
- LM Studio
- Cherry Studio
- 任何 MCP 兼容客户端
6.2 快速配置
{
"mcpServers": {
"simplemem": {
"url": "https://mcp.simplemem.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}
6.3 核心特性
| 特性 | 描述 |
|---|---|
| Streamable HTTP | MCP 2025-03-26 协议 |
| 多租户隔离 | 基于令牌的用户级数据表 |
| 混合检索 | 语义 + 关键词 + 元数据 |
| 生产优化 | OpenRouter 集成 |
七、与 OpenClaw 的潜在结合
SimpleMem 的设计理念与 OpenClaw 的架构有天然的契合点:
7.1 互补性分析
| OpenClaw | SimpleMem | 结合价值 |
|---|---|---|
| 多 Agent 协作 | 终身记忆 | Agent 间共享记忆 |
| 工具调用 | 事件记录 | 工具使用历史追溯 |
| 会话管理 | 跨会话记忆 | 长期上下文保持 |
| 技能系统 | 观察提取 | 技能学习记忆 |
7.2 可能的集成场景
# 场景:OpenClaw Agent 使用 SimpleMem
class OpenClawAgentWithMemory:
def __init__(self):
self.memory = SimpleMemSystem()
self.tools = ToolRegistry()
async def run(self, task):
# 检索相关历史记忆
context = self.memory.retrieve(task)
# 执行工具调用
result = await self.tools.execute(task, context)
# 记录事件和观察
self.memory.record_tool_use(result)
self.memory.extract_observations(result)
return result
---
八、使用建议
8.1 适合场景
✅ 推荐使用:
- 长期运行的 AI Agent
- 需要跨会话保持上下文的助手
- 复杂多轮对话系统
- 工具使用历史追溯
8.2 快速开始
# 安装
pip install simplemem
# 或使用源码
git clone https://github.com/aiming-lab/SimpleMem.git
cd SimpleMem
pip install -r requirements.txt
# 配置
cp config.py.example config.py
# 编辑 config.py 填入 API 密钥
8.3 关键配置
# config.py
OPENAI_API_KEY = "your-api-key"
LLM_MODEL = "gpt-4.1-mini"
EMBEDDING_MODEL = "Qwen/Qwen3-Embedding-0.6B"
# 并行处理(大规模数据)
system = SimpleMemSystem(
enable_parallel_processing=True,
max_parallel_workers=8,
enable_parallel_retrieval=True,
max_retrieval_workers=4
)
---
九、总结
SimpleMem 代表了 LLM Agent 记忆系统的新一代范式:
| 维度 | 传统方案 | SimpleMem |
|---|---|---|
| 核心思想 | 被动存储 | 主动压缩 |
| 信息密度 | 低 | 高 (30× 提升) |
| 检索效率 | 固定策略 | 意图感知 |
| 记忆整合 | 异步后台 | 在线即时 |
对于构建长期运行的 AI Agent,SimpleMem 提供了一个生产就绪、性能优越、架构优雅的记忆解决方案。
---
参考资源:
- GitHub: https://github.com/aiming-lab/SimpleMem
- 论文: arXiv:2601.02553
- MCP 服务: https://mcp.simplemem.cloud
- PyPI: https://pypi.org/project/simplemem/
*本文基于 SimpleMem 官方文档、论文和开源代码撰写。*
#AI #LLM #Agent #Memory #SimpleMem #MCP #长期记忆 #机器学习