EdosAI Memory Framework的深度剖析,用Atkinson-Shiffrin心理模型替代传统向量存储,23000+行Python代码实现。解决Agent长期记忆在生产环境的失效问题。
为什么扁平向量存储无法胜任 Agent 记忆
如今,几乎所有 AI Agent 框架都遵循着大致相同的套路:接收用户输入,将其转换为 embedding,存入向量数据库,并在需要时检索相似的文本块。这套方法用来演示还算够用,但一到生产环境就会崩溃。
根本问题并不在于检索质量,而在于架构。人类记忆并不是一个单一系统,而是由一组专门化的子系统层层构成,每个子系统解决不同的问题。当我们把所有记忆简化为“存储 embedding,再通过余弦相似度检索”时,实际上是在无视过去 60 年的认知科学研究成果。
为了解决这个问题,我构建了 EdosAI Memory Framework。它由 51 个模块、超过 23,000 行 Python 代码组成,实现了一套 8 层认知记忆架构。本文将深入介绍我们为什么这样设计,以及每一层究竟负责什么。
这套架构主要受到三个研究传统的启发:
Atkinson-Shiffrin 模型(1968)提出,记忆会流经不同的存储系统:感觉记忆 → 短期记忆 → 长期记忆。这就是为什么我们的架构具有明确的信息流:从 L1(感觉缓冲区)经过 L2(工作记忆),再进入 L3~L5(长期存储)。
Tulving 提出的情景记忆与语义记忆之分(1972)表明,记住一件发生过的事情和掌握一个事实,在本质上是两种不同的操作。因此,我们将 L3(情景记忆)与 L4(语义记忆)分开,而不是把所有内容都扔进同一个存储系统。
McClelland、McNaughton 和 O'Reilly 提出的互补学习系统理论(Complementary Learning Systems,1995)证明,大脑需要两个相互补充的系统——快速学习(海马体)和缓慢巩固(新皮层)——来避免灾难性干扰。这一理论直接启发了我们的 L7 记忆巩固引擎。
Input → [Sensory Buffer] → Working Memory or Decay
感觉缓冲区会在不到一秒的时间里保存原始感知输入。在我们的实现中,它保存的是未经任何处理的原始 LLM 响应、工具输出和环境信号。
为什么这一层很重要?因为大多数 Agent 都会立刻尝试“理解”所有信息。感觉缓冲区让系统拥有片刻时间,判断哪些内容值得关注。并不是所有信息都值得占用工作记忆。
实现方式:使用一个容量可配置的环形缓冲区。超过衰减阈值的项目会被丢弃,除非系统明确对其进行了注意。
[Sensory Buffer] → [Working Memory] ← Central Executive
↓
Episodic / Semantic / Procedural
Baddeley 的工作记忆模型(1974)提出,工作记忆由多个组成部分构成:中央执行系统、语音回路和视觉空间模板。我们将其调整为:
当前大多数 Agent 几乎 100% 的时间都只在这一层运行。但如果没有下面几层,工作记忆中的内容就无处转移,无法形成长期存储。
Working Memory → [Episodic Store]
├── Event boundary detection
├── Temporal indexing
└── Contextual binding
每个重要事件都会被存储为一个情景:带有时间戳、上下文标签,并与相关情景建立关联。Tulving 理论中的关键洞见在于,情景记忆具有“自我知晓性”(autonoetic)——它承载着一种主观上的“重新经历”感。
具体来说,每个情景会存储:
事件边界检测至关重要。并不是每个 token 都算一个事件。系统会识别有意义的转折,例如话题变化、任务完成和错误状态,并将其作为情景之间的边界。
Episodic Memory → [Consolidation] → Semantic Store
├── Knowledge graphs
├── Fact triples
└── Concept hierarchies
这里有一个关键区别:情景记忆存储事件,例如“星期二,用户询问了 Python 装饰器”;语义记忆存储事实,例如“Python 装饰器用于修改函数行为”。
语义层会自动从情景记忆中提取事实。随着时间推移,你会得到一个结构化知识库,用于表示 Agent“知道”什么,而不仅仅是它“经历”过什么。
实现方式:使用包含实体—关系抽取三元组的知识图谱。由 L7 发起的周期性记忆巩固任务,会将事实从情景存储转移到语义存储。
Episodic Memory + [Reward Signal] → Procedural Store
├── Action sequences
├── Success patterns
└── Skill abstractions
这是大多数 Agent 框架完全忽略的一层。程序性记忆让你能够骑自行车——你可能无法用语言解释具体怎么做,但你的身体“知道”。
对于 AI Agent 而言,程序性记忆意味着:当 Agent 解决同一类问题 10 次之后,它会形成处理这类问题的技能。它不只是检索过去相似的解决方案,而是将其中的模式内化。
实现方式:将操作序列连同其结果一起存储。成功的模式会得到强化。随着时间推移,常见操作序列会被压缩成更高层次的技能。这相当于让 Agent 从“我需要仔细执行这 15 个步骤”,进化到“我就是知道该怎么做”。
All Layers ← [Valence Module]
├── Priority scoring
├── Salience detection
└── Recall modulation
杏仁核会根据情绪意义调节记忆的编码与检索。我们将这一机制实现为一个效价评分模块,它会:
如果没有这一层,每段记忆都会“同等重要”,结果就是什么都不重要。Agent 会用相同的权重对待用户的姓名和用户偏好的咖啡口味。
Episodic Store ←→ [Consolidation Engine] ←→ Semantic Store
├── Replay mechanism
├── Compression
├── Abstraction
└── Interference resolution
这可以说是技术上最有意思的一层。记忆巩固引擎受到互补学习系统理论的启发,会在离线状态下运行,例如两次对话之间或活动较少的时段,并执行以下任务:
正是这一层,让该框架区别于“把所有内容都存起来,然后祈祷检索能正常工作”的做法。如果没有记忆巩固,记忆规模将永远线性增长。有了它,随着原始经历被提炼为结构化理解,Agent 的知识才会真正不断改善。
All Layers → [Meta-cognitive Monitor]
├── Memory state awareness
├── Confidence estimation
├── Gap detection
└── Strategic recall
最上层允许 Agent 对自身的记忆状态进行推理。这使其具备以下能力:
Nelson 和 Narens(1990)将元记忆描述为一个监控—控制闭环。监控部分负责评估记忆状态,控制部分负责决定接下来该怎么做。L8 同时实现了这两个部分。
这些层并非相互隔离。信息会沿多个方向流动:
Forward flow (encoding):
L1 → L2 → L3 → L4 → L5
↑
L6 modulates encoding at every level
Backward flow (retrieval):
L8 initiates → L7 guides → L4/L3/L5 respond
L6 modulates retrieval priority
Consolidation flow:
L3 ←→ L7 ←→ L4 (offline replay and transfer)
正是这种双向流动,让整个架构不只是一条流水线,而是一个完整的系统。
51 个 Python 模块,超过 23,000 行代码。这不是一个玩具项目。它的工程实现包括:
关键差异包括:
我相信价格应该透明:
API 访问:https://creem.io/payment/prod_6RHYa4HxvHSNaoPX3Y3f4w
编译版 SDK:https://creem.io/payment/prod_7MlHfmV5GE5veelIw3Qs2H
源代码:https://creem.io/payment/prod_5KDcisVyJlZcNpwxmjG9Mf
AI Agent 生态正在快速发展。但记忆——真正持久、结构化且能够自我改善的记忆——仍然出人意料地缺乏发展。大多数框架只把它当作事后才考虑的附加功能。
我相信,记忆正是区分“带工具的聊天机器人”与“真正智能的 Agent”所缺失的那块拼图。8 层架构并非过度设计,而是一套真正有效的记忆系统所需的最低可行复杂度。
如果你正在构建需要随着时间不断进步,而不只是持续堆积上下文的 Agent,不妨了解一下 EdosAI Memory Framework。
EdosAI Memory Framework——8 层、51 个模块、超过 23,000 行代码。专为需要记忆的 Agent 而构建。
如需采取进一步措施,你可以考虑屏蔽此人和/或举报滥用行为。