ScreenEnv 发布:部署全栈桌面代理

Hugging Face 推出了 ScreenEnv,这是一款用于在 Docker 容器中创建隔离的 Ubuntu 桌面环境的 Python 库。该工具允许开发者在沙盒环境中部署和测试 GUI 代理(计算机使用代理),使代理能够看到、点击并与真实应用程序交互。

用于 GUI 代理的沙盒桌面环境

ScreenEnv 提供了一个完整的虚拟桌面会话,可通过代码完全控制。不同于可能脆弱或需要复杂虚拟机设置的传统自动化框架,ScreenEnv 利用 Docker 提供一个隔离、可复现且可在 10 秒内部署的环境。它支持 AMD64 和 ARM64 架构。

环境的关键功能包括:

  • 完整桌面控制:鼠标和键盘自动化、窗口管理、应用程序启动、文件操作以及终端访问。
  • 会话管理:能够记录完整会话并整体管理桌面体验。
  • Docker 原生:通过使用 Docker 容器进行隔离,消除复杂的虚拟机需求。

集成方式

ScreenEnv 提供了两种不同的方法,将其与代理框架和后端系统集成:

直接沙盒 API

对于需要细粒度控制或使用自定义代理框架的开发者,直接沙盒 API 允许以编程方式进行控制。这包括通过 Sandbox 类直接启动应用程序、输入文本以及捕获屏幕截图的能力。

MCP 服务器集成

对于支持模型上下文协议(Model Context Protocol,MCP)的 AI 系统,ScreenEnv 提供了 MCPRemoteServer。这使得 AI 代理能够连接到桌面环境,并通过 MCP 工具进行控制,例如调用 “screenshot” 工具以获取当前屏幕状态的图像字节。

使用 smolagents 构建桌面代理

ScreenEnv 与 smolagents 原生兼容,能够创建自定义桌面代理。该过程包括三个主要步骤:

  1. 模型选择:用户可以使用 OpenAI、Hugging Face 推理端点(例如 Qwen2.5-VL-7B-Instruct)、本地 Transformers 模型,或通过 LiteLLM(例如 Claude 3.5 Sonnet)等提供商的连接器来选择后端视觉语言模型(VLM)。
  2. 代理定义:通过继承 DesktopAgentBase,开发者可以实现 _setup_desktop_tools 方法来定义代理的动作空间。示例工具包括 click(x, y)write(text)press(key)open(file_or_url)launch_app(app_name)
  3. 执行:可以为代理分配特定任务——例如打开 LibreOffice 编写并保存报告——并在具有特定分辨率(例如 1920x1080)的 Sandbox 环境中执行。

未来路线图

虽然目前专注于 Ubuntu,ScreenEnv 计划扩展支持范围,涵盖 Android、macOS 和 Windows。其目标是实现跨平台 GUI 自动化,并创建可复现的沙盒环境,专用于基准测试和评估。

Sources