← 返回列表
未验证
给 Agent 记忆设保质期,到点自动淘汰并审计
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/25 · 已提供中文文档
AI 代理的遗忘引擎——记忆 TTL、衰减、淘汰、审计。记忆编程的反面。DSH 插件 + 本地技能 + CLI。
综合分
28.5
GitHub 分
28.5
用户评分
—
★ Stars
1
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/XIAOke8698/dsh-memory-forget.git数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-memory-forget — AI Agent 遗忘引擎
English ·
记住更少,想得更清。
AI Agent 遗忘引擎:记忆 TTL、衰减、淘汰、审计。记忆编程的反面。零依赖核心,MIT 协议。
记忆编程席卷 Agent 生态(Mem0、Letta、Engram 都在教 Agent 记住一切),dsh-memory-forget 做的是它的反面——把"遗忘"从意外变成设计:每条记忆都有保质期、到点即死、全程审计、注入有硬预算、拔得干净。
一句话差异:记忆引擎回答"怎么存得好、找得准";dsh-memory-forget 回答"什么时候该忘、哪条还可信、放多少进上下文、里面到底有什么"。
这不是抬杠,是有依据的:Agent 用得越久越笨,记忆污染是主因(CUHK & ZJU);记忆投毒是真实攻击类(单封邮件持久投毒、隐形记忆注入)。遗忘不是记忆的故障,是记忆的治理。
安装(DSH 插件 · 官方 bundle)
dsh plugin --profile add @xiaoke8698/dsh-memory-forget
卸载:dsh plugin --profile remove @xiaoke8698/dsh-memory-forget(记忆留在 workspace 的 .dsh-memory-forget/store.json,删除该目录即彻底清空)。
开发者把引擎当库用:npm install @xiaoke8698/dsh-memory-forget(Node >= 20,零依赖,ESM)。
使用
import { AmnesiaEngine } from '@xiaoke8698/dsh-memory-forget'
const memory = new AmnesiaEngine({ restorable: true })
// 记住(带保质期,插上记忆总线)
const v = memory.plug({
content: '验证饮品是 lapsang',
ttlMs: 60_000,
kind: 'preference',
tags: ['validation'],
})
// 健康度:活跃/陈旧/已遗忘 + token 占用
console.log(memory.status())
// 想起即续命(use it or lose it)
memory.recall('lapsang')
// 拔下(物理删除 + 审计;restorable 时审计保留副本)
memory.unplug({ id: v.id })
// 恢复(restorable 模式):新 id、新 TTL、审计记 restored
const back = memory.restore(v.id)
// 预算内注入选择:死记忆(stale/forgotten)绝不入选
const sel = memory.selectForInjection(2000)
// 干跑预览(不 touch,token 对账用)
console.log(memory.preview())
持久化:引擎是内存态,提供 StoreAdapter 即可落盘(示例见英文版 README)。
API
| 方法 | 含义 |
|---|---|
| plug(input) | 记住(TTL / pin / scope / tags) |
| unplug(filter) | 遗忘(按 id / 关键词 / 标签)——物理删除 + 审计 |
| touch(id) | 访问:重置衰减时钟(滑动续期) |
| recall(query?) | 想起:匹配并续命 |
| restore(id) | 从审计恢复(restorable 模式) |
| selectForInjection(budget) | 预算内选择;死记忆排除 |
| preview() | 注入干跑预览(token 账本,不 touch) |
| status() | 计数 + token 占用 + 下次过期 + 最近审计 |
| auditView(limit) | 遗忘/恢复轨迹(只留哈希) |
| sweep() | 结算并清除过期记忆(回合末调用) |
特性
| 特性 | 说明 |
|---|---|
| 记忆总线 · 可插拔 | 记住 = 插上;遗忘 = 拔下——物理删除、无幽灵引用 |
| 带保质期 | TTL + 艾宾浩斯衰减曲线:活跃 → 陈旧 → 遗忘 |
| 重要性:声明或挣得 | pin: true 永不忘;或靠使用挣得——滑动续期:持续使用不过期,闲置满一个 TTL 即亡 |
| 可恢复 | restore(id) 把拔下的记忆原样插回;隐私模式可重新 remember(审计哈希可对照) |
| 审计只留哈希 | 谁/何时/为什么被忘或恢复全留痕;内容默认物理删除 |
| 注入硬预算 | 每步 ≤ maxInjectedTokens(默认 2000);死记忆绝不注入;超限少选不截断 |
| token 账本 | status() 暴露注入账本;preview() 干跑不生效 |
| 轻量化 | 零 embedding、零 LLM 抽取/改写、零服务端进程 |
| 隐私优先 | 默认物理删除;可恢复与删得干净是显式取舍 |
| 多 Agent 适配 | scope 三档;子 Agent 消亡自动拔出临时记忆,默认不继承 |
测评:方法、现状与诚实声明
方法(三臂对照,同一模型同一任务集,只切换遗忘策略):A 无记忆(每任务冷启动)/ B 全记忆(写入即永久)/ C Amnesia(带 TTL + 衰减)。公平性关键:B 与 C 共用同一存储与检索,只开关遗忘策略——记忆厂商无法"关掉自己的记忆"做对照。指标:累计上下文 token、任务成功率、陈旧错误率(事实中途变更后各臂使用旧事实的比例)、步数/耗时。任务集:记忆有帮助组 / 记忆有害组(事实变更、过期约束、投毒)/ 混合组。完整设计见 docs/design.md §11。
现状:尚无对比结果(M3 未跑)。 已验证的是机制能工作(过期/恢复/审计/预算注入/滑动续期),不是遗忘能提升效果。在 M3 出数据之前,效果主张基于引用研究,不是本包实测——一旦基准跑完,我们会连同方法论和任务集一起公开数据。
路线图
v0.2.1 包含核心引擎 + DSH 官方 bundle(AmnesiaEngine + Cordis 插件适配层)。未包含:CLI、skill、MCP server、Client UI、基准结果。
- [x] M0 设计定稿
- [x] M1 动态插件验证(DSH 会话级)
- [x] M1.1 核心引擎 [x] M1.2 服务与存储 [x] M1.3 工具面(7 工具)
- [x] M1.4 生命周期钩子 [x] M1.5 注入与预算 [ ] M1.6 验收(子 Agent 自动拔出待实测)
- [ ] M2 Client UI [ ] M3 三臂基准 [ ] M4 DSH 官方 bundle(已发 0.2.1) [ ] M4b skill + 本地 CLI [ ] M5 增值 [ ] M6 MCP server(远期)
- [ ] 开放问题:Q1 遗忘激进度 / Q2 自动抽取 / Q3 语义检索 / Q4 目标用户 / Q5 基准任务集 / Q6 分发形态
其他 Agent 整合
DSH 用户——经官方 bundle 机制安装(见上文"安装";dsh.bundle + cordis.patch.yml,见 DSH 文档 docs/user/develop/basic/publish.md)。
规划中(M4b):skill + 本地 CLI(SKILL.md 复制即用,零服务端)。远期(M6):MCP server(需服务端托管,不做承诺)。当前 npm 包 = 核心引擎 + DSH 官方 bundle;DSH 动态插件是会话级验证形态。
文档与相关研究
- 完整设计文档:docs/design.md(§13 架构总览、§14 最小真实验证实录)
- 生态依据:DSH 有 compaction(压缩)但无删除/过期/淘汰语义;记忆系统仅第三方 MCP 示例(默认关闭)
- 记忆污染使 Agent 变笨(CUHK & ZJU) · 记忆治理:MemArchitect · 记忆投毒:MemGhost / MemIncept扫码进群