
2026年初如果你去问任何一个做AI智能体训练的团队你们现在最头疼的事情是什么得到的答案大概率不是模型不够聪明而是题目不够好。这话听起来有点反常识。毕竟我们平时的印象是AI能力的瓶颈在算法、在算力、在数据规模。但对于训练能操作电脑终端的AI智能体来说真正卡脖子的环节变成了怎么给它出一道靠谱的练习题。这篇论文叫FACET来自中国科学技术大学和上海AI实验室的联合团队。它要解决的问题说起来很朴素让AI自己给自己出题、自己解题、自己判卷这个闭环里到底会出什么岔子以及怎么把这些岔子一个个堵上。**核心问题一道题的四个部分只要有一个对不上整道题就废了**先说清楚训练一个终端智能体到底需要什么样的练习题。**终端智能体**指能够操作命令行界面完成任务的AI系统比如帮你安装软件、整理文件、跑数据处理脚本它需要像人类工程师一样在电脑终端里敲命令、看反馈、解决报错。一道合格的终端任务长得不像我们熟悉的选择题或者填空题。它是一个四件套一段任务说明告诉AI要做什么、一个初始化好的运行环境提前装好的电脑系统里面有该有的文件和软件、一份参考答案证明这道题真的能被解出来、一套自动判分程序用来检查AI做得对不对。这四个部分必须严丝合缝地对上。任务说明里提到处理销售数据.csv环境里就真的要有这个文件参考答案里用了某个Python库环境里就得装好这个库判分程序检查的状态必须是解题过程真能达到的状态。论文里给出的一个数字很能说明问题在没有优化的对照流程里AI生成了449个看起来完整的任务包但真正能通过环境能跑、答案能过关、判分程序认可这套完整验证的只有139个合格率27.8%。换句话说超过七成的题目看着像那么回事实际一跑就崩。这就好比你去买家具说明书写着A零件插入B孔结果拆开箱子发现根本没有B孔或者B孔是给别的型号留的。说明书本身写得挺像样可就是装不起来。如果厂家从不实际组装一遍就发货这种货不对板的情况只会越来越多最后消费者收到的不是家具是一堆互相不兼容的木板。论文识别出两个具体的病根。第一个是信息在传递中丢失原始的技能素材里其实包含很多细节比如某个操作依赖什么工具、中间会产生什么临时文件、有什么步骤上的限制但是经过多轮AI生成加工这些细节会被逐渐简化掉最后剩下的题目又浅又干。第二个是各部分自说自话任务说明可能提到一个文件但环境里没建这个文件参考答案假设用某种数据格式但判分程序按另一种格式检查。就算把文字说明在各个生成步骤间传递也没法保证大家用的是同一个真实世界。**FACET的解法先想清楚故事再动手布置场景最后才写考题**面对这两个问题FACET没有走多生成几遍然后挑好的这条捷径而是重新设计了整个流程的顺序。它把整个任务生成拆成三个阶段。第一阶段是**素材收集**。团队从OpenClaw、ClawHub和GitHub上收集了超过7.1万个公开的智能体技能包可以理解成一个个打包好的操作教程比如如何用ffmpeg压缩视频、如何用SQL清洗一批脏数据。这些技能会先经过安全过滤剔除涉及隐私、需要访问私有网站的内容然后被结构化整理记录清楚每个技能需要什么工具、输入输出是什么。接着系统会给每个技能设想可能的应用场景把语义相近的场景聚在一起凑出技能组合。比如读取Excel表格和生成可视化图表这两个技能很可能会被识别为经常一起出现的组合因为现实中用户往往是先处理数据再画图。第二阶段是这篇论文里我觉得最有意思的设计叫**场景重构**。**场景重构**不直接把技能组合翻译成任务描述而是先通过五个维度目标、场景背景、能力关系、状态变化、输入输出与工具重新理解这组技能之间到底应该怎么配合恢复出一个完整连贯的用户使用故事再把这个故事转成正式的任务文档。为什么要多这一步直接翻译不好吗论文给出的理由是如果直接把技能组合转成任务描述生成出来的东西往往只用到每个技能最表面的功能技能之间真正的依赖关系、生成过程中的中间状态、需要遵守的约束条件全都被压扁抹平了。就像你请了两位专业厨师来做一顿饭一位擅长炖汤一位擅长烤肉如果不给他们讨论菜单的机会直接各自随便做一道菜端上桌那顿饭大概率是两道互不相干的菜而不是一顿有主次搭配的完整晚餐。真正好的晚餐得先有人想清楚这顿饭想给客人什么体验然后再分派任务炖汤要炖成什么口味要跟烤肉的调味呼应上菜顺序怎么安排。场景重构做的就是这个想清楚整顿饭该怎么做的工作。具体来说场景重构分五步走先分析每个技能有什么能力和限制再设想这些技能可能被用在什么真实场景里然后筛掉那些技能之间关联性不强、只是硬凑在一起的组合接着把留下的技能编排成一个有逻辑先后的工作流程恢复出技能之间的依赖和中间产物最后把这个流程用具体的文件格式、资源、约束条件填充丰满。这五步跑完会产出一份五维场景表示包括目标、背景、能力关系、状态、输入输出与工具这五个方面的描述最终整合成一段完整的自然语言场景说明。基于这份说明系统先生成解决方案参考记录该怎么一步步解决问题再依据解决方案参考生成指令参考记录任务到底要求什么。这两份参考文档生成完还有个专门的模型去检查它们是不是在讲同一件事初始状态一致不一致、指令里提的每个要求解决方案里有没有对应、解决方案产生的每个效果最终状态里能不能观察到。这个先讲故事、再定文档、后核对一致性的顺序本身就是在做防止各说各话这件事。**第三阶段是这篇论文的另一个核心创新我把它称为先搭好房子再写房产证。**具体来说这个阶段先根据前面整理出的场景说明规划出需要哪些文件、哪些服务、哪些依赖包然后真的动手在一个容器里把这些东西全部造出来包括必要时联网抓取真实的公开资源把它们本地化甚至对收集到的数据做适当扩充和干扰比如往一份结构化数据表里加一些额外记录、干扰字段让环境看起来不那么像模板化的空壳。环境搭建完之后会先启动这个环境验证它能不能正常跑起来。跑不起来就报错回退给环境修复环节最多允许修三次。修复的时候特意会带上原始的场景说明防止AI图省事直接把有难度的任务要求删掉换取能跑起来的假成功那样虽然环境能跑但已经不是原来想要的那道题了。环境真的搭好之后系统才开始生成任务说明、解决方案代码和判分程序而且这三者都能读取同一个已经跑起来的真实容器状态。**容器状态共享**环境搭建成功后把这个真实运行的系统状态有哪些文件、什么路径、哪些服务在跑、依赖版本是什么当作一个共享的参考基准让指令、解决方案、判分程序这三个生成步骤都对照同一份真实信息去写而不是各自凭空想象。这一步的价值在哪里想象你在装修房子如果水电工、木工、油漆工完全不看现场实际情况只是分别照着图纸各干各的最后大概率会出现油漆工的开关面板位置和水电工实际布线对不上的尴尬。真正靠谱的做法是水电走完线之后把实际走线图给后面的工种看让大家照着真实发生的情况而不是最初的设想去继续干活。FACET就是让指令、答案、判分程序都对照这份真实发生的容器状态去写谁也不会写出一个环境里根本不存在的文件。生成完指令后系统会拿指令和解决方案参考去生成具体的解决方案代码然后真的执行这份代码观察执行完之后环境变成了什么样子。判分程序是最后生成的它能同时看到指令、解决方案、执行前状态和执行后状态这样写出来的判分逻辑更贴近检查行为和最终状态而不是死板地比对某一条具体命令这样即便AI用了另一种同样正确的解法也能通过验证。整个任务包最后要经过一套完整的验证环境能不能正常构建、判分程序在初始状态下是不是正确地判定为未完成、参考解法能不能顺利跑完、判分程序在解法跑完之后是不是正确判定为已完成。如果哪一步失败了系统会有一个专门的路由器去判断问题出在哪个部件是环境、解决方案还是判分程序然后只修那一个部件而不是推倒重来。最多允许修五轮修不好就直接丢弃这道题。这种哪坏修哪的策略听起来简单但背后是个很实际的效率考量。如果每次验证失败都整体重新生成一遍任务成本会指数级增长而且很可能把已经正确的部分也改坏了。**数据说话题目变难了但训练效果反而更好**理论说完了实际效果怎么样论文给出了一系列对比数据我把关键几组列出来。首先是和其他现有终端智能体数据集的比较。| 数据集 | 轨迹数 | 平均交互轮数 | 任务数 | 每任务测试点数 | P1 | P3 ||---|---|---|---|---|---|---|| Nemotron-Terminal | 5K | 6.12 | 15K | 6.18 | 40.67 | 48.00 || Endless-Terminals | 200 | 4.53 | 2,492 | 5.51 | 83.00 | 87.00 || Terminal-Lego | 32K | 5.77 | 15K | 16.60 | 47.00 | 49.00 || TerminalWorld | 200 | 11.94 | 1,530 | 3.98 | 57.00 | 82.00 || Tmax | 500 | 11.14 | 15K | 3.29 | 80.00 | 86.00 || **FACET本文** | 1.2K | **11.86** | 6K | **22.77** | 27.00 | 35.00 |**P1**模型第一次尝试就成功解出任务的概率。**P3**三次尝试中至少成功一次的概率。这张表最有意思的地方是FACET在训练轨迹数量上明显偏少1.2K别人动辄几千上万单个任务的测试点数量却是所有数据集里最多的达到22.77个是排名第二的Terminal-Lego16.60的将近1.4倍。与此同时FACET数据集上的解题成功率P1只有27%是所有数据集里最低的。这不是bug是feature。测试点数量多意味着一道题里塞进了更多个独立检查项AI必须把所有要求都满足才能算通过只完成主线任务但漏掉一两个细节要求照样判失败。这就好比一场考试别的卷子只考三道大题答对方向就给分FACET这份卷子拆成了二十多个小项逐一打钩漏一项就扣分整体通过率自然会被拉低。真正决定这份难题有没有价值的是拿它训练出来的模型表现如何。论文团队用DeepSeek-V4-Pro跑了大约6千道FACET生成的验证过任务收集了1200条完整成功的解题轨迹拿这些轨迹去微调三个不同规模的Qwen3.5模型然后在权威的Terminal-Bench 2.1基准上测试效果。| 模型 | 参数规模 | 微调前 | 微调后 | 提升幅度 ||---|---|---|---|---|| Qwen3.5-4B | 4B | 17.60 | 24.72 | 7.12 || Qwen3.5-9B | 9B | 27.34 | 35.58 | 8.24 || Qwen3.5-27B | 27B | 40.82 | **47.57** | 6.75 |三个规模的模型都获得了实打实的提升9B模型的绝对涨幅最大4B模型的相对涨幅最猛40.5%的相对提升。更值得说道的是27B模型微调之后达到47.57分只比参数量是它15倍的Qwen3.5-397B在相同评测设置下拿到49.06分低了1.49分。用1.2K条精心构造的训练轨迹追平了近乎大十几倍的模型规模差距这说明数据质量本身能在一定程度上替代模型规模。**几乎做对了但没完全对才是终端智能体最大的敌人**论文还挖出了一个挺扎心的现象。研究团队统计了那6千多个任务的解题过程发现单个检查项的通过率高达89.40%但整体任务的完全成功率只有20.94%。这意味着什么意味着AI在绝大多数细节上都做对了但只要漏掉一两个小要求整道题依然记作失败。进一步细分发现在所有失败的尝试里有54%只是差了一两个检查项没通过。这就好比你考驾照科目二五个项目里前四个都精准无误最后一个倒车入库压了一点点线整体结果依然是不及格。你可能觉得自己已经开得很不错了但规则不认这个账。这种设计不是为了刁难而是终端任务本身的真实性质决定的现实世界里让电脑执行一个操作只要有一处细节没做对整个流程就是失败的不存在大部分对就算过这回事。论文特别强调任务的难度并非来自单一步骤的复杂性而是来自要求的数量和相互关联性。指令越长涉及的文件和约束条件越多牵扯的中间依赖越复杂一次性把所有要求都精准满足的难度就呈非线性增长。这也解释了为什么处理结构化数据的任务通常比处理长篇文档的任务更容易被AI做对因为前者的检查点相对独立后者往往环环相扣。**先写答案还是先写判分标准顺序真的很重要**论文里做了一个特别扎实的对照实验专门验证生成顺序对任务质量的影响。他们用同样的100组场景素材分别测试了三种生成顺序正序先生成指令再生成解决方案最后生成判分程序这是FACET采用的方式、逆序先生成指令再生成判分程序最后才生成解决方案、以及联合生成三样东西一次性生成完。结果差异非常明显。正序方式的初始有效率是46.5%逆序只有24.2%联合生成是37.5%。为什么先写判分程序再写解决方案会出问题道理其实不复杂判分程序是根据一份还不存在的解决方案凭空想象出来的检查标准就像老师在还没批改学生作业之前先按照自己脑补的理想答案定好评分细则等真正的学生作业交上来很可能和脑补的答案对不上号甚至根本没有标准答案里假设的那种解法。逆序生成失败原因里跨部件契约不匹配占到56.5%正是这个道理在数据上的体现。联合生成则把契约不匹配的比例压到了13.3%但代价是文件路径和数据结构错位的比例飙升到38.3%。原因也不难理解一次性生成三样东西模型很容易在细节上前后不一致比如指令里提的文件名和解决方案代码里用的文件名对不上。论文还做了一个更严格的配对检验只挑出88组同时通过三种流程验证阶段的场景两两比较成败情况。正序方案战胜逆序方案的场景有29组逆序反过来战胜正序的只有9组用统计检验算出来的p值是0.0017这个数字小得足以说明这不是偶然。正序对联合生成的胜负比是27比18统计上没有那么显著p0.233说明这两种方式的差距不算特别悬殊但正序仍然在初始有效率和最终修复成功率上都占优。**这套流程真的比现有方案强吗一场公平的正面对决**论文最后还做了一个端到端的横向对比拿FACET和另外两条流程在完全相同的500组技能对输入上做比较一条是没有场景重构环节的简化版基线流程另一条是团队复现的TerminalWorld风格构建流程这是另一篇相关论文提出的方法。结果是这样的基线流程生成了437个看起来完整的任务包真正通过验证的只有78个成功率15.6%TerminalWorld风格流程生成了449个验证通过139个成功率27.8%FACET生成的完整包数量反而最少只有395个但通过验证的多达350个成功率高达70.0%。这个数字对比很说明问题。FACET没有在生成数量上取巧反而是三者里生成包最少的却在能真正跑通这件事上远远甩开了另外两条流程。350个通过验证的任务里有182个是第一次就通过验证另外168个是经过针对性修复才通过的修复机制在这里发挥了实打实的作用。更值得注意的是FACET产出的这些任务并不是靠简单取巧换来的高通过率。用DeepSeek-V4-Pro实际去解这些任务FACET版本的P1只有25.1%是三者里最低的平均需要的终端命令数量高达21.5条也是三者里最多的。换句话说FACET生成的任务不仅通过率高难度也没有被稀释依然是货真价实的高质量、高复杂度任务。写在后面读到这篇论文的时候最触动我的其实不是那些提升几个百分点的实验数字而是那个89.40%对20.94%的对比。一个AI系统能把接近九成的细节做对最后却因为剩下的一成而被判定完全失败这种落差揭示了一件我们平时容易忽略的事智能体任务的评价标准和人类日常做事的评价标准是完全不同的两套逻辑。人类做事讲究抓大放小容错率高机器执行任务讲究的是全对或全错一步都不能松懈。这也许正是为什么让AI真正胜任严肃的自动化工作比让它写一篇看起来还不错的文章要难得多。另一个让我反复琢磨的细节是那个生成顺序实验。先写答案再写判分标准和先定判分标准再凑答案看起来只是流程步骤颠倒了一下结果却是接近两倍的成功率差距。这多少提醒我们很多系统性问题的根源可能不在算法本身够不够聪明而在于最基础的先做什么后做什么这种流程设计上。论文里还有一个没有深入展开的问题就是这套流程目前依赖的是公开的技能包和场景素材如果换成某个高度专业化、素材极其稀缺的垂直领域场景重构这一步还能不能重构出足够丰富的故事这大概是留给后续研究者的一道真正的考题。QAQ1FACET是什么AFACET是中国科学技术大学和上海AI实验室团队提出的一套自动生成终端任务的框架用来给AI智能体制造训练用的练习题核心解决的是任务说明、运行环境、参考答案、判分程序四部分互相对不上的问题。Q2FACET生成的任务和其他数据集比有什么不同AFACET生成的任务平均每个任务有22.77个独立检查点远高于同类数据集虽然导致解题成功率看起来偏低P1只有27%但拿这些任务训练出来的模型在Terminal-Bench 2.1基准上提升明显27B模型微调后从40.82分提升到47.57分。Q3为什么先生成解决方案再生成判分程序比反过来更好A论文实验显示先写判分程序再写解决方案的方式初始有效率只有24.2%而先写解决方案再写判分程序的正序方式有效率达到46.5%因为判分程序如果脱离真实解法凭空设计很容易和实际解法对不上号。