ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

UFO 接入 Windows Agent Arena (WAA) 基准:从部署到评测的完整实战指南

2026/9/16 17:25:20 拓冰建站 浏览量
UFO 接入 Windows Agent Arena (WAA) 基准:从部署到评测的完整实战指南 UFO 接入 Windows Agent Arena (WAA) 基准从部署到评测的完整实战指南【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO本文以 UFO 项目对 Windows Agent ArenaWAA基准的定制接入方案为核心完整讲解如何在 WSL 环境中构建 WAA 容器、集成 UFO 智能体、准备 Windows 11 黄金镜像并批量运行 154 个真实桌面任务评测的完整链路并深入 UFO 侧 LLM 评测EvaluationAgent的底层实现与参数配置帮助读者快速搭建一套可复现、可扩展的 Windows 桌面智能体评测环境。一、WAA 是什么面向 Windows 桌面智能体的 154 任务基准Windows Agent ArenaWAA是一套用于评测 AI 智能体在 Windows 操作系统上执行真实世界任务能力的基准套件。它由154 个任务组成覆盖15 个应用程序包括 Microsoft Office、Edge、文件资源管理器File Explorer、VS Code 等。这些任务覆盖了用户在计算机上日常执行的各类功能与交互方式是衡量UI 自动化智能体在真实桌面环境中可用性的重要标尺。本仓库UFO提供了一份对微软 WindowsAgentArena 的**定制化分支fork**适配方案将 UFOUI-Focused Agent面向 Windows 操作系统的 UI 自动化智能体作为--agent UFO接入 WAA 的评测框架从而在统一的容器化基准环境中度量 UFO 的实际任务完成率。在 UFO 文档体系中WAA 与 OSWorld-W 一起构成 UFO² 的两大公开在线评测基准见 Benchmark Overview基准范围Windows Agent Arena (WAA)154 个真实 Windows 任务覆盖 15 个应用Office、Edge、File Explorer、VS Code 等OSWorld (Windows)49 个跨应用任务混合 Office 365、浏览器与系统工具下文所有步骤均基于documents/docs/ufo2/evaluation/benchmark/windows_agent_arena.md中的官方部署流程展开并辅以仓库源码佐证。二、前置准备与仓库获取WSL 推荐官方部署指南强烈建议先在 WSLWindows Subsystem for Linux环境下阅读原始 WAA 部署指南熟悉其基本概念后再进行下述操作——本文的步骤默认你已了解原始环境的搭建前提。2.1 克隆定制化仓库git clone https://github.com/nice-mee/WindowsAgentArena.git 若需运行 OSWorld 用例请切换到专用开发分支git checkout 2020-qqtcg/dev2.2 创建占位配置文件在仓库根目录创建config.json写入一个占位 Key后续 UFO 会覆盖该值{ OPENAI_API_KEY: placeholder }从配置加载逻辑看WAA 客户端在启动时会读取该文件中的 API Key 完成 OpenAI 客户端初始化接入 UFO 后真正的凭据改由 UFO 自身的 LLM 配置ufo/config/config.json即本仓库config/ufo/agents.yaml.template所对应的运行时配置接管。三、构建 Docker 镜像进入scripts目录并构建容器镜像cd scripts chmod x build-container-image.sh prepare-agents.sh # 如遇权限问题先赋权 ./build-container-image.sh --build-base-image true该命令会基于src/下的最新代码生成windowsarena/winarena:latest镜像。--build-base-image true表示同时构建基础镜像层首次构建耗时较长请耐心等待。四、将 UFO 集成进 WAA 容器4.1 配置与拷贝 UFO通过ufo/config/config.json完成 UFO 的 LLM 配置该配置文件对应本仓库 config/ufo/agents.yaml.template 的运行时实例需按实际 API 凭据填写。将整个ufo文件夹拷贝到 WAA 容器的客户端目录cp -r src/win-arena-container/vm/setup/mm_agents/UFO/ufo src/win-arena-container/client/4.2 Python 3.9 兼容性修复关键⚠️ 在ufo/llm/openai.py中需要交换staticmethod与functools.lru_cache()的装饰器顺序以避免已知的 Python 3.9 缺陷。从当前仓库源码可以看到ufo/llm/openai.py中存在两处此类用法get_openai_client与get_aad_token_provider。Python 3.9 中装饰器组合顺序不当会导致缓存包装静态方法时报错或缓存失效因此必须调整为functools.lru_cache()在上、staticmethod在下的写法即先应用lru_cache、再声明为静态方法确保 WAA 容器内 Python 3.9 环境能够正常实例化 OpenAI/AzureOpenAI 客户端。五、准备 Windows 11 虚拟机与黄金镜像5.1 下载 Windows 11 Enterprise 评估版 ISO前往 Microsoft Evaluation Center接受条款后下载Windows 11 Enterprise Evaluation英文版90 天试用约 6GB。将文件重命名为setup.iso放入WindowsAgentArena/src/win-arena-container/vm/image5.2 生成黄金镜像快照准备一个完全配置好的 30GB Windows VM 快照即黄金镜像cd ./scripts ./run-local.sh --mode dev --prepare-image true⚠️镜像准备期间切勿与 VM 交互。脚本会在准备完成后自动关闭 VM。黄金镜像最终保存在WindowsAgentArena/src/win-arena-container/vm/storage该快照是所有后续实验的干净起点其质量直接决定评测结果的公平性与可复现性。六、首次启动与初始配置First Boot Setup使用单条自定义用例进行首次冒烟启动./run-local.sh --mode dev --json-name evaluation_examples_windows/test_custom.json --agent UFO --agent-settings {llm_type: azure, llm_endpoint: https://cloudgpt-openai.azure-api.net/openai/deployments/gpt-4o-20240513/chat/completions?api-version2024-04-01-preview, llm_auth: {type: api-key, token: }}VM 启动后需完成以下设置不要输入设备代码device code——这会让 WAA 服务端无限期存活便于持续评测。访问http://localhost:8006完成以下初始化动作禁用 Windows 防火墙Windows Firewall打开Google Chrome完成首次启动设置打开VLC完成首次启动设置初始化完成后停止客户端Stop the client从storage目录备份黄金镜像作为后续每轮实验的恢复源七、批量运行正式实验每轮实验开始前用准备好的黄金快照替换当前 VM 镜像确保每轮任务环境一致清空之前的 UFO 日志避免旧轨迹干扰。然后运行完整评测./run-local.sh --mode dev --json-name evaluation_examples_windows/test_full.json --agent UFO --agent-settings {llm_type: azure, llm_endpoint: https://cloudgpt-openai.azure-api.net/openai/deployments/gpt-4o-20240513/chat/completions?api-version2024-04-01-preview, llm_auth: {type: api-key, token: }}7.1 三种评测用例文件的区别文件含义适用场景test_custom.json自定义单条用例首次启动冒烟测试、调试单个任务test_full.json所有具备 UIA 可用性的测试用例未使用 OmniParser 时的标准选择test_all.json全部测试用例包含与 UIA 不兼容的用例使用 OmniParser 等视觉 grounding 方案时官方提示如果你没有使用 OmniParser请使用test_full.json。因为 UIAUI Automation无法覆盖的任务需要依赖视觉模型如 OmniParser来完成元素定位无视觉方案时强行运行这些用例只会拉低整体分数并产生无意义失败。7.2 agent-settings 参数解析--agent-settings是传入 UFO 智能体的 LLM 服务配置三个核心字段对应关系如下字段含义与 UFO 配置的对应llm_typeLLM 服务类型对应agents.yaml.template中API_TYPE此处为 Azure OpenAI即aoaillm_endpointAzure OpenAI 部署的 chat/completions 端点对应API_BASE含deployments/{模型}/chat/completions与api-versionllm_auth认证方式type: api-keytoken对应API_KEY可在 WAA 侧注入无需写死在 UFO 配置中在本仓库 config/ufo/agents.yaml.template 中可以看到等价的完整写法EVALUATION_AGENT: VISUAL_MODE: True API_TYPE: aoai API_BASE: https://YOUR_RESOURCE.openai.azure.com API_KEY: YOUR_AOAI_KEY API_VERSION: 2024-02-15-preview API_MODEL: gpt-4o API_DEPLOYMENT_ID: YOUR_DEPLOYMENT_ID八、深入UFO 侧的 LLM 评测链路WAA 负责跑任务、收轨迹而判定任务是否真正完成则依赖 UFO 内置的EvaluationAgent。理解这一层才能读懂评测分数从何而来。8.1 EvaluationAgent 的输入输出EvaluationAgent实现见 ufo/agents/agent/evaluation_agent.py是一个完全由 LLM 驱动的评测智能体输入包括输入说明User Request被评测的原始用户请求APIs Description执行过程中使用的工具/API 描述由context_provision从 MCP 工具信息构建Action TrajectoriesHostAgent/AppAgent 的执行轨迹subtask、step、observation、thought、plan、comment、action、applicationScreenshots执行期间捕获的屏幕截图首尾两张或全部取决于EVA_ALL_SCREENSHOTS其输出为严格 JSON{ reason: detailed reason based on screenshots and trajectory, sub_scores: [ { name: sub-score 1, evaluation: yes/no/unsure }, { name: sub-score 2, evaluation: yes/no/unsure } ], complete: yes/no/unsure }评测采用 Chain-of-Thought 机制先把用户请求分解为多个子目标逐一打分子评分再聚合为整体完成状态yes / no / unsure。评测结果保存在logs/{task_name}/evaluation.log。8.2 评测提示词一份可审阅的评判标准评测提示词模板位于 ufo/prompts/evaluation/evaluate.yaml它详细定义了系统提示与用户提示并针对截图策略提供两种变体screenshots_head_tail仅提供执行前与执行后的两张截图screenshots_all提供每一步执行前的截图与最终截图要求逐步对比差异做出更精确的判断。模板还约束评测者输出sub_scores子评分点必须基于原始请求与应用场景而非智能体的执行轨迹并要求提供尽可能详细的理由同时明确不得编造答案。该提示词由EvaluationAgentPrompterufo/prompter/eva_prompter.py在运行时加载并格式化。8.3 截图处理的两处工程细节eva_prompter.py中针对视觉评测做了两处关键工程处理占位图过滤_is_valid_screenshot/_is_valid_screenshot_str会剔除 1x1 占位图、全黑图与过短的 base64 载荷避免把无意义的占位图送入视觉模型数量上限MAX_EVAL_IMAGES 40多数 API 单请求图片上限为 50 张保留余量给最终截图防止请求因图片过多而失败。若整场会话没有任何有效截图例如远程桌面断开会退化为仅基于文本轨迹评估并给出明确提示。8.4 评测行为开关EVA_* 参数评测行为由 config/ufo/system.yaml 中的三个布尔开关控制配置项说明默认值EVA_SESSION是否对整个 Session 进行整体评测TrueEVA_ROUND是否对每一轮Round分别评测FalseEVA_ALL_SCREENSHOTS是否将所有截图纳入评测为False时仅使用首尾两张截图TrueEVA_ALL_SCREENSHOTS直接决定eva_prompter.py中system_prompt_construction选择screenshots_all还是screenshots_head_tail作为截图描述注入系统提示。在 WAA 批量评测场景中若单任务步数较多可考虑将其置为False以降本提速若追求评测精度则保持True。九、总结与注意事项环境全程推荐 WSLVM 准备阶段禁止交互等待自动关机每轮实验前务必恢复黄金镜像并清理 UFO 日志保证环境一致。用例选择不用 OmniParser 就用test_full.jsontest_all.json仅在有视觉 grounding 方案时使用。Python 版本容器内 Python 3.9 需完成ufo/llm/openai.py中静态方法与缓存装饰器的顺序修复否则 UFO 无法在容器内初始化 LLM 客户端。评测可信度LLM 评测并非 100% 准确仓库文档明确说明其结果应作为指导而非绝对真理子评分点设计、截图质量与提示词模板都会影响最终分数如需二次校验可结合logs/{task_name}/evaluation.log中的reason进行人工抽检。至此一套克隆 → 建镜像 → 集成 UFO → 制备黄金镜像 → 冒烟 → 批量评测的完整 WAA 评测流水线即可落地。更多关联内容可继续阅读 OSWorld 接入指南、Benchmark Overview 与 EvaluationAgent 说明。【免费下载链接】UFOUFO³: Weaving the Digital Agent Galaxy项目地址: https://gitcode.com/GitHub_Trending/uf/UFO创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考