生成式 Agent 与涌现仿真 本节摘要:Park 等 2023(UIST '23, arXiv:2304.03442)用三段式架构——记忆流(memory stream,自然语言日志)、反思(reflection,Agent 对自己记忆流生成的更高层综合)、计划(plan,日级行为再细分到子计划)——在 Smallville 沙盒里放了 25 个 Agent。标志性结果是情人节派对的涌现:一个被种入「想办情人节派对」目标的 Agent,在无进一步脚本的情况下,产出了在人群中扩散的邀请、协调了日期,派对真的发生了——而另外 24 个 Agent 起初对此一无所知。消融实验表明三个组件缺一不可,可信度(believability)才最高。
本节摘要:Park 等 2023(UIST '23, arXiv:2304.03442)用三段式架构——记忆流(memory stream,自然语言日志)、反思(reflection,Agent 对自己记忆流生成的更高层综合)、计划(plan,日级行为再细分到子计划)——在 Smallville 沙盒里放了 25 个 Agent。标志性结果是情人节派对的涌现:一个被种入「想办情人节派对」目标的 Agent,在无进一步脚本的情况下,产出了在人群中扩散的邀请、协调了日期,派对真的发生了——而另外 24 个 Agent 起初对此一无所知。消融实验表明三个组件缺一不可,可信度(believability)才最高。记录在案的失败是空间规范错误(闯入关门的店、共用单人洗手间)。这是 2026 Agent 仿真与多智能体社会评估的参考架构。
阅读完本节,你应当能够:
score = w_recency·e^(-decay·age) + w_importance·importance + w_relevance·cos_sim 解释记忆检索如何排序。大多数多智能体系统是紧脚本的团队:规划者规划、编码者编码、评审者评审。这对定义良好的任务有效,但捕捉不到当 Agent 有记忆、有优先级、身处开放世界时,那种涌现的、无脚本的行为。研究、社会仿真,以及越来越多的游戏 AI,需要第二种。
Smallville 架构是它的基准。Park 2023 之前,最好的 Agent 仿真都是浅薄的脚本跟随者;之后,这套模式成了开放世界生成式 Agent 的默认。若你在 2026 搭一个 Agent 仿真,你要么在用 Smallville 的三件套,要么在显式地论证为何不用。
记忆流。 一个只追加(append-only)的日志,记录观察、行动、反思、计划。每条带时间戳、类型、描述(自然语言),以及派生元数据:近因(recency)、重要性(importance,Agent 自评 1~10)、相关性(relevance,与当前查询的余弦相似度)。
[2026-02-14 09:12:03] observation: Isabella Rodriguez 问我是不是喜欢爵士 [2026-02-14 09:14:22] reflection: 我享受关于音乐的长谈 [2026-02-14 10:05:00] plan: 今晚参加 Isabella 的情人节派对
记忆检索综合三个分数:score = w_recency·e^(-decay·age) + w_importance·importance + w_relevance·cos_sim,top-k 条进入当前提示。
反思。 周期性地(每 N 条记忆,或在重要事件上),Agent 从近期记忆生成更高阶的综合。反思条目回写进流,像任何记忆一样可被检索。这是 Agent 建立「理解」的方式——架构版的长期信念。
计划。 自顶向下分解。先一个粗线条的日级计划(「上班、和 Klaus 吃晚饭」),再小时级计划,再行动级计划。计划可修订:当观察与计划矛盾时,Agent 重规划受影响的片段。
Park 等做了消融,分别去掉观察、反思、计划。每个消融都伤害可信度:
人类评分者的可信度分,三者俱全时最高;去掉任何一个都有可测的退步。
一个 Agent,Isabella Rodriguez,被种入目标「想在 2 月 14 日下午 5 点于 Hobbs 咖啡馆办情人节派对」。其余 24 个 Agent 没有这个种子。在模拟的几天里:
这是技术意义上的涌现:系统级行为(一场派对)从局部交互(双边邀请 + 各自规划)中产生,没有中心编排。
Park 等明确记录:
这些是生产相关的失败:任何 2026 的 Agent 仿真都继承了它们。
2024~2026 的后续文献扩展了该架构:
架构是参考;扩展替换组件(向量库存记忆、检索增强反思、神经符号计划),但保留三段式结构。
⚠️ 这套架构证明了当组件选对,多智能体涌现是便宜的——已被在开源模型上复现(更小的 LLM 是「优雅地」而非「断崖式」丢失可信度)。但任何需要紧任务执行的系统,仍应用监督者/角色/原语模式(本章前半),而非生成式仿真。
code/main.py 用标准库实现三件套,Agent 策略脚本化(无真实 LLM)。demo 微缩复现情人节派对涌现:
MemoryStream——只追加日志,带近因/重要性/相关性检索。reflect(stream)——对近期高重要性记忆做脚本化反思。plan(agent_state)——基于当前信念的日级与小时级计划。def retrieve(stream, query, k=10): scored = [] for entry in stream.entries: recency = math.exp(-decay * (now - entry.ts).total_seconds()) importance = entry.importance # 写入时缓存 relevance = cosine(embed(query), entry.emb) score = (w_rec * recency + w_imp * importance + w_rel * relevance) scored.append((score, entry)) return [e for _, e in sorted(scored, reverse=True)[:k]]
设计要点:三个权重
w_rec / w_imp / w_rel的相对大小决定 Agent 的「性格」——调高w_imp让 Agent 念念不忘大事,调高w_rec让它只看眼前。这套打分是整个涌现的引擎:派对邀请之所以能扩散,正是因为「Isabella 邀请我」这条观察在相关 Agent 的记忆里同时具备高重要性(社交事件)与高相关性(与当前规划查询相关)。
运行 python3 code/main.py,期望输出逐 tick 的轨迹:到最终 tick,至少 3 个 Agent 的计划里出现了派对,且它们汇聚到派对地点。单个种子,在无任何编排下,产出了协调到达。
| 组件 | Smallville 原版 | 2026 常见替换 | 替换代价 |
|---|---|---|---|
| 记忆存储 | 内存中的列表 | 向量库(Postgres + pgvector) | 一致性、成本 |
| 检索 | 三分加权 top-k | 混合检索(BM25 + 密度) | 调参复杂度 |
| 反思 | LLM 生成高阶综合 | 检索增强反思 + 来源校验 | 防幻觉 |
| 计划 | 自顶向下日/时/行 | 神经符号规划器(HTN) | 实现成本 |
| 评估 | 人类评分可信度 | 长程连贯性基准 | 指标设计 |
💡 心法:框架可换,三段式结构不变。 Smallville 的贡献不是某个具体实现,而是证明了「记忆 + 反思 + 计划」这套组合足以产生涌现——后续工作都在替换组件、保留结构。
outputs/skill-simulation-designer.md:设计一个生成式 Agent 仿真——Agent 数量、记忆 schema、反思节奏、计划视野、评估指标。
code/main.py,确认 3+ 个 Agent 汇聚到派对。把 Agent 增到 10 个,涌现还发生吗?近因 + 重要性 + 相关性,top-k 排序,不用硬过滤。下一节,我们追问「涌现的协调」到底是不是真的——用心智理论(Theory of Mind)的视角,看 Riedl 2025 如何证明:没有 ToM 提示,所谓的「涌现协调」往往只是提示工程装扮出来的错觉。