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 | 插件目錄

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

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

小夜