木偶记忆:DSH 跨会话记忆插件

前言

DeepSeek Harness(DSH)的智能体如果缺乏记忆,每次对话都是重新开始。已有的记忆插件要么只存一个文件,要么把所有东西一股脑注入,很快撑爆上下文。木偶记忆(Puppet Memory)解决的是这个问题:把记忆按用途分层,只在该进上下文时才写入,同时提供写入守卫、要点层、会话级管理等机制,保证记忆既持久又可控。

插件原名 dsh-memory,2026-10-20 更名。当前最新发布为 0.32.0(2026-10-24,兼容 DSH 0.2.1-rc.3),主分支是开发中的版本。维护者:xingyueDanYang。

五层记忆

记忆按用途分五层,分类轴是「什么时候进上下文」:

层 什么时候进上下文 放什么
A 常驻 每轮(变了才追加,压缩后补回) core.md(稳定事实)、core-rules.md(行为规则)、core-state.md(当前状态)
B 按需·行为 检索命中或注入时 人、关系、约定、偏好、人设
C 按需·知识 要办事才翻 手册、梗、出处、结论型资料
D 账本 要回查原话才翻 每回合流水、事件索引与会话清单、引导索引、摘要/要点视图
E 临时 交接时看 便签

数据存放在 ~/.dsh/memory/,全部是纯文本文件,零依赖。

常驻层

常驻层有三张卡,优先级最高,优先从总预算里扣:

  • core.md:600 字核心记忆,每步缺就补
  • core-rules.md:800 字行为规则
  • core-state.md:400 字当前状态

按需·行为层

存放人、关系、约定、偏好、人设等,每轮注入时最多 1600 字符。关系条目超出预算时,保留最新的完整条目,旧条目自动转存到 deep/guide.jsonl(带日期标注,可用 memory_search layer=deep 查找)。

按需·知识层

手册、梗、出处、结论型资料,按需检索。

账本层

每回合一条流水,附带事件索引与会话清单。支持摘要/要点视图,可回读原文。

临时层

便签,用于交接或临时草稿,清空前自动归档。

核心记忆与注入控制

core.md 是 600 字常驻小卡,每步缺就补地注入,优先级最高。注入频率可切换:默认每步注入;切到 first-step 后只在会话里注入一次。

session-start 登记会话,pre-step 注入行为记忆摘要(人设、关系、最近笔记、最近日记),默认 ≤1600 字符,内容不变不重复注入。子代理会话跳过注入。

turn-stopping 把本回合压成一条日记 + 一条阵列索引(不调用模型)。disposed 会话结束时同步备份。

写入守卫与要点层

写入守卫会拒绝乱码(如 锟斤拷、替换字符、错编序列)、超长粘贴、把注入块整段复制进记忆,并说明原因。近似重复的便签/笔记自动合并,人设整行去重。

要点层在检索结果顶部先给 3 条「要点 + hash」速览,抽取式,不调模型、不花 token、不加存储。

三线状态、多人多群、会话管理

三线状态:工作 / 陪伴 / 学习,词表检测 + 半衰期衰减 + 话题锚点,只给定性,不给数字。

多人多群:人/群实体、身份归一(合并必须人确认)、四分区可见性、按场景注入,跨群默认不串台。

会话记忆管理:脏片段可在当前会话屏蔽(数据不删)或删掉(先归档),也可整会话暂停注入。

自动摘要、小模型路由与备份

自动摘要/事实候选:压缩后/会话结束压摘要;事实只提案,accept 才写记忆。

小模型路由:摘要/提炼可用独立 provider/model(本地 Ollama 等),失败自动回退主会话模型。

可移植性:默认备份到家目录、目录不可写自动回退、memory_doctor 一键自检。

图片记忆与声音记忆

图片记忆:人物设定、截图、示意图等「细节比描述重要」的东西,可以让图片跟着条目一起存。图片复制到 ~/.dsh/memory/assets/,按 sha256 命名(去重),支持 png / jpg / webp / gif / avif / bmp。memory_search 命中带图条目时,会直接列出图片的绝对路径。

声音记忆:语气、笑声、一段环境音、一句语音等,可以用 audios 参数带着音频一起存。音频复制到 ~/.dsh/memory/assets/,按 sha256 命名(去重),支持 mp3 / wav / m4a / aac / ogg / opus / flac / webm / amr。转写可选:调用时传 transcripts(与音频一一对应);不传就自动读音频同目录同名 .txt。转写存进条目的 audios[].transcript,会参与 memory_search。

出处(provenance)

记一件事,除了「是什么」,还要记「谁说的、在哪看到的」。

文字条目:直接用条目的 source + quote 两个字段。source 是一行短串「作者@平台 ID」,如 蒙德砍壬@BV15X3n6mEWy。quote 是 verbatim(原文照抄)或 paraphrase(转述)。

媒体资产(图片/音频/视频截图):登记在 behavior/sources.jsonl,一行一条,同一资产可挂多个出处。

安装与启用

  1. 下载插件压缩包
  2. 解压到本地任意位置
  3. 复制到 DSH 插件目录(通常是 ~/.dsh/plugins/)
  4. 重启 DSH

典型用法

写入核心记忆

memory_write layer=core keyword=大肥鱼形象 meaning="..." source="" quote=""

写入关系条目

memory_write layer=relation keyword="蒙德砍壬" meaning="..." source="蒙德砍壬@BV15X3n6mEWy" quote="verbatim"

写入带图片的条目

memory_write layer=relation keyword="大肥鱼两代形象" meaning="..." images=["D:\\Pictures\\v4.png"]

写入带音频的条目

memory_write layer=note text="深夜电台片段" audios=["D:\\Voice\\radio.m4a"] transcripts=["……这里是深夜电台,今晚聊聊记忆。"]

检索记忆

memory_search keyword="蒙德砍壬"
memory_search layer=deep keyword="炸盆子"

查看记忆统计

memory_stats
memory_image action=list

执行记忆自检

memory_doctor

适用场景与注意

适合需要长期维护对话上下文、需要按用途分类记忆、需要回查原话或出处、需要管理多人多群场景的开发者。

插件以当前 dsh 进程权限运行,安装前应检查源码与许可证。

短结尾

木偶记忆通过五层记忆、写入守卫、要点层、三线状态、多人多群管理、会话级管理、自动摘要与小模型路由等机制,为 DSH 提供了一套完整的跨会话记忆解决方案。它不追求「记住一切」,而是让记忆只在需要时出现,避免上下文被撑爆。

目录页 | GitHub

羽毛球分组比赛记分
小程序二维码

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

小夜