Pratique

Agents de code sur la même tâche

Nous donnons à Claude Code, OpenAI Codex et Gemini CLI un dépôt identique et un prompt identique, puis nous relevons le coût de chacun et le résultat obtenu. Chaque chiffre est lu dans le rapport d'usage de l'outil ou dans l'exécuteur de tests. Les exécutions pas encore réalisées sont signalées comme telles.

Méthode : Comment nous évaluons · Le protocole et les jeux de test sont publiés dans le dépôt du projet.

Exécutions terminées: 1Exécutions en attente: 21sur 3 exécutions
  • Exécutions terminées 1
  • Exécutions en attente 2

Fix a bug, add a feature and a CLI flag in a small Python package

Starting from a 40-line Python package with 5 failing tests: fix CSV date parsing and a trailing blank line, add totals_by_customer(), and add a --top N CLI flag. Standard library only, tests must not be edited.

Prompt initial, identique pour chaque agent
Read README.md and make all tests in tests/ pass. Do not edit the tests. Run the tests yourself before you finish.

Ce que nous mesurons

  • Tests passed out of 5, read from pytest
  • Wall time from sending the prompt to the agent saying it is done
  • Tokens and USD cost as reported by the tool itself (/cost in Claude Code, session summary in Codex)
  • Extra user turns and questions the agent asked
  • Size of the diff (files, lines) from git

Résultats

Claude Code

5/5tests

Durée
00:48
Coût
$1.22
Tokens de sortie
1,820
Tours supplémentaires
0
OpenAI Codex

—pas encore exécuté

Gemini CLI

—pas encore exécuté

Claude Code · coût
$1.22
Claude Code · durée
00:48
AgentStatutTestsTemps réelTokens en entrée / sortieCoûtTours supplémentairesDiffModèle · offre
Claude Code Lancer Oct 2, 2026 5/5 00:48 162 / 1,820
250,959 en cache
$1.22
indiqué par l'outil
0 2 fichiers, +22 / −8 claude-fable-5-1 · Headless run (claude -p) on the reviewer's account; cost shown at API list price (costBasis: list), subscription plan not applied · v2.1.284
OpenAI Codex Pas encore exécuté
Gemini CLI Pas encore exécuté
Claude Code : sortie d'utilisation brute et notes
{
  "duration_ms": 48154,
  "duration_api_ms": 46010,
  "num_turns": 8,
  "total_cost_usd": 1.2184397500000002,
  "usage": {
    "input_tokens": 162,
    "output_tokens": 1820,
    "cache_read_input_tokens": 250959,
    "cache_creation_input_tokens": 53154
  },
  "modelUsage": {
    "claude-fable-5-1": {
      "inputTokens": 162,
      "outputTokens": 1820,
      "cacheReadInputTokens": 250959,
      "cacheCreationInputTokens": 53154,
      "webSearchRequests": 0,
      "costUSD": 1.2184397500000002,
      "contextWindow": 1000000,
      "maxOutputTokens": 64000,
      "thinkingTokens": 201,
      "canonicalModel": "claude-fable-5-1",
      "provider": "firstParty",
      "costBasis": "list"
    }
  }
}

Opinion: clean argparse implementation, all 5 tests green on the first self-check. Caveats: (1) run via the non-interactive `claude -p` command with a tool allowlist (Read/Edit/Write/Bash for python and git), not the interactive TUI; (2) the reviewer's global Claude Code settings and skills were active, which a fresh install would not have; (3) the agent also removed the old "Total:" output line that no test covered.

Comment se déroule une exécution

  1. Une copie neuve du dépôt de test est créée et validée, afin que le diff soit mesurable.
  2. L'agent reçoit le prompt d'ouverture ci-dessus, mot pour mot, avec son modèle par défaut pour l'offre indiquée dans les résultats.
  3. Aucun indice. Si l'agent pose une question, la seule réponse est « Utilisez votre jugement ». Chaque message supplémentaire est compté.
  4. L'exécution s'arrête quand l'agent indique avoir terminé ou après 20 minutes.
  5. Les tests sont réalisés par nous, le diff est mesuré avec git, et les tokens et coûts sont copiés du rapport d'usage de l'outil lui-même.

Limites : une tâche, une exécution par agent, réglages par défaut. C'est un contrôle reproductible, pas un classement.