前言¶
在 DeepSeek Harness(DSH)里给智能体挂记忆插件,常见做法是「能存、能删」:要么条目越积越多,挤占系统提示词;要么按时间一刀切过期,重要信息和随口一句一起被清掉。下面介绍社区插件 dsh-decay-memory(维护者 ZyxQl-Ala),用强度与半衰期模拟「被提起就亮、久不提就淡、极弱才删」,并支持永久 pin,在条数上限内按最弱淘汰而非单纯按时间。
这是什么¶
dsh-decay-memory 是 DSH 生态下的「记忆」类插件:每条记忆有动态强度,对话或工具命中时会「点亮」加强,长期不被提起则按遗忘曲线衰减;正文可在渐淡阶段缩短并标记,低于删除阈值才真正移除。📌 固定条目强度恒为 1,不参与淡忘。数据默认落在本地 $DSH_HOME/decay-memory/memory.json,无网络、无遥测。
灵感在 README 中说明来自「小肥鱼大脑」示意图:重要记忆在中心、边缘慢慢淡掉,200 天内被提起可再次唤醒(默认半衰期即 200 天)。
与普通记忆做法的差异¶
普通插件往往只有存和删。本插件在中间增加「渐淡」层,并用公式统一描述强度随时间的变化:
强度 = w × 0.5 ^ (距上次提起的天数 / 半衰期)
- 提起 = 点亮:
memory_search、memory_add写入相同内容、或手动memory_touch时,强度 +0.4(封顶 1)。 - 不提 = 淡忘:强度低于
fadeBelow时正文按比例缩短并标记「(记忆渐淡)」;低于dropBelow才删除。 - 📌 pin:永久记忆不参与衰减。
- 条数上限:超过
maxEntries时淘汰最弱的一条,而不是最旧的一条。
核心功能¶
注入与工具¶
每轮对话会把排序靠前的记忆注入系统提示词,受 promptMaxEntries、promptMaxChars 等配置约束。
| 工具 | 作用 |
|---|---|
memory_add |
记一件事;相同内容会重新点亮,可选 pinned:true 永久保留 |
memory_search |
检索记忆(强度 + 文字匹配),命中会点亮 |
memory_touch |
手动点亮某条(对话里再次提到时用) |
memory_forget |
真正删除某条(📌 需先取消 pin) |
memory_pin |
设为或取消 📌 永久记忆 |
memory_stats |
查看条数、📌 数、最强/最弱几条 |
配置项¶
可在配置或设置页中调整(字段以 README 为准):
{
"halfLifeDays": 200, // 半衰期(天);调小 = 忘得更快
"fadeBelow": 0.5, // 低于这个强度开始「渐淡」
"dropBelow": 0.06, // 低于这个强度真正删除
"maxEntries": 24, // 最多保留多少条(按最弱淘汰)
"promptMaxEntries": 12, // 每轮最多注入几条
"promptMaxChars": 2000, // 注入正文上限
"promptEnabled": true,
"stateFile": "" // 默认 $DSH_HOME/decay-memory/memory.json
}
存储与写入¶
默认状态文件为 $DSH_HOME/decay-memory/memory.json。写入采用「临时文件 + rename」的原子替换,避免写坏文件。
设置页¶
插件提供零构建 Web 设置页,由 DSH host 直接提供(不依赖 client 打包)。访问路径形如:
<你的 DSH 地址>/decay-memory
例如 http://127.0.0.1:19387/decay-memory(端口以 DSH 实际启动提示为准)。页面可改半衰期与阈值、条数与注入上限,查看每条记忆的强度进度条、上次提起时间与提起次数,并支持一键点亮、📌、删除或手动新增;改动即时写回上述 JSON 文件。
package.json 说明还会在 DSH Settings 中注入客户端 UI(@deepseek-ai/dsh-client-ui-settings)。同源 API(需 DSH 登录态)包括:
GET /decay-memory/api/state
POST /decay-memory/api/config { halfLifeDays, fadeBelow, ... }
POST /decay-memory/api/action { op: "add" | "touch" | "pin" | "forget", ... }
安装与启用¶
官方安装命令如下(<profile> 换成你使用的 DSH profile):
dsh plugin --profile <profile> add dsh-decay-memory
本地开发时可从目录加载:
dsh plugin --profile desktop add file:D:/path/to/dsh-decay-memory
package.json 声明依赖 dsh >=0.2.1-rc.1 <0.3.0-0、Node >=20。安装前请对照当前 DSH 版本与插件仓库源码、MIT 许可证。
典型用法¶
- 安装并重启或 reload 对应 profile 的 DSH 进程,确认记忆工具出现在智能体可用工具列表中。
- 用
memory_add写入需要长期跟踪的事实;对必须保留的条目使用pinned:true或后续memory_pin。 - 对话中让模型通过
memory_search检索上下文;若用户口头再次提到某条但未命中检索,可用memory_touch手动点亮。 - 打开
/decay-memory设置页观察强度与渐淡状态,按需调halfLifeDays、fadeBelow、dropBelow、maxEntries。 - 用
memory_stats快速查看当前池子里最强、最弱条目,判断是否需要 pin 或 forget。
适用场景与注意¶
适合希望控制提示词占用、又不愿「全删或全留」的 DSH 智能体开发者:项目偏好、用户称呼、阶段性任务等可随使用频率自然升降权,核心事实可 pin。
务必注意:插件与 DSH 进程同权限运行,会读写 $DSH_HOME 下状态文件;安装前应自行审阅 GitHub 仓库 源码与 MIT 许可证。社区目录 skillhub.cn 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式,本插件是社区记忆方案之一,并非官方内置能力。
结尾¶
dsh-decay-memory 用半衰期、渐淡与按弱淘汰,把「会淡忘的记忆」做成可配置、可观测的本地状态;配合工具 API 与 /decay-memory 设置页,便于在 DSH 里长期跑 agent 时平衡上下文长度与信息保留。