当我开始构建 OpenClaw 时,面临的第一个核心架构决策就是记忆系统。一个长期运行的 AI Agent 如果没有可靠的记忆,本质上只是一个无状态的 API 调用——每次对话都从零开始,无法积累经验,无法建立对用户的理解。我花了三周时间逆向分析了四种主流方案:ChatGPT Memory、Claude Memory(Team/Enterprise)、LlamaIndex Memory Module、以及 Letta(原 MemGPT)的分层记忆。
ChatGPT 的方案最为简洁:它用一个扁平的 key-value 存储,由模型自行决定何时写入和读取记忆。优点是延迟极低(读取几乎零成本),缺点是深度不足——它只能记住「用户喜欢什么」层面的偏好,无法处理复杂的项目状态或多实体关系。Claude 的企业版走了另一个方向:通过 Project Knowledge 预加载结构化文档,本质上是把记忆外化为文件系统。这在团队协作场景下很强大,但个人使用时显得过重。
LlamaIndex 的方案更偏向工程化:它提供了 Composable Memory 接口,允许开发者自定义记忆的存储、检索和淘汰策略。这给了最大的灵活度,但也意味着你必须自己做所有设计决策。Letta 则提出了最激进的思路——让模型自己管理自己的记忆,通过 self-editing memory 实现类似人类工作记忆的机制。理论上很美,实践中发现模型的「自我管理能力」并不可靠。
最终我为 OpenClaw 设计了 MemBrain-Lite:一个三层分离架构——entities(人物/项目实体)、context(偏好/配置/状态)、timeline(时间索引/事件流)。核心 insight 是:Agent 记忆不应该模仿人类记忆,而应该模仿人类的「文件系统 + 笔记习惯」。Text > Brain——写下来的才算记住。查询路由确保每次读取只加载最小必要上下文,避免上下文窗口被历史信息淹没。
这套架构运行了 4 个月,最大的教训是:记忆系统的核心 tradeoff 不是存储容量或检索精度,而是「深度 vs 速度」。深度记忆(完整的项目上下文、对话历史)让 Agent 更聪明,但加载成本高、容易污染当前上下文;浅层记忆(关键事实、偏好标签)速度快但缺乏洞察力。MemBrain-Lite 的三层分离正是为了在两者之间动态切换——日常对话用浅层快速响应,深度任务时按需加载完整实体档案。