在 AI Agent 的时代,记忆是智能的基石。但如何让 Agent 拥有高效、持久、可检索的终身记忆?SimpleMem 给出了一个优雅的答案。
本文将深度解析 SimpleMem 的三阶段架构、核心技术和应用场景。
| 项目 | 内容 |
|---|---|
| **作者团队** | aiming-lab (UC Berkeley 等) |
| **论文** | arXiv:2601.02553 |
| **GitHub** | 3k+ stars, 294 forks |
| **许可证** | MIT |
| **核心定位** | 面向 LLM Agent 的高效终身记忆框架 |
| 指标 | SimpleMem | 对比 |
|---|---|---|
| **LoCoMo F1** | 43.24% | +26.4% vs Mem0 |
| **推理 Token** | ~550 | 30× 少于全上下文 |
| **端到端时间** | 480.9s | 12.5× 快于 A-Mem |
| **跨会话提升** | 48 分 | +64% vs Claude-Mem |
| 方案类型 | 代表 | 问题 |
|---|---|---|
| **全上下文扩展** | 原始 LLM | 冗余信息多,上下文膨胀 |
| **迭代推理过滤** | A-Mem | 计算成本高,延迟大 |
| **被动累积** | Mem0 | 信息密度低,检索效率差 |
用户: "明天下午2点和 Bob 在星巴克见面"
↓
传统系统存储: 完整对话历史(含寒暄、重复确认)
↓
问题: 低熵噪声占用上下文,检索时淹没关键信息
SimpleMem 的洞察:记忆系统应该像人脑一样——压缩、整合、按需检索。
目标:将非结构化对话蒸馏为紧凑的多视角索引记忆单元
工作流程:
原始对话
↓
熵感知过滤(去除低价值内容)
↓
指代消解 + 时间标准化
↓
原子化记忆单元
↓
三视角索引(语义 + 词汇 + 符号)
示例转换:
# 输入(含噪声)
"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 | 结构化过滤 | 时间、实体、人物 |
目标:会话内即时整合相关上下文,消除冗余
与传统方案的区别:
| 方案 | 时机 | 方式 |
|---|---|---|
| 传统 | 异步后台 | 定期合并 |
| **SimpleMem** | **写入时即时** | ** proactive 合成** |
合成示例:
# 片段 1
"User wants coffee"
# 片段 2
"User prefers oat milk"
# 片段 3
"User likes it hot"
# 合成结果
"User prefers hot coffee with oat milk" # 单一紧凑表示
技术特点:
目标:推断搜索意图,动态确定检索范围,高效构建精确上下文
动态检索策略:
查询输入
↓
LLM 推理 → 生成检索计划
↓
{语义查询, 词汇查询, 符号约束, 检索深度}
↓
并行多视角检索
↓
ID 去重合并
↓
精确上下文构建
自适应深度:
| 查询复杂度 | 检索策略 | 示例 |
|---|---|---|
| **简单** | 直接事实查找,单记忆单元 | "会议时间?" |
| **复杂** | 跨多事件聚合,扩展深度 | "过去一周的项目进展?" |
数学表达:
{q_sem, q_lex, q_sym, d} ~ P(q, H)
其中:
- q_sem: 语义查询向量
- q_lex: 词汇查询
- q_sym: 符号约束
- d: 检索深度
- H: 历史上下文
关键洞察:并非所有信息都同等重要
# 高熵信息(保留)
"明天下午2点和 Bob 在星巴克见面"
# 低熵噪声(过滤)
"嗯...好的...那个..." # 填充词
"谢谢!再见!" # 礼貌用语
压缩效果:在 LoCoMo 基准上,Token 消耗减少 30 倍,同时保持 43.24% F1。
SimpleMem 的设计灵感来自互补学习系统理论 (CLS):
| 生物机制 | SimpleMem 实现 |
|---|---|
| 海马体快速编码 | 语义结构化压缩 |
| 皮层慢速整合 | 在线语义合成 |
| 情境依赖回忆 | 意图感知检索 |
| 优化 | 效果 |
|---|---|
| **并行处理** | 8 工作器并行构建,4 工作器并行检索 |
| **分层存储** | SQLite (会话) + LanceDB (向量) |
| **OpenRouter 集成** | 更快响应,更高可用性 |
SimpleMem-Cross 扩展了基础框架,支持跨对话持久记忆:
| 功能 | 描述 |
|---|---|
| **会话生命周期** | 完整的 start/record/stop/end 管理 |
| **自动上下文注入** | 新会话开始时自动注入相关历史 |
| **事件收集** | 消息、工具使用、文件变更 |
| **观察提取** | 启发式提取决策、发现、学习 |
| **来源追溯** | 每个记忆条目链接回源证据 |
| **记忆整合** | 衰减、合并、修剪旧记忆 |
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")
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)
SimpleMem 提供云端 MCP (Model Context Protocol) 服务:
{
"mcpServers": {
"simplemem": {
"url": "https://mcp.simplemem.cloud/mcp",
"headers": {
"Authorization": "Bearer YOUR_TOKEN"
}
}
}
}
| 特性 | 描述 |
|---|---|
| Streamable HTTP | MCP 2025-03-26 协议 |
| 多租户隔离 | 基于令牌的用户级数据表 |
| 混合检索 | 语义 + 关键词 + 元数据 |
| 生产优化 | OpenRouter 集成 |
SimpleMem 的设计理念与 OpenClaw 的架构有天然的契合点:
| OpenClaw | SimpleMem | 结合价值 |
|---|---|---|
| 多 Agent 协作 | 终身记忆 | Agent 间共享记忆 |
| 工具调用 | 事件记录 | 工具使用历史追溯 |
| 会话管理 | 跨会话记忆 | 长期上下文保持 |
| 技能系统 | 观察提取 | 技能学习记忆 |
# 场景: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
✅ 推荐使用:
# 安装
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 密钥
# 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× 提升) |
| **检索效率** | 固定策略 | 意图感知 |
| **记忆整合** | 异步后台 | 在线即时 |
三大核心技术:
参考资源:
本文基于 SimpleMem 官方文档、论文和开源代码撰写。
#AI #LLM #Agent #Memory #SimpleMem #MCP #长期记忆 #机器学习
还没有人回复