跪拜 Guibai
← All articles
Frontend · Backend · AI Programming

Don't Draw Agent Architecture as an Org Chart: Task-Level Evals Decide Whether Subagents Survive

By LEE ·
Read original on juejin.cn ↗ Google Translate ↗ Alt translation

This strips the default assumption that any non-trivial Agent needs subagents, and replaces it with a concrete, measurable workflow: single loop first, Eval to decide, fold one at a time. Teams burning latency and context on elaborate orchestration diagrams can cut runtime roughly in half and stop paying the telephone tax, as long as they're willing to instrument real user tasks and run them twice.

Summary

A new industry retrospective from Anthropic's applied AI team takes aim at a common failure mode: companies building Agent systems by mirroring their own org charts, hanging a dedicated subagent over every department. In practice, users' questions cut across these boundaries, so requests get shuttled between subagents, losing context at every handoff, accumulating latency, and producing fragmented output. The case study cited runs roughly 2x faster after collapsing a multi-agent setup into a single loop.

The article reframes the default: don't split subagents without a measurable reason. Subagents buy context isolation, parallelism, and permission boundaries, but they cost a "telephone tax" of summary compression and extra model rounds. Only three conditions justify keeping them: context bloat with measured degradation, tasks that must run truly in parallel with disposable windows, or tool selection degrading past 30–50 resident tool definitions. Most existing subagents, the retrospective argues, were built as crutches for older models that couldn't hold long instructions — a need that newer models (Opus 4.5 and later) have largely removed.

For teams that already run dozens of subagents, the path is measured and incremental: write an end-to-end Eval (even 10 golden questions is enough), merge pairs that are always called together, fold one subagent at a time, and run each test at least twice because single runs are flaky. Hard preconditions should live in tool code, not in prose prompts. The goal is to move business teams from maintaining "people" (subagents) to maintaining "skills and tools" (MCP tools and skill files), with a small central team owning the master prompt and end-to-end evaluation.

Takeaways
— Subagents are models running in separate chat windows with independent prompts and tools; they cannot see the main conversation and only receive assigned tasks via a coordinator.
— Splitting subagents buys context isolation, parallelism, and permission boundaries, but costs summary compression, extra model calls, and fragmented responsibility.
— The single-loop approach keeps one model in one context window, with a harness managing round caps, budget, and write confirmations across concurrent tool calls.
— Conway's law applies to Agent architecture: the company's department walls become the Agent's architecture, and users experience the seams between departments as broken handoffs.
— Progressive disclosure (skill directory + tool search) shrinks the system prompt: Anthropic cut Claude Code's system prompt by over 80% on a stronger model.
— Starting with Opus 4.5, models can hold significantly more complexity in a single loop, reducing the need for external scaffolding; newer models have non-disableable thinking that tracks progress and re-checks.
— Only three conditions justify keeping subagents: context bloat with measurable performance drop, true parallel subtasks with disposable windows, or tool-selection degradation / instruction conflict.
— Permissions alone never justify a subagent — permission checks belong in tool code, not in agent hierarchy.
— To fold back existing subagents, first merge tightly coupled pairs (those called back-to-back in production logs), then fold one at a time, running each exam question at least twice.
— A real case showed a merged subagent passed the exam in one run and failed in another, demonstrating the need for multi-run evaluation.
— Tool definitions in the system prompt exceeding 30–50 causes the model to mis-select tools; either merge by user intent or enable tool search.
— "Must do A before B" constraints belong in tool code as hard preconditions, e.g., `create_refund` returns an error code like `PRECONDITION_REQUIRED` if shipping isn't verified.
— Anthropic's open-source `single-agent-loop-kit` includes `/skill-creator`, `/skill-doctor`, `/claude-api build-eval`, `prompt-audit`, `hillclimb`, and `cost-optimize` for skills, Evals, and cost tuning.
— New projects should default to a single loop, not a multi-agent orchestration diagram.
— Run the Eval again whenever the model upgrades, because subagents built for older models become dead weight.
Conclusions

The telephone game is the structural cost of subagents: every handoff compresses detail, and the compression loss is cumulative and irreversible — the main model can never recover a fact lost in a summary.

Many production subagents are not a design choice but a historical artifact — they exist to prop up models that could no longer handle long, self-supervised work. Model upgrades turn these crutches into liabilities.

The 30–50 tool threshold is a useful rule of thumb because it reflects a real cognitive limit: the model's ability to pick the right tool degrades past that point, and the fix is to merge by user intent, not to add more orchestration.

"Faster is not better" is the sharpest operational warning: a merged agent that checks the order tool may answer from gut feeling and skip a verification step that previously lived in a handoff, silently changing the outcome.

Running each exam question twice is a practical necessity, not paranoia, because model output is variable and a single pass can mask a real regression.

The shift from subagents to skills and tools redraws team boundaries: business groups own capability modules and local Evals, a central team owns the master prompt and end-to-end quality, which turns architecture into a maintainable governance model.

Concepts & terms
Single loop (main loop)
An agent architecture where one model holds a single context window for the entire task, calling tools and receiving raw results, with an external harness managing round limits, budget, and write confirmation.
Subagent
A separate model running in its own chat window with its own prompt and tools, isolated from the main conversation, directed by a coordinator. It buys isolation and parallelism but costs handoff overhead.
Progressive disclosure
A technique to keep system prompts small: only a directory of skills and tool names with one-line descriptions is resident in the context; the full definitions load on demand when the model decides to use them.
Task-level Eval
An evaluation set of real user tasks (at least ~10 golden questions) scored end-to-end on whether the user's goal is accomplished, rather than on intermediate routing decisions; each problem is run multiple times to account for model variance.
Folding (fold)
The process of eliminating a subagent by merging its logic into the main loop, typically by turning its prompt into a skill and its API calls into MCP tools, then validating with the same eval set.
MCP tool
A Model Context Protocol tool — an interface the model can call to perform a real action (query data, call an API, change state), grouped by user intent and carrying hard preconditions in code.
Skill
A reusable package of operating steps, judgment rules, and handling methods that a model loads on demand when relevant, typically with an owner (DRI) and dedicated mini-tests.
From the discussion
Featured comments
卷土的土

First measure task completion rate, then split.

See top comments, translated →
Source: juejin.cn ↗ Google Translate ↗ Backup ↗