tencent_hunyuan/UI-Mate-democua-27B
模型介绍
文件和版本
Pull Requests
讨论
分析

UI-Mate-democua-27B

UI-Mate:借助上下文演示推进开放权重基座 GUI 智能体

展示一次操作流,让智能体适配当前任务。

Tencent HY Frontier

项目主页 · GitHub · arXiv

概述

UI-Mate-democua-27B 是 UI-Mate 的演示引导检查点。它会观察实时截图,基于可见状态进行推理,并生成结构化的键盘与鼠标操作;此外,它还可以接收一段已录制的操作流作为输入,并将该流程应用到新任务中。

它从通用强化学习检查点出发,并在通用计算机使用数据与演示增强数据的混合数据上,进一步进行监督微调。在混合数据中保留通用数据,正是保持纯指令能力的关键:模型仍可根据单条指令执行任务,并在提供演示时获得使用演示的能力。

演示被视为指引,而非固定动作脚本。录制的坐标不会被重放;每当内容、布局或应用状态出现差异时,模型都会基于实时界面重新规划。

模型详情

  • 参数量: 27B
  • 基础模型: Qwen3.6-27B
  • 输入: 任务指令、截图、交互历史,以及可选的演示操作流
  • 输出: 推理过程、简洁的动作描述,以及结构化的计算机使用工具调用
  • 动作空间: 鼠标、键盘、滚动、等待、用户交互、子任务完成和任务完成
  • 训练: 监督微调、在可执行 GUI 环境中进行在线强化学习,然后在由通用数据和演示增强数据混合而成的计算机使用数据上进行监督微调
  • 许可证: Apache-2.0

UI-Mate 是一个智能体检查点,而非独立的视觉聊天模型。我们建议使用来自 UI-Mate 仓库 的官方提示词、响应解析器和交互框架。

检查点目标用途
UI-Mate-27B27B 规模的通用计算机使用
UI-Mate-9B9B 规模的通用计算机使用
UI-Mate-democua-27B演示引导的计算机使用

亮点

  • 通过单个演示实现一次性程序性学习。
  • 通过混合通用数据与演示数据的训练,保留仅凭指令执行的能力。
  • 提供子任务级引导,而非整条工作流注入。
  • 基于实时屏幕定位,而非坐标回放。
  • 在不完整工作流上训练,因此必须通过读取屏幕来衔接各里程碑。
  • 与 pyautogui 兼容的结构化动作,通过 OpenAI 兼容接口提供。

演示引导执行

演示是一次被记录下来的成功执行:涵盖每一次键盘与指针动作,并附带每个动作前后即时截取的屏幕截图。它可能由人工录制,也可能取自更强 GUI agent 的一次成功 rollout。原始轨迹随后:

  1. 归一化为一致的动作-帧表示;
  2. 由视觉语言模型沿四个维度标注——屏幕状态、意图、所采取的动作,以及目标在视觉上的定位方式;
  3. 切分为具名子任务,每个子任务都有一个简短目标和可明确核验的完成标准;
  4. 在推理时作为当前活跃子任务的紧凑视图提供。

在指令之前会放置三个区块:<workflow_progress> 将全部子任务列为已完成、当前或待进行;<current_subtask> 承载子指令及其完成标准;<current_subtask_action_list> 仅保存该子任务的有序步骤。工具 schema 新增一个 subtask_complete 动作,模型通过上报该动作来推进指针。

训练会刻意隐藏其中一部分引导。完整轨迹仍作为监督目标,但展示给模型的工作流只保留关键动作——聚焦点击、滚动和弹窗关闭均被省略——因此模型无法把任务简化为照抄下一行,而必须从截图中推断缺失的步骤。训练混合数据还覆盖三种引导与屏幕的对应关系:完全对齐;部分失配,即模型依据截图纠正不一致的步骤;无关,即模型完全忽略工作流。完全对齐仍占多数,以确保引导仍然有用。

在推理时,则改为传入当前子任务的完整动作序列,不再进行关键动作抽取。一旦模型将演示视为可能出错的参考,并在判断冲突时以截图为准,那么更完整的引导自然具有更多信息量;省去抽取步骤还能减少一次模型调用,并消除一个静默污染的来源。

评测

在 self-demo 设定下进行配对评测,每个目标都与更强智能体在同一任务上的一次成功运行轨迹配对。两种条件下,任务指令、初始环境状态、交互预算和评估器均相同,唯一不同之处是演示。每个回合最多允许 1,000 个交互步骤。

评测集 · 指标仅指令+ 一条演示变化
OSWorkerBench-Subset (33) · 严格成功率17.1735.35+18.18 个百分点
OSWorkerBench-Subset (33) · 进度67.8581.14+13.29 个百分点
OSWorld-Subset (30) · 进度40.2765.75+25.48 个百分点
GameDev (10) · 平均得分76.7681.15+4.39 个百分点

结果在 OSWorkerBench-Subset 上按每个目标三次运行取平均,其他数据集按五次运行取平均。

OSWorkerBench-Subset(33 个任务) 包含需要跨三到五个应用程序协调交互的多应用办公任务,并带有重复的子任务模式和分支执行路径。演示使 33 个任务中的 28 个得到提升,满分任务数从 1 个增至 5 个。平均轨迹长度也从 173.3 步增至 216.0 步:无引导运行往往只完成请求工作流的一部分便终止,而演示会揭示剩余分支和重复操作,从而产生更长但更完整的轨迹。

OSWorld-Subset(30 个任务) 由仅指令模型无法完成、但更强参考智能体可以解决的可行任务组成,从而隔离出仅凭指令不太可能发现的程序性知识。18 个任务的性能得到提升,8 个任务保持不变。在没有引导时得分为零的四个任务——chrome-02、chrome-03、multi-02 和 os-01——在所有带演示的运行中均被完美解决。

GameDev(10 个任务) 是一组精心筛选的超长时间跨度任务,每个任务平均需要 200 多次人类操作,以八个 Godot 任务为核心,共同覆盖从零开始的端到端 2D 游戏开发。最大提升出现在 godot-04(+18.89)、godot-07(+17.89)和 qgis-01(+11.25),这些任务都需要长且结构化的细粒度操作序列;原本已经完美解决的三个任务保持不变。在这里,演示通过消除探索性绕路,将平均轨迹长度从 303.6 步缩短至 253.1 步。

快速开始

1. 使用 vLLM 部署模型

首次启动时,vLLM 会自动从 Hugging Face Hub 下载 checkpoint。

pip install -U vllm openai pillow

vllm serve tencent/UI-Mate-democua-27B \
    --trust-remote-code \
    --served-model-name UI_Mate \
    --port 8000 \
    --tensor-parallel-size 2 \
    --gpu-memory-utilization 0.85 \
    --mm-encoder-tp-mode data \
    --chat-template-content-format openai \
    --limit-mm-per-prompt '{"image":6,"video":0}'

默认智能体在上下文中保留五张截图。因此,服务器必须至少接纳六张图片,因为最新截图会在最旧截图被折叠之前到达。

请确认该端点对外暴露了预期的模型名称:

curl -s http://127.0.0.1:8000/v1/models

2. 通过演示引导运行

GitHub 上的 UI-Mate 仓库 在 resources/example_demonstration/ 下提供了一个真实演示:

文件说明
task.json一个用于配置受 chroot 限制的 SSH 用户的 OSWorld 任务——包括指令、环境配置和评估器。
trajectory_captioned.json一次得分为 1.0 的该任务运行,提炼为横跨 42 个步骤的 12 个子任务;由于使用的是同一任务,这属于自演示场景。
git clone https://github.com/Tencent/UI-Mate.git
cd UI-Mate

python examples/run_agent.py \
    --demo resources/example_demonstration/trajectory_captioned.json \
    --image resources/example_single_step/os_install_spotify.png \
    --instruction 'Please create an SSH user named "charles" with password "Ex@mpleP@55w0rd!" on Ubuntu who is only allowed to access the folder "/home/test1".' \
    --base-url http://127.0.0.1:8000/v1

去掉 --demo 后,相同命令将以仅指令模式运行。

3. 使用 Python 智能体

将 demo= 设置为一个演示文件,或一个仅包含单个 trajectory_captioned*.json 的目录:

from agents.ui_mate_agent import UIMateAgent

agent = UIMateAgent(
    base_url="http://127.0.0.1:8000/v1",
    model="UI_Mate",
    demo="resources/example_demonstration/trajectory_captioned.json",
)
agent.reset()

with open("screen.png", "rb") as f:
    response, actions = agent.predict(instruction, {"screenshot": f.read()})

print(response)
print(actions)

若某一步中模型仅报告进度,则返回 WAIT。在非最终子任务上提前输出 finished 只会推进工作流,而不会结束当前回合;因此,完成单个子任务无法让任务提前结束。

对于较长的交互回合,运行框架会在请求超出上下文窗口之前,将最早发生的交互步骤折叠为一条简洁的进度说明,同时保留近期步骤原文,并原样保留最近的截图。

预期用途与局限

UI-Mate-democua-27B 适用于在受控桌面环境中研究并开发基于截图的 GUI 智能体。

其行为可能受到应用版本、屏幕布局、显示缩放、延迟以及异常 UI 状态的影响。基准测试表现不保证在任意环境中都能可靠执行,并且该模型需要外部运行时来执行其预测的操作。

安全

计算机使用智能体可能会出现错误、遭遇提示注入,或触发影响重大的操作。

  • 优先使用隔离环境或一次性环境。
  • 避免无人值守、高风险或破坏性工作流。
  • 在执行敏感操作前要求人工确认。
  • 监控交互轨迹,并验证最终的应用状态。
  • 不应将模型报告的成功视为目标结果已经达成的证明。

许可证

UI-Mate 基于 Apache License 2.0 发布。第三方组件仍受其各自许可证约束。详见仓库中的 LICENSE。

引用

@article{uimate2026,
  title         = {UI-Mate: Advancing Open-Weight Foundation GUI Agents with In-Context Demonstrations},
  author        = {Tencent HY Frontier Team},
  journal       = {arXiv preprint arXiv:2608.15930},
  year          = {2026},
}