{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/spa-bench-a-comprehensive-benchmark-for","title":"SPA-Bench: A Comprehensive Benchmark for SmartPhone Agent Evaluation","arxiv_id":"2410.15164","date":"2024-10-19","proceeding":null,"authors":["Jingxuan Chen","Derek Yuen","Bin Xie","Yuhao Yang","Gongwei Chen","Zhihao Wu","Li Yixing","Xurui Zhou","Weiwen Liu","Shuai Wang","Kaiwen Zhou","Rui Shao","Liqiang Nie","Yasheng Wang","Jianye Hao","Jun Wang","Kun Shao"],"abstract":"Smartphone agents are increasingly important for helping users control devices efficiently, with (Multimodal) Large Language Model (MLLM)-based approaches emerging as key contenders. Fairly comparing these agents is essential but challenging, requiring a varied task scope, the integration of agents with different implementations, and a generalisable evaluation pipeline to assess their strengths and weaknesses. In this paper, we present SPA-Bench, a comprehensive SmartPhone Agent Benchmark designed to evaluate (M)LLM-based agents in an interactive environment that simulates real-world conditions. SPA-Bench offers three key contributions: (1) A diverse set of tasks covering system and third-party apps in both English and Chinese, focusing on features commonly used in daily routines; (2) A plug-and-play framework enabling real-time agent interaction with Android devices, integrating over ten agents with the flexibility to add more; (3) A novel evaluation pipeline that automatically assesses agent performance across multiple dimensions, encompassing seven metrics related to task completion and resource consumption. Our extensive experiments across tasks and agents reveal challenges like interpreting mobile user interfaces, action grounding, memory retention, and execution costs. We propose future research directions to ease these difficulties, moving closer to real-world smartphone agent applications. SPA-Bench is available at https://ai-agents-2030.github.io/SPA-Bench/.","url_abs":"https://arxiv.org/abs/2410.15164v3","url_pdf":"https://arxiv.org/pdf/2410.15164v3.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"spa-bench-a-comprehensive-benchmark-for","repo_url":"https://github.com/ai-agents-2030/SPA-Bench","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"ai-agent","task_name":"AI Agent"},{"task_slug":"benchmarking","task_name":"Benchmarking"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"large-language-model","task_name":"Large Language Model"},{"task_slug":"multimodal-large-language-model","task_name":"Multimodal Large Language Model"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.15164","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.15164"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ai-agents-2030/SPA-Bench","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":9},"by_repo_kind":{"official":{"samples":9,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"e4cd70ac901e220a","entry":"get_agent","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"framework/utils.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/framework/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e4cd70ac901e220a"}},{"code_sha256_prefix":"0b7a699a2a8630d6","entry":"get_agent_config","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"framework/utils.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/framework/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0b7a699a2a8630d6"}},{"code_sha256_prefix":"12e670275d932244","entry":"get_apk","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"framework/utils.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/framework/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"12e670275d932244"}},{"code_sha256_prefix":"ad3be85e5d729dde","entry":"get_screenshot_file_names","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"pipeline/key_component_matcher.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/pipeline/key_component_matcher.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ad3be85e5d729dde"}},{"code_sha256_prefix":"df8cbc90cf7a15eb","entry":"gpt4o_evaluator","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"pipeline/vlm_evaluator.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/pipeline/vlm_evaluator.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"df8cbc90cf7a15eb"}},{"code_sha256_prefix":"a6ba4db449216409","entry":"key_component_match","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"pipeline/key_component_matcher.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/pipeline/key_component_matcher.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a6ba4db449216409"}},{"code_sha256_prefix":"0655ce56ccbf7725","entry":"safe_decode","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"framework/agents.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/framework/agents.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0655ce56ccbf7725"}},{"code_sha256_prefix":"a429061807f79a74","entry":"stage_1_checker","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"pipeline/cross_evaluator.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/pipeline/cross_evaluator.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"a429061807f79a74"}},{"code_sha256_prefix":"fdfd89ded0757c89","entry":"stage_1_parser","repo":"ai-agents-2030/SPA-Bench","repo_kind":"official","path":"pipeline/cross_evaluator.py","file_url":"https://github.com/ai-agents-2030/SPA-Bench/blob/HEAD/pipeline/cross_evaluator.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fdfd89ded0757c89"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}