AgentGarten让大模型在代码世界里练策略:4轮学会搭庇护所
2019年,OpenAI做过一个很出名的实验,让两群AI在一个简单的物理环境里玩捉迷藏。躲的一方和找的一方互相博弈,久而久之,躲的那方学会了搬箱子筑围墙挡住入口,找的那方学会了拖来斜坡爬过围墙。这个故事后来被反复提起,因为它展示了一件很神奇的事情:复杂的策略可以从简单的规则和大量试错中自己涌现出来。但很少有人追问...
2019年,OpenAI做过一个挺出名的实验:两个AI阵营被放进一个简单的物理环境里玩捉迷藏。躲的一方和找的一方来回博弈,时间一长,躲的那方学会了搬箱子垒墙堵住入口,找的那方则学会拖来斜坡翻过围墙。这个故事后来老被拿出来说,因为它说明了一件挺神奇的事——复杂的策略能靠简单规则加上大量试错自己长出来。
不过,很少有人接着问一个更实际的问题:这个“时间一长”,到底得有多长?
数字是:躲藏方学会搭庇护所,大约用了2500万局游戏;找寻方学会用斜坡攻破庇护所,又多花了7500万局。加起来整整一亿局,才换来这么几个策略。放到人的尺度上看,差不多等于一个人要摔上千万次才能迈出走路的第一步。而且这还只是在一个极度简化的物理玩具世界里发生的事。
这正是强化学习多年来的一个隐痛:能学,但太贵。AgentGarten这篇论文要处理的,就是怎么绕开这堵墙。研究者的做法不是让AI从零开始乱撞,而是把已经看过整个互联网的预训练大模型直接放进一个个“代码写成的世界”里,让它靠看、靠想、靠写笔记来学。结果,同样是学会搭庇护所,这回只用了4轮游戏;学会用斜坡,只用了10轮。
这可不是同一场比赛换两种打法,而是两种完全不同的学习范式。差异这么大,才更该把这件事拆开来看清楚:到底是什么让这种跨越成为可能。
**环境这堵墙,为什么一直没被真正推倒**
要弄明白AgentGarten在解决什么,得先看清一个长期存在的两难。
想让AI智能体练出真本事,就得给它一个靠谱的练习场。这个练习场要同时满足两件事:一是“诚实”,状态、规则、物理逻辑都得前后一致,你推了一个箱子,它不能下一秒又凭空出现在原地;二是“真实”,看起来得像个真实世界,而不是一堆方块和色块,否则智能体学到的视觉经验对现实世界毫无参考价值。
问题是,这两件事到现在很难同时做到。
游戏引擎和物理模拟器,比如训练机器人用的那些系统,天生擅长第一件事。它们的世界状态是拿代码写死的,物体的位置、速度、碰撞规则全部精确可查,改一行代码,规则立刻跟着变,非常可靠。短板也很明显:想让画面好看,就得建模型、贴材质、调灯光,一个场景从素模做到以假乱真,美术团队可能要耗上几周甚至几个月。想要场景多样?那美术工作量就得乘以场景数量,很快就撑不住了。
另一条路是这几年火起来的视频生成模型,也就是常说的“世界模型”。这类模型直接从海量视频数据里学会“生成逼真画面”,你给它一些动作输入,它就能吐出一段看起来相当真实的视频。画面质量没问题,致命伤在于:世界的规则藏在模型的神经网络参数里,你没法打开去检查、去修改、去调试。你推了一下箱子,它会不会按合理的物理逻辑移动?模型自己也说不准,因为它学的是“像素层面的统计规律”,不是“显式的物理规则”。
这就好比你想开一家餐厅:一边是账本清清楚楚、食材来源可查,但装修简陋的苍蝇馆子;一边是装修精美、氛围绝佳,但后厨黑箱操作、你根本不知道菜是怎么做出来的高级餐厅。想要一家账目透明又装修精美的店,过去只能二选一。
AgentGarten想做的,就是把这两种店并成一家:后厨(引擎)继续按账本(代码规则)老老实实做菜,前厅的装修和摆盘(视觉呈现)外包给一个专业的渲染团队(神经渲染器),两边通过一张标准化的“菜单接口”(结构化条件)对接。
**拆分状态与画面:引擎管逻辑,神经渲染器管好看**
AgentGarten的核心设计思路,一句话说就是:让程序管世界怎么变化,让一个神经网络管世界看起来是什么样子。
拆开看,一个“代码世界”包含三块。头一块是场景程序,由人来写,规定场景中有哪些物体、它们如何运动、交互遵循什么规则。第二块是运行这段程序的引擎,它持续维护一份不断刷新的世界状态:物体的位置、姿态,以及跟任务有关的变量都在其中。第三块是神经渲染器,它拿到引擎输出的结构化条件,再把智能体眼中看到的逼真画面“画”出来。
这里有个关键的技术选择:引擎传给渲染器的,不是颜色、材质这些视觉细节,而是深度图或者法线图。
深度图*:记录画面里每个像素到摄像机的距离,常用彩色编码表示远近。
法线图*:记录每个表面朝向哪个方向的三维信息,同样用彩色编码呈现。
这两种图都能从真实视频里估计出来,也能被引擎直接从几何体渲染出来,所以它们天然地把“虚拟世界的几何结构”和“真实世界的视觉分布”连在了一起。渲染器看到的只是物体的“形状骨架”,至于这个骨架最后呈现成万圣节风格、中世纪风格还是我的世界方块风格,完全由另外传入的一张参考图片和一段文字描述来决定。
这个设计带来一个很重要的好处:渲染错误不会污染世界状态。
引擎推演下一步状态时,压根不看渲染器画出的图像,只依据智能体给出的动作往前走。也就是说,即使渲染器某一帧出了偏差,把箱子画成了圆的,这个偏差也不会倒过来改变物理引擎里箱子的实际位置。好比开车,路线靠真实导航数据来定,车窗外的景色是后期合成的,合成得有点毛病,车实际怎么走并不会偏。反过来,若让视频模型自己记住并演化世界状态,就会踩进经典的误差累积坑:这一帧错了一点,下一帧又在错的这一帧上继续生成,误差越滚越大,最后整个场景可能变得面目全非。
有了这种拆分方式,造一个新世界不必再让美术团队手工做素材。一个“写代码的智能体”能根据一张图或一段文字,自动调用感知模型认出画面中的物体、估算深度和相机参数、提取三维网格,再把这些组装成一段可执行的场景程序,参考图片本身则作为外观参考。写完后,这个编程智能体还会充当质检员,从多个角度查看渲染结果,核对物体有没有悬空、有没有穿模、遮挡关系是否正确,一旦发现问题就自动修复,确认无误才正式投用。
要把一个视频生成模型变成实时渲染器,得走完四步流水线。
光有拆分思路远远不够。真正难对付的,是一个原本专管“生成视频”的大模型,怎么才能变成实时响应、长时间持续运行、又严格服从几何条件的渲染引擎。
研究团队的起点是预训练视频生成模型Cosmos 3-Nano,改造分四个阶段推进。
头一步叫几何条件化。原来的模型只认文字和参考图片,现在得让它看懂深度图和法线图。团队既没有把几何图和RGB图拼在一起塞进同一个通道,也没有另加一个控制分支,而是让几何token和RGB token待在同一序列里,在同一套Transformer层中做联合注意力计算。这样处理,是为了不给模型强加“像素必须严格对齐”的偏见,让几何信息和视觉信息能更自由地相互参照。
第二步,把模型从“一次性看完整段视频再生成”改成“边看边生成”的因果式结构。说白了就是按时间顺序一块一块往外吐画面,而不是等信息全齐了才动笔。
第三步是整篇论文里分量最重的部分:一种叫Adversarial Forcing(对抗强制)的蒸馏方法。
蒸馏*:用一个性能强但速度慢的“老师模型”去指导结构更轻、速度更快的“学生模型”,让学生尽量模仿老师的输出分布。
为什么非要有这一步?前面改造出的因果模型虽然能逐块生成,可一旦让它自己跑长视频,毛病就来了:画面慢慢失真,纹理开始重复,细节越变越糊。这好比让一个刚学会临摹的人连画一百张,每张都照着上一张描,哪怕每次只走样一点点,画到第一百张时,原样早就看不出来了。
Adversarial Forcing要解决的是两个具体的技术难题。
难题一:“历史记忆要不要可训练”。模型生成第5帧时,得参考前面第1到4帧的信息,这些历史信息被编码成一种叫KV缓存的东西存着。
KV缓存*:Key-Value缓存,Transformer模型里用来存储历史上下文编码结果的机制,免得每次生成新内容都要把所有历史信息重算一遍。
标准做法是把这份缓存“锁死”,不让梯度回传过去更新它。可这么一来,后面帧的损失信号就没法反过来优化“模型该怎么编码历史”。想让整条链路都可训练,内存开销又会爆炸,因为得保留所有历史块之间互相关联的计算图。
团队给出的解法叫“精确回放”:先跑一遍不带梯度的采样,把每一块的输入输出记录下来;再跑第二遍,按和第一遍完全相同的执行顺序、相同的计算方式重算历史编码,这回带梯度。关键点在于,第二遍必须和第一遍在数值上逐位完全一致,不能有半点浮点误差。为了做到这点,他们特意放弃更“聪明”的一次性全序列注意力计算,坚持按块逐个算,确保计算路径分毫不差。实验数据显示,用一次性全序列计算的回放方式会产生3.99%的相对误差,而他们这种笨办法做到完全零误差,顺带速度还快了5.4%。
这让人想到校对古籍。想检查一份手抄本有没有被篡改,最靠谱的不是找个现代人凭记忆默写一遍再对比,而是严格按原来的抄写顺序、笔画顺序,一字不差地重抄一遍。任何“效率更高”的重排方式,哪怕理论上结果一样,实际操作中都可能悄悄引入误差。
难题二是画质会随着训练慢慢变差。只靠“让学生模型的输出分布尽量接近老师模型”这一种监督信号并不够,因为这本质上是模型在跟自己生成的东西比较,缺一个“真实世界到底长什么样”的锚点。
于是团队引入对抗训练,也就是经典的GAN思路:让一个判别器去分辨生成的画面和真实视频,逼着生成器往更真实的方向走。
GAN*:生成对抗网络,由生成器和判别器组成,判别器负责辨真假,生成器负责骗过判别器,两者互相博弈、共同进步。
这里又冒出一块工程硬骨头:GAN训练通常要靠R1和R2正则化来稳定,这两种正则化要算输入梯度的范数,而算这个梯度的梯度,涉及对注意力计算做“反向传播再反向传播”。问题是,像FlashAttention这类为提速高度优化的融合注意力核,根本不支持这种二阶反向传播。
团队的办法挺巧妙:既然主干网络是冻结的、不需要更新参数,那就没必要走标准的二阶反向传播路径,改用一次反向传播加一次前向导数计算(术语叫JVP,雅可比向量积)的组合,精确算出同样的梯度结果,却完全绕开了对融合核的二阶求导。这就像想知道一辆车刹车距离对车速变化的敏感度,与其拆开刹车系统做力学分析,不如直接做两次不同车速下的刹车测试,用结果反推敏感度,效果一样,但不用拆车。
第四步是工程优化,让整套系统能实时跑起来。团队写了定制的Triton内核来融合各种零碎计算操作,用CUDA图捕获消除每次调用的启动开销,还可以选用一个蒸馏出来的轻量解码器,把解码一帧画面的时间压到10毫秒以内。最终效果是:在一张H100显卡上,这套系统生成480乘832分辨率视频的速度超过每秒35帧,条件编码、四步去噪、解码、数据传输全部环节都算在内。
Triton*:一种让研究者用接近Python的语法编写高性能GPU计算核的编程工具,常用来替代手写的底层CUDA代码。
智能体怎么“练级”:playbook机制。
渲染基础设施有了,剩下的问题就是怎么让智能体真正在里面“学”到东西。
AgentGarten设计了一套叫playbook(可以理解成“攻略笔记”)的机制。整个流程分成若干轮,每轮开始时,智能体会拿到一份任务文件,里面写清楚目标是什么、能做哪些动作、有什么限制,但绝不给任何解法提示。多个智能体在这一轮里各自独立行动,全程只能通过渲染出来的摄像头画面感知世界,没有坐标、没有地图,甚至在游戏结束前都看不到分数。
一轮跑完,每个智能体都会回头复盘自己的表现。试过哪些动作、看到了什么、哪里还没想通、下一轮该验证什么,这些内容会被写成一份份简短的技能笔记,存进自己的playbook。到了下一轮,接手的是一个全新的对话实例,等于一个"新人"——它手里只有任务文件,外加前面所有轮次攒下的playbook,至于哪些经验在眼下场景里管用,得它自己判断。
这么设计有个挺实际的考虑:笔记必须写得足够清楚。写笔记的那个"自己"和读笔记的那个"自己"是完全不同的对话实例,没法靠默契糊弄过去。好比给一个从没见过面的继任者交接工作,只写"按老办法处理就行"没用,对方根本不知道"老办法"指什么。每一步的判断依据都得讲明白,不然经验就传不下去。
捉迷藏实验里,团队用的不是从零训练的策略网络,而是一个预训练的通用智能体。躲藏方先布置场景,再把控制权交给寻找方。两个角色各维护各的playbook,彼此的私密观察内容互不可见。几轮下来,论文记录到几个很生动的涌现行为:一个躲藏方挪动隔板堵住入口,重新建起掩护;一个寻找方把斜坡搬到内墙边,爬了上去;还有一次,寻找方第一次跳跃没成功,随后把斜坡挪得离墙更近,再试就过了。
这些行为和2019年那次经典实验里涌现的策略几乎一模一样,可背后的机制差得远。2019年的智能体从随机初始化的权重起步,边玩边靠强化学习信号调策略权重,等于一张白纸从头学物理规律和竞争博弈。这次不一样,智能体自带互联网海量文本和图像训练出的常识,知道斜坡是什么、遮挡是什么、物体大致怎么运动。它真正要解决的,不是"发明斜坡这个概念",而是"怎么把脑子里关于斜坡的抽象知识,转化成一套只看渲染画面就能落地执行的具体动作序列"。一个是认知层面从零到一,一个是执行层面把已有认知落地,难度完全不在一个量级。
**四个新世界的验证**
捉迷藏并不是终点。研究团队又另外设计了四个风格迥异的世界,用来检验这套"任务文件加playbook"的学习闭环到底通不通用。
第一个是陪伴狗世界,智能体要在60秒内让一只虚拟小狗保持舒适、主动互动的状态,靠伸手、抚摸、玩球这些动作组合去摸清这只狗的偏好。第二个是单车道桥世界,两辆车各由一个智能体以第一视角驾驶,得配合着交换到桥的两端,而桥面只容得下一辆车通过。第三个是牧羊世界,两只牧羊犬要从贴地的第一视角把四只羊赶进围栏,并保持五秒钟。第四个是采石场世界,一台轮式装载机要完成清理巨石、把巨石运到仓库、最后停进车位这三段式任务。
四个世界各跑了四轮。结果是这样:陪伴狗的互动得分从13分涨到19分;单车道桥两车交换位置所需时间从71秒降到41秒,而且每一轮两辆车都成功抵达终点;牧羊任务第一轮超时,只赶进去三只羊,从第二轮起就稳定地把四只全部赶进;采石场任务第一轮只完成了清理巨石这一步,第二轮反而什么都没完成,到第四轮,清理、运送、停车三个环节全部完成,用时329秒,在360秒限制之内。
这几条曲线并非条条单调上升。采石场任务第二轮分数直接归零,说明纯靠自我复盘的学习方式不总是稳步进步,偶尔也会走弯路甚至倒退。但整体趋势是明确的:没有奖励函数、没有人类标注、全凭自己总结文字笔记,智能体确实在跨轮次地变得更熟练。
**这篇论文之后,故事还在继续**
AgentGarten发表于2026年10月,距今时间很短,还很难找到大量直接在其基础上展开的后续研究。不过从论文本身引用和致谢的脉络里,能看出它站在哪些肩膀上,也能看出它正往哪个方向延伸。
它依赖的Self Forcing方法,是2025年提出的一套技术,让自回归视频模型在训练阶段就用自己生成的内容来训练,解决的是训练和推理阶段"看到的历史不一样"这个经典错配问题。AgentGarten在此基础上又往前推了一步,处理掉Self Forcing留下的两个问题:历史编码没法被梯度更新,以及纯靠分布匹配训练导致长视频画质退化。在前人方法上继续打补丁,这种研究节奏在深度学习领域其实相当典型。
另一条线索也值得看。论文提到的Code as Worlds、Code World Model等同期工作,都在探索用代码来表示和推理世界状态,说明"用显式代码管理世界逻辑,用神经网络负责视觉呈现"这个大方向,并不是AgentGarten一家在孤独地走,而是正在形成一个小研究集群。几个月之内,SimWorld Studio、Programmable World Model等工作陆续出现,都在尝试让编程智能体自动生成和扩展虚拟环境。未来几年,"自动造世界"或许会成为训练智能体的标准基础设施之一。
Q&A
Q1:AgentGarten是什么?
A:AgentGarten 把游戏引擎和神经渲染器拼到了一起,搭出一个能让 AI 智能体动手练的虚拟世界。世界状态和规则由引擎管,几何信息转成逼真画面则交给神经渲染器,中间靠一套统一接口衔接。
Q2:AgentGarten里的智能体是怎么学习进步的?
A:智能体学习用的是名为 playbook 的笔记机制。一局打完,它会回想自己做过什么、看到什么、还有哪些没弄懂,整理成技能笔记存起来;等到下一轮,接手的是全新的智能体,它先把此前所有笔记读一遍,再判断哪些经验能用在眼下这个场景里,策略就这样一轮轮往下改。
Q3:Adversarial Forcing解决了什么问题?
A:论文给出的 Adversarial Forcing 是一种蒸馏训练方法,目标是把跑得慢但画质高的视频模型变成能实时出画面的渲染器。它借助精确回放技术,让历史编码也进入训练、跟着更新;同时引入对抗训练,避免生成长视频时画质一路往下掉。