惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
酷 壳 – CoolShell
酷 壳 – CoolShell
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
S
Security @ Cisco Blogs
小众软件
小众软件
D
Docker
博客园_首页
A
About on SuperTechFans
P
Privacy International News Feed
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
A
Arctic Wolf
Spread Privacy
Spread Privacy
有赞技术团队
有赞技术团队
T
Tailwind CSS Blog
Latest news
Latest news
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
T
The Exploit Database - CXSecurity.com
C
Cybersecurity and Infrastructure Security Agency CISA
大猫的无限游戏
大猫的无限游戏
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
K
Kaspersky official blog
V2EX - 技术
V2EX - 技术
SecWiki News
SecWiki News
U
Unit 42
GbyAI
GbyAI
H
Hackread – Cybersecurity News, Data Breaches, AI and More
L
LINUX DO - 热门话题
S
Security Affairs
Y
Y Combinator Blog
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
MongoDB | Blog
MongoDB | Blog
博客园 - 【当耐特】
The GitHub Blog
The GitHub Blog
T
Tenable Blog
W
WeLiveSecurity
Cloudbric
Cloudbric
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
Google Developers Blog
Application and Cybersecurity Blog
Application and Cybersecurity Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
N
News and Events Feed by Topic
D
DataBreaches.Net
P
Proofpoint News Feed
B
Blog RSS Feed
B
Blog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org

博客园_首页

Linux实操--组管理、权限管理和定时任务 Java + EasyExcel 实现单个接口导出多个Excel Mem0 源码解析系列(二):提示词工程的深度剖析 Openclaw TaskFlow究竟是什么?和普通Skill技能有什么区别 博文阅读密码验证 - 博客园 嘉立创开源:应该是全网MicroPython教程最多的开发板 Hermes Agent 集成实践:从协议到生产 2026年AI编程工具横评:Cursor、Codex、Claude Code、Zed、Windsurf Java程序员必看的RAG入门教程 2026 AI效率神器:Superpowers + Claude Code 保姆级教程 本地大模型部署全攻略:从 0 到 1 玩转 Ollama 【从0到1构建一个ClaudeAgent】内存管理-上下文压缩 .NET 高级开发 | 设计、实现一个事件总线框架 电子小白入门之NE555 3. WorkBuddy:隐藏玩法,一键召唤专家,让 AI 以"专家身份"给你干活 和AI一起搞事情#3:Claude Teammate 游戏开发翻车实录 【OpenClaw】通过 Nanobot 源码学习架构---(7)Memory C# .NET 周刊|2026年3月3期 我在 Debian 11 上把 K8s 单机搭起来了,过程没你想的那么顺(/opt 目录版) 深度学习进阶(七)Data-efficient Image Transformer CLI+Skill搭建浏览器AI自动化框架,告别一切重复枯燥任务 告别Token账单无底洞:OpenClaw本地部署,重塑企业数据主权的唯一解 FastAPI+Vue:文件分片上传+秒传+断点续传,这坑我帮你踩平了! SBTI 爆火后,我做了个程序员版的 CBTI。。已开源 + 附开发过程 多模态检索开始进入工程期:用 Sentence Transformers 搭建可落地的 Multimodal RAG 100多行代码实现一个最简单的Agent(用ReAct) Claude Code 通关手册(八):推荐 5 个 Hooks,代码质量提升 3 倍 老板:“有人截图了!”。安全部门:“收到,马上查暗水印!” - why技术 技术之外,皆是人间 C#/.NET/.NET Core技术前沿周刊 | 第 69 期(2026年4.01-4.12) Snack JSONPath 项目架构分析 Claude Code Buddy 小析:一个非核心功能,如何体现产品的细节完成度 AI新时代下的图床管理方案-Cloudflare图床+MCP+Skills方案指南 化繁为简:顺丰速运App如何通过 HarmonyOS SDK实现专业级空间测量 从零实现富文本编辑器#13-React非编辑节点的内容渲染 AI开发-python-langchain框架(3-23-OpenAI Functions风格Tool Calling智能助手) .NET + AI 进阶实战:基于类的技能开发 - 打造可治理的 Agent 能力模块 【从0到1构建一个ClaudeAgent】规划与协调-技能 上周热点回顾(4.6-4.12) 电子小白的工具三件套:面包板、杜邦线、万能板 单表五亿数据的查询优化 | Mysql、StarRocks 2. WorkBuddy:从“我是谁”到“帮我干活” C# 如何减少代码运行时间:7 个实战技巧 基于HelixToolkit.SharpDX 渲染3D模型 - 笺上知微 从零开始的双臂具身VLA起源及现阶段发展综述 - SkyXZ 记对 xonsh shell 的使用, 脚本编写, 迁移及调优 - pluvium27 受够了Vibe Coding的失控?换个起点,让AI事半功倍 从开始配置漏洞环境到漏洞复现流程 - 難しい 关于10年工作经验的程序员对OpenClaw的实战经验分享以及看法 - 虚无境 Any metadata 的内存布局 C# .NET 周刊|2026年3月2期 - InCerry 我帮你测过了,测试圈排名第二的 Skill 依然很牛逼 Skill Discovery | 无监督技能发现的经典工作总结 - MoonOut PbootCMS 网站内容数量多导致访问慢?这些实用优化方案帮你提速! - 家兴网络技术工作室 上下文工程是什么?过时了么?一文讲明白! - 一枫说码 网站漏洞怎么发现并修复?一篇实用指南(附完整流程) - 家兴网络技术工作室 开了 TUN 模式还是直连?90% 的人都踩过这个坑 Github日报|2026年04月12日 - AI一族 AScript扩展多种脚本语言 - rockey627 AI 学习笔记:Agent 的记忆机制 你能被装进一个文件里吗?——7 万人把同事"蒸馏"成了 AI - 我没有三颗心脏 Claude Code 通关手册(七):给 AI 装上技能包——Skills 完全指南 - 暮色之狐 在浏览器中快速编辑代码:VSCode Web 集成实践 - Newbe36524 蒸馏自己 skill?基于 Deepseek 的蒸馏器,丐版蒸馏方式,简单便捷 - To_Carpe_Diem Spring AI Aliababa和AgentScope,哪个更好? - 苏三说技术 Etsy 把 1000 个 MySQL 分片迁进 Vitess:425TB 数据背后的真正问题不是性能,而是运维规模 MicroPython LVGL基础知识和概念:底层渲染与性能优化 - FreakStudio 数据库草图算法 Python 潮流周刊#146:CPython 引入 Rust 的进展 - 豌豆花下猫 最小生成树 - mofei1116 红日靶场七:从外网入口、容器逃逸到 AD 接管的完整利用链复盘 - YouDiscovered1t 分享四款开源且实用的 Kafka 管理工具 - 追逐时光者 vLLM 权重加载机制全解析:从挑战到理想架构 LCT 学习笔记 - ACehomoxue Avalonia UI 12.0.0 正式发布:架构演进和性能飞跃 - 张善友 当 AI Agent 把调用链拉长,延迟开始成为一门生意 conhost.exe 无法显示 U+2717 - 145a 太秀了,我把自己蒸馏成了 Skill!已开源 - 程序员鱼皮 ASP.NET Core 内存缓存实战:一篇搞懂该怎么配、怎么避坑 基于 Ghostty 带有分割标签页和为 Claude 编程设计的通知终端 - BugShare AI 焊死入口:教育的“操作系统级”重塑 - 郝hai 初级Java开发工程师使用sql脚本编写代码的过程是简单而且不糊涂 - CoderOilStation Claude Code通关手册(六):MCP协议完全指南 - 暮色之狐 边框灯光环绕动画特效实现指南 - Newbe36524 开源:子木蒸馏版的 SEO 审计工具 seo-audit-skill v1.0 我所理解的Python元模型 【从0到1构建一个ClaudeAgent】规划与协调-TodoWrite - 程序员Seven Claude 和 Codex 在审计 Skill 上性能差异探究 - ACai_sec AScript如何实现中文脚本引擎 - rockey627 【渗透测试】HTB Season10 Garfield 全过程wp - dynasty_chenzi Android 开发者为什么必须掌握 AI 能力?端侧视角下的技术变革 树状数组正确性证明 - AC-wyr 你的 AI 焦虑,可能比 AI 本身更危险——ATM 机没有消灭银行柜员,但恐慌消灭了你的判断力 - 我没有三颗心脏 一个拉胯的分库分表方案有多绝望?整个部门都在救火! - 冰河团队 动态规划入门必学之走方格问题 - Ofnoname PostgREST 与 PostgreSQL 角色权限配置全解析(生产级实践) - SheepDog1998 使用 UEFI 图形输出协议 GOP 在屏幕上显示图像的方法 - 阿源- Claude Code通关手册(五):组建你的AI专家团队,子代理系统 - 暮色之狐 一个程序员到架构师的催婚路之感悟(整整10年后的催婚相亲感悟) - MisterLip 用 Agent Skill 自动生成工作周报 - 赵康
PowerMem 记忆系统的遗忘设计,从神经元到代码工程
knqiufan · 2026-05-23 · via 博客园_首页

为什么需要遗忘

如果 Agent 将所有我说过的话都记住会是什么场景?

乍一听很合理,作为一个合格好用的 Agent 当然是要将对方说过的话都记住,这样就会越用越聪明,就像人类的也是通过不断的学习记忆进行成长。但事实是这里一个反直觉的现实是,真正真实可靠的 memory 并不是将所有内容都记住就万事大吉。在记住的同时进行遗忘是很重要的事情。 在 Agent 的记忆系统中也同样,遗忘不是缺陷,而是能力。

认知科学和工程实践都有一个结论:即没有遗忘的记忆系统不是更强大,而是更低效。原因很简单,如果所有记忆都以相同权重参与检索,系统面临两个根本性问题:

  1. 检索质量衰减:新旧记忆在语义空间中相互干扰,高频无关结果稀释了精准匹配。随着记忆体量增长,检索信噪比持续下降。
  2. 存储成本不可控:无限累积的记忆需要无限存储,且大部分低价值信息永远不会被检索,造成资源浪费。

PowerMem 对于遗忘机制有很精妙的设计,它决定了记忆何时消亡和记忆在检索时的排序权重。我对记忆遗忘机制很感兴趣,所以首先会在这篇文章中先拆解一下背后的认知学科原理,下一篇会再通过跟随一条信息在 PowerMem 中的流转路径来看它是如何走完在代码中的完整生命周期。


1. 大自然的遗忘设计,从神经元到认知系统

1.1 突触可塑性

在神经科学层面,记忆的物质基础是神经元之间的突触连接

Gemini_Generated_Image_5iy7hm5iy7hm5iy7

神经元和突触的概念应该大家都很熟悉。连接不是静态的,它受两种对立机制的持续调控:

  • 长时程增强(Long-Term Potentiation, LTP):高频使用某个神经通路时,对应突触连接被强化,这是记住的生物学基础。
  • 长时程抑制(Long-Term Depression, LTD):低频使用某个神经通路时,对应突触连接被削弱,这是遗忘的生物学基础。

但是 LTP 和 LTD 并非对立,而是协同。如果所有突触都被同等强化,神经网络将彻底失去区分信号噪音的能力。LTD 通过选择性削弱不活跃连接,将有限的突触资源集中于活跃通路。

遗忘是记忆系统获得分辨力的代价。

1.2 海马体到新皮层的筛选

再进一步的机制是记忆巩固(Memory Consolidation)。新形成的记忆首先暂存在海马体中;接着在睡眠阶段,大脑通过 记忆重放(Memory Replay) 将海马体中的记忆逐步转移至新皮层进行长期存储。

海马体,这类似于计算机的 RAM,容量有限、读写快速,但保持时间短。

Gemini_Generated_Image_2dpbu42dpbu42dpb

但这个转移不是全量的。只有那些在清醒时被反复激活的、与已有知识建立了丰富关联的、或伴随强烈情绪体验的信息,才能获得优先转移权。孤立、单次、缺乏情绪标记的信息,则在转移过程中自然脱落。

这一步,大自然在记忆巩固阶段自动完成了信息筛选。

这个机制是 PowerMem 三层记忆模型(working → short_term → long_term)的生物学蓝本。

1.3 遗忘不是因为存不进去,而是取不出来

再从认知心理学层面来看,干扰理论(Interference Theory)提供了另一个关键视角。它认为遗忘的主要原因不是记忆消失,而是不同记忆之间发生了相互干扰:

  • 前摄干扰:旧记忆干扰新记忆的提取。比如换了新手机号后,旧号码总是不由自主地冒出来。
  • 倒摄干扰:新记忆干扰旧记忆的提取。比如学了西班牙语之后,之前学的意大利语单词变得难以回忆。

干扰理论揭示的核心事实是,记忆的困难不在于存不进去,而在于取不出来。 且随着存储信息越来越多,记忆之间的交叉干扰呈指数级增长。

而遗忘机制的作用就是通过衰减低价值记忆,降低检索空间中的干扰密度。


2. 香农的信息论视角:遗忘是一台信息过滤器

2.1 信息量的数学定义

克劳德·香农在 1948 年的奠基性论文《通信的数学理论》中给出了信息的量化定义:

I(x) = -log₂(p(x))

其中 I(x) 是事件 x 的自信息量p(x) 是该事件发生的概率。

公式不重要,核心含义很简洁:一个事件的信息量与其发生概率成反比,越是罕见、出人意料的事件,一旦发生,携带的信息量越大。

2.2 映射到记忆系统

如果将香农的信息量公式映射到记忆系统,很自然的就会得到一条分类逻辑,举个例子:

  • 昨天吃的什么早餐 → 每天都在发生,概率 p ≈ 1 → 信息量 I ≈ 0 → 不值得长期存储
  • 公司数据库的主密码 → 极少被问及,p 极小 → 信息量 I 极大 → 必须持久化保留

所以一套完善的遗忘机制实质上是一台信息过滤器,它的工作流是:

  1. 高信息量内容(罕见但关键)→ 被保留并持久化
  2. 低信息量内容(常见但琐碎)→ 被衰减直至淘汰
  3. 介于两者之间的内容 → 在连续谱系上平滑过渡

PowerMem 中的三层记忆模型对过滤器的进行了工程实现,遗忘曲线即为这个过滤器提供了时间维度的动态权重。过滤行为会随时间的推移持续演进,而非一次性的静态分类。


3. 艾宾浩斯遗忘曲线

3.1 把记忆变成可测量的数据

艾宾浩斯非常有名。1885 年德国心理学家赫尔曼·艾宾浩斯(Hermann Ebbinghaus)以自己为被试,设计了一套严格的实验,首次将记忆研究从哲学思辨拉进了科学实验室。

为避免已有知识的干扰艾宾浩斯发明了约 2300 个无意义音节进行实验,实验步骤如下:

  1. 学习:反复背诵 13 个音节组成的列表,直到能连续无误地背两遍。
  2. 等待:分别在 20 分钟、1 小时、9 小时、1 天、2 天、6 天、31 天后进行测试。
  3. 测量:使用节省法(savings method)重新学习同一列表,看比第一次少花多少时间。

实验结果清晰地呈现在以下数据中:

时间间隔 记忆保留率
刚学完 100%
20 分钟 ~58%
1 小时 ~44%
9 小时 ~36%
1 天 ~33%
2 天 ~28%
6 天 ~25%
31 天 ~21%

因此得出了两个至今未被推翻的结论:

  1. 遗忘是先快后慢的指数曲线,而非匀速直线,前 20 分钟丢失约 40%,1 小时内丢掉一半多,之后衰减显著放缓。
  2. 复习可以改写曲线,间隔复习能让记忆衰减更慢。

3.2 从原始公式到现代指数衰减

艾宾浩斯在 1885 年提出的原始数学拟合公式为:

b = 100k / ((log t)^c + k)

这是一个以对数函数为基础的非线性模型,b 是节省百分比,t 是以分钟为单位的时间,k 和 c 是拟合常数(k ≈ 1.84, c ≈ 1.25)。

这个公式看不懂没关系,因为后来随着记忆衰减研究的深入,研究者发现用更简洁的指数衰减模型同样可以很好地近似记忆保留曲线:

R(t) = e^(-λt)

这个其实才是现代通用的指数衰减公式:

  • R(t):时间 t 时的记忆保留率,代表在经过时间 t 后,还能回忆起多少信息。取值范围 [0, 1]
  • e:自然常数( ≈ 2.71828),它是描述自然界中一切"连续、平滑的指数变化"过程的天然数学基础
  • λ(lambda):衰减率,它决定了遗忘的速度。 λ 越大,遗忘越快(曲线急剧下降),λ 越小,记忆越稳固(曲线平缓)
  • t:即从学习完(或记忆形成后)开始计算的时间间隔,通常以小时为单位

这个公式的图像是一条先快后慢的曲线。

Gemini_Generated_Image_9yz9aq9yz9aq9yz9

通俗解释,在刚刚学完的一段时间内,记忆流失非常剧烈;随着时间推移,如果不去复习,剩下的东西反而没那么容易忘了,因为已经忘得差不多了。

这些理论都是 PowerMem 中遗忘机制的数学基础。

3.3 为什么指数函数是描述遗忘的最优数学形式

遗忘的核心特征是,遗忘的速度与当前还保留的记忆量成正比。 在记忆刚形成的几分钟,留存率很高(接近 1),遗忘的速度也最快。几小时后,留存率已大幅下降,遗忘的速度也随之放缓。

用微分方程表达就是 dR/dt = -λR——变化速率正比于当前状态量。这个方程的唯一解正是 R(t) = e^(-λt)

一杯热水的冷却(牛顿冷却定律)、放射性元素的衰变、电容器的放电——这些看似毫不相干的现象,都因为共享"变化率正比于当前量"这一自洽关系,而由同一个指数函数来描述。记忆衰减也不例外。

现代学习算法,包括 SuperMemo、Anki 等间隔重复软件(以及 PowerMem)普遍使用指数衰减模型或其变体,因为它在简洁性、可计算性和与实验数据的拟合度之间取得了最佳平衡

3.4 间隔重复与理想的困难

艾宾浩斯其实还有另外一个影响深远的发现,即间隔重复可以重置遗忘曲线,而且每次重置后的衰减速度比上一次更慢。

这其实就是文章前面提到过的神经科学中的记忆再巩固(Memory Reconsolidation)机制。当一个已经巩固的记忆被主动提取(回忆)时,它会暂时回到一个不稳定的、可塑的状态,然后需要重新巩固(再巩固)。每次提取—再巩固循环都会触发新一轮的蛋白质合成,加强该记忆对应的突触连接。

比较关键的是,再巩固是需要时间来完成了。如果复习间隔太短(例如 5 分钟内连续背诵 10 次),神经系统尚未完成上一次的蛋白质合成和突触重塑,新的提取不会带来额外巩固效果(这就是"填鸭式学习"效率低下的生物学原因)。反之如果间隔太长,记忆已经完全衰减到无法提取,再巩固也无从谈起。

加州大学洛杉矶分校的 Robert Bjork 于 1994 年提出的"理想的困难"(Desirable Difficulty)概念精确描述了这一现象:刚好费力到足以刺激适应的提取,才是最高效的学习方式。

这一概念直接影响了后续所有间隔重复算法的设计,包括 PowerMem 中的复习调度逻辑。


4. PowerMem 的三层记忆架构

4.1 从生物学到代码的映射

好,终于讲到了 PowerMem 的记忆架构。将以上的这些认知科学原理翻译为三个工程层次,即为:

层级 生物学类比 衰减速率倍率 典型存活时间 晋升条件
working(工作记忆) 前额叶皮层 ×2.0 数小时~1天 access≥3 或 importance≥0.6
short_term(短期记忆) 海马体 ×1.5 数天~数周 access≥3 或 importance≥0.6
long_term(长期记忆) 新皮层 ×1.0 数周~数月 —(已在顶层)

分类逻辑以重要性分数为判断依据:

importance ≥ 0.8  →  long_term
importance ≥ 0.6  →  short_term
importance < 0.6  →  working

衰减倍率是核心差异化参数。

在设计上,同样过去 24 小时,一条 working 记忆的衰减倍率是一条 long_term 记忆的 2 倍——重要程度直接决定了信息在系统中的"预期寿命",不重要的信息更快消亡,从而为重要的信息腾出检索空间。

4.2 遗忘管理全局架构

PowerMem 遗忘管理系统的有四个核心组件,其协作关系说明如下:

新信息输入 → ImportanceEvaluator(重要性评估器)
           → EbbinghausAlgorithm(遗忘曲线引擎)
           → EbbinghausIntelligencePlugin(生命周期插件)
              ├─ on_add():记忆创建时注入遗忘参数
              ├─ on_get():记忆访问时检查遗忘/晋升/归档
              └─ on_search():搜索时批量处理生命周期
           → MemoryOptimizer(记忆优化器)
              ├─ 精确去重(MD5 哈希)
              ├─ 语义去重(余弦相似度)
              └─ 记忆压缩(LLM 摘要)
  • ImportanceEvaluator:判断这条信息有多重要,输出一个 0.0~1.0 的分数
  • EbbinghausAlgorithm:提供衰减计算、复习调度、遗忘/晋升/归档决策的纯数学方法
  • EbbinghausIntelligencePlugin:在记忆的关键生命周期节点(创建、访问、搜索)注入管理逻辑
  • MemoryOptimizer:周期性全局优化,主要是去重与压缩

Gemini_Generated_Image_m5a2uhm5a2uhm5a2

4.3 遗忘不只是删除

PowerMem 的遗忘机制在检索排序中同样扮演关键角色。搜索结果按照以下公式排序:

final_score = relevance_score × decay_factor
  • relevance_score 是语义匹配度(向量相似度)
  • decay_factor 是时间新鲜度(指数衰减值)

由这两个参数决定了最终的排序得分,制造了交叉排序的可能性,比如(示意数据,实际衰减因子取决于 decay_rate 配置):

记忆 语义匹配度 衰减因子 final_score 排名
3小时前的会议记录,语义高度匹配 0.92 0.62 0.57 1
10天前的会议记录,语义完美匹配 0.98 0.02 0.02 2
1分钟前的闲聊,语义中等匹配 0.45 0.99 0.45

遗忘不是单纯的删除开关,而是检索质量的调节器。 它确保结果同时考虑了内容匹配度时间新鲜度两个维度。


总结:为什么需要遗忘

PowerMem 的故事还没讲完,但是我想重新回到开头。

遗忘是排序的基础, 通过衰减制造差异化,为排序提供了除语义相似度之外的第二个维度。

遗忘使记忆进化, 频繁访问的记忆被不断提升,衰减率逐步降低,通过反复使用将记忆信息不断巩固。

遗忘是连续的,而非二元的。 从 1.0 到 0.0 的连续衰减谱系,允许记忆以自然的方式淡化而非突然消失,这是更符合人类记忆的工作方式,也为未来的优化(软删除、记忆复苏)留下了空间。

大自然是这么设计的,PowerMem 将其翻译成了可以配置、调优、理解的代码。

这很有意思,所以我想用单独的一篇去更详细的拆解,一条信息从进入 PowerMem 到走完重要性评估 → 分类 → 衰减 → 访问触发 → 晋升/遗忘 → 全局优化的全过程,了解到底是怎么去实现的。


PowerMem 的 GitHub 地址:https://github.com/oceanbase/powermem


本文基于 PowerMem v1.1.1 分析撰写,所有代码引用均来自实际项目文件。