CodeMonkeys: Scaling Test-Time Compute for Software Engineering
Ryan Ehrlich, Bradley Brown, Jordan Juravsky, Ronald Clark, Christopher Ré, Azalia Mirhoseini
TL;DR
CodeMonkeys investigates scaling test-time compute to improve real-world software engineering problem solving on SWE-bench. It introduces a three-state-machine framework (Testing, Editing, Selection) that jointly generates edits and executable tests, enabling both serial and parallel scaling across issues. By amortizing codebase context via a codebase-wide relevance scan and applying a three-stage pipeline (context identification, candidate generation, and selection), it achieves 69.8% problem coverage and a 57.4% final SWE-bench Verified score with roughly $2300 in inference costs; an ensemble variant, Barrel of Monkeys, reaches 80.8% coverage and 66.2% final score, illustrating the potential of combining diverse sources. The work highlights limitations in context recall, generation diversity, and selection strategies, and outlines future directions such as richer feedback, longer context integration, and enhanced selection to further close the gap to oracle performance.
Abstract
Scaling test-time compute is a promising axis for improving LLM capabilities. However, test-time compute can be scaled in a variety of ways, and effectively combining different approaches remains an active area of research. Here, we explore this problem in the context of solving real-world GitHub issues from the SWE-bench dataset. Our system, named CodeMonkeys, allows models to iteratively edit a codebase by jointly generating and running a testing script alongside their draft edit. We sample many of these multi-turn trajectories for every issue to generate a collection of candidate edits. This approach lets us scale "serial" test-time compute by increasing the number of iterations per trajectory and "parallel" test-time compute by increasing the number of trajectories per problem. With parallel scaling, we can amortize up-front costs across multiple downstream samples, allowing us to identify relevant codebase context using the simple method of letting an LLM read every file. In order to select between candidate edits, we combine voting using model-generated tests with a final multi-turn trajectory dedicated to selection. Overall, CodeMonkeys resolves 57.4% of issues from SWE-bench Verified using a budget of approximately 2300 USD. Our selection method can also be used to combine candidates from different sources. Selecting over an ensemble of edits from existing top SWE-bench Verified submissions obtains a score of 66.2% and outperforms the best member of the ensemble on its own. We fully release our code and data at https://scalingintelligence.stanford.edu/pubs/codemonkeys.
