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 原生兼容,能够创建自定义桌面代理。该过程包括三个主要步骤:
- 模型选择:用户可以使用 OpenAI、Hugging Face 推理端点(例如 Qwen2.5-VL-7B-Instruct)、本地 Transformers 模型,或通过 LiteLLM(例如 Claude 3.5 Sonnet)等提供商的连接器来选择后端视觉语言模型(VLM)。
- 代理定义:通过继承
DesktopAgentBase,开发者可以实现_setup_desktop_tools方法来定义代理的动作空间。示例工具包括click(x, y)、write(text)、press(key)、open(file_or_url)和launch_app(app_name)。 - 执行:可以为代理分配特定任务——例如打开 LibreOffice 编写并保存报告——并在具有特定分辨率(例如 1920x1080)的
Sandbox环境中执行。
未来路线图
虽然目前专注于 Ubuntu,ScreenEnv 计划扩展支持范围,涵盖 Android、macOS 和 Windows。其目标是实现跨平台 GUI 自动化,并创建可复现的沙盒环境,专用于基准测试和评估。