2.2 memory:跨会话知识图谱
它是什么
官方描述:knowledge-graph persistent memory across sessions——跨会话的知识图谱持久记忆。npm 包 @modelcontextprotocol/server-memory,版本 2.0.0,可执行名 mcp-server-memory。
这个服务器在 DeepSeek Harness 官方文档里被实测过:已测试版本 @modelcontextprotocol/server-memory@2026.7.4,stdio 传输,前置条件是 npm install --global @modelcontextprotocol/server-memory@2026.7.4。
它怎么工作
它在本地存一份 JSONL 知识图谱,公开六类工具:
| 工具 | 作用 |
|---|---|
| 实体(Entity) | 创建/维护一个“事物”节点,如一个人、一个项目 |
| 关系(Relation) | 在两个实体间建立关联,如“属于”“负责” |
| 观察(Observation) | 给实体附加一条事实,如“邮箱是 x” |
| 读取(Read) | 把整个图谱读出来 |
| 搜索(Search) | 按关键词找实体 |
| 打开(Open) | 展开某个实体的全部观察 |
关键特性:不需要模型或 embedding 服务。 这对本地使用者极其友好——不依赖任何外部 API,断网也能用。
官方示例把数据存在 $HOME/.dsh-mcp-reference-memory.jsonl,而不是已安装的 npm 包目录里。要换位置,启动 DSH 前设 MEMORY_FILE_PATH。
一个必须知道的限制
官方的原话很克制,但信息量很大:
搜索只对实体名称、类型和观察进行不区分大小写的子字符串匹配,不是语义检索。该服务器不提供 embedding、自动摘要、冲突消解或遗忘策略。
翻译成使用建议:
| 它能做 | 它不能做 |
|---|---|
| 精确记住你告诉它的事实 | 理解“我喜欢喝咖啡”和“来杯美式”是同一件事 |
| 跨会话召回 | 自动清理过期记忆 |
| 结构化关联实体 | 解决两条矛盾记忆该信哪条 |
所以:用它记确定的事实,不要指望它做语义联想。 如果你要的是“按意思找回忆”,该看后面的 5.1 Mem0 或 5.3 Memorix 与 Engram。
官方配置
- insert:
- id: memory-mcp-reference
name: '@deepseek-ai/dsh-mcp-client'
config:
serverName: reference_memory
transport: stdio
command: mcp-server-memory
cwd: !!js process.cwd()
env:
MEMORY_FILE_PATH: !!js >-
process.env.MEMORY_FILE_PATH?.trim() || process.getBuiltinModule('node:path').join(process.getBuiltinModule('node:os').homedir(), '.dsh-mcp-reference-memory.jsonl')
注意 serverName 这里写的是 reference_memory,和你给 id 取的 memory-mcp-reference 是两码事:前者是工具前缀 mcp__reference_memory__...,后者只是这条 insert 在本机 patch 里的唯一键。
三个记忆方案怎么选
官方文档实测过三个记忆服务器,横向对比:
| 系统 | 已测试版本 | 前置条件 | 特点 |
|---|---|---|---|
| MCP Reference Memory | @modelcontextprotocol/server-memory@2026.7.4 |
npm 全局装 | 本地知识图谱,无需模型与 embedding,子串匹配 |
| Memorix | memorix@1.3.0 |
Node 22.18+,npm 全局装 | 无需 LLM 或 embedding 即可本地启发式运行 |
| Engram | v1.20.0 |
Go 1.25.10+,go install | 负责存储与项目选择,默认 ~/.engram |
建议:先用 Reference Memory,因为它零依赖、文档最全、和你可能已经在用的其他 MCP 客户端配置一致。需要更强能力时再看 Memorix(本地启发式)或 Engram(Go 实现、项目维度隔离)。
让它真正被用起来的技巧
如果工具描述不足以可靠触发记忆使用,官方建议加一句与提供方无关的模型指令:
用户要求记住某事时调用记忆写入工具;历史信息可能相关时,检索记忆并使用相关结果。
这是附加指导,不替换系统提示词里的 persona。没有这句,记忆工具很容易被闲置——模型不会主动“想起”去查它。
验证三步法
官方流程(详见 1.4 节):
- 会话 A 写入唯一值,确认写入工具被调用且返回成功;
- 同一 Host 新建会话 B,提问召回,确认返回该值;
- 在会话 B 继续提问,确认回答用了召回的值。
必须新建会话,但不用重启 Host。
小结
- memory 是本地知识图谱记忆,无需模型与 embedding。
- 限制明确:子串匹配而非语义检索,无自动摘要、冲突消解、遗忘策略。
- 三个官方实测方案里,先用 Reference Memory 最省事。
- 配一句模型指令,否则工具容易被闲置。
延伸阅读
- 官方接入说明:连接第三方记忆 MCP 服务
- 验证流程:1.4 持久化、密钥与验证排错
- 进阶记忆:5.1 Mem0、5.3 Memorix 与 Engram
- 相关书籍:DeepSeek Harness 完全使用指南
