dsh-decay-memory:会淡忘的 DSH 智能体记忆

前言

在 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 许可证。

典型用法

  1. 安装并重启或 reload 对应 profile 的 DSH 进程,确认记忆工具出现在智能体可用工具列表中。
  2. 用 memory_add 写入需要长期跟踪的事实;对必须保留的条目使用 pinned:true 或后续 memory_pin。
  3. 对话中让模型通过 memory_search 检索上下文;若用户口头再次提到某条但未命中检索,可用 memory_touch 手动点亮。
  4. 打开 /decay-memory 设置页观察强度与渐淡状态,按需调 halfLifeDays、fadeBelow、dropBelow、maxEntries。
  5. 用 memory_stats 快速查看当前池子里最强、最弱条目,判断是否需要 pin 或 forget。

适用场景与注意

适合希望控制提示词占用、又不愿「全删或全留」的 DSH 智能体开发者:项目偏好、用户称呼、阶段性任务等可随使用频率自然升降权,核心事实可 pin。

务必注意:插件与 DSH 进程同权限运行,会读写 $DSH_HOME 下状态文件;安装前应自行审阅 GitHub 仓库 源码与 MIT 许可证。社区目录 skillhub.cn 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 本身遵循「一切皆插件」的扩展方式,本插件是社区记忆方案之一,并非官方内置能力。

结尾

dsh-decay-memory 用半衰期、渐淡与按弱淘汰,把「会淡忘的记忆」做成可配置、可观测的本地状态;配合工具 API 与 /decay-memory 设置页,便于在 DSH 里长期跑 agent 时平衡上下文长度与信息保留。

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

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

小夜