Praxistest

Coding-Agenten bei derselben Aufgabe

Wir geben Claude Code, OpenAI Codex und Gemini CLI dasselbe kleine Repository und denselben Prompt und halten fest, was jedes Tool gekostet und geliefert hat. Jede Zahl stammt aus dem Nutzungsbericht des Tools oder vom Test-Runner. Läufe, die wir noch nicht durchgeführt haben, sind entsprechend gekennzeichnet.

Methode: So testen wir · Protokoll und Testdaten sind im Projekt-Repository veröffentlicht.

Abgeschlossene Läufe: 1Ausstehende Läufe: 21von 3 Läufen
  • Abgeschlossene Läufe 1
  • Ausstehende Läufe 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.

Eröffnungs-Prompt, für jeden Agenten identisch
Read README.md and make all tests in tests/ pass. Do not edit the tests. Run the tests yourself before you finish.

Was wir messen

  • 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

Ergebnisse

Claude Code

5/5Tests

Zeit
00:48
Kosten
$1.22
Ausgabe-Tokens
1,820
Zusätzliche Durchläufe
0
OpenAI Codex

—noch nicht ausgeführt

Gemini CLI

—noch nicht ausgeführt

Claude Code · Kosten
$1.22
Claude Code · Zeit
00:48
AgentStatusTestsGesamtzeitTokens ein / ausKostenZusätzliche DurchläufeDiffModell · Tarif
Claude Code Oct 2, 2026 ausführen 5/5 00:48 162 / 1,820
250,959 gecacht
$1.22
vom Tool gemeldet
0 2 Dateien, +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 Noch nicht durchgeführt
Gemini CLI Noch nicht durchgeführt
Claude Code: Roh-Nutzungsausgabe und Notizen
{
  "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.

Wie ein Durchlauf funktioniert

  1. Eine frische Kopie des Fixture-Repositorys wird erstellt und committet, damit sich der Diff messen lässt.
  2. Der Agent erhält den obigen Einstiegsprompt unverändert, mit seinem Standardmodell für den in den Ergebnissen genannten Tarif.
  3. Keine Hinweise. Wenn der Agent nachfragt, lautet die einzige Antwort „Entscheide nach eigenem Ermessen.“ Jede zusätzliche Nachricht wird gezählt.
  4. Der Lauf endet, wenn der Agent meldet, dass er fertig ist, oder nach 20 Minuten.
  5. Die Tests führen wir selbst durch, das Diff wird mit git gemessen, und Tokens und Kosten stammen aus der eigenen Nutzungsausgabe des Tools.

Grenzen: eine Aufgabe, ein Durchlauf pro Agent, nur Standardeinstellungen. Das ist eine reproduzierbare Stichprobe, keine Rangliste.