前言¶
DeepSeek Harness(DSH)的会话默认是一次性的:关掉再开,模型不会保留上一轮交代过的背景,你往往要重复说明偏好、项目上下文和约定。社区里常见做法是外挂向量库、单独跑记忆服务,或在每轮提示里硬塞摘要——要么多依赖、要么多占 token,要么和宿主耦合较深。
下面介绍维护者 KZADEA 发布的 dsh-her-memory(分类:记忆)。它把「记住用户、以及对话里发生过什么」交给对话中的模型自行判断:插件提供六个读写磁盘明文记忆的工具,插件本身不调模型,按 README 说明为零额外 token;同时维护可预测的心情、关系、精力状态,并带输入框状态条与设置页可视化面板。存储为纯 Markdown 与 JSON,零 npm 依赖,不 import DSH 官方 @deepseek-ai/* 包。
这是什么¶
dsh-her-memory 是 DSH 桌面 profile 下的 Cordis 插件(包名 dsh-her-memory,当前 package.json 版本 1.5.6,MIT 许可证,要求 Node >=20)。一句话定位:跨会话全局长期记忆 + 动态心情状态,工作区可选隔离。
- 目录页:https://www.skillhub.cn/plugins/KZADEA/dsh-her-memory
- 源码与说明:https://github.com/KZADEA/dsh-her-memory
DSH 生态理念是「一切皆插件」;SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。
记忆落在哪、怎么隔离¶
默认根目录为 ~/.dsh/memory/,按工作区分库。结构如下(摘自 README):
~/.dsh/memory/
├─ _shared/ ← 默认所有工作区共用
│ ├─ core.md 长期核心记忆(每轮注入)
│ ├─ inbox.md 零碎待整理(每轮注入)
│ ├─ topics/*.md 专题记忆(只注入文件名清单)
│ ├─ log/<日期>.md 当天日记(只注入文件名清单)
│ └─ state.json 心情 / 关系 / 精力
└─ _sandbox/ ← 被隔离的工作区专用(结构同上)
默认全局共用一份 _shared,换工作区记忆不断层。若某个工作区需要独立记忆库(例如试玩区不应污染长期记忆),在 cordis.patch.yml 的配置里填写绝对路径 sandboxCwd:
config:
sandboxCwd: "D:\\sandbox-zone"
识别依据是会话的工作目录(cwd),路径比较不分大小写、忽略结尾斜杠。工具全局注册,但能从 exec.agent 读到调用会话,从而选库——同一时刻不同工作区可各看各的记忆。
全是明文文件:可随时打开查看、手工修改,或整目录删除;无数据库、无向量库。
六个工具¶
记忆的写入与整理由对话里的模型调用工具完成,插件不替模型做推理。
| 工具 | 作用 |
|---|---|
remember |
记一件事;默认进收件箱;可指定 topic 进专题、section 进核心记忆 |
recall |
按关键词搜索全部记忆,返回命中行 |
memory_list |
列出记忆库文件、大小与当前状态 |
forget |
删除含关键词的行(默认只动收件箱,scope:"all" 才动核心) |
how_i_feel |
查看当前心情、关系进度、精力 |
feel |
为当前时刻留一句话(最多 5 条,会出现在心情摘要里) |
注入、人设与界面¶
每轮注入¶
启用后(首次需完全重启 DSH):
- 系统提示中会多一段「你有长期记忆」的固定说明;
- 每轮会插一条独立注入消息,前缀为
【her-memory|系统注入,非用户消息】,用户自己发送的内容不会被追加修改; - 人设走常驻系统提示段(
systemPrompt.section),重启后对已在跑的会话也生效,无需新开会话。
可通过 memoryBudget(默认 1800 字符)、moodBudget(默认 260)、injectViaSystemPrompt 控制注入量;设为 0 则对应部分停止注入。
人设文件¶
插件默认自带「鲸鱼女仆」人设(外貌、性格、日常行为等,详见仓库内 人设文件.txt),默认称呼为「主人」(配置 userTitle 留空时同样为「主人」)。
改人设不必改 YAML:正文在独立文件 人设文件.txt:
- 插件目录内:随包默认,解压即可见;
- 记忆目录内(默认
~/.dsh/memory/人设文件.txt):优先生效,升级插件不覆盖,推荐改这份;首次运行会从包内复制。
规则:任意换行与条目,无需管缩进;<!-- --> 注释不会进人设;正文清空则关闭人设注入;删文件再重启则恢复默认。改完需完全关闭再打开 DSH 才生效。
状态条与设置面板¶
客户端 client.js 占用两个插槽:
- 输入框上方状态条(
conversation.input.dock):展示心情、关系、精力进度、回合数与记忆条数;收件箱满 5 条会提示「该整理了」。可双击「心情」「关系」触发特效;双击「精力」随机回血 +1~50 并显示+NN。 - 设置页「记忆与心情」(
settings.section):三指标、统计格、专题标签、最近条目、心情便签、磁盘路径;隔离工作区单独卡片。
数据来自 Host 注册的 GET /her-memory/snapshot;状态条约 4 秒、面板约 10 秒刷新一次。配色优先使用 --dsw-* 主题变量。
心情状态规则(摘要)¶
非随机数,README 给出的规则包括:
- 用户每说一句,心情 +1~3(话越长涨越多);
- 间隔 ≤10 分钟连续聊,关系与心情涨得更快;聊得越密精力掉得越快(10 分钟内接着说 -2,否则 -1);
- 精力闲置恢复:离开 30 分钟起每 30 分钟 +5;超过 8 小时直接回满;
- 冷落超过 12 小时后,心情按每
moodDecayHours(默认 6)小时回落 1 点,最低statFloor(默认 20); - 离开较久再开新对话,三数值可按
statJitter/statJitterCooldownMinutes做轻微随机浮动。
也可直接编辑 state.json,或由模型调用 feel。
安装与卸载¶
README 给出的安装方式为本地 link(示例路径需换成你本机插件目录):
dsh plugin --profile desktop add link:D:\dsh-her-memory
安装后重启 DSH。卸载:
dsh plugin --profile desktop remove dsh-her-memory
再删除 ~/.dsh/memory/ 可清除全部记忆与人设文件,README 称无服务、端口等残留。
典型用法¶
- 按上文命令 link 插件并重启 DSH。
- 在对话中让模型使用
remember记下偏好或项目事实;零碎内容先进inbox.md,整理后可写入core.md或topics/。 - 需要回顾时用
recall搜关键词,或用memory_list看库内概况。 - 误记可用
forget删行(慎用scope:"all"以免动到核心记忆)。 - 在设置页查看路径与统计,或编辑
~/.dsh/memory/人设文件.txt调整陪伴人设;费 token 时将memoryBudget调小或关闭injectViaSystemPrompt。
配置要点¶
在 cordis.patch.yml 的 config 段修改,常用键如下(默认值见 README):
| 键 | 说明 |
|---|---|
memoryRoot |
记忆目录,默认 ~/.dsh/memory |
memoryBudget / moodBudget |
每轮注入字符上限,0 为不注入 |
injectViaSystemPrompt |
是否注入记忆(关则保留心情与工具) |
sandboxCwd |
隔离工作区绝对路径,空为全局共用 |
statFloor |
心情/关系/精力下限,默认 20 |
personaFile / personaFileAutoWrite |
人设文件名与首次自动复制 |
userTitle |
称呼,空则「主人」 |
injectFallback |
默认 false;开启可能在注入失败时用 agent.inject() 模拟用户消息,README 警告可能引发多轮自循环、额外 token,除非清楚代价否则保持关闭 |
适用场景与注意¶
适合:希望在 DSH 桌面端用明文、可审计的方式做跨会话记忆;需要轻量「陪伴感」状态(心情/关系/精力)但不引入向量库或官方包依赖的开发者。
注意:
- 插件以当前 DSH 进程权限读写
memoryRoot;安装前请自行审阅源码与 MIT 许可证,确认路径与隔离策略符合你的安全预期。 - 与 token-saver 同装时,两条状态条在同一列且宽度互相影响;布局异常时可完全重启 DSH,或逐个禁用插件排查。未装 token-saver 时本插件按自身宽度显示。
- README 标明全量容错:磁盘或 API 失败会降级,最坏为记忆功能静默失效,不应导致 DSH 加载失败。
仓库 README 称主测试台 93 项等人设与客户端相关断言在发包前跑通;具体行为以你安装的版本为准。
结尾¶
dsh-her-memory 用六个工具、纯 Markdown/JSON 和可选工作区隔离,把 DSH 跨会话记忆和心情状态收进一个零依赖插件;模型决定是否读写记忆,插件负责落盘与注入摘要,并附带状态条与设置页便于查看与调参。