我让Agent连续跑了三天测试用例,它自己学会了怎么写

简介: 本文揭秘测试智能体如何通过AgentLoop实现“经验自进化”:不改提示词、不重训模型,仅靠清洗执行轨迹(Trace→Trajectory)、挖掘有效路径、注入经验(Skill+CLI),使页面元素定位成功率逐日提升。实测Playwright自愈定位、接口用例生成等场景,显著提升稳定性和复用性。

上个月团队在推测试智能体的落地,遇到一个很典型的问题:同一个页面元素定位任务,Agent第一天跑了12次才找对,第二天跑了8次,第三天只跑了3次。

我没改任何提示词,也没重新训练模型。

它自己学会的。

这件事让我认真研究了一下AgentLoop的经验自进化机制,以及它跟测试场景结合后的实际效果。今天把完整的链路和实操过程写出来。

先搞清楚一个事实:Agent的不确定性不是靠调参解决的
传统软件追求确定性——相同输入、相同环境下,系统给出稳定可预测的结果。AI Agent不是这样。

模型采样有随机性,上下文每次都不一样,任务规划路径可能完全不同。同一个问题连续跑五次,Agent可能选不同的工具、走不同的路径、给出不同的答案。一次评测通过,不代表下一次还能过。

这就是测试同学最头疼的地方。你不可能拿一个“今天能用明天不能用”的工具去跑CI。

AgentLoop的思路是:不确定性无法被彻底消除,但可以被持续约束。

约束的方式就是经验。Agent每次执行任务都会留下完整的执行轨迹,成功路径里有有效的方法,失败路径里有反复踩的坑。这些轨迹被清洗、提炼、挖掘之后,变成可复用的经验,在下一次任务执行时注入到上下文里。

Trace到Trajectory:数据清洗比模型调优更重要
原始Trace的数据量非常大。里面包含大量基础设施Span、重复消息、跟决策无关的日志。如果直接拿原始Trace做长期存储和分析,成本高不说,真正有价值的信号会被噪音淹没。

AgentLoop的做法是先清洗再组装:把原始Trace去噪,只保留任务目标、行动步骤、工具调用、观察结果、错误信息、恢复过程和最终结果,形成标准化的Trajectory。

内部复杂样本里,清洗后的Trajectory可以降到原始Trace的4%到6%的数据量级。

这个清洗环节对测试场景特别关键。 测试执行的Trace里充斥着大量重复的页面快照、网络请求日志、截图。但真正有价值的信号是:Agent在哪个步骤选错了定位策略、哪个断言写得太脆弱、哪次工具调用超时后选择了错误的恢复路径。

清洗后的Trajectory让挖掘算法能直接分析Agent的决策过程,而不是在日志片段里大海捞针。

经验怎么进入下一次执行:Skill + CLI
经验生成之后,不需要重新训练模型,也不需要重建Agent。

在客户端安装Recall Skill,通过CLI配置经验库和访问凭证。安装完成后,Agent在任务开始、调用关键工具、遇到错误或准备交付时,会自动检索相关经验,把召回结果作为参考上下文注入当前任务。

这种方式有三个好处:

接入快,不改模型权重
经验更新后立刻生效
经验出问题可以快速下线或限制范围
而且经验是跨模型、跨Agent框架共享的。换模型或换框架之后,业务经验不用从零积累。一个Agent验证过的有效路径,其他Agent也能召回;一个团队踩过的坑,其他团队可以提前避开。

测试场景实操:Playwright MCP + 自愈执行
说了这么多理论,落到测试场景里到底怎么跑?

我拿一个Web登录功能试了一套组合方案:用Playwright MCP驱动浏览器,配合自愈引擎处理定位失败。

第一步:配置Playwright MCP

Playwright MCP的核心是把浏览器的操作封装成AI可以调用的工具,同时把页面状态(DOM树、网络请求、Console日志)转化为模型能理解的文本快照。

快照不是简单截取HTML,而是基于可访问性树精简过的,优先保留有ARIA角色、标签和交互属性的元素。

npm init -y
npm i @playwright/test
npx playwright install
第二步:写一个用例生成脚本

from rag_playwright import RAGCodeGen

rag = RAGCodeGen(index_path="./api_docs/swagger.json")
prompt = "测试登录功能:输入admin/123456,点击登录,应跳转到/dashboard"
code = rag.generate(prompt, framework="playwright")

with open("tests/login.spec.ts", "w") as f:
f.write(code)
生成的代码大概长这样:

test('login test', async ({ page }) => {
await page.goto('/login');
await page.fill('#username', 'admin');
await page.fill('#password', '123456');
await page.click('button:has-text("登录")');
await expect(page).toHaveURL('/dashboard');
});
第三步:注册自愈插件

import { healPlugin } from 'playwright-auto-healing';

export default {
use: { ... },
plugins: [healPlugin({
maxHealingAttempts: 3,
llmModel: 'gpt-4',
healSelectors: ['css', 'text', 'aria', 'xpath']
})]
};
跑测试的时候加上自愈参数:

npx playwright test --heal=auto --trace=on
当定位失败时,控制台会输出类似这样的信息:

[Healing] Failed to find '#submit-btn', trying AI locator...
→ new selector: 'button[aria-label="提交"]'
✓ healed in 2.1s
这才是经验自进化在测试场景里最直观的体现。 第一次定位失败,自愈引擎尝试了CSS、文本、ARIA等多个维度,最后用aria-label定位成功。这次成功的修复路径被记录为Trajectory,经过挖掘后变成经验。下次遇到类似的定位失败,Agent会优先尝试aria-label方案,而不是从头遍历所有选择器。

接口测试场景:Swagger + Skills拆解
Web端跑通了,接口端能不能复用同一套思路?

能,但需要换一种拆法。

Swagger文档写得很规范,路径、参数类型、必填属性、响应结构都清清楚楚。但直接在CI里跑通的测试用例,需要的上下文远不止这些。

合法的业务数据示例(userId必须是数据库里真实存在的)
边界值规则(age范围1-120,超过400报错)
调用链路依赖(先调登录拿token,再调业务接口)
断言规则(响应里code=0时data不能为空)
Swagger里一个都没有。测试人员写用例时,脑子里调用了两类知识:技术规范来自Swagger,业务经验来自规则库、历史缺陷、领域知识。AI生成用例失败的根本原因就是:模型只看到了前半部分。

实际可行的工程路径是:用RAG把业务规则注入,用Skills把用例生成拆成可编排的原子能力。

我把用例生成拆成了三个独立Skill:

参数构造Skill:输入参数名、类型、约束,输出一组合法的测试数据值。对于依赖外部数据的参数,自动插入获取逻辑。比如userId不能是0,它自动从数据库里拉一个有效值。

依赖链处理Skill:分析接口的前置条件,生成setup代码。需要登录态就自动生成调用登录接口并提取token的代码块。

断言生成Skill:根据响应schema和业务规则,生成状态码断言、字段存在性断言、值范围断言。

每个Skill有独立的prompt模板,调用时只关注自己的职责。不让LLM一次生成整个测试文件,任务太复杂容易出错。

完整的经验闭环长什么样
把Web端和接口端的链路串起来,整个飞轮是这样的:

观测 → Agent执行测试任务,产生Trace → 轨迹 → 清洗组装为Trajectory → 挖掘 → 从多个轨迹中发现有效路径和失败模式 → 经验 → 生成结构化经验 → 召回 → 下次执行时注入上下文 → 运行 → 产生新的Trace

AgentLoop在内部复杂样本里验证过效果。StarOps实验中平均工具调用次数下降25.1%,有害事件下降27.8%。SWE-bench Verified通过率从67.2%提升到74.4%。

但真正值得关注的不是单次成功率,而是同类任务多次执行的稳定性。如果平均准确率提高的同时质量下限被抬高、运行波动逐步缩小,Agent才算从“偶尔做对”走向“可以稳定上线”。

企业衡量经验库的有效性,应该同时看这几个指标:平均任务成功率、首次完成率、同类任务多次执行的波动范围、失败模式的集中度、人工接管率和返工率。

落地时踩过的坑
第一,Trace接入方式要提前规划。 AgentLoop支持多种接入方式——探针、OpenTelemetry、Pilot、eBPF。如果你的Agent不方便改代码,可以用eBPF从系统层面采集。但不同接入方式采集到的数据粒度不一样,影响后续经验挖掘的质量。建议先跑通一条链路再扩展。

第二,不是所有任务都适合做经验挖掘。 一次性的、低频的测试任务,积累的经验样本太少,挖掘出来的规律没有统计意义。高频回归、多版本迭代的测试场景才值得投入。

第三,经验注入不是Token一定下降。 有些任务为了获得更高成功率,可能需要使用更多上下文。合理的目标是在质量护栏下持续优化单位成功成本,而不是单独追求最低Token消耗。

第四,经验库需要版本管理和权限控制。 不同业务线的经验应该隔离,通用经验可以跨Agent共享。AgentLoop支持按AgentSpace和经验库做权限边界。别把所有经验塞进一个池子里,召回的时候噪音太大。

最后说一句
Agent自进化不是让模型变聪明,是让Agent在当前任务中复用真实执行验证过的方法。

RAG提供业务事实,Memory提供会话背景,Skill提供可执行能力,经验自进化提供行动经验。这几个能力协同工作,Agent才能从“能用”走向“可持续上线”。

对测试团队来说,这意味着智能体不再是一个“演示完就吃灰”的工具。它跑得越多、经验越丰富、定位越准、成本越低。用的第一天和用的第三十天,效果完全不一样。

相关文章
|
8天前
|
人工智能 API 内存技术
刚刚 DeepSeek V4.1 Flash 开启内测,1 分钟教你用上!
刚刚 DeepSeek 内测群发布了 DeepSeek V4.1 Flash 中间版本内测的消息,这次的模型采用了新的结构,原生支持多模态、能力更强、速度更快、且成本更低。
1832 14
|
7天前
|
人工智能 自然语言处理 安全
阿里云千问办公 QwenWork详细介绍:产品核心能力、典型场景、价格及常见问题解答
千问办公是阿里云推出的一站式AI办公平台,主打"不止于对话,更注重交付",依托通义千问旗舰大模型,用户一句话即可完成数据分析、PPT生成、视频剪辑等复杂任务,直接输出可用成果。产品深度打通钉钉生态与企业OA,覆盖桌面端、网页端,提供企业标准版198元/人/月等多档订阅方案,新用户注册即赠2000积分,适配工程师、HR、财务等多职业办公场景,成为能动手干活的"全能AI同事"。
|
13天前
|
网络协议 Linux iOS开发
【2026实测】Wireshark下载+安装+汉化+使用教程(图文版,巨详细)
Wireshark 是一款免费开源的网络协议分析工具,可实时捕获、解析并可视化数据包,助你诊断网络故障、分析通信协议(如HTTP、DNS、TCP等)。支持Windows/macOS/Linux,含中文界面,新手入门便捷。(239字)
|
12天前
|
人工智能 运维 BI
阿里云千问办公QwenWork深度解析:基于Qwen3.8,六大核心能力重构企业全自动化工作流与计费选型指南
传统AI办公工具大多停留在对话问答、文档摘要、简单文案生成层面,只能完成单点碎片化任务,无法自主拆解复杂业务流程,很难串联多工具、多文档、外部业务系统完成端到端完整工作交付。很多企业在落地AI办公的时候,需要组合多款不同工具,来回切换界面,手动复制粘贴中间结果,智能化改造落地门槛居高不下。千问办公QwenWork是整合多款智能体产品能力打造的一体化企业办公智能体平台,底层基座依托Qwen3.8大模型,打通桌面端Agent、云端Agent、企业协同Agent三种运行形态,不再局限简单问答,接收业务目标之后自主拆解任务步骤,调用各类工具,处理文档、表格、浏览器自动化、数据查询,直接输出可交付的办公
1655 3
|
7天前
|
人工智能
千问办公官网入口:阿里AI办公QwenWork产品页和免费网页端链接
千问办公官网含两大入口:一是网页端(qwenwork.cn),即开即用,支持浏览器直接访问;二是阿里云产品页 https://t.aliyun.com/U/JNKJuO 提供免费/付费版详情、功能介绍及使用指南。
|
9天前
|
SQL 人工智能 前端开发
QoderWake 1.0 正式发布:从桌面里的 Agent,到工作现场的数字员工
QoderWake v1.0正式发布:企业级数字员工团队平台。支持“一句话建岗”,预置10类特训岗位;Waker常驻钉钉/飞书群,@即响应、自动协作、跨任务记忆;具备定时/事件/API多触发方式与统一任务看板;已沉淀27.6万条记忆、12.3万项技能,助力组织实现人机协同增效。
800 2
|
7天前
|
缓存 测试技术 API
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
DeepSeek V4.1 Flash 内测不用申请,base_url 不变、改个模型名就能调,9/10 到期。本文讲清接入、计费限流与多模态注意点。
816 0
DeepSeek V4.1 Flash 内测接入:改个模型名即可调用(附代码)
|
14天前
|
缓存 数据可视化 开发工具
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
DeepSeek Harness 的更新分两层:本体更新(npx 自动最新、npm update -g、源码 git pull)与插件更新(插件市场点更新、命令行覆盖安装)。本文按「准备 → 更新本体 → 更新插件 → 更新后检查」四步走,覆盖新手常见疑问。
1649 1
DeepSeek Harness 怎么更新?dsh 更新完整指南:更新本体(npx、npm、源码)与更新插件两种方式
|
21天前
|
人工智能 自然语言处理 安全
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
本文聚焦阿里云2026年推出的三款自研AI办公产品,清晰拆解千问办公、Qoder Teams、Qoder CN的差异化定位与能力边界:千问办公主打职场全场景提效,支持自然语言指令一键完成PPT生成、数据分析等高频办公任务;Qoder Teams面向程序员团队,深度整合AI代码生成、团队协同与企业知识库能力;Qoder CN则专为金融、政务等强合规场景打造,实现数据不出境与VPC私有化部署。文章同步给出分场景选型指南与最新活动定价,帮助不同类型的企业按需组合产品,实现业务岗、研发岗与强合规场景的AI能力全覆盖。
3999 5
阿里云千问办公、Qoder Teams、Qoder CN区别与选择指南:模型能力、适用场景与最新活动参考
|
12天前
|
人工智能 自然语言处理 安全
阿里云AI数智鉴密:AI 生成内容如何拿到一张"防篡改的身份证"
隐形水印 + C2PA签名:让AI生成内容“持证上岗”。
1159 0