Echoverse:为 AI Agent 打造可演进的训练环境
微软研究院推出 Agent 训练框架,通过动态演进的任务环境而非静态数据集改进 Agent 多步工作流能力,对 Agent 开发者有实用价值。
微软研究院推出 Agent 训练框架,通过动态演进的任务环境而非静态数据集改进 Agent 多步工作流能力,对 Agent 开发者有实用价值。
相比单纯追求数量,我们更注重扩展保真度,针对 AI 智能体真正欠缺的能力,并让环境随其训练的模型共同演进。
我们为计算机操作 AI 智能体构建了十二个训练世界:十个深度领域世界和两个能力世界。每个能力世界都围绕一种控件展开,通过多种形式进行专项训练(日期选择器和嵌套筛选器)。深度决定了这些世界的训练价值:它们复现了应用程序的真实行为,预置了逼真的数据,并能在不同页面和用户之间保持状态一致。在全部十二个世界上训练后,一个 9B 模型的基础得分几乎翻倍(从 36.5% 提升至 67.1%),与 GPT-5.4 的差距缩小到十四个百分点。这项实验让我们获得了几条经验:
高仿真保真度必不可少;浅层世界会损害 AI 智能体的能力。使用同一网站的浅层版本和深层版本训练后,模型在浅层版本上的表现出现退步,却在深层版本上有所提升。
AI 智能体经常会在相同的高难度 UI 元素上遇到困难,例如日期选择器和嵌套筛选器。通过用多种形式专项训练这些控件,模型学会了在训练期间从未见过的领域中操作它们。
让模型、世界和验证器共同演进,可以同时改进三者。随着世界变得更加准确、其中的任务变得更具挑战性,模型的能力也会随之提升。
在这些世界中进行强化学习,可以推动 AI 智能体超越模仿。将基于事实依据的验证器作为奖励后,RL 提升了模型在留出任务上的表现,并教会 AI 智能体用更少的步骤达成目标。
我们将发布其中四个世界及其代码、数据和基于事实依据的评分器,以支持对高保真计算机操作世界的研究。Github:microsoft/Echoverse: Deep, Evolving Environments for Computer-Use Agents(在新标签页中打开)Hugging Face:microsoft/Echoverse · Datasets at Hugging Face(在新标签页中打开)技术报告:https://www.microsoft.com/en-us/research/publication/echoverse-deep-evolving-environments-for-training-computer-use-agents-at-scale/
计算机操作 AI 智能体只有在操作产生真实后果的地方,才能学习这些操作会带来什么结果。一次点击会改变已保存的状态,一条消息会发送给真实的人,或者一个拒绝发生变化的页面会告诉 AI 智能体,它刚才的操作没有产生任何效果。截图可以展示界面的外观,但只有真正运行的世界才能展示一个操作造成了什么结果。
真正值得学习的后果具有状态性,而且其中大多数都位于登录之后。人们希望自动化的工作存在于封闭系统中:电子邮件和聊天、银行系统、健康记录,以及云和机器学习的内部控制台。你无法直接使用这些系统的线上版本训练 AI 智能体。每一次尝试都会写入真实账户,不同尝试之间无法重置,而且真实状态始终隐藏在屏幕背后。因此,你需要将系统重建为一个合成世界,并拥有其中的数据库:状态是真实的,也会真正发生变化,但这个世界可以安全地被破坏、快速重置,并且能够根据数据而不是截图进行评分。
我们所说的世界,由三个相互绑定的部分组成:环境(应用程序、它的状态,以及会改变状态的操作)、在其中设定目标的任务,以及根据事实基准对结果进行评分的验证器。社区如今已经很擅长构建这样的世界:流水线会搭建应用程序、填充初始数据、生成任务并附加验证器,由此产出数百个环境和数千个可验证的任务。这项工作建立在这些进展之上。然而,当世界变得充足之后,其内部结构就会成为瓶颈:状态能否在不同用户和页面之间保持一致,工作流是否保留其依赖关系,某项薄弱能力是否会以足够多的形式反复出现以实现泛化,以及成功是依据结果还是外观来判断。
Echoverse 所检验的核心判断是:真正的杠杆与其说来自增加世界的数量,不如说来自一个持续改进现有世界的循环。它将构建环境和训练模型视为同一个过程,而不是两个阶段:让模型在世界中运行,找到它失败的地方,针对这些地方让世界、任务和验证器变得更忠实或提出更高要求,使用更清晰的信号进行训练,然后重复这一过程。普通的微调只会改进模型。而在这里,同一次经过评分的运行不仅会衡量模型,也会改进对它做出判断的世界。因此,静态基准最终会趋于饱和,而这个循环产生的收益则会持续复利增长。
有三个杠杆让这个循环持续有效,其中没有一个是原始环境数量。深度:为重要领域构建行为高度忠实的世界,包括封闭和专有领域。能力定向:围绕模型持续失败的特定交互构建范围狭窄的世界。共同演进:在每一次经过评分的运行中改进环境、任务和验证器,而不仅仅是改进模型。
开放且无需登录的网站看起来似乎可以消除对合成世界的需求,但由于另一个原因,它们并不是理想的训练场:它们不会保持静止。页面会重新设计,列表内容和日期会不断更新,网站托管方还会限制或阻止自动化流量。因此,依赖这些网站的基准会不断漂移,而且任意两次运行面对的都不再是同一个网站。偶尔进行的评估或许可以承受这种变化,但训练无法承受,因为训练会将同一项任务运行数千次,并且每次都需要面对同一个世界。合成世界在时间和数据上都是固定的:日历不会移动,种子数据不会频繁变化,一项任务在第一千次 rollout 中与第一次具有相同的含义。我们牺牲了一点表层真实性,换来了一个完全受我们控制的世界。
控制只是最低要求。一个世界可以完全稳定,却依然空洞。因此,真正值得投入训练时间的是深度:衡量标准不是页面数量,而是它能多忠实地保留工作的因果结构。以下五项属性构成了衡量标准:行为保真度(控件、权限和错误遵循产品逻辑);状态一致性(发送的消息会出现在接收者一侧,取消的会议会从双方日历中清除);工作流深度(前期选择会限制后续可能发生的事情);权威验证(依据应用程序状态,而不是像素);领域价值(该工作流值得改进)。在最重要的系统中,难点存在于权限、共享状态和审计历史之中,而这些恰恰是浅层克隆会跳过的结构。高于这条标准线,更多环境会增加多样性;低于这条标准线,它们只会增加噪声。
Echoverse 是一条具有两类输出的统一流水线:完整的领域世界,用于保留工作流深度;能力世界,用于对某一种诊断出的交互进行变化扩展。二者都依赖于这样一个事实:我们拥有底层数据库,因此成功与否取决于应用程序自身的状态,而不是模型对截图的解读。
这条流水线会将少量种子场景扩展成一份规范,再把该规范编译为关于路由、状态和行为的机器可验证声明。只有完成这些工作后,它才会生成应用程序:在 React 界面之下使用 FastAPI 和 SQLite 后端。一个刚生成的应用程序只是假设,还不是世界:构建器会针对正在运行的环境检验每一条声明,持续修复数据库、后端或前端,直到所有声明全部通过,然后写入一份就绪记录,区分硬性阻塞项和提示性风险。仍存在未解决阻塞项的世界不会进入下一阶段。这里的深度并不是提示词中的承诺,而是该世界已经被证明能够通过的声明清单。
能够顺利完成构建的世界仍然不是训练数据。我们会根据实时数据库重新校准每项任务,从真实存在的实体中提取目标,然后将每个目标交给一组分析器:其中的实体是否真实,目标是否合理,难度是否与实际工作相符,以及最严格的一项检查——驱动真实 UI 的 AI 智能体能否完成它?最后一项检查会在浏览器中运行,从而在模型看到任务之前,发现那些无法通过界面完成的目标。生成的目标是一项声明;在真实应用程序中成功完成它才是证明。
每一次失败都会转化为一个问题,并按照必须修改的层级进行标记:数据库、后端、前端、任务文本或验证器。特定于层级的修复器会应用修复,在运行中的应用程序上重新检查,并在修复导致回归时将其回滚。该循环会持续依据数据库事实基准重新评分,直到通过率不再上升;每一项最终保留下来的任务在导出时,都会携带用于对其进行评分的确切检查。这些任务通过同一个流程转化为训练数据:GPT-5.4 解决每项任务,验证器保留通过事实基准检查的轨迹,这些轨迹构成了下文所有实验所使用的监督微调(SFT)数据。
构建世界和扩充语料库并不是两个阶段,而是同一个循环:大多数缺陷都属于世界,因此我们会在每次迭代时重新确定环境版本。更困难的任务会暴露世界中的缺口,而更稳健的世界可以承载更困难的任务,因此每一轮都会让两者同时变得更强。
每个任务都配有自己的答案标准,这是由 SQL 查询在生成时从真实数据库中获取的一个值或状态变化,通过构造保证其正确性,并在代理完成后重新验证。读操作按与存储值的语义等价性评分($288 与 $287.62 视为通过);写操作按实际的数据库前后变化评分,所以声称一张工单已关闭只有在数据行确实发生了改变时才算通过;读写操作则取两者中较低的分数。这种评分方式难以作弊、基于事实核查而非人工标注,且在 EchoStay 订单、EchoForge 工单和 EchoBank 转账中的评分标准完全一致。
在公开基准测试中最难涉及的,往往是工作最繁重的域名:那些私有的、专有的系统,其难度不在用户界面布局,而在于权限、共享状态和历史记录。一个忠实的克隆必须重现这些特点。关键不在像素,而在于一个操作的后果能否跨越多个屏幕和用户传播,使得任务能够运行真实的工作流,并根据其留下的状态进行评分。
十个 Echo 域名涵盖了通讯、技术工作、受管制的记录、社区、媒体和旅游。在存在丰富公开数据集的地方,我们以其为基础构建:EchoStay 以 InsideAirbnb 为数据种子,其房源、房东、评论和便利设施都是真实的而非虚构的;EchoForum 建立在一个包含 255 万条评论的公开论坛语料库上。在数据不存在的地方,如邮件、日历、银行和健康记录,我们通过种子生成管道在严格约束下创建初始状态,确保数据密集且内部一致,而不仅仅是少数几行占位符数据。
正是这种累积的状态让操作的后果能够跨越多个屏幕和用户。EchoStay 中的一个订单在约 87 条路由和 23 张数据库表中流转,经历搜索、列表、可用性和支付,但始终没有单一的确认屏幕;EchoMail 中的一条邮件线程从草稿、通过发送、回复到标签状态都保留了用户意图;EchoCare 订单为每项变更写入审计日志。这些任务之所以成本高昂,是因为它们通常涉及五到二十个步骤,且只有当底层状态真正改变时才算完成。
并非每个弱点都代表缺少一个域名;有些是由代理无法可靠操作的单个控件引起的。想象一个代理在预订旅行:它搜索、筛选、打开正确的列表,然后在日期选择器处卡住,无法将"三月第二周"转化为对陌生日历的正确点击。再构建一个订房网站无法解决这个问题。这项技能只有在该控件本身以足够多的形式出现时才能真正学到,而日期选择器和嵌套筛选在真实网络上无处不在,以百余种方式呈现,这正是单个深度应用无法提供的多样性。
因此,我们隔离了这个控件并扩大了交互范围,跨不同布局、状态和约束大规模生产它,然后为每个变体生成基于事实的任务。日期选择器世界将一个日期控件呈现为跨 10 个场景的六个核心小部件,并保留 10 个新的未见过的控件,包括日历热力图、滚动轮和会计季度选择器;其最难的任务将文本转录转化为推理,将"2026 年 1 月的最后一个星期四"或"开始日期之后的 10 个工作日"解析为一个确切的、控件可达的日期。嵌套过滤世界涵盖了 20 个小部件家族的变体,并保留了 9 个复合面板家族作为分布外测试集,通过应用自身的逻辑而非外观判断每个提交是否实现了请求的筛选条件。
更多的轨迹不会自动产生更多的训练信号。关键是深度:一个实验是否将任务贯穿真实工作流的依赖步骤,而不仅仅是隔离地排练单个操作。两个实验从相反的两端说明了这一差异:一个在整个域名上更深入,另一个缩小到单个失效的技能。
浅层世界是最便宜的选择。它构建迅速且看起来令人信服,但它只排练隔离的、看起来正确的点击。在这样的训练下,模型会学到错误的反射反应,超越步长限制、陷入死循环、重复无效操作,因为简单的世界中没有任何东西曾对这些行为进行过惩罚。深层世界成本更高,但其轨迹承载了能够泛化到实际网站的依赖结构。
为了隔离这一点,我们选择了两个真实的 WebVoyager 域名 Allrecipes 和 Hugging Face,并比较了三个检查点:基础模型,以及在针对这些域名构建的浅层世界和深层世界轨迹上训练的两个模型。浅层世界提出简短的、自成一体的任务;深层世界提出跨依赖步骤运行的任务,其中早期的操作改变了状态、可用选项和后续的验证方式。两者都给模型相同的域名暴露,所以唯一的变量是深度,评估使用这些域名在公开 WebVoyager 基准上的任务,在任何训练环境之外的真实网站上运行。
在 Allrecipes 上,浅层世界拉低了模型的表现,从 80.0% 下降到 75.0%;在 Hugging Face 上则保持不变,都是 48.0%。只有深层世界改进了两者,将 Allrecipes 提升到 85.0%,将更具挑战性的 Hugging Face 部分提升到 65.0%。在暴露程度相同的情况下,差异源于深度:深层模型循环次数更少,在 37 个 Hugging Face 任务中,耗尽步长预算的任务从 15 个减少到 9 个。区分两者的不是模型看到了多少,而是它看到的内容是否保留了工作的实际结构。
日期选择器和嵌套过滤世界精准钻研我们的评估所指出的控件,这两项技能相互强化。日期选择器训练提升了日期选择器评估(分布内从 60.0% 到 82.6%,保留测试布局从 34.0% 到 54.0%);过滤训练提升了保留测试过滤器从 62.8% 到 84.1%。这些在未训练过的表单上获得的改进表明模型学到了一般规则,而非仅仅拟合了布局。这些技能相互促进而非竞争:单独训练其中任何一个仍会提升另一个,而两者都训练是每个数据集分割上的最优方案。对比作为前沿参考的 GPT-5.4,这个组合模型已经在嵌套过滤上略占上风,并缩小了大部分日期选择器分布内的性能差距,仅在保留测试日期选择器上明显落后。这个规则也泛化到了开放网络,在该模型未见过的网站上,Online-Mind2Web 的成绩从 29.5% 提升到 34.3%。
本部分其余内容中,我们运行三个模型的对比。Base 是仅给予少量合成轨迹的 Qwen3.5-9B 模型,足以将通用模型对齐到浏览器动作空间。Our model 是在完整合成语料库上训练的相同 90 亿参数网络。GPT-5.4 是一个规模大得多的前沿模型,作为参考上限被包含在内。
这项技能能在开放网络上存活吗?我们的模型(未做任何调整)在 WebVoyager 和 Online-Mind2Web 上进行了评估,这两个基准都从未参与其训练。它们与我们构建的内容几乎没有重叠:两者都由开放的公共网站和以阅读为主的浏览主导,而我们的世界训练的是需登录的、写入密集的工作流。大幅跳跃从来不是目标;方向才是关键。未调整的模型在两个基准上都超过了基础版本,WebVoyager 从 66.5% 到 71.5%,Online-Mind2Web 从 40.5% 到 43.4%(不使用 BrowserBase 时为 50.9% 到 55.6% 和 29.5% 到 37.2%),通过 BrowserBase 报告,原因是托管浏览器消除了数据中心的机器人阻止和速率限制,这些限制本会压低任何代理的分数。由于混合数据中没有真实网络数据,这是泛化而非记忆化。
温和的真实网络收益是一种覆盖效应,而非上限:当针对真实域名时,它会增长。EchoForge(我们的代码托管世界)与 GitHub 是同一类型的应用,而 GitHub 是 WebVoyager 测试的真实网站之一。将 EchoForge 加入训练混合,真实 GitHub 的分数从 58.5% 提升到 63.4%,总体真实网络分数也上升(WebVoyager 从 50.9% 到 52.9%,Online-Mind2Web 从 29.5% 到 31.1%)。平均值简单反映了我们构建的大部分内容位于这些基准完全未触及的域名中。
我们构建的这些域名(其中大多数是私有的且需要登录),讲述了截然相反的故事。在全部十四个域名中,模型的表现接近翻倍了基础版本,从 36.5% 到 67.1%,而基础版本最弱的地方增长了三到九倍,EchoCalendar、EchoML、EchoChat、EchoCare、EchoForge 和 EchoForum 都从个位数或低两位数提升到四十到六十多。这使得 90 亿参数模型与 GPT-5.4 的平均表现相差仅 14 个百分点(67.1% 对 80.7%)。在 EchoMail、EchoBank 和两个嵌套过滤上,它彻底匹配甚至击败了规模大得多的前沿模型,在分布内日期选择器上仅落后几个百分点。让 90B 模型如此接近前沿水平的不是规模,而是深度、有针对性且可验证的训练数据——正是这个工厂被设计来生产的。
我们分别扩展了两个维度:一是在固定的一组环境中增加轨迹数量,并从每个环境中抽取相同数量的轨迹;二是增加不同环境的数量。两者的表现并不相同。在相同世界中增加轨迹,仍会持续提高域内平均成绩,尽管收益不断递减;而向真实 Web 的迁移则完全趋于平缓:当轨迹数量从 6,400 条增加到 20,000 条时,WebVoyager 基本持平(从 54.8% 升至 55.6%),Online-Mind2Web 反而有所下降(从 40.1% 降至 37.2%)。由于每个数据点都从各个世界中等量采样,这并非采样方式造成的假象:每个环境所能提供的可迁移技能是有限的;一旦模型将其充分提取出来,更多 rollout 主要只是在打磨它已经掌握的能力。
扩展环境数量则产生了相反的结果。随着环境广度增加,平均成绩持续上升,而且 WebVoyager 只有在使用完整环境集合时才达到最佳表现。对于泛化能力而言,关键杠杆是多样性,而不是数据量。模型之所以能够适应从未见过的网站,是因为它接受了多种工作类型的训练,而不是因为它反复看到了更多同一种工作。
即便如此,无论在哪个维度上,规模本身都不是关键杠杆。将大量轨迹预算花在浅层世界上,或者按照错误答案进行评分,只会改变合成环境中的数字,却无法改善真实 Web 上的表现。真正能够迁移的是每条轨迹中包含的内容:保留真实工作流的深度、针对智能体薄弱操作进行训练的目标设计,以及以数据库为依据、确保信号真实可靠的评分机制。
智能体获得的分数从来都不只取决于模型。它来自一个相互耦合的技术栈:智能体、环境、任务和验证器。零分可能意味着智能体失败了,也可能意味着控件损坏、请求的状态无法实现,或者验证器检查了错误的内容。如果把每一个零分都当作模型的监督信号,就会让模型针对本应修复的缺陷进行训练。因此,我们把每一次经过评分的 rollout 都视为对整个技术栈的测试,并让整个技术栈共同学习。随着损坏的控件和连接被修复,环境得到改善;随着目标被重新锚定并提高难度,任务得到改善;当验证器与数据不同步时,我们也会修复验证器。只有经过这三道检查后仍然存在的失败,才会成为模型的训练课程。
EchoStay 清楚地展示了这一点。它的失败源于世界,而不是智能体:一个房客人数控件悄无声息地失效了,导致预订任务无法正常完成,因此即使预订操作本身正确,也永远无法被系统记录。修复该问题后,这些预订任务中具备完成条件的比例从 48% 提高到了 78%,原本受阻的 24 个任务中有 15 个得以恢复。同样的循环还会在其他环境中发现不同类型的问题:EchoForum 需要修复前端并加快页面加载速度,这使一组包含 37 个任务、原本全部失败的测试集提升到成功解决 36 个;EchoChat 的验证器已经与数据不同步,重新对齐后,可评分任务的比例从 34% 提升到了 99%;EchoCare 需要修复一处状态连接;EchoForge 的后端逻辑已经存在,但缺少能够触发它的 UI 控件。
随着世界变得更加完善,模型的表现也随之提升。在 EchoStay 上运行两轮这一循环后,使用其语料库训练的模型成绩提高了一倍以上,从 16.2% 上升到 38.5%,弥补了它与 GPT-5.4 的 50.4% 之间三分之二的差距。模型并不是唯一会学习的部分;当它下方的所有组成部分都开始学习后,模型才是那个能够产生复利效应的部分。
在受控环境中,修复世界与训练模型之间的界限很容易把握,因为两者都可以被检查。真实 Web 则抹去了这条界限:任务执行过程中不存在一个可以修复的世界,因此当某个操作没有产生任何效果时,正确性完全取决于智能体能否注意到这一点并选择其他做法。这是一个世界最终必须教给智能体的能力,也是现实 Web 最不宽容的地方。
到目前为止,所有结果都来自模仿:9B 模型复制 GPT-5.4 成功完成的轨迹。然而,模仿存在一个固有上限:一条干净的演示轨迹永远不会展示如何从错误中恢复,也不会展示何时应该停止,而这两类失败恰恰最容易让实际环境中的智能体崩溃。强化学习直接优化我们评分的结果,使模型能够从自己的轨迹中学习,而不是仅仅向教师学习。
但是,强化学习需要一个能够大规模驱动的强化学习环境(RLE)。每次 rollout 都需要重置到已知状态,需要足够的吞吐量以支持并行采样,还需要可信的奖励信号;一次训练会将同一个任务重复执行数千次。真实 Web 并不是 RLE:它无法重置,因此没有两次 rollout 会从相同状态开始;远在达到 RL 所需规模之前,它就会限制或阻止自动化流量;而且它不提供 ground truth,只提供一张必须由另一个模型判断的截图,因此奖励信号的噪声与评判模型一样大,策略最终学到的会是评判模型的盲点,而不是任务本身。Echoverse 在构造上就是一个 RLE。每个世界都是一个自包含应用,我们可以为每次 rollout 创建快照并重置状态、并行运行,还能根据世界自身的数据库进行评分。因此,曾用于筛选 SFT 数据的验证器可以返回有依据、可验证的奖励,而不是从像素中推断出的奖励。用于评测智能体的同一批世界,也可以用来训练智能体。
我们以 SFT 模型作为初始策略,在五个世界中运行 RL:EchoBank、EchoForge、EchoForum、EchoStay 和 EchoTunes。任务来自每个世界中难度较高的一端,即 SFT 策略仍有提升空间的部分;每次更新都会使用多条经过评分的 rollout。每条 rollout 会获得两种奖励:一种是来自以数据库为依据的验证器的轨迹奖励(LLM 评判模型为 GPT-4.1),另一种是来自多模态评判模型的稠密逐步奖励,该模型会对每一步的截图进行评分(GPT-4.1 vision)。除 SFT 数据之外,我们在每个世界中使用约 100 个任务进行训练,共训练两个 epoch。在每个世界包含 25 个任务的留出测试集上,评判得分从 58% 提升到了 69%。教师教会了它该做什么;世界则教会了它何时停止、何时恢复,以及何时放弃。
世界不再是一个供你评分的固定基准,而是一个持续改进的训练界面:同一次经过评分的运行既用于衡量模型,也会进一步完善负责评判模型的世界。深层世界实现了有效迁移,而浅层克隆反而拉低了能力;用一百种形式重建同一个控件,教会了一项能够迁移到真实 Web 的技能;协同演化同时推动了双方的发展;在相同世界中进行强化学习,则让智能体突破了模仿的上限,提高了留出任务上的表现,并减少了浪费的操作步骤。
持久的优势并不来自规模最大的合成网站库存,而是来自这样一座工厂:它能诊断智能体尚不具备的能力,构建或修复能够教会智能体这些能力的世界,保护已经获得的能力,然后再次运行这一循环。下一阶段将在三个方面同时扩展。第一,为公共基准无法涵盖的封闭领域构建更多深层世界。