Article2026/09/24免费内容

我教AI打游戏

现在你看到的,是Codex在玩《杀戮尖塔》这款卡牌游戏。它会根据敌人的情况、我方的手牌,以及游戏的基本规则制定策略,然后出牌。 但这件事最难的地方,其实不是让AI学会打牌,而是设计一套足够可靠的决策系统,让它做出正确判断,以及验证判断。 我跟Codex一路讨论、反复优化,折腾了大半天,终于让它可以比较顺利地完…

现在你看到的,是Codex在玩《杀戮尖塔》这款卡牌游戏。它会根据敌人的情况、我方的手牌,以及游戏的基本规则制定策略,然后出牌。

但这件事最难的地方,其实不是让AI学会打牌,而是设计一套足够可靠的决策系统,让它做出正确判断,以及验证判断。

我跟Codex一路讨论、反复优化,折腾了大半天,终于让它可以比较顺利地完成战斗。

你看,最开始,Codex是通过识别截图来读取游戏数据的,但这么做非常慢。后来改成只截取手牌等关键区域,还是不够快。

后来我突然想到,应该有Mod可以直接读取游戏数据。让Codex一搜,果然有。它叫CommunicationMod,可以把游戏状态以JSON的形式发送给外部程序,也可以接收外部程序发来的动作指令。这下速度就快多了。

所以,现在的流程是:

读取状态 → 本地程序计算出牌方案 → 必要时由模型做选择 → 执行动作 → 读取新状态并验证。

说真的,这么搞还挺有意思的,比我自己玩游戏还有成就感。

我甚至在想,以后会不会出现“AI游戏主播”:不是自己玩,而是教AI玩、看AI玩,就像训练宝可梦一样。

我之所以会想让AI玩游戏,是因为最近出了一个很火的模型,叫Jev。

它不是传统的GPT、Claude那种通用模型。它的设计目标不是生成文章或者代码,而是专门做一类事情:

根据你提供的信息,给出程序可以直接使用的判断。比如做选择、打分,或者判断是与否。

看到这里,你肯定会问:GPT那些模型不能做选择吗?为什么还要专门搞一个新模型?

GPT当然可以。但问题在于,相对这种专门做判断的模型,它们通常更大、成本更高,响应也更慢。对于那些范围明确、判断相对简单、又需要频繁调用的任务,每次都请一个大模型来回答,成本和延迟就不太划算了。

所以,更合理的做法是:事先把选项定好,由Jev来选择,并给出置信度;需要生成内容的时候,再调用大模型。

你看,去年我在星球里介绍n8n模型选择器的时候,就有过类似的想法:用一个更快、更便宜的模型做判断。请求简单就输出1,复杂就输出2,然后根据结果走不同的分支,调用不同的模型。

之前这些想法,因为条件还不成熟,都没能很好地实现。现在有了Jev,这条路就更容易走通了。

为了验证它的效果,我选择了《杀戮尖塔》这款游戏。

一是因为它的操作不复杂,不像即时战略游戏那样需要超高的APM;二是因为它需要策略,也需要不断做选择,正好可以用来测试Jev。

要使用Jev也不复杂。安装TypeSafe提供的Skill,并配置好API Key之后,Codex就能顺利调用Jev了。

但是,光接入模型还远远不够。真正难的地方是系统设计。这也是我很反感一些自媒体无脑吹Jev的原因。就拿让Codex玩《杀戮尖塔》来说,想把这件事完整做好,整个系统至少要考虑六个部分。

第一,状态读取。搞清楚现在有什么牌、还有多少费用、双方状态如何。

第二,规则计算。计算伤害、格挡和触发顺序。

第三,方案生成。把这一回合可能采取的行动组合出来,而且要覆盖不同的条件分支。

第四,策略判断。需要比较眼前收益和未来代价,以及本身的卡组构筑。

第五,执行控制。执行已经确定的动作;一旦出现新的信息,就停下来重新计算。

第六,记录评估。出了问题之后,要知道究竟是哪里错了,然后再衡量收益和代价。

在这么一大套系统里,Jev只负责那些“存在真实取舍”的判断环节。

比如,喝药可以更快干掉对手,让自己少掉血,但这瓶药可能对下一场Boss战更重要。

Codex写了一个本地运行的程序,负责读取游戏状态、生成候选方案,并计算结果。这个程序会把相关背景、候选方案,以及可以计算出来的后果交给Jev,再由它帮忙做出取舍。

所以你看,Jev并不是一个万能模型。不是接入之后,整个系统就会突然变得更牛逼。它实际能发挥多少价值,取决于你把它放在什么位置,以及整套系统是怎么设计的。

那么,在Codex玩《杀戮尖塔》这个项目里,Jev到底表现得怎么样呢?

我让Codex关闭本地评分和回退机制。程序继续提供可选方案和计算结果,然后在这些候选方案里,由Jev来决定采用哪一个。

正好下一场是精英战。Jev帮助Codex选出的方案,最后用了四个回合顺利过关。

这次测试至少说明,这条路线是可行的:Jev可以参与这种结构化的方案选择。

不过,它的判断并不完美。第三回合明明还可以多打一张牌,Jev却留着能量,直接选择了结束回合。

所以,我还是会采取“双保险”的做法,也就是把本地评分程序和Jev都用起来。这么做的好处是:如果遇到很简单的情况,就直接执行,不需要调用Jev;另外,万一Jev请求失败,也还有保底方案。

这次实验真正让我感兴趣的,并不是Jev到底有多强,而是它让我更清楚地看到:

模型只是系统里的一个零件。

一个模型能不能发挥作用,取决于你把它用在什么项目上、放在什么位置,以及整套系统设计得怎么样。这就是我对Jev的结论。

还是之前的观点:AI时代,真正值得掌握的,是设计系统、调用模型,并把主动权留在自己手里的能力。

OK,以上就是本期内容。想了解AI,想夺回个体主权,想找到志同道合的人,就来newtype社群。那咱们下期见!