没有记忆的 Agent 是无状态工具——每次对话都从零开始,无法积累经验,无法适应用户。有了记忆,Agent 才能成为有状态的协作者:
| 类型 | 存储位置 | 特点 | 示例 |
|---|---|---|---|
| Token 级 | 上下文窗口中的显式文本 | 可读、可编辑、有容量限制 | 对话历史、System Prompt |
| 参数级 | 模型权重 | 隐式、通过训练获得 | Fine-tuning、RLHF |
| 隐式/潜在级 | 隐藏状态和激活 | 中间计算、不可直接访问 | Attention 缓存、KV Cache |
对于 Agent 系统(不做 fine-tuning),主要关注 Token 级记忆的工程实现。
借鉴认知心理学的分类:
| 类型 | 内容 | 人类类比 | Agent 实现 |
|---|---|---|---|
| 情景记忆(Episodic) | “上周二,方案 X 因为 Z 失败了” | 个人经历 | 对话历史 RAG、.learnings/ |
| 语义记忆(Semantic) | “条件 A+B 时方案 X 效果最好” | 知识百科 | 知识图谱、向量库、CLAUDE.md |
| 程序记忆(Procedural) | “如何执行部署流程” | 肌肉记忆 | 函数/技能、Tool 定义、代码 |
存储具体事件,包含时间、地点、情境、结果等上下文信息。
实现方式:
.learnings/ERRORS.md,结构化的情景记忆应用场景:
用户: "上次我们怎么解决了 Docker 权限问题来着?"
Agent: [检索情景记忆] "2026-03-15 我们通过将用户添加到 docker group 解决了此问题"
从具体经验中提炼出的通用知识和事实。
实现方式:
应用场景:
Agent 知道: "本项目使用 PostgreSQL 16,测试不允许 mock 数据库"
→ 这是从多次经验中提炼出的通用规则
“如何做”的知识——已学会的技能和行为模式。
实现方式:
应用场景:
Agent 面对 "部署到生产环境" 的请求,自动执行:
1. 运行测试 → 2. 构建镜像 → 3. 推送到 Registry → 4. 更新 K8s 配置
定位:SaaS 记忆层,为 AI 应用提供即插即用的记忆能力。
| 特性 | 详情 |
|---|---|
| 核心能力 | 从对话中自动提取记忆,用于个性化 |
| 性能 | p95 延迟降低 91%,token 成本节约 90%+ |
| 架构 | 云 API,无需自建基础设施 |
| 适用 | 需要快速集成记忆能力的产品 |
Y Combinator 支持,目前生产就绪度最高。
定位:记忆即 Agent 状态——记忆是 Agent 的一等公民,而非附加功能。
| 特性 | 详情 |
|---|---|
| 核心能力 | 可编辑的记忆块、有状态的记忆运行时 |
| 特色 | Agent 可以自主管理自己的记忆 |
| 架构 | 自部署,完全控制数据 |
| 适用 | 需要深度记忆定制的 Agent 系统 |
MemGPT 论文的核心思想:将操作系统的虚拟内存概念应用到 LLM 上下文管理。
定位:情景 + 时序记忆,基于知识图谱。
| 特性 | 详情 |
|---|---|
| 核心能力 | Graphiti 引擎,多层记忆(情景 + 语义 + 群组) |
| 特色 | 时间感知的记忆检索 |
| 架构 | 自部署,图数据库后端 |
| 适用 | 需要复杂关系建模的记忆场景 |
| 你的需求 | 推荐框架 |
|---|---|
| 快速集成,不想自建基础设施 | Mem0 |
| Agent 需要自主管理记忆,深度定制 | Letta |
| 需要复杂关系建模和时序查询 | Zep |
| 轻量级,文件即记忆 | 自建(参考 Claude Code 的文件记忆模式) |
Claude Code 实现了从宏观到微观的 6 层记忆体系:
┌─────────────────────────────────────────────┐
│ Layer 1: Organization (组织级 - 全局规则) │
├─────────────────────────────────────────────┤
│ Layer 2: Project (项目级 - CLAUDE.md) │
├─────────────────────────────────────────────┤
│ Layer 3: User (用户级 - 偏好、反馈) │
├─────────────────────────────────────────────┤
│ Layer 4: Auto-Learned (自动学习 - 模式识别) │
├─────────────────────────────────────────────┤
│ Layer 5: Session (会话级 - 当前对话) │
├─────────────────────────────────────────────┤
│ Layer 6: Task (任务级 - 当前任务进度) │
└─────────────────────────────────────────────┘
关键设计:
Claude Code 记忆系统的完整架构,详见第8章 Claude Code 深度解析。
记忆的更高阶应用是让 Agent 从经验中自主学习和进化——不是模型微调,而是通过修改加载到上下文窗口的文件内容来改变 Agent 行为。
Agent 在以下场景中触发自我改进:
| # | 触发条件 | 示例 |
|---|---|---|
| 1 | 命令/操作意外失败 | Docker 命令因权限不足失败 |
| 2 | 用户纠正 Agent | “不要用 mock,要用真实数据库” |
| 3 | 用户请求缺失功能 | “你能不能监控目录变化?” |
| 4 | 外部 API/工具失败 | GitHub API 返回 rate limit 错误 |
| 5 | Agent 发现自身知识过时 | 尝试使用已废弃的 API |
| 6 | 发现更优方法 | 找到比当前方案更高效的命令 |
OpenClaw 是 Agent 自进化机制的典型实现,展示了完整的”学习→存储→晋升→进化”流程。
存储架构:
.learnings/
├── LEARNINGS.md # 通用学习记录
├── ERRORS.md # 错误模式与修复方案
└── FEATURE_REQUESTS.md # 用户请求的功能追踪
每条学习记录包含结构化元数据(唯一 ID、时间戳、优先级、状态、领域标签),支持后续检索和统计。
知识晋升机制:
学习记录不会永远停留在 .learnings/ 目录。当某条学习被验证为高价值且具有普遍性时,它被”晋升”到 Workspace 级别:
.learnings/ (临时学习)
│ 验证 + 泛化
▼
Workspace 文件 (持久化行为规则)
├── CLAUDE.md → 项目级指令
├── AGENTS.md → Agent 配置
└── SOUL.md → 人格与沟通风格
晋升条件:同类错误出现 3+ 次,或用户反复给出相同纠正。一旦写入 Workspace 文件,该规则在所有未来会话中自动加载。
Foundry 元进化——”构建 Agent 的 Agent”:
当某个操作模式达到 5+ 次使用且 70%+ 成功率时,OpenClaw Foundry 将其自动结晶为独立的 Skill/工具,包含工具定义、执行逻辑、测试用例和文档。这实现了 Agent 能力的自主扩展。
ZeroClaw:OpenClaw 的 Rust 轻量级替代方案,保留核心自进化机制,二进制仅 3.4MB,冷启动 <10ms,面向生产环境和安全敏感场景。
自进化不是无条件的好事:
Multi-Graph based Agentic Memory Architecture——基于多图结构的 Agent 记忆架构,将不同类型的记忆组织在关联的图结构中。
生产系统通常组合多种记忆类型:
短期记忆 (上下文窗口)
↕ 压缩/检索
中期记忆 (会话级缓存)
↕ 提炼/索引
长期记忆 (向量库 + 知识图谱 + 文件)