🤖 Generative Agents

Interactive Simulacra of Human Behavior

源码级别解析 · 源码深度解析 · 多智能体行为模拟框架
2026-04-11 | 每日技术深度解读

研究背景与概述

斯坦福大学研究成果
  • 人类行为模拟
  • 多智能体交互
  • 长期记忆与认知
  • 现实世界应用

基于 arXiv:2304.03442 研究论文

系统架构概览

核心组件架构
  • ReverieServer: 仿真服务器
  • Persona: 智能体类
  • Memory Systems: 记忆结构
  • Cognitive Modules: 认知模块
  • Environment: 环境系统

模块化设计,支持扩展与定制

项目结构分析

目录组织
  • reverie/: 核心仿真逻辑
  • environment/: 前端环境
  • persona/: 智能体实现
  • global_methods/: 全局方法

清晰的分层架构设计

ReverieServer 主类

class ReverieServer: 
  def __init__(self, fork_sim_code, sim_code):
    # 叉式模拟:从已有模拟分支
    self.fork_sim_code = fork_sim_code
    fork_folder = f"{fs_storage}/{self.fork_sim_code}"
    
    # 当前模拟代码
    self.sim_code = sim_code
    sim_folder = f"{fs_storage}/{self.sim_code}"
    copyanything(fork_folder, sim_folder)

支持模拟的分支与继承机制

时间管理系统

游戏时间控制
  • start_time: 开始时间
  • curr_time: 当前时间
  • sec_per_step: 每步秒数
  • step: 步数计数器

真实时间与游戏时间的映射关系

时间推进机制

# 每步推进游戏时间
self.curr_time = self.curr_time + datetime.timedelta(
    seconds=self.sec_per_step)

# 更新步数
self.step += 1

# 保存模拟状态
self.save_simulation()

基于时间步长的推进逻辑

Persona 智能体架构

核心智能体类
  • name: 身份标识
  • memory: 记忆系统
  • cognitive_modules: 认知模块
  • actions: 行动能力

每个智能体具有完整的认知能力

记忆系统架构

三层记忆结构
  • Spatial Memory: 空间记忆
  • Associative Memory: 关联记忆
  • Scratch: 工作记忆

短期与长期记忆的分层管理

Persona 初始化

class Persona: 
  def __init__(self, name, folder_mem_saved=False):
    # 身份标识
    self.name = name
    
    # 空间记忆 - 树形结构
    f_s_mem_saved = f"{folder_mem_saved}/bootstrap_memory/spatial_memory.json"
    self.s_mem = MemoryTree(f_s_mem_saved)
    
    # 关联记忆 - 语义网络
    f_a_mem_saved = f"{folder_mem_saved}/bootstrap_memory/associative_memory"
    self.a_mem = AssociativeMemory(f_a_mem_saved)

加载预训练的记忆数据

空间记忆实现

环境空间认知
  • MemoryTree: 树形数据结构
  • 位置-物体映射
  • 空间关系维护
  • 环境探索记录

智能体对物理世界的理解

空间记忆树结构

"""
空间记忆结构示例:
{
  "double studio": {
    "double studio": {
      "bedroom 2": ["painting", "easel", "closet", "bed"]
    }
  }
}
"""

class MemoryTree:
    def __init__(self, saved_file):
        # 从JSON文件加载空间记忆
        self.tree = json.load(open(saved_file))

层次化的空间表示

关联记忆深度分析

语义记忆网络
  • ConceptNode: 概念节点
  • 三元组存储(S-P-O)
  • 嵌入向量检索
  • 关键词关联
  • 情绪权重(poignancy)

基于语义关联的记忆检索

ConceptNode 数据结构

class ConceptNode:
    def __init__(self, node_id, type, created, expiration, 
                 s, p, o, description, embedding_key, 
                 poignancy, keywords, filling):
        self.node_id = node_id
        self.type = type  # event/thought/chat
        self.created = created
        self.expiration = expiration
        self.subject = s
        self.predicate = p
        self.object = o
        self.description = description
        self.embedding_key = embedding_key
        self.poignancy = poignancy  # 情绪权重
        self.keywords = keywords
        self.filling = filling

完整的语义表示单元

记忆检索机制

智能记忆检索
  • 嵌入相似度计算
  • 关键词匹配
  • 时间衰减
  • 情绪权重调节
  • 多模态检索

结合语义与上下文的检索策略

Scratch 工作记忆

短期记忆空间
  • 当前状态信息
  • 临时决策数据
  • 对话上下文
  • 计划执行状态

快速访问的工作内存

Scratch 数据结构

"""
工作记忆JSON结构:
{
  "curr_time": "2023-06-25 10:30:00",
  "curr_location": "bedroom 2",
  "last_action": "move_to_bathroom",
  "plan": "brush_teeth",
  "dialogue_context": []
}
"""

class Scratch:
    def __init__(self, saved_file):
        self.data = json.load(open(saved_file))

轻量级的短期记忆管理

认知模块架构

六大认知能力
  • Perceive: 感知环境
  • Retrieve: 记忆检索
  • Plan: 制定计划
  • Reflect: 反思总结
  • Execute: 执行行动
  • Converse: 对话交流

完整的人类认知模拟

Perceive 感知模块

环境感知机制
  • 注意力带宽控制
  • 感知范围限制
  • 新鲜感知过滤
  • 感知历史跟踪

智能化的环境感知

感知算法实现

def perceive(self, maze):
    """
    感知周围事件,受两个关键参数控制:
    1. att_bandwidth: 注意力带宽,感知事件数量限制
    2. retention: 保留时间,避免重复感知
    """
    # 获取视野内的事件
    nearby_events = maze.get_nearby_events(self, vision_radius)
    
    # 根据注意力带宽筛选
    if len(nearby_events) > self.att_bandwidth:
        nearby_events = sorted(nearby_events, 
                             key=lambda e: e.distance_to_agent)[0:self.att_bandwidth]
    
    # 过滤已感知的事件
    new_events = [e for e in nearby_events 
                  if e not in self.recently_perceived]
    
    return new_events

基于注意力机制的智能感知

Retrieve 记忆检索

上下文记忆获取
  • 语义相似度计算
  • 时间相关性
  • 情感权重影响
  • 关键词匹配
  • 多维度检索

智能的记忆关联检索

记忆检索算法

def retrieve(self, perceived):
    """
    对感知到的相关事件和思想进行检索
    返回字典: {event: {"curr_event": ..., "events": ..., "thoughts": ...}}
    """
    retrieved = {}
    
    for event in perceived:
        # 基于嵌入向量相似度检索
        similar_events = self.a_mem.find_similar_events(
            event.embedding, top_k=10)
        
        # 基于关键词检索
        keyword_events = self.a_mem.find_by_keywords(
            event.keywords, top_k=5)
        
        # 基于时间范围检索
        time_events = self.a_mem.find_in_time_range(
            event.time - timedelta(hours=1), 
            event.time + timedelta(hours=1))
        
        retrieved[event] = {
            "curr_event": event,
            "events": similar_events + keyword_events + time_events,
            "thoughts": self.a_mem.find_related_thoughts(event)
        }
    
    return retrieved

多维度的记忆关联机制

Plan 计划制定

智能规划系统
  • 长期目标规划
  • 短期任务分解
  • 资源约束考虑
  • 多智能体协调
  • 风险评估

基于上下文的动态规划

Plan 算法细节

规划策略
  • 目标分解树
  • 优先级计算
  • 时间约束处理
  • 冲突检测
  • 备选方案生成

复杂的决策制定过程

计划制定示例

def plan(self, maze, personas, new_day, retrieved):
    """
    主要认知函数,制定短期和长期计划
    """
    if new_day:
        # 新的一天:制定长期目标
        self.create_daily_goals(personas)
    
    # 基于感知和检索的记忆制定短期计划
    short_term_plan = []
    for event, context in retrieved.items():
        # 分析当前情境
        situation_analysis = self.analyze_situation(event, context)
        
        # 制定响应计划
        response_plan = self.generate_response_plan(
            situation_analysis, context)
        
        short_term_plan.extend(response_plan)
    
    return short_term_plan

上下文感知的智能规划

Reflect 反思模块

自我认知与学习
  • 行动结果评估
  • 经验总结
  • 错误修正
  • 策略优化
  • 知识更新

持续学习的反思机制

Execute 执行模块

行动实现
  • 移动操作
  • 物体交互
  • 对话生成
  • 时间管理
  • 多步骤执行

将计划转化为具体行动

执行逻辑

def execute(self, action):
    """执行预定义的行动"""
    if action["type"] == "move":
        # 移动到指定位置
        target_location = action["target"]
        self.move_to_location(target_location)
        
        # 更新空间记忆
        self.update_spatial_memory(target_location)
        
    elif action["type"] == "interact":
        # 与物体交互
        target_object = action["target"]
        interaction_result = self.interact_with_object(target_object)
        
        # 记录交互事件
        self.record_interaction(interaction_result)
        
    elif action["type"] == "converse":
        # 与其他智能体对话
        target_persona = action["target"]
        conversation = self.generate_conversation(target_persona)
        self.converse(target_persona, conversation)

完整的行动执行链

Converse 对话系统

多智能体交流
  • 上下文理解
  • 意图识别
  • 响应生成
  • 情感表达
  • 长期对话维护

自然的智能体间对话

环境系统架构

游戏环境实现
  • Maze: 迷宫环境
  • 物体系统
  • 碰撞检测
  • 可视化界面
  • 用户交互

完整的虚拟世界模拟

Maze 环境类

class Maze:
    def __init__(self, maze_name):
        self.name = maze_name
        self.matrix = self.load_matrix(maze_name)
        self.objects = self.load_objects(maze_name)
        self.visuals = self.load_visuals(maze_name)
        
    def load_matrix(self, maze_name):
        """加载迷宫矩阵数据"""
        matrix_path = f"{maze_assets_loc}/{maze_name}/matrix"
        return json.load(open(matrix_path))
        
    def get_nearby_events(self, persona, radius):
        """获取角色周围的事件"""
        events = []
        for obj in self.objects:
            if self.distance(persona.location, obj.location) <= radius:
                events.append(obj)
        return events

环境感知与管理

多智能体交互

智能体间协作
  • 位置感知
  • 行动协调
  • 对话机制
  • 冲突解决
  • 群体行为

复杂的智能体社会模拟

状态持久化

数据存储机制
  • JSON文件存储
  • 增量保存
  • 数据压缩
  • 版本管理
  • 恢复机制

可靠的状态管理

保存机制

def save(self, save_folder):
    """保存智能体当前状态"""
    # 保存空间记忆(JSON格式)
    f_s_mem = f"{save_folder}/spatial_memory.json"
    self.s_mem.save(f_s_mem)
    
    # 保存关联记忆(CSV格式)
    f_a_mem = f"{save_folder}/associative_memory"
    self.a_mem.save(f_a_mem)
    
    # 保存工作记忆(JSON格式)
    f_scratch = f"{save_folder}/scratch.json"
    self.scratch.save(f_scratch)

分层的数据保存策略

Web界面集成

前端可视化
  • Django后端
  • React前端
  • 实时更新
  • 用户交互
  • 数据可视化

直观的用户体验

API设计模式

接口设计
  • RESTful API
  • WebSocket实时通信
  • 数据序列化
  • 错误处理
  • 安全认证

灵活的接口设计

配置管理系统

参数配置
  • OpenAI API集成
  • 环境参数设置
  • 智能体属性配置
  • 记忆参数调节
  • 性能优化

灵活的配置管理

性能优化策略

系统优化
  • 内存管理
  • 缓存机制
  • 并行处理
  • 异步IO
  • 数据压缩

高效的运行性能

扩展性设计

模块化架构
  • 插件式模块
  • 接口抽象
  • 配置驱动
  • 版本兼容
  • 第三方集成

支持灵活扩展

测试与验证

质量保证
  • 单元测试
  • 集成测试
  • 场景测试
  • 性能测试
  • 用户测试

全面的测试体系

部署架构

生产环境
  • 容器化部署
  • 负载均衡
  • 监控系统
  • 日志管理
  • 备份策略

企业级部署方案

应用场景分析

实际应用
  • 游戏AI开发
  • 虚拟世界构建
  • 智能对话系统
  • 行为研究
  • 教育模拟

广泛的应用前景

技术挑战

实现难点
  • 长期记忆管理
  • 实时性要求
  • 多智能体协调
  • 认知复杂性
  • 计算资源

需要持续改进的方面

未来发展方向

技术演进
  • 更复杂的认知模型
  • 情感系统增强
  • 多模态感知
  • 自主学习
  • 群体智能

持续的技术创新

开源贡献指南

社区参与
  • 代码贡献
  • 文档改进
  • 问题反馈
  • 功能建议
  • 测试贡献

欢迎社区参与

学习资源

参考资料
  • 研究论文
  • 技术文档
  • 示例代码
  • 视频教程
  • 社区论坛

丰富的学习资源

总结与展望

核心价值
  • 技术突破
  • 应用价值
  • 学术贡献
  • 产业影响
  • 社会意义

深远的技术与社会影响

参考资料

  • 源码仓库: https://github.com/joonspk-research/generative_agents
  • 研究论文: https://arxiv.org/abs/2304.03442
  • 项目演示: http://localhost:8000/demo/

感谢阅读!
访问 https://atcfu.com/ai-articles/generative-agents/ 回顾本文