V0.2 开发日志

概述

V0.2 标志着项目从早期原型探索(V0.1)过渡到忠实复现 Generative Agents 论文(Park et al., UIST 2023),并在此基础上进行了重大的认知架构增强。V0.1 探索了基于原始 LLM 调用的双智能体对话,发现了朴素 prompt 式记忆的根本局限性;V0.2 则构建了完整的仿真引擎,包含完整的认知循环、基于瓦片的世界地图,以及丰富的中世纪奇幻背景设定——塔纳波西亚(TANAPOCIA)世界中的乌瓦村(Uva Village)

开发周期:2026年4月2日 – 3日


阶段一:忠实复现论文

核心认知循环

V0.1 最大的教训是:对话的僵硬和重复源于结构性问题,而非参数调优问题。V0.2 通过实现 Generative Agents 论文中的完整认知架构来解决这一问题:

  1. 感知(Perceive) — 每个智能体检测同一区域(arena)内的附近事件(空间局部性)。每个被感知的事件通过 LLM 调用被评分为"触动度"(poignancy,1-10分),决定该事件对记忆的影响强度。

  2. 检索(Retrieve) — V0.2 不再简单地获取最近的记忆,而是使用三因子评分系统:

    • 时效性(Recency):指数衰减——越近的记忆得分越高
    • 相关性(Relevance):当前上下文嵌入与记忆嵌入之间的余弦相似度
    • 重要性(Importance):感知时赋予的触动度分数

    三个因子经过最小-最大归一化后以可调权重组合(recency * 0.5 + relevance * 3.0 + importance * 2.0)。这解决了 V0.1 总是检索相同记忆的问题——现在检索会根据智能体当前的活动自适应调整。

  3. 规划(Plan) — 三级分解系统:

    • 日计划:当天的宏观目标(如"在铁匠铺工作、吃午餐、逛市场")
    • 时段安排:将每个日目标分解为小时级别的行动
    • 细粒度分解:将每个时段行动进一步拆分为5-15分钟的任务

    当智能体遇到其他智能体或重要事件时,规划模块会决定是否参与对话、等待还是忽略——实现有机的社交互动,而非 V0.1 中强制的轮流对话。

  4. 反思(Reflect) — 当累积的重要性分数超过阈值时,智能体进入反思模式:

    • 从近期高重要性记忆中生成焦点问题
    • 检索与每个问题相关的证据
    • 综合产生更高层次的洞见,作为"思想"节点存入记忆

    这创建了一个层次结构:原始观察 → 反思想法 → 元反思,使智能体逐步获得更深层的自我理解。

  5. 执行(Execute) — 将当前计划的目标位置解析为瓦片坐标,在碰撞网格上运行 A* 寻路,返回下一步移动以及表情符号和行动描述。

  6. 对话(Converse) — 逐轮对话,带有结构化的知识提取。对话结束后,双方智能体提取关键信息并存储为新的记忆节点。

记忆架构

V0.2 实现了三种不同的记忆结构,相比 V0.1 的扁平记忆流是一次重大升级:

  • 关联记忆(Associative Memory)ConceptNode 对象的核心存储(事件、思想、聊天记录)。每个节点存储 SPO(主语-谓语-宾语)三元组、关键词索引和嵌入向量。取代了 V0.1 简单的基于时间戳的记忆列表。

  • 空间记忆(Spatial Memory):层级树结构——世界 → 区块 → 区域 → 游戏对象——赋予智能体对世界地理的理解。智能体知道有哪些建筑、建筑内有哪些房间、每个房间里有什么物品。

  • 草稿板/工作记忆(Scratch):超过40个字段,捕捉智能体的当前状态——身份、日计划、时段安排、当前行动、对话状态、反思权重和阈值。这相当于动态的"系统提示词",每步都会更新。

仿真引擎

  • WorldEngine 管理全局时钟和所有角色实例
  • 每个仿真步 = 游戏内10秒(可配置)
  • 144步 = 1个游戏日
  • SimulationRecorder 输出 master_movement.json 用于后续回放
  • 仿真与回放完全分离——CLI 运行器(backend/simulate.py)无界面生成数据;前端负责回放和控制

世界:乌瓦村

  • 25个智能体,各有独特的人设、职业、关系和初始记忆
  • 140 x 100 瓦片网格,每瓦片 32 x 32 像素
  • 5层地图:碰撞层、区块层、区域层、游戏对象层、出生点层
  • 285个命名地址
  • 中世纪奇幻设定,位于塔纳波西亚世界

阶段二:基础设施与工具链

Tiled 地图编辑器集成

V0.1 没有合适的地图编辑流程。V0.2 引入了基于 Tiled Map Editor 的统一工作流:

  • 使用 CuteRPG 像素风格图块集进行可视化地图创建
  • 从 Tiled .tmj 文件自动提取碰撞层、区块层、区域层和游戏对象层
  • 出生点层系统,用于定义智能体初始位置
  • 显示层与数据层的清晰分离

这意味着新世界可以通过可视化设计完成,而非手动编辑 CSV 文件。

世界版本管理

注册表系统(world_registry.json)将每次仿真实验绑定到特定的世界版本(场景+版本对)。这确保了可复现性——你总是可以追溯哪个地图和智能体配置产生了特定的仿真运行结果。

Prompt 模板外部化

全部24个 LLM Prompt 模板从 Python 内联字符串提取到外部模板文件(backend/data/prompts/)。这使得 Prompt:

  • 无需修改代码即可编辑
  • 可版本控制和差异比较
  • 可跨模块共享

测试套件

183个测试覆盖:

  • 单元测试:每个认知模块使用 Mock LLM 独立测试
  • 集成测试:跨模块接口测试
  • 回归测试:与原始 Smallville 世界数据的向后兼容性

前端:React + Phaser 3 回放查看器

全新重写:

  • React 19 用于 UI(回放控制、角色列表、状态检查)
  • Phaser 3 用于瓦片地图渲染和精灵动画
  • master_movement.json 即时回放,支持播放/暂停/速度控制
  • WebSocket 支持实时仿真流

阶段三:认知架构增强(迈向 ALICEv1)

这是 V0.2 偏离原始论文、开始构建 ALICEv1 愿景的阶段。

记忆分裂:短期记忆 vs 长期记忆

原始论文平等对待所有记忆。V0.2 引入了受生物学启发的分裂机制:

  • 短期记忆:可配置时间窗口内的近期事件,随时可访问
  • 长期记忆:经过巩固的较旧记忆,需要更强的检索信号才能浮现

这意味着智能体不会以同样的紧迫度对待3天前的对话和5分钟前发生的事情——这是迈向真实认知行为的微妙但重要的一步。

梦境模块(记忆巩固)

受人类记忆巩固中睡眠作用的启发:

  • 当智能体在模拟日结束时"入睡",梦境模块激活
  • 它回顾当天的重要事件,将重要记忆巩固到长期存储中
  • 它还可以触发 Ego 演化 —— 基于累积的经验更新智能体的自我概念

这回应了 V0.1 的核心问题之一:智能体被"冻结在一个瞬间"。虽然我们仍然无法更新 LLM 权重,但可以通过梦境循环来演化智能体的身份、目标和自我理解。

Ego 演化

每个智能体都有一个 Ego —— 结构化的自我概念,包括身份、价值观和目标。梦境模块可以基于重要经历提出 Ego 更新:

  • 反复在某项任务上失败的智能体可能降低自信
  • 发现新信息的智能体可能更新其世界观
  • 社交互动可以改变关系态度

这是朝着刀剑神域 Alice 启发中"可塑造的价值观"概念迈出的一步。

能力检定系统

并非每个智能体都能做所有事情。V0.2 引入了基于 LLM 的能力验证:

  • 在执行动作之前,系统检查智能体的技能、年龄和身体状况是否允许
  • 儿童不能锻造剑;年迈的学者不能长距离奔跑
  • 检定校准为中世纪时代标准(相比现代预期有所放宽)

这增加了真实感层次,防止打破沉浸感的荒谬行为。

知识增强与场景注入

  • 世界知识系统:智能体可以拥有不同子集的世界知识(常识、历史、地理、文化、道德、规则),且掌握程度各不相同
  • 场景注入:基于智能体当前位置、时间和天气,将环境描述注入其感知——使智能体能够感知并响应周围环境

艾宾浩斯遗忘曲线

记忆现在遵循受艾宾浩斯遗忘研究启发的衰减曲线:

  • 未被强化的记忆逐渐失去检索强度
  • 被反复访问或情感上重要的记忆衰减更慢
  • 遗忘是确定性的(跨运行可复现),而非随机的

这防止了"完美记忆"问题——智能体不再永远记住每一个琐碎的细节。

异见与反叛机制

一个反映塔纳波西亚世界主题的独特新增功能:

  • 智能体可以对既定规则或权威产生质疑
  • 当内部冲突(个人经验与被灌输信念之间的矛盾)超过阈值时,智能体可能开始质疑或抵抗
  • 这创造了有机社会动态的潜力——异端、改革者、叛逆者——从个体认知过程中涌现,而非来自脚本化事件

技术改进

  • 所有魔法数字提取到 backend/constants.py —— 认知模块中无硬编码值
  • 地址解析集中在 backend/address.py(替代脆弱的字符串切片操作)
  • 存档迁移系统(backend/migration.py),在添加新字段时保持向后兼容
  • LLM 客户端自动剥离 Qwen3 输出中的 <think>...</think> 标签
  • 模块边界契约在 backend/interfaces.py 中使用 dataclass 定义

未来展望

V0.2 建立了完整的仿真基础设施,并开始了定义 ALICEv1 的认知增强。未来的方向包括:

  • 情感系统:多维情感状态,影响感知、规划和社交互动
  • 关系动态:信任、好感、敌对通过反复互动演化
  • 玩家介入:允许人类"潜入"并与模拟世界互动
  • 更大的世界:从25个智能体扩展到数百个,测试大规模涌现
  • 持续学习探索:长远梦想——演化 LLM 本身,如刀剑神域中 Alice 概念的启发