dsh-holo-memory:为 DeepSeek Harness 补上跨会话三层全息记忆

前言

在 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

  1. L1 对话层:每轮对话结束,蒸馏成一条紧凑摘要(用户要什么、做了什么、结果)。
  2. L2 事实层:从对话抽出原子事实(偏好、决策、约定、关键实体、待办、纠正),带 scope、tags、confidence 与出处。
  3. L3 全息记忆层:多轮对话压缩成「部分包含整体」的胶囊(用户画像、项目状态、长期线索、未闭环事项);一条 L3 可让新会话回忆起整段关系的轮廓。

持久化文件为普通 JSON,可读、可 diff:

$DSH_HOME/holo-memory/
├── l1.json
├── l2.json
└── l3.json

混合检索与注入

每个新用户回合,插件从 L1/L2/L3 混合召回最相关记忆,压缩进 holo-memory 上下文块并注入。检索有三条独立排名通道,经 RRF 融合:

  1. BM25 + 中文 bigram(零依赖);
  2. 字符 2/3-gram(中文子串、错字、中英混合补位);
  3. 可选向量:任意 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 … 会被拒绝。请走应用内入口:

  1. 打开 设置 → 插件 → 添加插件;
  2. 「包名或地址」填本地目录,例如 D:\path\to\dsh-holo-memory;
  3. 安装完成后重启 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 并重启。

典型用法

验证跨会话记忆

  1. 在某会话里让 agent 记住一条只有对话里才出现的事实;
  2. 新开一个会话,问只有记忆里才有答案的问题;
  3. 工作步骤里应出现 [长期记忆自动召回 | holo-memory],展开可见 query、正文与命中 id;
  4. 打开 全息记忆 → 最近自动召回,应出现 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye