打开网易新闻 查看精彩图片

你有没有想过,为什么教AI写代码相对容易,但教AI帮你做一份完整的投资分析报告却很难?

这个问题背后藏着一个有意思的事实。2026年之前,训练"干活型"AI智能体的数据生产线几乎都卡在同一个死结上:要么用模型自己造文件,结果造出来的东西一眼假,缺乏真实世界的杂乱和细节;要么拿真实文件来出题,但没人知道答案做得对不对,因为没有专门的打分标准。听起来是个小问题,但往大了说,这几乎决定了AI能不能真正接手人类的日常工作。

来自中国科学技术大学和复旦大学的研究团队,就是冲着这个死结去的。他们做了一个叫GraphForge的框架,核心思路说起来不复杂:既然任务和答案都要靠谱,那就都从同一批真实文件里"长"出来。这篇论文把这套方法从种子设计一路讲到最终训练效果,咱们一步步拆开看。

工作型智能体,到底难在哪

先说清楚一件事,工作型智能体和普通聊天机器人完全不是一回事。

工作智能体*:指像数字助理一样,能够长时间处理文件系统、数据库、终端等真实工作环境任务的AI系统,例如帮你整理财务报表、撰写行业分析、修改多个文档。

聊天机器人回答你一个问题就结束了,但工作智能体要读懂一堆Excel、PDF、网页,协调好几种工具,最后交出一份别人能直接用的成果。这中间的坑特别多:文件格式五花八门,数据可能互相矛盾,任务本身也可能有歧义。

要训练这样的智能体,业界通用的做法是监督微调。

监督微调*:让强模型先做一遍任务生成高质量的操作轨迹,再拿这些轨迹去教其他模型模仿,这是目前训练智能体最主流的办法之一。

问题来了:轨迹从哪儿来?论文里提到两个此前最接近的尝试。一个叫EnvCraft,它用模型直接生成文件再用Python脚本检查结果,但脚本只能看工作区的状态变化,看不懂文件内容本身,所以如果AI产出的PDF报告里数字算错了,脚本根本发现不了。另一个叫NexForge,它换了个思路,用真实文件出题,这解决了真实性问题,但它没有给每个任务配专门的打分规则,结果好不好全凭感觉,没法系统验证。

这就好比你让两个老师改作文。一个老师只数你写了多少个字、用没用规定的格式,完全不读内容对不对;另一个老师倒是认真读了文章,但手里没有评分标准,全凭个人喜好打分。两种做法都没法保证作文真正写得好。如果继续用第一种方式训练AI,AI学会的可能只是"文件数量对了就行",而不是"内容真的有用";如果用第二种方式,不同任务的打分松紧不一,训练信号本身就是噪声。GraphForge想解决的,正是这个"真实性"和"可验证性"不可兼得的矛盾。

从职业出发,而不是让AI自己瞎编任务

GraphForge第一步做的事情,有点反直觉:它不让AI自己想任务,而是先去O*NET数据库里找"职业种子"。

O*NET*:美国劳工部维护的职业信息数据库,收录了海量职业的详细工作活动分类,是人力资源和职业研究领域的标准参考库。

为什么要绕这么一圈?研究者发现一个规律:如果任由模型自由发挥去编任务,它会不由自主地偏向那些训练数据里出现频率高的职业和套路化的任务类型,比如老是写"分析一下这份财务报表"这种万金油式任务。这就好比让一个从没规划过菜单的厨师随意做饭,他大概率会不停地重复做自己最拿手的那几道菜,而不是覆盖丰富的菜系。

为了避免这种塌缩,团队从O*NET里筛出246个职业,涵盖16个大行业、43个细分领域,再通过AI4Work项目的标注,只保留"数字化可执行"的任务,最后得到891种详细工作活动类型和3419个职业任务组合。每个种子会标注好这个任务的执行模式(比如是定量建模还是政策设计)、预期要用到的输入文件类型,但故意不指定具体公司、具体事件、具体数据,这些留给后面的步骤去填。

为了保证种子选得够分散,团队还设计了一个边际覆盖打分规则:每次挑选下一个种子时,优先选那些在职业、任务类型、执行模式、输入文件类型这几个维度上还没怎么出现过的组合。打个比方,这就像图书馆进新书时,如果某个类别的书已经堆满了一整个书架,管理员会优先去买冷门类别的书,而不是继续往同一个书架里塞。最终语料覆盖了466种任务类型,15个行业(16个里的15个),16种执行模式全部覆盖。

真实文件workspace,角色分工藏起来

光有种子还不够,种子只是说"谁、做什么、怎么做",具体案例是空的。

接下来登场的是一个搜索智能体,它拿着种子去互联网上找一个真实、连贯的案例,比如真的某家上市公司的财报,把相关文件原样下载下来,格式不改,直接用专门工具解析。这些文件会被打上隐藏角色:核心文件驱动主要的计算和判断,辅助文件提供背景或政策依据,混淆文件看起来相关但其实用不上,背景文件则是增加真实感的冗余信息。

这些角色信息对执行任务的AI是完全隐藏的,智能体拿到的只是一堆文件,不知道哪个是关键、哪个是陷阱。这个设计很关键,想象一下你去应聘做财务分析,老板直接把一整个文件夹甩给你,里面混着今年的报表、去年的报表、竞争对手的新闻稿、还有几份跟这次任务毫无关系的会议纪要,你必须自己判断哪些该用、哪些该忽略。如果提前把标签都贴好告诉你"这个重要那个不重要",你学到的就不是真正的信息筛选能力,而是照着标签抄答案的本事。GraphForge故意隐藏角色,就是要逼着模型学会在真实的信息噪声里找到关键线索。

证据图:让任务和打分标准都长在同一棵树上

这是整篇论文设计最巧妙的部分。

拿到一堆真实文件后,GraphForge会构建一个证据图。

证据图*:一种记录文件之间关系的图结构,节点代表某个文件提供的具体事实或字段,边代表跨文件之间的依赖关系,比如两份报表里的同一个数字需要互相核对。

证据图不是最终答案,而是一个中间产物,但它有一条硬性要求:图里记录的每一条信息都必须能在原始文件里找到出处。这个图接下来被编译成两样东西:一份自然语言描述的任务书,还有一套打分细则。

这套打分细则特别讲究,论文里管它叫"证据锚定"。

证据锚定*:每一条评分标准都明确指向证据图里的具体节点,相当于告诉打分的裁判"要验证这一条,请去看这几个文件的这几处内容"。

举个论文里的例子更直观。假设任务是帮英伟达公司做一份投资分析报告,评分标准里有一条是"2025财年营收必须是130497百万美元",这条标准会被直接锚定到具体那份财务报表文件(标号F2),还会要求交叉核对另外两份文件(F1和F5)。裁判AI在打分时,不是凭印象判断对错,而是真的被告知去翻看哪几份文件的哪几处数据。

这个设计解决了什么根本矛盾?如果任务书和打分标准是分开生成的,两者很容易对不上,任务说要算增长率,打分标准却只看格式对不对,这种错位在实际训练数据里太常见了。GraphForge让两者从同一张证据图里"长"出来,就像盖房子先打好地基再往上砌墙,地基里预埋的钢筋位置,决定了后面每一面墙该在哪里立起来,墙和地基永远是对齐的。

一次性修订:让执行结果反过来纠正任务本身

静态检查终究有盲区,有些任务写出来看着没问题,真让AI去跑一遍才会暴露出歧义或者遗漏的信息。

GraphForge在这里加了一道工序:先让一个强模型(论文里用的是GLM-5.2)把初版任务完整跑一遍,产出一份初始执行轨迹。然后一个专门的修订智能体会带着原始文件、证据图、完整任务书和这次执行结果,去检查任务是不是自然可执行、要求的数字是不是真有依据支撑、每条评分标准是不是锚对了文件、打分说明够不够裁判用来验证。

修订智能体只返回需要改动的部分,这个设计挺聪明的,避免了"小修小补却要推倒重来"的浪费。如果任务描述本身没变,只是打分细则微调了,系统会直接复用之前那次执行结果去打分,不用重新跑一遍模型;只有当任务描述真的变了,或者压根没有初始执行记录,才会重新找模型跑一遍。这就像写论文时导师提的修改意见,如果只是改了一个脚注的措辞,你没必要把整篇论文重新写一遍,但如果导师说你的核心论点站不住脚,那是真得推倒重来。

经过这一轮筛选,3638个成形的任务里,81.6%的初始执行结果被直接复用,最终有2169条达到质量阈值(打分超过0.90)的轨迹被收入训练集,来自2150个独立的工作区。

打分不是一锤定音,还得经得起"找茬"

数据造出来了,怎么知道这套打分系统本身靠不靠谱?

研究团队做了一个很直接的压力测试:故意在文件里埋破坏。比如删掉某条评分标准引用的那张工作表,结果对应那条评分的分数平均暴跌0.377分,而其他没被动过手脚的评分标准几乎纹丝不动(平均变化只有0.016)。这说明裁判AI确实在认真看引用的那份文件,而且影响是精准局限在被破坏的那一条标准上,没有殃及无辜。

但故事还有另一半。如果只是悄悄改动行数据、改一个数字、或者改一下引用来源这种细节级的破坏,裁判的分数变化就很小,都在0.03以内。按理说,这些被改动的内容本身就在被引用的证据范围里,一个足够敏锐的裁判应该也能抓出来。论文坦诚地把这归结为当前裁判模型(GLM-5.2)能力上的局限:它能可靠地发现"证据整个消失了"这种结构性破坏,但对"证据还在、细节被偷偷改了"这种精细破坏没那么敏感。这个坦白挺难得的,很多论文会选择性地只展示漂亮的结果,这里研究者把短板也摆出来了。

训练效果:数字说话

理论说了这么多,实际训练出来的AI到底行不行?

研究团队用这套数据对Qwen3.6-27B和Qwen3.6-35B-A3B两个模型做了监督微调,再放到三个权威的工作智能体测试基准上检验:GDPVal(用Elo评分衡量)、Workspace-Bench-Lite、SpreadsheetBench II。

结果相当亮眼。27B模型在GDPVal上,OpenHands环境下的Elo从1380.0涨到1445.7,涨了65.7分;Codex环境下从1364.0涨到1427.4,涨了63.4分。在Workspace-Bench-Lite上,Claude Code环境下提升7.7分到63.7分。SpreadsheetBench II更夸张,提升13.7分达到24.0分,几乎是原来的两倍以上。

更值得注意的是,所有训练轨迹都是在Codex这一种执行环境下收集的,但提升效果在OpenHands、Claude Code等完全不同的执行环境下依然成立。这说明学到的不是某个特定工具的操作习惯,而是更底层的"怎么干活"的能力,这跟一个真正学会开车的人,换一辆新车也能很快上手,而不是只会开自己那辆特定型号的车,是一个道理。

而且这套数据在35B-A3B这个完全不同的模型架构上同样有效,说明GraphForge产出的训练数据有相当好的通用性,不是只对某一个模型"对症下药"。

拒绝采样微调:用打分标准挑出更好的"自学"样本

故事到这里还没完。研究团队又做了一步,让已经微调过的SFT模型自己再去跑一批全新的任务,每个任务跑4次,然后用证据锚定的裁判在这4个结果里挑出最好的那个(得分超过0.95),再拿这些"自己挑出来的好答案"去做进一步训练。

拒绝采样微调*:从模型自己生成的多个候选结果中,根据某种筛选标准挑出最优的一批,再用这批精选结果继续训练模型,是一种不依赖外部标注、靠自我迭代提升的训练技巧。

这里团队设计了一个对照实验,故意弄出三个版本:一个用证据锚定的裁判挑最好的,一个用看不到具体证据锚点的裁判挑最好的,还有一个纯随机挑。结果在Workspace-Bench-Lite和SpreadsheetBench II上,证据锚定版本的提升最大,随机挑选版本表现最差,印证了"挑选质量确实重要,瞎选不如不选"的直觉。不过在GDPVal这个只有220个任务的基准上,由于样本量小,不同版本之间的差距在统计上还不够显著,这一点论文也坦率地承认了,没有夸大结论。

污染审查:怕的不是作弊,是"自己骗自己"

最后还有一个容易被忽略但特别重要的环节,检查训练数据和测试数据有没有"撞车"。

因为GDPVal这个评测基准和GraphForge的种子都来自同一套O*NET职业分类体系,重合的风险天然存在。研究团队做了三层检查:文件级别,3万9千多份训练文件和260份GDPVal参考文件逐一比对哈希值,零重合;文本级别,抽取所有文件的文本内容,找最相似的20对片段人工核查,没有发现实质性的内容重复;职业级别,GDPVal覆盖的44个职业里,只有13个和训练语料的职业分类重叠。

更进一步,团队把GDPVal的220个任务按"职业是否被训练数据覆盖"分成两组,分别看SFT模型相对基座模型的胜率。结果覆盖组胜率是0.692,未覆盖组反而更高,是0.739。如果提升效果真的来自"背答案",那理应是覆盖组的提升更明显,但事实恰恰相反。这个反向的结果,比任何自我声明都更有说服力地证明了,模型学到的是可迁移的做事能力,而不是记住了几个特定案例的套路。

写在后面

读完这篇论文,让我印象最深的其实不是最终那几个提升的分数,而是"污染审查"那一节的设计。很多论文在宣布训练效果时,往往止步于"我们微调后分数提升了多少",很少有团队愿意主动去挑战自己最亮眼的结果,回头问一句"这个提升是不是来自作弊"。GraphForge团队反而专门把职业覆盖和未覆盖两组的数据拆开对比,而且公布的结果是未覆盖组表现更好,这个反向证据本身比正向吹嘘更可信。

另一个让我反复琢磨的细节是裁判模型的"诚实局限"。研究者发现自家用来打分的AI能揪出"证据文件被整个删掉"这种粗暴破坏,却抓不住"数字被偷偷改了一位小数点"这种精细破坏。他们没有把这一点藏起来,而是直接写进论文里,归因于当前裁判模型自身能力的天花板。这让我想到,也许未来做智能体训练的瓶颈,不在于能不能收集到足够多的真实任务,而在于有没有一个足够敏锐的"眼睛"去验证这些任务做得好不好。数据管道再精巧,裁判看不出细节的破绽,训练信号照样会被污染。

这篇论文留下的开放问题其实挺现实:如果换一个更强的裁判模型去跑这套流程,提升空间还有多大?2169条训练轨迹,这个数字放在今天的大模型训练语境里其实相当小,如果真能扩展到几万甚至几十万条,这套"从真实文件里同时长出任务和答案"的思路,是不是真能撑起一个日常真正可用的数字员工?

Q&A

Q1:GraphForge是什么?

A:GraphForge是一个用真实文件训练工作型AI智能体的数据合成框架,它从职业种子出发组装真实文件工作区,构建证据图,再把任务描述和打分标准都从这张图里编译出来,保证任务要求和验证标准都有真实文件支撑。

Q2:GraphForge训练出来的AI效果怎么样?

A:用GraphForge数据微调Qwen3.6-27B后,GDPVal基准的Elo评分从1380提升到1445.7,Workspace-Bench-Lite从56提升到63.7,SpreadsheetBench II从10.3提升到24.0,而且这种提升在不同的执行环境下都成立。

Q3:GraphForge怎么保证训练数据不是在抄测试题的答案?

A:研究团队做了文件、文本、职业三层重合检查,发现训练数据和GDPVal测试基准几乎没有重叠,而且在职业完全没被训练数据覆盖的任务上,模型提升幅度反而更大,说明学到的是可迁移能力而非死记硬背。