dsh-identity-relay:把人格与长期记忆放在磁盘上,新会话自动读档

前言

在 DeepSeek Harness(DSH)里做长期陪伴或带人格的智能体时,上下文窗口是易失的:对话一满会被裁剪,清上下文或压缩后「她是谁、做到哪、答应过什么」往往跟着归零。常见做法是把设定写进系统提示或某次会话里,但换会话、重启 DSH 之后,连续性仍靠人工复制粘贴。

人格接力(dsh-identity-relay)由 wumingzhiren-lab 维护,归类为「记忆」类 DSH 插件。下面介绍它如何把人格卡、交接书和长期记忆落到磁盘,并在每个新会话开工时自动注入,让换会话、清上下文之后仍能从同一套档案读档。

这是什么

一句话:把「灵魂」从上下文搬到纯文本文件;插件负责读档、注入、预警和维护,不负责自动采集聊天内容。

  • 仓库:wumingzhiren-lab/dsh-identity-relay
  • 社区目录:SkillHub 插件页
  • 许可证:MIT(见仓库)
  • 插件以当前 DSH 进程权限读写 memoryDir,安装前建议通读源码与许可证;社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系

三个磁盘文件

记忆库默认目录为 ~/.dsh/identity-memory(可在配置里改 memoryDir)。安装后会自动生成模板,模板不等于已配好人格。

文件 作用
persona.md 人格卡:身份、性格、说话方式、红线
handover.md 交接书:上一段在做什么、接下来做什么、答应过什么
facts.jsonl 长期记忆:一行一条 JSON,含时间、内容、来源、状态等

每次新会话开工(新建、恢复、清上下文、压缩之后),插件会把「人格卡 + 交接书 + 近期记忆」注入第一轮上下文。上下文占用接近上限时,会在下一步之前插入预警,提醒先用 relay_handover 写交接书。会话进行中若磁盘上的三个文件被别的会话或人工编辑改动,下一步之前会提示先 relay_load 重读。

relay_handover / relay_persona 覆盖写入前,旧版会自动进入 history/,各保留最近 10 份。

记忆的来源与状态

每条长期记忆带来源档位与状态,检索默认只出 active 条目。

来源五档(可信度从高到低):owner(主人)> self(自己说过/答应的)> evidence > tool > inferred;老数据可为 unknown,不猜测。

  • 作废:标 superseded 等状态,不删行;用 relay_recall 时设 includeSuperseded: true 可查看历史
  • 同键 subject:新记忆写入时旧条自动作废并指向新条,由规则处理而非模型推断
  • 关联:related 最多 5 个 id,回忆命中时可带出关联条(最多 3 条)
  • 归档:status: archived 不再参与读档与默认检索,行仍保留;收工整理脚本 ~/.dsh/identity-memory/tools/consolidate.mjs 仅归档符合条件的过程流水,owner / self 永不归档

八个工具

Bot 通过 DSH 暴露的工具读写档案(名称以仓库文档为准):

  1. relay_load — 重读人格卡、交接书与近期记忆
  2. relay_remember — 写入一条长期记忆(可选 source、subject、related、validFrom / validTo、importance 等)
  3. relay_recall — 关键词回忆,默认最多 20 条 active
  4. relay_retract — 按内容片段定位并盖章作废
  5. relay_conflicts — 规则检测可能矛盾的记忆对;默认只报告,执行需显式参数且主人原话不会从此入口被盖
  6. relay_handover — 读/写交接书
  7. relay_persona — 读/更新人格卡
  8. relay_status — 记忆库统计、历史备份数、上下文压力

FAQ 中明确:不会自动把聊天摘要写入记忆;只有调用 relay_remember(或你/她主动维护文件)才会增长 facts.jsonl。

安装与装完检查

推荐从 GitHub 安装(无需 git clone):

dsh plugin add github:wumingzhiren-lab/dsh-identity-relay#main

也可在 DSH 插件管理器的市场/安装中填写 github:wumingzhiren-lab/dsh-identity-relay。本地开发可用 dsh plugin add <本目录绝对路径>。安装后 HMR 生效,一般无需重启。

装完后建议按 README「装完 60 秒」走一遍:

  1. 调用 relay_status,若人格卡/交接书仍是初始模板,会标 ⚠️
  2. 填写 persona.md 或通过 relay_persona 写入;插件不会替你编人格
  3. 用 relay_handover 写第一份交接书
  4. 用只有档案里才有的信息验读档;不通则 relay_load 检查是否仍是空模板

可选配置

在 cordis.patch.yml 的 config 中可调整行为。常用项包括:

键 默认 说明
enabled true 总开关
memoryDir ~/.dsh/identity-memory 记忆库路径
injectOnCreated / injectOnResume / injectOnSubagents true 各类会话是否注入
warnRatio 0.7 上下文占用比例预警(0.5–0.99,越界会被夹紧)
recallLimit 20 读档注入的记忆条数(1–100)
injectSelect "relevance" 读档挑记忆:relevance 或 recent
maxFactsChars 8000 记忆段字符预算;0 表示不设限

完整键表与边界说明见仓库 README「配置」一节(例如 maxFacts 有 100 条硬下限等防呆行为)。

适用场景与注意

适合需要跨会话人格连续、可审计的长期记忆(来源、作废、同键更新)的 DSH 智能体或 QQ Bot 等宿主场景。若只需要单次会话内的简单摘要,不必上全套档案模型。

使用时需接受几件事:记忆要人工或工具写入;开放世界的语义冲突不会全自动判死,需人终审或规则内的同键替换;插件零依赖、纯文本存储,便于备份与 diff,也意味你要自己管好 memoryDir 的备份与权限。

仓库 README 提供本地测试命令(在临时目录跑,不碰真实记忆库),例如 node test/smoke.mjs 及 step4–step18、benchmark、fuzz 等;文档记载 2026-11-03 实测 426/426 通过。当前 package.json 版本为 0.5.0,功能细节以 README / CHANGELOG 为准。

结尾

人格接力解决的不只是「能不能记住」,而是「记住的内容还算不算数」:磁盘上的档案、来源档位与盖章作废,让读档和回忆有凭据。DSH 生态主张「一切皆插件」;若要在 Harness 里做长期身份连续,可从官方安装命令装好记忆库,填人格卡与交接书,再用 relay_remember 把该留的东西写进 facts.jsonl。

  • 目录页:https://www.skillhub.cn/plugins/wumingzhiren-lab/dsh-identity-relay
  • GitHub:https://github.com/wumingzhiren-lab/dsh-identity-relay
羽毛球分组比赛记分
小程序二维码

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

Xiaoye