论文精读 08|OSWorld:在真实操作系统中评测多模态 Agent
论文档案
| 项目 | 内容 |
|---|---|
| 论文 | OSWorld: Benchmarking Multimodal Agents for Open-Ended Tasks in Real Computer Environments |
| 作者 | Tianbao Xie 等 |
| 发表 | NeurIPS 2024 Datasets and Benchmarks Track |
| 原文 | NeurIPS Proceedings |
| 代码 | xlang-ai/OSWorld |
| 本文定位 | 将 Agent 评测推进到可重置的真实桌面、真实应用与跨应用工作流 |
为什么真实桌面比网页或文本游戏难
桌面任务没有统一 DOM 和单一 API。按钮可能只显示图标,菜单藏在层级里,窗口会遮挡,快捷键因系统而异,一个任务还可能跨浏览器、邮件、文档和终端。成功常体现为文件内容、应用内部状态或系统配置改变,而不是页面出现一句文本。
OSWorld 的目标不是模拟一个“像桌面”的文本环境,而是在真实虚拟机中运行真实应用,让 Agent 通过截图、accessibility tree 和鼠标键盘完成开放任务。
基准组成
论文主基准包含 369 个 Ubuntu 任务,另有 43 个适配到 Windows 的任务。作者团队投入超过 1,800 小时构造和审核数据。
任务覆盖 8 类常用应用与系统能力:
- Chrome;
- VLC;
- Thunderbird;
- VS Code;
- LibreOffice Calc、Writer、Impress;
- GIMP;
- 操作系统文件、设置与多应用组合。
其中 **101 个(27.4%)**是多应用任务,268 个是单应用任务;还包含 30 个不可行任务,要求 Agent 正确判断无法完成。作者构造 302 个初始状态和 134 类 evaluator 脚本。
一个任务不只是自然语言指令
OSWorld 任务至少由三部分组成:
instruction: 用户目标
setup:
- 恢复 VM snapshot
- 打开指定应用/文件/网页
- 注入任务所需初始数据
evaluator:
- 读取文件、应用状态或 UI 状态
- 计算成功或部分得分Setup 保证每次运行从同一世界开始;evaluator 从世界状态判分。没有这两部分,桌面演示只能“看起来像成功”,无法规模化复现。
形式化:GUI 上的部分可观察决策过程
论文将任务视作 grounded action POMDP。Agent 每步接收有限观察,选择一个动作,环境状态变化,再返回新观察。实验把每个任务限制为最多 15 步。
观察有三种主要配置:
| 观察 | 优势 | 缺点 |
|---|---|---|
| Screenshot | 保留视觉布局、图像和遮挡 | 元素定位与文字读取难 |
| Accessibility tree | 文本化、结构清晰、较省 token | 覆盖不完整,视觉信息丢失 |
| Screenshot + AXTree | 信息最丰富 | 上下文更大、跨模态对齐更难 |
动作是鼠标、键盘等 pyautogui 风格操作,以及 WAIT、FAIL、DONE。Agent 不直接调用应用内部 API,因此更接近人类实际操作,却也更容易受分辨率、焦点和延迟影响。
环境工程为何是论文核心
可重置虚拟机
每个任务运行前恢复 snapshot,完成后可以丢弃变化。论文支持 Ubuntu、Windows、macOS 架构,主数据以 Ubuntu 为核心,并支持无头并行执行。
组合式初始化
Setup 可以复制文件、修改配置、打开应用和定位页面。复杂初始状态不依赖人工点击,减少了评测前置噪声。
执行式 evaluator
评分不只读屏幕:它可以检查生成文件、浏览器 cookies、应用内部对象、accessibility 属性和其他系统状态。多个 getter 与 metric 组合后还能给部分得分。
例如“把表格中的某列格式化并保存”应检查实际 spreadsheet 内容,而不是只看 Calc 是否打开;“下载文件到指定目录”应检查文件系统,而不是信任 Agent 回复。
结果:模型离人类还有多远
论文评估多种多模态与文本 Agent。不同观察、模型和动作配置的成功率约 0.99%–12.24%,其中最佳基础配置约 12.24%;加入人工工作流等辅助的设置约 6.57%(具体配置不可与基础表逐项混比)。人类基线约 72.36%。
这个巨大差距来自一系列串联错误:
- 看不见或误读目标控件;
- 不能可靠把视觉位置映射到鼠标坐标;
- 忘记滚动、切换 tab 或激活窗口;
- 局部动作成功,却没有保持任务全局约束;
- 错过保存、确认对话框或最终验证;
- 达到 15 步上限。
因此 OSWorld 衡量的不只是 GUI grounding,也同时测量计划、记忆、跨应用状态和停止判断。
Harness 的关键问题
状态恢复不是测试清理,而是基准定义
如果第一次运行留下文件、登录状态或窗口布局,第二次任务就不同。Snapshot ID、镜像 hash、系统语言、时区、分辨率和应用版本都应进入运行清单。
观察需要时间语义
GUI 是异步的。点击后立即截图可能得到过渡帧,固定 sleep 又浪费时间。Harness 应有可观测的等待策略:等待元素出现、网络空闲、窗口标题变化或达到超时,并记录等待原因。
坐标动作要有护栏
一次偏移可能点击删除、发送或购买。生产环境应优先用元素标识和受限动作;必须使用坐标时,执行前可截图确认目标区域,高风险动作需审批。
DONE 只是候选结束
Agent 说 DONE 后,evaluator 仍要检查真实文件和应用状态。若失败,可按策略返回差异让 Agent 修复,或终止并记录失败,不能直接采信自报。
如何设计小规模复现
先选 20 个确定性较高的单应用任务和 10 个跨应用任务:
- 固定 Ubuntu 镜像、分辨率、语言、时区和应用版本;
- 每个任务运行前恢复 snapshot,运行后保存 evaluator 结果;
- 对比 screenshot、AXTree、组合观察;
- 对比坐标动作与 element-grounded 动作;
- 每种配置运行 3 次,报告均值、方差和基础设施失败;
- 保存视频/截图序列、动作、窗口焦点和 evaluator 明细;
- 注入弹窗、延迟和窗口遮挡,测试恢复能力。
成本统计应包括模型 token、VM 启动、每步截图与总 wall time。GUI Agent 的主要成本往往不只来自模型调用。
失败分类建议
| 层 | 示例 |
|---|---|
| Perception | OCR 错、漏掉图标、AXTree 缺元素 |
| Grounding | 找对按钮但坐标点偏 |
| Action | 键盘布局或快捷键不匹配 |
| State | 焦点、窗口、tab 追踪错误 |
| Planning | 跨应用步骤顺序错误 |
| Recovery | 弹窗或异常后无法恢复 |
| Verification | 没保存、错误宣告完成 |
| Infrastructure | VM、应用或网络自身故障 |
将这些全部压成“任务失败”会让优化失去方向。
局限与风险
- 369 个主任务覆盖有限,应用和系统版本会快速变化;
- 15 步限制便于成本控制,却可能低估慢而正确的策略;
- evaluator 脚本本身可能不完整或对等价解不够宽容;
- 无头 VM、字体和渲染差异会影响截图与坐标;
- 人类基线的操作条件与 Agent 未必完全对等;
- 基准环境中的安全隔离不能自动迁移到用户真实桌面;
- 真实桌面含账号、隐私与不可逆操作,生产部署需要更严格权限和审批。
OSWorld 对 Harness 最深的影响是把“环境”从一个函数提升为完整生命周期:创建、初始化、观察、执行、等待、验收、归档和销毁。桌面 Agent 的模型只是其中一环,环境编排本身就是系统能力。