前言¶
在 DeepSeek Harness(DSH)里做长期助手时,会话日志能保留事实,但跨会话后,模型很难继续沿用自己以前形成的观点,也不容易区分「我现在相信什么」和「我曾经相信过什么」。常见做法是把聊天记录塞进向量库,或用相似度判断新信息是否在推翻旧结论——MemStrata(arXiv 2606.26511)在人工标注配对上的测量表明,余弦相似度区分「矛盾」与「复述」的 AUROC 仅约 0.59,矛盾配对与复述配对的平均相似度反而接近。
下面介绍社区插件 dsh-ai-memory(维护者 Isyyyue),它不为 DSH 追加会话事件,而是在会话之外维护一份派生的长期记忆账本:记录判断、规则、想法与人格特征,用结构化键做确定性取代,并用关系图谱辅助浏览与解释。
这是什么¶
dsh-ai-memory 是 DSH 生态中的「记忆」类插件,仓库为 Isyyyue/dsh-ai-memory,在 SkillHub 目录页为 isyyyue/dsh-ai-memory。它记录的不是完整聊天转录,也不是用户写死的角色卡,而是 AI 在互动中形成的判断、自设规则、未成形的想法、记忆来源与人格倾向,全部落在只追加的 JSONL 账本上,再由账本折叠出当前状态、修订历史与图谱。
DSH 的会话日志仍是会话事实的唯一来源;本插件是派生缓存,不向会话日志写事件。
核心设计:确定性取代与双时态账本¶
为什么不用相似度¶
插件明确不计算向量相似度、也不调用 LLM 做「是否矛盾」的判定。当新判断与旧判断共享同一 (subject, relation) 而 object 不同时,视为同一问题的新答案,新条取代旧条:
(服务, 端口, 8000) → (服务, 端口, 8080)
旧判断标记为 superseded 但不删除;取代事件与关系边仍留在账本里,既能回答「现在是什么」,也能回答「以前是什么、为何改变」。README 强调这样做的好处是可测试、可复现、零外部依赖、零判定延迟,且不会在相似文本上悄悄判错。
账本里有什么¶
默认账本路径:
~/.dsh/ai-memory/ledger.jsonl
事件类型包括(节选):node.created、node.revised、node.superseded、node.withdrawn、edge.linked / edge.unlinked、rule.amended,以及人格相关的 persona.proposed、persona.accepted、persona.rejected、persona.revised。当前状态、检索、图谱与统计均由账本重算;删除派生数据不丢历史。
记忆与人格分开治理¶
AI 自己的记忆涵盖判断、规则、想法、人格特征等,并保留来源与变化历史。
人格采用「候选—反馈—确认」:AI 可先提出人格候选(candidate),在用户确认或拒绝之后才进入稳定人格并影响后续注入;提出、确认、拒绝与修订均入账本。已确认人格作为表达参考;待确认候选不会进入普通会话注入,只在 memory_persona read 与 memory_reflect 中出现,避免偶然观察被反复强化。
八个工具¶
写新判断前应先检索已有记忆。README 列出的工具如下:
| 工具 | 用途 |
|---|---|
memory_search |
检索已有记忆 |
memory_write |
写入判断;三元组冲突时确定性取代旧判断 |
memory_connect |
在两条记忆间建立双向关系 |
memory_history |
查看判断的修订与取代历史 |
memory_rule |
读取、修改或回滚 AI 自设规则 |
memory_persona |
提出、确认、拒绝和修订人格特征 |
memory_reflect |
汇总近期记忆与人格,支撑自我反思 |
memory_stats |
检查记忆数量、孤立项与账本问题 |
memory_reflect 会提供近期记忆与当前人格,引导 AI 发现稳定但未记录的倾向;若形成候选,可通过 memory_persona propose 提出,并用 source_ids 指向相关记忆。
安装并重启 DSH 后,客户端侧边栏会出现「判断图谱」面板,用于导航与解释(节点为摘要,全文需通过检索获取)。
安装与启用¶
插件以 bundle 形式安装。在 DSH 环境中,将 <本目录的绝对路径> 换成你本地克隆或解压后的插件根目录绝对路径(资料要求使用 install_bundle,不要手动改 profile 里的 package.json 或 cordis.patch.yml):
plugin_manager action=install_bundle target=<本目录的绝对路径>
安装完成后重启一次 DSH,让客户端图谱完成启动扫描,再刷新页面。
停用或移除(不会删除记忆账本):
plugin_manager action=set_bundle target=dsh-ai-memory enabled=false
plugin_manager action=remove_bundle target=dsh-ai-memory
项目 package.json 标明需要 Node.js 22+,运行时 README 说明不依赖外部 npm 包。许可证为 MIT。
配置¶
默认无需配置。需要自定义时,可在 profile 的 cordis.patch.yml 中覆盖:
- id: dsh-ai-memory
name: dsh-ai-memory
config:
dir: 'D:\my-memory'
injectIndex: true
maxIndexEntries: 40
maxGraphNodes: 500
enabled: true
| 配置项 | 默认值 | 说明 |
|---|---|---|
dir |
~/.dsh/ai-memory |
账本目录 |
injectIndex |
true |
会话开始是否注入记忆索引 |
maxIndexEntries |
40 |
注入的判断条数上限 |
maxGraphNodes |
500 |
图谱快照节点上限 |
enabled |
true |
是否注册插件 |
注入的是摘要索引,不是整本账本。首次尚无记忆时,也会注入简短写入规则,帮助 AI 开始积累;提醒本身不会自动保存对话。
典型用法(流程)¶
- 会话开始:若
injectIndex为 true,会收到记忆索引与已确认人格摘要(不含待确认候选)。 - 形成或更新观点前:调用
memory_search,避免重复或与既有判断冲突未处理。 - 写入:用
memory_write落盘;若(subject, relation)相同而object不同,旧判断被确定性取代。 - 关联证据或互补/矛盾:用
memory_connect建边,必要时用memory_history查修订链。 - 自设约束:通过
memory_rule维护 AI 给自己的规则。 - 人格演化:观察倾向 →
memory_persona提出候选 → 用户确认或拒绝 → 后续可修订;周期性可用memory_reflect汇总再提案。 - 运维自检:
memory_stats查看数量与账本问题;图谱面板浏览结构。
开发与验证侧,仓库提供 npm test、node test/e2e.mjs 等命令;本地已有 DSH 时可用 node test/host-runtime.mjs <DSH源码根目录> 做工具注册与 HTTP 路由检查(不安装依赖、不调用模型、不改正式账本)。
适用场景与注意¶
适合谁:希望在 DSH 里让助手拥有跨会话的、可解释的长期判断与人格演化,且能接受「取代关系由结构化三元组决定、而非语义相似度」的开发者。
边界(来自 README):每次操作会重扫账本,数万条后可能需要索引;并发写入需上层协调;人格候选由调用方提出,插件不负责从自然语言自动抽取全部特征;无 DSH 浏览器环境时无法完成客户端视觉验证。
安全与权限:插件随当前 DSH 进程权限运行,会读写本机账本目录(默认 ~/.dsh/ai-memory)。安装前应在 GitHub 阅读源码与 MIT 许可证,确认 bundle 来源可信;社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-ai-memory 把「判断记忆」做成可审计的 JSONL 账本:确定性取代、关系双链、规则与人格分轨,再用图谱做导航。若你在 DSH 里做长期协作型智能体,可以从目录页或仓库了解详情并本地 bundle 安装。
- 目录页:https://www.skillhub.cn/plugins/Isyyyue/dsh-ai-memory
- GitHub:https://github.com/Isyyyue/dsh-ai-memory