设计哲学
支配 AI World Sim 每一个决策的五条设计原则。
这页内容带有明确的立场。每一个架构选择、每一个 UI 决策、每一个上线或被砍掉的功能,都源于这五条原则之一。
如果你曾经疑惑 "为什么它是这样设计的?" ——答案就在这里。
1. 世界不会等你
你下线了,世界照样运转。
这是最核心的一条原则。它意味着:
- NPC 不会"等待"玩家输入。
- 时间持续向前推进。
- 事件在你看不见的地方发生——在深夜,在你睡觉的时候。
- 没有"暂停"按钮。
原因很简单:一个为玩家暂停的世界是舞台,不是世界。 AI 驱动的模拟最有趣的部分,恰恰是没人看着的时候发生的事。
2. NPC 是人,不是函数
NPC 不是状态机,NPC 是一个有生活的人。
具体来说:
- 每个 NPC 都有性格特质,影响着每一个决策。
- 每个 NPC 都有记忆,影响着对新事件的解读。
- 每个 NPC 都有人际关系——并且记得住。
- 每个 NPC 都有目标,即使这些目标很平凡(交房租、睡觉、吃饭)。
- 每个 NPC 最终都会死去。死亡不是失败状态,它是生活的一部分。
我们不把 NPC 当道具。它们是自己故事的主角。你只是从外面读这些故事。
3. 你是观察者,不是操控者
你不是在"玩"游戏,你是在"看"游戏。
没有角色,没有手柄。有的只是:
- 📖 可以阅读的日记。
- 🗺️ 可以观察的世界地图。
- 💬 一个建议通道——你可以留下建议,NPC 可能会参考。
建议是非强制性的。世界没有义务听从。这是刻意为之。一旦玩家可以决定发生什么,模拟就变成了提线木偶戏。
4. 涌现优于脚本
没有手写的事件链,没有分支对话,没有任务标记。
AI World Sim 中有趣的行为必须来自:
- ✅ 规则之间的互动
- ✅ NPC 之间的互动
- ✅ 记忆与新情境之间的互动
- ✅ LLM 生成的文本与结构化状态之间的互动
我们不会脚本化 Margaret 和 Tom 之间的爱情故事。我们给 Margaret 和 Tom 分配兼容的性格特质,把他们放在同一个酒馆里度过周五夜晚,然后让模拟自己去发现后续。
5. 平淡好过失真
一个安静的小镇、NPC 过着普通的日子,比一个 NPC 不断幻想戏剧性事件的混乱小镇更有趣。
这意味着:
- 当规则引擎和 LLM 都能达到同样效果时,我们优先选择规则引擎。
- 我们倾向于保守的日记生成,而非天马行空的日记生成。
- 我们倾向于"Margaret 回家泡了杯茶",而非"Margaret 看到了未来的异象并痛哭流涕"。
戏剧性的涌现之所以有力量,恰恰是因为基线是普通的。如果每个 NPC 都在不断幻想非凡事件,那没有什么是非凡的。
这些原则如何体现在代码中
| 原则 | 代码层面的体现 |
|---|---|
| 世界不会等你 | Tick 引擎由 Cloudflare Worker cron 驱动,与玩家会话无关 |
| NPC 是人 | 每个 NPC 都有性格对象、记忆存储和情感状态 |
| 观察者而非操控者 | 玩家 API 以只读为主;唯一的写入端点是 POST /suggestions |
| 涌现优于脚本 | 代码中没有事件链;事件从规则互动中涌现 |
| 平淡好过失真 | LLM 的 prompt 默认将输出约束在"普通的一天"基调 |
我们明确拒绝的东西
| 我们不会…… | 因为…… |
|---|---|
| 加一个"快进"按钮 | 违反"世界不会等你"原则 |
| 让玩家杀死 NPC | 死亡应该是模拟的决定,不是玩家的 |
| 加多人聊天 | 那会让模拟变成社交平台,但它不是 |
| 生成每日新闻头条 | 太游戏化了;日记才是真相来源 |
| 显示"NPC 内心独白"提示 | 破坏沉浸感,暴露实现细节 |
测试标准
上线任何功能之前,我们都会问:
"这会让世界更鲜活、更不可控吗?"
如果是——上线。 如果不是——砍掉。