🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

记忆长线 mingyuemiss/dsh-memory

DeepSeek Harness
mingyuemiss8 天前有提交已提供中文文档扫描:含敏感能力

为陪伴角色保留跨会话不中断的长期记忆

29.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mingyuemiss/dsh-memory
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:仅索引
是什么[目录]—
dsh 原生插件 · chat
暂无时间戳·判据 →
装得上吗[实装验证]—
本站尚未做安装检查
暂无时间戳·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]✓
活跃:最近一次提交在 8 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 13 处,展示前 13 条)
  • 读取本地文件
    lib/worldLink.js:17
    return existsSync(paths.dir);
  • 读取本地文件
    lib/worldLink.js:21
    return existsSync(file) ? readFileSync(file, 'utf8').slice(0, limit) : '';
  • 读取本地文件
    lib/worldLink.js:21
    return existsSync(file) ? readFileSync(file, 'utf8').slice(0, limit) : '';
  • 读取本地文件
    lib/worldLink.js:35
    if (existsSync(paths.diaryDir)) {
  • 读取本地文件
    lib/worldLink.js:36
    for (const name of readdirSync(paths.diaryDir).filter(file => file.endsWith('.md')).sort().reverse().slice(0, 30)) {
  • 读取本地文件
    lib/mirror.js:10
    if (existsSync(file)) {
  • 读取本地文件
    lib/mirror.js:11
    const previous = readFileSync(file, 'utf8');
  • 写入本地文件
    lib/mirror.js:15
    mkdirSync(dirname(file), { recursive: true });
  • 写入本地文件
    lib/mirror.js:17
    writeFileSync(temporary, content, 'utf8');
  • 写入本地文件
    lib/mirror.js:18
    renameSync(temporary, file);
  • 写入本地文件
    lib/mirror.js:153
    mkdirSync(root, { recursive: true });
  • 读取本地文件
    lib/mirror.js:177
    for (const entry of readdirSync(dir, { withFileTypes: true })) {
  • 写入本地文件
    lib/store.js:29
    mkdirSync(dirname(file), { recursive: true, mode: 0o700 });
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-loop@deepseek-ai/dsh-compaction@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-llm@deepseek-ai/dsh-scope@deepseek-ai/dsh-session@deepseek-ai/dsh-session-persistence@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools@deepseek-ai/schemastery
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

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

README

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

为陪伴角色保留跨会话不中断的长期记忆

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部