前言¶
在 DeepSeek Harness(DSH)里做长期对话或 Agent 开发时,模型默认只看见当前上下文窗口内的内容。会话一关,未经显式写入的偏好、约定和已确认事实就容易丢失。有人把关键信息写进系统提示或外部笔记,但那样既不便于按话题更新,也难在合适时机自动带入模型请求。
下面介绍社区插件 dsh-fount-memory(维护者 win10ogod,分类:记忆)。它参考 Fount 角色的长短期记忆设计,在正常对话回合内工作:在模型请求前按条件注入命名事实记忆,默认不自动灌入完整对话轨迹,也不额外开启反思、dream 或自主 followup/steer 轮次。存储与检索都在本机 SQLite 完成,不为此再调模型。
这是什么¶
dsh-fount-memory 是面向 DSH 的持久记忆插件,当前 package 版本为 0.2.2(MIT)。开发时针对 DSH 0.1.7-rc.2、0.2.0-rc.2 与 0.2.1-alpha.1 的插件与 format v4 消息接口。实现思路部分参考 理华角色包(Rika) 的命名长期记忆、修订追溯与短期片段设计;触发条件在此改为结构化 JSON,便于在 DSH 插件里校验,不是 Fount 原角色记忆数据的直接导入。
插件以当前 DSH 进程权限运行,安装前建议自行查看 GitHub 仓库 源码与许可证。
核心功能¶
长期记忆:命名事实与触发条件¶
长期记忆以名称管理。同名再次写入会更新内容,旧版与来源上下文留在修订历史;删除时历史一并删除。模型请求前,符合触发条件的命名事实会被带入上下文。
触发条件支持:任一关键词、全部关键词、指定月日。README 示例:
{
"name": "使用者生日",
"content": "使用者生日為 7 月 17 日。",
"trigger": { "any": ["生日", "birthday"], "onDates": ["07-17"] }
}
短期封存¶
插件会保留最近 10 则非空白文字消息及其来源、会话 ID、轮次与记录时间。DSH 的 completed 只表示回合结束,不表示任务已成功,因此这些封存是未验证的历史,不是成功任务示范。空白结尾、未完成待办、中止与失败的回合不会新增封存。对话片段目前只记录文字;非文字附件仍在 DSH 原始会话中。
召回策略与 recallCount¶
配置项 recallCount 默认为 0。在此默认值下:
- 命名事实的自动召回不受影响。
- 封存片段仅当模型通过
fount_memory_search并设置includeEpisodes: true时才会被明确检索;一般搜索默认只返回命名事实。
若将 recallCount 设为正整数,会启用旧式原始对话召回(按词汇、时间线索与衰减选取片段,并略过同会话 20 分钟内的片段)。原始轨迹可能含未完成操作,容易成为模型模仿的上下文;README 建议一般开发 Agent 保持为 0。
四个模型工具¶
| 工具 | 用途 |
|---|---|
fount_memory_remember |
记下经确认的事实;更正同一事项时沿用同一名称 |
fount_memory_search |
搜索记忆;需查封存历史时使用 includeEpisodes: true |
fount_memory_context |
查看来源与旧版修订 |
fount_memory_forget |
遗忘:先用 search 确认范围,再用 kind: all 同时删除命名记忆、历史版本及包含指定字符串的对话片段 |
工具不会替使用者猜测事实;子代理轮次不会自动封存。DSH 原始会话日志仍由 DSH 自行管理。
明确不做的事¶
插件不建立反思或 dream 轮次,不调用 agent.followup()、agent.steer(),也不在空闲时恢复会话。套件升级本身不删除既有数据;停用插件也不删除数据库。
安装与启用¶
在 DSH 主机环境安装到所需 profile(示例为 web):
dsh plugin --profile web add github:win10ogod/dsh-fount-memory
dsh --profile web --dump-config
dsh plugin 会安装包并把 bundle 加入 profile;--dump-config 输出中应出现 fount-memory 条目。若 DSH 已在运行,需重启后再用。
运行环境要求 Node.js >= 22.13.0(见 package.json engines)。
配置示例¶
- id: fount-memory
name: dsh-fount-memory
config:
namespace: default
scope: workspace
recallCount: 0
relevanceThreshold: 5
sameSessionCooldownMinutes: 20
- 默认按工作区分开数据库,路径为
$DSH_HOME/storages/fount-memory;未设置DSH_HOME时使用用户家目录下.dsh/storages/fount-memory。 scope: global可使同一namespace跨工作区共用数据。dataDir可指定数据库目录。
典型用法¶
- 写入事实:在对话中让模型在确认信息后调用
fount_memory_remember,带上name、content与可选trigger(结构见上文 JSON 示例)。 - 查询与溯源:用
fount_memory_search查找;需要修订历史或来源时用fount_memory_context。 - 按主题遗忘:用户要求忘记某主题时,先
search确认范围,再forget且kind: all,避免只删表面条目而留下片段或历史。 - 开发 Agent 默认:保持
recallCount: 0,仅在需要审计未验证对话片段时,通过 search 的includeEpisodes: true主动查看封存,而不是让旧式原始轨迹自动进入每次请求。
适用场景与注意¶
适合:需要在多轮 DSH 对话中稳定记住用户偏好、项目约定、日期类事实,且希望召回发生在正常回合内、不增加自主 Agent 轮次的场景;希望记忆留在本机、不依赖额外 LLM 调用的部署。
注意:
- 插件与 DSH 同权限访问本机存储;敏感事实写入前应评估磁盘与备份策略。
- 短期封存与可选的原始召回可能包含失败或未完成的操作痕迹,不宜当作「已验证的最佳实践」自动喂给模型。
- 社区目录 SkillHub 插件页 与 GitHub 为独立信息源,与 DeepSeek / 幻方无官方从属关系;版本与 peer 依赖以仓库 README 与
package.json为准。
结尾¶
dsh-fount-memory 把 Fount 思路下的命名长期记忆、修订追溯与可控短期封存接到 DSH format v4 插件体系里:默认只做回合内事实召回,不抢会话主导权。若你在 Harness 里做需要「记住名字、日期和约定」的 Agent,可按上文命令安装,并把 recallCount 保持在 0,用四个 memory 工具显式读写。
- 目录页:https://www.skillhub.cn/plugins/win10ogod/dsh-fount-memory
- 源码与说明:https://github.com/win10ogod/dsh-fount-memory