Tyan66666/billion-context-dsh
Tyan66666/billion-context-dsh模型驱动的上下文压缩(Active Context Pruning):由模型决定何时压缩、压缩什么。
会做梦的记忆 — DeepSeek Harness 跨会话记忆插件:跨会话记住你与项目、深夜 autoDream 自动巩固记忆、冲突记忆先冻结待你裁决、全程可回放审计。默认离线:SQLite 配人工可编辑的 Markdown 镜像,提供本地语义检索、实体图谱、交互式记忆库面板及外部 API 与 CLI。
dsh-mneme
dsh-mneme 是 DeepSeek Harness (DSH) 的跨会话记忆插件。它不只「存得下」,更「管得好」:后台自动去重合并、矛盾先冻结等你裁决、全程可回放审计、记忆只落在本机,还支持导出成人可读的 Markdown。
Mneme(Μνήμη)源自希腊记忆女神 Mnemosyne。她掌管记忆与梦境——正如 autoDream 在后台默默巩固你的记忆库。日期 · 版本 · 头条 2026-10-21 · v0.9.4 · 三条链各自补上「最后一环」 — 这一版的三件事同一种形状:东西早就造好了,只差没人能叫它。① agent 主动整理(#231):引擎在 v0.8 就落在 src/organize.js(先 dryRun 出比对报告 → agent 判断 → apply 落库,筛除只归档不删,全程复用 dream_runs 回执),可它没有任何调用入口——工具表里没有它、两张 API 脸 0 命中、全仓 .organize( 零调用点,只有测试能调到。现在它有工具了:memory_organize,organizeEnabled 默认关(关 = 工具根本不注册,模型看不到就不会调)。② 画像能被反向提取了(#497):面板「用户画像」加一个按钮,读活跃记忆、花一次宿主模型调用,产一段「助手眼中的用户」草稿——只出草稿:采用是你在面板上再点一次,你手写的原文不会被模型改写;空库和模型不配合都直接报错,绝不回一张空草稿冒充「这次没提炼出东西」(profileExtractEnabled 默认关)。③ 人格不再无条件进别人的会话:default 卡以前会落给所有没建卡的身份,于是宿主里自带身份的外部 bot 每一帧都收到两句「你是谁」撞在一起,而界面上「关掉这张卡」实际不生效——新增 personaStrictAddressing(默认关,历史行为逐字节不变)把「身份没建卡」与「卡被显式关掉」都收回到不注入。同版补上蒸馏的转录围栏 + 解析失败护栏(#494:一条会话被同一个窗口卡死、重试 20 次越试越贵的根因;失败行现在恒带原始输出形状,事后能回答「模型到底吐了什么」),并把面板里那段自称「注入生效文本」的只读区改成由后端渲染——它以前既没有人格三行也没有表头和前缀,标题却承诺了模型实际看到的东西。 2026-10-20 · v0.9.3 · M.O. 从「挖得出来」跑到「会被叫去挖」 — 沉淀链的算法自 v0.9.1 起就写完了(多帧 zstd → 重复序列 → 缺席对照 → draft 草稿),可它在运行时没有任何调用点:全仓引用只出现在测试里。机器挖得出来、却永远不会被叫去挖——缺的从来不是算法,是归属与触发。这一版把三处接上:按会话头里的 cwd 反查项目桶(桶名是路径的有损变形,规则不在本仓,查不到就整跑跳过,而不是降级成全局普查——后者会把 A 项目的动作算到 B 头上,且结果看起来完全正常);新增 nudgeForProject 把「归属 → 挖掘 → 落盘」收成一个入口;挂 turn/end 按项目跑,冷却 10 分钟、单次预算 4 秒、延到宏任务、一次一个项目、抛错只 warn。它只产提议,不产草稿(#489):升格仍然要人批,面板也多了「现在沉淀一次」,与自动跑同一条入口、区别只有不改仓库。同版修掉三处「坏了却不报」:作用域反查自 v0.8.0 起每次都抛错走降级、canonical 归一与成员校验静默失效(#487);/nudge 的写盘口只拦 PUT/POST,带 token 的 PATCH/DELETE 会静默写盘、归属解析不看预算、桶名边收边截把「没看全」报成「确实没有」;多帧 zstd 的反证断言绑了 Node 的整块解语义,24.22.0 起过期(#490)。 2026-10-19 · v0.9.2 · 让「看不见的失败」显形 — 这一版修的大多不是「缺功能」,是「坏了却不报」:功能开关一直是启动期生效,面板「已改」只说明值进了库,于是新增第三态「待重启」(#481);巩固的 dreamMaxTokens 默认值被原样当 max_tokens 发出去,撞上服务商上限后 180 次巩固 0 次成功,现在面板能改、超上限还会按服务商自己声明的上限自动降级(#478);自动蒸馏写入的行 100% 拿不到向量,注释承诺的「提交后补跑」从未存在(#477);CLI 把 -- 开头的值当成新旗标——这个缺陷只在 token 前两位恰好掷中 -(约 1/4096)时现形,潜伏了整整一个发布周期。另新增作用域级可逆闸门(#471,默认关):让一路记忆能被单独按下与松开,不改配置、不重启。
只记大改动,逐条细节见 CHANGELOG。
每次新开对话,AI 都像第一次认识你?
dsh-mneme 给 DeepSeek Harness 装上跨会话记忆。 你聊过的项目、提过的偏好、做过的决定,AI 都记得——即使关掉了窗口,下次打开还在。
场景 · 没装插件 · 装了插件 周一聊完项目需求,周三继续 · "能再描述一下你的项目吗?" · "你指的是上周提到的博客重构吗?当时你说想用 Astro。" 告诉 AI 你的编码习惯 · 每轮都要重复交代 · 一次设定,长期生效 整理大量资料后关窗口 · 资料丢了 · 自动归档,随时检索找回
但 dsh-mneme 的可信之处,恰恰在你看不见的后台。下面这些,才是它和「一个会存东西的插件」的本质区别。
scopeEnabled 开启后,每条记忆标注由哪个 agent、在哪个工作区写入;检索时本会话作用域优先(命中加权,他 scope 降权仍可见);strictScope 再进一步——显式声明收窄到他者作用域的记忆在检索/注入里完全不可见(载体自动标注只降权,不硬挡)。多 Agent、多项目互不串台。embedProvider 设为 local 后检索走本地 Embedding 与精排,不需要 API Key;没配嵌入时关键词 / BM25 检索照样能用。.md 文件,随时打开编辑;人工改动会被优先尊重,不会被机器覆盖。它和 Zep / Mem0 / Letta / Hindsight 比呢? 有一张逐项对照表——存储底座、检索、写入时抽取、离线巩固、冲突处理、遗忘、作用域、可审计性、多宿主、离线、许可证共 11 行,「—」不等于「差」:能力对比。
# 安装插件(最省事的一条:npm 包名)
dsh plugin --profile web add @modusensus/dsh-mneme
dsh webDSH 的 设置 → 插件 → Add plugin 与 dsh plugin add 认四种写法,填进去的是什么就装什么。本仓库是个单仓多包:仓库根那份 package.json 只是仓库壳(private、不带 dsh 字段),真正可安装的插件本体在 dsh-mneme/。所以走 Git 或 tarball 时必须指到子目录,否则装到的是壳本身。
为什么仓库根要放一份装不了的壳?因为有些单仓多包探测器(比如 dshfind 的插件探测)只认仓库根的清单——没有它就会把本仓库判成「不可安装的插件包」,而这句判词与实际上能不能装无关。根清单private+0.0.0+ 不带dsh字段,就是为了让这类工具能找到子包、同时绝不被当成插件本体安装或发布。
来源 · 填什么 · 备注 npm 包名 · @modusensus/dsh-mneme · 推荐;可带版本 @0.9.0 Git 仓库 · git+https://github.com/slow-stack/mneme.git#path:/dsh-mneme · #path: 不可省。省掉装到的是仓库根那份壳(0.0.0、无 dsh 字段),宿主不会把它当插件 tarball · C:\\path\\to\\modusensus-dsh-mneme-0.9.0.tgz · 在 dsh-mneme/ 里 npm pack 产出;pnpm pack 会因 bin 脚本 CRLF 失败 本地目录 · C:\\path\\to\\mneme\\dsh-mneme · 必须是绝对路径;相对路径会被宿主直接拒掉(a local path must be absolute)
# 从源码装(本地目录,改完代码重启即生效)
git clone https://github.com/slow-stack/mneme.git
dsh plugin --profile web add "$(pwd)/mneme/dsh-mneme"
# 或者直接从 Git 装(不落源码,适合只要个能跑的版本)
dsh plugin --profile web add 'git+https://github.com/slow-stack/mneme.git#path:/dsh-mneme'面板里那行「Install guide and examples」只演示了包名一种写法;上面四种都是实测通过的。Git 与 tarball 来源在安装时宿主会做一次仓库可达性检查(超时默认 5 秒)。
装完即可用。想在 5 分钟内看到它的价值:
需求 · 配置项 · 默认值 · 改法 完全离线运行 · embedProvider · openai · 改为 local 后台自动整理记忆 · autoDream · true · 改为 false 可关 自动提取结构化实体 · entityExtractionEnabled · false · 改为 true 多 Agent / 多项目记忆隔离 · scopeEnabled(需要更强隔离再加 strictScope,硬隔离只对显式声明生效) · false · 改为 true
以上均在 DSH 设置面板 → 记忆库设置 中修改。完整配置见 配置章节。
记忆库默认在 ~/.dsh/memory,天然在宿主 profile 作用域之外;但真实落点由 memoryDir 配置决定。若把它指进 profile 作用域(形如 …/profiles//…),宿主清理或迁移 profile 时记忆库会被连带带走(#218 末楼记录的实际事故)。插件启动时检测到这种落点会打一条告警——只提示、不搬库。安全做法:memoryDir 保持在 profile 之外(默认值即可);要迁移库 = 停止写入 → 复制整个目录 → 改配置指向新位置 → 重启。
写入 ──► 质量过滤(无用信息先拦下)
│
▼
SQLite + 本地 Markdown 镜像
│(空闲时)
├─ autoDream :去重 / 合并 / 归档 / 修正 / 冲突冻结
└─ Sleep Mode :分层压缩 + 模式发现 + 关系补全(可关)
│
▼
召回(混合检索 + 精排)──► 注入会话上下文记忆库记得住为什么这么做,但记不住这件事到底怎么跑。工作流住在哪,决定了它能不能被改:住在记忆库里是一行没有 diff 的文字,住在会话里是一次性的提示词,住在人脑里改不动也不留痕。
所以 v0.9 把它们搬进项目仓库——一条工作流一个文件:
<项目>/.mneme/pipelines/<id>.json ← 项目层(能提交、能 diff、能 PR、能被 CI 读)
<插件包>/pipelines/<id>.json ← 全局层(兜底,今天包里没有这个目录,这是有意的)分工是一句话:记忆是「为什么」,仓库是「怎么跑」,图是「看起来怎么样」。
/candidates//,只在本地。一天长十条死九条的东西进仓库就是垃圾。升格要同时满足「走过两次(至少一次成功)」且「写得出反事实」;够格之后系统只提议,提交与推送始终是人握着的那道门。refuted / trusted / stale / candidate)全部从运行记录推,不由作者写死;今天还没有运行记录落点,所以全体恒为 candidate——这就是那个 beta 标签必须摆在脸上的原因。默认关(actionPipelineEnabled)。设计取舍与踩过的坑见 docs/WORKFLOWS.md。
面板内置中英双语,跟随你的 DSH 界面语言显示。以下为中文截图,英文版请切至文末 English 段落。
记录、浏览与筛选你的记忆。
自动从记忆里提炼实体,构建带属性的关系图谱。
状态面板一眼看清向量索引、LLM 消耗与自动巩固记录。
检索、实体抽取与记忆巩固开关都在设置里一站式配置。
可选写保护 Token,以及本地化的反馈通道,让记忆库完全本地、可审计。
autoDream / autoSummarize 默认开)dreamProvider / dreamModel 与 summarizeProvider / summarizeModel —— 配了这两组就绕过宿主直连,换宿主不会生效),或直接关掉 autoDream / autoSummarize插件自带零依赖 stdio MCP server(独立 npm 包 `mneme-memory`,bin 名 mneme-mcp),任何 MCP 客户端都能挂载记忆六件套(memory_save / memory_search / memory_list / memory_get / memory_update / memory_delete)。
前置条件(一次性):
127.0.0.1:8790)各客户端挂载(`` 替换为上一步生成的值):
客户端 · 挂载方式 Claude Code · 项目根 .mcp.json:{"mcpServers": {"mneme-memory": {"command": "mneme-mcp", "env": {"MNEME_TOKEN": ""}}}} Cursor · 设置 → MCP → Add Server,command 填 mneme-mcp,env 加 MNEME_TOKEN Codex · ~/.codex/config.toml:[mcp_servers.mneme-memory] 段,command = "mneme-mcp",env = { MNEME_TOKEN = "" } Hermes · ~/.hermes/config.yaml 的 mcp_servers: 段:mneme-memory: {command: "mneme-mcp", env: {MNEME_TOKEN: ""}},重启生效 OpenCode · opencode.json:{"mcp": {"mneme-memory": {"type": "local", "command": ["mneme-mcp"], "environment": {"MNEME_TOKEN": ""}}}} OpenClaw · openclaw mcp add mneme-memory --command mneme-mcp --env MNEME_TOKEN=,或 Control UI → Settings → MCP
旧挂载兼容:已部署的dsh-mneme-mcp+DSH_MNEME_TOKEN写法继续有效(bin 与 env 变量均保留,无需迁移)。未全局安装 npm 包时,把command换成npx并追加参数-p mneme-memory mneme-mcp(Claude Code/OpenCode 写进 args 数组,Codex 写args = ["-p", "mneme-memory", "mneme-mcp"])。配置细节与安全注意事项见完整文档。
dsh-mneme-serve 把记忆库跑成常驻数据面——DSH 关着,第三方集成(网页端桥接、脚本、自有面板)照样读写同一份记忆:token 与 DSH 面板/CLI 共用,路由与「外部访问 API」同源,端口被占直接报错(与 DSH 外部访问二选一)。第一期无 LLM(巩固/蒸馏仍属 DSH 宿主);检索默认 local 嵌入(首次启动自动取件模型,--embed off 可关)。
npm i -g @modusensus/dsh-mneme
dsh-mneme-serve # 默认 ~/.dsh/memory + 127.0.0.1:8790社区项目把 mneme 接入更多平台——它们不是本仓库的一部分,兼容性由各自维护者跟进:
项目 · 平台 · 说明 Mneme-Bridge · DeepSeek 网页端 · 浏览器扩展 + 本地服务:网页端会话蒸馏进 mneme 记忆库、DSH 侧记忆按话题回注,两侧共享同一份记忆。embedded(挂载 lib)与 remote(standalone API,不开 DSH 时配合上面的 daemon)双模式
想被收录?在 Discussions 开帖介绍你的项目,或直接提 PR 补充本表。
文档 · 路径 插件完整文档(功能 / 安装 / 配置 / 架构) · dsh-mneme/README.md stdio MCP server——Claude Code / Cursor 等任意 MCP 客户端接入记忆六件套 · dsh-mneme/README.md · MCP Server 独立服务 daemon(不开 DSH 常驻数据面) · dsh-mneme/docs/DAEMON.md 配置说明(全键参考) · dsh-mneme/docs/CONFIGURATION.md 蒸馏原文留存与记忆级溯源(#399) · dsh-mneme/docs/DISTILL.md 实体结构化设计 · dsh-mneme/docs/ENTITIES.md 工作流(M.O.):本体住仓库、证据住记忆库 · dsh-mneme/docs/WORKFLOWS.md 语义架构 · dsh-mneme/docs/SEMANTIC.md 本地模型部署指南 · dsh-mneme/docs/LOCAL_MODEL.md 与 Zep / Mem0 / Letta / Hindsight 的能力对比 · docs/COMPARISON.md 版本历史 · dsh-mneme/CHANGELOG.md 安全策略 · SECURITY.md
🧬 记忆基因 → 🛡️ 审计加固 → 💤 睡眠维护 → 🕸️ 召回融合与图谱 → ✨ 面板增强 → 🌡️ 自进化记忆 → 🔐 作用域隔离 → 🌐 生态(MCP / daemon)→ 🧭 M.O.(项目级工作流)版本 · 主题 · 状态 v0.3 · 记忆基因:实体 / 属性(带时间轴)/ 关系 · ✅ v0.4 · Sleep Mode:空闲四阶段深度维护 · ✅ v0.5 · 召回融合与记忆可视化:BM25 + 图谱 + 热记忆 · ✅ v0.6 · 会话生命周期:删对话 ≠ 删记忆 · ✅ v0.7 · 自进化记忆:热度衰减 + 睡眠双保护 + 桌面端工作台/功能开关 · ✅ v0.8 · 作用域隔离(agent/workspace 双维隔离 + 检索加权 + opt-in 硬过滤)+ 冲突队列人工裁决 + 归属显式声明 + 生态化(stdio MCP server / 图召回轴 / 冷启动 / 注入截断与状态条 / 蒸馏可靠性 / 注入形态与 agent 主动整理接口 / 配置说明与 issue 模板) · ✅ 已发布(至 v0.8.16) v0.9 · M.O.(Modus Operandi)beta:项目级工作流本体 + 候选分层与升格判据 + 面板清单/图同屏;设置面板按「新手之外」重划折叠线(#427);安全审计与供应链加固(声明式路由鉴权、OSV 阻断、发布签名);v0.9.1 补上写侧:执行窗口、运行账、归属候选、观察旁挂与脱节检出、步骤 assert/optional、沉淀链草稿挖掘、人格定义页(按 agent 多卡);v0.9.2 让看不见的失败显形:功能开关第三态「待重启」、作用域级可逆闸门(#471)、巩固 max_tokens 超上限自动降级(#478);v0.9.3 接通自动沉淀:按会话头 cwd 反查项目桶、挂 turn/end、冷却 10 分钟、单次预算 4 秒,只产提议不产草稿(#489),并修作用域反查自 v0.8.0 起静默降级(#487)、/nudge 写盘口漏拦 PATCH/DELETE、多帧 zstd 反证断言绑 Node 整块解语义(#490);v0.9.4 补上三条链的最后一环:agent 主动整理接口有了工具(memory_organize,organizeEnabled 默认关,关时模型根本看不到它)、画像可以从记忆提取草稿(profileExtractEnabled 默认关,只出草稿、采用是用户再点一次,手写的原文不被模型改写)、人格 default 卡不再无条件进「没建卡」的身份(#497,personaStrictAddressing 默认关),面板那段「注入生效文本」改成由后端单源渲染,另补蒸馏转录围栏与解析失败护栏(#494) · ✅ 已发布(v0.9.4)
完整逐小版本说明见 CHANGELOG。
cd dsh-mneme && npm install
npm test # 2302 个测试
npm run stress # 三轴线压测
npm run sync # src → lib 同步autoDream 的理念溯源(理念借鉴、实现原创):
在上述工作之上,dsh-mneme 做了自己的工程发展:K-Means++ 聚类预分组、类型化决策清单(keep / merge / archive / conflict / update,及 sleep 侧 supersede / differentiate)与可回放的 sha256 摘要审计链(dream_runs / receipt_chain)。如有遗漏的灵感来源,欢迎提 issue 指出。
dsh-mneme 的机制设计与下列公开研究相互印证(以下引用均逐一核对过 arXiv 收录页;机制对应关系为我们自己的映射,非原论文观点):
dsh-mneme is a cross-session memory plugin for DeepSeek Harness (DSH). It does not just *store* your memories — it *manages* them: background deduplication and merging, conflicts frozen for your review, a fully replayable audit trail, memory kept on your machine, and export to human-readable Markdown.
Mneme (Μνήμη) comes from Mnemosyne, the Greek goddess of memory and dreams — just as autoDream quietly consolidates your memory store in the background.