{"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/arxiv-2605-17373","title":"FML-bench: A Controlled Study of AI Research Agent Strategies from the Perspective of Search Dynamics","arxiv_id":"2605.17373","date":"2026-05-17","proceeding":null,"authors":["Qiran Zou","Hou Hei Lam","Wenhao Zhao","Tingting Chen","Yiming Tang","Samson Yu","Yingtao Zhu","Srinivas Anumasa","Zufeng Zhang","Tianyi Zhang","Chang Liu","Zhengyao Jiang","Anirudh Goyal","Dianbo Liu"],"abstract":"AI research agents accelerate ML research by automating hypothesis generation, experimentation, and empirical refinement. Existing agent strategies range from greedy hill-climbing to tree search and evolutionary optimization, yet which strategy choices drive performance remains unclear. Answering this question requires a benchmark that separates agent strategy (e.g., search topology) from execution infrastructure (e.g., code editor), so that performance differences are attributable to strategy rather than infrastructure, and that provides process-level metrics beyond final scores to analyze exploration behaviors. Existing benchmarks offer limited support. We propose FML-Bench, a benchmark of 18 fundamental ML research tasks across 10 domains that separates agent strategy from execution infrastructure and defines 12 process-level behavioral metrics. Evaluating six representative agents, we find that: (1) strategy complexity alone does not guarantee strong performance: a simple greedy hill-climber nearly matches the best-performing tree-search agent, both well above the remaining agents; (2) our analysis suggests this pattern relates to improvement opportunity structure: greedy search tends to be more effective when opportunities are dense, while tree-search and evolutionary strategies tend to be more effective when opportunities are sparse; an adaptive agent built on this insight switches to broader exploration upon detecting improvement stagnation and outperforms the other six agents, lending initial support to this observation; and (3) process-level analysis reveals that early convergence and directionally focused exploration are significantly associated with final performance, while solution diversity and compute cost are not. Our benchmark is available at: https://github.com/qrzou/FML-bench.","url_abs":"https://arxiv.org/abs/2605.17373","url_pdf":"https://arxiv.org/pdf/2605.17373","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2605.17373","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.17373"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/qrzou/FML-bench","reach":null}],"summary":{"ran":9,"unverified":2},"by_repo_kind":{"found_in_text":{"samples":11,"ran":9,"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":"c1dad570c33f51c5","entry":"apply_overrides","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"run_agent_benchmark.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/run_agent_benchmark.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c1dad570c33f51c5"}},{"code_sha256_prefix":"6f1a530eefc5335e","entry":"canonical_metric","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"compute_agent_metrics.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/compute_agent_metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6f1a530eefc5335e"}},{"code_sha256_prefix":"f997bad1583a6091","entry":"extract_token_usage_from_aider","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"benchmark/utils.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/benchmark/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"f997bad1583a6091"}},{"code_sha256_prefix":"79b6ab747d360344","entry":"extract_usage_info","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"agents/llm.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/agents/llm.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"79b6ab747d360344"}},{"code_sha256_prefix":"b5cef3c87be6ebad","entry":"filter_metrics_for_prompt","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"benchmark/utils.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/benchmark/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b5cef3c87be6ebad"}},{"code_sha256_prefix":"b1ead7d50c71ea58","entry":"get_model","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"ml_tasks/Data_Efficiency_usb/algorithm.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/ml_tasks/Data_Efficiency_usb/algorithm.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b1ead7d50c71ea58"}},{"code_sha256_prefix":"e1de7b725fe7364c","entry":"is_run_candidate","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"compute_agent_metrics.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/compute_agent_metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"e1de7b725fe7364c"}},{"code_sha256_prefix":"482d5c051704c0e8","entry":"load_config","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"run_agent_benchmark.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/run_agent_benchmark.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"482d5c051704c0e8"}},{"code_sha256_prefix":"8f5d29015652fdf4","entry":"safe_load_json","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"compute_agent_metrics.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/compute_agent_metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8f5d29015652fdf4"}},{"code_sha256_prefix":"c8399a4a4044c721","entry":"get_changed_files","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"benchmark/utils.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/benchmark/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"c8399a4a4044c721"}},{"code_sha256_prefix":"6a9777b2e8b2e82c","entry":"run_causal_discovery","repo":"qrzou/FML-bench","repo_kind":"found_in_text","path":"ml_tasks/Causality_gcastle/algorithm.py","file_url":"https://github.com/qrzou/FML-bench/blob/HEAD/ml_tasks/Causality_gcastle/algorithm.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"6a9777b2e8b2e82c"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}