The most advanced MCP memory server. Period.
Hybrid search (BM25 + multilingual-e5-small RRF) · 100+ languages · Temporal Knowledge Graph · Query-aware ranking · Corpus origin detection · Agent/persona disambiguation · Topic tunnels · AAAK compression (5-10x token savings) · GraphRAG · Chunked RAG · Auto-Compaction · Auto-Classification · Memory Capsules · HTTP API · Single binary · Zero API calls
______________________________________________________________________
为什么
AI编码助手在会话之间会忘记一切。MemoryPilot为他们提供了持久的、可搜索的内存,具有项目意识、语义理解和自动知识组织。内置的AAAK压缩和内存胶囊在加载上下文时将令牌消耗减少了5-10x。每个内存在插入时都会自动分类为正确的重要性、类型和TTL。数据库会自动压缩,无需维护。
基准测试
LongMemEval-S(ICLR 2025)——学术标准
对470个问题进行了评估 LongMemEval 基准(ICLR 2025),长期记忆检索的标准学术数据集。翻转级别粒度,每个干草堆约50个会话。
与整个市场相比(LongMemEval-S,公开数据)
| 系统 | R@5/准确性 | 延迟 | 隐私 | 堆栈 | 源 |
|---|---|---|---|---|---|
| MemoryPilot v4.2(自适应) | 99.1% | ~900 ms | 100%本地 | Rust·35 MB二进制·零API | 此回购, --benchmark-longmemeval @470 |
| MemoryPilot v4.2(默认快速) | 98.7% | 约28毫秒 | 100%本地 | Rust·35 MB二进制·零API | 此回购, --benchmark-longmemeval @470 |
| MemPalace v3.3.3(混合) | 98.4% | 未发布 | 100%本地 | Python+ChromaDB·~500 MB | MemPalace v3..3发布说明 |
| Mem0(云,OpenAI后端) | 94.4% | ~6787个令牌/查询 | 云(OpenAI) | SaaS+OpenAI嵌入 | mem0.ai博客 |
| mcp内存服务v10.34.0 | 80.4% | 未发布 | 100%本地 | Python+SQLite Vec+MiniLM | v10.34.0发行说明 |
| Zep/Graphiti | 63.8% | “比基线低90%” | 云或自主机 | Python+Neo4j+LLM提取 | arXiv 2501.13956 |
| Letta/MemGPT | 未在LongMemEval上测量 | -- | 自主机 | Python框架 | Letta跟踪问题#3115 |
MemoryPilot是 **在这个比较中,唯一一个同时是100%本地的系统 *和* 位居排行榜首位**默认的快速模式(约28毫秒)已经击败了所有已发布的竞争对手;自适应交叉编码器模式为每个查询增加了+0.4pp R@5,而每个查询需要一次ONNX重新排序。
详细视图——MemoryPilot vs MemPalace(最接近的本地竞争对手)
| 度量 | MemoryPilot v4.2(默认快速) | MemoryPilot v4.2(自适应重新排序) | MemPalace v3.3.3 | Delta与MemPalace的比较 |
|---|---|---|---|---|
| R@5 | 98.7% | 99.1% | 96.6%的原材料/98.4%的混合材料 | +2.5%比原材料/+0.7%比混合材料 |
| R@10 | 99.6% | 99.4% | ~ 97%¹ | 与原始相比增加2.6% |
| NDCG@10 | 95.1% | 96.0% | 未发布 | MemoryPilot发布 |
| 平均倒数排名 | 93.6% | 94.9% | 未发布 | MemoryPilot发布 |
| 平均搜索延迟 | ~28毫秒 | ~900毫秒 | N/A | 默认模式快30倍 |
¹在两种模式下使用完整的470个问题评估集(在删除30个弃权问题后)进行验证:默认快速本地混合检索(BM25+余弦RRF,~28ms/查询,适用于实时MCP流量)和自适应交叉编码器重新排序(MEMORYPILOT_CROSS_RERANK=adaptive,jina-v2多语言,融合权重0.45,~900ms/query,适用于基准测试和高风险召回)。默认模式已经击败了MemPalace的混合坚持结果;自适应模式以延迟换取额外的+0.4pp R@5和+1.3pp MRR。按类别(470个问题,自适应重新排序)
| 类别 | R@5 | R@10 | MRR |
|---|---|---|---|
| 单会话用户(64) | 100% | 100% | 96.6% |
| 单次会议助理(56) | 100% | 100% | 98.8% |
| 多会话(121) | 100% | 100% | 95.7% |
| 知识更新(72) | 100% | 100% | 98.2% |
| 时态推理(127) | 97.6% | 98.4% | 93.3% |
| 单次会话偏好(30) | 96.7% | 96.7% | 75.9% |
法语/多语言基准-- --benchmark-fr
为了补充仅支持英语的LongMemEval,MemoryPilot发布了自己的确定性法语基准,涵盖了109个内存和109个跨基础设施、移动、网络、安全和机器学习领域的释义查询。查询有意远离索引措辞,因此它们实际上行使了语义通道。
| 模式 | R@5 | R@10 | MRR | 平均延迟 |
|---|---|---|---|---|
| 默认快速(BM25+RRF) | 50.5% | 60.6% | 47.0% | ~12ms |
| 自适应交叉编码器重新排序(默认) | 62.4% | 62.4% | 59.9% | ~410毫秒 |
由于确定性内存id、基于确定性id的RRF连接中断、同步ANN预热和第一次查询前的显式交叉编码器预热,R@5/R@10上的运行间方差限制在±1pp。这是观察任何法语/多语言回归的指标。
搜索质量——真实世界(500个记忆,30个场景)
| 度量 | MemoryPilot v4.2 | MemPalace v3.1(原始) | 量子内存图 |
|---|---|---|---|
| R@5 | 100% | 96.6% | 93.4% |
| R@10 | 100% | 无 | 93.4% |
| NDCG@10 | 95.6% | 88.9% | 90.8% |
| 集群一致性 | 96.7% | 不适用 | 不适用 |
| 多语言 | 100多种语言 (经验证的FR R@5 62.4%) | 仅限英语 | 仅限英文 |
| AAAK压缩 | 5-10x (无召回损失) | 30倍(召回率降至84.2%) | N/A |
| 平均搜索延迟 | 约28毫秒 默认值/~410毫秒自适应 | N/A | ~80毫秒 |
| 二进制大小 | 35 MB | 约500 MB(Python+ChromaDB) | 1.5 GB |
| 依赖项 | 0(单个二进制,ONNX捆绑) | Python+ChromaDB+SQLite | Python+ONNX |
______________________________________________________________________
与市场上最好的内存服务器相比:
| 功能 | MemoryPilot v4.2 | MemPalace v3.3.3 | Mem0 | Zep/Graphiti |
|---|---|---|---|---|
| LongMemEval R@5 | 99.1% | 98.4% | 94.4% | 63.8% |
| 搜索 | 混合BM25+多语言e5-小型RRF(384-dim)+自适应jina交叉编码器 | ChromaDB余弦(all-MiniLM-L6-v2) | 矢量搜索(云API) | 时间KG遍历+矢量 |
| 嵌入 | 多语言e5-small(100多种语言,本地ONNX) | all-MiniLM-L6-v2(仅限英语) | OpenAI API调用(外部) | OpenAI/云LLM提取 |
| 多语种 | 100多种母语(FR、EN、ES、DE、JA、ZH…) | 仅限英语 | 取决于API | 取决于LLM后端 |
| 知识图 | 具有有效性+置信度的时间三元组 | 时间三元组(SQLite) | 基本图(无时间) | 时间KG(Graphiti,核心特征) |
| GraphRAG | 自动实体提取+图遍历+组合重排序 | 否 | 否 | 是(基于LLM的提取) |
| 查询软件排名 | 首选项/时间/角色/更新/技术意图提升 | 混合v4关键字+时间提升 | 取决于API | 图形化评分 |
| 语料库来源检测 | AI转录/代码库/笔记/平台检测 | v3.3.4 prep | 否 | 否 |
| 代理/角色消歧 | 代理与真人分开 | v3.3.4 prep | 否 | 部分(实体节点) |
| 主题隧道 | 通过KG跨项目主题链接 | v3.3.4 prep | 否 | 否 |
| 代码感知分块 | 树型Rust/Python/TS/TSX/JS+Svelte脚本提取 | 树型代码分块 | 否 | 否 |
| 分块RAG | 转录自动分块+自动蒸馏(8种类型) | 交流对话分块 | 否 | 基于LLM的总结 |
| 压缩 | AAAK+记忆胶囊(5-10倍代币节省) | AAAK方言(实验性,召回率回归到84.2%) | 否 | 否 |
| 自动分类 | 插入时零样本种类/重要性/TTL | 否 | 否 | LLM分类实体 |
| 自动压缩 | GC在500多个存储器时自动触发 | 否 | 否 | 手动 |
| 记忆胶囊 | 将旧记忆压缩成密集的摘要 | 否 | 否 | 不 |
| 内存固定 | 固定关键内存——始终在回忆中,GC证明 | 否 | 否 | |
| 图遍历 | 通过KG查找相关记忆(深度1-3) | 否 | 否 | 原生(Cypher/Neo4j) |
| 批量操作 | 按种类/项目/标签/年龄删除,并配备安全防护装置 | 否 | 否 | 手动 |
| 运行状况仪表板 | 内存分布、过时计数、孤立项、数据库大小 | 否 | 否 | |
| 重复数据删除检测 | Jaccard相似性扫描以查找近似重复项 | 否 | 否 | 基于LLM的对账 |
| 人员检测 | 从文本中自动检测团队成员 | 否 | 否 | LLM提取的实体 |
| 自愈 | 背景自动换行循环 | 否 | 否 | 无 |
| 垃圾回收 | 启发式合并+评分+孤立清理 | 否 | 基本TTL | 无自动GC |
| 项目大脑 | 是,有团队成员(\` 提取加标记分块。代码在语义边界上进行分割,如函数、类、impl块、接口和导出,而不是任意段落。 |
自动蒸馏从转录本中提取结构化记忆: decision, preference, todo, bug, milestone, problem,以及 note智能消歧:一个同时提到错误及其解决方案的片段被分类为 milestone,不 bug.
支持 session_id, thread_id, window_id 用于多窗口内存作用域。
5.AAAK压缩
灵感来自MemPalace的象征性记忆语言。当 compact: true 传递给 recall 或 get_project_brain,输出使用简洁的管道分隔格式压缩约3倍:
[DEC:5] Use Clerk over Auth0 | tags:auth,stack | proj:MyApp
[PREF:4] Always use TypeScript strict mode | tags:typescript6.自愈(自动翻板)
MemoryPilot会监视您的文件。当你保存Rust、Svelte或TypeScript文件时,它会在后台运行。编译错误会自动存储为 bug 具有精确堆栈痕迹的内存。错误修复后,内存将自动删除。
linter线程在其整个生命周期内重用单个DB连接。
7.垃圾收集和自动压实
旧的、不重要的记忆会被评分作为清理候选。使用启发式关键字提取将相关陈旧记忆组合并为压缩摘要。孤立链接和实体将被清除。数据库在重大删除后被清空。
自动压实 当内存计数超过500时自动触发:GC在以下时间后在后台运行 add_memory,改为每5分钟一次。零人工干预。
记忆胶囊 (compact_memories 工具):将旧的低重要性记忆压缩到密集的~100-200个令牌胶囊中。凭证和架构决策永远不会被压缩。Capsules保留知识图谱链接,在不丢失回忆的情况下,为您的旧记忆节省5-10倍的代币。
8.零样本自动分类
当调用者没有指定类型或重要性时,插入时会自动对每个内存进行分类。基于模式的启发式检测:
- 凭证 (API密钥、机密)→ 重要性5,无TTL
- 架构决策 → 重要性5
- 偏好/模式 → 重要性4
- 漏洞 → 重要性3,TTL 90天
- 全部 → 重要性2,TTL 30天
- 代码片段 → 重要性2
- 里程碑 → 重要性4
不需要LLM——纯正则表达式+关键字启发式。AI仍然可以通过传递显式 kind 和 importance.
9.项目大脑
一个工具调用返回1500个令牌以下项目的密集JSON快照:技术栈、架构决策、活动错误、最近的更改、关键组件和 团队成员 (自动检测个人实体)。支持 compact: true 用于AAAK压缩。
安装
一个衬垫(推荐)
git clone https://github.com/Soflution1/MemoryPilot.git && cd MemoryPilot && ./install.sh安装程序构建MemoryPilot,将二进制文件安装到 ~/.local/bin/,检测您的IDE,并自动配置每个IDE。
支持的IDE:
| IDE | 配置文件 | 自动配置 |
|---|---|---|
| 光标 | ~/.cursor/mcp.json | ✓ (stdio) |
| VS Code | ~/.vscode/mcp.json | ✓ (stdio) |
| 克劳德桌面版 | ~/Library/Application Support/Claude/claude_desktop_config.json | ✓ (stdio) |
| 帆板运动 | ~/.codeium/windsurf/mcp_config.json | ✓ (stdio) |
| 克劳德代码 | claude mcp add | ✓ (CLI) |
| 法典 | codex mcp add | ✓ (CLI) |
| ChatGPT桌面 | 设置→ Apps → 通过HTTP创建 | (见下文) |
该脚本是幂等的——再次运行它以在不破坏现有MCP配置的情况下进行更新。
ChatGPT桌面
ChatGPT需要远程MCP端点。启动HTTP服务器,然后将其添加为自定义连接器:
MemoryPilot --http 7437在ChatGPT中:设置→ Apps → 创建→ URL: http://localhost:7437/mcp
手动安装
git clone https://github.com/Soflution1/MemoryPilot.git
cd MemoryPilot
cargo build --release --features http
cp target/release/MemoryPilot ~/.local/bin/
chmod +x ~/.local/bin/MemoryPilot
xattr -cr ~/.local/bin/MemoryPilot # macOS only然后手动将MemoryPilot添加到IDE的MCP配置中(文件路径见上表)。
运作原理
就这样 MemoryPilot在启动时自动将动态系统提示注入IDE。AI将主动呼叫 add_memory 在后台存储您的体系结构决策、API密钥和bug修复,而无需手动干预。所有配置的IDE共享相同的内存数据库。
对于ChatGPT或任何需要HTTP的MCP客户端:运行 MemoryPilot --http 在以下位置公开Streamable HTTP端点 /mcp.
或通过使用 McpHub 用于与所有其他MCP服务器进行SSE传输。
首次运行
# If upgrading from v1 (JSON files):
MemoryPilot --migrate
# Compute embeddings for existing memories:
MemoryPilot --backfill
# Force re-embed all (skips unchanged via content hash):
MemoryPilot --backfill-forceMCP工具(30)
核心
| 工具 | 说明 |
|---|---|
recall | 从这里开始。一次性加载所有上下文:项目内存、作用域线程/窗口内存、首选项、关键事实、模式、决策、全局提示。支持 mode = safe/default/full, compact = true 用于AAAK压缩。 |
get_project_brain | 即时项目摘要(\` 提取 |
- 精确的期限覆盖率提高:当80%以上的查询词出现在内存内容中时,增加10%
- 组合重新排序器:贪婪子图选择,保守+每个连接5%(上限15%)
- KG查询扩展:知识图相关术语的检索后评分提高(每个实体+4%,上限15%)
- 时间新近性:对过去3天的记忆温和+5%,超过30天就会腐烂
- 重要性决胜局:每级±3%——从不覆盖相关性信号
- 自适应交叉编码器重新排序 (通过FastEmbed ONNX使用jina-v2多语言,默认开启):在硬/非英语查询时触发,与可调0.45权重的RRF分数融合,在简单的英语查询中干净地降至BM25+RRF,保持在30毫秒以下。N个会话池(
MEMORYPILOT_RERANK_POOL_SIZE)吸收并发负载。 - 信任之门:当前1名RRF分数已经比前3名高出≥25%时,跳过重新排名(潜在路径;启用强制重新排名时处于活动状态)
- 自动压实:当内存计数>500时,GC会自动触发,取消为每5分钟一次
- 记忆胶囊:旧的低重要性记忆压缩为约100-200个令牌摘要(节省5-10倍)
- 零样本汽车分类:基于模式的启发式方法在没有LLM的情况下插入时分配种类、重要性和TTL
地方快速发展
使用 cargo check 用于日常验证;它捕获类型和借用错误,而无需支付全部链接成本。
make check # cargo check
make check-http # cargo check --features http
make test # cargo test
make timings # cargo build --timings
make check-cached # RUSTC_WRAPPER=sccache cargo checksccache 是可选的,但建议用于频繁的重建:
make sccache-install
make build-cached货物别名也可用: cargo dev, cargo check-http, cargo test-fast, cargo timings,以及 cargo build-http.
保持 cargo build --release --features http 用于发布验证和基准测试运行。链接交换,如 mold 或 lld 在macOS上默认情况下故意不启用;用测量 cargo build --timings 先换 .cargo/config.toml.
自己运行基准测试
MemoryPilot --benchmark-search --scenario-limit 30 # R@5, R@10, NDCG@10, cluster coherence, latency
MemoryPilot --benchmark-recall --scenario-limit 12 # top1/top5 hit rate, cross-project leak, credential safety
MemoryPilot --benchmark-longmemeval [PATH] [--limit N] [--min-r5 PCT] # LongMemEval-S with regression guardLongMemEval基准下载 LongMemEval-S数据集 并以轮次粒度评估470个问题的检索质量。结果以JSON格式输出,并按类别细分。
交叉编码器正在运行 自适应的 默认模式(在硬/非英语查询时触发)。明确强制或禁用它:
MEMORYPILOT_CROSS_RERANK=off MemoryPilot --benchmark-longmemeval benchmarks/longmemeval_s_cleaned.json # baseline, ~28ms/query, 98.7% R@5
MemoryPilot --benchmark-longmemeval benchmarks/longmemeval_s_cleaned.json # adaptive (default), ~900ms/query, 99.1% R@5
MEMORYPILOT_CROSS_RERANK=1 MemoryPilot --benchmark-longmemeval benchmarks/longmemeval_s_cleaned.json # force on every query, max latency
MEMORYPILOT_CROSS_RERANK_WEIGHT=0.70 MemoryPilot --benchmark-longmemeval benchmarks/longmemeval_s_cleaned.json # bias more toward the cross-encoder score
MEMORYPILOT_RERANKER_MODEL=bge-v2-m3 MemoryPilot --benchmark-longmemeval benchmarks/longmemeval_s_cleaned.json # swap the model支持的模型快捷方式: jina-v2-multilingual (默认), bge-v2-m3, bge-base,以及 jina-v1验证了470个可评估LongMemEval-S问题的完整运行结果:默认快速模式达到 5时相对误差为98.7%, 95.1%NDCG@10, 93.6%MRR平均搜索延迟约为28毫秒;自适应模式达到 5时为99.1%, 96%NDCG@10, 94.9%MRR平均搜索延迟约为900毫秒。确定性法国基准(--benchmark-fr)是任何多语言变化的典型回归测试——跨运行方差限制在±1pp R@5。
存储
- 数据库:
~/.MemoryPilot/memory.db - 全局提示:
~/.MemoryPilot/GLOBAL_PROMPT.md - 快速嵌入模型缓存:
~/.fastembed_cache/(首次运行时下载)
许可证
Sofolution源代码可用许可证 --免费使用,不分叉或修改。看 许可证 了解详情。
建造于 SOFLUTION有限公司
