KangQingYu
Articles59
Tags21
Categories9
AI端到端自动化测试

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
2
prompt.ts
action_parse

慢思考工程提示词

上个分享介绍过提示词的种类,其实很多AI IDE都内置提示词,降低了用户使用成本。但是如果做Agent,则需要使用高级提示词技术,

ReAct Prompt

ReAct是推理 + 行动循环:

1
Thought(Reasoning) → Action → Observation → Thought → ...

更简单的需求场景

1
2
3
打开浏览器 → 搜索 → 点击 → 登录 → 填表
长链 UI 操作(multi-step interaction)

在本Agent中的Prompt

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
You are a GUI agent.

Task: xxx

Current Screen: <image>

History:
- Thought: ...
- Action: ...
- Observation: ...

Now:
Think step by step.
Then output next action.

Directional Stimulus Prompting

方向性刺激提示词,在 prompt.ts 中体现为:

1 强约束输出格式

1
2
3
4
5
6
7
You must output in the following format:  

Thought: ...
Action: CLICK(x, y)

“输出格式必须严格遵循 JSON 或特定的函数调用格式...”

2 行为约束

1
2
3
- Do not hallucinate elements not in the screen  
- Only click visible UI elements
- If uncertain, explore

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
2
3
CLICK(x, y)
TYPE(text)
SCROLL(dx, dy)

Action: click(start_box='(100,200)')

五 后续规划

还有更高级的提示词。让AI退一步抽象推理,然后再针对具体问题思考: StepBack-prompt。

StepBack-prompt

1
2
3
4
Before acting:
1. What is the final goal?
2. What is the current state?
3. What is the next best step?
Author:KangQingYu
Link:http://example.com/2026/04/18/20260418AI%E7%AB%AF%E5%88%B0%E7%AB%AF%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/
版权声明:本文采用 CC BY-NC-SA 3.0 CN 协议进行许可
×