OpenClaw记忆架构:从短期上下文到长期记忆的工程实现
引言 记忆是人类智能的基石,同样也是AI Agent的核心能力。一个没有记忆的Agent每次对话都从零开始,无法积累经验、学习偏好、维持连续性。OpenClaw在记忆系统设计上进行了深度工程探索,构建了一套从短期上下文到长期记忆的多层架构。本文将全面解析其设计与实现。 记忆的层次模型 OpenClaw将Agent记忆分为四个层次,类比人类认知科学中的记忆分类: ┌─────────────────────────────────────────────┐ │ Layer 4: 损失无关回忆 (Lossless Recall) │ ← LCM压缩与精确回溯 ├─────────────────────────────────────────────┤ │ Layer 3: 长期记忆 (Long-term Memory) │ ← MEMORY.md 策略性记忆 ├─────────────────────────────────────────────┤ │ Layer 2: 每日记忆 (Daily Memory) │ ← 按天组织的原始记录 ├─────────────────────────────────────────────┤ │ Layer 1: 工作记忆 (Working Memory) │ ← 当前会话上下文窗口 └─────────────────────────────────────────────┘ Layer 1: 工作记忆 工作记忆即模型的上下文窗口,是最快但最有限的记忆层: class WorkingMemory: """管理当前会话的上下文窗口""" def __init__(self, max_tokens: int = 128000): self.max_tokens = max_tokens self.messages: list[Message] = [] self.token_counter = TokenCounter() def add(self, message: Message): """添加消息,超出限制时触发压缩""" self.messages.append(message) if self.token_counter.count(self.messages) > self.max_tokens * 0.85: self._compact() def _compact(self): """上下文压缩策略""" # 保留最近N轮完整对话 recent = self.messages[-10:] # 将较早的消息压缩为摘要 older = self.messages[:-10] summary = self._summarize(older) self.messages = [summary] + recent 工作记忆的挑战在于上下文窗口的有限性。即使200K token的窗口也会在长对话中耗尽。OpenClaw的策略是渐进式压缩——先压缩最老的消息,保留最近对话的完整性。 ...