UI-TARS 深度研究报告

字节跳动开源原生GUI Agent模型 - 让AI像人一样操控电脑

GUI Agent Computer Use 强化学习 多模态 字节跳动

📑 目录

  1. 项目概述
  2. 架构设计
  3. 核心技术
  4. 三种Prompt模式
  5. 性能基准测试
  6. 与Claude Computer Use对比
  7. 部署与使用
  8. 安全与限制
  9. 总结与展望

一、项目概述

1.1 什么是UI-TARS

UI-TARS(User Interface-Tokenized Action Reasoning System)是字节跳动Seed团队开发的开源原生GUI Agent模型,能够仅凭屏幕截图理解界面并执行鼠标键盘操作。该项目于2025年1月首次发布,并在GitHub上采用Apache 2.0许可证开源。

🔑 核心理念:不同于依赖外部商业模型(如GPT-4o)的复杂Agent框架,UI-TARS是一个端到端模型,仅通过视觉输入即可完成人机交互,在多项基准测试中超越了Claude Computer Use和OpenAI CUA等复杂框架。

1.2 发展历程

时间 版本 主要更新
2025.01 UI-TARS v1 首发开源,奠定GUI Agent基础架构
2025.04 UI-TARS-1.5 引入强化学习推理能力,游戏和GUI任务能力大幅提升
2025.09 UI-TARS-2 All In One Agent,统一GUI、Game、Code、Tool Use能力

1.3 模型家族

模型版本 参数量 特点 适用场景
UI-TARS-1.5 全量 通用GUI自动化+游戏 HuggingFace云端部署
UI-TARS-1.5-7B 7B 桌面电脑使用优化 本地/云端部署
UI-TARS-72B-DPO 72B 增强推理+DPO训练 高性能服务器
UI-TARS-2 All In One GUI+Game+Code+Tool统一 多能力Agent

二、架构设计

2.1 基础架构:视觉语言模型

UI-TARS基于强大的视觉语言模型构建,以Qwen2.5-VL架构为基础,能够同时处理:

2.2 强化学习推理机制

UI-TARS-1.5引入强化学习机制,使模型能够"先思考再行动"。这是一个关键创新:

2.2.1 Thought-Action框架

系统采用两阶段推理过程:

  1. Thought生成:模型首先对当前状态和预期操作进行推理
  2. Action执行:基于思考过程,确定具体的GUI操作
💡 强化学习的效果:在Minecraft游戏中,引入Thought机制后:
  • 矿石挖掘任务:35% → 42%(+7%)
  • 生物击杀任务:25% → 31%(+6%)

2.2.2 UI-TARS-2的Data Flywheel

UI-TARS-2引入了革命性的Data Flywheel架构,实现模型与训练数据的共同演化:

  1. 持续预训练(CT):大规模教程、演示视频和标注数据建立基础能力
  2. 监督微调(SFT):人类标注和高质量合成轨迹,包含显式推理链
  3. 拒绝采样:自动过滤低质量轨迹
  4. 多轮强化学习:PPO优化,策略持续改进

2.2.3 稳定的PPO训练框架

UI-TARS-2使用增强版PPO(Proximal Policy Optimization),引入多项改进:

2.3 UI-TARS-2 All In One设计

UI-TARS-2是"All In One"Agent模型,实现四大能力统一:

能力模块 描述
GUI Agent 桌面、移动端、浏览器图形界面交互
Game Agent 游戏环境感知与操作决策
Code Agent 代码生成与软件工程任务
Tool Use 终端、文件系统、外部工具调用

2.4 层次记忆结构

UI-TARS-2采用层次记忆架构管理上下文:

三、核心技术

3.1 GUI Grounding能力

GUI Grounding是GUI Agent的核心能力——将自然语言指令映射到图形界面上的具体操作。

3.1.1 技术原理

UI-TARS通过以下方式实现精确Grounding:

  1. 视觉编码:将GUI截图编码为模型可理解的表示
  2. 坐标预测:生成目标元素的精确坐标(x, y)
  3. 动作生成:结合坐标和任务意图生成可执行动作

3.1.2 绝对坐标机制

⚠️ 重要:UI-TARS基于Qwen2.5-VL的模型使用绝对坐标来定位对象,而非相对坐标。这需要开发者在使用时进行坐标转换处理。

3.2 坐标处理机制

坐标处理是UI-TARS的核心技术细节,官方提供了专门的坐标处理指南。

3.2.1 模型输出格式

Action: click(start_box='(100,200)')
Action: drag(start_point='(100,200)', end_point='(300,400)')

3.2.2 坐标转换

由于模型使用归一化坐标(0-1000范围),实际执行需要转换为屏幕分辨率坐标:

import re

def add_box_token(input_string):
    # 处理坐标转换
    if "Action: " in input_string and "start_box=" in input_string:
        # 提取坐标
        coordinates = re.findall(r"(start_box|end_box)='\((\d+),\s*(\d+)\)'", input_string)
        # 转换为模型可读格式
        for coord_type, x, y in coordinates:
            updated_action = updated_action.replace(
                f"{coord_type}='({x},{y})'",
                f"{coord_type}='<|box_start|>({x},{y})<|box_end|>'"
            )

3.3 动作解析(parse_action_to_structure_output)

动作解析是将模型输出转换为可执行代码的关键步骤。

3.3.1 解析函数使用

from ui_tars.action_parser import parse_action_to_structure_output, parsing_response_to_pyautogui_code

# 模型响应
response = """Thought: Click the button
Action: click(start_box='(100,200)')"""

# 原始图像尺寸
original_image_width, original_image_height = 1920, 1080

# 解析为结构化输出
parsed_dict = parse_action_to_structure_output(
    response,
    factor=1000,
    origin_resized_height=original_image_height,
    origin_resized_width=original_image_width,
    model_type="qwen25vl"
)

# 转换为PyAutoGUI代码
parsed_pyautogui_code = parsing_response_to_pyautogui_code(
    responses=parsed_dict,
    image_height=original_image_height,
    image_width=original_image_width
)

3.3.2 支持的动作类型

动作类型 参数 说明
click point 单击指定坐标
left_double point 双击指定坐标
right_single point 右键单击
drag start_point, end_point 拖拽操作
type content 文本输入
hotkey key 快捷键操作
scroll point, direction 滚动操作
wait - 等待5秒
finished content 任务完成

四、三种Prompt模式

UI-TARS提供了三种专门的Prompt模板,适应不同设备环境和任务复杂度:

4.1 COMPUTER_USE模式

🎯 适用场景:Windows、Linux、macOS等桌面环境的GUI任务

特点:

完整Prompt模板:

You are a GUI agent. You are given a task and your action history, with screenshots. You need to perform the next action to complete the task.

## Output Format
Thought: ...
Action: ...

## Action Space
click(point='x1 y1')
left_double(point='x1 y1')
right_single(point='x1 y1')
drag(start_point='x1 y1', end_point='x2 y2')
hotkey(key='ctrl c')
type(content='xxx')
scroll(point='x1 y1', direction='down or up or right or left')
wait()
finished(content='xxx')

## Note
- Write a small plan and finally summarize your next action in one sentence in Thought part.

## User Instruction
{instruction}

4.2 MOBILE_USE模式

🎯 适用场景:移动设备或Android模拟器上的GUI任务

特点:

完整Prompt模板:

You are a GUI agent. You are given a task and your action history, with screenshots. You need to perform the next action to complete the task.

## Output Format
Thought: ...
Action: ...

## Action Space
click(point='x1 y1')
long_press(point='x1 y1')
type(content='')
scroll(point='x1 y1', direction='down or up or right or left')
open_app(app_name='')
drag(start_point='x1 y1', end_point='x2 y2')
press_home()
press_back()
finished(content='xxx')

## Note
- Write a small plan and finally summarize your next action in one sentence in Thought part.

## User Instruction
{instruction}

4.3 GROUNDING模式

🎯 适用场景:轻量级任务、仅需要动作输出,或用于模型训练和评估

特点:

完整Prompt模板:

You are a GUI agent. You are given a task and your action history, with screenshots. You need to perform the next action to complete the task.

## Output Format
Action: ...

## Action Space
click(point='x1 y1')

## User Instruction
{instruction}

五、性能基准测试

5.1 OSWorld桌面基准

OSWorld是评估AI在真实桌面环境中操作能力的权威基准,包含369个真实世界任务。

5.1.1 在线基准评估

模型 OSWorld(100步) Windows Agent Arena 说明
UI-TARS-1.5 42.5% 42.1% 最新开源版本
UI-TARS-72B-DPO 24.6% - 15步限制
OpenAI CUA 36.4% - -
Claude 3.7 28.0% - -
Previous SOTA 38.1% 29.8% 200步限制
🏆 关键成就:UI-TARS-1.5在OSWorld上达到42.5%的准确率,远超Claude 3.7 Sonnet的28%和OpenAI CUA的36.4%

5.2 ScreenSpot Grounding评估

ScreenSpot系列评估GUI Grounding能力,即模型准确定位UI元素的能力。

基准 UI-TARS-1.5 OpenAI CUA Claude 3.7 Previous SOTA
ScreenSpot-V2 94.2% 87.9% 87.6% 91.6%
ScreenSpotPro 61.6% 23.4% 27.7% 43.6%
📊 分析:在ScreenSpotPro(高分辨率专业桌面软件)上,UI-TARS的Grounding准确率达到61.6%,比OpenAI CUA高出2.6倍,比Claude 3.7高出2.2倍

5.3 Poki游戏表现

UI-TARS在Poki平台的14款游戏中展现了卓越的游戏能力:

游戏 UI-TARS-1.5 OpenAI CUA Claude 3.7
2048100%31%43%
energy100%33%42%
free-the-key100%0%0%
Gem-11100%46%0%
hex-frvr100%92%31%
Infinity-Loop100%23%2%
Maze100%35%82%
shapes100%52%6%
snake-solver100%43%43%
wood-blocks-3d100%2%0%
yarn-untangle100%45%14%
🎮 惊人表现:UI-TARS在14款游戏中全部达到100%完成率,而OpenAI CUA和Claude 3.7经常出现0%的情况

5.4 Minecraft任务

任务类型 VPT DreamerV3 SOTA UI-TARS w/o Thought UI-TARS w/ Thought
矿石挖掘(200任务平均)
平均0.060.030.320.350.42
生物击杀(100任务平均)
平均0.040.030.180.250.31

5.5 模型规模对比(72B vs 1.5)

基准类型 基准 UI-TARS-72B-DPO UI-TARS-1.5-7B UI-TARS-1.5
Computer Use OSWorld 24.6% 27.5% 42.5%
GUI Grounding ScreenSpotPro 38.1% 49.6% 61.6%
💡 有趣发现:UI-TARS-1.5(可能是更大规模或更优训练策略)在两项指标上都超过了72B版本的DPO模型。这说明强化学习训练策略比单纯增大模型规模更重要。

5.6 UI-TARS-2最新性能

基准 UI-TARS-2 UI-TARS-1.5 Claude OpenAI o3
Online-Mind2Web 88.2% - - -
OSWorld 47.5% 42.5% <47.5% <47.5%
WindowsAgentArena 50.6% 42.1% <50.6% -
AndroidWorld 73.3% 64.2% - <73.3%
Game Suite(15游戏平均) 59.8 - - -

六、与Claude Computer Use对比

6.1 技术路线差异

维度 UI-TARS Claude Computer Use
架构模式 端到端原生Agent 复杂框架+商业模型
核心模型 基于Qwen2.5-VL开源模型 依赖Claude闭源模型
训练方法 强化学习+Data Flywheel 主要是预训练+SFT
推理机制 显式Thought-Action推理 隐式推理
开源程度 完全开源(Apache 2.0) 闭源API
部署方式 本地/云端均可 仅云端API

6.2 性能对比总结

✅ UI-TARS优势领域:
  • OSWorld桌面任务:42.5% vs Claude 28%
  • Windows Agent Arena:42.1% vs Claude未提供
  • ScreenSpotPro Grounding:61.6% vs Claude 27.7%
  • 游戏场景:全面超越
⚠️ Claude优势领域:
  • WebVoyager:87% vs UI-TARS 84.8%
  • 品牌影响力大,生态成熟
  • 企业级支持完善

6.3 应用场景对比

场景 UI-TARS推荐度 Claude推荐度
桌面应用自动化 ⭐⭐⭐⭐⭐ ⭐⭐⭐
移动端自动化 ⭐⭐⭐⭐ ⭐⭐
浏览器自动化 ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
游戏AI ⭐⭐⭐⭐⭐ ⭐⭐
企业级应用 ⭐⭐⭐ ⭐⭐⭐⭐⭐
开源项目/研究 ⭐⭐⭐⭐⭐

七、部署与使用

7.1 快速部署指南

7.1.1 HuggingFace云端部署

  1. 访问HuggingFace部署界面HuggingFace Endpoints
  2. 选择模型:选择UI-TARS 1.5 7B
  3. 配置硬件
    • GPU: L40S 1GPU 48G(推荐Nvidia L4/A100)
  4. 容器配置
    • Max Input Length: 65536
    • Max Batch Prefill Tokens: 65536
    • Max Number of Tokens: 65537
  5. 环境变量
    • CUDA_GRAPHS=0
    • PAYLOAD_LIMIT=8000000
  6. 容器版本:设置为ghcr.io/huggingface/text-generation-inference:3.2.1

7.1.2 Python API调用示例

# pip install openai
import io
import re
import json
import base64
from PIL import Image
from io import BytesIO
from openai import OpenAI

client = OpenAI(
    base_url="https://xxx",
    api_key="hf_xxx"
)

messages = json.load(open("./data/test_messages.json"))
chat_completion = client.chat.completions.create(
    model="tgi",
    messages=messages,
    temperature=0.0,
    max_tokens=400,
)

response = ""
for message in chat_completion:
    response += message.choices[0].delta.content
print(response)

7.2 UI-TARS-desktop桌面版本

UI-TARS-desktop是原生GUI Agent桌面应用,可操作本地个人设备。

核心功能:

使用方式:

# 使用npm启动
npx @agent-tars/cli@latest

# 全局安装(需要Node.js >= 22)
npm install @agent-tars/cli@latest -g

# 运行
agent-tars --provider volcengine --model doubao-1-5-thinking-vision-pro
agent-tars --provider anthropic --model claude-3-7-sonnet-latest

7.3 Midscene.js Web自动化

Midscene.js是基于UI-TARS的Web自动化框架。

核心特性:

Midscene + UI-TARS集成:

const { Midscene } = require('@midscene/web');
const puppeteer = require('puppeteer');

const browser = await puppeteer.launch();
const page = await browser.newPage();
const mid = new Midscene(page, {
    OPENAI_API_KEY: "sk-xxx",
    OPENAI_BASE_URL: "https://ui-tars-endpoint/v1"
});

try {
    // 步骤1:登录操作
    await mid.aiAction('打开登录页面并输入用户名和密码');
    
    // 步骤2:数据提取
    const userProfile = await mid.aiQuery({
        name: '用户昵称,string',
        role: '用户角色,string'
    });
    
    // 步骤3:断言验证
    await mid.aiAssert('页面右上角显示"欢迎回来"提示');
} finally {
    await browser.close();
}

八、安全与限制

8.1 已知限制

8.1.1 CAPTCHA滥用风险

⚠️ 安全警示:由于UI-TARS在GUI任务中的增强性能,包括成功绕过CAPTCHA等认证挑战的能力,该模型存在被滥用于未授权访问或自动化处理受保护内容的风险。团队正在进行广泛的内部安全评估。

8.1.2 计算资源需求

UI-TARS仍然需要大量计算资源:

8.1.3 幻觉问题

UI-TARS可能偶尔产生:

这些问题在模糊或不熟悉的环境中更常见。

8.2 模型规模限制

已发布的UI-TARS-1.5-7B:

九、总结与展望

9.1 核心价值

🎯 UI-TARS的三大核心价值:
  1. 开源可控:Apache 2.0许可证,完全可本地部署
  2. 性能领先:多项基准超越Claude Computer Use和OpenAI CUA
  3. 端到端:无需复杂框架,仅凭截图即可完成GUI交互

9.2 技术亮点

9.3 应用场景

场景 应用说明
自动化测试 替代人工进行UI测试
数据录入 自动填写表单、整理Excel
浏览器自动化 自动操作网页
无障碍辅助 帮助行动不便的用户操作电脑
游戏脚本 智能游戏辅助
RPA流程 企业级流程自动化

9.4 未来展望

UI-TARS的发展方向:

🌟 愿景:UI-TARS正在发展成为能够执行现实世界动作的复杂Agent能力,赋能豆包等平台完成更复杂任务

参考资料

📝 学习笔记版权声明:本笔记基于UI-TARS官方资料和公开研究论文整理,仅供学习研究使用。如有侵权请联系删除。