前言¶
DeepSeek Harness(DSH)默认按会话工作:关掉这一轮,下一轮通常不会自动带上你的偏好、项目约定和上次做过的决定。官方仓库把核心理念写成「一切皆插件」(Everything is a Plugin),长期记忆并不内置在核心里,而是交给记忆类插件去补。
社区目录 DeepSeek Harness 插件库 把这类插件单独归在「记忆」分类。需要说明的是:这个目录是独立站点,和 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。目录里的 dsh-mneme 走的是另一条路——记忆不只进数据库,还会写成你能打开、能改的 Markdown。本文按目录详情页、GitHub 仓库 README / package.json,以及 DeepSeek Harness 官方仓库交叉核对后整理。
这是什么¶
dsh-mneme 是面向 DeepSeek Harness 的跨会话记忆插件,由 modusensus 维护,许可证为 MIT,主要语言是 JavaScript。npm 包名是 @modusensus/dsh-mneme。仓库内插件目录 dsh-mneme/package.json 当前版本为 0.4.0。2026-08-17 查询 GitHub API 时仓库为 22 星;社区目录页仍显示 8 星,更像收录时的快照。
名称来自希腊记忆女神 Mnemosyne(Μνήμη)。目录页的定位是:SQLite 与可编辑 Markdown 双写、autoDream 梦境巩固、本地离线语义检索。仓库 README 把目标收成三句话:
- 可读:SQLite 主库 + 人类可编辑的 Markdown 镜像,双向同步
- 可结构:实体 / 属性 / 时间轴三表,把文本片段抽成结构化知识(v0.3.0,默认关闭抽取)
- 可演化:autoDream 后台巩固,另有可选的 Sleep Mode 深度维护(v0.4.0,默认关闭)
它要解决的问题很具体:Agent 下次开会还记得你的偏好;你能打开文件核对「它到底记住了什么」;检索尽量在本地完成,而不是把记忆交出去。
核心功能¶
SQLite 主库 + Markdown 镜像¶
插件把记忆放在本机目录 ~/.dsh/memory/:
- 主存储是 SQLite:
~/.dsh/memory/memory.db,用 Node 内置的node:sqlite,不额外拉原生模块 - Markdown 镜像按类型拆文件:
preferences.md、projects.md、decisions.md、history.md、summary.md - 记忆类型是 4+1:
preference(偏好)、project(项目)、decision(决策)、history(历史),外加summary(总览)
人工改 Markdown 优先于机器回写。仓库用 last-rendered digest 做基线,再做三方合并,避免你正在改文件时被自动渲染覆盖。机器写入后会重渲染镜像。v0.3.6 之后镜像同步用 generation / applied_generation 记「还没渲染完的债」:崩溃发生在提交之后、渲染之前,重启也能接着收敛,而不是静默跳过。
七个模型工具¶
安装后,Agent 拿到这 7 个工具(来自插件 README):
| 工具 | 作用 |
|---|---|
memory_save |
记一条记忆,按标题去重合并 |
memory_search |
全文搜索(中文子串友好,可开向量语义搜索) |
memory_list |
按类型分页列出;include_archived=true 可看已归档 |
memory_update |
改已有记忆 |
memory_delete |
删除 |
memory_forget |
抑制注入(降权,不删,可恢复) |
memory_archive |
归档或恢复;归档后不出现在列表 / 搜索 / 注入 / 整理里 |
新会话开局会自动注入记忆摘要:优先 summary,再补少量高重要性条目。会话在 turn/end 时用 LLM 提炼本次的偏好、决策和教训并入库;插件会过滤自己注入过的上下文,避免把旧摘要再蒸馏一遍。
Web 界面里可以打开官方设置面板 →「记忆库设置」→「记忆」标签,按类型浏览、做全文搜索。同一设置页还可以写用户画像和行为规则,每轮注入系统提示,优先级高于记忆库;也可以注册斜杠命令(/名称),命令存在 SQLite 里,启动时注册到 DSH 命令表。
autoDream:后台巩固¶
记忆条数超过 10,或总字符超过 5000 时,autoDream 会异步触发(不阻塞写入)。LLM 输出一张决策清单,服务端校验后再逐条应用:
keep:保留merge:合并主题相近的条目,留下信息更完整的那条archive:归档过时或冗余条目,可恢复,不物理删除conflict:处理矛盾信息;也可打开conflictFreezeEnabled,改成冻结、等你确认,而不是自动裁决(默认关闭)update:直接修正过时或错误的单条记忆(有 24 小时保护期、每次最多 2 条等约束)
非法输出(未知 id、非法 action、跨类型合并、importance 越界)会整单拒绝,避免把记忆库写坏。每次运行写入 dream_runs 审计表,带输入快照 digest、决策清单和 receipt,可以离线回放。
v0.4.0 另加了 Sleep Mode(sleepModeEnabled 默认 false):空闲达到 sleepIdleMinutes 后做四阶段维护——冲突消解、按访问时间归档降级、用 LLM 提炼 type=pattern 规律、给孤立实体补关系。用户一活动就中止当前周期,并与 autoDream 走同一条串行队列,避免两套整理叠在一起。
离线语义搜索与记忆基因¶
v0.2 起提供可选的语义检索,默认 embedProvider 仍是 openai(兼容早期行为)。改成 local 后走 ONNX 离线模型 Xenova/bge-small-zh-v1.5;也可以用 Ollama。失败会逐级降级,最后退回关键词搜索。Rerank 默认关闭(rerankEnabled: false),打开后才加载 Xenova/bge-reranker-base。
搜索可以走混合召回(向量 + 关键词)。在设置页打开向量搜索后,记忆面板会出现「语义」切换;密钥只存在本机 memory.db 的 user_settings 表。
v0.3.0 的「记忆基因」把文本抽成三张表:entities、entity_attrs(带 valid_until 时间轴,改属性不覆盖历史)、entity_relations。entityExtractionEnabled 默认 false,关掉时行为与 v0.2.x 一致。打开后可用前缀搜索,例如:
entity:React:按实体召回attr:programming_language=Rust:按属性值过滤attr:deadline:按属性名过滤
安装与启用¶
目录详情页给出的安装命令是:
dsh plugin add github:modusensus/dsh-mneme
需要可复现安装时,按目录页说明固定 commit。2026-08-17 仓库 main 最新提交为 49b54dfa06b38f475f2984b6cb4b423dcfa821a1,可以写成:
dsh plugin add github:modusensus/dsh-mneme#49b54dfa06b38f475f2984b6cb4b423dcfa821a1
GitHub 插件 README 推荐的是 npm 包 + web profile(声明了 dsh.bundle,安装后自动激活)。package.json 里 requiresRestart 为 true,装完需要重启:
dsh plugin --profile web add @modusensus/dsh-mneme
dsh web
从源码安装:
git clone https://github.com/modusensus/dsh-mneme.git
cd dsh-mneme
dsh plugin --profile web add .
dsh web
前置条件来自插件 README:已安装 DeepSeek Harness,并且 Node 24+(需要 node:sqlite)。
目录页和 GitHub 都提醒:插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前请检查源代码仓库和许可证。
典型用法¶
让 Agent 自己记,下次会话再读¶
装好并重启后,不必先手写配置。默认 autoInject 和 autoSummarize 都是 true:你在对话里说出稳定偏好或项目约定,Agent 可以调用 memory_save;会话结束会再提炼一轮入库。下一轮开局会先看到摘要,而不是从零开始。
需要自己查或改时,用 memory_search / memory_list / memory_update。不想让某条再注入、但还不想删,用 memory_forget;确定过时了再用 memory_archive。
直接改 Markdown¶
记忆文件在 ~/.dsh/memory/。打开对应的 .md,改完保存即可。插件按「人工编辑优先」合并回 SQLite。这是它和「只进黑盒向量库」的记忆插件最明显的差别:目录页把它概括成「记忆主权归还于你」。
改阈值(可选)¶
默认即可用。要改整理阈值或注入条数,在 ~/.dsh/profiles/web/cordis.patch.yml 按插件 id 覆盖。下面这段来自插件 README:
- id: dsh-mneme
name: '@modusensus/dsh-mneme'
config:
memoryDir: ~/.dsh/memory
autoInject: true
autoSummarize: true
maxInjectedItems: 5
importanceThreshold: 3
autoDream: true
dreamThresholdCount: 10
dreamThresholdChars: 5000
dreamDelayMs: 2000
完全离线语义检索时,把 embedProvider 设为 local。实体抽取、Sleep Mode、Rerank 都是显式开关,默认偏保守,不会在你没打开时改掉现有行为。
适用场景与注意事项¶
适合这些情况:
- 同一套 DSH Agent 要跨很多天用,需要记住偏好、项目背景和已做决定
- 你希望记忆落在本机文件里,能打开 Markdown 审查、修正,而不是只存在不可读的向量库
- 检索尽量离线(本地 ONNX / Ollama),或至少密钥只放在本机 SQLite
- 需要后台去重、合并、归档,而不是无限堆积原始片段
使用前注意下面几条,都来自目录页或仓库文档:
- 权限与供应链。 插件以当前 dsh 进程权限运行,安装时可能执行代码。先看 GitHub 源码和 MIT 许可证,再决定是否安装;生产环境用固定 commit。
- 运行时要求。 需要 Node 24+;README 安装路径针对 web profile,装完要
dsh web重启。 - 新能力默认关闭。 实体抽取、Sleep Mode、Rerank 都是 opt-in。autoDream 默认开启,记忆变多后会调 LLM 做整理,会消耗模型和时间。
- 本机 API 默认不鉴权。 文档写明 DSH 默认只监听
127.0.0.1,插件 API 默认开放以便 Web 面板即用。若把服务暴露到局域网,应配置apiToken,写操作和密钥接口走Authorization: Bearer。 - 记忆内容在你的磁盘上。 路径是
~/.dsh/memory/。向量 API Key 也在同一 SQLite 里。备份、权限和是否纳入同步盘,需要按敏感数据来处理。 - 同类插件很多。 目录「记忆」分类里还有 graph-memory、mnemon、dsh-memory-evolve 等。社区博文把 dsh-mneme 标成「可检查、可编辑的记忆」这一路,并不是官方唯一推荐。按你是否要手改 Markdown 来选即可。
小结¶
dsh-mneme 给 DeepSeek Harness 补的是一层本地、可打开的长期记忆:SQLite 负责机器读写,Markdown 负责人审和手改,autoDream 在后台做巩固。语义检索和实体抽取是可开关的增强,不是装上就会改掉默认行为。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-mneme/
GitHub:https://github.com/modusensus/dsh-mneme