Doom游戏里试AI双系统切换:慢思考不暂停,模型却爱囤货
你有没有过这种体验:开车走熟路的时候脑子基本是空的,手脚自己就动了,可一旦前面突然堵车或者导航显示绕路,你就会突然"清醒"过来,开始认真思考该怎么办。这篇论文的作者就是从这种感觉出发的。他是个老玩家,玩《毁灭战士》(Doom)这种第一人称射击游戏的时候发现,顺的时候脑子是"关掉"的,纯粹靠反应打;但一旦卡住...
开车走熟路时,脑子几乎是放空的,手脚自己就动了。可前面突然堵车,或者导航提示要绕路,人会一下“醒”过来,开始认真琢磨接下来怎么走。
论文作者就是从这种体验入手的。他是个老玩家,玩《毁灭战士》(Doom)这类第一人称射击游戏时注意到,打得顺的时候脑子像“关掉”了,全靠反应;一旦卡住,比如门打不开,或者某个敌人怎么都打不死,心里就会冒出“内心独白”,开始想对策。往往正是这个“想一想”的动作,让游戏重新往前走。
认知科学里管这个叫双系统理论,也就是常说的“系统一、系统二”:系统一快、不费脑子,系统二慢、费脑子但管用。心理学家丹尼尔·卡尼曼在《思考,快与慢》里把这套说法讲得很清楚。不过卡尼曼谈的是人脑,这篇论文要问的是:**换成AI也这么切换,会怎样?**
落到AI agent(智能体)设计上,这就成了一个很具体的工程问题。手头有一个跑得快但偶尔犯傻的“快系统”,还有一个想得慢却更靠谱的“慢系统”(通常是大语言模型)。什么时候把方向盘交给慢系统?交多久?交出去的时候,游戏是暂停等它想,还是照常往前跑?
论文要弄明白的就是这几件事,而且是在Doom游戏这种会“不等人”的实时环境里做。
**核心的难题是什么**
先看看过去的研究怎么处理“快慢切换”。
在那种一步一步来、系统会乖乖等你的“回合制”场景里,比如不少文字类任务型AI,研究者已经试过不少办法。SwiftSage会在“没拿到奖励”或者“做了无效动作”时触发慢思考;CogniWeb给网页浏览agent设计了类似的“卡住”检测;还有一批工作干脆每一步都让AI自己决定推理深度,FAST、Talker-Reasoner这些框架就属于这一类。
机器人领域也差不多。Inner Monologue和DoReMi这两个系统,都是靠执行反馈或者视觉检测器发现“任务失败了”,再触发重新规划。
可这些场景有个共同点:**系统不着急,可以先暂停,等慢系统想完再接着来**。
真正的麻烦出在“实时”场景里——环境根本不等你。过去的做法基本是让慢系统一直在后台跑,DPT-Agent和AgileThinker就是慢思考和快反应两条并行线程,谁也不等谁;再或者像机器人策略模型GR00T N1那样,慢系统按固定节奏跑,不管你到底需不需要它。
这好比你雇了个随时待命的顾问,你需不需要建议他都在旁边一直想、一直花钱。
论文想做的不一样:**快系统一直干活,接管每一个决策,只有某个“门”(gate)被触发时,才把这一刻的决策权临时交给慢系统。游戏不暂停,慢系统边想,游戏边继续跑。**
论文标题里的“System Switch”(系统切换),说的就是这个意思。
可以想想开车用的语音助手。平时你自己开(快系统),只有犹豫不决或者明显走错路时,才打开导航让它重新规划(慢系统)。车不会因为导航在重新算路线就停在路中间,它会继续往前开,哪怕方向暂时还是错的。要是导航每次重算都要求车停下来等,那高速上根本没法开——这就是“实时”和“回合制”的根本区别。
**用什么模型做这件事**
论文挑的快系统,是2026年9月前后冒出来的一批叫“System One”的开源“类型化决策模型”。
这类类型化决策模型能处理的,只是结构固定的问题——“选择题”“打分题”“是否题”都算,一次前向传播就能把答案连同对应的置信度一起给出,不必像生成式大模型那样逐字逐句往外吐。
这批模型包括Laya、Kev、Lev、Julia、Clef、OpenJev、Strands Decider、CLM等等,参数量从0.15B到9B不等(B代表十亿参数)。快是它们的好处,坏处也不少,论文后面会讲。
慢系统是两个带视觉能力的推理大模型,Qwen3.6-35B-A3B和Gemma 4 26B-A4B-it,两者都可以选择开不开“推理模式”,也就是让它先写一段思考过程再给答案。
把两类模型连起来的是llama.cpp这个开源推理框架新加的统一接口/v1/systemone。所有System One模型都走这个接口调用,省掉了给每个模型单独写适配代码的麻烦。
实验场地选在doomLaya项目上。它把经典游戏Doom改造成了一个“类型化决策任务”:每过0.5秒游戏时间,系统就给AI一份文字版的游戏状态(血量、护甲、看到的敌人、物品、门),然后问两个选择题——一个是“接下来该做什么指令”(攻击敌人、捡东西、开门、去出口、撤退、探索、等待),另一个是“该用什么武器”。
游戏里还内置了一个oracle(规则专家),按固定规则给出“标准答案”,比如看到敌人就该打,东西不需要就别捡,门挡路就该开。这个专家从不说“你该去探索”或者“等一等”,这个设定后面会很关键。
**第一个发现:AI天生爱囤货**
论文拿一批零样本(之前没针对这款游戏专门练过)的System One模型做了测试,结果挖出一个颇有意思的怪现象:这些模型挑“捡东西”这个选项的瘾头都特别大。
数字摆出来是这样的:游戏里每道“该做什么”的题平均给7.5个选项,其中3.6个是各式各样的“去捡某个东西”。照常理,模型答错时错误该随机落到各个错误选项头上;可实测下来,它们答错时选中“捡东西”的概率,比随机水平高出1.6到1.8倍。
例外只有一个——Kev 0.8B,它的各选项概率差不多是均匀铺开的,反倒没沾上这个偏好。两个推理大模型则不同:不开推理模式照样有这个毛病(1.8倍);一旦开启推理模式,偏好会减弱,但没有消失(降到1.4倍)。
更耐人寻味的是,这个偏好跟选项怎么排几乎不相干。研究者把选项顺序打乱重测,那股“爱捡东西”的劲头基本没变(仍是1.6到1.8倍)。可见这不是“排在前面就容易被挑中”的位置效应,而是模型真学到了一套“捡东西总不会错”的直觉——偏偏这套直觉在很多场景下是错的。
不过选项顺序对别的事情影响就大了。游戏里的选项本来按固定次序排(敌人、物品、门、出口、撤退、探索、等待),并且有41%的题目正确答案恰好落在第一位。顺序一打乱,有些模型跌得很惨:Strands Decider从0.59掉到0.38,Kev 9B从0.60掉到0.50。研究者查了原因,发现Strands Decider在固定顺序下有65%的概率直接点第一个选项——这说明它压根没真读懂题,只是学会了“选第一个”这条捷径。
这就像考试时有个学生发现老师出选择题总爱把正确答案放在A,于是养成“拿不准就选A”的习惯,平时分数看着还行,可一旦换份打乱重排的卷子,真实水平立刻现形。不查这种“位置偷懒”,你会误以为模型真会做题,其实它只记住了排版规律。
研究者还发现,专门针对这款游戏训练过的模型,表现也没有想象中那么好。拿Laya的微调版Laya-v3来说,调参用的验证集上准确率有0.725,换到没见过的新种子地图上就掉到0.585,跟零样本的原版Laya差不多水平,主要毛病是一到门口就想捡东西(“开门”这个类别的准确率只有0.39)。另一个训练过的doomGemma稍好一些,但从验证集的0.963掉到新数据上的0.860,也印证了一个老问题:在小数据集上调出来的模型,很容易“背题”而不是“学会”。
**第二个发现:准不准、信不信、靠不靠谱,是三件不同的事**
这是整篇论文里我觉得最值得琢磨的一个结论。
直觉上我们会以为,一个模型答得准,它给出的“置信度”(也就是它自己说“我有多确定”)就该更可靠。论文告诉你,事情没这么简单。
论文把三个概念拆开来谈。
准确率:模型答对题的比例,这个好理解。
校准度(用ECE,也就是期望校准误差来衡量):模型说“我有90%的把握”时,是不是真有90%的情况答对了。校准好的模型,说多少把握就是多少把握,既不虚高也不谦虚。
敏感度(用AUROC,也就是曲线下面积来衡量):模型的置信度能不能把“这道题我大概率答对了”和“这道题我大概率答错了”区分开。哪怕整体准确率不高,只要答对时置信度明显高于答错时,这个敏感度就算好。
论文发现这三者互相独立。举个例子,五个零样本模型的整体准确率都落在0.54到0.60之间,几乎同一条水平线,可它们的AUROC(敏感度)从0.60一路散到0.89。换句话说,**准确率相近的两个模型,一个的置信度近乎胡说,另一个的置信度却能相当准地告诉你“这题我可能错了”**。
再具体一点,Laya有两个版本,一个是基础版,一个是经过“类型化决策”微调的版本,俩准确率几乎一样,但敏感度(AUROC)分别是0.89和0.77,差距十分明显,而且置信区间不重叠,说明这不是误差范围内的巧合。
校准度同样预测不了敏感度。校准最好的两个零样本模型(ECE只有0.10),敏感度排名却只是中等;反倒那几个“过分谦虚”的模型(自报的把握明显低于实际准确率),敏感度排在了前头。
这里还有更细的一层:敏感度本身也分两种类型。基础版Laya整体敏感度最高(0.89),可你要是只看“同一类问题内部”,比如都是“要不要去捡东西”这类题,它的置信度就完全分不出哪道答对哪道答错(降到0.52,几乎跟瞎猜一样)。它真正厉害的地方是能分辨“哪类场景我容易翻车”——比如它在“打架”和“开门”这两类题上几乎都对,在“去出口”和“捡东西”上经常错,而置信度刚好跟着这个规律走。反过来,Strands Decider和Kev 9B展现的是另一种敏感度:同一类题目内部能分出对错(0.77和0.74),整体上却不太行。
为何这种区别值得关注?后文要谈的“将不确定的决策交给慢系统”这一策略,靠的正是第一种敏感度:清楚“哪类场景自己容易出错”,而不是“眼下这道题自己有没有答错”。
这就像一个新手司机,他可能说不清自己这一次具体转弯打得好不好,但他清楚地知道“倒车入库”这个动作一向不稳,“直线加速”从来没出过问题。教练要是只看他某一次操作时嘴上说的自信程度,可能完全看不出规律;但要是看他在不同科目上的整体表现差异,规律就非常明显。这正是论文里说的“知道自己不知道什么”,这件事比笼统地看一个置信度分数要复杂得多。
**第三个发现:把不确定的决策甩给慢系统,到底值不值**
把“置信度不能随便信”这件事搞清楚之后,论文接着做了一个很直接的实验:把快系统最没把握的那部分决策交给慢系统重新回答,看看整体准确率能不能提上去。
这种做法在机器学习领域有专门叫法——级联(cascade),也叫选择性预测(selective prediction)。思路很简单:先让便宜的模型上,它搞不定的再转给贵的模型,既省钱又不牺牲效果。
实验结果把前面的发现验证得明明白白:**模型的敏感度(AUROC)越高,把它那些“没把握”的决策转交给慢系统,收益就越大**。
拿敏感度最高的基础版Laya(AUROC 0.89)来试,把它最没把握的30%决策交给开了推理模式的Qwen3.6,整体准确率从0.56直接升到0.75。这个数字已经很接近“完美选择器”的理论上限0.76——所谓完美选择器,就是精确知道哪些题会答错、专挑那些题甩出去。更关键的是,只动用了30%的调用次数,就达到了慢系统单独作战时的水平(0.69),等于省下70%算力,还打平甚至反超了纯慢系统。
换成敏感度最低的两个模型(Kev 9B和Strands Decider,AUROC都在0.60左右)做同样的事,收益几乎为零,甚至略微为负。偏偏这两个模型是**零样本模型里准确率最高的**。
这个结论有些反直觉:**按直觉,挑“快系统”应该选单独测试时分数最高的那个,但论文给出的答案不是这样——该看的是它的置信度靠不靠谱,而不是它答得准不准。**
“自己给自己打分”的嫌疑,研究者也小心排查过了。42场游戏随机劈成两半,一半用来选模型和确定甩锅比例,另一半验证效果,如此重复500次。
基础版Laya在489次里都被选中,结论相当稳。在没见过的另一半数据上,相对随机甩锅的收益为+0.13(置信区间0.08到0.18)。把选项顺序打乱再测一遍,规律照样成立:收益与敏感度排名高度相关,相关系数0.87,这是在18组“模型-顺序”组合上算出来的。
论文还单独验证了“推理模式”本身值不值钱。慢系统不开推理、直接给答案时,自身准确率只有0.58,而且染上了跟快系统一样的“爱捡东西”毛病——97%的错误都选了捡东西选项。此时甩锅收益从+0.15掉到+0.07。也就是说,**推理过程本身大约贡献了一半收益**,另一半纯粹来自慢系统换了个“大脑”。
这像公司里把疑难案子转给专家。专家只是换了个人、没多花时间琢磨,效果就要打折;真正值钱的一半是“换了个更强的大脑”,另一半是“这个大脑真的坐下来仔细想了”。只换人不给思考时间,等于白白浪费专家资源的一半价值。
**第四个发现:真实游戏里,谁都没走到终点**
前面讲的全是“离线”实验——拿录好的题目测,不涉及游戏实时运行。真正有意思、也更让人沮丧的部分,是把整套机制塞进真实游戏里跑的“闭环”实验。
研究者在Doom的MAP01地图上跑了33场游戏,用了三个随机种子,配置五花八门:完全不开慢系统的对照组;一个“裸”的慢系统(没有额外知识,没有承诺机制);加了游戏基础知识提示的版本;只在“不确定”触发时开慢系统的版本;只在“没进展”触发时开慢系统的版本;两种触发都开的版本;去掉画面只给文字的版本;去掉基础知识提示的版本;还有一个对照组把“思考”换成一个固定的“去探索”规则,但触发机制不变。
结果:**没有一个配置真正走到了游戏的出口。**
这个结果挺扎心,但细看之下,差异很有信息量。
先说“承诺机制”(commit)。它的意思是:慢系统一旦定下计划,就让这个计划持续执行,直到执行器报告完成、报告做不到、受到一波伤害,或者过了45秒,而不是每半秒钟就重新问一次慢系统该干什么。加上这个机制后,地图探索的覆盖面积和开门数都明显增加——覆盖格子数从61格涨到83格,开门数从5扇涨到8到9扇。
更意外的是那个“固定探索规则”对照组:根本没有AI思考,纯粹是触发了就执行一个写死的“去探索”命令。它的表现跟真正思考的版本几乎一样好,覆盖面积同样是83格,开门数9.7扇。
换句话说,**在“覆盖地图、开更多门”这两件事上,起主要作用的是“坚持执行一个计划”这个机制本身,而不是慢系统想出了什么高明策略**。
好比一个团队开会讨论半天制定行动计划,和主管直接拍板“大家先按老办法做,别议论了”相比,前期推进速度可能差不了多少。很多项目卡壳不是因为缺好点子,是因为大家一直在原地打转重新讨论。不先解决“别议论了,先做”这个问题,再好的点子也落不了地。
不过慢系统也不是毫无用处,它在“死亡次数”上明显占优。用固定探索规则的那组死得更多:每局平均2.7次,比真正思考那组的1.3次高出一倍。换到基础版Laya上差异更夸张——固定规则3.7次,思考版本0.7次。
还有个细节挺能说明问题:不接慢系统的基础版Laya,三局下来基本钉在原地,总共只挪了1格;而一旦挂上这套触发机制,哪怕配的只是固定探索规则,它马上就进入正常游玩状态,覆盖81格、开了9扇门。换句话说,背后就算换成一套很笨的固定规则,“触发—接管”照样能把一个已经卡死的agent重新带动起来。
**最有价值的部分,是研究者去读了慢系统思考时写下的每一句话。**
论文把这些“内心独白”单独拎出来看,梳理出一条相当明确的失败路径。裸慢系统在没加任何额外知识时,诊断问题的本事其实不差——它会讲“我像是陷进了一个循环射击的死局”,或者说“这张红卡拿不到”,判断都成立;可它开出的办法几乎清一色是“先去捡离得最近的东西试试”。24次思考中,有22次落到这个结论上,“去探索”那条路它根本没考虑过。
于是研究者给慢系统加了一点Doom基础知识提示,告诉它“有些门需要钥匙才能开”。诊断能力真的提升了,它开始能说出“这门需要黄钥匙,我没有,得去探索找找看”。但问题随之而来:**这个基础知识被用错了地方**。
游戏给出的状态信息里,一扇关闭的门只被描述为“关闭”,并不会说明它是普通关着还是已经上锁。慢系统碰到一扇其实没锁的门,照样会判断“这门肯定得用钥匙,我没钥匙,只能去找”,可实际上换个方向推一下就能进去。研究者统计的25次“计划失败”案例,无一例外都是关闭的门挡住了执行器,其中17次慢系统给出的结论是“需要钥匙”。
这就像一个刚上岗的保安,被告知“有些门是锁着的,锁着的门不能硬推”,于是他看到每一扇关着的门都当成锁了,从不上前去试试把手,白白错过一堆一推就开的门。不告诉他这条规则,他可能乱撞;告诉了他,他又变得过分小心。根子不在“这条规则该不该告诉他”,而在于他没办法从眼前这扇门本身判断出锁没锁——缺的是信息,不是知识。
把基础知识提示拿掉之后,慢系统又回到“一见关门就想去捡东西”的老路上,45%的思考都花在捡东西上,只是不再乱猜钥匙了。
论文还试了去掉游戏画面、只喂文字状态的做法。结果慢系统想得更久:中位数29秒一次思考,16次思考里有9次撞上4000个token的推理上限,没想完就被迫交答案;覆盖的地图范围也缩到64格。画面信息其实在帮慢系统更快拿主意,不给它看,它反而想得更久、更乱。
时间成本也是实打实的问题。开启基础知识和承诺机制后,慢系统有38%到70%的游戏时间都在“忙着想”,而它制定计划时依据的那一帧画面,等到计划真正执行,已经是9到29秒前的旧画面。游戏里9到29秒足以发生很多变化,慢系统有时就是在“看着过去的照片做决定”。
**写在后面**
读完这篇论文,让我印象最深的不是哪个具体数字,而是“门锁”那个细节。
研究者给AI加了一条看似无害的常识:有些门需要钥匙。这在另一张地图MAP02上确实成立,那张图里真有一扇门锁着,要用黄钥匙。可搬到MAP01上,同一条常识就成了认知陷阱——AI没有能力判断眼前这扇具体的门符不符合这条常识。
这件事指向一个更大的问题:我们给AI系统“喂知识”,本质上假设了它能分辨这条知识什么时候该用、什么时候不该用。论文里的AI做不到,它只会机械套用,碰上状态信息无法验证的场景,就把一条本来正确的常识用错了地方。这跟小孩学规则很像:大人说“陌生人给的东西不能随便吃”,孩子连亲戚给的糖都不敢接了,因为他分不清“陌生”和“熟悉”的边界。规则本身没错,可执行规则所需的判断力,恰恰是最难教的那部分。
另一个让我意外的发现是,那个什么都不懂、只会执行“去探索”这条死规则的对照组,在覆盖地图上几乎追平了真正会思考的AI。这多少打击了“AI思考一定比死规则强”的朴素想象——至少在这个任务的这个维度上,真正值钱的是“坚持做一件事别反复折腾”的纪律性,不是思考本身的智慧。不过思考在另一个维度上证明了自己:活下来的次数明显更多。看来“思考”和“规则”可能各自擅长解决不同的问题,谁也不能完全替代谁。
论文最后也坦承,整套实验规模还很小:33场游戏、一张地图、三个随机种子,没有一局真正打穿游戏,这些结论更像是“行为观察”,而不是“成功率的确定性证明”。作者还承认,自己没有系统核查过慢系统写的那些“内心独白”是否真的忠实反映游戏状态,只零星检查了几个案例。这种克制和诚实,放在一篇满是具体数字和细致分析的论文里,反而让人更愿意相信前面那些结论。
如果快系统的置信度能准确标出“我哪类场景容易翻车”,而不是笼统地说“我这题可能错了”,那是不是意味着,设计一个好的AI系统,第一步不是让它变得更聪明,而是让它先诚实认识自己的短板?
Q&A
Q1:System Switch是什么?
A:System Switch是论文提出的一套“快慢系统切换”机制。快速决策模型负责Doom游戏里每一步决策,只有触发特定条件(比如连续低置信度、卡住不动、动作被阻挡等)时,才把当前决策权临时交给更强的视觉推理大模型,同时游戏保持实时运行、不暂停。
Q2:为什么准确率高的AI模型反而不适合用来判断该不该求助慢系统?
A:论文指出,模型准不准,跟它的置信度靠不靠谱(敏感度/AUROC),其实是两码事。零样本模型里准确率排前两位的 Kev 9B 和 Strands Decider,置信度基本分不出对错,把低置信度的判断交给慢系统去处理,收益几乎为零;真正敏感度最高的是基础版 Laya 模型,它准确率只算中等,可一旦把这类判断转出去,整体准确率就能从 0.56 升到 0.75。
Q3:论文里的AI最终有没有在Doom游戏里走到终点?
A:没有。论文在MAP01地图上用三个随机种子跑了33场闭环游戏,测试多种配置,没有一个版本真正到达游戏出口,最接近的一次也停在4米开外。研究者认为,问题根子在于游戏状态信息本身不足以让AI分辨“门锁没锁”,而不是推理能力不够强。