通义让 agent「先想后做」,这正是我天天看它莽着改代码最缺的那一步

cover

哈喽,我是飞飞。

先说我天天踩的一个坑。我用 Claude Code 配 Opus 4.8 改自己真实的仓库,前阵子搬一个七千行的 SpringBoot 项目,从 Java 迁到 Kotlin。一个任务交给 agent,它经常一秒钟就改十几个文件,看着挺猛。可问题也在这儿:它改之前根本没掂量过这十几处改完会不会互相打架,等我跑起来报错,回头找是哪一改动惹的祸,特别费劲。有时候 git 历史被它写得乱七八糟,我想 revert 都得先花半天理清它到底动了什么。

就拿迁移里最磨人的那段说。Java 那边一个返回值可能为空的方法,到了 Kotlin 这边得拿可空类型重新表达。agent 把那个方法签名一改,顺手就把几十个调用点全批量跟着改了,速度是真快。但它没意识到其中有几处的空判断逻辑跟原来对不上,编译能过,跑起来才在某个边角场景空指针。那一次我光顺着它一口气铺开的改动往回倒,确认到底是哪个调用点的判空被它想当然地抹平了,前后耗掉大半个下午。它动手的那两秒,跟我善后的那几个小时,完全不成比例。

所以这两天看到阿里通义开源 Qwen-AgentWorld,我第一反应不是又一个刷榜模型,而是有点被它的思路勾住了。它讲的是让 agent「先预测,再行动」。动手之前,先在模型里模拟一下「我这么干,环境会变成什么样」,预测完了再决定要不要这么干。

这个方向,恰好就是我每天对着屏幕最缺的那一步。

agent 最贵的毛病,是不想清楚就莽着动手

我得先承认,agent 改代码快这件事,本身是好的。手动迁七千行,我自己得改到天荒地老。它一上来批量动,效率确实是另一个量级。

但快和莽,常常是一回事。

它快,是因为它不犹豫。可我恰恰希望它在某些时候犹豫一下。批量改一个被几十处引用的函数签名之前,停半秒想想:这一改,哪几个调用点会跟着炸?写测试用例之前,先掂量一下现有的 mock 会不会因为这次重构而失效?这些「想一步」的动作,正是人类老手下手前会本能做的事,也是现在的 agent 最欠的。

我之前写 Oak 想给 agent 换掉 git 那篇,吐槽的也是同一个病根。agent 把版本历史当草稿纸一样乱涂,根上是它对「我这步操作会给整个项目留下什么后果」没概念。它活在当下这一帧,看不见下一帧。

Qwen-AgentWorld 想补的,就是这个「看见下一帧」的能力。官方给世界模型下的定义是,根据当前的观察和动作,去预测环境接下来怎么变,把它当成推理和规划的核心认知机制。说人话就是,让 agent 学会人动手前在脑子里先过一遍的那个动作。

它到底训了个什么,我捋了一遍

光听理念容易飘,我把官方放出来的料核了一遍,挑能落地的讲。

它开源了两个尺寸,35B-A3B 和 397B-A17B,都能从 Hugging Face 和 ModelScope 上拿。覆盖七个领域,文本这边是 MCP、Search、Terminal、SWE,图形界面那边是 Web、OS、Android。基本把我们平时让 agent 干的活都罩进去了,敲命令、跑搜索、改代码、点网页、操作系统,到手机操作。

训练用了超过一千万条真实环境里的交互轨迹,走的是 CPT 到 SFT 再到 RL 三个阶段。这里有个细节我觉得值得说。按官方的讲法,它的世界建模能力不是在通用大模型练完之后再贴上去的,而是从最早的预训练阶段就当成训练目标,一路贯穿到底。「预测环境怎么变」这件事算是写进它底子里的,而不是事后打的补丁。这条要是真的,那它跟拿通用模型套个 agent 框架的做法,就是两个路子了。

至于大家最爱看的跑分,我得把口径先标清楚。

「超越 GPT-5.4」这句话,得这么读

通义官方说,在它同步发布的 AgentWorldBench 上,397B 这个版本拿了最高的整体模拟质量,超过了 GPT-5.4、Claude Opus 4.8 和 Gemini 3.1 Pro。

这句话我建议你这么读。一个是,benchmark 是它自己造的,模型也是它自己的,相当于自己出卷自己考了个第一,这属于厂商自报口径,不是独立第三方实测。另一个是,真去翻第三方的汇总分,397B 的整体均分是 58.71,GPT-5.4 是 58.25,领先也就大概半分。说赢了,确实赢了,但赢得相当微薄,远不到碾压。

我最近写过几回对自报跑分犯嘀咕的文章,Seed2.1 那个数字、Cursor 那个注水,看多了对厂商自己晒的分数本能会留个心眼。这篇我不想再当第三篇跑分怀疑论,因为揪着那半分掐架,反而把更要紧的东西盖住了。

跑分对我来说从来不是重点。重点是它指的那个方向,对不对我的胃口。哪怕它在自家卷子上只赢半分,只要「先预测再行动」这条路真能让 agent 动手前先掂量后果,对我这种天天看 agent 莽着改代码的人来说,这个方向本身就值钱。分数是顺带的,机制才是我盯着的。

我真正想知道的,是我敢不敢放手

把这事拉回我每天的活上,问题其实特别朴素。

我现在敢交给 agent 的,多半是边界清楚、改坏了也好回退的小活。真正费时间、价值也高的,是那种长链路的重活,比如一整个模块的重构、一次牵连几十个文件的接口改造。这种活我现在不太敢撒手,原因就一个:我怕它中途某一步莽了,把后面全带沟里,等我发现已经晚了,收拾残局比自己写还累。

如果 agent 真能在每一步落子之前,先在脑子里推演一下这步的后果,发现要出事就停下来换个走法,那我对它的信任阈值是会变的。我不需要它变得多聪明,我需要它变得更稳、更有分寸。稳,比快值钱。

所以我对 Qwen-AgentWorld 真正的兴趣,不在那张跑分表,在它能不能把「先想后做」这件事,从一句口号变成 agent 真实的行为习惯。能做到,我愿意把更长的链路放手交给它;做不到,它就还是个跑分好看的 demo。

当然我也得给自己泼盆冷水。论文里的「预测」是在一个被规整过的 benchmark 环境里跑出来的,跟我那个塞满历史包袱、命名混乱、依赖打架的真实老仓库,完全是两码事。世界模型能在干净环境里预测得准,不代表丢进我的烂摊子里还灵。这一步它走没走通,光看官方那张表是看不出来的,得真拿来跑我自己的活才知道。我打算找个空档,挑一个我平时最不敢撒手的重构,让它先「预测」一版再动,看看它推演出来的后果跟实际跑出来的差多远。

每次动用 Opus 之前,我心里都会过一杆秤,这活值不值得花这个钱。我现在隐隐盼着的是,将来这杆秤上能多一个砝码:不是它有多强,是它够不够稳,稳到我敢把手松开。

你呢,现在让 agent 干长链路的活,你是全程盯着它每一步,还是已经敢放手让它自己跑了?你最不放心它在哪一步莽起来?评论区聊聊。