Codex-Architekturoverblick
Codex ist der quelloffene Coding-Agent von OpenAI; diese Version ist ein Rust-Neubau (die frühere TypeScript-Version ist auf codex-cli/ zurückgezogen und dient nur noch als npm-Installationshülle). Der Hauptteil des Quellcodes liegt in codex-rs/, einem Cargo-Workspace mit 90+ unabhängigen Crates, extrem fein nach Verantwortlichkeit zerschnitten. Diese Site zerlegt Schicht für Schicht nach Crate; jede wichtige Datei trägt ein SrcLink, das direkt auf die entsprechende GitHub-Zeile verweist.
Gesamtschichtung
Wichtige Crates auf einen Blick
| Schicht | Crate | Verantwortlichkeit |
|---|---|---|
| CLI-Einstieg | cli | Subcommand-Dispatch, doctor, login, mcp_cmd |
| Agent-Kern | core | Agent-Hauptschleife, LLM-Client, Kompression (compaction), Sitzungsthread, Werkzeuge |
| Patch-Protokoll | apply-patch | apply_patch Textpatch-Format |
| Sandbox | sandboxing / linux-sandbox / bwrap / windows-sandbox-rs | Plattformübergreifende Befehlsisolierung |
| Ausführungs-Policy | execpolicy | Befehlsklassifikation und Freigabe-Policy |
| Ausführung | exec / exec-server | Befehlsausführung und exec-server-Protokoll |
| TUI | tui | Terminal-UI, chatwidget, diff_model |
| App-server | app-server / app-server-protocol / app-server-transport | Orchestrierungs-Service und Protokoll |
| MCP | mcp-server / rmcp-client / codex-mcp / connectors | Model Context Protocol Integration |
| Provider | model-provider / model-provider-info / backend-client | Modell-Provider-Abstraktion |
| Cloud | cloud-tasks / cloud-config | Cloud-Aufgabenausführung |
| Konfiguration | config / codex-home | Konfigurationssystem und Home-Verzeichnis |
| Umfeld | prompts / skills / memories / hooks / plugin / rollout | Prompts, Skills, Memories, Hooks, Plugins, Trace |
Eine Pro Schicht
- CLI-Einstieg: Subcommand-Dispatch des
codex-Befehls;main.rsparst mit clap und routet an die Subcommands. - Agent-Kern: Die Agent-Hauptschleife konsumiert
Op, treibt LLM-Aufrufe und Werkzeugausführung;CodexThreadist der Einstiegspunkt der Sitzungsorchestrierung. - Sandbox-Ausführung: Befehle laufen in einer Sandbox;
execpolicyklassifiziert den Befehl und entscheidet über Freigabe/Blockierung/Freigabe, danach übernimmt die plattformspezifische Sandbox die Isolierung. - TUI/App-server: TUI ist das Terminal-Frontend; App-server exponiert die Agent-Fähigkeiten über ein Protokoll an IDE/externe Clients.
- Provider/Cloud:
model-providerabstrahiert verschiedene Backends;cloud-tasksverlagert Aufgaben in die Cloud.
Entwurfsbeweggründe
Codex hat sich für einen Rust-Neubau entschieden; der zentrale Beweggrund ist Sandbox und Performance. Ein Coding-Agent führt beliebige Shell-Befehle auf der Maschine des Benutzers aus; ohne zuverlässige Prozessisolierung gibt es keine Sicherheit. Das Typsystem und die Zero-Cost-Abstraktionen von Rust lassen die feinkörnige Aufteilung in 90+ Crates ohne Laufzeit-Overhead entstehen. Der Workspace ist nach Verantwortlichkeit in Crates zerschnitten und nicht ein einziger großer Crate, um inkrementelle Kompilierung und klare Grenzen zu erhalten — eine Änderung an der TUI kompiliert core nicht neu.
Häufige Fehlinterpretationen
- „Codex ist ein CLI-Tool" — halb richtig. CLI ist nur der Einstieg; was wirklich läuft, ist die Kombination aus
core+sandbox+tui/app-serverüber drei Schichten. - „Der Rust-Neubau dient der Geschwindigkeit" — Rust bringt Sandbox-Isolierung und Prozesssicherheit, Performance ist ein Nebenprodukt.
- „apply_patch ist ein privates Format von codex" — es ist das Textpatch-Protokoll, das codex verwendet; das Modell erzeugt es, der
apply-patchCrate parst und wendet es an.
Empfohlene Lesereihenfolge
- CLI-Einstieg und Subcommand-Dispatch — wie der
codex-Befehl nach dem Eintritt dispatcht - Agent-Hauptschleife — wie der Agent Op konsumiert und die LLM treibt
- LLM-Client und Responses API — wie mit dem OpenAI-Backend gesprochen wird
- Plattformübergreifende Sandbox — wie Befehle isoliert werden
- execpolicy-Befehlsklassifikation — wie Befehle klassifiziert und freigegeben werden
- App-server-Architektur — wie der Agent über ein Protokoll nach außen exponiert wird
Nach dieser Linie lässt sich die gesamte Kette von „Benutzer tippt einen Befehl" bis „LLM führt Werkzeuge aus und ändert Dateien" im Wesentlichen erklären.