Supermemory 深度调研报告
基于 GitHub 开源项目 supermemoryai/supermemory 的深度技术调研
调研日期:2026-03-27
Supermemory 深度调研报告
基于 GitHub 开源项目 supermemoryai/supermemory 的深度技术调研
调研日期:2026-03-27
一、项目概述
1.1 基本信息
| 属性 |
信息 |
| 项目名称 |
Supermemory |
| GitHub |
https://github.com/supermemoryai/supermemory |
| 开发者 |
supermemoryai |
| 官网 |
https://supermemory.ai |
| 核心定位 |
AI 时代的记忆引擎 |
| 开源状态 |
MIT License |
| Stars |
19,747 |
| Forks |
1,835 |
| 主要语言 |
TypeScript |
| 创建时间 |
2024-02-27 |
| 活跃状态 |
持续更新中 |
1.2 一句话介绍
Supermemory 是一个AI 记忆引擎,让 AI 系统能够跨对话记住信息,自动提取事实、构建用户画像、处理知识更新和矛盾,并在正确的时间交付正确的上下文。
1.3 解决的问题
传统 AI 系统的问题:
┌─────────────────────────────────────────────────────────────┐
│ 对话 1: "我喜欢 TypeScript" │
│ AI: "好的,我记住了" │
│ │
│ 对话 2: (新对话) │
│ 用户: "我之前说我喜欢什么语言?" │
│ AI: "抱歉,我不知道..." ← 完全忘记了! │
└─────────────────────────────────────────────────────────────┘
↓ Supermemory 解决方案 ↓
┌─────────────────────────────────────────────────────────────┐
│ 对话 1: "我喜欢 TypeScript" │
│ AI: "好的,已记录到你的档案中" │
│ │
│ 对话 2: (新对话) │
│ 用户: "我之前说我喜欢什么语言?" │
│ AI: "你喜欢 TypeScript" ← 从记忆中检索! │
└─────────────────────────────────────────────────────────────┘
1.4 核心能力
| 能力 |
描述 |
| 记忆提取 |
从对话中自动提取事实 |
| 用户画像 |
自动维护用户上下文 (~50ms 响应) |
| 知识更新 |
处理时间变化、矛盾和自动遗忘 |
| 混合搜索 |
RAG + Memory 单一查询 |
| 连接器 |
Google Drive、Gmail、Notion、GitHub 等 |
| 多模态处理 |
PDF、图片(OCR)、视频(转录)、代码(AST 分块) |
1.5 基准测试表现
Supermemory 在所有三个主要 AI 记忆基准测试中排名第一:
| 基准测试 |
测量内容 |
结果 |
| LongMemEval |
跨会话长期记忆与知识更新 |
81.6% - #1 |
| LoCoMo |
扩展对话中的事实回忆 |
#1 |
| ConvoMem |
个性化和偏好学习 |
#1 |
二、核心架构
2.1 整体架构图
┌─────────────────────────────────────────────────────────────────────────┐
│ Supermemory Architecture │
├─────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Your App / AI Tool │ │
│ │ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ │
│ │ │Claude │ │ Cursor │ │ VSCode │ │ Web │ │ Mobile │ │ │
│ │ │Desktop │ │ IDE │ │ Agent │ │ App │ │ App │ │ │
│ │ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │ │
│ │ │ │ │ │ │ │ │
│ │ └───────────┴───────────┼───────────┴───────────┘ │ │
│ │ │ │ │
│ └───────────────────────────────┼───────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Supermemory API │ │
│ │ ┌──────────────────────────────────────────────────────────┐ │ │
│ │ │ Memory Engine │ │ │
│ │ │ • 事实提取 • 时间追踪 • 矛盾解决 │ │ │
│ │ │ • 自动遗忘 • 用户画像 • 上下文管理 │ │ │
│ │ └──────────────────────────────────────────────────────────┘ │ │
│ │ │ │ │
│ │ ┌───────────────────────────┼───────────────────────────────┐ │ │
│ │ │ │ │ │ │
│ │ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ │ │
│ │ │ │ Hybrid │ │ Connectors │ │ File │ │ │ │
│ │ │ │ Search │ │ │ │ Processing │ │ │ │
│ │ │ │ (RAG+Memory)│ │ Drive/Gmail │ │ PDF/Image │ │ │ │
│ │ │ │ │ │ Notion/GitHub│ │ Video/Code │ │ │ │
│ │ │ └─────────────┘ └─────────────┘ └─────────────┘ │ │ │
│ │ │ │ │ │
│ │ └───────────────────────────────────────────────────────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Infrastructure │ │
│ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ ┌───────────┐ │ │
│ │ │ Cloudflare │ │ PostgreSQL │ │ Vector │ │ Better │ │ │
│ │ │ Workers │ │ Drizzle │ │ Store │ │ Auth │ │ │
│ │ └─────────────┘ └─────────────┘ └─────────────┘ └───────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────┘
2.2 仓库结构
supermemory/
├── apps/
│ ├── web/ # Next.js Web 应用
│ ├── mcp/ # MCP 服务器
│ ├── browser-extension/ # 浏览器扩展
│ ├── docs/ # 文档站点
│ └── memory-graph-playground/
├── packages/
│ ├── tools/ # SDK 集成 (AI SDK, OpenAI, Mastra)
│ ├── memory-graph/ # 可视化组件
│ ├── lib/ # 共享工具库
│ ├── validation/ # API 验证模式
│ ├── hooks/ # React Hooks
│ └── ai-sdk/ # Vercel AI SDK 集成
├── turbo.json # Turbo 配置
├── bunfig.toml # Bun 配置
└── package.json
2.3 记忆 vs RAG
┌─────────────────────────────────────────────────────────────────────┐
│ Memory is NOT RAG │
├─────────────────────────────────────────────────────────────────────┤
│ │
│ RAG (检索增强生成) │
│ ├── 检索文档块 │
│ ├── 无状态:所有人得到相同结果 │
│ ├── 不理解时间变化 │
│ └── 例: 搜索 "部署文档" → 返回最新部署指南 │
│ │
│ Memory (记忆) │
│ ├── 提取和追踪关于用户的事实 │
│ ├── 有状态:个性化结果 │
│ ├── 理解时间变化和矛盾 │
│ └── 例: "我刚搬到旧金山" 取代 "我住在纽约" │
│ │
│ Supermemory = RAG + Memory 组合 │
│ └── 同时返回文档 (RAG) + 用户偏好 (Memory) │
│ │
└─────────────────────────────────────────────────────────────────────┘
三、记忆引擎
3.1 核心操作
| 操作 |
描述 |
| Fact Extraction |
从对话中自动提取事实 |
| Temporal Tracking |
追踪知识的时间变化 |
| Contradiction Resolution |
检测并解决矛盾信息 |
| Automatic Forgetting |
自动遗忘过期信息 |
3.2 事实提取
import Supermemory from "supermemory";
const client = new Supermemory();
// 存储对话内容,自动提取事实
await client.add({
content: "用户喜欢 TypeScript,偏好函数式编程模式",
containerTag: "user_123", // 用户标识
});
3.3 用户画像系统
用户画像自动分为两类:
| 类型 |
内容 |
示例 |
| Static |
永久事实 |
"喜欢 TypeScript", "使用 Vim", "偏好深色模式" |
| Dynamic |
近期上下文 |
"正在做 API 集成", "调试速率限制" |
// 获取用户画像 (~50ms 响应)
const { profile } = await client.profile({
containerTag: "user_123"
});
console.log(profile.static); // ["喜欢 TypeScript", "使用 Vim"]
console.log(profile.dynamic); // ["正在做 API 集成"]
3.4 矛盾解决
时间线示例:
t1: 用户说 "我住在纽约"
→ 记忆: location = "纽约"
t2: 用户说 "我刚搬到旧金山"
→ 检测矛盾: 旧位置 vs 新位置
→ 更新: location = "旧金山"
→ 遗忘: "住在纽约" (过期信息)
去重逻辑:
export function deduplicateMemories(data: ProfileWithMemories): DeduplicatedMemories {
// 优先级: Static > Dynamic > Search Results
// 使用 Set 进行 O(1) 查重
}
3.5 自动遗忘
// 软删除过期的记忆
await client.memories.forget({
containerTag: "user_123",
memoryContent: "用户住在纽约", // 现已过期
reason: "用户搬到了旧金山"
});
四、混合搜索
4.1 RAG + Memory 组合
// 混合搜索模式
const results = await client.search.memories({
q: "如何部署?",
containerTag: "user_123",
searchMode: "hybrid", // 组合 RAG 文档 + Memory
});
// 返回:
// - 部署文档 (RAG)
// - 用户的部署偏好 (Memory)
4.2 相似度计算
// 余弦相似度计算
export const cosineSimilarity = (vectorA: number[], vectorB: number[]): number => {
let dotProduct = 0;
for (let i = 0; i < vectorA.length; i++) {
dotProduct += vectorA[i] * vectorB[i];
}
return dotProduct; // 归一化向量等于余弦相似度
};
// 语义相似度
export const calculateSemanticSimilarity = (
doc1Embedding: number[] | null,
doc2Embedding: number[] | null
): number => {
const similarity = cosineSimilarity(doc1Embedding, doc2Embedding);
return similarity >= 0 ? similarity : 0;
};
4.3 向量嵌入
- 使用 Cloudflare AI 生成
- 与文档和记忆一起存储
- 用于语义搜索
五、连接器
5.1 支持的集成
| 连接器 |
同步方式 |
功能 |
| Google Drive |
实时 Webhook |
文档自动同步 |
| Gmail |
实时 Webhook |
邮件处理 |
| Notion |
实时 Webhook |
页面/数据库同步 |
| OneDrive |
实时 Webhook |
文档同步 |
| GitHub |
实时 Webhook |
仓库内容 |
| Web Crawler |
按需 |
URL 抓取 |
5.2 数据同步流程
┌─────────────────────────────────────────────────────────────────┐
│ Content Processing Pipeline │
├─────────────────────────────────────────────────────────────────┤
│ │
│ 连接器触发 (每 4 小时 + Webhook) │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 内容类型检测 │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ AI 摘要生成 │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 自动标签 │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 向量嵌入生成 │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 语义分块 │ │
│ └────────┬────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────┐ │
│ │ 存入数据库 │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
六、文件处理
6.1 多模态提取器
| 类型 |
处理方式 |
| PDF |
文本提取 |
| 图片 |
OCR 处理 |
| 视频 |
语音转录 |
| 代码 |
AST 感知分块 |
6.2 文件上传 API
// 上传文件
await client.documents.uploadFile({
file: fileBlob,
containerTags: ["project_123"],
metadata: { title: "设计文档" }
});
// 列出文档
const docs = await client.documents.list({
containerTag: "project_123"
});
七、API 设计
7.1 核心 API 方法
| 方法 |
用途 |
client.add() |
存储内容 (文本、对话、URL、HTML) |
client.profile() |
用户画像 + 可选搜索 |
client.search.memories() |
混合搜索 |
client.search.documents() |
文档搜索 |
client.documents.uploadFile() |
上传文件 |
client.documents.list() |
列出文档 |
client.settings.update() |
配置记忆提取和分块 |
7.2 完整使用示例
import Supermemory from "supermemory";
const client = new Supermemory({ apiKey: "sm_..." });
// 1. 存储对话
await client.add({
content: "用户喜欢 TypeScript 和函数式编程",
containerTag: "user_123",
});
// 2. 获取用户画像 + 相关记忆
const { profile, searchResults } = await client.profile({
containerTag: "user_123",
q: "用户偏好什么编程风格?",
});
// 3. 混合搜索
const results = await client.search.memories({
q: "部署流程",
containerTag: "user_123",
searchMode: "hybrid",
});
// 4. 上传文档
await client.documents.uploadFile({
file: pdfBlob,
containerTags: ["project_abc"],
});
八、集成模式
8.1 Vercel AI SDK
import { withSupermemory } from "@supermemory/tools/ai-sdk";
import { openai } from "@ai-sdk/openai";
const modelWithMemory = withSupermemory(openai("gpt-4o"), "user_123", {
mode: "full",
addMemory: "always"
});
// 模式选项:
// - "profile": 获取用户画像,不过滤查询
// - "query": 基于用户消息搜索记忆
// - "full": 组合 profile + query 结果
8.2 OpenAI Agents SDK
import { withSupermemory } from "@supermemory/tools/openai";
const openaiWithMemory = withSupermemory("user-123", {
conversationId: "conversation-456",
mode: "full",
addMemory: "always"
});
const completion = await openaiWithMemory.chat.completions.create({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "你还记得什么?" }],
});
8.3 Mastra
import { Agent } from "@mastra/core/agent";
import { withSupermemory } from "@supermemory/tools/mastra";
const agent = new Agent(withSupermemory(
{ id: "assistant", name: "Assistant", model: openai("gpt-4o") },
"user-123",
{ mode: "full", addMemory: "always" }
));
8.4 MCP Server
# 安装 MCP 服务器
npx -y install-mcp@latest https://mcp.supermemory.ai/mcp \
--client claude --oauth=yes
MCP 工具列表:
| 工具 |
功能 |
memory |
保存或遗忘信息 |
recall |
搜索记忆 |
whoAmI |
获取当前用户信息 |
listProjects |
列出可用项目 |
memory-graph |
可视化记忆图谱 |
九、MCP 服务器架构
┌─────────────────┐ ┌──────────────────┐
│ MCP Client │◄──── OAuth/API ───►│ Supermemory API │
│ (Claude, Cursor)│ Key │ (api.supermemory.ai)
└────────┬────────┘ └──────────────────┘
│ ▲
│ MCP Protocol │ Auth Validation
▼ │
┌─────────────────────────────────────────────────────────────────┐
│ Supermemory MCP Server │
│ (mcp.supermemory.ai/mcp) │
│ ┌─────────────────────────────────────────────────────────┐ │
│ │ Cloudflare Durable Object │ │
│ │ • 会话状态 │ │
│ │ • 客户端信息持久化 │ │
│ │ • MCP 协议处理 │ │
│ └─────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────┘
十、技术栈
10.1 运行时与框架
| 组件 |
技术 |
| 运行时 |
Bun |
| Web 框架 |
Next.js (Web), Hono (API/MCP) |
| 语言 |
TypeScript |
| Monorepo |
Turbo |
| 包管理 |
Bun |
10.2 后端基础设施
| 组件 |
技术 |
| Serverless |
Cloudflare Workers |
| 状态 |
Durable Objects + SQLite |
| 数据库 |
PostgreSQL + Drizzle ORM |
| 向量存储 |
Cloudflare AI |
| KV 存储 |
Cloudflare KV |
10.3 认证与安全
| 组件 |
技术 |
| 认证 |
Better Auth |
| API Keys |
sm_ 前缀 |
| OAuth |
支持 MCP |
10.4 主要依赖
{
"better-auth": "1.3.3",
"drizzle-orm": "latest",
"hono": "latest",
"zod": "^3.25.76",
"@tanstack/react-query": "^5.90.14",
"@ai-sdk/openai": "latest",
"@anthropic-ai/sdk": "latest"
}
十一、与其他框架对比
11.1 vs Mem0
| 维度 |
Supermemory |
Mem0 |
| 开源 |
MIT |
MIT |
| Stars |
19.7K |
25K+ |
| 基准测试 |
LongMemEval #1 |
有参与 |
| 连接器 |
6+ |
多种 |
| MCP 支持 |
原生 |
需要适配 |
| 混合搜索 |
原生支持 |
分别处理 |
11.2 vs LangChain Memory
| 维度 |
Supermemory |
LangChain Memory |
| 类型 |
独立服务 |
框架组件 |
| 持久化 |
内置 |
需要配置 |
| 连接器 |
内置 |
需要集成 |
| 用户画像 |
自动维护 |
需要实现 |
| API |
简单统一 |
多种方式 |
11.3 vs Letta
| 维度 |
Supermemory |
Letta |
| 定位 |
记忆引擎 |
Agent 框架 |
| 核心功能 |
记忆管理 |
Agent 构建 |
| 集成 |
多框架 |
自带框架 |
| 部署 |
SaaS + 自托管 |
自托管 |
十二、使用场景
12.1 典型应用场景
| 场景 |
描述 |
| AI 助手 |
让助手记住用户偏好和历史 |
| 客户服务 |
记住客户问题和解决方案 |
| 编程助手 |
记住项目上下文和编码风格 |
| 学习平台 |
追踪学习进度和偏好 |
| 健康应用 |
记住健康目标和偏好 |
12.2 最佳实践
// 1. 使用容器标签隔离数据
await client.add({
content: "项目使用 React 18",
containerTag: "project_abc", // 项目级别
});
await client.add({
content: "用户偏好深色模式",
containerTag: "user_123", // 用户级别
});
// 2. 定期清理过期记忆
await client.memories.forget({
containerTag: "user_123",
memoryContent: "旧的技术栈偏好",
reason: "技术栈已更新"
});
// 3. 使用混合搜索获得最佳结果
const results = await client.search.memories({
q: "部署配置",
containerTag: "user_123",
searchMode: "hybrid",
});
参考资源
- GitHub: https://github.com/supermemoryai/supermemory
- 文档: https://supermemory.ai/docs
- 快速开始: https://supermemory.ai/docs/quickstart
- Dashboard: https://console.supermemory.ai
- Web App: https://app.supermemory.ai
- Discord: https://supermemory.link/discord
- Twitter: https://twitter.com/supermemory
报告生成时间:2026-03-27