Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
321 changes: 191 additions & 130 deletions website/content/de/cli/commands.md

Large diffs are not rendered by default.

403 changes: 210 additions & 193 deletions website/content/de/cli/configuration.md

Large diffs are not rendered by default.

90 changes: 66 additions & 24 deletions website/content/de/cli/themes.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Themes

Qwen Code unterstützt eine Vielzahl von Themes, um das Farbschema und das Erscheinungsbild anzupassen. Du kannst das Theme über den Befehl `/theme` oder über die Konfigurationseinstellung `"theme":` ändern, um es deinen Vorlieben anzupassen.
Qwen Code unterstützt eine Vielzahl von Themes, um das Farbschema und das Erscheinungsbild anzupassen. Du kannst das Theme über den Befehl `/theme` oder die Konfigurationseinstellung `"theme":` ändern, um es deinen Vorlieben anzupassen.

## Verfügbare Themes

Qwen Code wird mit einer Auswahl vordefinierter Themes geliefert, die du mithilfe des Befehls `/theme` innerhalb der CLI auflisten kannst:

- **Dark Themes:**
- **Dunkle Themes:**
- `ANSI`
- `Atom One`
- `Ayu`
- `Default`
- `Dracula`
- `GitHub`
- **Light Themes:**
- **Helle Themes:**
- `ANSI Light`
- `Ayu Light`
- `Default Light`
Expand All @@ -23,24 +23,26 @@ Qwen Code wird mit einer Auswahl vordefinierter Themes geliefert, die du mithilf

### Themes ändern

1. Gib `/theme` in Qwen Code ein.
2. Ein Dialog oder eine Auswahl erscheint, in dem die verfügbaren Themes aufgelistet sind.
3. Wähle mit den Pfeiltasten ein Theme aus. Manche Oberflächen bieten eventuell eine Live-Vorschau oder markieren das aktuelle Theme.
4. Bestätige deine Auswahl, um das Theme zu übernehmen.
1. Gib `/theme` in Qwen Code ein.
2. Ein Dialog oder eine Auswahl-Eingabeaufforderung erscheint, in der die verfügbaren Themes aufgelistet sind.
3. Wähle mit den Pfeiltasten ein Theme aus. Manche Oberflächen bieten eventuell eine Live-Vorschau oder markieren das aktuelle Element beim Auswählen.
4. Bestätige deine Auswahl, um das Theme anzuwenden.

### Theme Persistence
**Hinweis:** Wenn in deiner `settings.json`-Datei bereits ein Theme definiert ist (entweder über den Namen oder einen Dateipfad), musst du den `"theme"`-Eintrag aus der Datei entfernen, bevor du das Theme über den `/theme`-Befehl ändern kannst.

Ausgewählte Themes werden in der [Konfiguration](./configuration.md) von Qwen Code gespeichert, sodass deine Präferenz über mehrere Sitzungen hinweg beibehalten wird.
### Speichern von Themes

Ausgewählte Themes werden in der [Konfiguration](./configuration.md) von Qwen Code gespeichert, sodass deine Präferenz auch über mehrere Sitzungen hinweg beibehalten wird.

---

## Custom Color Themes
## Benutzerdefinierte Farb-Themes

Qwen Code ermöglicht es dir, eigene Custom Color Themes zu erstellen, indem du diese in deiner `settings.json`-Datei definierst. Dadurch hast du volle Kontrolle über die Farbpalette, die in der CLI verwendet wird.
Qwen Code erlaubt dir, eigene benutzerdefinierte Farb-Themes zu erstellen, indem du diese in deiner `settings.json`-Datei definierst. Dadurch hast du volle Kontrolle über die Farbpalette, die in der CLI verwendet wird.

### Wie du ein Custom Theme definierst
### Wie du ein benutzerdefiniertes Theme definierst

Füge einen `customThemes`-Block zu deiner `settings.json`-Datei auf User-, Projekt- oder Systemebene hinzu. Jedes Custom Theme wird als Objekt mit einem eindeutigen Namen und einem Satz von Farbschlüsseln definiert. Zum Beispiel:
Füge einen `customThemes`-Block zu deiner `settings.json`-Datei auf Benutzer-, Projekt- oder Systemebene hinzu. Jedes benutzerdefinierte Theme wird als Objekt mit einem eindeutigen Namen und einer Reihe von Farbschlüsseln definiert. Zum Beispiel:

```json
{
Expand Down Expand Up @@ -85,9 +87,9 @@ Füge einen `customThemes`-Block zu deiner `settings.json`-Datei auf User-, Proj
- `DiffRemoved` (optional, für entfernte Zeilen in Diffs)
- `DiffModified` (optional, für geänderte Zeilen in Diffs)

**Erforderliche Properties:**
**Erforderliche Eigenschaften:**

- `name` (muss mit dem Key im `customThemes`-Objekt übereinstimmen und ein String sein)
- `name` (muss mit dem Schlüssel im `customThemes`-Objekt übereinstimmen und ein String sein)
- `type` (muss der String `"custom"` sein)
- `Background`
- `Foreground`
Expand All @@ -101,9 +103,49 @@ Füge einen `customThemes`-Block zu deiner `settings.json`-Datei auf User-, Proj
- `Comment`
- `Gray`

Du kannst entweder Hex-Codes (z. B. `#FF0000`) **oder** standardisierte CSS-Farbnamen (z. B. `coral`, `teal`, `blue`) für jeden Farbwert verwenden. Eine vollständige Liste der unterstützten Namen findest du unter [CSS color names](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#color_keywords).
Du kannst entweder Hex-Codes (z. B. `#FF0000`) **oder** Standard-CSS-Farbnamen (z. B. `coral`, `teal`, `blue`) für jeden Farbwert verwenden. Eine vollständige Liste der unterstützten Namen findest du unter [CSS color names](https://developer.mozilla.org/en-US/docs/Web/CSS/color_value#color_keywords).

Du kannst mehrere benutzerdefinierte Themes definieren, indem du weitere Einträge zum `customThemes`-Objekt hinzufügst.

### Themes aus einer Datei laden

Neben der Definition eigener Themes in der `settings.json` kannst du auch direkt ein Theme aus einer JSON-Datei laden, indem du den Dateipfad in deiner `settings.json` angibst. Das ist nützlich, um Themes zu teilen oder sie separat von deiner Hauptkonfiguration zu halten.

Um ein Theme aus einer Datei zu laden, setze die `theme`-Property in deiner `settings.json` auf den Pfad zu deiner Theme-Datei:

```json
{
"theme": "/path/to/your/theme.json"
}
```

Die Theme-Datei muss eine gültige JSON-Datei sein und dieselbe Struktur aufweisen wie ein benutzerdefiniertes Theme, das in der `settings.json` definiert ist.

**Beispiel `my-theme.json`:**

```json
{
"name": "My File Theme",
"type": "custom",
"Background": "#282A36",
"Foreground": "#F8F8F2",
"LightBlue": "#82AAFF",
"AccentBlue": "#61AFEF",
"AccentPurple": "#BD93F9",
"AccentCyan": "#8BE9FD",
"AccentGreen": "#50FA7B",
"AccentYellow": "#F1FA8C",
"AccentRed": "#FF5555",
"Comment": "#6272A4",
"Gray": "#ABB2BF",
"DiffAdded": "#A6E3A1",
"DiffRemoved": "#F38BA8",
"DiffModified": "#89B4FA",
"GradientColors": ["#4796E4", "#847ACE", "#C3677F"]
}
```

Du kannst mehrere Custom Themes definieren, indem du weitere Einträge zum `customThemes`-Objekt hinzufügst.
**Sicherheitshinweis:** Aus Sicherheitsgründen lädt der Gemini CLI nur Theme-Dateien, die sich innerhalb deines Home-Verzeichnisses befinden. Wenn du versuchst, ein Theme von außerhalb deines Home-Verzeichnisses zu laden, wird eine Warnung angezeigt und das Theme wird nicht geladen. Dies verhindert das Laden potenziell schädlicher Theme-Dateien aus nicht vertrauenswürdigen Quellen.

### Beispiel für ein benutzerdefiniertes Theme

Expand Down Expand Up @@ -141,30 +183,30 @@ Du kannst mehrere Custom Themes definieren, indem du weitere Einträge zum `cust

### GitHub

<img src="../assets/theme-github.png" alt="GitHub Theme" width="600">
<img src="../assets/theme-github.png" alt="GitHub theme" width="600">

## Light Themes

### ANSI Light

<img src="../assets/theme-ansi-light.png" alt="ANSI Light Theme" width="600">
<img src="../assets/theme-ansi-light.png" alt="ANSI Light theme" width="600">

### Ayu Light

<img src="../assets/theme-ayu-light.png" alt="Ayu Light Theme" width="600">
<img src="../assets/theme-ayu-light.png" alt="Ayu Light theme" width="600">

### Default Light

<img src="../assets/theme-default-light.png" alt="Default Light Theme" width="600">
<img src="../assets/theme-default-light.png" alt="Default Light theme" width="600">

### GitHub Light

<img src="../assets/theme-github-light.png" alt="GitHub Light Theme" width="600">
<img src="../assets/theme-github-light.png" alt="GitHub Light theme" width="600">

### Google Code

<img src="../assets/theme-google-light.png" alt="Google Code Theme" width="600">
<img src="../assets/theme-google-light.png" alt="Google Code theme" width="600">

### Xcode

<img src="../assets/theme-xcode-light.png" alt="Xcode Light Theme" width="600">
<img src="../assets/theme-xcode-light.png" alt="Xcode Light theme" width="600">
38 changes: 19 additions & 19 deletions website/content/de/deployment.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ Es gibt mehrere Möglichkeiten, Qwen Code auszuführen. Die Option, die du wähl

### 1. Standardinstallation (Empfohlen für typische Benutzer)

Dies ist die empfohlene Methode für Endbenutzer, um Qwen Code zu installieren. Dabei wird das Qwen Code Package aus der NPM Registry heruntergeladen.
Dies ist die empfohlene Methode für Endbenutzer, um Qwen Code zu installieren. Dabei wird das Qwen Code-Paket aus der NPM-Registry heruntergeladen.

- **Globale Installation:**

Expand All @@ -27,24 +27,24 @@ Dies ist die empfohlene Methode für Endbenutzer, um Qwen Code zu installieren.
- **Mit NPX ausführen:**

```bash
# Führe die neueste Version von NPM aus, ohne eine globale Installation
# Führt die neueste Version von NPM aus, ohne eine globale Installation
npx @qwen-code/qwen-code
```

---

### 2. Ausführen in einer Sandbox (Docker/Podman)

Aus Gründen der Sicherheit und Isolation kann Qwen Code innerhalb eines Containers ausgeführt werden. Dies ist die Standardmethode, wie die CLI Tools ausführt, die Nebenwirkungen haben könnten.
Aus Gründen der Sicherheit und Isolation kann Qwen Code innerhalb eines Containers ausgeführt werden. Dies ist die Standardmethode, wie die CLI Tools mit möglichen Nebenwirkungen ausführt.

- **Direkt aus der Registry:**
Du kannst das veröffentlichte Sandbox-Image direkt ausführen. Dies ist nützlich für Umgebungen, in denen du nur Docker zur Verfügung hast und die CLI ausführen möchtest.
Du kannst das veröffentlichte Sandbox-Image direkt ausführen. Dies ist nützlich in Umgebungen, in denen du nur Docker zur Verfügung hast und die CLI ausführen möchtest.
```bash
# Run the published sandbox image
docker run --rm -it ghcr.io/qwenlm/qwen-code:0.0.10
docker run --rm -it ghcr.io/qwenlm/qwen-code:0.0.11
```
- **Verwendung des `--sandbox` Flags:**
Wenn du Qwen Code lokal installiert hast (gemäß der oben beschriebenen Standardinstallation), kannst du es anweisen, innerhalb des Sandbox-Containers ausgeführt zu werden.
Wenn Qwen Code lokal installiert ist (gemäß der oben beschriebenen Standardinstallation), kannst du es anweisen, innerhalb des Sandbox-Containers ausgeführt zu werden.
```bash
qwen --sandbox -y -p "your prompt here"
```
Expand All @@ -58,41 +58,41 @@ Mitwirkende am Projekt möchten die CLI direkt aus dem Quellcode ausführen.
- **Entwicklungsmodus:**
Diese Methode bietet Hot-Reloading und ist nützlich für die aktive Entwicklung.
```bash
# Vom Stammverzeichnis des Repositories
# Vom Root des Repositorys
npm run start
```
- **Produktionsähnlicher Modus (Verknüpftes Paket):**
Diese Methode simuliert eine globale Installation, indem sie Ihr lokales Paket verknüpft. Sie ist nützlich, um einen lokalen Build in einem Produktions-Workflow zu testen.
- **Produktionsähnlicher Modus (Verknüpftes Package):**
Diese Methode simuliert eine globale Installation, indem sie dein lokales Package verknüpft. Sie ist nützlich, um einen lokalen Build in einem Produktions-Workflow zu testen.

```bash
# Verknüpfen Sie das lokale CLI-Paket mit Ihren globalen node_modules
# Verknüpfe das lokale CLI-Package mit deinen globalen node_modules
npm link packages/cli

# Jetzt können Sie Ihre lokale Version mit dem Befehl `qwen` ausführen
# Jetzt kannst du deine lokale Version mit dem `qwen` Befehl ausführen
qwen
```

---

### 4. Ausführen des neuesten Qwen Code Commits von GitHub

Sie können die zuletzt committete Version von Qwen Code direkt aus dem GitHub-Repository ausführen. Dies ist nützlich, um Funktionen zu testen, die sich noch in der Entwicklung befinden.
Du kannst die zuletzt committete Version von Qwen Code direkt aus dem GitHub-Repository ausführen. Das ist nützlich, um Features zu testen, die sich noch in Entwicklung befinden.

```bash

# CLI direkt aus dem main branch auf GitHub ausführen
# CLI direkt aus dem main Branch auf GitHub ausführen
npx https://github.com/QwenLM/qwen-code
```

## Deployment-Architektur

Die oben beschriebenen Ausführungsmethoden werden durch die folgenden Architekturkomponenten und -prozesse ermöglicht:
Die oben beschriebenen Ausführungsmethoden werden durch die folgenden Architekturkomponenten und Prozesse ermöglicht:

**NPM-Pakete**

Das Qwen Code-Projekt ist ein Monorepo, das Kernpakete im NPM-Registry veröffentlicht:

- `@qwen-code/qwen-code-core`: Das Backend, das die Logik und Tool-Ausführung übernimmt.
- `@qwen-code/qwen-code-core`: Das Backend, welches Logik und Toolausführung übernimmt.
- `@qwen-code/qwen-code`: Das benutzerseitige Frontend.

Diese Pakete werden sowohl bei der Standardinstallation als auch beim Ausführen von Qwen Code aus dem Quellcode verwendet.
Expand All @@ -101,17 +101,17 @@ Diese Pakete werden sowohl bei der Standardinstallation als auch beim Ausführen

Es gibt zwei verschiedene Build-Prozesse, abhängig vom Verteilungskanal:

- **NPM-Veröffentlichung:** Für die Veröffentlichung im NPM-Registry wird der TypeScript-Quellcode in `@qwen-code/qwen-code-core` und `@qwen-code/qwen-code` mithilfe des TypeScript Compilers (`tsc`) in Standard-JavaScript transpiliert. Das resultierende `dist/`-Verzeichnis wird dann im NPM-Paket veröffentlicht. Dies ist ein Standardansatz für TypeScript-Bibliotheken.
- **NPM-Veröffentlichung:** Für die Veröffentlichung im NPM-Registry wird der TypeScript-Quellcode in `@qwen-code/qwen-code-core` und `@qwen-code/qwen-code` mithilfe des TypeScript Compilers (`tsc`) in Standard-JavaScript transpiliert. Das resultierende `dist/`-Verzeichnis wird dann im NPM-Paket veröffentlicht. Dies ist ein üblicher Ansatz für TypeScript-Bibliotheken.

- **GitHub `npx`-Ausführung:** Beim direkten Ausführen der neuesten Qwen Code-Version von GitHub wird ein anderer Prozess durch das `prepare`-Script in der `package.json` ausgelöst. Dieses Script nutzt `esbuild`, um die gesamte Anwendung und ihre Abhängigkeiten in eine einzelne, eigenständige JavaScript-Datei zu bündeln. Dieses Bundle wird dynamisch auf dem Rechner des Benutzers erzeugt und ist nicht im Repository enthalten.
- **GitHub `npx`-Ausführung:** Beim direkten Ausführen der neuesten Version von Qwen Code von GitHub aus wird ein anderer Prozess durch das `prepare`-Skript in der `package.json` gestartet. Dieses Skript nutzt `esbuild`, um die gesamte Anwendung samt Abhängigkeiten in eine einzelne, eigenständige JavaScript-Datei zu bündeln. Dieses Bundle wird dynamisch auf dem Rechner des Benutzers erzeugt und nicht im Repository versioniert.

**Docker-Sandbox-Image**

Die Docker-basierte Ausführungsmethode wird vom Container-Image `qwen-code-sandbox` unterstützt. Dieses Image wird in einer Container-Registry veröffentlicht und enthält eine global vorinstallierte Version von Qwen Code.
Die Docker-basierte Ausführungsmethode wird vom Container-Image `qwen-code-sandbox` unterstützt. Dieses Image wird in einer Container-Registry veröffentlicht und enthält eine vorinstallierte globale Version von Qwen Code.

## Release-Prozess

Der Release-Prozess ist über GitHub Actions automatisiert. Der Release-Workflow führt folgende Aktionen durch:
Der Release-Prozess ist durch GitHub Actions automatisiert. Der Release-Workflow führt folgende Aktionen durch:

1. Build der NPM-Pakete mit `tsc`.
2. Veröffentlichen der NPM-Pakete in der Artifact Registry.
Expand Down
26 changes: 13 additions & 13 deletions website/content/de/examples/proxy-script.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Beispiel-Proxy-Script
# Beispiel Proxy-Skript

Das folgende ist ein Beispiel für ein Proxy-Script, das mit der Umgebungsvariable `GEMINI_SANDBOX_PROXY_COMMAND` verwendet werden kann. Dieses Script erlaubt ausschließlich `HTTPS`-Verbindungen zu `example.com:443` und lehnt alle anderen Anfragen ab.
Das folgende ist ein Beispiel für ein Proxy-Skript, das mit der Umgebungsvariable `GEMINI_SANDBOX_PROXY_COMMAND` verwendet werden kann. Dieses Skript erlaubt nur `HTTPS`-Verbindungen zu `example.com:443` und lehnt alle anderen Anfragen ab.

```javascript
#!/usr/bin/env node
Expand All @@ -12,13 +12,13 @@ Das folgende ist ein Beispiel für ein Proxy-Script, das mit der Umgebungsvariab
*/

// Beispiel-Proxy-Server, der auf :::8877 lauscht und nur HTTPS-Verbindungen zu example.com erlaubt.
// Setze `GEMINI_SANDBOX_PROXY_COMMAND=scripts/example-proxy.js`, um den Proxy zusammen mit der Sandbox zu starten.
// Teste mit `curl https://example.com` innerhalb der Sandbox (im Shell-Modus oder über das Shell-Tool)
// Setze `GEMINI_SANDBOX_PROXY_COMMAND=scripts/example-proxy.js`, um den Proxy zusammen mit dem Sandbox-Modus zu starten.
// Teste ihn mit `curl https://example.com` innerhalb der Sandbox (im Shell-Modus oder über das Shell-Tool).

import http from 'http';
import net from 'net';
import { URL } from 'url';
import console from 'console';
import http from 'node:http';
import net from 'node:net';
import { URL } from 'node:url';
import console from 'node:console';

const PROXY_PORT = 8877;
const ALLOWED_DOMAINS = ['example.com', 'googleapis.com'];
Expand All @@ -34,7 +34,7 @@ const server = http.createServer((req, res) => {
});

server.on('connect', (req, clientSocket, head) => {
// req.url hat für CONNECT-Anfragen das Format "hostname:port"
// req.url hat bei einer CONNECT-Anfrage das Format "hostname:port"
const { port, hostname } = new URL(`http://${req.url}`);

console.log(`[PROXY] CONNECT-Anfrage abgefangen für: ${hostname}:${port}`);
Expand All @@ -47,10 +47,10 @@ server.on('connect', (req, clientSocket, head) => {
) {
console.log(`[PROXY] Verbindung zu ${hostname}:${port} erlaubt`);

// TCP-Verbindung zum ursprünglichen Ziel herstellen
// Stelle eine TCP-Verbindung zum ursprünglichen Ziel her.
const serverSocket = net.connect(port, hostname, () => {
clientSocket.write('HTTP/1.1 200 Connection Established\r\n\r\n');
// Tunnel erstellen, indem Daten zwischen Client und Zielserver weitergeleitet werden
// Erstelle einen Tunnel durch Weiterleitung der Daten zwischen Client und Zielserver.
serverSocket.write(head);
serverSocket.pipe(clientSocket);
clientSocket.pipe(serverSocket);
Expand All @@ -66,7 +66,7 @@ server.on('connect', (req, clientSocket, head) => {
}

clientSocket.on('error', (err) => {
// Kann passieren, wenn der Client die Verbindung abbricht
// Kann passieren, wenn der Client die Verbindung schließt.
console.error(`[PROXY] Client-Socket-Fehler: ${err.message}`);
});
});
Expand All @@ -75,7 +75,7 @@ server.listen(PROXY_PORT, () => {
const address = server.address();
console.log(`[PROXY] Proxy hört auf ${address.address}:${address.port}`);
console.log(
`[PROXY] HTTPS-Verbindungen erlaubt zu Domains: ${ALLOWED_DOMAINS.join(', ')}`,
`[PROXY] Erlaubte HTTPS-Verbindungen zu Domains: ${ALLOWED_DOMAINS.join(', ')}`,
);
});
```
Loading