{"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/swe-search-enhancing-software-agents-with","title":"SWE-Search: Enhancing Software Agents with Monte Carlo Tree Search and Iterative Refinement","arxiv_id":"2410.20285","date":"2024-10-26","proceeding":null,"authors":["Antonis Antoniades","Albert Örwall","Kexun Zhang","Yuxi Xie","Anirudh Goyal","William Wang"],"abstract":"Software engineers operating in complex and dynamic environments must continuously adapt to evolving requirements, learn iteratively from experience, and reconsider their approaches based on new insights. However, current large language model (LLM)-based software agents often rely on rigid processes and tend to repeat ineffective actions without the capacity to evaluate their performance or adapt their strategies over time. To address these challenges, we propose SWE-Search, a multi-agent framework that integrates Monte Carlo Tree Search (MCTS) with a self-improvement mechanism to enhance software agents' performance on repository-level software tasks. SWE-Search extends traditional MCTS by incorporating a hybrid value function that leverages LLMs for both numerical value estimation and qualitative evaluation. This enables self-feedback loops where agents iteratively refine their strategies based on both quantitative numerical evaluations and qualitative natural language assessments of pursued trajectories. The framework includes a SWE-Agent for adaptive exploration, a Value Agent for iterative feedback, and a Discriminator Agent that facilitates multi-agent debate for collaborative decision-making. Applied to the SWE-bench benchmark, our approach demonstrates a 23% relative improvement in performance across five models compared to standard open-source agents without MCTS. Our analysis reveals how performance scales with increased search depth and identifies key factors that facilitate effective self-evaluation in software agents. This work highlights the potential of self-evaluation driven search techniques to enhance agent reasoning and planning in complex, dynamic software engineering environments.","url_abs":"https://arxiv.org/abs/2410.20285v3","url_pdf":"https://arxiv.org/pdf/2410.20285v3.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":"swe-search-enhancing-software-agents-with","repo_url":"https://github.com/aorwall/moatless-tools","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"swe-search-enhancing-software-agents-with","repo_url":"https://github.com/aorwall/moatless-tree-search","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"large-language-model","task_name":"Large Language Model"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2410.20285","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2410.20285"}},"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/aorwall/moatless-tree-search","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/aorwall/moatless-tools","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"ran":0,"repositories":2}},"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":"f365893876a34ed1","entry":"color_green","repo":"aorwall/moatless-tools","repo_kind":"official","path":"moatless/node.py","file_url":"https://github.com/aorwall/moatless-tools/blob/HEAD/moatless/node.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":"f365893876a34ed1"}},{"code_sha256_prefix":"6a9d360099bf8dea","entry":"color_red","repo":"aorwall/moatless-tools","repo_kind":"official","path":"moatless/node.py","file_url":"https://github.com/aorwall/moatless-tools/blob/HEAD/moatless/node.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":"6a9d360099bf8dea"}},{"code_sha256_prefix":"a5b46a4816502ca0","entry":"decide_badge","repo":"aorwall/moatless-tree-search","repo_kind":"official","path":"moatless/streamlit/tree_visualization.py","file_url":"https://github.com/aorwall/moatless-tree-search/blob/HEAD/moatless/streamlit/tree_visualization.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":"a5b46a4816502ca0"}},{"code_sha256_prefix":"3b0e1be56c9cfff6","entry":"extract_json_from_message","repo":"aorwall/moatless-tree-search","repo_kind":"official","path":"moatless/completion/model.py","file_url":"https://github.com/aorwall/moatless-tree-search/blob/HEAD/moatless/completion/model.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":"3b0e1be56c9cfff6"}},{"code_sha256_prefix":"0ce0a682fc9c3658","entry":"get_project_dir","repo":"aorwall/moatless-tools","repo_kind":"official","path":"moatless/context_data.py","file_url":"https://github.com/aorwall/moatless-tools/blob/HEAD/moatless/context_data.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":"0ce0a682fc9c3658"}},{"code_sha256_prefix":"26fccfdd400b982e","entry":"get_trajectory_dir","repo":"aorwall/moatless-tools","repo_kind":"official","path":"moatless/context_data.py","file_url":"https://github.com/aorwall/moatless-tools/blob/HEAD/moatless/context_data.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":"26fccfdd400b982e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}