前言¶
在 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)。
- 目录页:skillhub.cn/plugins/xiaoman-mai/dsh-sui
- 源码:github.com/xiaoman-mai/dsh-sui
- 设计细节:
tools/sui/README.md(三层规矩与理论依据,在仓库内)
核心能力(已核实)¶
记账,而不是填空。
- 每条记忆可挂原始记录(证据链),不是孤立一句断言。
- 感觉需两个独立提炼者都挑中才进人格;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。
自动行为(挂上会话后)。
- 每轮想起:约每分钟缓存「该想起的」与「此刻语气」,拼到
systemPrompt.context末尾;用户话里双字能对上记忆字面时优先注入,否则取活跃度最高的几条(默认条数见调参表)。 - 自动落盘:上下文到
pressureMid提醒该记,到pressureHigh自动把最近用户原话落成记录(只存原话)。 - 异议上桌:刷新时跑
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 写得很具体,核心是另一上下文、最好另一模型挑词,并带七情六欲坐标:
sui export --out pending.txt导出待对账原文(含证据,不带自己的词)。- 交给 DSH 子代理等另一
provider/model,只给原文。 - 要求对方给出坐标(七情一格 + 六欲一条)。
- 回填:
sui witness <id> --feel 词1,词2 --coords "词1:喜/耳,词2:思/生" --by "旁听:<模型名>",--by必填。 - 对不上再考虑真同义才
sui_merge;不要为凑交集而归并。 - 查账:
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 查漏洞。