Référence tarifaire (compte de première ligne). Prix catalogue officiel de fable 5 : $10 / M de tokens d'entrée (capturé le 2026-07-24 04:37 UTC depuis la page tarifaire officielle ; la page affiche $10/MTok — aucun écart avec le chiffre $10/M utilisé ici ; même capture : hits de cache $1/MTok, entrée batch $5/MTok). Le coût d'un workflow agentique est dominé par les tokens d'entrée : sur la journée de registre 2026-07-23, les tokens d'entrée représentaient 99.0% du volume de tokens (769,249,823 en entrée vs 7,387,431 en sortie) — 95.4% du coût en dollars aux purs prix catalogue, et encore ≈75.3% après la remise sur entrée en cache (la sortie est facturée $50/M mais représente <1% du volume). Prix d'entrée effectif mesuré après les trois leviers : $10/M × [(1−94.9%) + 94.9% × remise entrée-en-cache $1/$10] = $1.46/M pondéré cache → ÷ compression mesurée 2.83× (fenêtre 07-23, n = 7,222, médiane) = $0.52/M → × 50% saver (tarif facial officiel batch/flex) ≈ $0.26 / M (2.6% du prix d'origine) de tokens d'entrée — le pourcentage est le prix d'entrée effectif mesuré ÷ le prix catalogue officiel de $10/M, calculé sur la chaîne de leviers non arrondie. Formule complète et réserves dans la table de méthodologie.
Rapport d'ingénierie
Tout ce qui figure sur cette page est une mesure réelle issue de nos propres registres de production et runs de benchmark. Chaque nombre renvoie à une source enregistrée par machine. Aucune projection, aucune extrapolation.
Construit sur le CLI/agent open source codex, coder se concentre sur le travail autonome de longue durée (fenêtre de contexte effective, §1.1b · A/B SWE-bench, §2) et l'efficacité de coût (compression, §1.1 · paliers saver, §1.2). Pour l'essayer par vous-même, coder s'installe depuis la page officielle : run.ceo/coder. Une méthode externe n'ayant pas produit de résultats stables dans notre environnement de production, nous avons conservé notre algorithme maison.
coder réduit le coût facturé par deux mécanismes distincts, et cette page maintient leur comptabilité séparée : la compression (mesurée) et les paliers saver (un fait tarifaire). Chaque levier a sa propre formule, ses propres preuves et sa propre ligne dans la table de méthodologie.
Composition du facteur vedette. Terme de compression : médiane mesurée par requête, registres de session 2026-07-23 (n = 7,222, ~/.coder/sessions/2026/07/23/rollout-*.jsonl, 80 fichiers). Terme saver : grille tarifaire officielle batch/flex (les deux voies à 50% du catalogue ⇒ 2.00×) — un fait tarifaire, pas une mesure du trafic de cette fenêtre.
Le pipeline fournit au modèle une représentation compacte de la même session. Par requête, le registre enregistre la base non compressée et l'entrée réellement envoyée : facteur = base ÷ envoyé. Médiane 2.83× (p10–p90 2.26–3.08×) sur la dernière fenêtre complète de registre (2026-07-23, n = 7,222 requêtes).
Preuve de qualité pour ce levier : l'A/B SWE / SWE Pro compression ON vs OFF (§2) — tâches identiques, notation Docker officielle, pipeline activé versus désactivé — constitue la preuve de qualité de cette compression : les issues de résolution suivent le bras non compressé au bruit près. La formule et la fenêtre d'échantillonnage du 2.83× lui-même figurent dans la table de méthodologie ; ce paragraphe ne concerne que le levier de compression — le saver a sa propre section ci-dessous.
💰 #.#x = taux d'économies — l'indicateur de la barre d'état en bas à gauche de cet enregistrement d'écran non retouché est le multiple d'économies de compression en direct : il démarre au plancher de 2.0× et monte à 5.1× en fin de run (pic à 6.1×) à mesure que le contexte mis en cache/compressé s'accumule — 92.4% de part d'entrée en cache sur l'ensemble du run, selon le registre rollout de la session (12 entrées d'usage API, 287,269 tokens d'entrée). La tâche est une vraie tâche SWE publique sur pallets/flask (fonctionnalité CLI + tests, tous au vert). La lecture est accélérée 8× (annoté en haut à droite) ; contenu intact.
La compression a un second effet au-delà du coût : la fenêtre de contexte physique du modèle contient la représentation compressée, sa capacité effective est donc multipliée par le même facteur mesuré. À la médiane mesurée de 2.83× (p10–p90 2.26–3.08×), une fenêtre physique de 200K tokens porte environ 450K–620K tokens de contenu de session (200K × 2.26–3.08). Conséquence pratique : les sessions longues subissent rarement la pression de la fenêtre de contexte — moins de compaction, moins de contexte perdu, un travail de longue durée stable.
rollout-2026-07-23T09-27-46-019f8fcd….jsonl, cumul imgctxOriginalInputTokens vs envoyé).Indépendamment du levier de compression mesuré ci-dessus, coder propose deux voies de livraison à moitié prix. Formule : facturé = 50% × prix de la voie standard — un fait de grille tarifaire qui n'exige aucune preuve de test. Il n'entre dans le facteur vedette que comme facteur tarifé officiel (50% du catalogue ⇒ 2.00×) et n'est jamais mélangé au chiffre de compression mesuré lui-même :
Quantiles mesurés du facteur de compression, par requête. Ligne vedette : registres de session 2026-07-23 (dernière journée complète de registre, 80 fichiers, n = 7,222). Lignes flotte : quantiles par requête sur 7 jours de trafic gateway réel, 2026-07-14 → 07-21 (reports/CHECK-gateway-real-compression-20260721.md, scratch/gw-real-compression-0721/). La couverture de base des lignes flotte se limite au trafic disposant d'une base non compressée enregistrée.
Les chiffres ci-dessus proviennent des registres d'une seule machine. En contre-vérification à l'échelle de la flotte, nous avons mesuré la compression de tokens pure uniquement sur 7 jours de trafic gateway réel :
| segment de trafic | compression agrégée | médiane par requête | requêtes couvertes par la base | fenêtre |
|---|---|---|---|---|
| voie fable5 | 2.49× (15.35B → 6.17B tokens) | 2.45× | 53,500 | 2026-07-14 → 07-21 |
| voie sol | 2.14× (1.94B → 0.91B tokens) | 1.89× | 10,024 | 2026-07-14 → 07-21 |
Le pipeline d'efficacité ne mérite d'être livré que s'il préserve la qualité de sortie. Nous avons exécuté les suites SWE-bench, standard du secteur, en A/B interne — tâches identiques, modèles identiques, harnais de notation Docker officiel, pipeline ON (compressé) versus OFF (direct) — les deux suites rejouées sur le même build courant du pipeline.
| suite | ON (compressé) | OFF (direct) | accord | notes |
|---|---|---|---|---|
| SWE-bench Lite (n = 10 paires) | 10/10 | 10/10 | 10/10 | rejoué 2026-07-24, pipeline 8a9175d |
| SWE-bench Pro (n = 18 paires) | 15/18 | 16/18 | 17/18 | rejoué 2026-07-23, pipeline 8a9175d · tâche divergente : navidrome-0488 (rerun d'équivalence N=5 ci-dessous) |
Nombre de tâches résolues par bras sous les seuls harnais Docker officiels (Lite : swebench run_evaluation sur princeton-nlp/SWE-bench_Lite ; Pro : SWE-bench_Pro-os, jefzda/sweap-images) — aucun jugement par LLM ; pipeline verrouillé à 8a9175d pour les deux reruns. Sources : eval/swe-bench/bench-20260724/, eval/swe-bench-pro/bench-20260723/ (compare_final.txt, eval_results_{on,off}.json). Les échantillons sont petits (10 + 18 paires) : le graphique montre la parité/l'accord, pas la supériorité.
L'unique tâche Pro divergente, navidrome-0488, a été tranchée par un rerun d'équivalence dédié à N=5 par bras : ON 3/5 vs OFF 3/5 — les deux bras sont équivalents au bruit près (test exact de Fisher p = 1.0). Tous les verdicts proviennent du harnais Docker officiel (10/10 runs notés, rc = 0), et les 10 fenêtres de run montrent collapsed_turns = 0 avec zéro réécriture, c.-à-d. que le chemin de compression a laissé les transcriptions intactes. Comptabilité de la variance : les 4 runs échoués se répartissent ON 2 + OFF 2 et partagent le même schéma d'erreur propre au modèle — le bras non compressé tombe dans les mêmes pièges. Verdict : la divergence d'origine est de la variance agentique run à run, pas un dommage de compression (rapport de verdict N=5). Note de périmètre : N = 5 par bras sur une seule instance, même protocole et même instance que le §2, pipeline 8a9175d — une lecture d'équivalence à petit N, pas une affirmation universelle.
Instances Lite (rerun 2026-07-24, même échantillon fixe que le pilote du 06-10) : django-14999, sympy-16503, matplotlib-23913, scikit-learn-13497, pytest-dev-5221, astropy-6938, sphinx-doc-7975, psf-requests-2674, pylint-dev-5859, pydata-xarray-3364 — ON 10/10 vs OFF 10/10, accord 10/10, aucune instance divergente (harnais Docker officiel, swebench==4.1.0, verdicts résolus). Échantillon Pro (n=18 paires, rerun du dernier pipeline sur instances identiques) : NodeBB ×2, qutebrowser ×2, flipt ×2, openlibrary ×2, teleport ×2, tutanota ×2, element-web ×2, navidrome ×2, ansible, vuls — ON 15/18 vs OFF 16/18 ; échecs dans les deux bras : ansible et une instance element-web ; la seule divergence à bras unique est navidrome-0488 (tranchée par le rerun d'équivalence N=5 ci-dessus). JSON brut du juge : eval/swe-bench/bench-20260724/ (compare_final.txt, eval_results_{on,off}.json, preds_{on,off}.json), eval/swe-bench-pro/bench-20260723/ (même agencement) ; réponses des sondes : eval/gist-recall/work*/results.jsonl.
Notre règle pour cette page : un nombre n'apparaît que s'il peut être tracé jusqu'à un enregistrement écrit par machine ou un script reproductible. Formules et fenêtres d'échantillonnage ci-dessous.
| nombre | formule / définition | fenêtre d'échantillonnage | source de référence |
|---|---|---|---|
| compression 2.83× (2.26–3.08) | savingsBreakdown.factors[compression] par requête ; base non compressée ÷ entrée réellement envoyée |
2026-07-23 (dernière journée complète de registre), n=7,222 | ~/.coder/sessions/2026/07/23/rollout-*.jsonl (80 fichiers) |
| fenêtre effective ≈ physique × 2.26–3.08 ; exemple 58.8M→18.6M (3.16×) | la conversion de capacité réutilise telle quelle la distribution de compression du §1.1 ; exemple = cumul imgctxOriginalInputTokens ÷ (original − imgctxSavedInputTokens) pour une session |
même fenêtre ; session exemple 2026-07-23 | mêmes registres · rollout-2026-07-23T09-27-46-019f8fcd….jsonl |
| saver 2.00× (batch/flex à 50% du catalogue) ; vedette 5.66× = 2.83× × 2.00× | prix de la voie batch / flex = moitié du prix de la voie standard ⇒ facteur tarifé constant 2.00× ; définition tarifaire officielle, pas une mesure (encodage registre : part de voie saver de C2 facturée à ½ dans C3) ; produit vedette = médiane de compression mesurée × 2.00 — le terme saver est tarifé d'après la grille, pas pondéré par le trafic (cette fenêtre n'a porté aucun trafic saver) |
fait tarifaire (n/a) ; terme de compression : même fenêtre 2026-07-23 | grille tarifaire · champ de formule du registre savingsBreakdown.formula |
| compte tarifaire de première ligne : catalogue $10/M → effectif ≈ $0.26/M en entrée | effectif = $10/M catalogue (officiel) × [(1−c) + c × ($1/$10) ratio de prix entrée-en-cache] ÷ 2.83 (médiane de compression mesurée) × 0.50 (tarif facial officiel batch/flex), avec c = 94.9% de part d'entrée en cache mesurée (729,830,406 en cache sur 769,249,823 tokens d'entrée). Dominance de l'entrée : entrée = 99.0% du volume de tokens ; 95.4% du coût en dollars au pur catalogue, ≈75.3% après la remise entrée-en-cache (sortie à $50/M). La prime d'écriture de cache (voies d'écriture $12.50–$20/M) n'est pas déduite de ce compte — énoncée comme réserve, pas cachée. L'annotation « (2.6% du prix d'origine) » = prix d'entrée effectif non arrondi ÷ catalogue officiel $10/M ($0.2582/M ÷ $10/M = 2.58%, affiché 2.6% à une décimale). | capture de prix 2026-07-24 04:37 UTC ; répartition des tokens & part en cache : journée de registre 2026-07-23, 140 fichiers rollout, 6,102 requêtes portant l'usage (notre propre re-scan de la journée complète ; la ligne de médiane de compression utilise la fenêtre d'origine à 80 fichiers) | capture de la page tarifaire officielle (/tmp/perf-v10-ab/8d742ca7.html) · ~/.coder/sessions/2026/07/23/rollout-*.jsonl, sommes par requête de last_token_usage |
| SWE-bench Lite 10/10 vs 10/10, accord 10/10 | harnais Docker officiel swebench run_evaluation (princeton-nlp/SWE-bench_Lite), verdicts résolus |
échantillon fixe de 10 paires · rerun 2026-07-24, pipeline 8a9175d | eval/swe-bench/bench-20260724/ (compare_final.txt, eval_results_{on,off}.json) |
| SWE-bench Pro 15/18 vs 16/18, accord 17/18 | harnais officiel SWE-bench_Pro-os, jefzda/sweap-images |
échantillon fixe de 18 paires · rerun sur le dernier pipeline (8a9175d) | eval/swe-bench-pro/README.md + bench-20260723/ (compare_final.txt) |
| équivalence N=5 sur navidrome-0488 : ON 3/5 vs OFF 3/5, Fisher p = 1.0 | verdicts du harnais Docker officiel uniquement (10/10 runs notés, rc = 0) ; test exact de Fisher sur 3/5 vs 3/5 ; les 10 fenêtres de run à collapsed_turns = 0, zéro réécriture ; 4 échecs = ON 2 + OFF 2, même schéma d'erreur propre au modèle dans les deux bras |
N = 5 par bras, instance unique (navidrome-0488), pipeline 8a9175d | rapport de verdict N=5 |
| compression par requête en benchmark 2.00× / 2.49× | contrefactuel : count_tokens(qui-aurait-été-envoyé) ÷ envoyé, sommé par requête — aucun facteur de confusion lié au nombre de tours |
Lite 198 requêtes (rerun 2026-07-24) / Pro 316 requêtes | mêmes README (Lite : 85,804,350 vs 29,942,152 tokens) |
| fidélité de contexte 98/98, 0/16 | sondes notées de rappel/état/fabrication, bras texte vs bras imagé à densité de production, même modèle (fable5), notation déterministe par chaînes, protocole répondre-ou-UNKNOWN | 114 + 16 sondes par bras, graine unique, 228 appels de modèle (2026-06-10) | eval/gist-recall/README.md + work*/results.jsonl |
| voie imagée verbatim 0/15 ; sémantique 27–40% | hex unique de 12 caractères placé uniquement dans le contenu imagé ; sondes de récupération exacte et sémantique via le proxy live ; 2×2 {verbatim, sémantique} × {compression ON, OFF}, N=15 par cellule | runs opus-4-5 et opus-4-8 | eval/needle-haystack/README.md + results2.tsv |
| falaise de densité 1/4 (+3 confab) à 5x8 → 4/4 (0 confab) à 9x12 | rappel de chaîne exacte sur le moteur de rendu de production, un run par cellule ; un balayage TrueType/Levenshtein indépendant reproduit la même falaise monotone | run live 2026-07-05 (n=1 par cellule, direction stable sur 3 runs) | eval/opus-density/RESULTS.md + results.json |