<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tam Nguyenvan</title>
    <description>The latest articles on DEV Community by Tam Nguyenvan (@tam_nguyenvan_1f689d35bc9).</description>
    <link>https://dev.to/tam_nguyenvan_1f689d35bc9</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4081057%2F9085f2fd-6fa2-47a7-88de-5c07508885c4.png</url>
      <title>DEV Community: Tam Nguyenvan</title>
      <link>https://dev.to/tam_nguyenvan_1f689d35bc9</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/tam_nguyenvan_1f689d35bc9"/>
    <language>en</language>
    <item>
      <title>When should Codex use multiple agents? A benchmark, not a slogan</title>
      <dc:creator>Tam Nguyenvan</dc:creator>
      <pubDate>Wed, 26 Aug 2026 03:29:19 +0000</pubDate>
      <link>https://dev.to/tam_nguyenvan_1f689d35bc9/when-should-codex-use-multiple-agents-a-benchmark-not-a-slogan-4fp8</link>
      <guid>https://dev.to/tam_nguyenvan_1f689d35bc9/when-should-codex-use-multiple-agents-a-benchmark-not-a-slogan-4fp8</guid>
      <description>&lt;p&gt;More agents do not automatically produce better engineering. They usually add&lt;br&gt;
total tokens, duplicated context, handoff delay, and integration risk. Their&lt;br&gt;
defensible advantages are narrower: reduced elapsed time for independent work,&lt;br&gt;
isolated investigation, or specialist evidence that one agent might omit.&lt;/p&gt;

&lt;p&gt;The useful question is therefore not “Can this task use subagents?” It is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Does this task contain independent, bounded work whose value exceeds the&lt;br&gt;
coordination cost?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Codex How To now includes a dependency-free benchmark for testing that question&lt;br&gt;
instead of answering it from intuition.&lt;/p&gt;

&lt;p&gt;Disclosure: I maintain&lt;br&gt;
&lt;a href="https://github.com/Phelan164/codex-howto" rel="noopener noreferrer"&gt;Codex How To&lt;/a&gt;, the independent&lt;br&gt;
open-source project containing the benchmark, evaluator, and measurements used&lt;br&gt;
here.&lt;/p&gt;
&lt;h2&gt;
  
  
  The minimum decision rule
&lt;/h2&gt;

&lt;p&gt;Use one agent when the change is small, the interface is unsettled, or several&lt;br&gt;
steps must edit the same central files. Consider bounded orchestration only when&lt;br&gt;
all of these are true:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The task has at least two genuine ownership surfaces.&lt;/li&gt;
&lt;li&gt;Each writer can own exclusive paths.&lt;/li&gt;
&lt;li&gt;The interface between those paths is frozen before implementation.&lt;/li&gt;
&lt;li&gt;The controller retains integration, system checks, and final review.&lt;/li&gt;
&lt;li&gt;Every worker returns concise evidence rather than a narrative transcript.&lt;/li&gt;
&lt;li&gt;One external acceptance bar can evaluate every execution method.
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    A["One task contract"] --&amp;gt; B{"Independent write surfaces?"}
    B -- "No" --&amp;gt; C["One agent or sequential work"]
    B -- "Yes" --&amp;gt; D{"Frozen interface and exclusive paths?"}
    D -- "No" --&amp;gt; C
    D -- "Yes" --&amp;gt; E["Bounded workers"]
    E --&amp;gt; F["Controller integrates and evaluates"]
    F --&amp;gt; G{"Coverage or elapsed-time value exceeds coordination cost?"}
    G -- "Unproven" --&amp;gt; H["Keep measuring"]
    G -- "Repeated evidence" --&amp;gt; I["Adopt for this task class"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Job titles are not ownership boundaries. “Backend agent,” “test agent,” and&lt;br&gt;
“review agent” may still collide on the same files or execute dependent stages.&lt;br&gt;
A useful boundary is concrete: one writer owns &lt;code&gt;incident/**&lt;/code&gt;, another owns&lt;br&gt;
&lt;code&gt;web/**&lt;/code&gt;, and neither changes the shared contract.&lt;/p&gt;
&lt;h2&gt;
  
  
  The benchmark task
&lt;/h2&gt;

&lt;p&gt;The&lt;br&gt;
&lt;a href="https://github.com/Phelan164/codex-howto/tree/v0.6.0/labs/incident-response-benchmark" rel="noopener noreferrer"&gt;incident-response benchmark&lt;/a&gt;&lt;br&gt;
asks Codex to build a small but cross-surface application with no third-party&lt;br&gt;
dependencies:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;thread-safe JSON persistence with atomic replacement;&lt;/li&gt;
&lt;li&gt;validation, optimistic concurrency, and status transitions;&lt;/li&gt;
&lt;li&gt;an HTTP API and traversal-safe static serving;&lt;/li&gt;
&lt;li&gt;a responsive, accessible browser client;&lt;/li&gt;
&lt;li&gt;focused tests, integration checks, final review, and an evidence handoff.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The fixture has two deliberate implementation surfaces:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;incident/**  # persistence, validation, HTTP adapter
web/**       # HTML, CSS, browser behavior
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Both the single-agent and orchestrated conditions start from the same commit,&lt;br&gt;
task text, supplied tests, and frozen contract. The orchestrated condition may&lt;br&gt;
use at most two implementation workers. The controller owns evaluation and the&lt;br&gt;
final receipt.&lt;/p&gt;

&lt;p&gt;Both conditions face the same external evaluator. It checks fixture integrity,&lt;br&gt;
candidate scope, concurrent persistence, strict atomic writes, validation and&lt;br&gt;
error mapping, live HTTP behavior, path traversal, static browser requirements,&lt;br&gt;
and required handoff topics.&lt;/p&gt;
&lt;h2&gt;
  
  
  What the first run actually showed
&lt;/h2&gt;

&lt;p&gt;The first smoke run qualified the benchmark harness:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Measure&lt;/th&gt;
&lt;th&gt;Single agent&lt;/th&gt;
&lt;th&gt;Controller + two workers&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Accepted after review&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Supplied tests&lt;/td&gt;
&lt;td&gt;4/4&lt;/td&gt;
&lt;td&gt;4/4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;External evaluator groups&lt;/td&gt;
&lt;td&gt;6/6&lt;/td&gt;
&lt;td&gt;6/6&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Edit conflicts&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration rework&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Internal review corrections&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Browser interaction exercised by candidate&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Aggregate tokens&lt;/td&gt;
&lt;td&gt;Unavailable&lt;/td&gt;
&lt;td&gt;Unavailable&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Comparable elapsed time&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The orchestrated candidate returned live browser evidence covering creation,&lt;br&gt;
filtering, state transitions, validation feedback, console errors, and a mobile&lt;br&gt;
viewport. The single agent found and corrected a conflict-message behavior in&lt;br&gt;
final review. An external controller later exercised its live HTTP behavior.&lt;/p&gt;

&lt;p&gt;That result establishes feasibility, not superiority. The runs overlapped, the&lt;br&gt;
environment did not expose aggregate controller-plus-worker tokens, and there&lt;br&gt;
was only one candidate per method. It would be invalid to claim that&lt;br&gt;
orchestration was faster, cheaper, or generally more reliable.&lt;/p&gt;

&lt;p&gt;Read the complete&lt;br&gt;
&lt;a href="https://github.com/Phelan164/codex-howto/blob/v0.6.0/examples/measurements/incident-orchestration-smoke-2026-08-11.md" rel="noopener noreferrer"&gt;smoke receipt&lt;/a&gt;&lt;br&gt;
before interpreting the table.&lt;/p&gt;
&lt;h2&gt;
  
  
  A controller contract that limits fan-out
&lt;/h2&gt;

&lt;p&gt;A large goal should not become permission to create an agent for every noun in&lt;br&gt;
the prompt. Freeze the contract and state the maximum useful topology:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Implement the incident-response task end to end.

Before delegation:
- freeze the HTTP and data contract;
- confirm that incident/** and web/** are independent write surfaces;
- keep evaluator and handoff ownership with the controller.

Delegation budget:
- at most two implementation workers;
- backend owns incident/** only;
- frontend owns web/** only;
- workers must not modify TASK.md, tests, evaluator files, or each other's paths.

Each worker returns:
- files changed;
- focused checks and outcomes;
- observable behavior exercised;
- failures, retries, and anything unverified.

The controller then runs supplied and external checks, exercises integration,
reviews the complete diff, fixes verified findings, and writes one receipt.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This contract does not force delegation. If the controller discovers that the&lt;br&gt;
interface is unstable or the surfaces are coupled, the correct choice is a&lt;br&gt;
single agent or sequential pipeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measure quality before speed
&lt;/h2&gt;

&lt;p&gt;For each candidate, record raw facts before interpreting them:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;Required evidence&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Acceptance&lt;/td&gt;
&lt;td&gt;Same evaluator and quality gates for every method&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coverage&lt;/td&gt;
&lt;td&gt;Behavior exercised, failures found, and unverified behavior&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Total cost&lt;/td&gt;
&lt;td&gt;Controller plus every worker, including failed attempts&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elapsed time&lt;/td&gt;
&lt;td&gt;Sequential, isolated runs on comparable machine load&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Coordination&lt;/td&gt;
&lt;td&gt;Worker count, handoff delay, duplicate investigation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Integration&lt;/td&gt;
&lt;td&gt;Conflicts, contract mismatches, and rework events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Human effort&lt;/td&gt;
&lt;td&gt;Corrections, retries, approvals, and manual intervention&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Do not substitute controller-only telemetry for total tokens. Do not remove&lt;br&gt;
failed candidates. Do not compare overlapping runs as if they were isolated.&lt;br&gt;
Write &lt;code&gt;unavailable&lt;/code&gt; when the execution surface does not expose a metric.&lt;/p&gt;

&lt;p&gt;Use one&lt;br&gt;
&lt;a href="https://github.com/Phelan164/codex-howto/blob/v0.6.0/examples/templates/orchestration-run-receipt.md" rel="noopener noreferrer"&gt;orchestration receipt&lt;/a&gt;&lt;br&gt;
per candidate. Run at least three fresh sequential pairs and alternate which&lt;br&gt;
method runs first. Compare acceptance and evidence completeness before elapsed&lt;br&gt;
time or tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where orchestration usually loses
&lt;/h2&gt;

&lt;p&gt;Prefer one agent or a sequential workflow when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;one clear agent can hold the relevant context;&lt;/li&gt;
&lt;li&gt;workers would edit the same files;&lt;/li&gt;
&lt;li&gt;one subtask depends on another's unresolved design;&lt;/li&gt;
&lt;li&gt;the task is primarily a single debugging chain;&lt;/li&gt;
&lt;li&gt;the evaluator cannot attribute failures to a candidate;&lt;/li&gt;
&lt;li&gt;per-agent cost is invisible and cost is the decision criterion; or&lt;/li&gt;
&lt;li&gt;the only justification is that parallelism is available.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For small bounded fixes, workflow guidance itself may cost more context than it&lt;br&gt;
saves. Codex How To's earlier measurements found that the no-skill control was&lt;br&gt;
the cheapest successful variant on a small backend defect, while a lean&lt;br&gt;
engineering loop was cheapest on a medium browser-game task. Task class matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where orchestration may earn its cost
&lt;/h2&gt;

&lt;p&gt;Good candidates include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;independent modules with frozen interfaces;&lt;/li&gt;
&lt;li&gt;read-only review through independent security, reliability, and test lenses;&lt;/li&gt;
&lt;li&gt;noisy investigation that can be summarized before implementation;&lt;/li&gt;
&lt;li&gt;frontend and backend implementation after the API contract is fixed; and&lt;/li&gt;
&lt;li&gt;tasks where one specialist can add independently verifiable runtime evidence.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The benefit may be coverage rather than speed. If a specialist catches a real&lt;br&gt;
defect or produces missing browser, deployment, or security evidence, higher&lt;br&gt;
token use may still be rational. That is a quality decision, not a token-saving&lt;br&gt;
claim.&lt;/p&gt;

&lt;h2&gt;
  
  
  Replicate or falsify it
&lt;/h2&gt;

&lt;p&gt;The next useful result is not another success screenshot. It is a controlled&lt;br&gt;
pair that changes the recommendation:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create identical disposable starting copies.&lt;/li&gt;
&lt;li&gt;Keep model, reasoning effort, permissions, tools, task, time limit, and
evaluator fixed.&lt;/li&gt;
&lt;li&gt;Run one single-agent and one bounded-orchestration candidate sequentially.&lt;/li&gt;
&lt;li&gt;Alternate order across at least three pairs.&lt;/li&gt;
&lt;li&gt;Preserve failures and total controller-plus-worker telemetry.&lt;/li&gt;
&lt;li&gt;Publish sanitized receipts and limitations.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Submit a result through the&lt;br&gt;
&lt;a href="https://github.com/Phelan164/codex-howto/issues/23" rel="noopener noreferrer"&gt;replication issue&lt;/a&gt; or add a&lt;br&gt;
tested benchmark edition through a focused pull request. Negative and neutral&lt;br&gt;
results are explicitly useful.&lt;/p&gt;

&lt;p&gt;Codex How To is an independent community project. Official OpenAI documentation&lt;br&gt;
remains authoritative for current product behavior.&lt;/p&gt;

</description>
      <category>openai</category>
      <category>opensource</category>
      <category>testing</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
