Summarize with local AI

Lab · Proof-first piece · run 20260919-010820-agent-architecture-explicit-multi-agent-

Many Cheap Agents, or One Smart One?

Two architectures, four model tiers, nine tasks across two domains with tests (or hidden held-out grading) as ground truth. Seventy-two real runs across five rounds, pre-registered before each round.

The question arrives in every architecture review now: should we build a fixed workflow of small, cheap agents that each do one defined thing — or hand the whole job to the most capable model and let it decide how to split the work, spin up its own subagents, and judge when it's done? This page is the proof behind the field note. Every number on it comes from a real, separately billed model run against ground truth written before any model saw the task.

Quality separated the two architectures exactly once, in 72 runs: fixed_haiku on a vague bug-diagnosis task failed 2 of 11 hidden tests, and the trace shows why -- plan correctly diagnosed the real bug, implement applied the exact correct fix, then review invented a nonexistent issue and broke previously-correct code fixing it. Every other run passed everything. Cost decided almost everything else: at the same model tier, the autonomous agent was cheaper than the fixed pipeline in 32 of 36 head-to-head comparisons, usually by more than half, because every fresh invocation pays a fixed overhead that the pipeline pays three times and one autonomous call pays once. Autonomy went almost entirely unused -- zero subagents in 35 of 36 autonomous runs, holding even when a task was explicitly built to invite decomposition (round 4b) or had six genuinely independent pieces to analyze (round 5's forecasting task). The one exception is the most interesting result in the study: auto_opus on the incident-diagnosis task spawned a fresh-context adversarial reviewer against its own fix and test suite, which caught two real gaps a first pass missed -- decomposition used for self-critique, the one place in 36 autonomous runs the model reached for help at all.

How to read this

Fixed means a human-designed three-step pipeline — plan, implement, review — each step a fresh model call with the Task tool disallowed, so it cannot improvise. Autonomous means one call to a single model with explicit permission to decompose the work, spawn subagents, and set its own acceptance criteria. Tasks 1-7 are graded by a pre-written pytest suite the model could read. Tasks 8-9 (round 5) remove one shared boundary each: task 8 is a new domain (revenue forecasting) still graded deterministically (MAPE against synthetic ground truth); task 9 is a new grading methodology (a vague bug report, no visible test file, graded by an 11-case hidden suite applied only after the run plus a judged root-cause-diagnosis score). Cost is USD from the CLI's own accounting; time is wall-clock. Win rules were locked and SHA-256 hashed before each round ran.

Pass rate — every condition, every task

auto haiku fixed haiku auto sonnet fixed sonnet auto opus fixed opus auto fable fixed fable 1 · palindrome (low) 8/8 8/8 8/8 8/8 8/8 8/8 8/8 8/8 2 · cart discount (medium) 6/6 6/6 6/6 6/6 6/6 6/6 6/6 6/6 3 · restock bug (higher) 7/7 7/7 7/7 7/7 7/7 7/7 7/7 7/7 4 · expression evaluator 26/26 26/26 26/26 26/26 26/26 26/26 26/26 26/26 5 · ledger replay bug 21/21 21/21 21/21 21/21 21/21 21/21 21/21 21/21 6 · cron next-fire (hard) 45/45 45/45 45/45 45/45 45/45 45/45 45/45 45/45 7 · 3 independent modules (breadth) 41/41 41/41 41/41 41/41 41/41 41/41 41/41 41/41 8 · business forecast (new domain) 13/13 13/13 13/13 13/13 13/13 13/13 13/13 13/13 9 · incident diagnosis (vague report) 11/11 9/11 11/11 11/11 11/11 11/11 11/11 11/11
Every cell that ran is 100% except one: fixed_haiku on task 9, which failed 2 of 11 hidden tests -- the only quality failure across all 72 runs. Empty cells are conditions deliberately not run once the pattern from cheaper tiers was already clear.

Cost by model tier on the hardest task

$0.00 $1.10 $2.21 $3.31 $4.42 HAIKU SONNET OPUS FABLE $0.35 $1.48 $2.88 $3.84 $0.48 $0.90 $2.09 $1.70 ● fixed pipeline (plan → implement → review) ● autonomous single agent USD per run · same task, same tests · * = a step timed out (cost understated)
The hardest coding task, all eight conditions. The pipeline is cheaper than the autonomous agent only at Haiku ($0.35 vs $0.48); at Sonnet, Opus, and Fable three invocations cost more than one, for the same 100%. Fable's autonomous run ($1.70, 136s) was cheaper and three times faster than Opus's ($2.09, 463s).

Same model, different architecture

1.0× — same cost 1 palindrome · haiku 0.41× 1 palindrome · sonnet 0.38× 1 palindrome · opus 0.47× 1 palindrome · fable 0.41× 2 discount · haiku 0.42× 2 discount · sonnet 0.43× 2 discount · opus 0.55× 2 discount · fable 0.41× 3 bugfix · haiku 0.62× 3 bugfix · sonnet 0.35× 3 bugfix · opus 0.52× 3 bugfix · fable 0.53× 4 evaluator · haiku 0.81× 4 evaluator · sonnet 0.51× 4 evaluator · opus 1.04× 4 evaluator · fable 0.39× 5 ledger · haiku 0.58× 5 ledger · sonnet 0.39× 5 ledger · opus 0.48× 5 ledger · fable 0.46× 6 cron · haiku 1.37× 6 cron · sonnet 0.61× 6 cron · opus 0.73× 6 cron · fable 0.44× 7 breadth · haiku 0.36× 7 breadth · sonnet 0.41× 7 breadth · opus 0.45× 7 breadth · fable 0.43× 8 forecast · haiku 1.75× 8 forecast · sonnet 0.62× 8 forecast · opus 0.81× 8 forecast · fable 0.56× 9 incident · haiku 0.66× 9 incident · sonnet 0.51× 9 incident · opus 1.41× 9 incident · fable 0.69× bar = autonomous cost ÷ fixed cost, same model · below 1.0 autonomous was cheaper · * = a timed-out step, unreliable
Same model, two architectures, all 36 task-by-tier pairs where both ran. The autonomous agent was cheaper in 32 of 36 -- usually 35-65% of the fixed pipeline's cost, for the identical result. The four exceptions: task 4 at Opus (a 1-cent rounding-level tie), task 6 at Haiku (structure paying for itself on a dense spec), task 8 at Haiku (the autonomous agent took 50 turns exploring the forecast, genuinely more work), and task 9 at Opus (the subagent spawn's real token cost).

What the numbers don't show

Autonomy was reached for exactly once, and it wasn't to split work. Zero subagents across 35 of 36 autonomous runs, including a task (round 4b) explicitly worded to say the model could parallelize three independent pieces, and a task (round 5) with six genuinely different independent product lines to forecast. The one exception -- auto_opus on the incident-diagnosis task -- used a subagent as a fresh-context adversarial reviewer against its own work, not to divide labor. Anthropic's own write-up of its multi-agent research system says decomposition pays on parallelizable research and is 'less effective for tightly interdependent tasks such as coding' -- this one exception is arguably still consistent with that: verification is closer to research than to writing the code in the first place.

The review step changed code 3 times in 36 fixed-pipeline runs -- two real catches, one real regression. Round 3 (Fable, cron task): caught a spec bug the test suite itself had missed. Round 5 (Fable, forecast task): caught a real NaN-propagation defect in a seasonal-decomposition edge case the given data never happened to trigger. Round 5 (Haiku, incident task): the one failure. Plan correctly diagnosed the bug. Implement applied the textbook-correct symmetric fix. Review then claimed a nonexistent 'boundary condition' problem and changed a correct strict inequality to a non-strict one, breaking previously-working adjacent-booking behavior. The judge still scored this run's diagnosis pass/1.0, because the stated root cause was correct -- the failure was introduced two steps later, by a step with no ground truth of its own to check against.

Per-invocation overhead is the mechanism, not architecture. A one-word Opus reply cost $0.41 before producing any output -- roughly 40,000 tokens of system prompt and tool schema. On small tasks that fixed cost, paid once versus three times, explains most of the 32-of-36 pattern above; where it doesn't (the four exceptions), each has its own concrete story rather than reverting to noise.

The floor was not found on eight of nine tasks. Cron calculators, event-sourced ledgers with planted bugs, six-unit revenue forecasting, a vague incident report over a real bug -- the cheapest tier matched the most expensive one on all of them. It failed on exactly one, and the trace shows the failure was a process defect (review overreaching) rather than a comprehension defect (the model not understanding the task).

n = 1 per cell. No variance estimate. Nine tasks, one vendor's model family, one CLI's overhead profile, one judge backend for the diagnosis-quality score. Real and falsifiable; not a benchmark.

Method, pre-registered

Round 1 compared a fixed Haiku pipeline with an autonomous Fable agent on three easy tasks. Round 2 crossed the design — fixed Sonnet, autonomous Haiku — to separate architecture from price. Round 3 added three harder tasks and completed the 2×4 matrix on the hardest one, then round 4 filled the remaining deferred cells, completing a full 48-cell matrix. Round 4b tested whether structural breadth alone (not difficulty) triggers subagent use — it didn't. Round 5 removed two different boundaries at once: task 8 is a new domain (forecasting) under the same deterministic-grading discipline, calibrated against a naive baseline and a real statistical reference before locking; task 9 is a new grading methodology (hidden tests plus a judged root-cause score) under a vague incident report instead of a written spec, calibrated against a known buggy file and a known-correct fix, and the judge itself spot-checked against a known-good and known-bad diagnosis before being trusted on real model output. Every round's win rules were written and hashed before its runs; every mid-round addition or correction (task 6, task 7's harness bug, a session-rate-limit corruption in round 4, round 5's task designs) is disclosed in the round it happened. Reference solutions and held-out ground truth were kept outside the run tree during every run. The orchestrator is a Python script shelling out to claude -p; it never used the Agent tool itself.

Scope and limits

This measured cost and pass rate on tasks with clear ground truth — deterministic tests for tasks 1-8, a hidden deterministic test suite plus one LLM-judged secondary score for task 9 — and nothing else. It did not test the sampling-and-voting ensembles of Li et al. (More Agents Is All You Need), a genuinely different 'many cheap agents' design. It did not test open-ended, genuinely parallelizable research tasks, the shape of work where Anthropic's own write-up reports real multi-agent gains — task 8's six independent forecasting units came closest and still didn't trigger it. The verdict is real for these 72 runs under these rules; generalize with that in view.

Run 20260919-010820 · rounds 1–5 · 72 recorded runs, $93.83; plus one preserved timed-out attempt ($0.70, implement step unbilled), two calls killed at swap boundaries (~$0.80), and one batch of three runs corrupted by a session rate limit and discarded (unbilled, re-run clean): about $95–96 all in · full source, raw results, and reproduction instructions at github.com/90rdon/agent-architecture-bakeoff

AI · runs on your device, not a server

Summarize this page

Generated on-device by a small open Gemma model running in your browser via WebGPU — nothing about this page is sent anywhere. The model downloads once and is cached by your browser after that, so it's free to use, every time, for every reader.

Local Gemma · always free inference

summary.local

Every run, raw

Architecture
Tier
Result
Task Condition Pass Cost Time Notes