ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

如何用e2e回放缓存把AI E2E的CI成本降低九成?智能体测试降本完整实战指南

如何用e2e回放缓存把AI E2E的CI成本降低九成?智能体测试降本完整实战指南 如何用e2e回放缓存把AI E2E的CI成本降低九成智能体测试降本完整实战指南【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2eAI E2E 测试框架 e2e 让智能体用自然语言驱动应用但每次测试都要调用大模型CI 成本随提交次数直线上涨。本文介绍 e2e 内置的回放缓存replay cache把已验证的智能体操作录制下来下次运行直接回放、零模型调用UI 变了才自动切换回智能体接管。跟着本文三步走你可以把智能体测试的 CI 成本压下来一个数量级。为什么 AI E2E 测试在 CI 里这么贵用自然语言驱动智能体测试很爽但账不好算每次agent.act()都是一次模型调用截图、观察树、提示词token 哗哗地烧CI 比本地跑得勤得多每个 PR、每次 push 都要跑一遍成本 提交频率 × 模型调用次数重试和并发会放大账单CI 默认 1 次重试、多分片并行失败重跑又是一轮调用。好消息是智能体走过的路大多数时候是重复的。同一个加入购物车步骤今天让 AI 做了一遍明天完全可以照着重放一遍——这正是 e2e 回放缓存的设计初衷。回放缓存的工作原理先验证再白嫖回放缓存遵循一个简单原则只有被断言验证过的操作才会被录制。await agent.act(add one item to the cart); await expect(screen.getByRole(status)).toHaveText(1 item); // ↑ 后面的断言通过这一步的动作才被记录完整流程分四步检查起点回放前确认应用还在录制时的同一路由上路径里的 id、时间戳会自动当作占位符/orders/42和/orders/7算同一路由逐个回放控件操作按角色、名称、测试 id 和上下文重新找到控件并重复动作验证终态检查最终路由和步骤产生的界面变化新出现的控件、状态改变动态文本如日期、id 不参与比对零模型调用结束或带着回放为何停止的记录交还给智能体继续。运行摘要会直接告诉你缓存战果AI 4.1k tokens · 2 model calls · anthropic/claude-sonnet-4.5 Cache 4 replayed · 1 handed off · 1 missed三种结果一目了然replayed纯回放省钱、handed off回放中途 UI 变了智能体接管、missed全新步骤现场执行并录制。降本实战三步把 CI 账单打下来第一步提交回放缓存让 CI 直接命中本地跑一次测试缓存就生成了但e2e init默认把.e2e/cache/加进了.gitignoreCI 每次都是白纸。改法很简单从.gitignore中删掉.e2e/cache/这一行把.e2e/cache/目录提交进仓库像对待测试数据一样在 PR 中评审变更。CI 端默认就是read-only模式——只回放、不写新记录完全安全不需要额外配置。这样 CI 每次运行已验证的步骤全部零模型调用直接回放。第二步用 unique() 堵住缓存漏洞缓存的 key 包含测试名、目标、指令和参数。如果你的测试每次生成时间戳或新邮箱当参数key 每次都变缓存永远 miss。用unique()把这类值标记为槽位回放时自动替换成新值const name E2E ${Date.now()} Company; await agent.act(create a company named {name}, { params: { name: unique(name) } });仓库里就有一个现成范例保存地址的流程中地址标签每次运行都不同但标记unique()后第二次运行即可零模型调用完整回放参见 apps/web-benchmark/tests-agent/unique-cache.e2e.ts。 原则会改变流程走向的选择如套餐名保留为普通参数每次不同的数据时间戳、随机名一律套unique()。第三步--strict-cache 让过期录制响起来这是最容易被忽略的省钱点。默认情况下一条提交的录制过期后智能体会悄悄接管——测试照样通过但 CI 每次都要付模型费直到有人手动重录。加上--strict-cache过期录制会以REPLAY_STALE直接失败且不做任何模型调用把问题暴露在最便宜的时刻CI1 npx e2e run --strict-cache修复也简单本地用read-write模式重跑一次提交更新后的录制即可。这个开关同时写在配置文件里cache: { strict: true }即可长期生效。三种缓存模式速查表模式回放录制适用场景read-write✅✅本地开发默认read-only✅❌CI默认安全只读off❌❌用--no-cache排查缓存导致的失败想让 CI 也更新录制在配置中显式写cache: read-write即可。想本地清场一条命令npx e2e cache ls查看条目、npx e2e cache stats看体积、npx e2e cache clear全部清空。降本清单照做即可每个agent.act()后面紧跟定位器断言expect(screen.getByRole(...))验证结果——没验证的步骤不会被录制把.e2e/cache/移出.gitignore并提交CI 自动以read-only命中动态测试数据套上unique()避免 key 漂移导致全 missCI 命令加--strict-cache让过期录制快速失败而不是悄悄烧钱加--max-failures n部署炸了时及时止损别给剩下的每个智能体步骤都付模型调用费每次看运行摘要里的Cache N replayed回放率就是省钱率。延伸阅读缓存机制完整文档含回放匹配规则、失败原因排查表docs/cache.mdxCI 工作流配置与智能体步骤门禁docs/ci.mdx缓存配置参考mode、dir、strict、自定义 storedocs/reference/config.mdx单步缓存会话的核心实现key 派生、回放尝试、stage-or-evict 决策packages/e2e/src/agent/step-cache.ts回放动作与终态校验packages/e2e/src/agent/replay.ts一句话总结让 AI 负责第一次让缓存负责每一万次。把验证过的操作沉淀成可提交的录制资产你的 CI 账单就会从每次提交付模型费变成只在新 UI 出现时付——这就是 e2e 回放缓存给出的智能体测试降本答案。【免费下载链接】e2eNext generation e2e testing framework for web and mobile apps.项目地址: https://gitcode.com/GitHub_Trending/e2e6/e2e创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表