mcp超级存储器
](https://pypi.org/project/mcp-super-memory/)  
N: LLM代理的M关联内存图——作为MCP服务器交付。
搜索 “牛顿” → reach “草莓” 通过共享密钥。 仅仅嵌入相似性并不能做到这一点。
mcp-super-memory 是一个用于LLM代理的关联存储系统,基于 键/值图 --不是矢量存储。记忆存在于 价值空间,通过单独的 密钥空间 --一个存储器可以通过多个键访问,一个键可以访问多个存储器。这使得像人类一样的联想跳跃(多跳图遍历)成为可能,而纯嵌入搜索根本无法复制。
适用于: 克劳德桌面·克劳德代码·任何兼容MCP的LLM代理
______________________________________________________________________
为什么不只是嵌入?
每个现有的内存系统(Mem0、A-MEM、MemGPT)都将内存存储为节点,并通过嵌入相似性来检索它们。这一直有效,直到它不起作用:
Query: "Newton"
Embedding search finds: "Newton discovered gravity" ✅
Embedding search misses: "user likes strawberries" ❌超级记忆找到了两者——因为“牛顿”→ 苹果存储器→ 水果钥匙→ 草莓记忆。这 路径存在于密钥图中,而不是嵌入空间。
______________________________________________________________________
运作原理
Key Space (concepts) Value Space (memories)
───────────────────── ──────────────────────────────
[Newton] ──────────────────→ "Newton discovered gravity"
[apple] ────────┬─────────→ ↑ same memory
[gravity] ────────┘
│
[apple] ────────┼─────────→ "apples are red fruit"
[fruit] ──────┬─┘
[red] ──────┤
│
[fruit] ──────┼─────────→ "user likes strawberries"
[strawberry]────┘搜索 "Newton" → 火柴 [Newton], [apple] 按键(1键)→ 跟随共享 [fruit] key → 达到草莓记忆(2跳,分数衰减0.3倍)。
结果包括 hop 领域 --你总是知道结果是直接的还是关联的。
______________________________________________________________________
主要特点
| 功能 | 超级内存 | A-MEM | Mem0 | MemGPT |
|---|---|---|---|---|
| 键/值分离 | ✅ N: M | ❌ | ❌ | ❌ |
| 关联多跳 | ✅ 内置 | ❌ | ❌ | ❌ |
| 深度系统 | ✅ | ❌ | ❌ | 部分 |
| 内存版本控制 | ✅ 替代 | 覆盖 | 覆盖 | ❌ |
| 时间衰减 | ✅ 深度加权 | ❌ | ❌ | ❌ |
| 密钥类型 | ✅ 概念/名称/proper_noun | ❌ | ❌ | ❌ |
| 密钥合并(IDF) | ✅ | ❌ | ❌ | ❌ |
| 双路径召回 | ✅ 关键字+内容 | ❌ | ❌ | ❌ |
深度系统
每个记忆都有一个深度分数 0.0 → 1.0:
| 阶段 | 深度 | 行为 |
|---|---|---|
| 浅 | 0.7 | 公认的事实。抵制纠正。 |
深度增加 +0.05 每次召回。深层记忆会随着时间的推移而慢慢衰退。如果你试图纠正一个深层记忆,它会抵制——即使在取代之后,它的深度也会保持更高。
密钥类型
并非所有按键的行为都应该相同。名字在语义上不应该匹配——“hand건”不应该仅仅因为它们都是简短的韩语单词而与“纽约时报”匹配。
| 类型 | 匹配 | 用例 |
|---|---|---|
concept (默认) | 嵌入相似度≥0.35 | 主题、类别、属性 |
name | 仅完全匹配 | 人名 |
proper_noun | 仅完全匹配 | 品牌、地点 |
Name/proper_noun密钥也会受到IDF惩罚(×0.5)当它们成为连接到许多内存的中心键时,可以防止它们污染无关的搜索。
版本控制(不覆盖)
"user lives in Seoul" (depth: 0.4 → weakened to 0.12, preserved)
↑ superseded by
"user moved to Busan" (depth: 0.0, new)与A-MEM在进化过程中覆盖内存不同,Super memory保留了完整的历史。每一次修正都是可追溯的——信念是什么时候改变的,从什么时候开始?
密钥合并
Add key "파이썬" → finds existing "Python" (similarity 0.87 > threshold 0.85)
→ reuses existing key instead of creating duplicate防止密钥空间碎片化。跨语言或措辞的相同概念保持统一。
双路径召回
Recall同时搜索两条路径:
- 路径A(密钥匹配): 查询嵌入→ 匹配密钥→ 点击链接→ 回忆
- 路径B(内容匹配): 查询嵌入→ 直接与内存内容嵌入进行比较
两条路径的得分相加。这确保了即使没有用正确的密钥标记记忆,也能找到它们。
______________________________________________________________________
建筑
┌─────────────────────────────────────────────────────────┐
│ Key Space │
│ [name] [동건] [programming] [python] [fruit] [red] │
│ ↓ ↓ ↓ ↓ ↓ ↓ │
│ [vec] [exact] [vec] [vec] [vec] [vec] │
└────────────────────────┬────────────────────────────────┘
│ N:M links
↓
┌─────────────────────────────────────────────────────────┐
│ Value Space │
│ "user's name is Donggeon" depth: 0.85 (deep) │
│ "user likes Python" depth: 0.30 (medium) │
│ "user likes strawberries" depth: 0.05 (shallow) │
└─────────────────────────────────────────────────────────┘召回算法(2跳):
- 嵌入查询→ 查找匹配的关键字(概念:相似度≥0.35,name/proper_noun:完全匹配)
- 还可以将查询嵌入直接与内存内容嵌入进行比较(≥0.3)
- 点击链接→ 收集记忆,汇总分数(多个关键匹配相加,IDF加权)
- 对于每个1小时内存:请按照以下步骤操作 *它的* keys → 找到2跳记忆(分数×
HOP_DECAY = 0.3) - 应用深度系数(
0.5 + depth × 0.5)时间衰减(深度加权,30天半衰期) - 返回排名结果
hop领域
______________________________________________________________________
MCP工具
存储系统通过MCP公开8个工具:
| 工具 | 说明 |
|---|---|
recall(query, top_k) | N:M搜索,2跳关联遍历+内容匹配 |
remember(content, keys, key_types?) | 使用关键概念和可选类型注释节省内存 |
correct(memory_id, content, keys?) | 版本更新——旧内存保留但减弱 |
related(memory_id) | 查找记忆共享密钥(关联探索) |
forget(memory_id) | 永久删除 |
get_conversation(session_id, turn?) | 加载原始对话回合 |
list_memories() | 列出所有存储的内存,包括按键、深度、访问次数 |
memory_stats() | 获取当前密钥/内存/链接计数 |
系统提示模板也可通过以下方式获得 memory_system_prompt MCP提示——包括它来指示代理安静地回忆,使用不同的密钥,并且永远不要向用户提及内存系统。
______________________________________________________________________
快速入门(MCP服务器)
克劳德桌面
添加 claude_desktop_config.json:
OpenAI嵌入:
{
"mcpServers": {
"mcp-super-memory": {
"command": "uvx",
"args": ["mcp-super-memory"],
"env": {
"OPENAI_API_KEY": "your-openai-api-key"
}
}
}
}本地嵌入(不需要API密钥):
{
"mcpServers": {
"mcp-super-memory": {
"command": "uvx",
"args": ["mcp-super-memory[local]"],
"env": {
"EMBEDDING_BACKEND": "local"
}
}
}
}克劳德代码
# OpenAI embeddings
claude mcp add mcp-super-memory -e OPENAI_API_KEY=your-openai-api-key -- uvx mcp-super-memory
# Local embeddings (no API key required)
claude mcp add mcp-super-memory -e EMBEDDING_BACKEND=local -- uvx "mcp-super-memory[local]"手册/开发
git clone https://github.com/donggyun112/mcp-super-memory
cd super-memory创建 .env:
OPENAI_API_KEY=your-openai-api-key
OPENAI_EMBEDDING_MODEL=text-embedding-3-small或者使用本地嵌入(不需要API密钥):
EMBEDDING_BACKEND=local
LOCAL_EMBEDDING_MODEL=paraphrase-multilingual-MiniLM-L12-v2 # optional, this is the default注: 在现有数据上混合后端会破坏召回。如果切换后端,请清除 ~/.super-memory/graph.json 第一。uv sync
uv run mcp-super-memory要求:
- Python 3.12+
- OpenAI API密钥(用于嵌入)-或
sentence-transformers用于本地嵌入
______________________________________________________________________
数据存储
所有数据都是本地的。不需要外部数据库。
data/
├── graph.json # keys, memories, links
└── conversations/
└── {session_id}.jsonl # original conversation turns______________________________________________________________________
局限性
- 线性扫描 --适合个人使用(约10k内存)。计划大规模集成FAISS/ChromaDB。
- 最多2跳 --更深的关联链需要
related()代理调用工具。 - 代理商质量问题 --按键选择打开
remember影响检索质量。系统提示调优很重要。
______________________________________________________________________
与A-MEM的比较
A-MEM(NeurIPS 2025)专注于 *记忆进化* --当新的记忆到来时,现有记忆的描述会更新。Super Memory专注于 *存储器存取* --如何通过关联路径到达正确的内存。
他们解决不同的问题。A-MEM问“我们如何保持记忆井井有条?”超级记忆问“我们是如何以人类实际思考的方式找到记忆的?”
版本控制方法也不同:A-MEM覆盖进化(仅当前状态),超级内存保留历史(完整时间线)。
______________________________________________________________________
路线图
- \[\]FAISS/ChromaDB用于标尺
- \[\]编码代理配置文件(代码上下文的不同关键策略)
- \[\]内存导出/导入
- \[\]多用户支持
______________________________________________________________________
许可证
麻省理工学院
