Vue d'ensemble de l'architecture codex
codex est l'Agent de codage open source d'OpenAI ; cette version est la réécriture en Rust (l'ancienne version TypeScript est reléguée dans codex-cli/ comme simple coquille npm). Le cœur des sources est dans codex-rs/, un Cargo workspace regroupant 90+ crate indépendants, découpés très finément par responsabilité. Ce site démonte couche par crate, chaque fichier clé portant un SrcLink qui pointe directement vers la ligne GitHub correspondante.
Découpage en couches
Aperçu des principaux crate
| Couche | crate | Responsabilité |
|---|---|---|
| Entrée CLI | cli | répartiteur de sous-commandes, doctor, login, mcp_cmd |
| Cœur de l'Agent | core | boucle principale de l'Agent, client LLM, compaction, thread de session, outils |
| Protocole de patch | apply-patch | format de patch textuel apply_patch |
| Bac à sable (sandbox) | sandboxing / linux-sandbox / bwrap / windows-sandbox-rs | isolation de commande multiplateforme |
| Politique d'exécution | execpolicy | classification et stratégie d'autorisation des commandes |
| Exécution | exec / exec-server | exécution de commande et protocole exec-server |
| TUI | tui | interface terminal, chatwidget, diff_model |
| App-server | app-server / app-server-protocol / app-server-transport | service d'orchestration et protocole |
| MCP | mcp-server / rmcp-client / codex-mcp / connectors | intégration Model Context Protocol |
| Provider | model-provider / model-provider-info / backend-client | abstraction des model provider |
| Cloud | cloud-tasks / cloud-config | exécution de tâches dans le cloud |
| Configuration | config / codex-home | système de config et répertoire home |
| Périphériques | prompts / skills / memories / hooks / plugin / rollout | prompts, skills, mémoires, hooks, plugin, trace |
Une phrase par couche
- Entrée CLI : répartition des sous-commandes de la commande
codex;main.rsanalyse avec clap puis route vers les sous-commandes. - Cœur de l'Agent : la boucle principale consomme les
Op, pilote les appels LLM et l'exécution des outils ;CodexThreadest l'entrée d'orchestration de session. - Exécution sandbox : les commandes tournent dans un bac à sable (sandbox) ;
execpolicyclassifie d'abord la commande pour décider autorisation/blocage/approbation, puis la confie au sandbox de la plateforme. - TUI/App-server : la TUI est le frontend terminal ; App-server expose les capacités de l'Agent via un protocole aux IDE/clients externes.
- Provider/Cloud :
model-providerabstrait les différents backend ;cloud-tasksdéporte l'exécution des tâches vers le cloud.
Motivations de conception
codex a choisi une réécriture Rust, motivée par le bac à sable (sandbox) et la performance. Un Agent de codage lance des commandes shell arbitraires sur la machine de l'utilisateur ; sans isolation fiable des processus, pas de sécurité. Le système de types et les abstractions à coût nul de Rust permettent à un découpage de 90+ crate très fin de n'entraîner aucun coût à l'exécution. Le workspace est découpé par responsabilité plutôt qu'en un seul gros crate, pour l'incrément de compilation et la clarté des frontières — modifier la TUI ne recompile pas core.
Malentendus fréquents
- « codex est un outil CLI » — à moitié vrai. La CLI n'est que l'entrée ; ce qui tourne vraiment, c'est la combinaison des trois couches
core+sandbox+tui/app-server. - « La réécriture en Rust sert à être rapide » — Rust apporte l'isolation sandbox et la sécurité au niveau processus ; la performance est un sous-produit.
- « apply_patch est un format privé à codex » — c'est un protocole de patch textuel utilisé par codex, généré par le modèle, parsé et appliqué par le crate
apply-patch.
Ordre de lecture recommandé
- Entrée CLI et répartition des sous-commandes — depuis la commande
codex, voir comment se fait le routage - Boucle principale de l'Agent — comment l'Agent consomme les Op pour piloter le LLM
- Client LLM et Responses API — comment on parle au backend OpenAI
- Bac à sable multiplateforme — comment les commandes sont isolées
- Classification execpolicy — comment les commandes sont classées puis autorisées
- Architecture App-server — comment exposer l'Agent via un protocole à l'externe
Après cette lecture, vous saurez expliquer toute la chaîne, depuis « l'utilisateur tape une commande » jusqu'à « le LLM exécute des outils et modifie des fichiers ».