前言¶
在 DeepSeek Harness(DSH)里给智能体接「记忆」,常见做法是换一套存储格式,或再挂向量服务、Embedding API。若你已经在磁盘上维护 MEMORY.md、按日期的笔记、wiki 和归档会话,更希望文件仍是权威来源、能用 git diff 编辑,同时又能在 Harness 里全文搜到——需要的是索引层,而不是迁移整棵树。
下面介绍社区插件 dsh-memory-index(维护者 yinguobing,分类:记忆)。它把现有 Markdown 记忆目录编入本地 SQLite FTS5,向 DSH 提供 memory_search、memory_read、memory_write,以及可选的启动摘要;不用 Embedding、不用 API Key、不跑旁路进程,也不搬文件。
这是什么¶
dsh-memory-index 的定位是:为 DeepSeek Harness 提供全文记忆索引。默认索引 MEMORY.md、memory/、wiki/、archive/sessions/ 等路径;索引库落在 workspace 下的 SQLite 文件(默认 .memory/index.sqlite)。当前为词法检索优先版本(README 说明语义检索计划作为可选层,不替代文件树)。包版本 0.1.0,许可证 MIT,依赖 Node ^22.19.0 || >=24.0.0、DSH >=0.2.1-rc.2。
插件目录页:https://www.skillhub.cn/plugins/yinguobing/dsh-memory-index
源码与文档:https://github.com/yinguobing/dsh-memory-index
核心功能¶
索引与检索¶
- 将已存在的 Markdown 记忆树编入单个本地 SQLite FTS5 数据库;支持 FTS5
trigram(若 SQLite 构建支持),否则回退unicode61,并对 CJK 做 3-gram 扩展,便于中文子串检索。 memory_search:在配置的 roots 内搜索,返回path:line与片段;可选scope限定来源(core / daily / wiki / session)。- 排序:FTS5
bm25,同分按sourcePriority;短词等场景有 lexicalLIKE回退。
读写工具¶
memory_read:读取 workspace 内配置记忆根下的文件。memory_write:向今日笔记追加、向核心文件追加,或在 write root 下创建/替换文件;需在配置中设writeMode: readwrite。默认writeMode: readonly,且核心MEMORY.md为仅追加。
命令与可选启动行为¶
| 命令 | 作用 |
|---|---|
/memory-status |
查看索引状态 |
/memory-rebuild |
重建索引;加 fts 可从零重建全文表 |
autoRecall:默认off;设为startup时,可将digest配置的摘录注入 workspace 智能体上下文。buildOnStart:默认false;为true时在插件加载后后台建索引。
安全与边界(README 摘要)¶
路径均解析在 workspace 内,拒绝 .. 与越界绝对路径;读取拒绝已有 symlink 组件;不写网络、无遥测;.env* 与含 credentials 的路径不纳入索引。
安装与启用¶
该包尚未发布到 npm。README 给出两种方式:本地 checkout,或 GitHub Release v0.1.0 附带的预构建 tarball。
本地 checkout:
dsh plugin --profile web add "link:/absolute/path/to/dsh-memory-index"
dsh --profile web
预打包 tarball:
dsh plugin --profile web add /absolute/path/to/dsh-memory-index-0.1.0.tgz
dsh --profile web
将来发布后,命令将变为:
dsh plugin --profile web add dsh-memory-index
安装后,在 profile 的 cordis.patch.yml 里把 workspace 设为包含记忆树的目录(bundle 默认用 Harness 进程目录,避免猜测个人路径)。示例:
- id: memory-index
config:
workspace: /home/you/notes
writeMode: readonly
autoRecall: off
buildOnStart: false
在新会话中先执行一次 /memory-rebuild,再执行 /memory-status 确认索引就绪。
完整配置字段见仓库 README;常用项包括 roots、writeRoots、indexDb、digest、timeZone(默认示例为 Asia/Shanghai)、maxResults(默认 8)等。roots 与 writeRoots 可独立配置:例如索引 wiki/ 与会话归档,但只允许写入 memory/。
典型用法¶
- 配置
workspace指向已有记忆目录(含MEMORY.md等)。 - 启动 DSH 后运行
/memory-rebuild建立 FTS 索引。 - 在对话中让智能体调用
memory_search查历史笔记、wiki 或archive/sessions里的会话 Markdown。 - 命中后用
memory_read拉取完整上下文(检索结果的行号为块起始行,近似值)。 - 若启用
readwrite,可用memory_write追加今日笔记或核心记忆;该写入会即时更新索引。外部手改文件需再次/memory-rebuild(或依赖buildOnStart),插件无文件 watcher。
需要启动时带一点上下文时,配置 digest 并将 autoRecall 设为 startup(注意 maxDigestChars 总字符预算)。
适用场景与注意¶
适合谁
- 已用 Markdown 文件树做长期记忆,希望 DSH 内可搜、可读、可选写,且不想换存储格式或接向量服务。
- 需要把归档会话与日记、wiki 放在同一索引里做词法检索的场景。
不适合替代
- 原子事实库、独立向量记忆服务,或带审批流的
AGENTS.md编辑器;本插件解决的是「让已有记忆树在 DSH 里可搜」这一较窄问题。
使用注意
- 检索是词法级,不是语义相似度;Embedding 混合检索在 roadmap 中,尚未作为当前版本能力写入。
- 插件以当前 DSH 进程权限读写 workspace 与 SQLite;安装前应阅读源码与 MIT 许可证,确认
workspace路径不含不应被索引或写入的内容。 - Linux 为 README 写明已测试环境;Windows/macOS 路径逻辑已实现但 CI 未覆盖。多进程并发写 SQLite 未做协调。
- DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-memory-index 在不动 Markdown 文件权威性的前提下,用本地 FTS5 把记忆树接进 Harness 工具面,默认只读、无网络,适合已有笔记体系的用户先做全文检索。进一步了解可访问插件目录页与 GitHub 仓库 README(含 README.zh.md)。