The Town Remembers / 人言成真
先用几句话交代这个想法最初是从哪里出发的,再进入具体内容。
The Town Remembers / 人言成真
一个由事实、传闻、谎言、证据和信念共同驱动的 AI 原生微型 RPG。
玩家不仅改变世界中真正发生的事,也能影响不同角色如何理解这些事,并由此改变整个世界的行动方向。
1. 这个项目是什么
The Town Remembers 是一个以“信息如何改变世界”为核心玩法的微型动态 RPG。
玩家进入一座封闭小镇。镇上存在多个彼此竞争的阵营、拥有不同利益和秘密的 NPC,以及一场正在持续升级的公共危机。
玩家可以:
- 调查事件;
- 公开或隐藏证据;
- 说服、欺骗、告密和嫁祸;
- 选择向不同角色透露不同版本的信息;
- 操纵某个阵营对事件的判断;
- 直接采取物理行动改变世界事实;
- 观察自己的行为如何通过传闻、误解和信任网络产生长期后果。
游戏不要求所有 NPC 知道同一件事,也不要求所有 NPC 对同一事实形成相同结论。
每个 NPC 都只能根据自己掌握的知识、信息来源、人格、利益、阵营和信任关系进行判断与行动。
2. 一句话体验
你可以揭露真相,也可以制造一个足以改变现实的谎言。
3. 项目的起点
这个项目最初只是一个用于练习 RAG + Agent 技术栈的 AI DM 想法。
游戏天然具有三个适合 Agent 系统的特征:
- 规则约束强;
- 状态连续性强;
- 行动后果强。
但继续思考后,一个更大的问题出现了:
传统 RPG 中,玩家完成一项伟业后,NPC 会谈论它,阵营会调整态度,新的任务和冲突也会随之产生。可这些反应通常依赖任务 Flag、条件对话和大量人工脚本。
游戏世界并不真正理解发生了什么,只是在执行开发者预先写好的反应。
The Town Remembers 想验证另一种可能:
能否让游戏世界区分“什么真实发生了”“谁知道这件事”“他们知道的是哪个版本”“他们是否相信”,并让这些认知差异真正产生游戏后果?
4. 核心设计命题
游戏世界必须明确区分三个层次。
4.1 Truth:真实发生了什么
这是世界的权威事实层。
例如:
{
"mayor.alive": false,
"mine.explosion_cause": "illegal_experiment",
"evidence.ledger.location": "company_office"
}
NPC 可以不知道这些事实,也可以对这些事实产生错误认知,但任何 NPC 的误解、谎言或发言都不能直接篡改 Truth Layer。
4.2 Belief:每个角色认为发生了什么
例如:
{
"npcId": "bartender",
"claim": "the_cult_caused_the_explosion",
"source": "heard_from_guard_captain",
"confidence": 0.72,
"acquiredAt": "day_2_evening"
}
不同 NPC 可以:
- 掌握不同事实;
- 相信不同版本;
- 对同一说法拥有不同置信度;
- 明知是谎言但仍选择传播;
- 因新证据而修正认知;
- 因时间推移而遗忘。
4.3 Expression:角色对外说什么
NPC 的表达不等于其真实认知。
角色可能:
- 说出自己相信的事实;
- 隐瞒自己知道的内容;
- 出于利益公开撒谎;
- 用夸张版本传播传闻;
- 向不同对象说不同的话。
因此:
真实事实 ≠ NPC 的认知 ≠ NPC 的公开表达
5. 核心玩法循环
玩家采取行动
↓
世界产生真实事件
↓
系统判断目击者、证据与影响范围
↓
事件被转化为一个或多个可传播 Claim
↓
Claim 沿关系、地点、阵营和通信渠道传播
↓
NPC 更新自己的 Belief State
↓
NPC 根据认知、利益和目标采取行动
↓
NPC 行动再次改变世界
这意味着玩家的行动后果不只是数值变化或一句动态台词,而可能形成完整的社会反应链。
例如:
玩家伪造“异教徒炸毁矿场”的证据
→ 守卫队长接受证据
→ 守卫开始搜捕异教徒
→ 教会公开支持搜捕
→ 工人认为镇政府在掩盖真相
→ 矿工组织罢工
→ 商路中断
→ 物价上涨
→ 镇上出现暴乱风险
6. 游戏设定
6.1 基础背景
一座依靠矿业生存的封闭小镇发生严重爆炸。
镇长宣布这是异教徒发动的袭击,并要求守卫队立即展开搜捕。
但真实情况是:
爆炸来自矿业公司秘密进行的违规实验。
公司试图销毁证据,守卫队长希望维持秩序,工人开始怀疑政府,教会借机扩大影响,异教徒则准备逃离或反抗。
玩家在七天内介入事件。
6.2 初始阵营
镇政府与守卫队
目标:
- 维持秩序;
- 阻止暴乱;
- 保护政府合法性。
内部矛盾:
- 有人真心维护秩序;
- 有人参与掩盖真相;
- 有人可能在关键时刻倒戈。
矿业公司
目标:
- 隐藏违规实验;
- 继续控制矿场;
- 转移公众注意力。
可用手段:
- 收买;
- 威胁;
- 销毁证据;
- 制造替罪羊。
工人与居民
目标:
- 找到爆炸原因;
- 获得赔偿;
- 防止更多人死亡。
潜在走向:
- 合法抗议;
- 全面罢工;
- 暴动;
- 与其他阵营结盟。
教会与异教徒
教会可能借危机强化自身权威。
异教徒可能是被诬陷者,也可能利用混乱推动自己的政治目标。
6.3 初始规模
第一版控制在:
- 8~12 个 NPC;
- 3~4 个阵营;
- 5 个主要地点;
- 1 个核心危机;
- 3~5 个关键秘密;
- 7 个游戏日;
- 每日若干行动时段。
7. 玩家可以做什么
玩家不需要被限制为固定职业。
玩家可以选择成为:
- 调查者;
- 公司代理人;
- 教会成员;
- 普通居民;
- 煽动者;
- 双面间谍;
- 纯粹追求个人利益的人。
核心行动包括:
调查
- 搜索地点;
- 检查物品;
- 询问 NPC;
- 验证口供;
- 追踪信息来源。
信息操作
- 公开证据;
- 隐藏证据;
- 伪造证据;
- 向不同角色透露不同信息;
- 传播传闻;
- 指控或替他人洗清嫌疑。
社会互动
- 说服;
- 威胁;
- 交易;
- 收买;
- 建立信任;
- 利用关系网。
直接行动
- 偷窃;
- 潜入;
- 破坏;
- 救人;
- 袭击;
- 保护目标;
- 阻止某个 NPC 行动。
8. NPC 为什么不是普通聊天机器人
每个 NPC 至少拥有以下状态:
identity:
name:
faction:
occupation:
goals:
- primary_goal
- secondary_goal
personality:
risk_tolerance:
honesty:
conformity:
curiosity:
relationships:
trust:
fear:
hostility:
knowledge:
facts:
claims:
secrets:
beliefs:
claim_id:
confidence:
source:
timestamp:
capabilities:
actions:
access:
communication_channels:
NPC 的行为不能只由一句 Persona Prompt 决定。
系统应综合:
当前认知
+ 当前目标
+ 人际关系
+ 阵营利益
+ 角色能力
+ 世界状态
→ 下一步行动
NPC 的行动需要真实影响游戏,例如:
- 向另一个 NPC 传递信息;
- 前往某个地点;
- 隐藏或销毁证据;
- 举报玩家;
- 调整商品价格;
- 发布命令;
- 发起搜捕;
- 组织罢工;
- 背叛阵营;
- 改变对玩家的态度。
9. 底层系统:World Cognition Engine
游戏本体背后沉淀的核心是一个世界认知引擎。
9.1 Truth Layer
负责维护权威世界状态:
- 人物生死;
- 人物位置;
- 物品归属;
- 证据真伪;
- 地点状态;
- 阵营资源;
- 任务与危机状态。
9.2 Event Layer
把重要行为转化为标准化世界事件:
{
"eventId": "evt_001",
"type": "EVIDENCE_PLANTED",
"actor": "player",
"target": "cult_hideout",
"object": "forged_detonator",
"location": "old_chapel",
"time": "day_2_night",
"visibility": "covert"
}
9.3 Witness & Evidence Layer
负责判断:
- 谁亲眼看见;
- 谁只看到部分过程;
- 谁掌握物理证据;
- 证据是否可靠;
- 证据是否可伪造;
- 事件是否存在其他解释。
9.4 Claim Layer
世界事实被角色表达后,会形成可传播的 Claim:
{
"claimId": "claim_014",
"content": "the_cult_caused_the_explosion",
"origin": "guard_captain",
"truthRelation": "false",
"evidenceRefs": ["forged_detonator"],
"distortionLevel": 0.25
}
9.5 Belief Layer
维护每个角色对 Claim 的认知:
- 是否知道;
- 信息来源;
- 置信度;
- 是否与已有认知冲突;
- 是否愿意公开承认;
- 是否已被新证据修正。
9.6 Propagation Layer
传播渠道包括:
- 亲眼目击;
- 面对面交谈;
- 酒馆传闻;
- 信件;
- 公告;
- 阵营内部情报;
- 教会布道;
- 守卫命令;
- 商人和旅客传播。
传播受到以下因素影响:
- 地点;
- 时间;
- 社交关系;
- 阵营权限;
- 信任度;
- 信息重要性;
- 信息隐秘程度;
- 传播者影响力;
- 接收者已有立场。
9.7 Reaction Layer
将 NPC 的认知转化为游戏行动:
Belief + Goal + Relationship + Capability
→ Reaction Proposal
→ Rule Validation
→ Game Action
9.8 Validation & Audit Layer
LLM 不能直接修改世界。
系统采用:
Agent 提议
→ Schema 校验
→ 引用完整性校验
→ 世界规则校验
→ 权限与能力校验
→ 应用 State Diff
→ 记录审计日志
10. RAG、Agent 和确定性程序分别负责什么
RAG 负责
- 世界设定;
- NPC 背景和关系;
- 历史事件;
- 地点与阵营知识;
- 角色可访问的知识;
- 与当前行动相关的规则和案例。
RAG 的关键不是“搜到更多”,而是:
不该知道的 NPC,必须搜不到。
Agent 负责
- 将自然语言行动转成事件;
- 判断事件语义;
- 提议目击者和影响;
- 生成 Claim;
- 更新 Belief 候选;
- 规划 NPC 行动;
- 生成符合局部知识的对话。
确定性程序负责
- 世界事实;
- 时间推进;
- 人物位置;
- 物品归属;
- 证据状态;
- 数值与资源;
- 状态差分;
- 规则校验;
- 信息传播基础规则;
- 回滚和审计。
11. 玩家界面
第一版可以使用 Web UI,不做 3D。
主要界面
对话与行动区
玩家通过自然语言输入行动:
我把账本藏进牧师的房间,然后匿名告诉守卫那里有公司犯罪的证据。
系统将其拆分并执行为多个事件。
地图
显示:
- 主要地点;
- 玩家位置;
- 已知 NPC 位置;
- 可进入区域;
- 当前公共事件。
人物关系面板
玩家只能看到自己已知的:
- NPC 身份;
- 公开关系;
- 已建立的信任;
- 可能的阵营倾向。
线索面板
记录玩家获得的:
- 事实;
- 证据;
- 证词;
- 未验证说法;
- 相互冲突的信息。
世界调试面板
开发者模式显示:
- 权威事实;
- 每个 NPC 当前相信什么;
- Claim 从哪里产生;
- 经过谁传播;
- 如何发生失真;
- 为什么某个 NPC 采取当前行动;
- 哪个 State Diff 被接受或拒绝。
这个面板是项目从“AI 游戏 Demo”升级为“可解释基础设施”的关键。
12. 第一版 MVP
第一版不追求完整七日剧情。
只实现一个可闭环场景:
玩家发现矿业公司账本,并决定如何处理。
初始角色
- 玩家;
- 守卫队长;
- 酒馆老板;
- 矿工代表;
- 公司代理人;
- 牧师。
初始地点
- 矿场;
- 酒馆;
- 守卫所;
- 公司办公室;
- 教堂。
核心秘密
矿场爆炸来自公司的违规实验。
玩家可做的关键行为
- 把账本交给矿工;
- 把账本交给守卫;
- 把账本卖给公司;
- 隐藏账本;
- 伪造账本内容;
- 告诉不同 NPC 不同版本;
- 公开宣布某种结论。
MVP 必须验证的结果
同一个初始世界,在不同玩家选择下,可以产生明显不同的状态:
- 真相公开,公司失势;
- 证据被销毁,公司继续控制小镇;
- 异教徒被嫁祸,守卫开始搜捕;
- 工人不相信政府,提前爆发罢工;
- 玩家被发现撒谎,个人信誉崩塌。
13. 第一版技术验收标准
事件
- 玩家自然语言能够稳定转成结构化 Event;
- Event 必须保留 actor、target、location、time 和 visibility;
- 非法或无法执行的事件会被拒绝或要求降级处理。
世界状态
- Truth Layer 不受 NPC 谎言直接影响;
- 每次状态变更均可查看 diff;
- 可以撤销到上一回合。
认知
- 不同 NPC 可以持有不同 Belief;
- Belief 必须记录来源和置信度;
- NPC 不会访问自己无权知道的信息;
- 新证据可以修正旧认知。
传播
- Claim 可以通过至少三种渠道传播;
- 传播受关系、距离和信任影响;
- 信息至少支持一次失真;
- 可以追踪完整传播链。
反应
- NPC 不仅生成对话,也会产生至少一种世界行动;
- NPC 行动必须与其认知和目标一致;
- 行动必须经过能力与规则校验。
可解释性
对于任意 NPC 行动,系统可以回答:
他为什么这么做?
他依据了什么信息?
这个信息从哪里来?
其中哪些部分是真的?
14. 第一版明确不做什么
- 不做大型开放世界;
- 不做 3D;
- 不做实时战斗;
- 不做复杂技能树;
- 不做语音;
- 不做图片生成;
- 不做百人以上社会模拟;
- 不做通用游戏编辑器;
- 不做“支持所有游戏”的抽象;
- 不做完整商业 AI DM 平台。
第一版只证明:
事实、认知、表达和行动之间的闭环能够成立。
15. 项目结构建议
whispering-town/
├── apps/
│ └── web-demo/
├── packages/
│ ├── world-state/
│ ├── event-schema/
│ ├── belief-engine/
│ ├── propagation-engine/
│ ├── reaction-engine/
│ ├── validator/
│ └── rag-context/
├── scenarios/
│ └── mining-town/
├── tests/
│ ├── event-cases/
│ ├── belief-cases/
│ ├── propagation-cases/
│ └── reaction-cases/
└── docs/
├── architecture.md
├── world-schema.md
└── evaluation.md
16. 推荐开发顺序
Phase 1:纯确定性世界
- 固定 6 个 NPC;
- 固定 5 个地点;
- 固定事实、证据与关系;
- 手动触发事件;
- 实现 Truth、Claim 和 Belief 数据结构;
- 实现基础传播规则。
Phase 2:事件理解 Agent
- 接收玩家自然语言;
- 输出结构化事件;
- Validator 检查;
- 应用合法事件。
Phase 3:NPC Reaction Agent
- 根据局部 Belief 和目标规划行动;
- 限制可用工具;
- 对行动结果进行校验和写回。
Phase 4:RAG 与知识权限
- 切分世界知识;
- 建立角色级知识访问控制;
- 检索时按角色、时间和来源过滤。
Phase 5:传播与失真
- 支持渠道;
- 支持信任衰减;
- 支持信息失真;
- 支持证据纠正;
- 增加传播链可视化。
Phase 6:完整微型 RPG
- 七日时间线;
- 多个结局;
- 内容打磨;
- 对外演示;
- 从 Demo 中抽出稳定 middleware API。
17. 项目的价值
对玩家
提供一种不同于传统任务树的体验:
玩家不是在选择开发者预写的剧情分支,而是在干预一个会自行传播信息、形成判断并采取行动的社会系统。
对开发者
验证一种新的 AI 游戏架构:
Scripted Reaction
→ State-aware Reaction
→ Belief-driven World Reaction
对作品集
它能够同时展示:
- RAG;
- Agent;
- Tool Calling;
- Structured Output;
- 状态管理;
- 知识图谱;
- 多 Agent;
- 规则校验;
- 长程一致性;
- 可观测性;
- 游戏系统设计;
- AI 原生玩法设计。
对未来产品
可以进一步抽象为:
Agentic World Knowledge & Reaction Middleware
面向:
- AI DM;
- CRPG;
- 开放世界 RPG;
- 推理游戏;
- 阵营政治游戏;
- 模拟经营;
- 社会模拟;
- 互动叙事。
18. 对外项目叙事
现有 AI 游戏通常试图让 NPC 更会说话,但 NPC 的对话能力并不等于世界真正理解了玩家的行为。
Whispering Town将世界中的事实、角色认知和公开表达拆分为不同层次。玩家的行动会产生权威世界事件,事件会通过目击、证据、传闻和阵营网络传播,不同角色因此形成不同信念,并基于自身利益采取真实的游戏行动。玩家不仅可以改变世界事实,也可以改变世界如何理解事实。
这个微型 RPG 同时也是一个 Agentic World Middleware 的验证场,用于探索 AI 时代的 RPG 世界如何从预写脚本,走向可持续、可解释的动态反应系统。
19. 当前最重要的问题
- 玩家操纵信息的过程如何保持可理解,而不是完全不可控?
- NPC 的自主行动频率应该多高,才不会抢夺玩家的主体性?
- Claim 失真应采用确定性规则还是 Agent 生成?
- 传播模拟需要做到多真实,才能既有趣又可调试?
- 如何设计信息权限,让 RAG 不泄露全局事实?
- 如何防止 LLM 将“角色相信的内容”误写成“世界真实事实”?
- 第一版是否需要显式骰子或概率判定?
- 玩家如何获得足够反馈,理解自己正在影响认知网络?
- 系统应如何处理多个互相矛盾但都缺乏充分证据的 Claim?
- 哪些部分应该成为通用 middleware,哪些必须留在具体游戏中?
20. 最终判断
这个项目的重点不是模拟更多 NPC,也不是生成更多文本。
它真正要证明的是:
一个游戏世界是否可以同时维护“什么是真的”和“每个人认为何为真”,并让二者之间的差异成为可玩的系统。
第一版成功的标志不是内容量,而是出现这样的时刻:
玩家突然意识到,自己两天前对酒馆老板说的一句话,经过三个人的转述和一次失真,最终让守卫队搜捕了一个无辜角色,而整个过程在系统中都可以被解释、追踪和回滚。