前言¶
在 DeepSeek Harness(DSH)里做智能体或长期结对编程时,会话一关,模型侧往往只剩当前窗口里的上下文。内置笔记、ALTM 等能力可以作参考,但若同一条事实写进多个库,容易出现「双重记账」,召回时也难以统一核对来源。社区维护者 Kaede-Ayaki 发布的 dsh-holo-memory(分类:记忆)把长期记忆收成 L1 对话摘要、L2 原子事实、L3 全息胶囊三层,本地 JSON 存储,每轮按问题混合召回并注入 holo-memory 块;可选 OpenAI 兼容向量端点,不开启时仅靠 BM25 与中文 n-gram,零网络依赖。插件当前版本 0.4.0(MIT),在 SkillHub 目录页 与 GitHub 仓库 可查看说明与源码。
这是什么¶
dsh-holo-memory 是面向 DeepSeek Harness 的三层全息记忆插件:回合结束后蒸馏写入 L1/L2/L3,新用户消息到来前按查询做 RRF 融合召回,把受字符预算约束的记忆块自动注入该回合。维护者为 Kaede-Ayaki;仓库描述为「L1 dialogue summaries, L2 atomic facts, L3 holographic capsules, with RRF recall, source pointers, revision history and a memory doctor」。数据落在 $DSH_HOME/holo-memory/,无服务端、无账号、无遥测。文档明确:本插件是自动 L1/L2/L3 的唯一权威源;ALTM、内置记忆、笔记等只作只读参考,不要把同一条事实同时写进两个库。
三层记忆与召回方式¶
下面按层说明插件在存什么、召什么。
L1 / L2 / L3¶
- L1 对话层:每轮对话结束,蒸馏成一条紧凑摘要(用户要什么、做了什么、结果)。
- L2 事实层:从对话抽出原子事实(偏好、决策、约定、关键实体、待办、纠正),带 scope、tags、confidence 与出处。
- L3 全息记忆层:多轮对话压缩成「部分包含整体」的胶囊(用户画像、项目状态、长期线索、未闭环事项);一条 L3 可让新会话回忆起整段关系的轮廓。
持久化文件为普通 JSON,可读、可 diff:
$DSH_HOME/holo-memory/
├── l1.json
├── l2.json
└── l3.json
混合检索与注入¶
每个新用户回合,插件从 L1/L2/L3 混合召回最相关记忆,压缩进 holo-memory 上下文块并注入。检索有三条独立排名通道,经 RRF 融合:
- BM25 + 中文 bigram(零依赖);
- 字符 2/3-gram(中文子串、错字、中英混合补位);
- 可选向量:任意 OpenAI 兼容
/embeddings端点(OpenAI、Ollama、火山方舟等),开启后按校准余弦排名参与 RRF。
RRF 之后还会:用 Active Window 主动补 1–2 条高重要度 L2/L3(预算单独保留);按 IMMEDIATE / WORKING / BACKGROUND 分配字符预算;注入行带 (id:xxxxxxxx) 与证据等级(·源 逐字片段、·指针 session/turn、·手写 手动写入);回答里引用过的 id 下一轮回写 citedCount 获轻微加权。可用 memory_open(id) 回取原文片段、来源指针与修订历史。
核心功能(已文档化能力)¶
全息记忆控制台¶
安装或重载后,侧边栏会出现 全息记忆 一级入口(在设置上方,与「插件」并列)。页面提供:各层数量与占用、向量模型配置(检测可用性只探测 /embeddings,不保存 Key)、存储路径、蒸馏开关、证据链覆盖率、记忆体检、搜索与按层筛选、单条删除、最近自动召回 审计列表。控制台数据来自 $DSH_HOME/holo-memory/*.json;修改类请求需 x-holo-memory: 1 请求头。API Key 不通过 GET 返回,也不写入 embedding.json。
工作步骤中的召回可视化¶
Web 客户端将 kind: "holo-memory" 的上下文渲染为工作步骤里的一行:折叠显示 [长期记忆自动召回 | holo-memory] 与层条数、字符数;展开显示触发问题、召回正文与命中 id。若侧边栏暂无入口或看不到召回行,先刷新页面;仍无则重启 dsh。
模型工具¶
| 工具 | 用途 |
|---|---|
memory_recall(query, layers?, limit?) |
混合检索三层记忆 |
memory_open(id, maxChars?, history?) |
回取逐字片段、指针、修订历史 |
memory_note(text, layer?, scope?, title?, tags?, importance?) |
写入 L2 或 L3 |
memory_list(layer?, limit?) |
按时间列出某层 |
memory_forget(id) |
按 id 或 8 位后缀删除 |
memory_injections(limit?) |
最近自动召回审计 |
memory_stats() |
数量、覆盖、路径、阈值等 |
memory_doctor(deep?) |
存储、来源、向量、重复、阈值等体检 |
审计写入 $DSH_HOME/holo-memory/injections.jsonl(最近 1000 条 / 1 MB),用于证明「别的会话是否收到注入」,而非记忆库存清单。
安装与启用¶
本仓库是插件源码,需先编译。运行环境要求 Node.js >= 22.19(见 package.json)。
npm install
npm run build # tsc -> lib/
桌面版(Electron)¶
桌面 profile 由应用独占管理,命令行 dsh plugin --profile desktop add … 会被拒绝。请走应用内入口:
- 打开 设置 → 插件 → 添加插件;
- 「包名或地址」填本地目录,例如
D:\path\to\dsh-holo-memory; - 安装完成后重启 dsh(工具只在启动时注册);新开会话说「记住:这个项目用 pnpm」验证。
非桌面 profile¶
dsh plugin --profile web add link:/absolute/path/to/dsh-holo-memory
卸载:设置 → 插件里卸载,或从 profile 的 package.json 的 dsh.profile.bundles 与 dependencies 删除 dsh-holo-memory,再 pnpm install 并重启。
典型用法¶
验证跨会话记忆¶
- 在某会话里让 agent 记住一条只有对话里才出现的事实;
- 新开一个会话,问只有记忆里才有答案的问题;
- 工作步骤里应出现
[长期记忆自动召回 | holo-memory],展开可见 query、正文与命中 id; - 打开 全息记忆 → 最近自动召回,应出现 session id 与当前会话不同 的记录;或调用
memory_injections查看同样审计。
可选向量检索¶
默认不开启向量,插件完全靠词法通道工作。需要语义召回时,可在控制台填写供应商、接口、模型与 Key,「检测可用性」通过后「保存配置」;也可在 profile patch 中覆盖,例如:
- id: holo-memory
config:
injectMaxChars: 1200
extractMaxTokens: 1400
embeddingEnabled: true
embeddingBaseUrl: https://api.siliconflow.cn/v1
embeddingModel: Qwen/Qwen3-Embedding-8B
embeddingApiKeyFile: D:/path/to/DSH_HOME/holo-memory/embedding.key
embeddingBaseline: 0.22
API Key 推荐单独文件(首行,建议权限 0600),或环境变量 DSH_HOLO_EMBEDDING_API_KEY;插件优先读环境变量,再读 embeddingApiKeyFile。
常用配置默认值(节选)¶
| 字段 | 默认 | 说明 |
|---|---|---|
storageDir |
$DSH_HOME/holo-memory |
记忆根目录 |
injectEnabled |
true |
每轮是否自动召回注入 |
injectMaxChars |
1400 |
注入块字符预算 |
injectMinScore |
0.12 |
召回阈值 |
injectL1/L2/L3 |
2/5/3 | 每层最多注入条数 |
extractEnabled |
true |
回合结束是否蒸馏 |
embeddingEnabled |
false |
是否启用向量检索 |
完整字段与「每个阈值防哪类失败」见仓库 README;改默认值前建议对照 memory_doctor / memory_stats 与文档中的阈值说明。
适用场景与注意¶
适合谁:需要在 DSH 里长期结对、跨会话保持项目约定与用户偏好,且希望记忆本地可控、可审计、可手工删改的记录者。
权限与安全:插件以当前 dsh 进程权限读写 $DSH_HOME;安装前应自行审阅 源码与 MIT 许可证,勿将 embedding Key 提交到版本库。
生态说明:DSH 理念是「一切皆插件」;SkillHub 目录 为社区站点,与 DeepSeek / 幻方无官方从属关系。
证据与权威源:无 ·源 标记的摘要不应在未 memory_open 校验时当原文;指针不可用时会报 source unavailable,不猜测假位置。内容更新会递增 revision 并保留 history(最多 20 条),不静默覆盖。
结尾¶
dsh-holo-memory 把跨会话记忆收成 L1/L2/L3 三层、RRF 混合召回、来源与修订可核对,并在 DSH 内提供控制台与注入审计,适合作为 DSH 里自动长期记忆的单一写入源。进一步了解:
- 目录页:https://www.skillhub.cn/plugins/Kaede-Ayaki/dsh-holo-memory
- GitHub:https://github.com/Kaede-Ayaki/dsh-holo-memory