Aider 0.86.2: our test log
Aider 0.86.2 implemented a missing function with a local 3B model in 3 of 3 trials (27 to 32 s each); it did not install on Python 3.13 without a C++ compiler, and it left a stray placeholder comment in the file.
Tested by us on 2026-10-25. Local open-weight model, not the vendor's hosted models. A smoke test on a CPU-only box, not a benchmark.
Result at a glance
| Field | Value |
|---|---|
| Result | Passed |
| Version tested | 0.86.2 |
| Date and time | 2026-10-25, 22:19 to 22:47 CDT (America/Chicago) |
| Task | In a throwaway folder, give the tool a small bug and ask a local model to fix it through the tool's own file-editing. mathutil.py contained clamp(value, low, high) whose body was raise NotImplementedError; test_mathutil.py asserts three clamp cases. Pass means test_mathutil.py prints ok after one aider run. |
| Model used | Qwen2.5-3B-Instruct (Q4_K_M) through Ollama 0.40.11 |
| Hardware | Linux x86_64 virtual machine (Debian 13), 8 vCPU (Intel Xeon, 1 thread per core), 15 GiB RAM, no GPU |
| Install (uv, Python 3.12, cold) | 6.5 s, 555 MB, 110 packages |
| Edit task trials passed | 3 of 3 |
| Edit task wall time | 26.8 to 32.2 s |
| Load average before trials | 4.5 to 8.1 |
What we found
- 3 of 3 trials produced a working clamp (max(low, min(value, high))) and the test printed ok, in 26.8 to 32.2 s each on a 3B local model, using the whole-file edit format.
- Each result also contained the literal comment "# ... entire content of the file ..." that the model copied from the edit-format instructions. Functionally harmless, but it is junk in your file and shows a small model following the template too literally.
- Aider asks the model to emit a diff-style block for every file in the chat; the 3B model produced an empty block for the test file, and aider logged it as an applied edit. The test file was unchanged (verified with git).
What we ran, step by step
| Step | Wall time | Exit code | Notes |
|---|---|---|---|
| Install on Python 3.12 with uv | 6.5 s | 0 | aider 0.86.2, 555 MB on disk, 110 installed packages. Load 0.62. |
| Install on Python 3.13 (first attempt) | n/a | 1 | Failed after 5.8 s: a dependency had to be built from source and meson reported 'Unknown compiler(s): [[c++], [g++], [clang++], [nvc++], ...]'. This machine has gcc but no C++ compiler. On Python 3.12 the same install worked without compiling, so the failure is about a missing prebuilt wheel for 3.13 plus no C++ toolchain. |
| Edit task trial 1 | 29.1 s | 0 | python3 test_mathutil.py printed ok afterwards. Load 4.51. |
| Edit task trial 2 | 32.2 s | 0 | python3 test_mathutil.py printed ok afterwards. Load 6.47. |
| Edit task trial 3 | 26.8 s | 0 | python3 test_mathutil.py printed ok afterwards. Load 8.14. |
| Verification rerun after resetting the repo | 16 s | 0 | git status showed only mathutil.py modified; the test passed. Aider still prints "Applied edit to test_mathutil.py" because the model sent an empty block for it. |
# Install on Python 3.12 with uv
uv venv -q -p 3.12 work/aider312 && VIRTUAL_ENV=work/aider312 uv pip install --no-cache -q aider-chat
# Install on Python 3.13 (first attempt)
uv pip install aider-chat # on Python 3.13.5
# Verification rerun after resetting the repo
git checkout -- mathutil.py && aider ... && git status --shortRaw output (excerpts)
OPENAI_API_KEY=x OPENAI_API_BASE=http://127.0.0.1:11434/v1 aider --model openai/qwen2.5-3b --edit-format whole --no-show-model-warnings --no-check-update --analytics-disable --no-auto-commits --no-gitignore --no-pretty --no-stream --yes-always --no-detect-urls --map-tokens 0 --message 'Implement clamp in mathutil.py so test_mathutil.py passes. Return value limited to [low, high].' mathutil.pydef clamp(value, low, high):
"""Return value limited to the range [low, high]."""
return max(low, min(value, high))
# ... entire content of the file ...from mathutil import clamp
assert clamp(5, 0, 10) == 5
assert clamp(-3, 0, 10) == 0
assert clamp(99, 0, 10) == 10
print("ok")```
mathutil.py
```diff
@@ -1,3 +1,5 @@
def clamp(value, low, high):
"""Return value limited to the range [low, high]."""
- raise NotImplementedError
+ return max(low, min(value, high))
+
+# ... entire content of the file ...
```
This implementation ensures that the `clamp` function returns the value limited
to the range `[low, high]`.
Tokens: 757 sent, 178 received.
Applied edit to test_mathutil.py
Applied edit to mathutil.py
---
okGotchas and things that broke
- aider-chat did not install on Python 3.13 here: a dependency had no prebuilt wheel for 3.13 and needed a C++ compiler we do not have. Python 3.12 worked. If you use uv, pass -p 3.12, or install a C++ toolchain.
- Small local models cannot use aider's diff edit formats reliably; we forced --edit-format whole, which resends the entire file.
- We disabled analytics, update checks and the repository map to keep the run local and short; defaults were not measured.
What we did not test
- Any hosted model (aider is mostly used with them).
- Repo-map, git auto-commit, multi-file edits, voice and the browser UI.
- A single toy task; three trials is a smoke test, not a benchmark.
Reproduce it
Versions change. These commands install whatever is latest on the day you run them unless a version is pinned, so expect different results later. The version we measured is in the table above.
uv venv -p 3.12 .venv && VIRTUAL_ENV=.venv uv pip install aider-chat
# serve a local model at http://127.0.0.1:11434/v1 (we used Qwen2.5-3B-Instruct Q4_K_M, name qwen2.5-3b)
# create mathutil.py and test_mathutil.py as shown, git init and commit them, then run the command aboveHow to read this test
Every number on this page was measured on this one machine, which also ran other jobs, so timings are indicative and vary run to run. A pass means our small task worked once or as stated, a fail means it did not work as we ran it; neither says how the tool behaves with a vendor's frontier model, on a GPU, or at scale. Where a tool could not run without an account or a GPU, we say so instead of guessing.
See the testing rig for the hardware, the local model and the rules we follow, and the test hub for every other test.
Related tests: coding agents and clis
- Claude Code: Claude Code 2.1.310 edited calc.py through its Edit tool with a local 3B model on the second prompt (85.9 s); the first, vaguer prompt made no edit.
- Cline CLI: Cline CLI 3.0.73 edited calc.py correctly with a local 3B model, then failed on every follow-up command with 'Invalid input' until the session was aborted at 68 s.
- Codex CLI: Codex CLI 0.164.0 changed calc.py by running a sed command in its sandbox with a local 3B model; an earlier plain-language edit request ran no edit.
- Continue CLI: Continue CLI 1.5.47 answered a question and fixed a one-line bug with a local 3B model through a YAML config; a 1.6 s, 81 MB install.
- goose: goose 1.56.0 edited calc.py on the second headless run with a local 3B model (19.4 s); the first run called the edit tool but its text did not match, so the file did not change.
- opencode: opencode 1.19.4 edited calc.py on the second headless run with a local 3B model; the first run tried the wrong path (src/calc.py) and failed.
FAQ
Does Aider work with a local model?
Yes for one small edit: 3 of 3 trials on a 3B model with the whole-file edit format. Expect it to be much less reliable with its default diff formats on small models; we did not test that.
Which Python does Aider need?
In our run Python 3.12 worked; 3.13 failed because a dependency needed compiling and the machine had no C++ compiler.
Sources
- Aider repository (fetched 2026-10-25)
Related
Markdown version for agents: /tests/aider.md