引子:当被测对象开始 “自己下单”

2026 年的 “双 11” 马上就快到了,做电商业务的同学一定在紧张准备。

因为如今的电商多了一群不会喊麦、不用轮班、也不会下播的 “导购员”——它们是被塞进购物 App、对话框和首页入口的 AI 智能体。京东把 AI 购物助手"东东"塞进了新版 App,淘宝把它藏进千问的对话框,抖音则给豆包留出了首页一级入口——用户点进去就能直接跳转下单。

购物的起点正被悄悄改写:过去你得先想清 “买什么”,再一页页翻结果、逐个比价;现在只需一句 “帮我找件适合秋天通勤、预算 500 元以内的夹克”,智能体就自己拆解需求、理解意图,从海量商品里挑出候选摆到你面前。更进一步的判断是:几年之内,相当一部分交易将不再由人发起,而是由 “人派来的那个智能体” 自主完成——商家面对的,不再只有人,还多了智能体。

“谁在下单” 变了,“拿什么做被测对象” 也就跟着变了。

传统业务里,环境不稳、结果难复现,行业已经磨出办法:环境容器化、IaC 一键重建、外部依赖 Mock、数据工厂备数。可当被测对象从 “行为确定的系统” 变成一个会说人话、自己拿主意的智能体,老办法集体失灵——被测对象本身非确定,你连 “分支” 在哪都不知道;真实店铺的库存、价格、布局天天在变,机器人检测与限流还随时打断一次运行,“同输入、同过程、同结果” 根本做不到;没有稳定基线,改动有没有效、要不要回归,全都无从判断。

于是大家卡在同一个死结上:用静态快照换可复现,就丢了实时性;把网店搬进实时环境求真实,又丢了稳定。真实性与可复现性,看上去只能二选一——而这恰恰是评测环境这块地基最要命的地方。

今天分享的文章要回答的正是这个问题:我们能否在不丢失真实店铺复杂性的前提下,让购物环境可以重复运行?

Shopify 工程团队的 ShopGym 给出的答案是:把真实店铺匿名化地转成自包含、可重置的沙箱商店,并据此自动生成覆盖七大类技能的购物任务,让开发者能在完全一致的条件下复现故障、横向对比智能体、验证改动是否真的有效。对测试人来说,这是一份 “当被测对象变成智能体,测试环境到底该怎么造” 的可落地答卷。接下来,我们就拆开它的两个组件,看 “真实” 和 “可复现” 是怎么被同时握住的。

一、ShopGym 要回答的问题

购物智能体可以帮你找到预算范围内的夹克、挑选合适尺码、查看退换货政策,并把商品加入购物车。这些看起来很简单,但训练和评估这些智能体却充满挑战——商品、价格和商店布局在不断变化,机器人检测与访问限流也可能中断运行;而手工搭建的测试商店虽然可控,却只能涵盖有限的购物场景。

这让我们不禁发问:我们能否在不丢失真实商店复杂性的前提下,让购物环境可重复运行?

我们打造了 ShopGym 来回答这个问题。它将真实店铺转化为自包含、可重置的沙箱商店,并根据这些商店的商品、功能和政策生成购物任务。开发者可以复现故障,在一致条件下对比不同智能体的表现,并衡量改动是否真的提升了性能。

这同样惠及商家。我们的目标是构建能够在各种规模和类别的商店中可靠运行的购物智能体——无论是服装、数字商品还是家居建材。这些环境为智能体提供了一个练习场,在与真实店铺交互之前,先在这里熟悉商品查找、理解店铺政策、完成购物任务。


图 1:ShopGym 高层架构

二、从真实店铺到可重复基准测试

ShopGym 通过两个核心组件来弥合这一鸿沟:

ShopArena(模拟层):通过匿名化的店铺规格和分阶段、经过验证的生成流程,将真实种子店铺转化为自包含的沙箱商店。

ShopGuru(任务层):基于这些店铺界面,合成覆盖七大类技能的基准测试任务,每个任务都紧扣店铺的商品目录、导航结构、政策信息和交互方式。

我们在 6 个沙箱商店(3 个基于合成数据、3 个基于真实数据)的 224 个任务上,通过基于图的结构分析和基于智能体的行为评估对该框架进行了验证。实验表明,合成商店保留了真实店铺的关键结构特性,且智能体在合成商店上的表现与其在对应真实店铺上的表现呈正相关。


图 2:生成的沙箱商店截图

你可以在 ShopGym 项目网站 上浏览生成的沙箱商店,示例涵盖服装、厨具、电子产品等多个品类。

三、ShopGym 的工作原理

ShopGym 在一个工作流中包含两个互补的框架:ShopArena 负责构建环境,ShopGuru 负责构建基准测试。两者都组织为小型的编码智能体集合,通过文件系统进行通信,并通过执行 - 验证循环来保证长周期生成的可靠性。

3.1 ShopArena:真实店铺探索

ShopArena 将店铺探索与沙箱生成解耦。一份店铺规格书连接这两个阶段,是它们之间唯一的接口。

探索从店铺的核心界面开始:首页、站点地图、搜索与购物车端点、公开商品目录、以及政策页面。规划智能体将这些素材拆分为专注的子任务。

探索阶段的规划智能体

对于每个子任务,ShopArena 会启动一个全新的规格智能体,配备浏览器工具。该智能体探索种子店铺、收集证据,并写入匿名化的片段。这些片段共同描述商店的三个部分:

设计规格:描述商店及其视觉风格

结构化属性:涵盖筛选器、导航、分页等功能特性

目录统计:包括商品数量与价格分布

在编写过程中,智能体会隐去品牌名、商品名、人名和绝对 URL。因此后续每一步都天然是匿名的,无需额外的脱敏处理。

随后,一个整合步骤将所有片段合并为一份完整的规格书。ShopArena 还可以合并来自多个种子店铺的规格书,从而让单个沙箱比任何单一来源都具备更丰富的结构和行为多样性。


店铺规格书:连接"探索"与"生成"两个阶段的唯一接口

由于规格书是可读的,基准测试创建者可以直接查看或编辑环境,无需回到源店铺。

3.2 ShopArena:沙箱生成

生成阶段只读取规格书,从不读取探索阶段收集的原始素材。ShopArena 首先利用规格书中的设计细节和目录统计生成虚构的商品目录,包括商品集合、商品名称、描述和图片。然后按固定顺序搭建店铺界面:站点外壳与首页、商品集合、商品详情页、购物车、搜索与筛选、政策页面,最后是集成联调。每一步都建立在前序步骤的稳定成果之上。如果某个功能出问题,ShopArena 可以修复它而无需重新生成整个店铺。

依据规格书生成的虚构商品目录

每一步都运行相同的执行 - 验证循环:

启动全新的执行智能体,读取当前代码、相关规格、商品目录和最新反馈

智能体编辑代码并运行轻量检查,包括类型检查与构建

基于规则的检查验证构建结果、所需路由和输出结构

视觉验证智能体启动店铺、在浏览器中检查页面,并为下一轮迭代编写反馈

每轮迭代都启动全新的智能体,可以保持工作上下文精简。源代码保存当前状态,规格书保存意图,最新报告描述下一步要修复的问题。

3.3 ShopGuru:任务生成

ShopGuru 利用每个沙箱商店的商品、导航、筛选器和政策来创建购物任务。部分任务测试单一技能,例如查找特定商品或定位退换货政策;另一些则组合多个步骤,例如打开商品集合、按颜色筛选、按价格排序,并将符合条件的商品加入购物车。

基于规则的生成器负责创建简单任务,而大语言模型(LLM)负责编写多步骤的购物旅程。自动化检查会验证每个任务中引用的商品、商品集合和筛选选项在店铺中真实存在。当任务未通过检查时,LLM 会收到反馈并进行修订。

四、对生成沙箱的评估

我们从两个维度测试了 ShopGym:首先对比真实商店与合成商店的结构,然后衡量智能体在两者中的行为表现。回顾一下,该研究覆盖了 6 个沙箱商店上的 224 个任务:3 个使用合成数据,3 个使用真实商品数据的孪生版本。

4.1 结构保真度

我们通过将页面和交互状态(如展开的菜单、购物车抽屉)映射为图结构,对比了真实商店与合成商店。左图展示了一个示例:节点代表界面状态,箭头代表在状态间移动的操作。中间图表对比状态与连接数量,右侧对比页面结构与可用控件。


左:状态图示例;中:状态数与连接数对比;右:页面结构与可用控件对比

合成商店拥有数量相近的独立状态和相当的页面复杂度。它们在状态间的连接数较少,主要是因为省略了外部链接、营销页面以及真实店铺中其他辅助路径。

4.2 行为一致性

为测试这 6 个沙箱商店,我们使用了两套评估系统:一套是基于无障碍树观察的 BrowserGym,另一套是同时使用截图的内部系统。每张图表对比了智能体在真实商店及其孪生版本上,在专注任务和多步骤购物旅程中的成功率。


真实商店与孪生版本在专注任务、多步骤购物旅程中的成功率对比

相近的成功率表明孪生版本保留了真实商店的有效难度。这种一致性在多步骤任务上最为明显,两套系统也都保留了模型排名。部分专注任务呈现较大差距(尤其是在内部系统中),因此孪生版本并非完全复现真实商店的难度。

五、朝着更强大的购物智能体迈进

ShopGym 证明了可复现性不必以牺牲真实性为代价。我们可以为购物智能体提供一个稳定的环境来试错、学习和改进,同时保留来自真实互联网的有意义信号。

你可以在 ShopGym 项目网站 上浏览生成的沙箱商店,示例涵盖服装、厨具、电子产品等多个品类。

接下来,我们计划在更广泛的零售领域生成更多沙箱商店,为每个商店创建更多任务,并支持覆盖更多购物旅程环节的新任务类型。我们的研究测试了生成商店和购物任务的质量,目前正在开展利用这些环境训练购物智能体的后续工作。

所有这些努力的共同目标,是将 ShopGym 从一个模拟与基准测试框架,转变为一个为商家和消费者构建更强大购物智能体的平台。

结语:这份实践对质效人意味着什么

它正面回答了一个老问题:真实性与可复现性,到底能不能兼得?ShopGym 的答案是"可以"——关键在于引入一层中间抽象(匿名化规格书),把真实店铺的复杂度固化成可读、可编辑、可重建的资产。对测试人来说,这比"哪个模型分高"更有参考价值。

它把"环境即代码"搬进了智能体场景:可重置沙箱 ≈ 可重建的测试环境;执行 - 验证循环 ≈ 环境自检与健康检查;ShopGuru ≈ 自动生成用例 + 用例有效性校验(防止用例引用了店铺里根本不存在的商品或筛选器,本质上是"定位器失效"问题)。这套组合不限于电商,凡是"被测对象是智能体、结论必须跨环境可比"的场景都能迁移。

它提示了瓶颈的位置:智能体测试卡住的地方,往往不是模型,而是环境。与其纠结一次评测拿了多少分,不如先把"能稳定重跑的考场"搭起来——有了稳定的基线,复现、对比、回归才谈得上。

一句话总结:先有可复现的环境,才有可信的结论。

参考资料

ShopGym 论文:https://arxiv.org/abs/2605.16116
ShopGym 开源代码仓库:https://github.com/agentic-foundation-modeling-research/shop-gym
ShopGym 项目网站:https://shopgym-research.github.io/
Shopify 工程博客文章:https://shopify.engineering/shopgym

文章首发于 TesterHome 社区微信公众号:
https://mp.weixin.qq.com/s/dmTn8AUPfczvvg1S0G8jgw


↙↙↙阅读原文可查看相关链接,并与作者交流