2026年6月6日 · 阅读 —

CUA —— 计算机使用 Agent 平台解读及 UI/Android 自动化测试落地实践

Agent 与 Skills测试与评测

CUA - 使用 Agent 平台解读及 UI/Android 自动化测试落地实践

CUA 深度解读:一个统一 Android/macOS/Windows 的计算机使用 Agent 平台

1. 背景

CUA(Computer Use Agent)是一个让 AI Agent 像人一样操作计算机的开源平台。它不只是”让 AI 看屏幕、点按钮”,而是一整套从沙箱环境 → Agent SDK → 基准评测 → macOS 虚拟化的工具链。

与传统 UI 自动化(Selenium / Appium / UIAutomator)相比,CUA 的核心差异在于:它不是按元素定位的脚本驱动,而是视觉+Agent 驱动的计算机使用。这对 UI 自动化测试来说,思路完全不同。

2. CUA 项目全景

flowchart TD
    subgraph 运行环境
        A[Cua Sandbox<br/>Linux/macOS/Windows/Android]
        B[Lume<br/>macOS 虚拟化]
    end
    subgraph Agent 能力
        C[Cua Driver<br/>后台计算机操作]
        D[CuaBot<br/>协作沙箱 CLI]
    end
    subgraph 评测体系
        E[Cua-Bench<br/>基准测试 / RL 环境]
    end
    A --> C
    A --> D
    B --> A
    C --> E
    D --> E

五个核心组件,分工明确:

组件定位一句话
Cua Sandbox环境层一键创建任意 OS 的沙箱(含 Android)
Cua Driver操作层后台操控桌面应用,不抢鼠标焦点
CuaBot协作层把任意 Coding Agent 放进沙箱
Cua-Bench评测层标准基准测试 + RL 训练环境
Lume虚拟化层Apple Silicon 上的 macOS/Linux VM

3. 各组件能力拆解

3.1 Cua Sandbox —— 核心沙箱

安装:

pip install cua

核心 API:

from cua import Sandbox, Image

async with Sandbox.ephemeral(Image.android()) as sb:
    # 截图验证
    screenshot = await sb.screenshot()
    
    # 鼠标/触控操作
    await sb.mouse.click(100, 200)
    await sb.keyboard.type("Hello from Cua!")
    
    # Android 多点触控手势
    await sb.mobile.gesture((100, 500), (100, 200))
    
    # Shell 命令
    result = await sb.shell.run("echo hello")

支持的操作系统矩阵:

环境Linux ContainerLinux VMmacOSWindowsAndroid自定义镜像
Cloud (cua.ai)✅✅✅✅✅🔜
Local (QEMU)✅✅✅✅✅✅

对 UI 测试的关键意义: Android 支持意味着你可以在本地或云端直接启动 Android 沙箱,用同一套 API 做截图对比、手势操作、键盘输入——不需要单独维护 Appium 或 UIAutomator 环境。

3.2 Cua Driver —— 后台计算机操作

一句话: 让 Agent 在后台操控桌面应用,不抢鼠标、不占焦点。

# macOS / Linux
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.sh)"

# Windows
irm https://raw.githubusercontent.com/trycua/cua/main/libs/cua-driver/scripts/install.ps1 | iex

支持接入的 Agent 框架: Claude Code、Cursor、Codex、OpenClaw、自定义客户端。

对 UI 测试的意义:

  • 传统桌面自动化(PyAutoGUI / AppleScript)会抢占鼠标焦点,人不能同时用电脑
  • Cua Driver 后台运行,测试和开发可以并行
  • 通过 MCP Server 暴露能力,可以被任何支持 MCP 的 Agent 调用

3.3 CuaBot —— 协作沙箱

npx cuabot              # 初始化
cuabot claude            # Claude Code 进沙箱
cuabot openclaw          # OpenClaw 进沙箱
cuabot --screenshot      # 截图
cuabot --click 100 200   # 点击

内置支持 agent-browser 和 agent-device(iOS、Android)。

对 UI 测试的意义: 可以把测试 Agent(如 Codex / Claude Code)直接放进沙箱执行测试流程,不需要在宿主机上配置测试环境。

3.4 Cua-Bench —— 基准测试

cd cua-bench
uv tool install -e . && cb image create linux-docker
cb run dataset datasets/cua-bench-basic --agent cua-agent --max-parallel 4

支持基准:OSWorld、ScreenSpot、Windows Arena、自定义任务。可导出轨迹用于 RL 训练。

对 UI 测试的意义:

  • 可以把你的测试用例沉淀为基准数据集,持续评估 Agent 的 UI 操作能力
  • 导出轨迹 = 自动生成测试报告 + 失败回放
  • 并行执行 = 大规模回归测试的可能

3.5 Lume —— macOS 虚拟化

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/trycua/cua/main/libs/lume/scripts/install.sh)"
lume run macos-sequoia-vanilla:latest

基于 Apple Virtualization.Framework,近原生性能。

对 UI 测试的意义: 在 Apple Silicon 上快速创建 macOS VM,适合做 macOS 桌面应用的自动化测试环境。


4. UI / Android 自动化测试落地路径

4.1 总体架构

flowchart TD
    subgraph 测试编排层
        T1[测试用例定义<br/>YAML / Python DSL]
        T2[断言引擎<br/>截图对比 / 文本验证]
    end
    subgraph Agent 执行层
        A1[CUA Agent SDK]
        A2[Claude Code / Codex<br/>作为测试执行器]
    end
    subgraph 沙箱层
        S1[Android 沙箱]
        S2[macOS VM<br/>via Lume]
        S3[Windows 沙箱]
    end
    subgraph 评测层
        E1[Cua-Bench<br/>回归基准]
        E2[轨迹回放<br/>失败分析]
    end
    T1 --> A1
    T1 --> A2
    A1 --> S1
    A1 --> S2
    A1 --> S3
    A2 --> S1
    S1 --> E1
    S2 --> E1
    E1 --> E2

4.2 Android 自动化测试具体方案

场景 1:Android App 功能回归测试

from cua import Sandbox, Image

async def test_login_flow():
    async with Sandbox.ephemeral(Image.android()) as sb:
        # 1. 安装 APK
        await sb.shell.run("adb install /path/to/app.apk")
        
        # 2. 启动 App
        await sb.shell.run("adb shell am start -n com.example/.MainActivity")
        
        # 3. 等待启动完成,截图验证
        await sb.wait(2)
        screenshot = await sb.screenshot()
        assert "Login" in await sb.ocr(screenshot)
        
        # 4. 输入用户名密码
        await sb.mouse.click(200, 400)   # 点击用户名输入框
        await sb.keyboard.type("testuser")
        await sb.mouse.click(200, 500)   # 点击密码输入框
        await sb.keyboard.type("password123")
        
        # 5. 点击登录按钮
        await sb.mouse.click(200, 600)
        
        # 6. 验证登录成功
        await sb.wait(2)
        screenshot = await sb.screenshot()
        assert "Welcome" in await sb.ocr(screenshot)

场景 2:多点触控手势测试(滑动、缩放)

# 上滑刷新
await sb.mobile.gesture((540, 1500), (540, 500))

# 双指缩放
await sb.mobile.gesture(
    (200, 800), (200, 400),    # 手指1:向上
    (800, 800), (800, 1200)    # 手指2:向下
)

场景 3:跨平台 UI 一致性测试

async def test_cross_platform_ui():
    test_actions = [
        ("click", 200, 400),
        ("type", "hello"),
        ("screenshot",),
    ]
    
    results = {}
    for os_type in [Image.android(), Image.ios()]:  # iOS via agent-device
        async with Sandbox.ephemeral(os_type) as sb:
            for action in test_actions:
                await execute(sb, action)
            results[os_type] = await sb.screenshot()
    
    # 对比跨平台截图
    diff_score = compare_screenshots(results[0], results[1])
    assert diff_score < 0.05  # 允许 5% 差异

4.3 桌面应用自动化测试方案

# 使用 Cua Driver 在后台操作桌面应用
async def test_desktop_app():
    # 通过 MCP 调用 Cua Driver
    # 打开应用 → 操作 → 截图验证
    await cua_driver.launch("com.example.DesktopApp")
    await cua_driver.click(300, 200)
    await cua_driver.type("test data")
    screenshot = await cua_driver.screenshot(region=(0, 0, 800, 600))
    assert verify_ui(screenshot, expected_layout)

4.4 与现有测试框架的关系

维度传统方案 (Appium/Selenium)CUA 方案
定位方式元素 ID / XPath / 选择器视觉坐标 + OCR + Agent 推理
环境依赖需要 WebDriver / ADB / 设备云端或本地 QEMU 沙箱
脚本编写精确的元素定位链自然语言描述 + 坐标操作
跨平台不同 Driver 不同 API统一 Python SDK
规模化Selenium Grid / Appium Grid--max-parallel 并行
失败分析手动截图轨迹回放 + 基准评测
适用场景精确的 UI 元素级断言视觉级验证 + Agent 自由探索

关键判断: CUA 不是 Appium 的替代品,而是在视觉/Agent 驱动测试这个维度上的补充。当测试场景是”看不出问题但元素定位没问题”时,传统方案仍然更可靠;当测试场景是”像人一样操作并视觉判断”时,CUA 更合适。


5. 关键能力与测试场景映射

CUA 能力测试场景落地价值
Android 沙箱Android App 功能测试无需实体设备,云端/本地按需创建
mobile.gesture()多点触控/手势测试覆盖滑动、缩放、长按等操作
screenshot() + OCR视觉断言不受元素树变化影响
后台操作 (Cua Driver)桌面应用回归测试测试不阻塞人工操作
cb run --max-parallel大规模回归多设备并行执行
轨迹导出失败复现回放每次操作的完整路径
Agent SDKAI 驱动的探索性测试Agent 自主发现 UI 异常

6. 落地建议与实施路线

Phase 1:能力验证(1-2 周)

  • 在本地用 QEMU 启动 Android 沙箱
  • 跑通 screenshot() + click() + type() 基础链路
  • 验证 mobile.gesture() 在目标 App 上的表现
  • 测试 APK 安装和 App 启动的稳定性

Phase 2:用例集成(2-4 周)

  • 选 3-5 个核心业务流程(登录、下单、搜索等)
  • 用 CUA SDK 编写测试脚本
  • 建立截图基准库,实现视觉 diff
  • 对比 Appium 方案的结果一致性

Phase 3:规模化(4-8 周)

  • 接入 Cua-Bench,把测试用例注册为基准任务
  • 配置 --max-parallel 并行执行
  • 建立轨迹回放机制用于失败分析
  • 探索 Agent 驱动的探索性测试

风险点

风险影响缓解措施
视觉定位不稳定UI 变化后坐标失效结合 OCR 做语义定位,不硬编码坐标
沙箱启动慢影响测试速度使用镜像预热 / 沙箱池化
Android 兼容性部分 App 在沙箱中行为异常先在目标 App 上做兼容性验证
网络依赖云端沙箱需要稳定网络关键场景保留本地 QEMU 方案
学习成本团队需要适应视觉测试思维先做概念验证,再推广

7. 总结

CUA 不是一个单纯的”AI 操作电脑”玩具项目,它的组件矩阵切得很准:

  • Sandbox 解决”在哪跑” —— 按需创建、跨 OS、含 Android
  • Driver 解决”怎么操作” —— 后台、不抢焦点、MCP 集成
  • Bench 解决”怎么评” —— 标准化基准、轨迹导出、并行执行

对 UI/Android 自动化测试团队来说,CUA 最大的价值在于统一了”创建环境 → 执行操作 → 视觉验证 → 结果评测”的完整链路,而且这整条链路都可以被 AI Agent 驱动,不需要写死每一步的元素定位。

与传统 Appium/Selenium 不是替代关系,而是互补:传统方案做精确元素断言,CUA 做视觉级验证和 Agent 自主探索。


GitHub - trycua/cua: Open-source infrastructure for Computer-Use Agents. Sandboxes, SDKs, and benchmarks to train and evaluate AI agents that can control full desktops (macOS, Linux, Windows). · GitHub

#CUA #ComputerUse #UI自动化 #Android测试 #AI-Agent #沙箱 #视觉测试 #Appium #测试平台