AI端到端自动化测试
视觉驱动的 Native Agent
AI端到端自动化测试
上个月分享AI的道法术器,其中有一个去年黑客马拉松的例子。感兴趣的同学比较多,所以分享一下思路。
用的端到端的原生多模态感知UI-Tars Agent,采用Prompt + Parser + VLM + Executor的Native Agent闭环架构。
一 为什么需要视觉驱动的 Native Agent?
相比传统的RPA(规则脚本)自动化范式,一般通过Dom/View tree来获取试图层级结构。常见的有Appium,iOS XCTest。
虽然DOM准确度更高,但是通用型不那么强,如果是一张图,则没有这些信息。而Native Agent则反过来,准确度没那么高,但是通用型强。
二 感知层 (Input & Perception)
通过Electron提供给用户输入框,输入Prompt;模型接收自然语言指令,操作过程通过截屏分析。
三 慢思考与工程提示词
模型采用思考、计划、行动的输出范式,让Agent能够进行任务分解、评估点击区域。具体的实现逻辑如下。
1 | prompt.ts |
慢思考工程提示词
上个分享介绍过提示词的种类,其实很多AI IDE都内置提示词,降低了用户使用成本。但是如果做Agent,则需要使用高级提示词技术,
ReAct Prompt
ReAct是推理 + 行动循环:
1 | Thought(Reasoning) → Action → Observation → Thought → ... |
更简单的需求场景
1 | 打开浏览器 → 搜索 → 点击 → 登录 → 填表 |
在本Agent中的Prompt
1 | You are a GUI agent. |
Directional Stimulus Prompting
方向性刺激提示词,在 prompt.ts 中体现为:
1 强约束输出格式
1 | You must output in the following format: |
2 行为约束
1 | - Do not hallucinate elements not in the screen |
3 注意力引导
1 | Focus on relevant UI components |
本质就是:不给例子,而是给“行为方向”
四 解析层,获取绝对坐标
在传统的 UI 自动化或平时写测试脚本(比如用 XCTest 或者 Appium)时,我们通常习惯去抓取 DOM 节点、View 层级树或者Hierarchy/Accessibility ID。
如果是截图,仅仅一张图片,想要真正实现“跨平台与无视底层技术”,没有DOM节点、View层级,那只能像人的眼睛一样。
通过ReAct和方向性刺激提示词,获得(x, y)绝对坐标实现高精度的视觉定位。
动作解析与执行器 (Execution & Post-Processing)
模型输出的是标准化的动作原语(如
click,double_click,drag滑动拖动,type打字,press_key按键 以及移动端的long_press),并且利用绝对坐标 (Absolute Coordinates) 进行极高精度的视觉元素定位。这样就可以统一不同平台。Python + PyAutoGUI:在桌面端应用场景中,代码库(如
ui_tars.action_parser)负责将大模型生成的结构化输出(例如Action: click(start_box='(100,200)'))进行后处理解析,并直接转换成PyAutoGUI代码。PyAutoGUI 是底层的执行者,负责在真实的操作系统中触发模拟鼠标移动、点击和键盘敲击。
1 | CLICK(x, y) |
Action: click(start_box='(100,200)')
五 后续规划
还有更高级的提示词。让AI退一步抽象推理,然后再针对具体问题思考: StepBack-prompt。
StepBack-prompt
1 | Before acting: |