DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

mingyuemiss /

mingyuemiss/dsh-memory

Verified

给 DSH 里的陪伴角色一条不会断的记忆线:近两天快速回忆、艾宾浩斯遗忘曲线、分类检索、分层压缩与 D 盘人生镜像。

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@bc856c6e

dsh-memory

给 DSH 里的陪伴角色一条不会断的记忆线。和 dsh-world 住在同一个世界目录里,共用她的日记、自述和人设;但它自己管记忆。

装上以后:

  • 近两天,一眼就想起来:最近两天的对话按日期、时间、说话人整理成一段,放进她的系统提示词。每次新会话开始、每次上下文被压缩之后,都会重新放回去——所以压缩完她不会「失忆」。
  • 七天以后,交给她自己决定:每天夜里把这一天的对话归纳成摘要和若干条「记忆原子」。超过 7 天、按艾宾浩斯曲线算出来已经模糊的记忆,交给 DeepSeek 自己判断:留下(记忆强度变大,更难忘)、合并(两条其实是一件事)、还是放下(退到「被遗忘的」,原文不删)。
  • 上下文装不下的,都在档案里:每一条原文按天存在 SQLite 里,同时导出成 markdown。窗口只是索引,不是上限;她可以用 memory_recall 按关键词或日期翻回任何一天。
  • 同步到 D:\DSH\大肥鱼的一生:近两天、长期记忆、遗忘曲线、每日摘要、每天原文,加上 dsh-world 写给她的日记、自述、人设,全部落成人类可读的文件,可以随时翻、随时备份。
  • 和 dsh-world 联动:读同一个 worlds/<worldId>,把她的日记带进提示词,把她的日记/我是谁/人设复制进人生文件夹;不改 dsh-world 的任何文件。

安装

前提:DSH 0.2.1-rc.2 / rc.3,并且已经安装 dsh-world(分层压缩复用它的 surface 压缩底座)。

dsh plugin --profile desktop add github:chenkezhen480/dsh-memory

或在 设置 → 插件 → 安装 里填 github:chenkezhen480/dsh-memory,装完重启 DSH。

仓库自带编译好的 lib/,不需要构建。装好后在 profile 的 cordis.patch.yml 里按 id 覆盖配置(见下面「配置」),重启生效。

开发:npm install --legacy-peer-deps;要跑 typecheck/build,还需要把 dsh-world 的 dsh-world-*.tgz 装进 devDependencies(它没有发布到 npm)。

遗忘曲线怎么算

保留概率 R = e^(-t/S):

  • t 是距上次想起(或被决定留下)的天数,S 是记忆强度(天)。
  • 新记忆的 S 由重要度决定,约 1.2–7 天。
  • 每被 memory_recall 想起一次,S = S × 1.55 + 0.5(间隔重复效应)。
  • 被决定「留下」时,S = max(S × 2.2, 4t, 30)。
  • 被 memory_pin 钉住的,S = 365。
  • 超过 reviewAfterDays(默认 7)天且 R < retentionThreshold(默认 0.35) 的记忆,才会被送去复盘。所以 7 天内永远不动,7 天后也不是「到期就删」,而是由模型一条条读、一条条决定。

分层压缩:遗忘也作用在上下文上

dsh-memory/compaction 替换原来的 @deepseek-ai/dsh-compaction-basic(复用 dsh-world 的压缩底座):

  • 到 thresholdRatio(默认 0.8,比原版 0.9 更早)触发压缩;
  • 摘要不再是「一段话概括全部」,而是三层:**【最近】最后几轮的具体进展、【重要】承诺/事实/决定/未完成的事、【背景】**更早的事一句话带过;
  • 寒暄、重复、情绪宣泄、已经解决的过程、工具调用过程,从上下文里忘掉,但原文仍在 档案/ 与 SQLite 里;
  • 压缩时会跳过插件注入的记忆块,不让旧记忆污染新摘要。

夜间折叠:每天回到低水位

每天 foldAt(默认 23:45,在 23:30 归纳之后),把超过 foldMinTokens(默认 6000)token 的会话整体压成一条分层摘要,第二天上下文从低水位开始,而不是等涨到 80% 才处理。

分类记忆与「说到就想起」

  • 每条记忆带 分类(关系/偏好/承诺/事实/事件/情绪/生活/工作)、实体(人名、地点、项目、账号)和 检索词。
  • memory_recall 支持按 category、entity 检索;返回结果按分类分组。
  • 当伙伴说的话里提到已知实体或检索词时,插件会自动把相关旧记忆抽成一小段(默认 ≤900 字)放进这一步;同一条内容 3 轮内不重复注入。原文始终留在本地,只有被提到时才检索出来。

配置

在 profile 的 cordis.patch.yml 里按 id 覆盖:

# 记忆线
- id: dsh-memory
  name: dsh-memory
  config:
    worldId: default
    companionName: 大肥鱼
    partnerName: 伙伴
    timeZone: Asia/Shanghai
    recentDays: 2              # 近几天原文进提示词
    reviewAfterDays: 7         # 几天后才进入遗忘曲线复盘
    retentionThreshold: 0.35   # 清晰度低于这个才复盘
    dailyAt: '23:30'           # 每天归纳 + 复盘的时间
    autoReview: true           # 夜里自动跑;false 就只能用 memory_review 手动触发
    fold: true                 # 开启夜间折叠
    foldAt: '23:45'            # 折叠时间(在归纳之后)
    foldMinTokens: 6000        # 小于这个 token 的会话不折叠
    mentionRecall: true        # 提到已知人/事时自动检索旧记忆
    mentionRecallChars: 900    # 自动检索注入的字数上限
    backfillCategories: true   # 给还没有分类的旧记忆补分类
    mirror: true
    mirrorDir: D:/DSH/大肥鱼的一生
    maxRecentChars: 2600       # 近两天段落预算(字符≈中文 token)
    maxLongTermChars: 1600
    messageChars: 160          # 单条消息在近两天里保留多少字
    captureAll: true           # 记录所有顶层会话;false 只记 agentPreset 匹配的
    backfill: true             # 第一次启动时回填宿主里的历史会话
    backfillDays: 60
    curatorProvider: ''        # 留空则用当前会话的模型
    curatorModel: ''

# 遗忘感知压缩后端(替换默认的 compaction-basic)
- id: compaction-basic
  name: dsh-memory/compaction
  config:
    thresholdRatio: 0.8
    maxTokens: 8192

她的记忆放在哪

  • <DSH_HOME>/worlds/<worldId>/memory/memory.sqlite — 原文、记忆、摘要、复盘记录
  • D:\DSH\大肥鱼的一生\ — 镜像:
路径 是什么
记忆/近两天.md 最近两天的对话
记忆/长期记忆.md 她保存下来的记忆,带清晰度和下次复盘时间
记忆/遗忘曲线.md 正在等她决定的、两周内会变模糊的、已经放下的
记忆/每日摘要/YYYY-MM-DD.md 每天夜里的归纳
档案/YYYY-MM-DD.md 每天完整原文
她的一生/ dsh-world 的日记、我是谁、人设、人生线副本

工具

她可以自己调用:memory_recall(按关键词/日期想起原文,并复习一次)、memory_remember(写进长期记忆)、memory_forget(放下一条)、memory_pin(钉住)、memory_status(查看记忆现状)、memory_review(立刻复盘一次)、memory_mirror(立刻同步 D 盘)。

注意

  • 需要 DSH 0.2.1-rc.2 / rc.3。插件只用宿主开放的扩展接口,不修改宿主。
  • 归纳和复盘要调模型,会产生少量 token;每天一次,catchUpDays 限制一次最多补几天。
  • 记忆库是 SQLite,WAL 模式;备份整个 worlds/<worldId>/memory 目录即可。
  • 原文只会「不再浮上来」,不会被删;memory_forget 也是。
—/ 5

No ratings yet

Verified DSH bundle

Commit bc856c6ea9f9

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout