Skip to content

Codex-Architekturoverblick

源码版本rust-v0.145.0

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

SchichtCrateVerantwortlichkeit
CLI-EinstiegcliSubcommand-Dispatch, doctor, login, mcp_cmd
Agent-KerncoreAgent-Hauptschleife, LLM-Client, Kompression (compaction), Sitzungsthread, Werkzeuge
Patch-Protokollapply-patchapply_patch Textpatch-Format
Sandboxsandboxing / linux-sandbox / bwrap / windows-sandbox-rsPlattformübergreifende Befehlsisolierung
Ausführungs-PolicyexecpolicyBefehlsklassifikation und Freigabe-Policy
Ausführungexec / exec-serverBefehlsausführung und exec-server-Protokoll
TUItuiTerminal-UI, chatwidget, diff_model
App-serverapp-server / app-server-protocol / app-server-transportOrchestrierungs-Service und Protokoll
MCPmcp-server / rmcp-client / codex-mcp / connectorsModel Context Protocol Integration
Providermodel-provider / model-provider-info / backend-clientModell-Provider-Abstraktion
Cloudcloud-tasks / cloud-configCloud-Aufgabenausführung
Konfigurationconfig / codex-homeKonfigurationssystem und Home-Verzeichnis
Umfeldprompts / skills / memories / hooks / plugin / rolloutPrompts, Skills, Memories, Hooks, Plugins, Trace

Eine Pro Schicht

  • CLI-Einstieg: Subcommand-Dispatch des codex-Befehls; main.rs parst mit clap und routet an die Subcommands.
  • Agent-Kern: Die Agent-Hauptschleife konsumiert Op, treibt LLM-Aufrufe und Werkzeugausführung; CodexThread ist der Einstiegspunkt der Sitzungsorchestrierung.
  • Sandbox-Ausführung: Befehle laufen in einer Sandbox; execpolicy klassifiziert 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-provider abstrahiert verschiedene Backends; cloud-tasks verlagert 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-patch Crate parst und wendet es an.

Empfohlene Lesereihenfolge

  1. CLI-Einstieg und Subcommand-Dispatch — wie der codex-Befehl nach dem Eintritt dispatcht
  2. Agent-Hauptschleife — wie der Agent Op konsumiert und die LLM treibt
  3. LLM-Client und Responses API — wie mit dem OpenAI-Backend gesprochen wird
  4. Plattformübergreifende Sandbox — wie Befehle isoliert werden
  5. execpolicy-Befehlsklassifikation — wie Befehle klassifiziert und freigegeben werden
  6. 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.