📰 来源: 博客园
摘要:本文深入剖析 Gliding Horse(流马)AI Agent 操作系统的四层记忆架构(L0-L3),借鉴 CPU 多级缓存与 MESI 一致性协议,实现近乎无限的“虚拟记忆”与极致的 Token 经济性。涵盖持久化存储、会话摘要链、多 Agent 共享黑板、投影引擎及 Hyperspace 向量引擎等核心组件,揭示其如何让 Agent 像操作系统管理内存一样管理记忆。
关键词:AI Agent;记忆系统;Gliding Horse;流马;多级缓存;MESI 协议;向量引擎;图数据库;Token 优化;语义搜索
在构建 AI Agent 操作系统的过程中,记忆管理是最核心的挑战之一。传统的 Agent 框架往往将对话历史简单堆砌在上下文窗口中,一旦超出 Token 限制就直接截断,导致关键信息丢失。而 Gliding Horse(流马)则借鉴了 CPU 多级缓存架构,设计了一套 L0-L3 四层记忆体系,并引入了 MESI 缓存一致性协议、意图驱动的预取引擎 以及 语义增强的淘汰策略,让 Agent 像操作系统管理内存一样管理自己的记忆。
本文将深入拆解这套记忆系统的架构设计、核心模块及运作机制,展示它如何为 AI Agent 提供近乎无限的“虚拟记忆”,同时将上下文 Token 消耗降至最低。
Gliding Horse 的记忆系统模仿了 CPU 的缓存层次:越靠近 LLM 的层级容量越小、速度越快,但保存的是高度压缩的摘要;越远离 LLM 的层级容量越大、速度越慢,但保存的是完整的原始数据。
每一层都有明确的职责边界:
此外,还有 一致性引擎 (MESI)、Hyperspace 向量引擎、预取引擎、记忆总线 和 调度器 等关键组件共同编织起整套记忆基础设施。
二、L0 持久化存储:永不丢失的“磁盘”
L0 是整个记忆体系的基石。它使用高性能嵌入式数据库 sled 作为存储后端,每个记忆条目都包含完整的 JSON-LD 内容以及丰富的元数据。
pub struct L0Entry {
pub iri: String,
pub content: String, // 完整 JSON-LD
pub importance: f32,
pub access_count: u32,
pub tags: Vec<String>,
pub mesi_state: MesiState,
pub content_hash: String,
pub named_graph: Option<String>,
pub qdrant_point_id: Option<String>,
pub jsonld_context: Option<String>,
pub jsonld_types: Vec<String>,
}
store_jsonld_node() 和 retrieve_jsonld_node() 提供了直接存取 JSON-LD 文档的能力,并自动合并具有相同 @id 的条目(标签取并集、重要性取平均、内容保留较长者)。tag:{tag})和命名图索引(graph:{name})让检索不再只是线性扫描,前缀范围扫描还能高效支持 IRI 前缀查询。L0 的定位是“永不丢失的全量记忆”,但并不会直接暴露给 LLM。上层通过 IRI 引用按需拉取细节,这正是 Token 控制的核心。
三、L1 会话摘要链:像 CPU L1 缓存一样精简
L1 直接服务于 LLM 的上下文窗口,是记忆系统中对 Token 最敏感的一层。它并不保存完整的对话内容,而是将每一轮 LLM 的 summary 输出串联成一条摘要链。
pub struct L1Session {
turns: Vec<L1Turn>,
token_budget: usize,
}
pub struct L1Turn {
pub role: String,
pub summary: String,
pub l0_archive_iri: Option<String>, // 完整内容在 L0 的地址
pub embedding: Option<Vec<f32>>,
pub relevance_score: f32, // 当前任务关联度
pub is_supplement: bool, // 是否为补充输入
}
当摘要链的 Token 总量超出预算时,L1 并非简单截断,而是执行一个两阶段淘汰策略:
relevance_score 低于阈值(默认 0.3)且已超过安全窗口(默认 5 分钟)的条目直接移除,但补充输入(is_supplement=true)受到保护。score = β * semantic_relevance + (1-β) * (recency * w_r + token_cost * w_c)
其中 semantic_relevance 是该条目与当前查询的向量余弦相似度,β 默认为 0.6。
score = β * semantic_relevance + (1-β) * (recency * w_r + token_cost * w_c)
被淘汰的摘要并不会彻底消失,它的 l0_archive_iri 会被移至一个弱引用列表,Agent 随时可以通过此 IRI 从 L0 调取完整历史。这保证了即使上下文窗口被“清扫”,记忆本身依然是完整的。
四、L2 共享黑板:多 Agent 协作的“工作内存”
L2 是整个记忆系统中最高频的读写区域。它是一个基于 Oxigraph 图数据库 的内存黑板,所有 Agent 实例都可以通过 SPARQL 直接查询和更新。
DashMap 内存缓存和 Oxigraph 存储,兼顾速度与持久性。🔗 原文链接: 点击阅读原文
文章评论