mcpField
L
longterm-memory

longterm-memory

本地服务
github.com/MarcelRoozekrans记忆与知识21 周前更新

关于 longterm-memory

longterm-memory 是完全本地运行的 MCP 服务,为 AI Agent 提供持久的语义记忆。它使用 SQLite 和本地嵌入模型,无需云服务或 LLM 依赖。

主要功能

  1. 01本地语义记忆存储与检索
  2. 02按类型、标签和日期筛选
  3. 03记忆重要性衰减与访问强化
  4. 04重复内容自动检测
  5. 05数据库备份与 JSON 导出

适用场景

  1. 01跨会话保存 Agent 的关键信息
  2. 02通过自然语言检索相关记忆
  3. 03按项目隔离记忆数据库

MCP 相关

它向 MCP 客户端提供保存、搜索、更新、删除和管理记忆的工具。可通过 Claude Code、Claude Desktop 等客户端使用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"marcelroozekrans-longterm-memory": {
"command": "npx",
"args": [
"-y",
"longterm-memory-mcp"
]
}
}
}
启动命令npx -y longterm-memory-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmlongterm-memory-mcp1.5.0

工具

11

收录的工具列表 · 更新于 1 周前

参数类型必填说明
tagsarray否用于分类的可选标签(例如,["personal", "preference"])
contentstring是要存储在记忆中的文本内容
metadataobject否附加到此记忆的可选键值元数据(例如,{ "topic": "auth", "project": "api" })
importancenumber否重要性级别 1-10(默认值:5)。数值越高,越不容易随时间衰减
memory_typeenum否记忆类别(默认值:general)。会影响衰减率general | fact | preference | conversation | task | ephemeral

详细介绍

LongtermMemory-MCP

LongtermMemory-MCP

codecov GitHub Sponsors

一款完全本地运行的 MCP 服务,为 AI Agent 提供持久的语义长期记忆——无需依赖任何云服务。

灵感来自 mcp-mem0,但完全在你的设备上运行:

功能mcp-mem0本项目
存储PostgreSQL / SupabaseSQLite(Node 内置的 node:sqlite)
嵌入OpenAI API本地 Transformer(all-MiniLM-L6-v2)
向量搜索云端向量数据库进程内余弦相似度
大模型依赖OpenAI / OpenRouter / Ollama无
安装数据库 + API 密钥npx longterm-memory-mcp

工具

核心工具
工具说明
save_memory存储文本,并自动生成语义嵌入、标签、重要性和类型
search_memory使用自然语言查询查找相关记忆(余弦相似度)
update_memory修改现有记忆的内容、元数据、标签、重要性或类型
delete_memory根据 ID 删除指定记忆
delete_all_memories清除所有记忆(不可撤销)
get_all_memories列出所有已存储的记忆(分页)
memory_stats获取数量和数据库位置
搜索
工具说明
search_by_type按类别筛选记忆(general、fact、preference、conversation、task、ephemeral)
search_by_tags查找匹配任一所提供标签的记忆
search_by_date_range查找在指定日期范围内创建的记忆(ISO 格式)
维护
工具说明
create_backup手动触发数据库备份并导出为 JSON

快速开始

Claude Code 插件(推荐)

通过 Claude Code 市场安装——这会同时配置 MCP 服务并安装配套技能,教会 Claude 如何有效使用记忆:

/plugin marketplace add MarcelRoozekrans/LongtermMemory-MCP
/plugin install longterm-memory@longterm-memory-marketplace

此操作会自动:

  • 配置 MCP 服务(无需手动编辑 JSON)
  • 安装 long-term-memory 技能(Claude 将学会在会话开始时回忆上下文、任务完成后保存见解,并对记忆去重)
使用 npx(无需安装)
npx longterm-memory-mcp
或全局安装
npm install -g longterm-memory-mcp
longterm-memory-mcp
或从源代码安装
git clone https://github.com/MarcelRoozekrans/LongtermMemory-MCP.git
cd LongtermMemory-MCP
npm install && npm run build
npm start

配置

Claude Code

如果你通过插件市场安装,MCP 服务已完成配置。手动配置时,请添加到 MCP 设置中(~/.claude/settings.json 或项目的 .claude/settings.json):

{
  "mcpServers": {
    "longterm-memory": {
      "command": "npx",
      "args": ["-y", "longterm-memory-mcp"]
    }
  }
}
Claude Desktop

添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "longterm-memory": {
      "command": "npx",
      "args": ["-y", "longterm-memory-mcp"]
    }
  }
}
Agent 指令

此代码库包含指导 AI Agent 有效使用记忆的指令(自动回忆、保存模式、去重):

文件用途
skills/long-term-memory/SKILL.md独立技能——由 Claude Code 插件自动加载,也可供任何 MCP 客户端引用

数据库位置

默认情况下,记忆存储在共享的、按用户隔离的位置:

~/.longterm-memory-mcp/memories.db

这意味着每个项目和每个 MCP 客户端都共享同一个记忆池——你在一个项目中保存的记忆,在其他所有地方都可用。

多个会话可以同时使用同一个数据库。每个服务进程都会直接读取和写入共享文件(SQLite WAL 模式),因此在一个会话中保存的记忆会立即对其他所有会话可见,而且不会有会话覆盖其他会话保存的内容。需要 Node.js 22.13 或更高版本。

旧版本的数据库可以原样打开。对于没有 schema_meta 表的 v1.0–1.3 数据库,会原地迁移并保留其中的所有记忆;迁移前会在其旁边写入一个名为 memories.db.pre-migration-<timestamp>.bak 的副本。

从 1.4 或更早版本升级: 启动新版本之前,请停止所有使用旧版本的运行中会话。旧版本会将整个数据库保存在内存中,并在每次保存时重写文件,因此如果旧进程仍在运行,就会覆盖新会话保存的内容。

按项目使用数据库

若要为特定项目隔离记忆,请设置 MEMORY_DB_PATH 环境变量:

{
  "mcpServers": {
    "longterm-memory": {
      "command": "npx",
      "args": ["-y", "longterm-memory-mcp"],
      "env": {
        "MEMORY_DB_PATH": "/path/to/project/memories.db"
      }
    }
  }
}

记忆类型

每条记忆都有一个 memory_type,用于决定其分类方式和衰减速度:

类型描述衰减半衰期
general默认通用类型60 天
fact已验证的信息120 天
preference用户/项目偏好90 天
conversation对话上下文45 天
task任务相关备注30 天
ephemeral短期上下文10 天

标签与重要性

  • 标签:使用字符串标签对记忆进行分类(例如 ["auth", "backend"])。使用 search_by_tags 搜索。
  • 重要性(1–10):控制记忆抵抗衰减的能力。默认值为 5。重要性越高,衰减越慢。
  • 受保护的标签:带有 core、identity 或 pinned 标签的记忆不会衰减。

衰减与强化

记忆会随时间衰减,以保持存储内容的相关性:

  • 衰减:每种记忆类型都有一个半衰期(见上表)。重要性会根据上次访问以来的时间呈指数级下降,并设有下限以防止记忆被完全删除。
  • 强化:每次通过搜索访问记忆时,其重要性都会增加 +0.1(最高为 10)。经常访问的记忆会保持较高的重要性。
  • 惰性计算:在访问时计算衰减,而不是通过计时器计算——无需后台进程。

内容去重

保存时会对记忆内容进行哈希处理(SHA-256)。如果已有相同内容,保存操作会被拒绝,并返回对现有记忆 ID 的引用。这会自动防止重复条目。

备份

备份会自动管理,也可以通过 create_backup 工具手动触发。

  • 自动备份:每 24 小时触发一次,或在记忆数量达到 100 的倍数时触发。
  • 保留策略:保留最近 10 个备份;更早的备份会自动清理。
  • 格式:每个备份都是一个带时间戳的目录,其中包含 SQLite 数据库的一致性快照,以及所有记忆的 JSON 导出文件。
  • 位置:默认位于 ~/.longterm-memory-mcp/backups/,也可以设置 MEMORY_BACKUP_PATH:
{
  "mcpServers": {
    "longterm-memory": {
      "command": "npx",
      "args": ["-y", "longterm-memory-mcp"],
      "env": {
        "MEMORY_BACKUP_PATH": "/path/to/backups"
      }
    }
  }
}

工作原理

  1. 保存:使用 all-MiniLM-L6-v2 在本地为文本生成嵌入(384 维向量),并将其与原始内容、元数据、标签、重要性和类型一同存储在 SQLite 中。内容通过 SHA-256 哈希去重。
  2. 搜索:使用相同的模型为查询生成嵌入,然后通过余弦相似度将其与每条已存储记忆进行比较。高于阈值的结果会按相关性排序后返回。被访问的记忆会自动强化。
  3. 衰减:随着时间推移,未使用的记忆会根据其类型的半衰期降低重要性。受保护且频繁访问的记忆不易衰减。
  4. 持久化:每次更改都会直接写入磁盘上的 SQLite 数据库,因此并发会话共用同一个一致的数据存储。无需后台进程,也无需维护服务。

嵌入模型(量化后约 30MB)会在首次使用时下载一次,并缓存在本地。

架构

src/                           — MCP server source
  index.ts                     — Entry point (stdio transport, DB/backup path resolution)
  server.ts                    — MCP server factory + 11 tool definitions
  memory-store.ts              — SQLite storage + vector search + decay integration
  embeddings.ts                — Local embedding engine (Xenova/transformers)
  decay.ts                     — DecayEngine (lazy decay, reinforcement, protected tags)
  backup.ts                    — BackupManager (auto-backup, JSON export, pruning)
  types.ts                     — TypeScript interfaces (Memory, Embedder, config types)

skills/                        — Claude Code plugin skill
  long-term-memory/SKILL.md    — Self-contained agent instructions + skill

.claude-plugin/                — Plugin & marketplace metadata
  plugin.json                  — Plugin manifest
  marketplace.json             — Marketplace manifest
.mcp.json                      — Auto-configures MCP server on plugin install
.vscode/mcp.json               — VS Code MCP server config

基准测试

运行 npm run bench。以下结果来自使用模拟嵌入的内存存储(将存储和 SQLite 的性能与模型延迟隔离):

余弦相似度
操作吞吐量说明
单次计算(384 维)~4.2M ops/s与实际嵌入维度一致
128 维~8.6M ops/s
768 维~2.4M ops/s
1536 维~1.3M ops/s随维度线性扩展
记忆存储操作
操作吞吐量说明
保存(单条)~1,120 ops/s包含嵌入生成、SQLite 插入和去重检查
保存 100 条批次~18 ops/s每批 100 条约需 55ms
保存 1000 条批次~0.3 ops/s每批 1000 条约需 3.1s
更新(内容,重新生成嵌入)~155 ops/s
更新(仅元数据)~344 ops/s比更新内容快 2.2 倍
删除~469 ops/s
搜索(语义搜索,规模测试)
存储大小操作说明
10 条记忆search (limit=5)全量扫描,并对每条记忆计算余弦相似度
100 条记忆search (limit=5)
500 条记忆search (limit=5)
1000 条记忆search (limit=5)线性扫描——随存储大小扩展
衰减引擎
操作吞吐量
单次衰减计算~21M ops/s
单次强化~25.7M ops/s
shouldProtect(标签检查)~22M ops/s

开发

npm install          # Install dependencies
npm run build        # Compile TypeScript
npm test             # Run all tests
npm run bench        # Run benchmarks
npm run test:watch   # Watch mode
npm run test:coverage # Coverage report

贡献

本项目使用 Conventional Commits 和 semantic-release 自动管理版本。

提交消息格式
<type>(<optional scope>): <description>

[optional body]

[optional footer(s)]
类型用途版本变更
feat新功能次版本(0.x.0)
fix修复错误补丁版本(0.0.x)
docs仅文档变更不发布
style格式、空白字符不发布
refactor代码重构不发布
test添加或更新测试不发布
chore维护、依赖项不发布
ciCI/CD 变更不发布

重大变更:在类型后添加 !(例如 feat!: remove deprecated API),或添加 BREAKING CHANGE: 页脚。这会触发主版本升级。

示例
git commit -m "feat: add memory tagging support"
git commit -m "fix: handle empty search query gracefully"
git commit -m "feat!: change default database location"
git commit -m "docs: update configuration examples"

提交消息通过 commitlint 和 husky Git 钩子在本地验证。不符合规范的消息将被拒绝。

发布

发布流程完全自动化。将提交推送到 main 后:

  1. semantic-release 分析提交消息
  2. 确定下一个版本(主版本 / 次版本 / 补丁版本)
  3. 根据提交生成发布说明
  4. 更新 CHANGELOG.md
  5. 发布到 npm
  6. 创建 GitHub Release

无需手动升级版本或创建标签。

依赖项更新

依赖项由 Renovate 自动管理。CI 通过后,补丁和次版本的开发依赖项更新会自动合并。主版本更新则会创建 PR 以供人工审核。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。