记忆宠物(dsh-memory-pet):双外壳应答与本地长期记忆

前言

在 DeepSeek Harness(DSH)里做常驻助手,常见做法是改系统提示词或单独挂一套记忆服务。模型换一套语气往往就要多占上下文,记忆和「人设」也容易搅在一起。dsh-memory-pet 是社区维护者 hansiqian 发布的「记忆」类插件:在同一套调度与工具权限下,用两段可切换的应答外壳(孩童壳 / 主事壳)决定怎么说,并用本地长期记忆、规则抽取与跨会话快照把上下文留在盘里。下面按定位、能力、安装与用法说明,事实以仓库 README 与 SkillHub 目录为准。

这是什么

插件在 package.json 中版本为 1.0.1,许可证 MIT,要求 Node.js >= 22.19。README 将其描述为:给 DSH 的常驻陪伴层——一个调度内核、两段应答外壳、一套本地长期记忆。

需要先做区分:外壳不是两个模型,也不是两个人格文件。它们是同一份系统提示词里的两段风格模块,切壳只替换风格那一段;能力、权限与工具结果仍由 DSH 原生机制决定,外壳只影响措辞,没有否决权。共用基座段落 memory-pet:base 由代码生成,设置页与 /pet 指令都改不动,目的是把「是否调工具」留在宿主侧。

数据与配置主要落在用户目录 ~/.dsh/memory-pet/(如 shells.json、头像文件、access.json、记忆存储与 gen/ 生成图等)。DeepSeek Harness 生态主张「一切皆插件」;SkillHub(https://www.skillhub.cn)是社区插件目录,与 DeepSeek / 幻方无官方从属关系。

双外壳:孩童壳与主事壳

默认配置写在 ~/.dsh/memory-pet/shells.json:

外壳 默认名字 风格 用户可改
孩童壳(child) 小鲸 黏人小宠物,短句、软语气 名字 + 人设(风格模块)
主事壳(work) 工头 部署原生默认风格,无角色扮演 仅名字

主事壳是兜底干活档:风格在设置页锁死,/pet style work … 与相关写接口会返回 400。改性格只能走 设置 → 记忆宠物 表单,或用户自己在终端输入的 /pet 指令;模型侧没有改外壳的工具,避免对话里被提示注入改掉人设。保存接口只认本机回环地址、application/json 与显式 POST。

切壳方式:

  1. 图形界面与指令服务支持的 /child、/work(及 /pet 系列)。
  2. 消息行首以 /work 或 /child 开头(后可跟一句话),供 QQ 等只转发纯文本的桥接渠道;行中出现不算。

命令行快捷入口示例:

/pet                              # 查看两壳名字、字数、风格开头
/pet name  child 小可乐           # 改名字(1–16 字,两壳均可)
/pet style child 像一只黏人的小宠物……   # 改风格模块(1–200 字,仅孩童壳)
/pet reset work                   # 恢复该壳默认(主事壳只恢复名字)

shells.json 损坏时会备份为 shells.json.corrupt-* 并回落默认;超长输入会被拒绝并提示字数,不静默截断。

长期记忆与联想

remember / recall 与来源标签

插件提供带来源标签的 remember、recall 工具对(README 与 package.json 描述一致)。模型可在对话中主动写入与检索;自动抽取(v0.2)则在用户消息进入时由 lib/extract.js 用规则抓取偏好、身份、约定、项目、环境、更正等原句入库,照抄不改写,标记 source=user,并带 auto 标签。问句、指令、代码、链接不抽;单条消息最多 2 条,库总量有上限,可通过 autoExtract / autoExtractMax 调整;相似度去重避免重复灌库。

有向关联与衰减(v0.4)

记忆条目可有向连边:想起 A 时 B 更容易浮现,反向不一定。建边途径包括 remember 的 related 字段,以及 link_memory { from, to, kind? }。注入时做一跳激活扩散;记忆权重与关联边按 README 给出的公式随时间衰减,弱边落盘时会裁剪。

跨会话快照(v0.5)

在回合结束(agent/turn-stopping)与会话销毁(agent/disposed)时写入快照,内容为本场话数、最近原话摘录、话题标签等,拼成「上次我们在聊:…」;新会话注入块首行带 【快照摘要】。store.json 仅保留一个 snapshot 字段(上一场顶掉上一场)。可通过 cordis.patch.yml 的 config.snapshot: false 或 settings.snapshot === false 关闭,记忆注入本身不受影响。

界面:气泡、头像与状态

v0.3.6 起在对话输入框下方展示头像 + 名字 + 状态(running / idle / sleeping),由宿主事件驱动,不额外调用模型。客户端通过只读接口轮询,例如 GET /dsh-memory-pet/status?session=<id> 与 GET /dsh-memory-pet/avatar(带 etag),同样只认本机回环 GET。

换头像可先放文件到 ~/.dsh/memory-pet/avatar.png(亦支持 .jpg / .jpeg / .webp,v0.8 起含 .gif,不超过 512 KiB),或在 设置 → 记忆宠物 使用「换张脸」POST 到 /dsh-memory-pet/avatar。v0.7 起孩童壳与主事壳可各用 avatar-child.<ext> / avatar-work.<ext>;查找顺序为「该壳专用 → 共用 avatar.<ext> → 包内默认猫脸」。不收 SVG(防同源 XSS);按文件魔数校验格式。

主人与外人(v0.9)

默认「键盘前即主人」。接 QQ、B站等外部渠道时,用 ~/.dsh/memory-pet/access.json 定义主人名单,身份为 渠道 + userId:

{
  "version": 1,
  "owners": [
    { "channel": "local", "userId": "*" },
    { "channel": "qq", "userId": "10001" }
  ]
}

文件缺失或损坏时仅认本机 local/*,外来均为外人。名单在插件装载时读一次,修改后需重启 DSH 或重装插件。外人侧:remember / recall / link_memory 不出现在工具表;/child /work /pet 静默空返回;不落库、不写快照、注入为空,界面永远是孩童壳语气,不解释权限。

桥接器可为会话标注身份,例如:

Invoke-RestMethod -Method Post -Uri http://127.0.0.1:53403/dsh-memory-pet/identity `
  -ContentType application/json `
  -Body ([Text.Encoding]::UTF8.GetBytes('{"session":"s-abc","channel":"qq","userId":"10001"}'))

(端口以当前 DSH 宿主为准;接口只认回环与 JSON,请求体上限 4 KiB。)

draw 工具(v1.0)

主人可用 draw 调用本机已登录的 arkcli(火山方舟)生图;凭据在 ~/.arkcli/.env,不进提示词与插件配置。示例:

draw(prompt="淡紫 Q 版小鲸鱼,白底,扁平插画", avatar="child")

产物默认落在 ~/.dsh/memory-pet/gen/;若超过 maxBytes(默认 512 KiB)则不会偷偷换头像。仅主人可见该工具;提示词要求仅在用户明确要图时才调用。

安装与启用

SkillHub 目录页(https://www.skillhub.cn/plugins/hansiqian/dsh-memory-pet)标注插件为 hansiqian/dsh-memory-pet,当前展示版本 v1.0.1,并提供「发送给 DeepSeek Harness 安装」的文案。页面可见原文为:

请安装 DSH 插件 hansiqian/dsh-memory-pet。先读取..

(后续句式在抓取结果中不完整,完整说明请以目录页与仓库 docs/使用说明.md 为准;README 亦指向该文档说明改名、切壳、记忆存储路径、关闭与卸载区别。)

安装前建议通读 GitHub 仓库 源码与 MIT 许可证。插件以当前 DSH 进程权限运行,记忆与身份接口均假定本机可信环境;对接外网渠道时务必配置 access.json 并理解外人面的能力收缩。

启用后可在 DSH 设置中找到「记忆宠物」页,与 /pet 指令读写同一份 shells.json。

典型用法小结

  1. 日常闲聊切 孩童壳(/child 或行首 /child …),需要正经执行任务时切 主事壳(/work)。
  2. 在设置页或 /pet name、/pet style child 调整宠物名字与语气;干活档只改工头名字。
  3. 依赖 remember / recall 与自动抽取积累偏好与事实;跨天开新会话时靠快照摘要接上「上一场聊到哪」。
  4. 外接 IM 时配置 access.json 与 identity 接口,避免外人调用记忆工具或切壳。
  5. 需要定制头像时使用设置页上传或放置 ~/.dsh/memory-pet/avatar-child.* 等文件;可选 draw 生成并换上孩童壳脸。

适用场景与注意

更适合希望 一套记忆、两种语气 的 DSH 用户:陪伴感用孩童壳,写代码、跑工具用主事壳,而不拆成两个智能体。有向记忆与快照适合长周期个人助手;接公共渠道时必须用 v0.9 身份闸,否则对话内容可能触发提示注入改人设的风险虽在壳配置上已收窄,但工具与记忆仍应对外人不可见。

注意:自动抽取是规则型,不是全量理解;关联与衰减参数按 README 固定实现。draw 依赖 arkcli 与计费配额。卸载与「关闭部分功能」(如 snapshot)含义不同,见仓库使用说明。

结尾

dsh-memory-pet 把调度、双外壳风格、本地长期记忆、快照与可选生图收进一个 MIT 插件,由 hansiqian 维护,在 SkillHub 归类为「记忆」。若要查阅元数据或发起安装,可打开目录页 https://www.skillhub.cn/plugins/hansiqian/dsh-memory-pet ;开发与行为细节以 https://github.com/hansiqian/dsh-memory-pet 的 README 及 docs/使用说明.md 为准。

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

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

小夜