前言¶
在 DeepSeek Harness(DSH)里给智能体接长期记忆,常见做法是依赖记忆插件把对话沉淀成结构化条目,再用关键词去搜。条目多了以后,「记过」和「想得起来」往往不是一回事:你换种说法提问,BM25 可能对不上字;摘要折叠之后,当初的原话也翻不回来。
dsh-memory-semantic 是社区维护者 Jackbessaliuz 发布的 DSH「记忆」类插件(GitHub 约 3 stars)。它不改写上游记忆库,只在本机为 meow-memory 已有的数据建索引,补上语义检索、记忆图谱和对话轮次原文召回。下面介绍它的定位、能力与安装方式。
这是什么¶
一句话:meow-memory 负责「记住」,dsh-memory-semantic 负责「想起来」。
| 角色 | 插件 | 职责 |
|---|---|---|
| 存 | meow-memory | 写入、分层、整理(dream);知识层条目如 soul / user / rules / fact / lesson / topic / project |
| 找与递 | dsh-memory-semantic | 只读同一套记忆库;本地向量索引 + 自有轮次库;检索与自动注入 |
本插件不含任何记忆写入能力,始终以只读方式打开 meow-memory 的 <工作区>/.dsh-meow/memory.db:不建表、不写行、不改 schema。自有数据写在 <工作区>/.dsh-semantic/(含轮次库 turns.db 等)。卸载本插件后,meow-memory 的数据与行为不受影响。
图谱相关的轮次记忆数据模型、召回算法与 surface-takeover range 语义移植自 graph-memory(MIT),能力叠在同一份 meow-memory 之上,而不是并行维护第二套记忆库。
当前 npm 包版本为 1.1.0(MIT 许可证),要求 Node >= 20.11,peer 依赖 @deepseek-ai/cordis ^4.0.1。
解决什么问题¶
在同一份记忆库上,针对关键词检索的三个典型短板做增强,且不改变 meow-memory 本身:
- 换说法就搜不到——例如记忆里是「thresholdRatio 调低」,你问「上下文太满」,字面不匹配时命中为零。
- 不知道哪条更重要——条目多了,枢纽与细枝末节靠人工翻不动。
- 摘要之后细节丢失——长对话被压缩后,需要逐字原话时无法回溯。
README 中在同一套 1283 轮对话库与 64 条人工改写查询上的对比(换词、同义、刻意避开原文独特词):仅 BM25 的 Recall@1 为 46.9%,仅向量语义为 32.8%,BM25 与向量 RRF 融合为 54.7%;「彻底找不到」从 23/64 降到 20/64。语义单路并不总是强于关键词,融合的意义在于少漏、互补。
核心功能¶
三个工具¶
| 工具 | 作用 |
|---|---|
memory_semantic |
语义检索记忆:本地向量 + BM25,RRF 融合后返回最相关条目 |
memory_graph |
记忆图谱:全局重要性(加权 PageRank)、知识域(社区)、相似邻居 |
recall_turns |
按问题找回更早对话中的逐字问答(轮次原文层) |
首次调用 memory_semantic 时会对现有记忆全量嵌入建向量索引(几百条规模 README 称通常几十秒内完成),之后增量补嵌。
自动接线(可配置关闭)¶
- 跨会话接力:新会话开场说「继续」时,接上上一会话尾部上下文。
- 动作触发注入:改配置、动数据等动作命中时,检索相关红线与教训并附到下一次请求。
- 召回注入:每轮按当前问题从轮次原文中找片段,插在当前提问之前(标注为历史参考);同一条记忆在同一会话内注入去重。
- 首轮长期记忆注入:会话开头递 soul / user / 全局规则等(与 meow-memory 协同)。
轮次层(书架 B):每聊完一轮,后台登记、模型抽取摘要与三元组、写入 turns.db 并算向量;队列与水位落库,宿主重启后可从会话日志续抽。抽取默认使用温和档(low),与你会话档位独立。
设置页¶
安装后在 DSH 设置中会出现「语义记忆」页:向量引擎是否可用、索引条数、轮次库与图谱规模、检索与图谱参数、宿主压缩档位建议等。Ollama 自动拉起可在该页切换,即时写入 ~/.dsh/dsh-memory-semantic.runtime.json,不修改宿主配置。
Ollama 与降级¶
- 已安装并可用 Ollama:向量 + BM25 融合,语义泛化更好(关键词含 bge-m3、ollama 等)。
- 未安装或未启动:自动降级为纯 BM25,不报错阻塞;
autoStart: true时后台尝试拉起 Ollama,不阻塞当前对话。
不想自动抽取时可设 turns.live.enabled: false;不想自动注入时可设 turns.recallShadow.inject: false(工具与已入库轮次仍可用)。
安装与启用¶
DSH 生态里插件通过 profile 管理;社区目录页见 SkillHub 插件条目(独立站点,与 DeepSeek / 幻方无官方从属关系)。
先安装并启用 meow-memory,再装本插件;只装其一都无法形成完整「存 + 找」链路。
命令行(CLI / 网页端 profile)安装,命令以 README 为准:
dsh plugin --profile <profile-name> add github:Jackbessaliuz/dsh-memory-semantic
dsh plugin 会把参数透传给 profile 内的 pnpm,add / remove / update 同理。安装前请自行查看 GitHub 仓库 源码与 MIT 许可证;插件以当前 DSH 进程权限运行,与本机文件、可选 Ollama 及抽取用模型调用相关,请按自己的安全策略评估。
典型用法¶
- 确认工作区里 meow-memory 已有记忆数据,且本插件已完成安装。
- 在对话中让模型按需调用工具,例如用自然语言描述意图后使用
memory_semantic做换说法检索,用memory_graph看关联与重点,用recall_turns翻历史原话。 - 打开 DSH「语义记忆」设置页,确认向量引擎与索引条数;若无 Ollama,接受 BM25 降级或按需开启自动拉起。
- 若需控制 token:关闭
turns.live.enabled或turns.recallShadow.inject;README 给出 150 轮样本量级下抽取与召回注入的 token 量级参考。
「装一个能用,装两个才好用」:只有 meow-memory 时记忆在,但换说法不易命中;只有本插件时记忆库为空,检索无源。
适用场景与注意¶
适合:已在使用 meow-memory、希望在本机、少依赖外部 embedding API 的前提下,增强语义找回、图谱视角和长对话原文回溯的 DSH 用户。
注意:
- 必须与 meow-memory 组合;本插件是读层,不是完整记忆系统的替代品。
- 向量索引应建在用户原文语义上;README 强调建在抽取摘要上会导致语义 Recall 大幅下降(同库实测 6.3% vs 原文 32.8%)。
- 删除
<工作区>/.dsh-semantic/可让本插件索引与轮次数据从零开始,不影响 meow-memory。 - 与
dsh-engram、dsh-memoria等完整记忆方案不冲突;本项目专注在既有「存」之上的检索与召回。
结尾¶
dsh-memory-semantic 在不动 meow-memory 写入面的前提下,用本地融合检索、图谱和轮次库,把「记过的」往「想得起来的」推了一步。目录与文档: