ScreenEnv 릴리스: 풀 스택 데스크톱 에이전트 배포

Hugging Face는 Docker 컨테이너 내에서 격리된 Ubuntu 데스크톱 환경을 생성하도록 설계된 Python 라이브러리인 ScreenEnv를 소개했습니다. 이 도구를 사용하면 개발자는 에이전트가 실제 애플리케이션을 보고, 클릭하고, 상호 작용할 수 있는 샌드박스 환경에서 GUI 에이전트(컴퓨터 사용 에이전트)를 배포하고 테스트할 수 있습니다.

GUI 에이전트를 위한 샌드박스 데스크톱 환경

ScreenEnv는 코드로 완전히 제어할 수 있는 완전한 가상 데스크톱 세션을 제공합니다. 전통적인 자동화 프레임워크가 불안정하거나 복잡한 VM 설정을 필요로 하는 것과 달리, ScreenEnv는 Docker를 활용하여 격리되고 재현 가능하며 10초 이내에 배포할 수 있는 환경을 제공합니다. AMD64와 ARM64 아키텍처를 모두 지원합니다.

환경의 주요 기능은 다음과 같습니다:

  • Full Desktop Control: 마우스와 키보드 자동화, 창 관리, 애플리케이션 실행, 파일 작업 및 터미널 접근.
  • Session Management: 전체 세션을 기록하고 데스크톱 경험을 전체적으로 관리할 수 있는 기능.
  • Docker Native: 격리를 위해 Docker 컨테이너를 사용함으로써 복잡한 VM 요구 사항을 제거합니다.

통합 접근 방식

ScreenEnv는 에이전트 프레임워크 및 백엔드 시스템과 통합하기 위한 두 가지 뚜렷한 방법을 제공합니다:

Direct Sandbox API

세밀한 제어가 필요하거나 맞춤형 에이전트 프레임워크를 사용하는 개발자를 위해 Direct Sandbox API는 프로그래밍 방식 제어를 가능하게 합니다. 여기에는 Sandbox 클래스를 통해 애플리케이션을 실행하고, 텍스트를 입력하며, 스크린샷을 직접 캡처하는 기능이 포함됩니다.

MCP Server Integration

Model Context Protocol (MCP)을 지원하는 AI 시스템을 위해 ScreenEnv는 MCPRemoteServer를 제공합니다. 이를 통해 AI 에이전트는 데스크톱 환경에 연결하고 MCP 도구를 통해 제어할 수 있으며, 예를 들어 현재 화면 상태의 이미지 바이트를 받기 위해 "screenshot" 도구를 호출할 수 있습니다.

smolagents를 사용한 데스크톱 에이전트 구축

ScreenEnv는 smolagents와 기본적으로 호환되어 맞춤형 데스크톱 에이전트를 만들 수 있습니다. 이 과정은 세 가지 주요 단계로 구성됩니다:

  1. Model Selection: 사용자는 OpenAI, Hugging Face Inference Endpoints(예: Qwen2.5-VL-7B-Instruct), 로컬 Transformers 모델 또는 LiteLLM을 통한 기타 제공자(예: Claude 3.5 Sonnet)와 같은 커넥터를 사용하여 백엔드 Vision Language Model(VLM)을 선택할 수 있습니다.
  2. Agent Definition: DesktopAgentBase를 상속함으로써 개발자는 _setup_desktop_tools 메서드를 구현하여 에이전트의 행동 공간을 정의할 수 있습니다. 예시 도구로는 click(x, y), write(text), press(key), open(file_or_url), launch_app(app_name) 등이 있습니다.
  3. Execution: 에이전트는 특정 작업—예를 들어 LibreOffice를 열어 보고서를 작성하고 저장하는 작업—을 할당받아 정의된 Sandbox 환경에서 특정 해상도(예: 1920x1080)로 실행될 수 있습니다.

향후 로드맵

현재는 Ubuntu에 초점을 맞추고 있지만, ScreenEnv는 Android, macOS 및 Windows를 포함하도록 지원 범위를 확대할 계획입니다. 목표는 교차 플랫폼 GUI 자동화와 벤치마크 및 평가를 위해 특별히 재현 가능하고 샌드박스된 환경을 만드는 것입니다.

Sources