AI Agent 记忆系统深度解析:以 Clawdbot/Moltbot/OpenClaw 为例
在 AI Agent 时代,记忆(Memory) 已成为决定智能体能力上限的关键要素。一个没有记忆的 AI 就像患有顺行性遗忘症的人——每次对话都是从零开始,无法积累经验、无法学习偏好、无法完成需要长期上下文的复杂任务。
本课程将以 OpenClaw(原名 Clawdbot,后更名为 Moltbot,现定名为 OpenClaw)为核心案例,深入剖析 AI Agent 记忆系统的架构设计、实现原理、以及我们在实际项目中遇到的工程挑战与解决方案。
💡 为什么选择 OpenClaw?
OpenClaw 被称为 "Claude with hands"——它不仅能思考,还拥有持久记忆,并能通过 iMessage、WhatsApp、Telegram、Slack、Discord 等多种平台进行实时对话。它在 GitHub 上获得了超过 100,000 颗星,是开源历史上增长最快的项目之一(72 小时内获得 60,000+ 星),由著名开发者 Peter Steinberger(@steipete)创建。Steinberger 是 PSPDFKit 的创始人,该公司已被 Insight Partners 收购。
一、AI Agent 记忆系统的理论基础
1.1 为什么传统分类法已不够用?
根据 2025 年 12 月发表的权威综述论文 "Memory in the Age of AI Agents"(登顶 Huggingface Daily Paper #1)指出:传统的"长期记忆/短期记忆"二分法已不足以描述当代 Agent 记忆系统的多样性。该论文提出了更细粒度的分类法,区分了事实记忆(Factual Memory)、经验记忆(Experiential Memory)和工作记忆(Working Memory)。
现代 AI Agent 记忆系统需要考虑以下维度:
| 维度 | 说明 | 示例 |
|---|---|---|
| 持久性 | 记忆存活的时间范围 | 会话级 vs 跨会话 vs 永久 |
| 结构化程度 | 从非结构化文本到结构化数据库 | Markdown 文件 vs 向量数据库 vs 关系数据库 |
| 访问模式 | 记忆的检索方式 | 全量注入 vs 按需检索 vs 语义搜索 |
| 更新机制 | 记忆的写入触发条件 | 显式写入 vs 隐式学习 vs 压缩刷新 |
| 作用域 | 记忆的可见范围 | 全局 vs 项目级 vs 会话级 |
1.2 三种核心记忆类型
根据 Machine Learning Mastery 的研究,构建能够从经验中学习、积累知识并执行复杂任务的 Agent,需要实现三种截然不同的长期记忆:
🎬 情景记忆(Episodic Memory)
- 定义:记录特定事件和经历的时序记忆
- 应用场景:个人 AI 助手的用户个性化
- 存储内容:用户偏好、过去的交互、决策结果
- 在 OpenClaw 中的体现:
memory/YYYY-MM-DD.md日志文件
📖 语义记忆(Semantic Memory)
- 定义:存储事实性知识和概念理解
- 应用场景:法律、医疗、金融等领域专家 Agent
- 存储内容:领域知识、定义、规则
- 在 OpenClaw 中的体现:
MEMORY.md中的结构化知识条目
⚙️ 程序记忆(Procedural Memory)
- 定义:存储"如何做"的操作性知识
- 应用场景:工作流自动化 Agent
- 存储内容:操作步骤、最佳实践、工作流程
- 在 OpenClaw 中的体现:通过
AGENTS.md规则文件实现
二、OpenClaw 记忆架构深度解析
2.1 名称变更历史
OpenClaw 经历了多次更名:
| 时间 | 名称 | 原因 |
|---|---|---|
| 2025年11月 | Clawdbot | 原始名称,"Claude" + "Claw" 的谐音 |
| 2026年1月 | Moltbot | Anthropic 提出商标异议,因"Clawd"与"Claude"过于相似 |
| 2026年1月29日 | OpenClaw | 最终定名,经过商标调查确认可用,保留了"龙虾"元素 |
创始人 Steinberger 表示:"Clawd 诞生于 2025 年 11 月,是'Claude'加上爪子的有趣双关。直到 Anthropic 的法务团队礼貌地请我们重新考虑,这个名字感觉非常完美。"
2.2 文件系统即记忆
OpenClaw 采用了一种独特且"可黑客"的记忆架构:记忆就是工作空间中的 Markdown 文件。这与企业级工具使用的不透明嵌入数据库形成鲜明对比。
根据 OpenClaw 官方文档和深度技术分析,其记忆系统由以下子系统组成:
~/.openclaw/workspace/
├── MEMORY.md # 🧠 长期记忆(策展的核心知识)
├── memory/
│ ├── 2026-01-25.md # 📅 日志记忆(原始对话日志)
│ ├── 2026-01-26.md
│ └── 2026-01-27.md
├── AGENTS.md # 📋 程序记忆(行为规则)
└── ~/.openclaw/memory/
└── <agentId>.sqlite # 🔍 向量搜索索引(SQLite)2.3 双层记忆架构
| 记忆层 | 文件 | 特征 | 注入时机 |
|---|---|---|---|
| 长期记忆 | MEMORY.md | 策展的、精炼的、持久的 | 每次会话开始 |
| 日志记忆 | memory/YYYY-MM-DD.md | 原始的、详细的、时序的 | 今日+昨日自动加载 |
核心区别在于:
日志笔记是原始日志;MEMORY.md 是 Agent 对你世界的策展理解。
- 日志记忆 捕获所有发生的事情——对话片段、临时决定、尝试过的方案
- 长期记忆 保存真正重要的内容——你的偏好、重要决策、反复出现的上下文、经验教训
2.4 语义搜索与向量索引
OpenClaw 可以在 MEMORY.md 和 memory/*.md(以及任何你选择加入的额外目录或文件)上构建小型向量索引,以便语义查询可以找到相关笔记。
memory_search 工具特性:
- 对 Markdown 块进行语义搜索(目标约 400 token,80 token 重叠)
- 搜索范围:
MEMORY.md+memory/**/*.md - 返回内容:片段文本(上限约 700 字符)、文件路径、行范围、分数、提供商/模型
- 支持本地 → 远程嵌入的回退机制
- 索引存储位置:
~/.openclaw/memory/<agentId>.sqlite(可配置,支持{agentId}令牌)
2.5 透明性与用户控制
OpenClaw 记忆系统的一个革命性设计是其透明性。根据深度报道:
与企业工具使用的不透明嵌入数据库不同,OpenClaw 默认采用透明、"可黑客"的记忆系统——通常被描述为 MEMORY.md。这种基于文件的记忆系统允许用户充当自己 Agent 大脑的编辑者。如果机器人误解了某个偏好,用户可以直接在电脑上打开 Markdown 文件并删除那一行。
这种设计带来的优势:
- ✅ 完全透明:用户可以随时查看 Agent "记住"了什么
- ✅ 可编辑:直接修改文件即可纠正错误记忆
- ✅ 可备份:标准文件,可使用任何工具进行版本控制
- ✅ 隐私安全:所有记忆、文件和日志都存储在本地
2.6 记忆生命周期
OpenClaw 的记忆管理遵循以下生命周期:
┌─────────────────────────────────────────────────────────────────┐
│ 会话开始 (Bootstrap) │
├─────────────────────────────────────────────────────────────────┤
│ 1. 读取 MEMORY.md(长期记忆) │
│ 2. 读取今日日志 memory/2026-01-27.md │
│ 3. 读取昨日日志 memory/2026-01-26.md(最近上下文) │
│ 4. 注入 AGENTS.md 规则 │
│ 5. 加载向量索引用于语义搜索 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 对话进行中 │
├─────────────────────────────────────────────────────────────────┤
│ • 实时写入当日日志 │
│ • 按需进行语义+关键词混合搜索 │
│ • 用户可显式要求记住某些信息 │
└─────────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────────┐
│ 上下文压缩前 (Pre-Compaction) │
├─────────────────────────────────────────────────────────────────┤
│ ⚠️ 关键机制:当对话历史即将被压缩丢弃时 │
│ Agent 自动执行"静默记忆刷新": │
│ • 将重要信息持久化到 MEMORY.md │
│ • 确保关键上下文不会因压缩而丢失 │
│ • 默认提示显式声明模型可以回复,但通常 NO_REPLY 是正确响应 │
└─────────────────────────────────────────────────────────────────┘这个"压缩前刷新"(Pre-Compaction Flush)机制是 OpenClaw 的核心创新之一——它确保即使在长对话中,关键信息也不会因为上下文窗口限制而丢失。
三、隐私与安全设计
3.1 群聊场景的隐私保护
OpenClaw 在群聊(Discord 服务器、Telegram 群组)中有特殊的隐私保护机制:
在群聊中,MEMORY.md 永远不会被注入。这可以防止你的个人上下文泄露给其他参与者。日志笔记遵循类似的模式:它们在会话开始时被读取以保持连续性,但不会广播到共享上下文中。
这种设计体现了"默认安全"的原则:
| 场景 | MEMORY.md | 日志记忆 | 说明 |
|---|---|---|---|
| 私人对话 | ✅ 注入 | ✅ 注入 | 完整个人化体验 |
| 群聊 | ❌ 不注入 | ❌ 不注入 | 保护隐私 |
3.2 本地优先架构
根据 DigitalOcean 的介绍:
OpenClaw 采用"本地优先"(Local First)的设计理念,运行在 Windows、Mac、Linux 或 VPS 上。所有记忆、文件和日志都存储在本地。这使其超级安全,非常适合敏感任务。它通过尽可能在本地处理提示和文件交互,最大限度地减少数据泄露。
3.3 安全注意事项
根据 Astrix Security 的分析,OpenClaw 的设计也引起了网络安全研究人员的关注,潜在漏洞包括:
- 提示注入攻击
- 暴露的管理界面
- 本地配置文件中存储的凭据
用户在部署时需要注意适当的安全配置。
四、与其他 AI Agent 记忆系统的比较
4.1 Claude Code 的 CLAUDE.md 系统
根据 Claude Code 官方文档和上下文工程最佳实践:
Claude Code 在 2025 年发布了 176 次更新,从 beta 版迭代到 v2.0。关键里程碑包括 CLAUDE.md 记忆文件、Plan 模式、Subagents、/context 命令、Skills 和 Opus 4.5。
Claude Code 采用了类似但更结构化的记忆系统:
项目根目录/
├── CLAUDE.md # 项目级记忆/规则
├── CLAUDE.local.md # 本地个人配置(不入版本控制)
└── .claude/
└── rules/ # 模块化规则目录
├── coding-style.md
├── git-workflow.md
└── testing.mdClaude Code 的特色功能:
- 递归读取:从当前目录向上递归读取所有 CLAUDE.md 文件(直到但不包括根目录)
- 文件导入:支持
@path/to/import语法引用其他文件 - 模块化规则:
.claude/rules/目录支持将规则拆分为多个文件
2025-2026 年更新亮点:
- 修复了使用 @include 指令时意外将二进制文件(图片、PDF 等)包含在记忆中的问题
- 改进了外部 CLAUDE.md 导入审批对话框
- 内存使用优化 3 倍(针对大型对话)
- 移除了
#快捷方式用于快速记忆输入(现在告诉用户让 Claude 编辑 CLAUDE.md)
社区解决方案: 由于 Claude Code 本身没有自动记忆系统,社区开发了多种扩展:
- episodic-memory:自动将所有对话存档到
~/.config/superpowers/conversations-archive,并提供带向量搜索的 SQLite 数据库 - Claude Code Memory Bank:Cline Memory Bank 方法论的实验性改编,专门针对 Claude Code 优化
4.2 OpenCode 的 AGENTS.md 系统
根据 OpenCode 官方文档和 AGENTS.md 技术解析:
OpenCode 使用 AGENTS.md 作为其规则注入机制:
- 自由格式:AGENTS.md 是自由格式的 Markdown,直接注入到 Agent 的系统上下文
- 一次性加载:AGENTS.md 上下文在会话启动时加载一次,并在整个会话生命周期中保持不变
- 自动生成:运行
/init命令可以扫描项目并自动生成 AGENTS.md 文件
记忆插件生态:
opencode-agent-memory 插件被描述为"AGENTS.md with a harness":
它类似于 AGENTS.md 的精神,但增加了结构(带元数据和大小限制的作用域块)、专用的记忆操作工具,以及鼓励 Agent 主动维护自身记忆的提示。核心理念——给予 Agent 持久的、可自编辑的记忆块——改编自 Letta。
其他记忆插件:
- opencode-mem:使用本地向量数据库的持久记忆系统,支持双记忆作用域、Web 界面、自动捕获系统
- opencode-supermemory:使用 Supermemory 的持久记忆,跨会话、跨项目记忆
4.3 综合对比
| 特性 | OpenClaw | Claude Code | OpenCode |
|---|---|---|---|
| 长期记忆文件 | MEMORY.md | CLAUDE.md | AGENTS.md |
| 日志记忆 | memory/YYYY-MM-DD.md | ❌ 无原生支持 | ❌ 需插件 |
| 递归读取 | ❌ | ✅ | ❌ |
| 向量搜索 | ✅ 内置 | ❌ 需插件 | ❌ 需插件 |
| 压缩前刷新 | ✅ 自动 | ❌ | ❌ |
| 群聊隐私 | ✅ 自动隔离 | N/A | N/A |
| 消息平台集成 | ✅ WhatsApp/Telegram/iMessage 等 | ❌ | ❌ |
五、Token 消耗优化:对话模式 vs 直接写入模式
5.1 问题背景
这是我们在实际项目中遇到的一个关键工程问题:如何在不消耗 AI Token 的情况下管理 Agent 记忆?
在我们的 WordPress 插件(TriliumAI Agent)中,原始的记忆写入实现采用了"对话模式":
// ❌ 原始实现:对话模式(消耗 Token)
async writeToOpenClawMemory(notes, memoryMode) {
// 构造自然语言指令
const instruction = `请将以下内容追加到 ${targetFile} 文件末尾:
${memoryContent}
请使用 write 工具完成写入,并确认写入成功。`;
// 通过 WebSocket 发送给 AI 处理
return this.client.sendMessage(instruction); // 消耗 Token!
}这种方法的问题:
| 问题 | 影响 |
|---|---|
| Token 消耗 | 每次记忆写入都需要 AI 理解并执行,消耗大量 Token |
| 速率限制 | 受 AI API 速率限制影响 |
| 延迟 | 需要等待 AI 响应,延迟较高 |
| 可靠性 | AI 可能误解指令或执行失败 |
5.2 研究发现
根据 FlowHunt 的上下文工程研究和 DEV Community 的 Token 优化指南,以下策略可以显著减少 Token 消耗:
- 直接文件操作:绕过 AI 对话,直接通过 API 操作文件
- 上下文压缩:使用摘要技术压缩历史记录
- 按需检索:不加载全部记忆,而是按需搜索
- 工具外部化:通过 MCP 等协议将工具调用外部化
根据 arXiv 2601.11653 论文的实验数据:
在 100 轮对话测试中,这些技术将总 Token 消耗减少了 84%,同时仍然允许对话连贯地继续。换句话说,Agent 不需要在每一步都将整个历史塞进提示词——它可以丢弃或压缩正确的部分,并在需要时召回它们。
根据 Anthropic 的评估:
结合记忆工具和上下文编辑,在复杂多步骤基准测试中任务成功率提高了 39%。即使单独使用上下文编辑也能带来约 29% 的提升。
5.3 我们的解决方案:REST API 直接写入
我们将记忆操作从"对话模式"改造为"直接写入模式":
// ✅ 优化后:直接写入模式(零 Token 消耗)
async writeToOpenClawMemory(notes, memoryMode) {
// 格式化记忆内容(纯前端操作)
const memoryContent = this.formatMemoryContent(notes);
// 确定目标文件
const target = memoryMode === 'long_term'
? 'MEMORY.md'
: `memory/${dateStr}.md`;
// 通过 REST API 直接写入文件系统
return this.callMemoryRestApi('write', {
target: target,
content: memoryContent,
mode: 'append'
}); // 零 Token 消耗!
}技术架构变化:
┌──────────────────────────────────────────────────────────────┐
│ 原始架构(对话模式) │
├──────────────────────────────────────────────────────────────┤
│ 前端 → WebSocket → OpenClaw AI → 工具调用 → 文件系统 │
│ ↑ │
│ 消耗 Token │
└──────────────────────────────────────────────────────────────┘
↓ 优化
┌──────────────────────────────────────────────────────────────┐
│ 优化架构(直接写入) │
├──────────────────────────────────────────────────────────────┤
│ 前端 → REST API → FileBrowser API → 文件系统 │
│ │
│ 完全绕过 AI,零 Token 消耗 │
└──────────────────────────────────────────────────────────────┘5.4 实现要点
我们的解决方案涉及以下组件的改造:
| 组件 | 文件 | 改造内容 |
|---|---|---|
| PHP REST 端点 | class-openclaw-rest.php | 新增 /memory/write、/memory/read、/memory/clear、/memory/list 端点 |
| PHP 文件客户端 | class-filebrowser-client.php | 新增 get_file_content()、append_file()、clear_file() 方法 |
| JS WebSocket 客户端 | openclaw-websocket.js | 记忆方法改为调用 REST API |
| JS 工作区模块 | opencode-workspace.js | writeToOpenClawMemory() 改用 REST API |
| PHP 加载器 | class-agent-loader.php | 加载并初始化 REST 端点 |
关键代码变更(REST API 调用):
callMemoryRestApi: function(endpoint, data, method) {
method = method || 'POST';
// 使用 REST nonce(wp_rest)而不是 AJAX nonce
var url = this.config.restUrl + '/openclaw/memory/' + endpoint;
return fetch(url, {
method: method,
credentials: 'same-origin', // 确保发送 cookie
headers: {
'Content-Type': 'application/json',
'X-WP-Nonce': this.config.restNonce // WordPress REST API 认证
},
body: method !== 'GET' ? JSON.stringify(data) : undefined
}).then(response => response.json());
}通过 Docker 共享卷实现文件访问:
# docker-compose.yml
services:
openclaw:
volumes:
- ./data:/app/workspace # OpenClaw 工作空间
filebrowser:
volumes:
- ./data:/srv # FileBrowser 服务目录这样,WordPress 可以通过 FileBrowser API 直接操作 OpenClaw 的记忆文件,无需经过 AI。
六、前沿研究与未来趋势
6.1 2026 年最新动态
根据 Agent Memory Paper List 追踪的最新论文:
| 论文 | 发表时间 | 核心贡献 |
|---|---|---|
| Agentic Memory | 2026年1月 | 学习统一的长短期记忆管理 |
| EverMemOS | 2026年1月 | 用于结构化长程推理的自组织记忆操作系统 |
| MemRL | 2026年1月 | 通过运行时强化学习实现自进化的情景记忆 |
| From Storage to Experience | 2026年1月 | 提出存储→反思→经验的三阶段演化框架 |
6.2 MemoryOS:记忆操作系统
根据 arXiv 2506.06326,研究人员提出了 MemoryOS 来实现 AI Agent 的全面高效记忆管理。受操作系统内存管理原则的启发,MemoryOS 设计了包含四个关键模块的分层存储架构:
- Memory Storage(记忆存储)
- Memory Updating(记忆更新)
- Memory Retrieval(记忆检索)
- Memory Generation(记忆生成)
该架构包含三级存储单元:
- 短期记忆(Short-term Memory)
- 中期记忆(Mid-term Memory)
- 长期个人记忆(Long-term Personal Memory)
6.3 ReasoningBank:推理策略记忆库
Google Cloud AI Research 开发的 ReasoningBank 框架使 LLM Agent 能够将经验组织成记忆库。它从 Agent 解决问题的成功和失败尝试中提炼出"可泛化的推理策略",然后在推理时使用这些记忆来避免重复过去的错误。
6.4 claude-cognitive 工作记忆系统
根据 GitHub 项目,claude-cognitive 实现了基于注意力的分层记忆机制:
| 温度层 | 注意力分数 | 注入策略 |
|---|---|---|
| 🔥 HOT | > 0.8 | 完整文件注入(活跃开发) |
| ☀️ WARM | 0.25-0.8 | 仅标题注入(背景感知) |
| ❄️ COLD | < 0.25 | 不加载但可检索 |
注意力衰减机制:每个回合,注意力分数衰减 15%;提及某个主题会将相关文件跳回 1.0。
系统支持多实例协调(Instance A、B 和 default),并追踪上下文大小(平均约 18,420 字符)。采用 30 天保留策略,将注意力历史存储在 ~/.claude/attention_history.jsonl 的仅追加 JSONL 文件中。
6.5 未来方向
根据 2026 年 AI 研究展望:
"2026 年可能会被记住为 AI 研究从'我们能做多大'转向'我们如何高效地变聪明'的一年。智能,事实证明,与参数数量关系不大,而与架构、记忆以及知道何时深度思考、何时快速思考更为相关。"
核心论点已经明确:记忆不是外围功能,而是未来智能体设计的基础原语。没有健壮的记忆系统,AI Agent 无法维持行为一致性、从经验中学习或适应不断变化的环境。
根据 Claude Code Meetup Tokyo 的信息,开发者 Boris Cherny 表示对两个方向感兴趣:
- 长时间运行任务(Long Running Tasks):支持跨越数小时甚至数天的任务
- 群体智能(Swarm):多 Agent 协作和记忆共享
七、实践建议
7.1 选择合适的记忆架构
| 场景 | 推荐架构 | 理由 |
|---|---|---|
| 个人 AI 助手 | OpenClaw 模式 | 完整的日志+长期记忆,隐私保护,多平台消息集成 |
| 代码助手 | Claude Code 模式 | 项目级规则,递归继承 |
| 团队协作 | OpenCode + 插件 | 灵活的插件生态 |
7.2 Token 优化最佳实践
- 区分读写路径:读取需要 AI 理解,写入可以绕过 AI
- 利用共享存储:通过 Docker 卷或共享文件系统实现直接访问
- 实现 REST API 层:为前端提供直接文件操作的能力
- 使用正确的认证:WordPress REST API 需要
wp_restnonce
📚 参考资料与延伸阅读
官方文档
深度分析
- Deep Dive: How OpenClaw's Memory System Works
- ClawBot's Architecture Explained: How a Lobster Conquered 100K GitHub Stars
- OpenClaw: How a Weekend Project Became an Open-Source AI Sensation
- From Clawdbot to Moltbot to OpenClaw (CNBC)
- What is OpenClaw? (DigitalOcean)
学术论文
- Memory in the Age of AI Agents (arXiv:2512.13564)
- AI Agents Need Memory Control Over More Context (arXiv:2601.11653)
- Memory OS of AI Agent (arXiv:2506.06326)
- From Storage to Experience: A Survey on the Evolution of LLM Agent Memory Mechanisms
社区资源
📝 小结
本文深入探讨了 AI Agent 记忆系统的理论基础与工程实践:
- 理论层面:理解了情景记忆、语义记忆、程序记忆三种核心记忆类型及其应用场景
- 架构层面:详细分析了 OpenClaw 的 MEMORY.md + 日志记忆双层架构,以及与 Claude Code、OpenCode 的对比
- 工程层面:解决了实际项目中的 Token 消耗问题,将"对话模式"改造为"直接写入模式"
- 前沿层面:了解了 2026 年最新的记忆系统研究动态和未来发展方向,包括 MemoryOS、ReasoningBank 等创新框架
核心洞见:
在 AI Agent 时代,记忆不再是可选项,而是核心竞争力。选择透明、可控、高效的记忆架构,将直接决定你的 Agent 能走多远