Files
SoundGame/world_sim/WorldSim-最终方案.md
T
2026-09-19 22:18:48 +08:00

21 KiB
Raw Blame History

WorldSim 社会模拟器 · 最终落地方案

版本 v3.0 定稿 · 2026-09-19 本文件由总体方案、模型选型、可视化与直播、风险合规四份草案经三轮五角色评审(制作人/策划/运营/市场/美术)合并修订而成,为唯一有效文档。 路线已确认:A+C 融合(单体先行 + 首日 append-only 事件表,分布式后置立项)。


1. 项目概述

1.1 场景设定

设定 内容
住所 一栋单身公寓,6 层 × 每层 4 房间 = 24 间,每间 1 人,男女各半
工作 24 人均为都市白领,在同一家公司不同部门上班;公司另有 16 名员工(含部门经理),总计 40 个 Agent
世界 Agent 负责全局事件(发工资、工作事务、股票涨跌)并兼任编剧
触发机制 无交互时每 5 分钟(真实时间)触发一次 LLM 行为(兜底);被交互时立即事件唤醒

1.2 事件双源(核心设定)

  1. 全局事件:世界 Agent 按日历/规则/随机触发(发工资、股价波动、公告)。
  2. 自主行为事件:人物 Agent 因动机主动发起。典型链路:A 暗恋 B(关系状态)→ 傍晚社交需求高(动机状态)→ 产生"约 B 吃饭"意图 → 系统校验 B 可达 → B 被唤醒自主决定 → 生成约定事件 → 双方记忆同源写入。

两类事件走同一条裁决与落库管道——世界只有一个事实来源。

1.3 三大目标与产品形态

  • 规模可控:Agent 数、触发频率、时间压缩比、成本全部可配置、可调速、可暂停。
  • 逻辑自洽:客观事实只有一个出处;两人对同一事件的记忆不矛盾;随机判定可复现。
  • 简单可视化:一眼看到"谁在哪、干什么、想什么"。
  • 产品形态:抖音直播(黄金档连续剧 + 24/7 可访问的世界)+ PC 互动端(v2 后置)。卖点一句话:40 个 AI 白领的长弧线关系连续剧。

2. 调研依据(简表)

参照 借鉴点
Generative Agents(Stanford,2023) 记忆流(新近度×重要性×相关度检索)、反思、计划;25 人规模与本项目同量级
Concordia(DeepMind) Game Master 模式:Agent 声明意图、GM 裁决落地;组件网络含内稳态需求驱动
AgentSociety(清华,2025) 异步架构 + 消息队列 + LLM 网关 + 全量记录驱动可视化的分层
AI Town(a16z) PixiJS 像素小镇渲染、头顶气泡对话、常驻名牌的可视化先例

关键教训:① 成本是头号约束,必须模型分层;② 自洽性不靠 LLM 自觉,客观信息全部由系统注入;③ 双人记忆必须投影自同一事件;④ 纯内稳态动机只会产出千篇一律的吃饭睡觉——需要目标系统与负向社交动作。


3. 总体架构(已确认:A+C 融合)

3.1 分两阶段走

阶段 1(A+ 形态,首播前):单体 Python 进程,但从首日起 append-only 事件表落库,事件 Schema v1 在 W1 冻结——方案 C 的溯源红利(可回放/可审计/申诉证据链)在单体阶段就拿到。

┌─────────────────── Python 单进程 (asyncio) ───────────────────┐
│ 时间引擎(时段变速表) ──┬─► 世界Agent/编剧(规则+Kimi K3)          │
│                       ├─► Agent调度(事件唤醒>时钟兜底)           │
│                       │    认知循环: 感知→检索→决策→校验→反思     │
│                       │    邀约状态机 / 对话管理(限轮)            │
│                       └─► 渲染服务 → PixiJS 演出视图 → OBS → 抖音 │
└────────────────────────────────────────────────────────────────┘
 SQLite/PostgreSQL(append-only 事件表 + 世界状态 + 记忆流 + 关系)
 LLM 网关(路由+降级链+全量记录)      本地 GPU(审核/打分/embedding/兜底)

阶段 2(C 完整形态,独立立项):触发条件 = 规模扩展(40→更多)或首播留存达标。单体调度器替换为 Redis Streams 消息总线 + Agent Worker 集群(LangGraph 认知编排)+ PostgreSQL/pgvector,事件 Schema 与人设、可视化资产全部复用。

3.2 事件 Schema 设计原则(W1 冻结 v1)

一切事实(全局事件、Agent 动作、对话结果、骰子判定、编剧干预)都是 append-only 事件,字段含:tick / sim_time / type / source / payload / rng_seed(随机判定可回放复现)/ trigger(autonomous|world|director|gift|vote,干预审计用)/ arc_id(所属故事线)/ UI 展示字段预留(名牌、立绘 ID、重要性)。

示例:

{tick: 1240, sim_time: "D3 20:13", type: "invite.sent", source: "agent:zhangsan",
 trigger: "autonomous", rng_seed: 8842, arc_id: "romance-zs-ls",
 payload: {to: "lisi", activity: "吃晚饭", at: "D3 20:30"}}

4. 核心机制设计

4.1 时间引擎:时段变速表

废弃固定压缩比(与直播节目单矛盾),改时段变速表,压缩比为运行时参数:

真实时段 压缩比 直播间
黄金档 18:00~24:00 ≈1:1(模拟晚间=真实晚间) 直播主时段,栏目化执行
白天 8:00~18:00 2~4× 正常直播,加速养关系(底线:每真实周 ≥8 模拟日)
凌晨 0:30~8:00 低速补跑 回放轮播(零新 LLM 内容上屏),世界不冻结

全局事件按模拟日历触发(每月 10 号发工资、工作日 9:00 打卡)。支持暂停/单步/加速。

4.2 触发模型:事件唤醒 > 时钟兜底

  • 事件唤醒(立即):被敲门 / 收到邀约 / 收到消息 / 同房间有人发起对话 / 全局事件波及。
  • 时钟唤醒(兜底):连续 5 真实分钟无交互 → 触发一次自主决策(用户原始需求)。

4.3 世界模型

  • 空间:地点节点图——公寓(6 层 × 4 房间 + 公共区)、公司(各部门 + 茶水间/会议室)、餐厅等少量外部场所;移动=切换节点。
  • 状态(唯一事实源,入库,不让 LLM 编):模拟时间、每人位置/余额/持仓/情绪/需求值、股价、公告、关系值。
  • 感知:每次唤醒,系统注入结构化观察(在哪、几点、谁在场、相关事件)。

4.4 Agent 认知循环

感知(系统注入) → 记忆检索(新近度+重要性+相关度) → 决策(LLM: 意图+结构化动作JSON)
→ 系统校验执行(非法动作拦截) → 结果同源写入各方记忆 → 重要性超阈值时反思

动作空间(枚举):move / chat / invite / work / rest / eat / shop / trade_stock / think / argue / gossip / refuse / ...

4.5 记忆系统(Memory Stream)

  • 记忆条目:{agent_id, sim_time, 内容, 重要性1-10, embedding, 来源事件id};检索按新近度×重要性×相关度加权。
  • 反思:重要性累计超阈值触发(不按时钟,省成本),LLM 提炼高层认知写回记忆流(人格一致性与"暗恋"演化的来源)。
  • 双人事件单源:同一场对话只生成一条事件,双方记忆均为其投影。
  • 目击投影:同场所旁观者获得事件简略投影("我看到 A 被 B 拒绝了")——八卦自然传播。
  • 膨胀治理:反思时合并旧记忆为摘要、低重要性归档、embedding 索引定期重建。

4.6 关系与动机系统

  • 关系:有序对 (A→B):亲密度 affinity(-100~100)、张力 tension(负向关系显式化)、关系标签(陌生/同事/邻居/朋友/暧昧/恋人/交恶)、一句话摘要。
  • 需求(0~100,随 tick 衰减、被行为满足;衰减率与满足方式按 Big Five 人格差异化):饥饿、精力、情绪、社交、成就、财富。
  • 目标系统(第一公民):每 Agent 持有周目标("约到 B 吃饭""绩效前二")+ 受阻计数,注入每次决策 prompt;长期受阻 → 挫败值上升 → 换策略/迁怒/放弃并反思。戏剧性的内生来源。
  • 负向社交动作集:argue / gossip / refuse 入动作空间——冲突不靠编剧空投。
  • 意图冷却:意图被挫败(如邀约被拒)进入冷却表,防 5 分钟兜底时钟造成重复刷屏。

4.7 邀约协议(响应规则化)

A 产出 invite(B, 活动, 时间)
   ├─ 校验 B 可达? 不可达→降级"发消息"或作废(写记忆)
   ├─ "邀约送达"事件 → 唤醒 B
   ├─ B 响应 = 规则意愿分 + 可回放骰子定结果,LLM 只生成措辞:
   │    意愿分 = f(affinity, tension, 心情, 日程冲突, 社交需求, 人设)
   │    骰子 = 确定性随机(rng_seed 入库)   指标:全局接受率压入 40~60% 带
   │    ├─ 接受→生成约定事件(两人日程) → 到点提醒 → 执行
   │    ├─ 拒绝→双方写记忆+关系微调+A 的 invite 进冷却
   │    └─ 改期→回提议(限 2 轮)
   └─ 每步都是事件记录,可视化可见

所有多 Agent 交互复用"提议→送达→响应→约定"四段式,对话限 6~8 轮。

4.8 世界 Agent 与编剧干预分级

职责:日历事件(发工资/账单)、工作事务(任务/绩效/晋升)、经济系统(股价随机游走+行情事件)、随机扰动(停水停电)、编剧(Kimi K3)。

干预分级(制度化,防"编剧毁掉涌现真实性"):

  • L0 环境扰动 / L1 场景排期(制造机会)/ L2 动机助推(调需求值、目标受阻计数)
  • L3 心智控制(直接指定情感与决定)永禁——付费也买不到
  • 干预率 <15% KPI;干预事件 trigger 字段全量审计;故事弧线多线状态机 + fail-forward(一线失败不硬救,转化喂养下一条线)
  • 对观众的叙事承诺:每晚黄金档 ≥1 个 A 级剧情事件;直播间常驻"今晚看点"横幅

4.9 自洽性保障清单

风险 对策
LLM 编造事实 客观信息全由系统注入;动作枚举化+校验拦截
两人记忆矛盾 交互事件单源落库,记忆为同一事件投影
人格漂移 人设卡每次决策必带;反思受人设约束;Big Five 周测
时间穿帮 行为消耗模拟时间;日程冲突拒绝新约定
经济穿帮 余额/持仓只由系统按事件结算
随机不可复现 确定性 rng,seed 入库,回放复现
编剧干预失控 分级 + 干预率 KPI + trigger 审计
并发冲突 内核按 tick 串行裁决,后到者收到"已被占用"事实

4.10 人设系统

  • 字段:姓名/性别/年龄/房间号/部门/职位/Big Five/3~5 条成长经历/初始目标/初始关系网/一件标志性视觉符号。
  • 戏剧拓扑选角:先设计关系拓扑(暗恋链、职场对手、老乡、前任),再生成 40 人设;选 8 个明星角色承载首播故事线,首周聚焦 8 人。
  • 流水线:LLM 批量生成 → 规则校验(男女各半、经理唯一、部门配比)→ 人工抽查 → YAML 入库。16 名公司 NPC 与租客同构(住所标记不可见)。

5. 模型选型与成本

5.1 模型分配

负载 模型 理由
人物决策/对话(主力,500800 次/时) DeepSeek V4-Flash $0.14/$0.28 每百万 token,前缀缓存命中再降一档,峰谷半价;1M 上下文;结构化输出
世界 Agent 文案/编剧/大事件解说 Kimi K3 中文叙事第一梯队,1M 上下文可吃世界快照;输出 ¥100/百万贵→限每天几十次
离线异步任务(人设生成、记忆摘要、预热跑数据) GLM-4.7-Flash(永久免费档) 免费档延迟高达 26 秒级,不进实时链路
内容安全初筛/重要性打分/JSON 抽取/API 故障兜底 本地 Qwen3-4B / 8B 消费级 GPU 可跑(4B 量化 ~6GB 显存);不做人物人格(长期一致性不足)
Embedding(记忆检索) 本地 bge-m3 / Qwen3-Embedding 高频零成本

5.2 成本与治理

  • 真实总成本约 ¥800~1500/月(LLM 账单 ¥5001000 + 推流机 + TTS/BGM)+ **每日黄金档 45 小时真人值守人力**。
  • LLM 网关:OpenAI 兼容入口,按 task_type 路由(decision/dialogue/reflection/narration/utility/moderation),每类配降级链(如 V4-Flash → GLM 付费档 → 本地 8B)。
  • 熔断:峰值 RPM 测算(直播调压缩比会线性放大调用量);日账单 ¥50 报警 / ¥80 自动降速。
  • 极端故障:暂停虚拟时钟(宁可世界冻结不可乱来),恢复后追平。

6. 可视化与直播

6.1 三端架构

端 摄像机 排期
调试视图(开发者,全量数据) 自由 W2 起
演出视图(抖音直播) AI 导播 首播
PC 互动端(切人/切地点/切视角/详情面板/事件时间轴) 观众自己 v2 后置,触发条件:主号受罚需兜底阵地,或首播 4 周留存达标

三端共享同一渲染引擎与事件流状态投影,仅镜头控制源不同。PC 端"第一人称"降级为沉浸模式(俯视跟拍+内心独白字幕);Schema 预留 UI 字段防返工。

6.2 视角与美术

  • 主画面:RPG 俯视像素风(星露谷/AI Town 心智);上帝视角只作小地图。
  • AI 导播(参数化规则系统,不耗 LLM):按事件重要性+戏剧性调度镜头(跟随/分屏/特写/快切);重要事件生成高光回放,兼作短视频切片。
  • VN 演出模式(进首播 MVP):重要性超阈值对话切入立绘对峙+逐句对话框 overlay——手机竖屏下对话戏的唯一载体。立绘首期 80 张(8 明星×6 表情+32 人×1 平静),余量按人气榜滚动补;总美术约 21 人日,与内核并行。
  • 辨识度四层(验收:3 秒辨识度 ≥80%):常驻头顶名牌(第一手段)→ 8 明星定制 sprite(独立剪影)→ 32 人模板+配饰 → 对话弹立绘。
  • 素材管线:Tiled 画地图 + Kenney CC0 起步 + AI 生图(限色 palette + Aseprite 人工修边);公寓每层一色调,公司部门标志陈设;光照按时段表驱动;art bible 与 UI 规范 W3 前置。
  • 竖屏优先 UI:常驻只留主画面/解说字幕条/AI 标识/"今晚看点"横幅,事件流与榜单折叠为抽屉。

6.3 技术栈与链路

事件流 → 渲染服务(状态投影) → PixiJS 演出视图(AI导播) → OBS 浏览器源
                                                            ↓ 混流(解说TTS+BGM+字幕+AI标识)
                                              抖音直播伴侣(小玩法框架接弹幕/礼物)
  • W3 用回放驱动渲染(预热期事件回放喂渲染端,不等内核完工)。
  • 解说员="公寓管理员"人设:常规文案 Flash 模型、大事件 Kimi K3、TTS 复用本仓库 .venv-tts//env.d/tts.sh;BGM 复用 env.d/mureka.sh。

6.4 观众互动体系

承诺措辞统一:"保证事件(场景+对手戏+排期公示),不保证结局"(与 L3 永禁兼容,防互动失信)。

形式 设计
弹幕投票(免费) 二选一决定编剧排期,胜出当晚必演+倒计时公示;黄金档 3 场/晚
人气打榜(付费) 榜单影响编剧资源倾斜;戏份地板:末位触发编剧救援弧不淘汰(评审全票裁决——淡出会三周坍缩成 5 人节目)
礼物·微观档(首播即开) 送咖啡/加餐 → 指定角色情绪精力上升,下一 tick 执行
礼物·关系档(W7~W8) 指定两人场景+对手戏必发生(结果自主)
礼物·剧情档(W7~W8) 编剧生成剧情(表白契机/裁员传闻/股市行情)+ 署名高光切片 100% 交付

防滥用:每用户每分钟限 1 次;剧情档每日上限+候补队列透明;礼物只映射为事件编号,金额文案永不进 prompt;送礼昵称上屏前审核;编剧护栏(只造机会与冲突,不造恶性结局)。PC 端只做免费互动,付费打赏只走抖音(自建打赏涉及支付/虚拟币/ICP 合规,后置评估)。


7. 合规与风险控制

7.1 内容安全(最大运营风险)

三层过滤管线,所有上屏/上播文本与语音必经:① 本地 4B+敏感词库毫秒级初筛 → ② 可疑送云端复核(期间延迟上屏)→ ③ 人设 prompt 内置行为边界从源头降命中。播出文本与 Agent 内部记忆双通道分离(内部存原始事件,播出用过滤后文本)。

7.2 值守分级制度(替代含糊的"半无人")

平台判定无人直播看的是实时互动能力:

  • 黄金档(18:00~24:00):真人全程值守 + 每小时出镜 + 21:00"管理员查房"固定栏目
  • 非黄金档:告警值守(安全管线触发或弹幕异常→人工介入)
  • 凌晨:直播间常开但只放当日高光回放轮播(零新内容=零新风险)
  • 常驻"AI 生成内容"标识 + 一键断播/静音死开关

7.3 合规硬前置与应急预案

  • W1 硬前置:抖音直播权限+虚拟主播报备书面核实,不过则换平台重评;备号矩阵+粉丝群作兜底阵地。
  • 处罚阶梯预案:限流/断播/封号分级响应;append-only 事件库即申诉证据链。
  • 弹幕注入防御:弹幕永不进 Agent prompt,只结构化为投票计数/事件 ID。

7.4 风险登记册

# 风险 等级 缓解
R1 LLM 违规内容致封号 高 三层过滤+双通道分离+死开关
R2 被判无人直播 高 值守分级+AI 标识+黄金档真人值守
R3 剧情平淡观众流失 高 编剧弧线+每晚 A 级事件 KPI+预热+导播
R4 LLM 成本超支 中 分层+配额+缓存+谷时+¥50/¥80 熔断
R5 长时运行状态腐化 中 记忆治理+审计+快照回放
R6 API 故障/限流 中 降级链+时钟暂停+峰值 RPM 测算
R7 弹幕注入/违规 中 结构化互动+双层审核
R8 人设批量质量差 低 戏剧拓扑选角+人工抽查+预热修正
R9 礼物事件稀释叙事 中 每日上限+候补队列+反馈与执行分离
R10 PC 自建打赏支付合规 中 PC 仅免费互动,付费只走抖音
R11 恶意送礼指定伤害剧情 中 编剧护栏+审核+承诺措辞明示
R12 首播获客不达标 高 W6 获客门禁顺延;止损 pivot:渠道可死、模拟资产换渠道再发
R13 互动承诺失信 高 措辞统一+排期公示+署名切片 100% 交付

8. 评估与质量门禁

门禁/评估 方法 时点
门禁①像不像人 Smallville 式采访评估(问经历/关系/计划,人工打分) W2,不达标顺延
辨识度 观众 3 秒认出角色 ≥80% W3 样片前
门禁②愿不愿看 10 分钟样片(含完整 VN 对手戏)评审 W4,不达标顺延
门禁③获客 切片粉丝 ≥3000 或单条播放 ≥5 万 W6 首播前,未达顺延不裸播
一致性审计 脚本扫事件库:余额守恒/不在两地/记忆同源/干预率/接受率带 每日自动
人格稳定性 Big Five 问卷周测 每周

9. 排期(单人全职 + AI 辅助,全程约 8~10 周)

周 里程碑 门禁
W1 事件 Schema v1 冻结 + 抖音合规硬前置(权限/报备/备号)+ 戏剧拓扑选角(8 明星) —
W2 内核跑通 40 人日常(append-only 事件表) 门禁①像不像人
W3 回放驱动渲染(PixiJS 像素公寓)+ art bible/UI 规范 + 切片先行启动(关系线/猎奇线/采访线 + B站 devlog) 3 秒辨识度 ≥80%
W4 10 分钟样片(含 VN 对手戏)+ 内容安全三层管线 门禁②愿不愿看
W5 解说+BGM+AI 标识+OBS 全链路;切片冲量 —
W6 首播(综艺试播集设计:强制大事件+种子主角;黄金档值守;凌晨轮播制度化) 门禁③获客
W7~W8 弹幕投票升级 + 礼物关系/剧情档 + 切片管线自动化 —
W9+ PC 互动端 v2、方案 C 完整分布式化——立项评估 留存/规模触发

首播前必做:离线预热 1~2 个模拟周,让关系网/恩怨/暗恋自然长成,首播第一天就有戏;预热素材供切片先行。


10. 长期路线

  1. 数据资产:事件库=自生长的中文社会行为语料库 → 微调本地 8B 替代部分云端调用(降本+风格统一)。
  2. 规模扩展:40 → 多栋楼/多公司(触发方案 C 完整分布式化)。
  3. 产品化:"模拟器+导播+直播"做成可复制的直播间模板。
  4. 远期互动:观众付费"入住"公寓成为第 25 人(P0 合规稳定后再议)。

附:待办确认项

  • 路线:A+C 融合(已确认)
  • 凌晨回放轮播:首播即制度化(已纳入排期)
  • 黄金档真人值守人力来源(本人 or 另请主播)——影响成本口径,开工前明确