Coding agents on one model

Four agent configurations, one model, 25 SWE-bench Verified instances. Resolve rates: 19, 19, 21, 19 of 25. The spread is inside measured run-to-run variance, so this run does not rank them.

model      claude-sonnet-5
Claude Code  2.1.252 (Claude Code)
opencode     1.18.25
localcode    0.80.1
benchmark  SWE-bench Verified, 25 of 500 instances, one run each

Result

AgentResolvedAvg secAvg tool callsAvg output tokensAvg costTotal cost
Claude Code19 / 2511017.64,975$0.26$6.52
localcode (Smart Agent off)19 / 2516729.89,434not reportednot reported
localcode (Smart Agent on)21 / 2513929.57,586not reportednot reported
opencode19 / 2552126.86,780$0.29$7.34

Qualifications:

Per-instance results

Instance ids link to the upstream pull request that fixed the issue, which is the reference each patch was scored against.

InstanceRepositoryDifficultyClaude Codelocalcode (Smart Agent off)localcode (Smart Agent on)opencode
astropy__astropy-13453astropy/astropy15 min - 1 hourpasspasspasspass
astropy__astropy-7336astropy/astropy<15 min fixpasspasspasspass
django__django-12193django/django<15 min fixfailfailfailfail
django__django-13809django/django15 min - 1 hourpasspasspassstalled
django__django-16100django/django<15 min fixpasspasspasspass
matplotlib__matplotlib-24026matplotlib/matplotlib15 min - 1 hourpasspasspassstalled
matplotlib__matplotlib-24570matplotlib/matplotlib<15 min fixpasspasspasspass
mwaskom__seaborn-3187mwaskom/seaborn15 min - 1 hourpassfailpasspass
pallets__flask-5014pallets/flask<15 min fixpasspasspasspass
psf__requests-1142psf/requests<15 min fixpasspasspassstalled
psf__requests-1766psf/requests<15 min fixpasspasspasspass
psf__requests-2931psf/requests15 min - 1 hourpassfailpasspass
pydata__xarray-3095pydata/xarray15 min - 1 hourpasspasspasspass
pydata__xarray-3993pydata/xarray1-4 hourspasspasspasspass
pydata__xarray-4356pydata/xarray<15 min fixpasspasspassstalled
pylint-dev__pylint-4551pylint-dev/pylint1-4 hoursfailpasspasspass
pylint-dev__pylint-7080pylint-dev/pylint15 min - 1 hourfailfailfailpass
pytest-dev__pytest-10051pytest-dev/pytest15 min - 1 hourpasspasspasspass
pytest-dev__pytest-10356pytest-dev/pytest1-4 hoursfailfailpassstalled
pytest-dev__pytest-5631pytest-dev/pytest15 min - 1 hourpasspasspasspass
scikit-learn__scikit-learn-10844scikit-learn/scikit-learn15 min - 1 hourpasspasspasspass
scikit-learn__scikit-learn-25102scikit-learn/scikit-learn1-4 hourspasspasspasspass
scikit-learn__scikit-learn-25747scikit-learn/scikit-learn15 min - 1 hourfailpassfailpass
sphinx-doc__sphinx-8056sphinx-doc/sphinx15 min - 1 hourpassfailpasspass
sympy__sympy-13798sympy/sympy15 min - 1 hourfailpassfailpass

Instance failed by all four: django__django-12193

- self.widget.get_context(name + '_%s' % i, widget_value, final_attrs)
+ self.widget.get_context(name + '_%s' % i, widget_value, final_attrs.copy())

All four configurations produced the same incorrect fix. The shared model is a possible cause, but this run does not isolate the cause.

Setup

Two phases, run separately:

Conditions held equal across all four configurations:

Fresh home directory per run

All three tools keep state in the home directory: credentials, plugins, hooks, custom commands, memory index, session list. The machine used here carried an opencode configuration with a local-model provider and a plugin, and a Claude Code installation signed in to a subscription. Mechanism:

AGENT_HOME=/tmp/agenthome
rm -rf "$AGENT_HOME"; mkdir -p "$AGENT_HOME/.config/opencode"
cp /bench/opencode.json "$AGENT_HOME/.config/opencode/opencode.json"
chown -R "$BENCH_USER" "$AGENT_HOME" "$REPO" "$OUT"

setpriv --reuid=... --regid=... --init-groups \
    env HOME="$AGENT_HOME" PATH=/agents/node/bin:... \
        ANTHROPIC_API_KEY="$ANTHROPIC_API_KEY" \
    python /bench/runagent.py --out "$OUT" -- "$@"

Sources

Instance selection

opencode stall

Characteristics, from opencode's own event stream:

Limits

Smart Agent on versus off

Result: +2 instances, and 29 seconds faster per run, at the same number of tool calls. Not separable from noise at this sample size.

What the switches enable:

Confounds and observations: