GUI智能体UI-TARS实操指南:让它替你点击与输入
【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS
想让电脑替你点鼠标填表单,却被自动化脚本劝退:选择器一改界面就失效,坐标全靠手标,一条流程写半天。UI-TARS 是一个 GUI 智能体,你给它一张截图加一句指令,它回给你可执行的点击、输入和拖拽动作。本文用 3 步走通部署与后处理,再讲原理和实测数据。
一句话定位 + 3 个硬核数字
UI-TARS-1.5 是基于视觉语言模型的开源多模态 GUI 智能体:先输出 Thought 推理,再输出 Action 操作,能自主操作桌面、浏览器和 Android 模拟器。
- 7B 开源权重,单卡 L40S 48G 可部署
- OSWorld(100 步)拿到 42.5,此前 SOTA 仅 38.1
- ScreenSpot-V2 元素定位 94.2%,同类第一
3 步跑起来
第 1 步:克隆仓库并安装解析工具包
# 克隆 UI-TARS 仓库并安装解析包 git clone https://gitcode.com/GitHub_Trending/ui/UI-TARS pip install ui-tars预期结果:得到 UI-TARS 目录,codes/ 是动作解析库,data/ 有示例对话消息;ui-tars 包提供解析动作、生成 PyAutoGUI 脚本两个接口。
第 2 步:部署模型,拿到第一次响应
按 README_deploy.md 在 Hugging Face 上创建推理端点(7B 建议 L40S 48G,需设两个环境变量)。预期结果:输入截图和任务后,返回一段Thought: ...加Action: click(start_box='(x,y)')的响应。
第 3 步:把响应解析成可执行脚本
# resp 是模型输出的 Thought+Action 字符串 from ui_tars.action_parser import parse_action_to_structure_output parsed = parse_action_to_structure_output(resp, factor=1000, origin_resized_height=1080, origin_resized_width=1920, model_type="qwen25vl")预期结果:得到结构化动作列表(含动作类型与坐标),再传入 parsing_response_to_pyautogui_code 即得到可直接运行的 PyAutoGUI 脚本。
原理速览
架构图分上下两部分。上面 Environment 是一圈交互循环:用户指令和截图进,模型出 Thought+Action,PyAutoGUI 执行后再截图喂回去——相当于一个"看屏幕、想一下、动手、再确认结果"的工人,循环到任务完成。下面 Capability 是四个模块:
- Perception:元素描述、密集标注、Set-of-Mark 定位。Set-of-Mark 可以理解为给屏幕上的元素贴编号小标签,模型"指着编号说话",不容易点错
- Action:统一动作空间(click、type、hotkey、scroll 等)加多步轨迹标注数据
- System-2 Reasoning:用 GUI 教程和思维增广训练模型"想清楚再动手",这是 1.5 版先思考后行动的核心
- Learning from Prior Experience:在线轨迹自举加 Agent DPO,从自己过往成败轨迹里学习,类似"工作日志加复盘"
推理能力来自强化学习而不是规则模板;同一个模型通吃桌面和移动端,区别只在换一套提示词,模板见 codes/ui_tars/prompt.py。
它能做什么、不能做什么
| 适合拿来做什么 | 别指望它做什么 |
|---|---|
| 桌面 GUI 自动化:开应用、填表单、操作浏览器与办公软件 | 游戏场景:7B 版本未针对游戏优化 |
| 移动端/Android 模拟器操作:开应用、长按、返回、Home 键 | 零成本运行:7B 约需 48G 显存或云端端点 |
| 元素定位的训练与评估(GROUNDING 提示词,只出 Action) | 永远准确:陌生环境偶有元素误识别与幻觉 |
| 把模型输出转成 PyAutoGUI 脚本 | 绕过验证码等受保护内容 |
实测表现
| 基准 | UI-TARS-1.5 | OpenAI CUA | Claude 3.7 | 此前 SOTA |
|---|---|---|---|---|
| OSWorld(100 步) | 42.5 | 36.4 | 28 | 38.1(200 步) |
| Windows Agent Arena(50 步) | 42.1 | - | - | 29.8 |
| WebVoyager | 84.8 | 87 | 84.1 | 87 |
| Online-Mind2Web | 75.8 | 71 | 62.9 | 71 |
| AndroidWorld | 64.2 | - | - | 59.5 |
| 定位基准 | UI-TARS-1.5 | OpenAI CUA | Claude 3.7 | 此前 SOTA |
|---|---|---|---|---|
| ScreenSpot-V2 | 94.2 | 87.9 | 87.6 | 91.6 |
| ScreenSpotPro | 61.6 | 23.4 | 27.7 | 43.6 |
Poki 14 款小游戏里,UI-TARS-1.5 有 13 款完成度 100%(含 2048、snake-solver、wood-blocks-3d),OpenAI CUA 与 Claude 3.7 的 100 分游戏均为 0 款。
对比图覆盖 72B 与 7B 两个版本:72B 在多数基准上领先此前 SOTA 5% 到 43%,7B 与其差距不大,雷达图中 7B 在 8 项基准上整体压过 GPT-4o 与 Claude。
常见坑 FAQ
Q1:HF 端点部署失败,或大图请求被截断?
创建端点前先加两个环境变量:CUDA_GRAPHS=0避免部署失败,PAYLOAD_LIMIT=8000000防大图请求失败;容器镜像用ghcr.io/huggingface/text-generation-inference:3.2.1,最大输入长度设 65536。完整参数见 README_deploy.md。
Q2:点击坐标和屏幕位置对不上?
Qwen2.5-VL 系模型用绝对坐标:图片进模型前先做 smart_resize(边长取 28 的倍数,总像素限制在 100×28×28 到 16384×28×28 之间),输出坐标是缩放后图像空间里的值,要乘"原图尺寸 ÷ 缩放后尺寸"才是实际点击点。README_coordinates.md 有完整代码,下图红点就是映射后的落点。
Q3:7B 最低显存门槛是多少?不够怎么办?
官方推荐 L40S 48G(L4、A100 也可)。本地显存不够就改云端端点,或先用开源 7B 跑通用电脑操作场景——OSWorld 27.5,已高于 72B-DPO 的 24.6。
扩展与引用
- README_deploy.md:端点部署参数、环境变量与 API 调用示例
- README_coordinates.md:smart_resize 实现与坐标落点可视化代码
- codes/ui_tars/action_parser.py:动作解析与代码生成两个核心接口
- codes/ui_tars/prompt.py:桌面、移动、grounding 三套提示词模板
- codes/README.md:ui-tars 工具包 API 说明
- UI_TARS_paper.pdf:技术报告
@article{qin2025ui, title={UI-TARS: Pioneering Automated GUI Interaction with Native Agents}, author={Qin, Yujia and Ye, Yining and Fang, Junjie and Wang, Haoming and Liang, Shihao and Tian, Shizuo and Zhang, Junda and Li, Jiahao and Li, Yunxin and Huang, Shijue and others}, journal={arXiv preprint arXiv:2501.12326}, year={2025} }【免费下载链接】UI-TARSPioneering Automated GUI Interaction with Native Agents项目地址: https://gitcode.com/GitHub_Trending/ui/UI-TARS
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考