返回博客

2026.10.01

改一个字,同一个模型从 59 分到 72 分:我那三局 AI 打游戏的对比,到底在比什么?

让一个 35B 本地模型玩《王权:三国》,三局实战比「思考 / 不思考 / 随机」,结果分不开。改做 360 道离线题之后才发现,四项数值里有一项的名字被我起错了,模型一直在按错的含义推理。改对一个字,同一套题从 59.2% 到 72.1%。这篇给三条能自己算的账:错误能拆到哪一项、题库的天花板在哪、实战要多少局才分得出高下。

LLM评测游戏方法论

同一个 35B 模型,同一套 360 道题,同样的温度,同样的提示词结构。只改了一个字,准确率从 59.2% 涨到 72.1%。

这个字是我自己起的。前面花了一整天、跑了三局实战,比较「开思考」「不开思考」「随机乱选」哪个玩得好,比出来三者分不开。我一度以为是模型不行,最后发现是我把游戏里一项数值的名字叫错了,模型从第一轮起就在按错的含义推理。

想直接拿方法的看第 5 章,那是一个能自己算的样本量公式;想知道错字具体错在哪、怎么被抓出来的,看第 3 章。

1. 游戏和三局实战

《王权:三国》是《王权》系列的三国版,玩法就一句话:屏幕中间一张事件卡,左滑右滑二选一。顶上四项数值,任何一项掉到 0 或者涨到 100,你这任统治者就死了,换下一任接着玩。计分看一任活了多少天。

我让一个 35B 的本地模型在掌机上玩。它看牌面、看两个选项,再看我用像素量出来的四项数值,决定左还是右。脚本负责截图、拖卡、处理决斗小游戏这些杂事。

最初按图标给四项起了名:麦穗是「粮」,人头是「民」,刀是「兵」,第四个是座塔,我看着像库房,叫它「财」。

然后跑了三局,只算完整打完的统治者:

设置 完整任数 平均天数 危险局面 往安全:往危险
不开思考 5 294 17:17
随机乱选 4 315 11:11
开思考 3 397 9:11

「危险局面」是我定的:选之前某项 ≤20 或 ≥80。这时候选对方向就是续命,选反了就是送命。

不开思考 17:17,跟抛硬币一模一样。它能说出「民 9,极度危险」,可只要两个选项都不直接碰「民」,它就随手选。随机乱选平均活 315 天,比模型还多 21 天。

开思考那局看着最好,397 天。但只有 3 任,而且 225 轮里有 135 轮思考超出长度上限、退回了不思考模式。这局本身就不干净,不能拿来下结论。

2. 实战太慢,换一个快的评估器

实战局是个很吵的尺子。每任 30 来轮,大部分轮次无关生死,一局 220 轮跑 50 分钟,真正能看出方向判断好坏的轮次只有三十几个。

所以我把已有对局翻出来做成离线题库。每一轮我都有选之前和选之后的数值,减一下就知道这个选项让哪几项涨、哪几项跌。题目长这样:给牌面文字和两个选项,告诉模型「选这个之后会动的是民和财」,让它判断各自是涨是跌。

出题规则卡得比较死:至少一项变动 ≥4(更小的变化分不清是真变化还是像素读数抖动),任何一项跳变 ≥45 的扔掉(多半是换任或读错)。同一张牌同一个选项出现多次就合并,前后结果矛盾的直接丢。最后得到 360 题、569 个「涨还是跌」的判断点。

先放两个基线,不然任何分数都没法读:抛硬币 50%;每项都猜它最常见的方向,53.8%。

不开思考、用原来那套名字:59.2%。比基线高,但高得有限。

拆到每一项看,就露馅了:

数值 原名称下答对 改名后答对
第 1 项(麦穗) 59/85 64/85
第 2 项(民) 139/206 149/206
第 3 项(兵) 51/84 56/84
第 4 项(塔) 88/194 141/194

第 4 项只对了 45.4%,比抛硬币还低。194 个点上统计跟抛硬币分不开(p≈0.22),但一个 35B 读中文事件卡,在这一项上表现得像盲猜,这本身就很可疑。

3. 那座塔不是库房

翻攻略、再拿游戏里的死亡文案对一遍,答案很清楚。四项从左到右是富、民、兵、德:

  • 富:物质财富,粮食木石钱都算。太少饿死,太多被人盯上
  • 德:礼法品德,仁慈、忍让、守礼。太高过于温良,被人打死;太低众叛亲离

第 4 项冲到 100 时的死亡文案是「你的追随者过于遵循礼法,无一还手」。这句话说的显然是德,跟钱没关系。

再看模型在原名称下到底怎么错的。194 个第 4 项判断点里,它有 160 次猜「跌」。真实标签里「涨」有 104 个,其中 88 个被它猜成了「跌」。

这个错误模式不难猜:施舍、赦免、守礼,这些行为让「德」涨,可模型被告知这项叫「财」,它多半是在想「做好事要花钱,所以财跌」。这么推其实没毛病,只是推的那个量我给错了。

第 1 项我叫「粮」,真名是「富」,含义差不多,所以那一项几乎没受伤。错名伤人的地方,是名字把含义整个翻过来的那一项。

改对名字之后,同一套题、同一个模型:72.1%。第 4 项从 88/194 到 141/194。

前面三局实战,全是在这个错名字下跑的。等于我一直在给模型递一张写错的说明书,然后比较它戴不戴眼镜读得更准。

4. 一个错字值多少分:把总分拆到每一项

总分是一个加权平均,所以涨幅可以精确拆开:

总准确率的变化 = Σ(每一项答对数的变化)÷ 总判断点数

就是一个减法加一个除法。代进去:

四项答对数:59+139+51+88 = 337 → 64+149+56+141 = 410
总涨幅:(410 − 337) ÷ 569 = 73 ÷ 569 ≈ 12.8 个点
其中第 4 项:(141 − 88) ÷ 569 = 53 ÷ 569 ≈ 9.3 个点

13 个点里,有 9 个多来自那一个字。

只看拆分还不够,还得做配对检验。两个设置跑的是同一批判断点,所以只看两边答案不一样的那些点:第 4 项上,原名对、新名错的有 26 个,反过来的有 79 个,p≈2×10⁻⁷。其余三项的分歧分别是 5:10、11:21、2:7,没有一项显著。所以说改名的收益几乎全落在第 4 项,有数撑着。

顺手做个参照。同一套题上,一个有效参数约 2B 的小模型拿了 57.3%,跟错名版的 35B(59.2%)配对比是 167:156,p=0.58,属于同一档。一个错字把 35B 拉回了小模型的水平。

再对比开思考:改名之后,开思考从 72.1% 到 77.2%,配对 77:48,p=0.012,是真提升。但每题的中位耗时从 0.3 秒涨到 12.8 秒,四十多倍。改名不花一分钱,涨 13 个点;开思考花四十倍时间,涨 5 个点。

完整排名放在这里,看个量级:

模型 / 设置 准确率 每题中位耗时
gpt-6-astra 83.7% 2.6 s
gpt-6-luna 77.7% 1.9 s
本地 35B,开思考 77.2% 12.8 s
本地 35B,不开思考 72.1% 0.3 s
本地 35B,不开思考,错名 59.2% 0.3 s
约 2B 小模型 57.3% 0.1 s

5. 实战要跑多少局才分得出来

回头看,三局实战分不开,有一半是因为错名,另一半是样本量本来就不够。这个可以提前算。

比两个东西谁的方向判断更好,最省的检验是符号检验:只数「A 对 B 错」和「B 对 A 错」的次数。如果一方真实的胜率是 q,要让 p 小于 0.05,大约需要这么多个分歧点:

n ≈ (1.96 ÷ (2q − 1))²

这是正态近似,精确二项检验算出来会多几个:

q = 0.65 → 近似 43,精确 44
q = 0.60 → 近似 96,精确 101
q = 0.55 → 近似 384,精确 390

改名后的实战局里,危险局面的往安全:往危险是 13:7。看着不错,可分歧点一共 20 个,p≈0.26。就算 65:35 是真的,也得攒到 44 个才说得上话。

实战的产出速度是:220 轮跑 50 分钟,真正分了方向的危险局面 34 个,一小时大约 40 个。真实效果如果是 60:40,光证明「比抛硬币强」就要 100 个左右,两个半小时,还只是一个设置。拿平均天数去比两个设置更慢,我估过一次,每种设置要 30 任左右,8 小时起步。

题库这边,一次跑完 569 个判断点,不开思考几分钟就出分。同样是测方向判断,快几十倍,还能做配对检验。所以正确的顺序是:先在快的评估器上定方向,实战只做最后确认。

6. 「AI 玩游戏活了 300 天」该怎么读

网上常见的游戏 agent 战报,长这样:「让模型玩了几局,平均活了 X 天 / 打到 Y 分」。看完我这张表,你应该先问三句:

  1. 随机乱选能打多少? 在这个游戏里,随机乱选平均活 315 天,35B 不开思考 294 天。没有随机基线的「300 天」,什么都说明不了。
  2. 几局? 我那局「开思考 397 天」只有 3 任,样本量连符号检验的零头都不够。
  3. 报的数字跟它想证明的能力挂不挂钩? 平均天数被大量无关生死的轮次稀释。真想测判断力,就去数关键局面里的方向对错。

还有一句更狠的:分数低的时候,先别怪模型,去查你喂给它的东西对不对。我这一轮差点就写出「35B 在关键时刻的判断跟抛硬币一样」的结论,其实是说明书写错了。

7. 这套题库的毛病

诚实起见,列一下:

  • 标签有噪声。 两个最强的模型意见一致、却都跟标签相反的点,占 10% 左右(62/569)。抽查下来多半是游戏设计反直觉,比如「停止食物配给」反而让富掉了 22。所以这套题的天花板大约在 90%,不是 100%。估法也简单:上限 ≈ 1 −(两个最强模型一致且都错的比例)。合并重复题时,366 组里有 6 组前后结果矛盾,被丢了,这是另一个噪声信号。
  • 题比实战简单。 题库直接告诉模型哪几项会动,只让它判方向;实战里它得自己看图、自己读预览。题库 72% 不代表实战就能做对 72% 的关键选择。
  • 题是从我自己的对局里抽的。 只覆盖模型当时碰到的牌,牌库里没出现过的事件不在里面。
  • 错名的对照只做了一个设置。 原名称只测了 35B 不开思考,其他模型都是直接用改对的名字跑的。错名对更强的模型伤害多大,我没测。
  • 实战的改名效果没成立。 改名后那局最长一任活了 950 天,之前最长 600,看着很诱人,但统计上不显著,我不会把它当结论。

8. 下次让模型玩任何有数值的游戏,按这个顺序做

  1. 先查每一项数值的官方名称和含义,攻略加游戏内文案交叉核对。别看图标猜。
  2. 跑分之前先放两个基线:随机,以及「每项都猜最常见方向」。
  3. 把已有对局变成离线题,按项拆准确率。某一项低于基线,先怀疑你给的定义,再怀疑模型。
  4. 两个设置之间只做配对检验,只数分歧点。
  5. 实战开跑前,用 n ≈ (1.96 ÷ (2q − 1))² 估一下要攒多少个分歧点,再按每小时能产出多少个,换算成要跑几个小时。
  6. 找两个强模型「一致地错」的题,去估天花板。