dsh-companion-memory:DeepSeek Harness 的跨会话记忆与主动唤醒方案

前言

DeepSeek Harness(DSH)的生态理念是「一切皆插件」,这让开发者可以按需组合功能。但在角色扮演(RP)、长期陪伴、AI 恋人这类场景里,通用记忆插件存在几个明显问题:记录方式偏技术文档,角色读起来像助手;常驻文件膨胀,上下文被占满;只存不查质量,容易混入猜测、汇报腔或视角错误。

下面介绍 dsh-companion-memory,这是一个面向 RP 场景的跨会话记忆与主动唤醒方案。记忆由角色自己以第一人称整理,内置对抗式审查和随机心跳机制。

是什么

这是由 xy261624 维护的 DSH 插件,分类为「记忆」。它解决的是:角色记忆文件写法不对、上下文被占满、同一件事重复记录、说话句式趋同、不会主动开口这些问题。

安装与启用

安装命令如下:

dsh plugin --profile web add github:xy261624/dsh-companion-memory
dsh --profile web

包自带挂载声明,装完两个插件就挂上了。装完还有三件事:

  1. 把 defaultPreset 和 sortPreset 改成你环境里存在的模式 id。两个插件默认写的 default 在 dsh 里并不存在,名字对不上时会话开不出来,只在日志里留一行错误
  2. 把 templates/、docs/03-整理流程.md 和 scripts/sort_memory.py 按对应的位置复制到工作区
  3. 在该模式的 agent.cordis.yml 里登记常驻记忆文件

细节见上手。

跨会话记忆

每个新会话开始时,STATUS.md(当前状态)和 MEMORY.md(对方的基本属性)会自动注入上下文,前者记录最近发生的事,后者记录不会变的事。

其余细节放在记忆库目录,按索引读取。

整理可以手动触发,也可以交给自动整理定期执行。

面向 RP 场景的记忆写法

现有记忆插件的记忆文件多为技术文档式记录:条目化、客观、平铺直叙。这种写法适合让 agent 查资料,在 RP 场景里会降低角色的情感表现力。角色读到的是”用户在某个时间提到过某件事”这样的句子,没有语气、情绪和当时的语境,回话也带不出情感浓度。

本方案中记忆文件按角色视角写,记录角色看到的内容,使用角色会用的说法,保留原话、语气和体现情绪的细节。

记忆文件里不写”他”“对方”这类中性指代,用角色对他的称呼来写,情感浓度靠这个撑起来。

人格本身不在记忆文件里,写在模式(preset)的提示词里。

索引-记忆库

不加控制的话记忆文件会持续增加,同一类场景和情绪被反复记录,角色每轮读到的内容高度相似,说话句式也跟着重复,最后固定在几种说法上。

索引-记忆库用于控制这个问题。记忆分四类:

类型 文件 内容 读取时机
状态 STATUS.md 最近聊了什么、正在忙什么、答应了什么没做 每会话自动注入
属性 MEMORY.md 作息、喜好、忌讳、生日 每会话自动注入
细节 记忆库/*.md 某件事的完整记录 按索引读取
叙事 回忆录-*.md 值得记住的经历,按故事写 很少读

STATUS.md 和 MEMORY.md 是常驻文件,只保留精炼条目,需要细节处写一行”详情在 记忆库/xxx.md“,使用时按路径读取。

细节是否在常驻文件里留索引,判断标准是”不读它会不会误事”。仅备查的内容只进记忆库。

单个文件超过 15KB 时按话题拆分。

这套设计针对三个问题:常驻文件膨胀占满上下文、同一件事在几份文件里重复记录、相似内容积累导致角色说话趋同。

自动整理

插件按固定周期检查新对话。存在新活动且距上次整理超过设定的静默时间时,开启一个整理会话。

整理会话的步骤:

  1. 运行提取脚本,从会话日志中取出新对话
  2. 读取这些对话
  3. 按判断标准筛选,决定写入哪份文件
  4. 逐条写入,并按规范自查
  5. 开启审查子代理,用整理规范、写作规范、模板文件三份基准逐条核对

审查子代理必须引用原文、标注严重程度、给出改法,输出一份整理者照着就能改的清单。

整理完成后写入预设文件,供心跳插件决定下次的状态。

主动唤醒(心跳)

插件不等用户输入,自行选择时间开启会话。设计要点:

  • 触发间隔不固定,随聊天频率变化,由概率曲线控制
  • 睡眠时段内不触发
  • 触发前做二次检查,确认期间没有新的对话
  • 命中后随机延迟数秒至数分钟
  • 会话开启后先读取状态文件,再决定本次行为
  • 心跳会话默认带全权限,因为它常常在你不在电脑前的时候开,没法逐次批权限;可以在配置里改成更小的权限档

跟其他记忆插件的区别

常见做法 结果 本方案
自动抽取事实入库 存下来的是资料条目,角色说话仍像助手 由角色主动整理,按角色视角写
记忆一次性全部注入 上下文被占满,重要内容被稀释 常驻只放精炼条目,细节按索引读
全量堆在单个文件 文件越来越长,同一件事记多遍 常驻与文件库分离,超过 15KB 拆分
只存不查质量 记忆混入猜测、汇报腔、视角错误 独立子代理对抗式审查,输出修改清单
被动等待提问 不会主动开口 概率间隔的心跳,带睡眠时段和随机延迟
人格写进记忆 记忆里全是中性指代,读着像档案 人格放模式里,记忆用角色对他的称呼写

环境要求

  • Node.js ^22.19.0 || >=24
  • DeepSeek Harness 0.2.0 及以上,在 web profile 上验证过(用的是 0.2.0-rc.2,底下的 cordis 4.0.4)
  • Python 3.8 以上,pip install zstandard

dsh 目前还在开发者预览阶段,插件的接口会跟着版本变。换版本之后如果心跳或者整理不工作了,先看插件有没有加载日志,再看模式 id 对不对。

目录结构

package.json       插件包声明,指向 cordis.patch.yml
cordis.patch.yml   装完自动挂载两个插件
docs/              设计说明与流程文档
plugins/           两个 dsh 插件
  dsh-heartbeat/
  dsh-auto-sort/
scripts/           会话提取脚本
templates/         记忆文件模板

适用场景与注意

适合 RP、长期陪伴、AI 恋人这类需要角色化记忆和主动交互的场景。

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

短结尾

dsh-companion-memory 通过角色视角整理、索引-记忆库、对抗式审查和随机心跳,让角色记忆更贴合人设,不会被动等待输入。更多细节见目录页与 GitHub 仓库。

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

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

小夜