AI memory 已损坏。我们构建了一个会忘记的。

发布: (2026年4月5日 GMT+8 09:35)
4 分钟阅读
原文: Dev.to

Source: Dev.to

实际效果示例

第 1 周: 你告诉代理 “我们前端使用 React”。
第 2 周: 你改了主意。 “改用 Svelte,React 包太大”。
第 4 周: 你问 “我们的前端技术栈是什么?”

普通的检索系统会把两个答案都返回。React 和 Svelte 并列,权重相等。系统中没有任何信息表明其中一个已被取代,所以代理可能会引用 React、Svelte,或两者的混乱组合。

在构建代理工具时我们屡次遇到这个问题,显而易见,问题不在检索质量,而在于这些系统没有时间或过时概念。

数据

我们在两套系统上模拟了一个为期 4 周的项目。共计 24 条事件——决策、纠正、错误、重复观察。项目中途出现两次重大方向转变。

指标NaiveSparsion
顶部结果是否正确
修剪的过时记忆数02
第 4 周可检索条目数2422

Naive 检索会把过时条目放在最前;Sparsion 则把纠正放在首位——显著性 1.65 对比 0.55(过时的原始条目)。

Sparsion 的实际工作方式

它把记忆视为生命周期,而不是日志。

Events → Salience Scoring → Hot → Warm → Cold → Forgotten
  • 旧记忆随时间衰减(指数衰减,可配置半衰期)
  • 重复事件会增强(对数频率)
  • 可以将事项标记为 critical——其存活时间是普通记忆的 4 倍
  • 默认情况下,纠正的得分是观察的 3 倍
  • 低于显著性阈值的记忆会被完全剔除检索

一次关键纠正进入系统时的显著性为 13.18。一次随意观察的显著性为 0.77。若六周未再强化,观察会消失,而纠正仍然保留。

试一试

from sparsion import Runtime

rt = Runtime("agent_memory.db")

# Week 1
rt.record("user", "decision", "Frontend framework: React", importance="high")

# Week 2
rt.record(
    "user",
    "correction",
    "Switching to Svelte — React bundle too large",
    importance="critical"
)

# Query
memories = rt.query(text="frontend", limit=3)
for m in memories:
    print(f"[{m['tier']}] {m['content']} (salience: {m['salience']:.2f})")
# [Hot] Switching to Svelte — React bundle too large (salience: 13.18)
# [Hot] Frontend framework: React (salience: 4.39)

# Age everything
result = rt.sweep()
print(f"Forgot {result['forgotten']} stale memories")

底层实现

Rust 核心,Python 绑定通过 PyO3/maturin,SQLite 负责存储。无模型依赖——显著性评分目前采用启发式算法。

Rust core
  ├── Event store (SQLite)
  ├── Salience scorer
  ├── Tier manager (hot/warm/cold)
  ├── Decay engine
  └── Ranked retrieval

  PyO3 → Python SDK (pip install sparsion)

测试:12 个 Rust 单元测试,5 个集成测试(通过 MockClock 实现确定性时间),4 个 Python 端到端测试。

v0.1 包含内容

  • 可配置半衰期的时间衰减
  • 通过重复进行强化
  • 重要性提示(low/normal/high/critical)
  • 事件类型权重——纠正 > 决策 > 错误 > 动作 > 观察
  • 通过存储实现的层级迁移与遗忘循环
  • Python SDK

未来计划

  • 接入真实代理工作流
  • 更大的基准测试,延长时间视野
  • 矛盾感知的更新机制
  • LangChain 记忆后端

如果你正在构建代理并且一直受到过时上下文的困扰,欢迎分享你的使用案例。

Sparsion Runtime

0 浏览
Back to Blog

相关文章

阅读更多 »

让 OpenClaw 在压缩后记住它的操作

为什么会这样?虽然 AI 看起来像魔法,运作也像魔法,但在底层它仍然有其局限性,在这种情况下,就是它的上下文窗口 https://pla...

2026年十大向量数据库

向量数据库在现代 AI 中的角色 在当前的人工智能格局中,vector database 已不再是一个专用工具——它是 Long…