# Ein-Klick-Einrichtungsskript

Mit einem einzigen Befehl von Null auf funktionsfähig: Das Skript wählt den schnellsten Endpoint über einen Latenztest, fragt Sie nach Ihrem API-Key, schreibt die Konfiguration, installiert bei Bedarf Node.js und die CLI und sendet anschließend eine minimale Anfrage zur Verbindungsprüfung. **Wählen Sie zunächst Ihr Betriebssystem**:

> 📖 Vor dem Ausführen holen Sie sich Ihren API-Key (beginnt mit `cr_`) im [QCode.cc Dashboard](https://qcode.cc/dashboard); das Skript fordert Sie zum Einfügen auf (die Eingabe wird nicht angezeigt).

## Interfacesprache

Die Skripte folgen Ihrer Systemsprache und wechseln automatisch zwischen
**Englisch** und **Chinesisch**.
Um eine Sprache explizit zu erzwingen:

```bash
# macOS / Linux
curl -fsSL https://qcode.cc/install/claude-code.sh | bash -s -- --lang zh
```

```powershell
# Windows PowerShell
$env:QCODE_LANG='zh'; irm https://qcode.cc/install/claude-code.ps1 | iex
```

Chinesisch ist die Standardeinstellung, wenn Ihr System-Locale Chinesisch ist; die
obigen einfachen Befehle sind davon nicht betroffen. Gleiches gilt für `codex`.

## 🍎 macOS / 🐧 Linux

Öffnen Sie ein Terminal und fügen Sie Folgendes ein (kein sudo erforderlich):

### Claude Code

```bash
curl -fsSL https://qcode.cc/install/claude-code.sh | bash
```

### Codex

```bash
curl -fsSL https://qcode.cc/install/codex.sh | bash
```

Die Konfiguration wird in Ihre Shell-Konfigurationsdatei geschrieben (ein verwalteter Block in `~/.zshrc` / `~/.bashrc`) oder `~/.codex/`; falls Node.js fehlt, wird es über nvm in Ihr Home-Verzeichnis installiert.

## 🪟 Windows

**Natives PowerShell genügt — kein WSL, keine Administratorrechte.** Öffnen Sie Windows Terminal oder PowerShell und fügen Sie Folgendes ein:

### Claude Code

```powershell
irm https://qcode.cc/install/claude-code.ps1 | iex
```

### Codex

```powershell
irm https://qcode.cc/install/codex.ps1 | iex
```

### Kein `irm` oder durch die Ausführungsrichtlinie blockiert?

Die Skripte lockern die Ausführungsrichtlinie bereits **nur für die aktuelle Ausführung**
(Ihre benutzer- und maschinenseitigen Einstellungen bleiben unberührt) und bevorzugen
`npm.cmd` gegenüber der richtlinienbeschränkten `npm.ps1`. Für die verbleibenden Fälle:

**1. In CMD (Eingabeaufforderung) oder wenn „irm is not recognized“ erscheint**

`irm` ist ein PowerShell-Befehl und existiert in CMD nicht. Dieser funktioniert in beiden:

```
powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://qcode.cc/install/claude-code.ps1 | iex"
```

**2. Zum Ausführen per Doppelklick oder wenn `iex` durch die Richtlinie blockiert wird**

Laden Sie den `.cmd`-Bootstrapper herunter und doppelklicken Sie ihn oder führen Sie ihn in CMD aus:

```
curl -fsSL https://qcode.cc/install/claude-code.cmd -o "%TEMP%\qcode.cmd" && "%TEMP%\qcode.cmd"
```

Windows 10 1803+ bringt `curl.exe` mit. Die `.cmd` wählt PowerShell 7, falls verfügbar, erzwingt
TLS 1.2 und hält das Fenster am Ende offen, sodass ein Doppelklick nicht zu schnell wieder verschwindet.
Für eine chinesische Benutzeroberfläche: `"%TEMP%\qcode.cmd" zh`. Für Codex ersetzen Sie `claude-code` durch `codex`.

**3. Damit `claude` / `codex` auch in künftigen PowerShell-Sitzungen unblockiert laufen**

Die obige Lockerung gilt nur für die aktuelle Sitzung. Führen Sie dies einmal aus — **keine
Administratorrechte erforderlich**, es betrifft nur Ihr eigenes Konto:

```powershell
Set-ExecutionPolicy -Scope CurrentUser RemoteSigned
```

Windows-spezifische Hinweise:

- Die Konfiguration wird in **Benutzer-Umgebungsvariablen** geschrieben (Codex schreibt nach `%USERPROFILE%\.codex\`); vorherige Werte werden automatisch nach `%USERPROFILE%\.qcode\` gesichert
- Falls Node.js fehlt, wird die LTS-Version über winget installiert; ohne winget erhalten Sie Anweisungen zur manuellen Installation von [nodejs.org](https://nodejs.org/)
- Nach Abschluss der Einrichtung übernehmen **neu geöffnete** PowerShell-/Terminalfenster die Konfiguration automatisch; Editoren wie VS Code benötigen einen Neustart
- Falls das Skript durch die Ausführungsrichtlinie blockiert wird, führen Sie zuerst `Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser` aus und versuchen Sie es dann erneut
## Codex: Desktop-App oder CLI

`codex.sh` / `codex.ps1` fragt zunächst, welchen Client Sie verwenden möchten:

1. **Codex Desktop-App** (Standard, einfach Enter drücken) — schreibt nur die Konfigurationsdateien;
   **Node.js und das CLI werden weder geprüft noch installiert**
2. **Codex CLI** — gilt auch für die App; installiert bei Bedarf Node.js und das Codex CLI

Wenn Sie nur die Desktop-App nutzen, wählen Sie 1 – Node wird dann nie angefasst. Führen Sie das Skript
erneut aus und wählen Sie 2, sobald Sie später das CLI benötigen. Nicht interaktiv: `--target app` / `--target cli`
(Windows: `-Target app` / `-Target cli`).

> ⚠️ `~/.codex/config.toml` wird **komplett überschrieben**. Ihre vorhandenen MCP-Server, Profile und
> `approval_policy` werden **nicht** übernommen — das Skript weist ausdrücklich darauf hin und sichert
> die Originaldatei als `.bak.<timestamp>` im selben Verzeichnis. Fügen Sie sie manuell aus dieser
> Sicherung wieder in die neue Konfiguration ein.

## Was das Skript tut

1. **Endpunktauswahl anhand der Latenz** — sendet eine leichtgewichtige Anfrage an jeden der drei Endpunkte (api / asia / us) und empfiehlt den schnellsten (Sie können die Auswahl überschreiben)
2. **Konfiguration schreiben** — Claude Code: ein verwalteter Shell-Block auf macOS/Linux, benutzerbezogene Umgebungsvariablen auf Windows; Codex: `~/.codex/config.toml` + `auth.json` (Standardmodell interaktiv wählbar, `gpt-6-sol` empfohlen)
3. **Umgebung installieren** (überspringbar) — prüft, ob Node.js ≥ 20 vorhanden ist, installiert andernfalls die LTS-Version über nvm (macOS/Linux) oder winget (Windows) und installiert anschließend das CLI per `npm install -g`; alles verbleibt in Ihrem Benutzerverzeichnis
4. **Konnektivität prüfen** — sendet mit Ihrem Key eine minimale Anfrage und gibt bei Fehlschlag gezielte Hinweise zur Fehlerbehebung anhand des HTTP-Statuscodes
5. **Sicherung vor dem Schreiben** — jede geänderte Datei wird zuerst als `.bak.<timestamp>` gesichert; auf Windows werden die bisherigen Umgebungsvariablen nach `%USERPROFILE%\.qcode\` gesichert
6. **Key-Bereinigung** — umgebende Anführungszeichen, Leerzeichen und zusammen mit dem Key eingefügte breitformatige Satzzeichen werden automatisch entfernt; ein Key mit ungültigen Zeichen im Inneren wird direkt abgelehnt und nicht in Ihre Konfiguration geschrieben

## Nicht interaktiver Modus (CI / ohne Rückfragen)

macOS / Linux:

```bash
curl -fsSL https://qcode.cc/install/claude-code.sh | bash -s -- --key cr_xxx --yes
```

| Flag | Beschreibung |
|------|------|
| `--key <cr_...>` | API-Key; wenn angegeben, wird die interaktive Abfrage übersprungen |
| `--domain <api\|asia\|us>` | Endpunkt festlegen, Latenztest überspringen |
| `--model <id>` | Codex: Standardmodell setzen, Auswahl überspringen; Claude Code: Standardmodell festlegen (schreibt `ANTHROPIC_MODEL`) — weglassen, um den Standard von Claude Code beizubehalten, der dessen Upgrades folgt |
| `--lang <zh\|en>` | Oberflächen-Sprache; folgt standardmäßig der System-Locale |
| `--target <app\|cli>` | (nur codex) Nur Konfiguration / zusätzlich CLI installieren; standardmäßig interaktive Abfrage |
| `--yes` / `-y` | Standard für jede Bestätigung akzeptieren |
| `--no-install` | Nur Konfiguration schreiben, Node / CLI nicht installieren |
| `--no-verify` | Konnektivitätsprüfung überspringen |
| `--help` | Alle Flags anzeigen |

Windows mit Parametern (analog zur Tabelle oben: `-Key`, `-Domain`, `-Model`, `-Lang`, `-Target`, `-Yes`, `-NoInstall`, `-NoVerify`):

```powershell
& ([scriptblock]::Create((irm https://qcode.cc/install/claude-code.ps1))) -Key cr_xxx -Yes
```

(Gleiches Muster für `codex.ps1`.)

## Welche Dateien geschrieben werden / Rollback

| Tool / Plattform | Geschrieben in | Rollback |
|------|------|------|
| Claude Code (macOS/Linux) | Der verwaltete Block `# >>> qcode.cc claude-code >>>` in `~/.zshrc` oder `~/.bashrc` | Den gesamten verwalteten Block löschen oder aus der Sicherung `.bak.<timestamp>` im selben Verzeichnis wiederherstellen |
| Claude Code (Windows) | 3 benutzerbezogene Umgebungsvariablen | Vorherige Werte aus `%USERPROFILE%\.qcode\backup-*.json` wiederherstellen |
| Codex (alle Plattformen) | `~/.codex/config.toml` + `~/.codex/auth.json` | Aus der Sicherung `.bak.<timestamp>` im selben Verzeichnis wiederherstellen |

Ein erneutes Ausführen des Skripts ist jederzeit sicher: Der verwaltete Block wird in-place aktualisiert, und Konfigurationsdateien werden vor dem Überschreiben gesichert.
## FAQ

- **Verifizierung liefert 401** — ungültiger oder abgelaufener Key: Prüfen Sie ihn im [Dashboard](https://qcode.cc/dashboard) (stellen Sie sicher, dass das Präfix `cr_` vollständig übernommen wurde), und führen Sie das Skript erneut aus
- **Verifizierung liefert 404** — falsche Endpoint-URL: Die BASE_URL sollte für Claude Code `https://{domain}/api` und für Codex `https://{domain}/openai` lauten, ohne abschließenden Schrägstrich
- **Netzwerk-Timeout** — führen Sie das Skript mit einem anderen Endpoint erneut aus (z. B. `--domain asia`); den Live-Status jedes Endpoints finden Sie unter [probe.qcode.cc](https://probe.qcode.cc/)
- **Befehl `claude` / `codex` nach der Installation unter Windows nicht gefunden** — öffnen Sie ein neues PowerShell-Fenster (der PATH wird nur in neuen Sitzungen aktualisiert)
- **Das Skript soll Node nicht installieren** — fügen Sie `--no-install` (Windows: `-NoInstall`) hinzu, um nur die Konfiguration zu schreiben
- **Skript vorher prüfen möchten** — öffnen Sie <https://qcode.cc/install/claude-code.sh> und lesen Sie den Quellcode; das Skript benötigt weder sudo noch Administratorrechte und schreibt niemals in Systemverzeichnisse
- **„The API key contains invalid characters“** — Anführungszeichen, Leerzeichen oder typografische Zeichen wurden zusammen mit dem Key eingefügt. Das Skript entfernt umgebende Anführungszeichen und Leerzeichen automatisch, Zeichen im Inneren werden jedoch weiterhin verworfen; kopieren Sie den Key erneut aus dem [Dashboard](https://qcode.cc/dashboard)
- **„You are running this script with sudo“** — das Skript **benötigt kein sudo**. Mit sudo ausgeführt schreibt es die Konfiguration in das Home-Verzeichnis von root, von wo Ihre eigene Shell sie niemals lesen wird; führen Sie es erneut ohne sudo aus
- **„Config was written, but verification did not pass“** — die Konfigurationsdateien sind bereits vorhanden; nur die abschließende Verbindungsprüfung ist fehlgeschlagen. Folgen Sie dem Statuscode in der Meldung (401 → Key erneut prüfen, 404 → Adresse prüfen, Timeout → anderen Endpoint versuchen), und führen Sie das Skript erneut aus
- **Codex wird immer langsamer und zeigt fortwährend „Reconnecting… / stream disconnected“** — in der Regel hat sich die Sitzung mit Screenshots/Bildern vollgesogen: Codex lädt bei jeder Runde die gesamte Konversation (einschließlich aller Bilder) erneut hoch, sodass Dutzende Screenshots einige Dutzend MB pro Request bedeuten — bei einer langsameren Verbindung nicht rechtzeitig abzuschließen. Starten Sie eine neue Sitzung mit `/new` (fassen Sie die Aufgabe in wenigen Sätzen zusammen); wenn die Sitzung bereits sehr groß ist, vermeiden Sie `/compact` — die Komprimierungsanfrage muss den gesamten Verlauf ebenfalls einmal vollständig hochladen. Künftig: weniger Screenshots pro Sitzung einfügen oder diese vorher verkleinern