MobileWorld Benchmark

repository·main·Indexed 42 days ago

https://github.com/tongyi-mai/mobileworld

A comprehensive benchmark for evaluating autonomous mobile agents in realistic, long-horizon, and interactive scenarios. It utilizes containerized Android environments (AVD) with open-source application backends like Mastodon and Mattermost, featuring snapshot-based state management and a dedicated CLI (`mw`) for running evaluations and inspecting trajectory logs.

Tokens
30.5K
Snippets
90
Records
131
Agent score
55%

What's inside MobileWorld

  1. Review the MobileWorld Docker image features (v1.0)

    main

    The initial release (v1.0) of the ghcr.io/tongyi-mai/mobile_world image provides a pre-configured environment including:

    • Android SDK 34 with google_apis;x86_64 system image.
    • Pre-configured AVD: Pixel_8_API_34_x86_64.
    • Embedded emulator (build 14214601).
    • MobileWorld server + viewer.
    • Docker-in-Docker (DinD) support for running Mattermost and Mastodon containers.
    • noVNC for optional GUI access via a web browser.
  2. Understand MobileWorld task flavors

    main

    MobileWorld tasks are categorized into three distinct flavors based on how the agent interacts with the environment:

    1. GUI-Only: The agent operates the Android phone autonomously without external assistance.
    2. Agent–User Interaction: Tasks are intentionally under-specified, requiring the agent to call the ask_user tool to request necessary clarifications.
    3. MCP: The agent utilizes Model Context Protocol (MCP) to call remote tools in conjunction with the mobile GUI.

    Note: Current benchmark evaluations primarily focus on GUI-Only and Agent–User Interaction tasks.

  3. Implement loop-breaking for stalled progress

    main

    A common failure mode for mobile agents is repeating the same ineffective action (e.g., clicking a non-interactive label or scrolling a list that doesn't move).

    To implement effective loop-breaking, the agent should:

    1. Detect when an action produces no observable change in the UI.
    2. Escalate or switch the action_type to a different interaction pattern (e.g., switching from click to drag, or from scroll to long-press) to break the stall.
    # Example of escalating from a failed click to a successful drag
    
    # Failed attempt (Looping)
    Thought: I need to click on "Brightness level" to access the brightness slider.
    Action: {"action_type": "click", "coordinate": [288, 451]}
    
    # Successful loop-breaking (Escalation)
    Thought: I can see the brightness slider at the top of the screen. It's currently at about 48%. I need to drag the slider to the maximum.
    Action: {"action_type": "drag", "start_coordinate": [279, 115], "end_coordinate": [540, 115]}
  4. Identify common failure modes in mobile agent models

    main

    Even with model upgrades (like Claude Opus 4.7), certain task clusters consistently fail due to navigation and resource constraints rather than reasoning gaps. Common failure mechanisms include:

    • Advanced UI Navigation (e.g., Mastodon): Agents fail when Android clients lack features available on web versions, or when encountering naming ambiguities (e.g., confusing 'posting language' with 'account language').
    • Long-thread Workflows (e.g., Mattermost):
      • Phantom execution: The agent's thought log claims an action (like attaching a file) was successful, but the trace shows the action was never actually executed.
      • Step-budget exhaustion: High working-memory loads (reading 10+ messages) cause the agent to exhaust its 50-step budget before completing the task.
    • PDF/Document Reading: Agents often get stuck in search-and-scroll loops, finding text mentions but failing to navigate to specific UI elements like table cells.
    • Archive/Filtering Workflows: Agents may exhaust their step budget performing tedious manual filtering (e.g., checking file dates in a list) before reaching the final goal (e.g., zipping and emailing).
  5. Analyze Kimi K2.6 model upgrade patterns

    main

    The Kimi K2.6 upgrade shows significant improvements over K2.5, primarily through better loop-breaking and environment awareness.

    Key improvement patterns include:

    • Loop-breaking: K2.6 detects when actions (like scrolling or clicking) fail to change the environment state and pivots to a new strategy, whereas K2.5 often repeats the same action for 30–50 steps.
    • Better environment knowledge: K2.6 has improved awareness of app-specific patterns, such as GitHub API endpoints, Mattermost member lists, and Android "Copy to" flows.
    • Multi-app workflow completion: K2.6 better manages step budgets when transitioning between apps (e.g., moving from a calendar to an alarm, or email to SMS).

    Regression Note: K2.6 exhibits a regression in over-precise semantic interpretation. It may fail keyword-based tasks by being too linguistically precise (e.g., excluding "short-sleeve pajamas" from a search for "short-sleeve T-shirts").

  6. Use the General End-to-End Prompt for Mobile Agents

    main

    The MobileWorld project provides a highly adaptable, general end-to-end prompt designed for direct coordinate output across diverse LLMs. This framework establishes a unified benchmark for instruction-following and GUI-operation capabilities.

    Key Design Features:

    • Structured action space: Supports actions like click, long_press, drag, scroll, input_text, etc., using explicit JSON schemas.
    • Normalized coordinates: Actions like click expect {"action_type": "click", "coordinate": [x, y]} where coordinates are normalized to a configurable scale (e.g., 0–1000 for Gemini, or absolute pixels for Claude).
    • Thought–Action format: Responses follow a Thought: ... Action: {...} structure for easy parsing and debugging.
    • User interaction support: Includes ask_user and answer actions to handle tasks requiring human clarification.
    {
      "action_type": "click",
      "coordinate": [x, y]
    }
  7. Understand GUI Grounding Paradigms

    main

    GUI grounding is the ability of a multimodal model to accurately identify and interact with specific pixels or UI elements. There are three primary paradigms used to achieve this:

    1. Set-of-Mark (SoM): A specialized parser (like OmniParser V2) identifies UI elements and overlays bounding boxes/identifiers on the interface. The MLLM then acts as a reasoning engine to select the correct identifier. This method often suffers from high visual noise and ambiguity in dense layouts.
    2. End-to-End (E2E): The model processes raw screenshots directly and predicts (x, y) coordinates without external parsers. While more direct, performance can drop significantly on high-resolution displays with dense layouts.
    3. Inference-Phase Optimization (Interactive): Transforms grounding into a multi-step process using tools like a Zoom-In (crop-and-zoom) tool. This allows the model to inspect high-resolution areas more closely, significantly improving spatial precision.
  8. How MobileWorld Evaluation Works

    main

    MobileWorld is a benchmark for autonomous mobile agents using a containerized, deterministic approach.

    System Architecture

    • Containerized Environment: Runs in Docker-in-Docker, including a rooted Android Virtual Device (AVD), application backends, and an orchestration API server.
    • Open-Source Applications: Uses stable backends like Mattermost, Mastodon, and Mall4Uni to allow precise control over task initialization.
    • Snapshot-Based State Management: Uses AVD snapshots to ensure every task starts from an identical, reproducible state.

    Verification Methods

    Tasks are verified using:

    • Textual Answer Verification: Pattern matching/string comparison.
    • Backend Database Verification: Direct queries to validate state changes (e.g., messages, posts).
    • Local Storage Inspection: ADB-based inspection of app data (e.g., calendar, email).
    • Application Callbacks: Custom APIs for intermediate state validation.
  9. Understand MobileWorld server ports and architecture

    main

    The MobileWorld server runs inside the container via uv run mobile-world server --port <port>. Each container instance uses three ports based on a base port (e.g., 6800):

    • Backend API: Base port (e.g., http://localhost:6800). Provides FastAPI backend and a /health endpoint.
    • Device Viewer: Base + 1060 (e.g., http://localhost:7860).
    • VNC: Base - 1000 (e.g., http://localhost:5800). Enabled via --vnc or automatically in --dev mode.

    When launching multiple containers, they are spaced 100 ports apart (e.g., Container 1 starts at 6900).

  10. Optimize GUI Grounding with GUI-RCPO

    main

    GUI-RCPO is a test-time scaling strategy that outperforms simple Pass@k selection by aggregating multiple spatial hypotheses to correct stochastic errors.

    To implement GUI-RCPO:

    1. Generate k independent predictions from the model.
    2. Construct a 50×50 pixel bounding box around each prediction.
    3. Compute the intersection center of these boxes to determine the final coordinate.