为陪伴角色保留跨会话不中断的长期记忆
29.4/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/11/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add mingyuemiss/dsh-memory该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
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 也是。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
mingyuemiss/dsh-memory
为陪伴角色保留跨会话不中断的长期记忆
相关插件 · 对话 / 记忆
上下文中枢oceanbase/powercontext
上下文跟着工作走 —— 跨会话、跨智能体、跨人。
★ 1,489已汉化DSH
73.1
智能体记忆库plastic-labs/honcho
Honcho 是记忆基础设施,用来构建有状态的智能体。这些智能体能理解不断变化的人、智能体、群组、项目和想法。
★ 7,918已汉化DSH
71.7
长程智能体控制面loopx-project/loopx
给 Agent 一个目标,让工作持续向前。
★ 6,358已汉化DSH
71.3
智能体上下文数据库volcengine/OpenViking
给 AI 智能体用的上下文数据库
★ 41,453已汉化DSH
71.3
长效机器人团队Fei2411/DS-Bot
Download DS Bot for Windows 10/11 64-bit / 下载 Windows…
★ 5,293已汉化DSH
71.2
可携带记忆层EverMind-AI/EverOS
为什么选择 EverOS
★ 13,797已汉化DSH
71.1
这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。