OpenClaw 的三大核心架构系统:Memory/Dreaming、上下文引擎与 Prompt-Cache
TL;DR
OpenClaw 的三大核心架构系统:Memory/Dreaming、上下文引擎与 Prompt-Cache | 触发:在构建 OpenClaw Agent 系统时,理解了其后台记忆整合系统(Memo
触发场景
在构建 OpenClaw Agent 系统时,理解了其后台记忆整合系统(Memory/Dreaming)、上下文组装引擎(Context Engine)和提示词缓存机制(Prompt-Cache)三个核心模块的原理。这三个模块共同决定了 Agent 在每个 turn 中「应该看到什么」以及「如何高效计算」。
行动步骤
- 它在 Agent「睡眠」或空闲时自动扫描
memory/目录下的每日日志、聊天记录、事件
- 分阶段处理(类似 REM/Deep/Light 睡眠):
- 提取事实(fact extraction)
- 提炼 durable long-term memory
- 去除冗余
- 处理后的「梦境事实」会回填(backfill)到当前上下文或 durable memory 表
- 目的:防止长期记忆膨胀,同时让 Agent 像真人一样「晚上做梦巩固记忆」
- 最新版支持
dreaming.frequency: "per-turn"(每个 turn 轻量处理)
- 默认使用内置 legacy context engine
- 负责每 turn 把以下内容有序组装成最终 Prompt:
- bootstrapFiles(世界观/规则)
- Memory/Dreaming 输出的 durable facts
- Session 历史(修剪后)
- 工具调用结果、实时状态等
- 支持插件(
kind: "context-engine"),可实现自定义assemble()/afterTurn()钩子
- 核心作用:决定「这一刻 Agent 应该看到什么」
- 处理 compaction(压缩)、pruning(裁剪)、snapshot(快照)
- 与 Memory 插件配合,但独立控制最终给模型的上下文内容
- OpenClaw 在 System Prompt 块上注入
cache_control标记(Anthropic/OpenRouter 等模型支持)
- 当 bootstrapFiles、规则、世界观等不变时,模型只需重新计算新消息部分
- 缓存命中可大幅降低 token 消耗和延迟
- 每次 bootstrap 文件或上下文引擎输出变化时,OpenClaw 会主动失效(invalidate)缓存,确保一致性
- 最新版还暴露 prompt-cache runtime stats(
usageLine、cacheLine)给 context engine 使用
证据
1. Memory/Dreaming(后台记忆整合系统)
原理:类人睡眠周期的后台记忆巩固机制(Background Memory Consolidation)
- 它在 Agent「睡眠」或空闲时自动扫描
memory/目录下的每日日志、聊天记录、事件 - 分阶段处理(类似 REM/Deep/Light 睡眠):
1. 提取事实(fact extraction)
2. 提炼 durable long-term memory
3. 去除冗余
- 处理后的「梦境事实」会回填(backfill)到当前上下文或 durable memory 表
- 目的:防止长期记忆膨胀,同时让 Agent 像真人一样「晚上做梦巩固记忆」
- 最新版支持
dreaming.frequency: "per-turn"(每个 turn 轻量处理)
2. 上下文引擎(Context Engine)
原理:可插拔的上下文组装与管理引擎(pluggable Context Assembly Engine)
- 默认使用内置 legacy context engine
- 负责每 turn 把以下内容有序组装成最终 Prompt:
1. bootstrapFiles(世界观/规则)
2. Memory/Dreaming 输出的 durable facts
3. Session 历史(修剪后)
4. 工具调用结果、实时状态等
- 支持插件(
kind: "context-engine"),可实现自定义assemble()/afterTurn()钩子 - 核心作用:决定「这一刻 Agent 应该看到什么」
- 处理 compaction(压缩)、pruning(裁剪)、snapshot(快照)
- 与 Memory 插件配合,但独立控制最终给模型的上下文内容
3. prompt-cache(提示词缓存机制)
原理:利用底层 LLM 原生缓存能力(cache_control / prefix caching)来复用不变的 Prompt 部分
- OpenClaw 在 System Prompt 块上注入
cache_control标记(Anthropic/OpenRouter 等模型支持) - 当 bootstrapFiles、规则、世界观等不变时,模型只需重新计算新消息部分
- 缓存命中可大幅降低 token 消耗和延迟
- 每次 bootstrap 文件或上下文引擎输出变化时,OpenClaw 会主动失效(invalidate)缓存,确保一致性
- 最新版还暴露 prompt-cache runtime stats(
usageLine、cacheLine)给 context engine 使用
失败边界
暂无已知失败边界
易混淆场景
暂无已知混淆场景
原理
这三个系统体现了记忆与注意力分离的架构哲学:
| 模块 | 功能 | 类比 |
|------|------|------|
| Memory/Dreaming | 记忆的写入与巩固 | 海马体(睡眠时整理记忆) |
| Context Engine | 决定「此刻给什么上下文」 | 前额叶皮层(选择性注意) |
| Prompt-Cache | 高效传输已确认的上下文 | 工作记忆的「缓存命中」 |
这个三层架构的巧妙之处在于:它模拟了人类认知系统中的记忆-注意-工作流,而非简单地堆叠上下文窗口。Memory/Dreaming 解决了「记住什么」的问题,Context Engine 解决了「此刻关注什么」的问题,Prompt-Cache 则解决了「如何高效传输」的问题。
OpenClaw 的插件化设计(kind: "context-engine")也体现了开放封闭原则:核心上下文组装逻辑封闭,但对扩展开放,允许自定义 assemble() 和 afterTurn() 钩子来干预上下文组装过程。
关联与延伸
- 相关笔记:[[INDEX-ai]]
- 延伸阅读:- 相关文档:[[OpenClaw 系统原理与复合工程]]、[[Agent 长期记忆系统设计]]
- 应用场景:长时间对话 Agent、需要跨 Session 记忆的 Agent、高频短交互场景
- 技术依赖:需要底层 LLM 支持
cache_control(如 Anthropic、OpenRouter 等) - 关联系统:ERC8004 身份验证(结合可形成完整的 Agent 身份与记忆体系)
使用记录
| 日期 | 项目/场景 | 结果 | 备注 |
|------|----------|------|------|