Generative Agents 与 MemGPT:跨轮次记忆与 Agent 系统


一、记忆问题的形式化

1.1 单轮对话的局限

标准 LLM 的设置

给定当前输入 和对话历史 ,生成响应:

问题:当对话轮次很多时:

  1. 上下文长度限制:LLM 有最大上下文长度(如 4K/8K/32K tokens)
  2. 距离衰减:早期的重要信息在上下文中被稀释
  3. 计算成本:长上下文带来二次方 attention 成本

1.2 记忆的层级

定义(记忆层级)

层级描述容量访问频率
上下文记忆当前上下文中的信息~4K-32K tokens最高
短期记忆最近几轮对话~10-50 轮
长期记忆整个对话历史无限制
情节记忆重要事件的高层摘要中等

1.3 记忆管理的核心问题

问题 1:信息该存在哪里?

  • 不是所有信息都值得存在记忆中
  • 重要的、经常使用的信息应该优先保留

问题 2:信息如何被检索?

当需要时,如何从记忆中快速找到相关信息?

问题 3:信息如何更新?

记忆应该随着时间推移而更新,而不是无限累积。

1.4 记忆的两大核心分类

隐式记忆(Implicit Memory)

  • 融入模型参数的长期知识
  • 通过预训练获得,难以直接查询
  • 如:语言能力、通用世界知识

显式外部记忆(Explicit Memory)

  • 文本/向量持久化存储的交互记忆
  • Agent 体系全部依托显式外部记忆搭建
  • 如:对话历史、关键事件、用户偏好
类型存储形式访问方式容量
隐式记忆模型参数无法直接查询有限但较大
显式记忆外部向量库/文本检索召回可扩展

二、Generative Agents:模拟人类行为的 Agent

2.1 核心思想

Generative Agents(Park et al., 2023)的核心是:构建一个能够跨时间保持一致性的虚拟 Agent 社会。

经典实验背景:虚拟小镇多人社会仿真

原版论文设计了 Sandbox 虚拟小镇仿真环境:

  • 25 个智能体模拟人类日常社交行为
  • 公园、咖啡馆、商店、学校等生活场景
  • 支持多智能体之间的自然对话、社交关系建立、协同活动

关键创新

  1. 观察-反思-检索-规划的循环框架
  2. 动态记忆流:随时间累积和更新信息
  3. 行为生成:基于记忆和当前状态生成行为

2.2 Generative Agents 的架构

核心组件

┌─────────────────────────────────────────────┐
│            Generative Agent                  │
├─────────────────────────────────────────────┤
│  感知模块 (Perception)                       │
│  → 从环境中接收事件                         │
├─────────────────────────────────────────────┤
│  记忆流 (Memory Stream)                      │
│  → 存储所有观察和反思                        │
│  → 支持增量和检索                           │
├─────────────────────────────────────────────┤
│  反思模块 (Reflection)                      │
│  → 定期总结记忆为高层见解                    │
│  → 指导未来行为                             │
├─────────────────────────────────────────────┤
│  规划模块 (Planning)                         │
│  → 将高层目标分解为具体行动                  │
│  → 生成行为序列                             │
└─────────────────────────────────────────────┘

2.3 记忆流的数学表示

定义(记忆)

记忆 是一个三元组:

其中:

  • :时间戳
  • :记忆内容
  • :重要程度评分

定义(记忆流)

记忆流 是按时间排序的记忆序列:

2.4 观察(Observation)

观察的定义

Agent 从环境接收观察

示例

[观察到] Isabella Rodriguez 正在收银台前排...

观察的处理

观察是原始环境输入,记忆是结构化编码存储后的信息。每个观察都被编码并存储到记忆流中:

观察→记忆的流转映射

原始环境事件 → 感知模块 → 原始观察 o
     ↓
编码器处理 → 结构化记忆 m = (t, content, importance)
     ↓
存储至记忆流 M

2.5 检索(Retrieval)

检索函数

给定当前状态 ,检索相关的记忆:

其中 是 top- 个最相关的记忆。

检索的相关性评分

其中:

  • :新近度,越新越高
  • :与当前状态的相关性
  • :记忆的重要性评分

检索权重实战调参

权重推荐值说明
(新近度)0.3近期记忆权重
(相关性)0.5语义相关度权重
(重要性)0.2重要性评分权重

记忆重要性场景化打分规则

场景评分策略
日常对话评分偏低
人格设定、核心目标强制拉高权重
关键事件、情绪转折点拉高权重

2.6 反思(Reflection)

反思的触发条件

当累积的观察数量超过阈值时,触发反思:

其中 为近期新增记忆集合, 为数量阈值。

双重反思触发机制

触发方式说明适用场景
数量触发累积观察超过阈值日常对话、实时交互
时间周期触发固定时长自动复盘总结长时间离线 Agent

反思的数学表示

反思 是对近期记忆的高层总结:

反思的内容

  • 当前状态的解释
  • 相关的高层模式
  • 未来行为的建议

反思存储

反思结果作为新的记忆存储:

2.7 规划(Planning)

规划的层级

  1. 高层目标:Agent 想要实现什么
  2. 行动序列:具体要做什么
  3. 时间安排:什么时候做

数学表示

给定高层目标 ,生成行动序列:

其中每个 是具体的行动。


三、MemGPT:层级记忆管理

3.1 核心思想

MemGPT(Packer et al., 2023)的核心是:将不同层级的记忆显式化,通过记忆管理机制在层级之间移动信息。

关键创新

  1. 上下文层级:将 LLM 上下文视为”寄存器”
  2. 主存层级:作为持久化存储
  3. 存储系统层级:作为外部存储
  4. 智能检索:根据需要动态加载/卸载

3.2 层级记忆架构

三层架构

┌────────────────────────────────────────────────────┐
│         上下文窗口内存 (LLM Context Window)         │
│         - 当前对话上下文                            │
│         - 最近的记忆片段                            │
│         - 当前任务相关的检索结果                     │
│  [容量限制:4K-128K tokens]                         │
└────────────────────────────────────────────────────┘
                          ↑↓
┌────────────────────────────────────────────────────┐
│            核心工作内存 (Working Memory)             │
│         - 中期记忆                                 │
│         - 重要但非紧急的信息                        │
│         - Agent 的当前状态摘要                      │
│  [容量:约 50-100 个记忆单元]                      │
└────────────────────────────────────────────────────┘
                          ↑↓
┌────────────────────────────────────────────────────┐
│            归档长期内存 (Archive Storage)           │
│         - 长期记忆                                 │
│         - 历史对话摘要                              │
│         - 事实和知识                                │
│  [容量:几乎无限]                                  │
└────────────────────────────────────────────────────┘

核心机制:虚拟分页与自动上下文溢出

MemGPT 突破 LLM 上下文长度上限的核心原理:

  1. 上下文塞满自动挤出:当上下文窗口占用达 80% 阈值时,自动将旧内容挤出存入工作内存
  2. 工作内存溢出归档:当工作内存也满时,将低优先级记忆下沉至归档长期内存
  3. 按需回溯检索:需要历史信息时,从归档层召回至工作内存

溢出阈值调参:通用模型上下文占用达 80% 容量时自动触发内存挤出,为行业通用阈值。

3.3 记忆管理操作

MemGPT 支持的操作

操作说明从 → 到
RECALL从存档中检索并加载到工作记忆Archive → Working
EMIT将工作记忆写入存档Working → Archive
RETAIN将上下文片段保留在工作记忆Context → Working
BURY将工作记忆放入存档Working → Archive

Algorithm: Memory Management

while agent running:
    # 评估当前上下文状态
    context_utility = evaluate_context(current_messages)

    # 如果上下文太满,溢出到工作记忆
    if context_overflow():
        emit_to_working_memory(least_recent_messages())

    # 如果工作记忆太满,溢出到存档
    if working_memory_overflow():
        emit_to_archive(least_important_memories())

    # 如果需要检索,从存档加载
    if need_to_recall():
        recalled = recall_from_archive(query)
        load_to_working_memory(recalled)

3.4 智能检索策略

检索决策

当处理查询时,MemGPT 决定是否需要从存档检索:

检索排序

3.5 MemGPT vs Generative Agents

维度Generative AgentsMemGPT
记忆表示自然语言叙事结构化记忆单元
检索方式基于重要性和相关性的检索动态层级管理
反思机制定期总结可选的反思触发
架构层级2层(记忆流+检索)3层(上下文+工作+存档)

3.6 多 Agent 记忆机制

Generative Agents 支持群体记忆共享 + 个体记忆隔离

机制说明适用场景
群体记忆共享公共事件(如公共讨论)同步至所有 Agent虚拟社群仿真
个体记忆隔离每个 Agent 维护独立记忆流隐私敏感场景
混合记忆共享记忆 + 私有记忆叠加复杂社交场景

记忆共享的同步策略

公共事件发生 → 广播至所有相关 Agent → 各 Agent 更新私有记忆流

3.7 主流同类记忆 Agent 对比

模型核心创新记忆管理方式适用场景
Generative Agents观察-反思-检索-规划循环记忆流 + 重要性检索长期一致性 Agent
MemGPT虚拟分页 + 上下文溢出三层层级管理突破上下文限制
Reflexion语言强化反思自我评估 + 口头反馈语义级自我改进
AutoGPT长期记忆存储向量数据库 + 摘要自主任务执行

四、Agent 系统的核心算法

4.1 Agent-Environment 交互

定义(Agent 循环)

其中 是状态, 是行动。

行动生成

4.2 观察过滤

问题:不是所有观察都值得记忆。

解决方案:使用重要性评分过滤:

只保留高于阈值的观察:

4.3 记忆压缩

问题:记忆流会无限增长。

解决方案:定期压缩记忆。

压缩策略

  1. 摘要压缩:将多个记忆合并为一个高层摘要
  2. 重要性过滤:只保留最重要的记忆
  3. 时间窗口:只保留最近 个记忆

数学表示

其中 为老旧批量记忆, 为高价值保留记忆。

4.4 目标一致性

问题:Agent 的行为应该与高层目标一致。

定义(目标)

其中每个 是一个子目标。

目标跟踪

重新规划

当目标无法完成时,重新规划:


五、训练过程与问题

5.1 记忆系统的训练

记忆编码器训练

使用对比学习训练记忆编码器:

重要性评分器训练

使用人类标注的重要性数据训练:

5.2 训练中的常见问题

问题 1:遗忘早期重要信息

表现:Agent 记住了最近的,忘记了重要的早期信息。

解决方案

  1. 重要性评分应该考虑信息的长期价值
  2. 使用定期检查点保存重要记忆

问题 2:记忆过度膨胀

表现:记忆流变得很大,检索变慢。

解决方案

  1. 设置记忆上限
  2. 使用记忆压缩
  3. 分层存储

问题 3:检索质量差

表现:检索到的记忆不相关。

解决方案

  1. 改进检索模型
  2. 使用更丰富的查询表示
  3. 多样性检索(避免返回相似的多个记忆)

5.3 对话一致性问题

问题:Agent 在不同轮次中表现不一致。

原因

  1. 记忆没有被正确检索
  2. 记忆被错误更新
  3. 检索时忽略了关键信息

解决方案

  1. 确保检索包含所有相关的历史
  2. 使用一致性约束
  3. 定期验证记忆的正确性

六、实际应用中的挑战

6.1 记忆与上下文的边界

问题:如何决定信息该存在记忆里还是上下文里?

原则

  • 上下文:当前对话直接相关的信息
  • 工作记忆:Agent 的当前状态和目标
  • 存档:历史信息和知识

6.2 实时更新 vs 批量更新

实时更新:每个观察立即存储

批量更新:定期总结和压缩

混合策略:重要信息实时存储,不重要的批量处理。

6.3 安全性与隐私

问题:记忆可能包含敏感信息。

解决方案

  1. 记忆加密
  2. 访问控制
  3. 定期清理
  4. 隐私脱敏:自动识别对话内手机号、证件号等隐私内容,加密存储/自动脱敏

6.4 向量记忆库选型

场景推荐选型说明
轻量测试Chroma、FAISS部署简单,适合快速验证
线上生产Pinecone、Milvus分布式支持,高可用
本地部署Qdrant、Weaviate开源可控,数据安全

6.5 记忆摘要通用 Prompt 模板

请将以下记忆内容压缩为高层摘要,保留核心事件、情绪和意图:

原始记忆:
{原始记忆内容}

要求:
- 提取关键人物和事件
- 保留情绪色彩和意图
- 删除冗余细节
- 摘要长度不超过原文的 20%

6.6 冷热记忆调度策略

策略说明实现方式
高频常驻调用频繁的记忆常驻工作内存LRU 缓存
低频下沉历史记忆下沉归档自动降级
按需召回需要时从归档回溯至工作内存动态加载

七、数学公式速查

7.1 记忆表示

记忆

记忆流

7.2 检索公式

检索评分

7.3 记忆管理

RECALL 操作

EMIT 操作


八、总结

Generative Agents vs MemGPT

方面Generative AgentsMemGPT
核心创新观察-反思-检索-规划循环层级记忆管理系统
记忆表示自然语言叙事结构化层级
检索方式重要性加权的动态检索智能层级管理
适用场景长时间一致性的 Agent突破上下文限制

核心洞察

记忆是 Agent 系统的基础设施。Generative Agents 强调如何动态管理记忆流,MemGPT 强调如何在有限的上下文和无限的记忆之间做层级管理。两者都指向同一个问题:如何让模型在长期交互中保持一致性和知识

关键挑战

  1. 信息的压缩与摘要
  2. 检索的相关性排序
  3. 记忆与当前上下文的融合
  4. 长时间一致性

延伸阅读

  1. Park et al., “Generative Agents: Interactive Simulacra of Human Behavior” (UIST 2022)
  2. Packer et al., “MemGPT: Towards LLMs as Operating Systems” (2023)
  3. Shinn et al., “Reflexion: Language Agents with Verbal Reinforcement Learning” (NeurIPS 2023)
  4. Liu et al., “Let Me Tell You a Story: Long-Term Memory for Agent Applications” (2023)
  5. Zhong et al., “Memory Sandbox: Unified Memory Platform for LLM Applications” (2023)