城市模拟里的居民,长期以来是一行行“如果……就……”的规则。生成式Agent改变的不是居民会不会聊天,而是每个决定有了来源和记忆,同时也带来一个新问题:怎么证明它不是在编故事。

规则居民的毛病:不是笨,是太整齐

传统城市模拟里,居民换工作的逻辑通常写成这样:通勤超过45分钟,且附近有薪资更高的岗位,就换。这条规则没有错,麻烦在于它对所有人一视同仁。一个街区里三千个居民面对同一次公交改线,会在同一个模拟日里同时越过同一条阈值,然后城市指标出现一个整齐的台阶。

真实城市的变化几乎从不这样发生。有人已经在这个街区住了二十年,通勤再远也不搬;有人刚签了一年租约,改线第二周就开始看别处的房子;有人根本不坐这条线。差别来自每个人的收入、家庭、习惯,以及过去几周里被这条线“坑”过几次。规则居民的问题就在这里:它能算对平均值,却造不出分歧。

分歧对模拟游戏很要紧。玩家修了一条路、关了一家工厂,真正有趣的是“哪些人先走、哪些人观望、哪些人反而受益”,而不是全城指标一起下滑三个点。

生成式Agent到底改了哪一步

把生成式Agent理解成“会聊天的NPC”是最常见的误读。它的核心是决策输入变了。Park等人2023年在arXiv发表的Generative Agents,给智能体配了三样东西:记录经历的记忆流、把经历提炼成更高层结论的反思、以及依据记忆做检索和规划的机制。他们在名为Smallville的沙盒里放了25个智能体,其中一个被设定要办情人节派对,邀请在其他智能体之间自行传播,大家自己协调到场。

注意这个规模和场景:25个角色,一个小镇。它证明的是“基于记忆的个体行为可以连贯”,并没有证明一座城市能这样运转。把它直接等同于城市模拟,是这个方向上被反复放大的一个说法。

放到城市里,差别可以这样对照:

比较项 规则居民 生成式居民
决策输入 几个数值与阈值 画像、近期记忆、当下状态、可选动作
个体差异 靠随机数或分组参数 来自不同经历,同样事件留下不同印象
对冲击的反应 越线即触发,同步 有延迟、有观望,先行者带动后来者
计算成本极低 高,推理是主要开销
出错方式 整齐而僵硬 合理却与现实不符,难以察觉

最后一行是关键。规则居民的错误一眼就能看出来,生成式居民的错误往往披着合理的外衣。

用一个假设的例子看“记忆”的作用。居民甲在过去三周里遇到过两次地铁晚点,其中一次让他错过了面试;居民乙同样住在这条线上,三周都很顺利。规则居民会对这两人给出一样的通勤满意度,因为只看当前通勤时间。生成式居民则把“晚点”“错过面试”存成带情绪权重的记忆,下一次线路调整时,甲更容易开始看别的岗位,乙却可能压根没有察觉。这个例子里的人物和事件都是模拟示例,它想说明的只是:同一个外部事件,经过不同的记忆,会得到不同的行为,而这正是规则居民做不出来的部分。

近两年的城市研究在做什么

看这几篇工作,最有价值的是它们怎么处理“记忆”和“成本”,而不是各自宣称的效果。

  • Liu、Li、Ma于2025年在arXiv发表GATSim(后刊于Transportation Research Part C),用带社会经济画像和“心理学启发记忆系统”的智能体替代规则式交通仿真,设计了带时空关联的分层记忆检索和多尺度反思,把出行经验转成行为洞察。论文的说法是在角色扮演场景中与人工标注者相当,并生成了现实的城市级宏观交通模式,没有声称精确预测。
  • Bougie与Watanabe 2025年的CitySim让智能体用递归的价值驱动方式生成日程,平衡必须做的事、个人习惯和临时情境,摘要提到规模达到数万个智能体。
  • Ye等人2025年的MobileCity把规模压到4,000个模拟智能体,改用问卷式画像增加多样性、让智能体在预生成的动作空间里选择,并用本地模型生成记忆来降低算力成本。

三者的共同点很清楚:模型不再负责“算”,只负责在有限选项里“选”;记忆被分层管理,不是把全部历史塞进提示词;成本压力直接决定了架构。这与大发娱乐在批量推理一文里讨论的思路是同一个方向:让昂贵的推理只出现在真正需要个体判断的时刻。

“看起来合理”和“与现实一致”是两回事

热闹的一面之后,应该看一个相反的证据。Santos、Viana、Silva 2026年在arXiv发表的研究,用大巴黎和上海的真实移动数据去检验AgentSociety和CitySim两个模拟器,比较出行距离分布、停留时间、起讫点流量、时间节律等指标。结论是:叙事上很合理,但与真实的移动规律存在显著差距,行为多样性对提示配置也不稳定。

更宏观的图景来自Larooij与Törnberg 2025年在Artificial Intelligence Review上的综述。他们梳理了35篇同行评议的生成式ABM论文,发现约43%只依赖主观评估,也就是让人或模型判断“像不像”,只有约一半用到外部客观验证。他们的判断是,验证是这个方向的中心难题。

对做游戏的人,这意味着一个很实际的约束:一个居民说得通,不能证明一千个居民合起来说得通。游戏里的城市不需要与某个真实城市逐条对齐,但它需要自己的内部规律稳定,比如通勤距离分布不会在重新加载存档后变形,同一个事件在多次运行里给出相近的区间。

大发娱乐的取舍:把模型放在分歧点上

以下是大发娱乐城市AI在设计上的思路,用一个假设场景来说明,其中的数字都是模拟示例,只用来讲逻辑。

设想一个3,000居民的街区,一条公交线改道。系统先由传统模拟器算出每个居民的通勤时间变化,绝大多数人的变化很小,直接按规则更新。只有少数人满足“这次变化对我影响足够大、并且我此前有类似的糟糕经历”,比如假设有一两百人,才会被送去做一次带记忆的决策:忍、换路线、换工作,还是搬家。模型给出选择,房租、岗位、道路负载这些数值仍由模拟器结算。

被选中的居民也不是从零开始想。系统会先取出与这次事件相关的少数几条记忆,附上他的画像和当下的收入、住房状态,再给出一组有限的候选动作。这一步既是为了省成本,也是为了让结果可以被追溯:事后回看日志,能看到“他为什么换了工作”,而不是只看到一句听起来不错的解释。

这样设计出于三点考虑:

  1. 模型只在分歧点被调用,成本才可能撑住一座有几千居民的城市。
  2. 结果必须落回数值状态,不允许模型直接说“房价涨了”,否则同一个存档在不同设备上会走向不同世界。
  3. 每一类行为都要配一个能检查的指标,例如通勤时间分布、换工作的延迟分布、搬家人群的收入构成,上线前先看这些分布有没有走形。

居民的画像、工作、住房和习惯如何写进状态,可以对照居民Agent的设计说明;交通里的记忆如何影响路线选择,在路线记忆一文里有单独的展开。栏目层面的整体思路见大发娱乐城市AI

读到“生成式城市”的消息时,该问什么

大发娱乐AI在内部评估这类方案时,也用同一张清单。新闻标题里的规模数字最容易让人兴奋,但它们回答的只是“能不能跑”。判断一个生成式城市模拟是否值得认真对待,可以问三件事:

  • 有多少居民真的调用了模型,其余是怎么更新的?
  • 模型的输出是落在数值状态里,还是直接改写了世界?
  • 它拿什么和什么比过,是主观印象,还是重复运行后的分布?

能清楚回答这三条的系统,哪怕居民只有几千,也比一座只会展示热闹街景的“百万人口城市”更接近可信。规则居民并没有过时,它仍然是生成式居民背后必须存在的地基。