mcpField
M
memory-lean

memory-lean

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

关于 memory-lean

memory-lean 是基于本地文件的 MCP 服务,为编码 Agent 提供跨会话持久化的知识图谱记忆。它以排序后的搜索摘要、浏览器界面和兼容参考服务的文件及工具名称,保持响应精简。

主要功能

  1. 01持久化实体与关系图谱
  2. 02返回匹配摘要的排序搜索
  3. 03通过浏览器界面查看和编辑记忆
  4. 04归档超量事实并支持恢复
  5. 05通过锁和每日备份共享图谱
  6. 06兼容参考服务的文件及工具名称

适用场景

  1. 01在不同编码会话间保留项目上下文
  2. 02开始任务前查找相关项目事实
  3. 03在浏览器中检查或编辑 Agent 记忆
  4. 04让并行 Agent 会话共用一份记忆图谱

MCP 相关

通过 stdio 提供用于搜索、读取和编辑图谱的 MCP 工具。Agent 可共享同一份本地图谱,网页界面也可修改图谱。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"zamansheikh-memory-lean": {
"command": "npx",
"args": [
"-y",
"memory-lean"
],
"env": {
"MEMORY_FILE_PATH": "<MEMORY_FILE_PATH>"
}
}
}
}
启动命令npx -y memory-lean
需要配置的环境变量
MEMORY_FILE_PATHWhere the graph file lives (default ~/.claude/memory-graph/memory.jsonl)

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

安装包
npmmemory-lean1.5.0

工具

11

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

参数类型必填说明
limitnumber否最大结果数(默认 10,最多 50)
querystring是搜索词

详细介绍

memory-lean 图标

memory-lean

为 AI 编码 Agent 提供长期记忆,不会占满上下文窗口。
Agent 可低成本搜索的知识图谱,以及可查看和编辑全部内容的 Web UI。

npm 版本 npm 下载量 测试 已收录于 MCP 注册表 零依赖 MIT 许可证

快速开始 · Web UI · 工作原理 · 工具 · 为 12 种 Agent 配置 · 参与贡献

memory-lean Web UI 演示:悬停查看实体,选择实体以突出显示其关系,搜索、编辑事实,并在自由布局和按类型分组的布局之间切换

memory-lean 是一个 MCP 服务,为 Claude Code、Codex、Cursor、MiMo Code 和其他 MCP 客户端提供跨会话持久记忆:有哪些项目、项目之间的依赖关系、发布了哪个版本、还有哪些待办事项,以及从实践中学到的规则。它可直接替换参考记忆服务 (@modelcontextprotocol/server-memory), 使用相同的文件名和工具名,但回答内容约精简 40 倍。

亮点

回答精简约 40 倍。 搜索会返回排序后的名称列表和匹配行,而不是完整的所有实体,因此 Agent 可以在每项任务开始前查询记忆。

面向用户的 Web UI。 查看按类型分组的整个图谱、追踪关系,还可以添加、编辑或删除任意内容。Agent 写入的内容会实时显示。

可直接替换。 使用与参考服务相同的 memory.jsonl 文件和九种工具。随时切换,也可以随时切回。

适用于各种 Agent。 提供 Claude Code、MiMo Code、Codex、Cursor、Copilot、Gemini CLI、Zed、JetBrains 等工具的复制粘贴式配置,以及教 Agent 如何使用它的说明。

自动保持精简。 使用简短事实、为每个实体设置上限,并将溢出内容归档,避免图谱膨胀成一堵文字墙。

隐私安全。 使用纯本地文件、每日备份、支持并行会话的写入锁,且不访问网络。单个服务文件,零依赖。

## 数字

在包含 237 个实体、355 个关系和 1,160 条事实的真实图谱上测量得出 (Token 数 ≈ 字符数 ÷ 4):

调用参考服务memory-lean
read_graph~77,800 个 Token~2,000 个 Token缩小 40 倍
search_nodes,对 5 个常见词取平均~31,000 个 Token~770 个 Token缩小 40 倍

匹配一两个实体的窄范围搜索,节省的内容较少,因为可精简的部分不多。要测量自己的图谱,请在克隆的仓库中运行 node tools/bench.mjs;该命令只读,并会输出大小,绝不输出内容。

快速开始

Claude Code:安装插件。它会添加服务、作为技能的说明、每个会话开始时的简短提醒,以及 /memory-ui。

/plugin marketplace add zamansheikh/memory-lean
/plugin install memory-lean@memory-lean

其他 Agent:将服务添加到其 MCP 配置中,然后提供说明。

{
  "mcpServers": {
    "memory": { "command": "npx", "args": ["-y", "memory-lean"] }
  }
}
npx -y memory-lean --protocol >> AGENTS.md   # into the rules file your agent reads

只是想看看? 打开网页 UI,查看一个虚构示例图谱:

npx -y memory-lean --ui --demo
各 Agent 的设置
Agent服务配置说明
Claude Code插件插件内含
Xiaomi MiMo Codemimocode.jsonc技能或 AGENTS.md
opencodeopencode.jsonAGENTS.md
OpenAI Codex CLIcodex mcp addAGENTS.md
Cursor.cursor/mcp.jsonAGENTS.md 或规则
VS Code (Copilot).vscode/mcp.jsoncopilot-instructions.md
Gemini CLIsettings.jsonGEMINI.md
Windsurfmcp_config.json规则
Clinecline_mcp_settings.json.clinerules/
Zedsettings.jsonAGENTS.md 或 .rules
JetBrains IDEsAI Assistant 设置规则或指南
Claude Desktopclaude_desktop_config.json项目说明

无论哪个 Agent 首次写入,图谱都会创建在 ~/.claude/memory-graph/memory.jsonl。这样,所有 Agent 都能共享同一份记忆。设置 MEMORY_FILE_PATH 可将其保存到其他位置。

Web UI

npx -y memory-lean --ui

这会在浏览器中打开你的记忆。Agent 能做的所有事情,你都可以在这里完成:

  • 探索。 每种类型都有自己的气泡。点击一个实体即可高亮显示与之关联的所有内容;拖动节点可调整位置,滚动可缩放视图。 搜索会匹配名称、类型和事实。
  • 编辑。 添加、编辑和删除事实,重命名实体或更改其类型,添加和移除关系,创建和删除实体,以及恢复已归档的事实。 每项更改都会通过与 Agent 工具相同的检查。
  • 查看动态。 Agent 所做的更改会在两秒内显示。
  • 发现问题。 概览会列出待处理工作、关联最多的实体,以及任何超出预算的内容;超出预算的内容也会在图中标出。
选中一个实体:图中高亮显示其关系,侧边栏中列出这些关系搜索 payments:匹配的实体保持明亮,其余实体淡出
顺着关联查看。 选择一个实体即可查看其事实和关系。查找任何内容。 一次搜索即可匹配名称、类型和事实。
就地编辑一条事实,并显示字符计数浅色主题下的 Web UI
就地编辑。 字符数限制与 Agent 相同,均为 300 个字符。浅色或深色。 页面会跟随你的系统设置,也可以自行选择。

此页面仅在你的机器上运行(127.0.0.1),并需要使用它打印出的链接中的一次性密钥,因此其他网站无法读取或更改你的记忆。任何内容都不会上传到其他地方。

工作原理

先搜索,再打开

参考服务会以完整的格式化 JSON 返回所有匹配的实体。memory-lean 则会返回按相关性排序的名称列表,以及匹配到的行:

> search_nodes { "query": "deploy" }

57 match "deploy", top 10 shown (narrow the query or raise limit). open_nodes for full entities.
- shop-backend [service] 12 obs, 6 rel
    › 2026-03-02: deployed 2.4.0 to production
    › deploy with scripts/release.sh, never by hand
- PENDING shop-backend 2.4.0 [pending] 2 obs, 3 rel
    › …mobile apps still call the old endpoint until the deploy of 2.4.0 reaches them

然后,Agent 只打开所需的内容:

> open_nodes { "names": ["shop-backend"] }

## shop-backend [service] (3 archived)
- NestJS API behind api.example.com
- 2026-03-02: deployed 2.4.0 to production

## relations
shop-app -talks_to-> shop-backend
PENDING shop-backend 2.4.0 -blocks-> shop-app
为什么它能保持精简
限制含义
简短的响应search_nodes 最多返回 10 个名称及其摘要,read_graph 返回名称索引,只有 open_nodes 会返回完整实体。
简短的事实超过 300 个字符的观察会被拒绝,并提示 Agent 将其拆分,或把详细内容放入仓库。
每个实体的上限一个实体最多保留 15 条观察。超过后,最早的带日期观察会移至 archive/<entity>.md。内容不会被删除:可以列出并恢复这些观察;无日期的事实(身份事实)始终保留。
逐步缩小范围的搜索每个词都必须在实体的某处匹配,因此增加一个词就会缩小结果范围。参考服务会将查询视为一个完整短语进行精确匹配。
如何保护你的数据安全
防护措施含义
可安全共享写入程序会使用锁文件,因此多个 Agent 会话可以共用一张图,而不会相互覆盖。每次写入都会以原子方式替换文件。
每日备份每天会将一份副本存入 backups/;保留最近 7 份。
保留损坏的行无法读取的行会在下次写入时移至 memory.jsonl.unreadable,并报告出来,绝不会被悄悄丢弃。
纯文本文件图数据采用 JSON Lines 格式,归档文件为 Markdown,备份则是副本。你可以手动读取、搜索和编辑所有内容。

工具

工具返回内容
search_nodes按排名排列的实体名称列表,包含计数和最多两个匹配片段。每个词都必须与名称、类型、某条观察记录或与该实体相连的关系类型匹配。
open_nodes以紧凑文本形式返回你指定的完整实体,以及与其相连的所有关系和归档计数。未知名称会返回“你是不是想找”建议。
read_graph索引:按类型分组的实体名称及其观察记录数量。不包含观察记录本身。
create_entities创建实体;跳过已存在的名称。
create_relations在现有实体之间创建关系;跳过重复项。
add_observations向实体添加事实,并强制执行长度限制和每个实体的数量上限。
delete_observations按完全匹配的文本删除观察记录。
delete_relations删除指定的关系。
delete_entities删除实体及与其相连的所有关系。
rename_entity重命名实体,同时保留其观察记录、关系和归档。参考服务中不提供此工具。
archived_observations列出某个实体的归档内容,可按条件筛选,并恢复选定事实。参考服务中不提供此工具。

三个读取工具均标记为只读,因此支持此功能的客户端可以在不询问的情况下运行它们。

命令行

命令功能
memory-lean通过 stdio 运行 MCP 服务。这是 Agent 启动的命令。
memory-lean --ui [port]打开 Web UI。--no-open 只打印链接;--demo 使用一份临时的虚构图副本。
memory-lean --protocol打印 Agent 指令,可直接追加到 AGENTS.md、CLAUDE.md 或 GEMINI.md。
memory-lean --skill <dir>将相同的指令作为 Agent Skill 写入 <dir>/memory-graph。
memory-lean --lint报告图中超出预算的内容。只读。
memory-lean --compact备份图,然后将超出限制的观察记录移至归档。
memory-lean --version打印版本号。

使用 npx 时,在前面加上 npx -y:npx -y memory-lean --ui。

教会你的 Agent 使用它

只有 Agent 会在开始工作前读取记忆服务器,并在发生变化时写入信息,记忆服务器才能发挥作用。docs/AGENT-PROTOCOL.md 是一套可直接使用的指令:说明任务开始时要查找什么、要记录什么、如何命名,以及哪些内容绝不能存储。Claude Code 插件已包含这套指令。对于其他所有 Agent,只需运行一条命令即可安装:

npx -y memory-lean --protocol >> AGENTS.md     # into a rules file: always on
npx -y memory-lean --skill .agents/skills      # as an Agent Skill: loaded when relevant

根据你自己的工作调整其中的实体类型和名称。

从参考记忆服务器迁移

将 MEMORY_FILE_PATH 指向现有的 memory.jsonl,并替换命令即可。文件格式完全相同,因此你可以随时切换回去。超过 300 个字符的现有观察记录会原样保留;只有新写入的内容会经过检查。若要查看哪些内容超出限制,并选择性地修复:

npx -y memory-lean --lint      # report only
npx -y memory-lean --compact   # back up, then move overflow to archive/

设置

所有设置均为可选项,请在服务端将其设为环境变量:

变量默认值含义
MEMORY_FILE_PATH~/.claude/memory-graph/memory.jsonl图的存储位置
MEMORY_OBS_MAX_CHARS300可接受的观察记录的最长字符数
MEMORY_OBS_MAX15每个实体的观察记录数量上限;超出时将最早的带日期记录归档
MEMORY_SEARCH_LIMIT10默认搜索结果数量
MEMORY_BACKUPS_KEPT7保留的每日备份数量

常见问题

我的记忆会被发送到别处吗?


不会。服务只会读写本地文件,不会发起网络请求。Web UI 仅监听 127.0.0.1。请勿将图谱提交到 git,也不要在其中存储密码、密钥或令牌:只记录机密信息存放的位置,不要记录其值。

多个 Agent 或会话可以共用一个图谱吗?


可以。每次写入都会获取锁、重新读取文件并以原子方式替换,因此并行会话(以及 Web UI)不会相互覆盖。

为什么使用纯文本搜索,而不是嵌入向量?


它无需模型、索引或依赖项,而且 Agent 的查询大多是它已经知道的名称。好的实体名称比巧妙的查询更重要。

旧事实会如何处理?


当某个实体的事实超过 15 条时,最早的有日期事实会移至图谱旁的 archive/<entity>.md。archived_observations 或 Web UI 中的 Archive 部分会列出这些事实,并可将其恢复。

路线图

  • 提供服务、技能和 /memory-ui 的 Claude Code 插件
  • 适用于 12 个 Agent 的设置指南
  • rename_entity 和归档恢复
  • 用于探索和编辑图谱的 Web UI
  • 已列入官方 MCP 注册表
  • 列入 Claude Code 插件目录
  • 搜索所有实体的归档事实
  • 在 Web UI 中撤销操作

贡献

欢迎提出想法、报告错误和提交拉取请求。服务只有一个文件且没有依赖项,Web UI 只有一个 HTML 文件,运行 npm test 只需几秒,因此很快就能完成首次修改。CONTRIBUTING.md 介绍了项目布局、基本规则和适合新手的贡献任务。

如果 memory-lean 帮你节省了令牌,点个 ⭐ 就能帮助其他人发现它。

支持

memory-lean 免费使用,并采用 MIT 许可证。如果它对你有帮助,可以支持这项工作:

请我喝杯咖啡 Ko-fi

作者

由 Silifton 的 Zaman Sheikh 创建并维护。

GitHub X LinkedIn 网站

基于 Model Context Protocol 参考记忆服务 的文件格式和工具名称构建。

许可证

MIT © 2026 Zaman Sheikh。可免费使用、修改和分享,包括用于商业用途;请保留版权声明。

评论

支持 Markdown

第一次接触 MCP?

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

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