dsh-seed:从经历长出来的人格与记忆

前言

DeepSeek Harness(DSH)新开一个会话就从头开始:你说过的规矩、定过的边界、踩过的坑,下一轮往往全没了。人设卡能影响「它像不像一个人」,但解决不了「它还记不记得你」;常见的记忆插件能留住事实,却未必因此形成稳定的人格表述。

下面介绍社区插件 dsh-seed(维护者 990718xyh),它在 DSH 里同时做两件事:记住发生过什么,再从经历里更新「我是谁」。插件归类为「记忆」,当前 GitHub 星标为 0;生态上 DSH 奉行「一切皆插件」,目录站 SkillHub 插件页 与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-seed 的定位是:给 DSH 从零长出来的人格——「A persona that grows from experience: remembers what happened, becomes someone from it.」

它不预设完整人设,靠轮次内的抽取、治理、反思与自述,把关于你的称呼、边界和禁忌写进上下文,并在证据足够时修订自述版本。实现上仅使用 node: 内置模块,无原生扩展、无需构建;许可证为 MIT,package 版本在资料中为 0.7.2,要求 DSH ≥ 0.2.0。

装上之后多出什么

新会话不用重讲。 每轮开头会把你们谈定的称呼、边界、踩过的坑重新注入上下文。例如你说过「周日别找我」,下一轮它会自行带上这条约定。

人格会随经历变化。 攒够未处理的条目会触发反思,抽出带事件 id 的判断;再攒够判断会生成「我是谁」的候选,经审查后才落盘,证据不足则驳回。

过程可观测。 配置面板后可在 /persona 查看九层各有多少条、自述当前第几版、本轮向上下文注入的字数等。

每轮在跑什么

一轮对话结束后,插件在后台大致按下列链路运行(抽取与提炼走小模型;失败只写审计,不打断对话):

轮末
 │
 ├─ 抽取:这一轮里有什么值得留
 │
 ├─ 治理:新来的跟旧的什么关系
 │     ADD / UPDATE / DELETE / NOOP / DEFER
 │
 ├─ 攒够 5 条没嚼过的 → 反思:抽出判断,每条挂事件 id
 │
 └─ 攒够判断 → 自述:出候选 → 审查 → 落盘或驳回

资料中强调的设计约束包括:

  • 事实不物理删除:说错了标 invalid、留失效时间,便于事后追溯。
  • 记忆强度:被检索一次 +0.05(封顶 1.0),未使用则每天 ×0.998(下限 0.1);称呼、约定、禁忌钉住,不衰减且每轮固定注入。
  • 反思必须带证据:每条判断挂真实事件 id,挂不上则丢弃。
  • 自述有闸门:改「我是谁」先出 proposal,review 通过才落盘。
  • 检索:Unicode 分词(CJK bigram / 其他语言整词 / NFKC),idf 加权与 BM25 长度归一化;匹配到本轮最高分 85% 的条目不参与时间衰减。
  • 只收三类关于你的事:怎么称呼你、谈定的边界、明确禁止的。

安装与启用

在 DSH「Add plugin」向导里搜索 dsh-seed,或使用官方 CLI(命令以 README 为准):

# 浏览器版
dsh plugin --profile web add github:990718xyh/dsh-seed

# 桌面版
dsh plugin --profile desktop add github:990718xyh/dsh-seed

装完重启 DSH。不要急着看面板——先聊两句;第一轮结束后它才开始记。

卸载示例(桌面 profile):

dsh plugin --profile desktop remove dsh-seed

插件以当前 DSH 进程的权限运行;安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的环境与安全要求。

配置

在 ~/.dsh/profiles/<profile>/cordis.patch.yml 中插入 persona 段(示例来自 README):

- insert:
    - id: persona
      name: 'dsh-seed'
      config:
        id: seed
        dir: ~/.dsh/persona
        heartbeat: { enabled: true, everyMinutes: 30 }
        study: { enabled: false }
        panel: { enabled: true, route: /persona, port: 8787 }

说明要点:

  • id 决定数据目录名(见下文「数据落盘」)。
  • llm 不写则跟随当前选中的模型;写死模型可能在换模型后出现 no API key,抽取链会静默停止。
  • study(自学)默认关闭;开启需要联网与 API 费用,按需再开。
  • 面板默认端口 8787;被占用时改 panel.port,否则面板起不来,仅在审计里留下 panel-error。

数据落盘

数据在 ~/.dsh/persona/<id>/,纯文本可直接查看:

journal/<host>.jsonl   所有写入,只追加
snapshot/base.json     压实后的基线
heartbeat.json         心跳状态

典型用法

  1. 按上文命令安装并重启 DSH。
  2. 先进行至少一轮正常对话,让轮末抽取与治理跑起来。
  3. 在后续新会话中验证:称呼、边界、禁忌是否自动出现在上下文,无需重复口述。
  4. 需要可视化时启用 panel,访问配置的 route(默认 /persona)查看层级与自述版本。
  5. 若希望插件联网自学,再将 study.enabled 设为 true 并确认 API 与费用可接受。

适用场景与注意

适合:长期用同一 DSH profile 协作、希望跨会话保留约定与禁忌,并让人格自述随真实对话缓慢演进,而不是每轮重讲规则或只靠静态人设卡。

注意:

  • 记忆范围刻意收窄为「称呼 / 边界 / 禁止」,不是通用知识库;什么都记等于什么都抓不住。
  • 反思与自述依赖小模型与证据链;异常时查审计,而非假设已 silently 写入人格。
  • 面板与 heartbeat 会占用本地端口与定时任务;端口冲突务必改配置。
  • 社区目录与 GitHub 为独立信息源;版本、星标与行为以你安装时的包与 README 为准。

结尾

dsh-seed 把「记住发生过什么」和「从经历里长出是谁」放在同一条轮末流水线里:治理、反思、自述闸门与可读的落盘目录,面向 DSH 开发者做可核对、可运维的长期人格记忆。

  • 目录页:https://www.skillhub.cn/plugins/990718xyh/dsh-seed
  • 源码与文档:https://github.com/990718xyh/dsh-seed
羽毛球分组比赛记分
小程序二维码

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

小夜