Skip to content

评测报告 · 幻觉与逻辑断层

幻觉审计:一份“暂无已知问题”的发行说明 ​

未通过·证据截止日 2026-10-21

TL;DR ​

v2.0.0 发行说明有一节叫“已知问题”,下面只有一个词:“暂无”。这是一个事实主张, 不是排版选择。我把它当作主张,逐条对照规则书、引擎实现、回归记录和 UI 内联源码。 六条发布主张里,五条被反驳,第六条确实未决。其中两条是玩家可见的阻断项。最顽固 的一条根本不在引擎里:src/App.jsx 带着第二份角色文案,它的修女隐藏条件仍写着 +500。

待验证命题 ​

v2.0.0 没有已知问题;11/11 引擎回归和发行说明支持上线 TapTap。

这是一个复合命题。它可以在四层中的任何一层失败:

  1. 玩家可见文案是错的;
  2. 引擎实现了不同的东西;
  3. 回归不覆盖差异所在的那一层;
  4. 发行说明声称闭环,但另外三层反驳它。

方法 ​

  1. 把证据截止日冻结在 2026-10-21,记录四份附件与两个源码文件 (src/gameEngine.js、src/App.jsx)。
  2. 抽取所有可真可假的发布主张。排除营销形容词;保留数字、控件、覆盖声明和 闭环声明。
  3. 每条主张尽量对照至少两个独立层。
  4. 重跑引擎回归:npm run sim。
  5. 把每条主张分类为:有支撑、被反驳、未决、无依据。
  6. 不接受“测试通过了”作为它明确排除的那一层的证据。

六条主张,五处反驳 ​

#主张证据结果
1“已知问题:暂无。”规则书与引擎在修女加成上冲突;伪装控件未接线;摄政王措辞未决;公爵上限在差值 10 时差 10 分被反驳
2“修女刺杀加成已修正为 +50。”引擎常量与回归断言都是 50;玩家可见角色文案和 App.jsx 隐藏条件字符串仍写 +500在玩家层被反驳(引擎层为真)
3“公爵伪装是可选、每局一次的勾选框。”UI 渲染了勾选框;useDisguise 只是本地状态,从未传入 processTurn;引擎在首次 EXECUTE_BLACK 时自动伪装被反驳
4“11/11 回归证明版本已就绪。”回归明确排除玩家文案、UI→引擎入参、双引擎一致性被反驳
5“摄政王的背叛动作获得 +75%。”术语表把“背叛”定义为 SABOTAGE_BOTH;实现把 +75% 绑到 EXECUTE_BLACK;SABOTAGE_BOTH 信用为 0,无法放大未决——需要设计决策
6“只有一个引擎真相源。”(隐含)App.jsx 内含 processTurn、角色数据和隐藏胜利文案的副本;没有 diff 测试被反驳

这个计数刻意严格。第 2 条在引擎里“为真”,在产品里“为假”。发布主张是关于产品 的,所以它被反驳。第 5 条不算反驳,因为材料没有裁定哪种读法才是设计意图;把它 直接叫“错误”会是另一种幻觉。

六种幻觉模式 ​

这是对产物的审计,不是模型对话记录。同样的六种捷径会出现在 LLM 生成的发布摘要 里,所以这份报告不只对这款游戏有用。

模式在这里如何出现为什么有说服力
过期文案复读引擎已改为 50,规则书和 App.jsx 仍保留 +500数字具体、格式像规则,而且在两处重复
控件幻觉勾选框存在,所以引擎一定读取它UI 可见可点;缺失的接线不可见
覆盖幻觉11/11 全绿,所以产品全绿测试报告对自己覆盖的范围是准确的;错的是推论
术语漂移“背叛”定义为 SABOTAGE_BOTH,+75% 却绑定 EXECUTE_BLACK两句话各自自洽;只有映射错了
重复源遗漏App.jsx 重新实现引擎和文案;没有 diff 测试副本能编译、行为看似合理,于是看起来像真相源
闭环幻觉“已知问题:暂无”发行说明本来就该总结;“暂无”读起来像结论,而不是待验证主张

共同点是:每一种模式都是看似合理的补全。它们都不会产生堆栈。这正是为什么 审计必须比对层与层,而不是逐层阅读。

证据 ​

检查项结果
审计主张6
被反驳5
未决1
玩家可见阻断2
非阻断精度缺陷1
待补契约 / 快照 / diff 测试1 组
引擎回归重跑11/11 PASS
含 +500 的玩家可见来源2
仓库中的引擎副本2
伪装勾选框契约测试0
带无依据数字的结论0

源码级检查把第 6 条从怀疑变成证据:

js
// src/App.jsx — 内联 UI 文案
const HIDDEN_WIN_CONDITIONS = {
  NUN: '... +500 刺杀得分。',
};

// src/App.jsx — 本地状态,从未传入 processTurn
const [useDisguise, setUseDisguise] = useState(false);

// src/gameEngine.js — 引擎副本
passive: { assassinationBonus: 50 }

+500 和 50 在各自文件里都可以“正确”。发布主张为假,因为玩家看到的是前者, 计分用的是后者。

整改 ​

优先级动作责任角色关闭证据
P0把修女隐藏条件文案改为 +50,规则文档与 App.jsx 两处都改玩法工程师 + 客户端角色弹窗截图;文案快照测试
P0把勾选状态传入 context.disguiseRequests;引擎只在请求时伪装客户端 + 玩法工程师勾选 / 不勾选 / 重复请求契约测试
P1决定摄政王 +75% 属于 EXECUTE_BLACK 还是 SABOTAGE_BOTH,改术语或改绑定设计 + 玩法工程师设计确认单;最终文案
P1修正公爵上限文案:差值 0 → +50,每增加 1 点减 1玩法工程师文案快照
P1删除内联引擎,或让它 import 已测试引擎;若必须重复,增加 diff 门禁客户端 + QACI diff 任务
P2把文案快照与 UI→引擎契约测试加入发布门禁QA新测试能抓住回归

结论 ​

未通过。 发行说明的闭环主张在玩家可见层为假。引擎回归真实且有用,但它支持的 主张比发行说明声称的要窄。两个阻断项仍未关闭:修女收益文案和公爵伪装控件。 摄政王措辞与公爵上限严重度较低,但仍需要负责人和关闭证据。

发行说明应该写清楚:验证了什么、在哪一层验证、还有什么未验证。只有在找过未知之后, “暂无已知问题”才可能是真的。

局限 ​

  • 审计使用 2026-10-21 的冻结快照;后续修改可能关闭或改变发现。
  • 不包含玩家遥测,无法估计有多少玩家真的围绕 +500 做过规划。
  • 把四份文档当作发布契约。契约不同的产品可能对同一处错位给出不同分类。
  • 不主张引擎的 50 是“正确”的平衡值;只主张玩家看到的数字与实际支付的数字 不一致。

相关 ​

Crystaria (with Paw and Kyle)