UI-TARS 源码解析 #1:从 GUI Agent 到 Native Agent,AI 如何真正“看屏幕、点按钮”? 📅 2026/7/9 17:33:04 系列导读在过去一年里AI Agent 已经从“会聊天”发展到了“会干活”。从 Claude Computer Use、OpenAI Operator到 Manus再到字节跳动开源的UI-TARS一个新的方向正在迅速崛起——GUI Agent图形界面智能体。这一系列文章我们将从UI-TARS的源码出发一步一步分析它是如何让 AI 学会像人一样操作电脑的。为什么 GUI Agent 突然火了过去的大语言模型大多数只能处理文本。例如帮我写封邮件模型可以直接生成内容。但是如果你说帮我打开 Photoshop创建一个新文件然后导出 PNG。普通 LLM 根本做不到。因为它不知道屏幕上有什么鼠标应该点哪里哪个按钮叫「导出」当前操作是否成功也就是说传统 LLM 不会操作 GUI。而 GUI Agent就是解决这个问题。什么是 GUI AgentGUIGraphical User Interface就是图形界面。例如WindowsmacOSLinux Desktop浏览器OfficePhotoshopVSCode这些软件都有按钮、菜单、输入框。GUI Agent 的目标就是不用 API仅凭屏幕截图就能完成各种软件操作。整个过程非常像真人截图 ↓ 观察界面 ↓ 思考下一步 ↓ 移动鼠标 ↓ 点击按钮 ↓ 再次截图 ↓ 继续思考这就是目前 Computer Use Agent 的基本工作方式。从 API Agent 到 Native Agent很多人第一次看到 UI-TARS会觉得不就是自动点击吗其实完全不是。过去很多 Agent 都属于API Agent。例如ChatGPT ↓ 调用 Google API ↓ 返回搜索结果或者LLM ↓ 调用 Calendar API ↓ 创建日程整个过程中模型根本没有真正看到屏幕。而 UI-TARS 不一样。论文中把它称为Native GUI Agent意思就是AI 完全站在人类用户的位置。输入只有Screenshot输出只有MouseKeyboard没有 DOM。没有 Accessibility Tree。没有插件。没有 API。真正做到像人一样使用电脑。(arXiv)UI-TARS 的整体架构从源码来看整个流程其实非常清晰。用户任务 │ ▼ 当前屏幕截图 │ ▼ Vision Language Model │ ┌───────────┴────────────┐ │ │ Thought Action │ │ └───────────┬────────────┘ ▼ Action Parser │ ▼ pyautogui 自动化代码 │ ▼ 鼠标键盘执行 │ ▼ 新的屏幕截图 │ 下一轮推理这也是整个 UI-TARS 仓库最重要的一条主线。仓库到底开源了什么很多人第一次打开仓库都会失望。因为没有模型训练代码。真正公开的是UI-TARS │ ├── README.md ├── README_deploy.md ├── README_coordinates.md │ └── codes │ ├── ui_tars │ ├── prompt.py │ ├── action_parser.py │ └── __init__.py │ └── tests真正值得深入阅读的源码其实只有两个prompt.py负责告诉模型怎么思考可以执行哪些动作输出什么格式以及action_parser.py负责把模型输出click(start_box(120,320))解析成真正的鼠标点击。另外还有部署文档坐标转换示例单元测试整个仓库更像官方提供的推理 SDK而不是完整训练框架。(GitHub)UI-TARS 真正厉害的地方是什么很多人以为AI 会点按钮。其实真正困难的是AI 如何知道按钮在哪里例如屏幕上有┌─────────────────────────────┐ 保存 导出 新建 设置 └─────────────────────────────┘模型必须完成第一步理解哪个是导出第二步定位坐标是多少第三步输出Action: click(...)第四步等待执行。整个过程完全依赖视觉理解 推理能力。论文把这一能力拆分为几部分包括Enhanced Perception增强感知Unified Action Modeling统一动作建模System-2 Reasoning深度推理Reflective Online Traces反思式迭代训练这些共同构成了 UI-TARS 能够完成复杂 GUI 操作的基础。(arXiv)为什么源码重点放在 Action Parser很多项目都会把重点放在模型上。但 UI-TARS 恰恰相反。它把模型输出 ↓ 真正执行这一段全部开源了。例如模型输出Thought: 点击保存按钮 Action: click(pointpoint200 300/point)经过解析以后↓ 结构化 Action ↓ 坐标转换 ↓ 生成 pyautogui ↓ 真正点击整个过程全部可以阅读源码。这也是本系列后面重点分析的内容。源码中可以看到parse_action、parse_action_to_structure_output、parsing_response_to_pyautogui_code等函数分别负责解析动作、处理坐标缩放、生成 pyautogui 自动化代码。(GitHub)本系列会讲些什么后面的文章将按源码执行流程逐步展开Prompt 是如何限制模型输出的为什么输出一定是 Thought ActionAST 为什么比正则解析更安全坐标为什么要经过 Smart Resizepoint、start_box、end_box 有什么区别pyautogui 是如何生成的如何把 UI-TARS 接到自己的自动化项目如何把它改造成 Windows 自动化 Agent整个系列不会停留在论文而是尽可能结合源码把“看懂”和“能改”放在一起。总结UI-TARS 的出现标志着 AI Agent 正在从“理解文本”走向“理解真实世界的软件界面”。它最吸引人的地方不是简单的鼠标点击而是让模型能够看懂整个屏幕推理下一步操作将思考转换为统一动作最终驱动真实的键盘和鼠标。而公开仓库则把Prompt、动作空间、坐标转换、动作解析和自动化执行这些关键环节完整展示出来为开发者提供了一个非常好的学习入口。下一篇我们将正式进入源码解析prompt.py看看 UI-TARS 是如何通过 Prompt 定义 GUI Agent 的“语言”和“动作空间”的。