Generative Agents

在 Smallville 游戏环境中运行并回放具有人类行为模拟的多角色仿真。

Star 数
★ 22k
最近更新
3 年前
License
Apache-2.0

30 秒速览

运行形态
命令行工具自托管服务网页应用
可在哪里用
平台专用OpenAI API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
OpenAI API 密钥Python 3.9.12DjangoShell / 命令行网络访问本地文件系统
典型场景
希望复现论文配套环境的研究人员,可加载 base_the_ville_n25 并运行 25 名角色的基础仿真。
不适合
  • 需要开箱即用聊天界面的团队
  • 不愿同时维护两个本地服务器和终端命令的用户

这个 Agent 能做什么,适合哪些场景?

这是论文《Generative Agents: Interactive Simulacra of Human Behavior》配套的核心仿真模块与游戏环境。项目由 Django 环境服务器和位于 reverie/backend_server 的仿真服务器组成,后者通过 reverie.py 从命令行运行。用户可在浏览器中查看 Smallville 地图及活跃角色,并以游戏步推进仿真;每步代表游戏内 10 秒。仿真可保存到 environment/frontend_server/storage,随后可从指定时间步回放或压缩为演示版本。它适合希望复现实验环境、调整角色初始记忆或制作 Smallville 仿真演示的开发者与研究人员,而非即开即用的聊天产品。

先在 environment/frontend_server 运行 python manage.py runserver,再在 reverie/backend_server 运行 python reverie.py。仿真服务器要求输入一个已存在的 forked simulation 名称和新仿真名称;例如可加载 base_the_ville_isabella_maria_klaus,然后输入新名称。服务器提示 Enter option: 后,run <step-count> 会按指定游戏步数推进仿真,浏览器中的 /simulator_home 显示地图和角色移动;fin 保存并退出,exit 不保存退出。它可用 call -- load history the_ville/<history_file_name>.csv 读取 CSV 中以分号分隔的角色记忆记录,也可通过 reverie/compress_sim_storage.py 的 compress 函数准备演示文件。已保存的仿真可通过 /replay/<simulation-name>/<starting-time-step> 回放,压缩后的仿真可通过 /demo/<simulation-name>/<starting-time-step>/<simulation-speed> 演示。

  1. 希望复现论文配套环境的研究人员,可加载 base_the_ville_n25 并运行 25 名角色的基础仿真。
  2. 需要观察 Isabella Rodriguez、Maria Lopez 与 Klaus Mueller 三角色互动的开发者,可从 base_the_ville_isabella_maria_klaus 创建新仿真。
  3. 要为既有角色补充背景记忆的实验人员,可编辑与示例格式一致的 CSV,并用 call -- load history 导入。
  4. 需要从某个已保存时间点检查角色行为的调试人员,可访问 /replay/<simulation-name>/<starting-time-step>。
  5. 要展示已完成仿真的演示者,可先压缩仿真,再通过 /demo/.../<simulation-speed> 调整播放速度。
  6. 需要更换地图布局、角色名称或可容纳角色数量的项目维护者,可基于现有基础仿真修改,并在必要时使用 Tiled 编辑地图。

如何安装或部署这个 Agent?

需要 OpenAI API 密钥。在 reverie/backend_server 创建 utils.py,至少配置 openai_api_key、key_owner,并保留 README 所列的资源、存储与环境路径配置。安装 requirements.txt 中列出的全部依赖;项目测试所用 Python 版本为 3.9.12。随后进入 environment/frontend_server,运行 python manage.py runserver 启动环境服务器。

如何使用这个 Agent?

保持环境服务器运行,并在另一终端进入 reverie/backend_server,运行 python reverie.py。按提示输入基础仿真名,例如 base_the_ville_isabella_maria_klaus,再输入一个新的仿真名称。打开 http://localhost:8000/simulator_home,然后在仿真终端输入例如 run 100;完成后输入 fin 保存,或输入 exit 放弃保存。保存后的结果位于 environment/frontend_server/storage,可从相应 replay URL 重新播放。

这个 Agent 有哪些优点和局限?

优点
  • 同时提供命令行仿真服务器、Django 环境服务器与浏览器地图界面,可直接观察角色在 Smallville 中的移动。
  • 提供 3 角色和 25 角色两套基础仿真,便于从可运行的初始状态开始。
  • 支持从 CSV 导入按角色组织的记忆记录,能够为初始化提供明确的历史输入。
  • 保存、指定时间步回放与压缩演示是分离的明确流程,分别覆盖调试和展示需求。
局限
  • 核心运行依赖 OpenAI API 密钥,README 明确提示 API 达到每小时速率限制时可能挂起。
  • 运行需要同时维护两个本地服务器,并通过终端提示管理 fork、新仿真、运行和保存。
  • README 指出多角色仿真在早期 2023 年可能成本较高,且建议频繁保存以避免重启造成损失。
  • 自定义角色名称或增加 Smallville 容量可能需要直接用 Tiled 修改地图,配置门槛较高。

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Generative Agents 当前 29 · 缺口较多 命令行工具免费 + 模型费 ★ 22k 3 年前 — OpenAI API
ChatArena 32 · 缺口较多 代码库 / SDK免费 + 模型费 ★ 1.6k 1 年前 Python OpenAI API
AgentVerse 28 · 缺口较多 命令行工具免费 + 模型费 ★ 5.2k 2 年前 JavaScript OpenAI API
Webwright 浏览器编程代理 66 · 存在缺口 命令行工具免费 + 模型费 ★ 6.1k 10 天前 Python Codex · Claude Code · OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
29/ 100 五分制 1.5 / 5
信任安全 0/29
可靠稳定 5/14
适用触发 8/18
规范维护 8/18
有效结果 6/13
证据核验 2/8
查看各维度的扣分理由
信任安全0 / 29 · 0.0/5

证据显示:README要求用户手动创建utils.py并硬编码OpenAI API密钥,没有提供最小权限或密钥管理的指导;没有用户确认机制;数据流不透明;敏感数据处理(API密钥)仅靠用户自觉;依赖安全未提及;外部影响(如API调用成本)有提示但无控制;回滚仅通过保存模拟,无版本控制;来源归属有作者列表,但发布者未验证。扣分原因:缺乏安全实践和透明度。

可靠稳定5 / 14 · 1.8/5

证据显示:README步骤清晰,但未提供错误处理或恢复指导;依赖列表存在但未固定版本;失败消息(如API挂起)有提示但无详细错误处理。扣分原因:依赖可用性未验证,失败处理不充分。

适用触发8 / 18 · 2.2/5

证据显示:面向研究人员和开发者,提供了多种场景(模拟、回放、演示);能力边界未明确;触发命令(run, call)有说明但精度一般;环境适配仅提及Python 3.9.12和浏览器建议。扣分原因:能力边界和触发精度不足。

规范维护8 / 18 · 2.2/5

证据显示:README结构清晰,安装步骤详细;命名稳定(如base_the_ville...);有示例和FAQ(如Tips);已知限制(如API挂起)有提及;Apache-2.0许可证明确;无版本号或变更日志;维护责任未明确。扣分原因:缺少版本管理和维护责任说明。

有效结果6 / 13 · 2.3/5

证据显示:输出(模拟结果)可保存和回放,但格式未标准化;边际价值高(研究用途);成本效益有提示(API成本)但无优化。扣分原因:输出可用性有限,成本控制不足。

证据核验2 / 8 · 1.3/5

证据显示:README引用论文,但未提供复现细节;无交叉验证;事实与推断未明确区分。扣分原因:缺乏可验证性。

风险与缓解建议
  • 源码中未见:最小权限约束只授予完成任务所需的权限:用专用账号或只读令牌,并限定可访问的目录和仓库。
  • 源码中未见:执行前用户确认开启或自行加上执行前确认;先在沙箱或测试环境跑通,确认行为后再接入真实数据。
  • 源码中未见:数据流向说明运行时观察它连接了哪些外部服务(代理或防火墙日志);弄清数据去向之前不要输入敏感数据。
  • 源码中未见:敏感信息处理使用专用、低权限、可随时吊销的 API 密钥,不要复用生产凭据,也不要让密钥出现在日志里。
  • 源码中未见:依赖安全审查安装前固定版本并做一次依赖扫描(如 npm audit、pip-audit);优先放在容器里运行。
  • 源码中未见:外部影响披露先弄清它会写入、发送或修改哪些外部系统,用测试账号或测试仓库验证后再接入正式环境。
  • 源码中未见:回滚或恢复路径运行前先备份,或在 git 分支、快照上操作,确保改动可以撤销。
  • 源码中未见:来源归属可核验从官方仓库或包源安装,核对发布者和仓库地址,避免同名仿冒包。
  • 用户需自行管理API密钥,存在泄露风险。
  • 依赖未固定版本,可能影响可复现性。
  • 模拟成本可能较高,需注意API费用。
证据充分度:低 评估于 2026年8月9日 审查版本 fe05a71d3e4e
评估证据 README.mdLICENSE
查看完整评分方法 →

常见问题

运行前必须准备什么凭据?
必须在 reverie/backend_server/utils.py 中填写 OpenAI API 密钥,并设置 key_owner。
一次游戏步代表多长时间?
一次游戏步代表游戏内 10 秒;例如 run 100 会执行 100 个游戏步。
API 请求卡住时怎么办?
README 将此情况与 OpenAI API 的每小时速率限制相关联,并建议重启仿真;应经常使用 fin 保存进度。
如何保留并继续一段仿真?
在提示符输入 fin 保存并退出;下次启动仿真服务器时,将该保存名称作为 forked simulation 输入即可从保存点继续。
回放为何所有角色外观相同?
README 说明 replay 主要用于调试,不优先处理视觉与文件大小;要用合适角色精灵展示,需要先压缩目标仿真。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents