dsh-sui(穗):三层记忆与可核对的人格

前言

在 DSH 里跑智能体,常见做法是往系统提示里塞「长期记忆」:字多了占上下文,字少了不够用;更重要的是,这些句子不会随复习变牢、也不会淡,更谈不上「这条信什么、证据在哪」。

「穗」(dsh-sui)是维护者 xiaoman-mai 发布在 DSH 插件生态里的一类记忆插件。它把跨会话信息拆成记录 / 记忆 / 感觉三层,用 SQLite 记账,用 ACT-R 思路算活跃度,用双提炼者(含七情六欲坐标)把关后才进人格;会话侧还提供约 30 个读写工具、每轮自动注入、以及侧栏人格面板。下文按「它是什么 → 怎么装 → 怎么用 → 注意什么」说明,事实均出自仓库 README 与 package.json(版本 0.1.0,许可证 MIT,要求 DSH >= 0.2.0)。

这是什么

一句话:给 DSH 挂一套有账本的长期记忆——发生过什么在「记录」,我信什么在「记忆」,滋味在「感觉」;性格、情绪、语气由上层演算,不单独落表。

层 回答什么 数据表(README 所列)
记录 发生过什么 facts
记忆 我信什么 memories + memory_facts
感觉 那是什么滋味 feelings + memory_feelings + feeling_hits

之上还有三项衍生结果(不算独立存储):性格(sui_character)、情绪(sui_mood)、语气(sui_voice)。

核心能力(已核实)

记账,而不是填空。

  • 每条记忆可挂原始记录(证据链),不是孤立一句断言。
  • 感觉需两个独立提炼者都挑中才进人格;README 强调旁听不能在同一上下文里自证盖章。
  • 活跃度按 ACT-R 基础激活计算,复习过的条目不易淡出。
  • 人格由多次「撞击」长出,不是静态标签列表。

工具面(README 分组摘要)。

  • 写:sui_fact、sui_memory、sui_witness、sui_supplement、sui_coord、sui_verify、sui_retract、sui_reword、sui_merge、sui_wish 等。
  • 读:sui_load(加载并记一笔)、sui_recall、sui_day、sui_mems、sui_dissent、sui_feelings、sui_persona、sui_character、sui_mood、sui_voice 等。
  • 回查:sui_quote——在要替别人转述前,把记忆/记录挂着的内容摊开;抄本不等于可核源。
  • 管:sui_snapshot、sui_snapshots、sui_diff、sui_rebuild、sui_backup。

自动行为(挂上会话后)。

  1. 每轮想起:约每分钟缓存「该想起的」与「此刻语气」,拼到 systemPrompt.context 末尾;用户话里双字能对上记忆字面时优先注入,否则取活跃度最高的几条(默认条数见调参表)。
  2. 自动落盘:上下文到 pressureMid 提醒该记,到 pressureHigh 自动把最近用户原话落成记录(只存原话)。
  3. 异议上桌:刷新时跑 dissent --brief,把「旁听挑过、一次没认领」的词带进注入,避免刺耳分歧躺在库里看不见。

侧栏面板:「穗」四页签——人格(七情+六欲柱状)、记忆、存档、参数。参数改 tools/sui/settings.json,约一分钟生效;衰减类改完需 sui_rebuild。

安装与启用

README 未给出 dsh plugin add … 一类命令;安装路径是:包自带 bundle patch,由 Loader 自动插入。

在 profile 的 cordis.patch.yml 里不要再写同 id 的 insert,否则会 duplicate id。若要改配置,用同 id 的顶行覆盖,例如:

- id: sui
  name: dsh-sui
  config:
    workspace: 'D:/Users/张锴/Documents/deepseek-harness/default-workspace'
    python: 'C:/Users/张锴/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/python/python.exe'
    presets:
      - daughter-agent
      - standard
    scopeWorkspaces:
      - 'D:/Users/张锴/Documents/deepseek-harness/default-workspace'
配置项 含义
workspace 工作区根;库文件在 <workspace>/tools/sui/sui.db
python 执行 sui.py 的解释器;不填则读环境变量 DSH_sui_PYTHON
presets 仅这些预设会话自动想起;空则 README 写明默认只认 daughter-agent
scopeWorkspaces 仅这些工作区生效;空则不限

改配置后需重启宿主才生效。

安装前建议:插件以当前 DSH 进程权限运行,应自行阅读 源码仓库 与 MIT 许可证;社区目录站点与 DeepSeek / 幻方无官方从属关系,并非「官方应用商店」。

典型用法

1、日常读写与加载

模型或用户通过工具写入记录/记忆;每轮由插件调用 sui_load 逻辑注入上下文。需要按词翻档时用 sui_recall,看近期记忆用 sui_mems。

对外转述前先 sui_quote,核对源是否可达。README 注明:写记录时若文本像转述(含「说/告诉/问」等)却未带 quote,写入结果会提示日后回查只能回到自己的概括。

2、旁听对账(感觉进人格的前置)

旁听流程 README 写得很具体,核心是另一上下文、最好另一模型挑词,并带七情六欲坐标:

  1. sui export --out pending.txt 导出待对账原文(含证据,不带自己的词)。
  2. 交给 DSH 子代理等另一 provider/model,只给原文。
  3. 要求对方给出坐标(七情一格 + 六欲一条)。
  4. 回填:sui witness <id> --feel 词1,词2 --coords "词1:喜/耳,词2:思/生" --by "旁听:<模型名>",--by 必填。
  5. 对不上再考虑真同义才 sui_merge;不要为凑交集而归并。
  6. 查账:sui_mems 看「旁听来自 xxx」;空或 same-context 视为漏洞。

3、面板与调参

侧栏调 pressureMid / pressureHigh、recallItems、voiceItems、maxChars 等(完整默认值见下表)。衰减相关改动后执行 sui_rebuild。

名字 默认 意思
pressureMid / pressureHigh 55 / 75 上下文到几成提醒 / 自动落盘
recallItems / voiceItems 3 / 3 每轮注入记忆条数 / 语气词数
maxChars 700 注入字数上限
autoRecordBatch 6 一次最多自动落几条
decayThreshold 0.2 活跃度低于则淡出
loadWindowDays 30 检索窗口天数
decayPower 0.5 ACT-R 的 d

4、自测(仓库内命令)

# 数据层:临时库,不碰 sui.db
python tools/sui/test_sui.py
# 插件层:工具名 ↔ 命令行契约
node dsh-sui/test/contract.mjs

适用场景与限制

适合谁

  • 需要在 DSH 多轮会话里保留「有证据、可淡入淡出、可异议」记忆,而不是静态 prompt 块;
  • 愿意维护旁听流程(换模型)与 SQLite 库备份;
  • 使用 Web 侧栏面板观察人格/记忆曲线。

README 列出的已知限制(节选)

  • 旁听者与主会话为同一模型时,长期偏好难以完全挡住。
  • 一个库对应一张脸;混写不同 owner 的记录会搅乱人格。
  • 相关性仅靠字面重叠弱校验,不相干记录仍要人看。
  • DSH 工具全局注册,memoryGate 只能让未绑定会话调用时返回提示,工具名仍在列表。
  • 面板默认库须显式配置,否则可能误连空 sui.db 显示全 0。

结尾

穗把 DSH 的长期记忆从「提示词里的死句子」改成「记录—记忆—感觉」三层账,并靠 ACT-R 活跃度、双提炼旁听和每轮注入,让跨会话行为更像「记得住、会对账、敢留异议」。上手路径是:通过 bundle 启用 → 配好 workspace 与 python → 写记录/记忆 → 旁听见证 → 看面板与 sui_dissent 查漏洞。

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

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

小夜