dsh-memory-forget — AI 智能体的遗忘引擎

现有的记忆插件(如 Mem0、Letta)倾向于让智能体记住一切。dsh-memory-forget 则执行相反的操作:将“遗忘”从故障变为设计。它为 AI 智能体提供了管理记忆生命周期的机制,包括 TTL、衰减、驱逐和审计。

定位

这是一个面向 AI 智能体的遗忘引擎,核心价值在于回答“何时遗忘”、“哪些记忆仍值得信任”、“注入多少上下文”以及“当前上下文包含什么”。该插件由 XIAOke8698 维护,采用 MIT 许可证,核心零依赖。

核心功能

  • 可插拔内存总线:记忆即插入,遗忘即拔出。遗忘是协议操作,而非故障。
  • 保质期与衰减:每个记忆都有 TTL 和基于 Ebbinghaus 曲线的衰减逻辑(活跃 -> 陈旧 -> 遗忘)。
  • 重要性管理:支持显式标记 (pin: true),或通过使用次数获得重要性(滑动更新机制,“用进废退”)。
  • 可恢复性:支持将已遗忘的记忆恢复,恢复操作会产生新的 ID 和 TTL,并附带审计记录。
  • 审计与隐私:默认物理删除内容,仅保留 SHA-256 哈希用于审计追踪。
  • 硬注入预算:限制每次注入的 Token 数量(默认 2000),死记忆绝不注入,超预算时减少选择而非截断。
  • Token 记账:提供 status() 查询和 preview() 非接触式预览,用于成本核算。
  • 多智能体作用域:支持工作区、会话、团队级作用域,子智能体死亡时自动拔除临时记忆。
  • 轻量级与隐私优先:无 Embedding,无 LLM 重写,无服务器进程。默认物理删除。

安装与启用

通过 DSH 官方插件命令安装。确保运行环境为 Node.js >= 20。

dsh plugin --profile <name> add @xiaoke8698/dsh-memory-forget

卸载时使用 remove 命令,记忆数据会保留在工作区目录的 .dsh-memory-forget/store.json 中。

典型用法

作为库使用时,首先创建 AmnesiaEngine 实例。

import { AmnesiaEngine } from '@xiaoke8698/dsh-memory-forget'

const memory = new AmnesiaEngine({ restorable: true })

// 插入带保质期的记忆
const v = memory.plug({
  content: 'validation drink is lapsang',
  ttlMs: 60_000,
  kind: 'preference',
  tags: ['validation'],
})
// 输出包含 ID 和过期时间

// 查看健康状态(活跃/陈旧/遗忘计数及 Token 占用)
console.log(memory.status())

// 查询记忆会触发滑动 TTL(use it or lose it)
memory.recall('lapsang')

// 物理删除记忆
memory.unplug({ id: v.id })

// 恢复已遗忘的记忆(restorable 模式)
const back = memory.restore(v.id)

// 预算化注入选择(死记忆不入选)
const sel = memory.selectForInjection(2000)
console.log(sel.tokens, sel.skippedDead)

// 预览(不触发任何操作)
console.log(memory.preview())

持久化

引擎默认基于内存运行。若需持久化,需提供 StoreAdapter。

import { readFile, writeFile } from 'node:fs/promises'
import { AmnesiaEngine } from '@xiaoke8698/dsh-memory-forget'

const memory = new AmnesiaEngine({ restorable: false }, {
  async load() {
    try { return JSON.parse(await readFile('memories.json', 'utf8')) }
    catch { return undefined }
  },
  async persist(items, audit) {
    await writeFile('memories.json', JSON.stringify({ items, audit }))
  },
})
await memory.ready

适用场景与注意

适合需要严格控制上下文长度、防止记忆污染(如过时事实、中毒记忆)以及需要审计追踪的场景。注意:当前版本引擎基于内存,需自行实现 StoreAdapter 以确保数据持久化;依赖 Node.js >= 20。

结尾

通过主动的遗忘策略,可以避免上下文污染,提升智能体的推理质量。更多详情与源码见:GitHub | 插件目录

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

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

小夜