dsh-ai-memory:给 DSH 里的 AI 一层可追溯的判断记忆

前言

在 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 开始积累;提醒本身不会自动保存对话。

典型用法(流程)

  1. 会话开始:若 injectIndex 为 true,会收到记忆索引与已确认人格摘要(不含待确认候选)。
  2. 形成或更新观点前:调用 memory_search,避免重复或与既有判断冲突未处理。
  3. 写入:用 memory_write 落盘;若 (subject, relation) 相同而 object 不同,旧判断被确定性取代。
  4. 关联证据或互补/矛盾:用 memory_connect 建边,必要时用 memory_history 查修订链。
  5. 自设约束:通过 memory_rule 维护 AI 给自己的规则。
  6. 人格演化:观察倾向 → memory_persona 提出候选 → 用户确认或拒绝 → 后续可修订;周期性可用 memory_reflect 汇总再提案。
  7. 运维自检: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
羽毛球分组比赛记分
小程序二维码

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

Xiaoye