← 返回资料站  /  Continuous Learning
论文 记忆机制 背景

Generative Agents: Interactive Simulacra of Human Behavior

生成式智能体:斯坦福小镇的 25 个 AI 居民
一句话斯坦福 + Google 在一个 Sims 风格沙盒小镇里跑了 25 个 LLM agent,靠 memory stream + retrieval + reflection + planning 架构让它们自发组织了一场情人节派对;这套记忆架构成了后来几乎所有 agent 记忆系统的参照模板(引用 5300+)。

这是什么

这篇 UIST 2023 论文(即著名的『斯坦福小镇』/Smallville)研究的问题是:如何让 LLM 驱动的软件 agent 表现出可信的、长期一致的人类行为。直接把 LLM 塞进游戏角色会遇到根本困难——上下文窗口装不下一个角色几天的完整经历,行为会前后矛盾、遗忘刚发生的事。作者的答案是给 agent 外挂一套用自然语言记录的记忆系统:完整记录所有经历(memory stream),按需检索,并周期性地把低层观察综合成高层结论(reflection)。

他们用 GPT-3.5(gpt-3.5-turbo,实验做于 2023 年初)驱动 25 个各有人设的 agent,放进一个像素风小镇里运行两个游戏日。最出圈的结果是涌现的社会行为:只给 Isabella 一个『想办情人节派对』的初始意图、给 Maria 一条『暗恋 Klaus』的人设,agent 们就自发完成了传播邀请、装饰咖啡馆、约对象、最后 5 个 agent 准时到场的完整链条。注意这篇的主题是社会模拟(HCI 场景),但它对 agent 领域的实际遗产是那套记忆架构——收录进 continual-learning 方向也是因为这个。

Generative agent 架构总览:agent 感知(Perceive)到的一切以自然语言写入 memory stream;行动(Act)前经 Retrieve 按 recency + importance + relevance 三因子打分取出相关记忆;Plan 和 Reflect 两个模块的输出同样作为记忆写回 stream,形成『经验 → 抽象 → 再利用』的闭环。这张图就是后来无数 agent 记忆系统的原型。
Generative agent 架构总览:agent 感知(Perceive)到的一切以自然语言写入 memory stream;行动(Act)前经 Retrieve 按 recency + importance + relevance 三因子打分取出相关记忆;Plan 和 Reflect 两个模块的输出同样作为记忆写回 stream,形成『经验 → 抽象 → 再利用』的闭环。这张图就是后来无数 agent 记忆系统的原型。

机制与做法

Memory stream + 三因子检索

核心数据结构是 memory stream:一个按时间排列的自然语言记录列表,存 agent 的全部观察(observation)、计划和反思。行动或对话时不可能把全部记忆塞进 prompt,所以用检索函数打分取 top 记忆,分数是三项加权和:recency(距上次访问的时间指数衰减)、importance(让 LLM 给每条记忆打 1-10 分,『吃早饭』低分、『分手』高分)、relevance(embedding 余弦相似度)。这个『时近性 + 重要性 + 相关性』三因子公式后来被 LangChain 等框架直接内置,是本文被引用最多的部分。

Reflection 与 Planning

只有原始观察不够——agent 需要泛化。当近期记忆的 importance 累计分超过阈值(实践中约每天 2-3 次),触发 reflection:让 LLM 对最近 100 条记忆提出 3 个高层问题,再针对每个问题检索证据并生成带引用的结论(如『Klaus 对研究充满热情』),结论作为新记忆写回 stream,且可以在更高层的 reflection 之上再反思,形成树状抽象层级。

Planning 解决长程一致性:每天先用人设摘要 + 前一天总结生成粗粒度日计划,再递归分解到小时级、5-15 分钟级。执行中 agent 每步感知周围环境,由 LLM 判断是否需要对突发事件做出 react(比如撞见别人聊天时决定是否加入),需要则重新规划后续计划。这三个模块的消融实验(见 findings)是论文论证的核心。

关键结果

实证核查

扎实代码全量开源且与论文架构一一对应,社区大规模复用(22k star、无数衍生项目),记忆架构被后续工作反复验证;但要注意评估是主观可信度排序而非任务指标,复现原始规模的模拟成本高、官方仓库 2024-08 后已停止维护。
论文声称实现了 memory stream / retrieval / reflection / planning 的完整 agent 架构。
GitHub 仓库(joonspk-research/generative_agents,Apache-2.0,22k star)结构与论文完全对应:reverie/backend_server/persona/memory_structures/ 下有 associative_memory.py(memory stream)、scratch.py、spatial_memory.py;cognitive_modules/ 下有 retrieve.py、reflect.py、plan.py、perceive.py、converse.py、execute.py。25 人小镇的初始记忆数据(base_the_ville_n25)也全部随仓库发布。
架构能支撑可信的多 agent 社会模拟。
社区复现和复用极多——AI Town(a16z)、AgentSociety、斗蛐蛐等衍生项目均基于此架构;三因子检索被 LangChain 官方实现为 TimeWeightedVectorStoreRetriever + GenerativeAgentMemory。但复现完整 25-agent 模拟的成本问题在 issues 中反复出现(#56 'estimate on the cost per hour'、#150 'Gpt 3.5/4 - Cost Assessment'),与论文自述的『数千美元』一致。
开源代码可直接运行复现。
代码是研究原型质量:issues 里大量运行报错(#187 get_embedding NameError、#125/#192 spatial memory KeyError、#114 API error 等),官方最后一次 push 是 2024-08-05,此后 bug 修复靠社区 fork(如 issue #152/#186 的 'NewVersion: Fixes & Improvements')。另外原实验用的 gpt-3.5-turbo 已退役,严格意义上的原样复现已不可能(#190/#191 在讨论换 GPT-4o/Gemini)。
消融显示 observation/planning/reflection 各自对可信度有关键贡献。
评估方式要看清:是 100 名众包者对 agent 访谈回答的主观可信度做 5 条件排序,再换算 TrueSkill 分,不是任何客观任务指标;论文给出的 d=8.16 效应量是 TrueSkill 评级间的标准化差,数字看着夸张但含义有限。源码 technical_eval.tex 中也如实写了 crowdworker 条件与全消融条件差异不显著。

与我们方向的关系

对 continual-learning 方向,这篇是『记忆机制』一支的源头文献:memory stream(全量自然语言日志)+ 三因子检索 + reflection(周期性把经验蒸馏成高层结论再写回)构成了一个不改权重、纯上下文层面的经验积累闭环,后来的 MemGPT、Voyager 的 skill library、各类 agentic memory 系统基本都能看到它的影子。特别值得借鉴的是 reflection 的设计:它不是简单摘要,而是『提问 → 检索证据 → 生成带引用的结论 → 结论本身可被再反思』,这是一种可控的、有层级的记忆固化(consolidation)过程,和 continual learning 里对抗灾难性遗忘的『重放 + 抽象』思路是同构的。

读的时候把它当架构参考而非评测参考:它的评估是社会模拟可信度,不能说明这套记忆在任务型 agent 上的效果;importance 打分依赖 LLM 主观判断、reflection 触发阈值是手调的,这些在自己系统里都需要重新校准。

阅读笔记

论文 2023-04 挂 arXiv,代码 2023-07 才放出。想跑 demo 的话别用官方 repo(依赖老版 openai 库和已退役模型),社区维护的 fork 或 a16z 的 AI Town 更省事。'Smallville' 地图素材有独立的艺术家版权署名,商用注意。

材料清单

TeX 源码
已存档:Raw/generative-agents/source/
代码仓库github.com/joonspk-research/generative_agents
22021★ · 最近推送 2024-08-05
LangChain 实现python.langchain.com/docs/versions/migrating_memory/
三因子检索与 GenerativeAgentMemory 曾被 LangChain 内置(现移入 langchain-experimental)
AI Towngithub.com/a16z-infra/ai-town
a16z 基于同思路的可部署复刻,工程化程度更高

同类条目