DEV Community

Cover image for Codex unter Windows installieren: Schritt für Schritt zum ersten Einsatz
boluo
boluo

Posted on

Codex unter Windows installieren: Schritt für Schritt zum ersten Einsatz

Ich möchte mit Codex eine kleine Webseite erstellen, die ich direkt im Browser öffnen kann. Dafür habe ich diese Anleitung vom Node.js-Download über die Installation von Codex CLI bis zur Verbindung mit CrazyRouter und zur ersten HTML-Datei aufgebaut.

1. Node.js herunterladen und installieren

Ich öffne die offizielle Downloadseite und wähle LTS → Windows → Windows Installer (.msi). Unter Einstellungen → System → Info finde ich den Systemtyp und wähle x64 oder ARM64.

Im Downloadordner öffne ich die MSI-Datei. Im Assistenten folgen Next, die Zustimmung zur Lizenz und die Standardkomponenten einschließlich npm und Add to PATH. Mit Install und anschließend Finish endet die Installation.

Ich schließe alte Terminals und öffne PowerShell über das Startmenü neu. Ich kopiere nur den Code, ohne den PS-Prompt, und drücke nach jeder Zeile Enter. Ist Node.js bereits installiert, beginne ich direkt mit diesen beiden Prüfungen:

node --version
npm.cmd --version
Enter fullscreen mode Exit fullscreen mode

Node.js LTS

2. Codex CLI installieren

npm.cmd install -g @openai/codex@latest
codex.cmd --version
Enter fullscreen mode Exit fullscreen mode

Ich warte auf das Ende der Installation, bevor ich die Version abfrage. Die Versionsnummer kann neuer sein als im Screenshot.

Codex CLI

3. CrazyRouter in meinem Codex einrichten

Ich nutze mein eigenes CrazyRouter-Konto und prüfe dort den Zugriff auf das hier konfigurierte Modell gpt-5.6-sol.

CrazyRouter-Konfiguration für Codex

Erzeuge einen API-Key in deinem eigenen CrazyRouter-Konto. Das Login-Passwort ist kein API-Key. Der folgende Block nimmt den Schlüssel ohne sichtbare Zeichen entgegen und setzt die beiden benötigten User-Variablen:

$codexKeySecure = Read-Host 'CrazyRouter API-Key einfügen und Enter drücken' -AsSecureString
$codexKeyPointer = [Runtime.InteropServices.Marshal]::SecureStringToBSTR($codexKeySecure)
try {
    $codexKeyPlain = [Runtime.InteropServices.Marshal]::PtrToStringBSTR($codexKeyPointer)
    if ([string]::IsNullOrWhiteSpace($codexKeyPlain)) { throw 'Kein Key eingegeben' }
    [Environment]::SetEnvironmentVariable('OPENAI_API_KEY', $codexKeyPlain.Trim(), 'User')
    [Environment]::SetEnvironmentVariable('OPENAI_BASE_URL', 'https://cn.crazyrouter.com/v1', 'User')
    $env:OPENAI_API_KEY = $codexKeyPlain.Trim()
    $env:OPENAI_BASE_URL = 'https://cn.crazyrouter.com/v1'
} finally {
    [Runtime.InteropServices.Marshal]::ZeroFreeBSTR($codexKeyPointer)
    $codexKeyPlain = $null
}
Enter fullscreen mode Exit fullscreen mode

Prüfe nur, ob ein Wert existiert:

[bool]$env:OPENAI_API_KEY
$env:OPENAI_BASE_URL
Enter fullscreen mode Exit fullscreen mode

True bestätigt weder Gültigkeit noch Berechtigung. Gib den Key nicht mit $env:OPENAI_API_KEY aus.

Vor der Konfiguration eine Sicherung erstellen:

$codexConfigDir = if ($env:CODEX_HOME) { $env:CODEX_HOME } else { Join-Path $env:USERPROFILE '.codex' }
New-Item -ItemType Directory -Path $codexConfigDir -Force | Out-Null
$codexConfigFile = Join-Path $codexConfigDir 'config.toml'
if (Test-Path -LiteralPath $codexConfigFile) { Copy-Item -LiteralPath $codexConfigFile -Destination ($codexConfigFile + '.bak.' + (Get-Date -Format 'yyyyMMdd-HHmmss')) }
notepad.exe $codexConfigFile
Enter fullscreen mode Exit fullscreen mode

In config.toml gehören diese Werte (bei vorhandenen Feldern ändern, nicht doppelt anlegen):

model = "gpt-5.6-sol"
model_provider = "crazyrouter"

[model_providers.crazyrouter]
name = "Crazyrouter"
base_url = "https://cn.crazyrouter.com/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"
Enter fullscreen mode Exit fullscreen mode

env_key ist der Variablenname, nicht der geheime Wert. model und model_provider stehen auf der obersten Ebene. Speichere als config.toml, nicht als config.toml.txt.

TOML-Provider-Konfiguration

4. Codex im Projektordner starten

Öffne ein neues PowerShell-Fenster, lege einen eigenen Ordner an und starte Codex:

New-Item -ItemType Directory -Path "$env:USERPROFILE\CodexProjects\hello-codex" -Force
Set-Location "$env:USERPROFILE\CodexProjects\hello-codex"
Get-Location
codex.cmd --sandbox workspace-write --ask-for-approval on-request
Enter fullscreen mode Exit fullscreen mode

Bei der Vertrauensfrage den angezeigten Ordner prüfen und erst dann bestätigen. In der realen Prüfung wurde der erste Schreibversuch vom Read-only-Sandbox blockiert, weil der neue Ordner noch nicht vertraut war. Erst nach Vertrauen und der eingeschränkten Windows-Sandbox-Konfiguration entstand die Datei.

Sende im Codex-Dialog zunächst nur:

Antworte ausschließlich mit CODEX_CONNECTION_OK.
Lies keine Dateien, ändere keine Dateien und führe keine Befehle aus.
Enter fullscreen mode Exit fullscreen mode

Tatsächliche Verbindungsprüfung

Diese Antwort belegt eine reale Anfrage mit dem konfigurierten Provider. Die Versionsnummer allein tut das nicht.

5. Meine erste HTML-Seite erstellen

Sende danach den vollständigen Auftrag:

Erstelle index.html tatsächlich im aktuellen Arbeitsordner; gib den Code nicht nur im Chat aus.
Der Seitentitel lautet „我的第一个 Codex 网页“, sichtbar ist „你好,Codex“.
Füge den Button „点击打招呼“ ein. Nach dem Klick soll „按钮可以正常工作“ erscheinen.
CSS und JavaScript müssen in derselben HTML-Datei stehen. Keine externen Bilder, Fonts, Frameworks, CDNs oder Pakete.
Nur index.html erstellen oder ändern. Wenn Schreiben nicht erlaubt ist, melde die Einschränkung ausdrücklich.
Enter fullscreen mode Exit fullscreen mode

Beende mit /quit und prüfe außerhalb von Codex:

Test-Path .\index.html
Start-Process .\index.html
Enter fullscreen mode Exit fullscreen mode

Ich konnte index.html im Browser öffnen und den Button anklicken: Die Seite zeigte zuerst „你好,Codex“ und anschließend „按钮可以正常工作“. Am Ende der Sitzung erschien zusätzlich eine Meldung über fehlenden ursprünglichen Kontext; die gespeicherte Seite ließ sich trotzdem öffnen und bedienen.

Browser-Validierung

6. Hilfe bei häufigen Startproblemen

Beobachtung Zuerst prüfen Nicht als erste Reaktion
node nicht gefunden Installation, Path, neues Terminal Provider wechseln
.ps1 blockiert .cmd-Starter verwenden Ausführungsschutz global deaktivieren
401 Key, Ziel-URL, Gültigkeit Login-Passwort einsetzen
403 Konto- und Modellberechtigung, kompletter Text Nur den Statuscode raten lassen
404 / model not found Base URL, Modell-ID, /v1 Node.js neu installieren
Antwort kommt, Schreiben scheitert Ordnervertrauen, Sandbox, aktueller Pfad Alle Berechtigungen freigeben
False bei Test-Path Get-Location, Dateiname, Endung Chat-Aussage als Beweis nehmen

Top comments (0)