中文 ENG

The Town Remembers / 人言成真

写在前面

先用几句话交代这个想法最初是从哪里出发的,再进入具体内容。

The Town Remembers / 人言成真

一个由事实、传闻、谎言、证据和信念共同驱动的 AI 原生微型 RPG。
玩家不仅改变世界中真正发生的事,也能影响不同角色如何理解这些事,并由此改变整个世界的行动方向。


1. 这个项目是什么

The Town Remembers 是一个以“信息如何改变世界”为核心玩法的微型动态 RPG。

玩家进入一座封闭小镇。镇上存在多个彼此竞争的阵营、拥有不同利益和秘密的 NPC,以及一场正在持续升级的公共危机。

玩家可以:

  • 调查事件;
  • 公开或隐藏证据;
  • 说服、欺骗、告密和嫁祸;
  • 选择向不同角色透露不同版本的信息;
  • 操纵某个阵营对事件的判断;
  • 直接采取物理行动改变世界事实;
  • 观察自己的行为如何通过传闻、误解和信任网络产生长期后果。

游戏不要求所有 NPC 知道同一件事,也不要求所有 NPC 对同一事实形成相同结论。

每个 NPC 都只能根据自己掌握的知识、信息来源、人格、利益、阵营和信任关系进行判断与行动。


2. 一句话体验

你可以揭露真相,也可以制造一个足以改变现实的谎言。


3. 项目的起点

这个项目最初只是一个用于练习 RAG + Agent 技术栈的 AI DM 想法。

游戏天然具有三个适合 Agent 系统的特征:

  1. 规则约束强;
  2. 状态连续性强;
  3. 行动后果强。

但继续思考后,一个更大的问题出现了:

传统 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 必须验证的结果

同一个初始世界,在不同玩家选择下,可以产生明显不同的状态:

  1. 真相公开,公司失势;
  2. 证据被销毁,公司继续控制小镇;
  3. 异教徒被嫁祸,守卫开始搜捕;
  4. 工人不相信政府,提前爆发罢工;
  5. 玩家被发现撒谎,个人信誉崩塌。

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. 当前最重要的问题

  1. 玩家操纵信息的过程如何保持可理解,而不是完全不可控?
  2. NPC 的自主行动频率应该多高,才不会抢夺玩家的主体性?
  3. Claim 失真应采用确定性规则还是 Agent 生成?
  4. 传播模拟需要做到多真实,才能既有趣又可调试?
  5. 如何设计信息权限,让 RAG 不泄露全局事实?
  6. 如何防止 LLM 将“角色相信的内容”误写成“世界真实事实”?
  7. 第一版是否需要显式骰子或概率判定?
  8. 玩家如何获得足够反馈,理解自己正在影响认知网络?
  9. 系统应如何处理多个互相矛盾但都缺乏充分证据的 Claim?
  10. 哪些部分应该成为通用 middleware,哪些必须留在具体游戏中?

20. 最终判断

这个项目的重点不是模拟更多 NPC,也不是生成更多文本。

它真正要证明的是:

一个游戏世界是否可以同时维护“什么是真的”和“每个人认为何为真”,并让二者之间的差异成为可玩的系统。

第一版成功的标志不是内容量,而是出现这样的时刻:

玩家突然意识到,自己两天前对酒馆老板说的一句话,经过三个人的转述和一次失真,最终让守卫队搜捕了一个无辜角色,而整个过程在系统中都可以被解释、追踪和回滚。