Qwen Code Konfiguration
Hinweis zum neuen Konfigurationsformat
Das Format der settings.json-Datei wurde auf eine neue, besser strukturierte Form aktualisiert. Das alte Format wird automatisch migriert.
Details zum vorherigen Format findest du in der v1 Konfigurationsdokumentation.
Qwen Code bietet mehrere Möglichkeiten, sein Verhalten zu konfigurieren, darunter Umgebungsvariablen, Command-Line-Argumente und Settings-Dateien. Dieses Dokument beschreibt die verschiedenen Konfigurationsmethoden und verfügbaren Einstellungen.
Konfigurationsebenen
Die Konfiguration wird in der folgenden Reihenfolge angewendet (niedrigere Nummern werden von höheren überschrieben):
- Standardwerte: Fest in der Anwendung kodierten Standardwerte.
- System-Standard-Datei: Systemweite Standardeinstellungen, die von anderen Einstellungsdateien überschrieben werden können.
- Benutzereinstellungsdatei: Globale Einstellungen für den aktuellen Benutzer.
- Projekteinstellungsdatei: Projektspezifische Einstellungen.
- Systemeinstellungsdatei: Systemweite Einstellungen, die alle anderen Einstellungsdateien überschreiben.
- Umgebungsvariablen: Systemweite oder sessionspezifische Variablen, möglicherweise aus
.envDateien geladen. - Kommandozeilenargumente: Werte, die beim Starten der CLI übergeben werden.
Einstellungsdateien
Qwen Code verwendet JSON-Einstellungsdateien für die persistente Konfiguration. Es gibt vier Speicherorte für diese Dateien:
-
System-Standarddatei:
- Speicherort:
/etc/qwen-code/system-defaults.json(Linux),C:\ProgramData\qwen-code\system-defaults.json(Windows) oder/Library/Application Support/QwenCode/system-defaults.json(macOS). Der Pfad kann mithilfe der UmgebungsvariableQWEN_CODE_SYSTEM_DEFAULTS_PATHüberschrieben werden. - Geltungsbereich: Stellt eine Basisebene von systemweiten Standardeinstellungen bereit. Diese Einstellungen haben die niedrigste Priorität und sollen durch Benutzer-, Projekt- oder Systemüberschreibungseinstellungen überschrieben werden.
- Speicherort:
-
Benutzereinstellungsdatei:
- Speicherort:
~/.qwen/settings.json(wobei~Ihr Home-Verzeichnis ist). - Geltungsbereich: Gilt für alle Qwen Code-Sitzungen des aktuellen Benutzers.
- Speicherort:
-
Projekteinstellungsdatei:
- Speicherort:
.qwen/settings.jsonim Stammverzeichnis Ihres Projekts. - Geltungsbereich: Gilt nur, wenn Qwen Code aus diesem spezifischen Projekt heraus ausgeführt wird. Projekteinstellungen überschreiben Benutzereinstellungen.
- Speicherort:
-
Systemeinstellungsdatei:
- Speicherort:
/etc/qwen-code/settings.json(Linux),C:\ProgramData\qwen-code\settings.json(Windows) oder/Library/Application Support/QwenCode/settings.json(macOS). Der Pfad kann mithilfe der UmgebungsvariableQWEN_CODE_SYSTEM_SETTINGS_PATHüberschrieben werden. - Geltungsbereich: Gilt für alle Qwen Code-Sitzungen auf dem System, für alle Benutzer. Systemeinstellungen überschreiben Benutzer- und Projekteinstellungen. Kann für Systemadministratoren in Unternehmen nützlich sein, um Kontrolle über die Qwen Code-Konfigurationen der Benutzer zu haben.
- Speicherort:
Hinweis zu Umgebungsvariablen in den Einstellungen: Zeichenkettenwerte innerhalb Ihrer settings.json-Dateien können Umgebungsvariablen enthalten, indem sie entweder die Syntax $VAR_NAME oder ${VAR_NAME} verwenden. Diese Variablen werden automatisch aufgelöst, sobald die Einstellungen geladen werden. Wenn Sie zum Beispiel eine Umgebungsvariable namens MY_API_TOKEN haben, könnten Sie diese in der settings.json wie folgt verwenden: "apiKey": "$MY_API_TOKEN".
Das .qwen-Verzeichnis in deinem Projekt
Neben einer Projekt-Einstellungsdatei kann das .qwen-Verzeichnis eines Projekts weitere projektspezifische Dateien enthalten, die für den Betrieb von Qwen Code relevant sind, wie z.B.:
- Benutzerdefinierte Sandbox-Profile (z.B.
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile).
Verfügbare Einstellungen in settings.json
Die Einstellungen sind in Kategorien organisiert. Alle Einstellungen sollten innerhalb ihres entsprechenden Hauptkategorie-Objekts in deiner settings.json-Datei platziert werden.
general
-
general.preferredEditor(string):- Beschreibung: Der bevorzugte Editor zum Öffnen von Dateien.
- Standard:
undefined
-
general.vimMode(boolean):- Beschreibung: Aktiviere Vim-Keybindings.
- Standard:
false
-
general.disableAutoUpdate(boolean):- Beschreibung: Deaktiviere automatische Updates.
- Standard:
false
-
general.disableUpdateNag(boolean):- Beschreibung: Deaktiviere Update-Benachrichtigungen.
- Standard:
false
-
general.checkpointing.enabled(boolean):- Beschreibung: Aktiviere Session-Checkpointing für die Wiederherstellung.
- Standard:
false
output
output.format(string):- Beschreibung: Das Format der CLI-Ausgabe.
- Standard:
"text" - Werte:
"text","json"
ui
-
ui.theme(string):- Beschreibung: Das Farbthema für die UI. Siehe Themes für verfügbare Optionen.
- Standardwert:
undefined
-
ui.customThemes(object):- Beschreibung: Benutzerdefinierte Themendefinitionen.
- Standardwert:
{}
-
ui.hideWindowTitle(boolean):- Beschreibung: Blendet die Fenstertitelleiste aus.
- Standardwert:
false
-
ui.hideTips(boolean):- Beschreibung: Blendet hilfreiche Tipps in der UI aus.
- Standardwert:
false
-
ui.hideBanner(boolean):- Beschreibung: Blendet das Anwendungsbanner aus.
- Standardwert:
false
-
ui.hideFooter(boolean):- Beschreibung: Blendet den Footer aus der UI aus.
- Standardwert:
false
-
ui.showMemoryUsage(boolean):- Beschreibung: Zeigt Speichernutzungsinformationen in der UI an.
- Standardwert:
false
-
ui.showLineNumbers(boolean):- Beschreibung: Zeigt Zeilennummern im Chat an.
- Standardwert:
false
-
ui.showCitations(boolean):- Beschreibung: Zeigt Zitate für generierten Text im Chat an.
- Standardwert:
true
-
enableWelcomeBack(boolean):- Beschreibung: Zeigt einen „Willkommen zurück“-Dialog an, wenn man zu einem Projekt mit Konversationsverlauf zurückkehrt.
- Standardwert:
true
-
ui.accessibility.disableLoadingPhrases(boolean):- Beschreibung: Deaktiviert Ladehinweise zur Verbesserung der Barrierefreiheit.
- Standardwert:
false
-
ui.customWittyPhrases(Array aus Strings):- Beschreibung: Eine Liste benutzerdefinierter Phrasen, die während des Ladezustands angezeigt werden. Wenn angegeben, durchläuft die CLI diese Phrasen statt der Standardphrasen.
- Standardwert:
[]
ide
-
ide.enabled(boolean):- Beschreibung: Aktiviert den IDE-Integrationsmodus.
- Standardwert:
false
-
ide.hasSeenNudge(boolean):- Beschreibung: Gibt an, ob der Benutzer den Hinweis zur IDE-Integration bereits gesehen hat.
- Standardwert:
false
privacy
privacy.usageStatisticsEnabled(boolean):- Beschreibung: Aktiviert die Sammlung von Nutzungsstatistiken.
- Standardwert:
true
model
-
model.name(string):- Beschreibung: Das Qwen-Modell, das für Gespräche verwendet werden soll.
- Standardwert:
undefined
-
model.maxSessionTurns(number):- Beschreibung: Maximale Anzahl an Benutzer-/Modell-/Tool-Runden, die in einer Sitzung gespeichert werden. -1 bedeutet unbegrenzt.
- Standardwert:
-1
-
model.summarizeToolOutput(object):- Beschreibung: Aktiviert oder deaktiviert die Zusammenfassung von Tool-Ausgaben. Du kannst das Token-Budget für die Zusammenfassung über die
tokenBudget-Einstellung festlegen. Hinweis: Derzeit wird nur dasrun_shell_command-Tool unterstützt. Beispiel:{"run_shell_command": {"tokenBudget": 2000}} - Standardwert:
undefined
- Beschreibung: Aktiviert oder deaktiviert die Zusammenfassung von Tool-Ausgaben. Du kannst das Token-Budget für die Zusammenfassung über die
-
model.chatCompression.contextPercentageThreshold(number):- Beschreibung: Legt den Schwellenwert für die Komprimierung des Chatverlaufs als Prozentsatz des maximalen Token-Limits des Modells fest. Dies ist ein Wert zwischen 0 und 1, der sowohl für die automatische Komprimierung als auch für den manuellen Befehl
/compressgilt. Ein Wert von0.6löst beispielsweise die Komprimierung aus, sobald der Chatverlauf 60 % des Token-Limits überschreitet. - Standardwert:
0.7
- Beschreibung: Legt den Schwellenwert für die Komprimierung des Chatverlaufs als Prozentsatz des maximalen Token-Limits des Modells fest. Dies ist ein Wert zwischen 0 und 1, der sowohl für die automatische Komprimierung als auch für den manuellen Befehl
-
model.skipNextSpeakerCheck(boolean):- Beschreibung: Überspringt die Prüfung des nächsten Sprechers.
- Standardwert:
false
-
model.skipLoopDetection(boolean):- Beschreibung: Deaktiviert die Erkennung von Schleifen. Die Schleifenerkennung verhindert Endlosschleifen in KI-Antworten, kann aber auch Fehlalarme auslösen, die legitime Workflows unterbrechen. Aktiviere diese Option, wenn du häufige Unterbrechungen durch Fehlalarme bei der Schleifenerkennung feststellst.
- Standardwert:
false
context
-
context.fileName(string oder Array aus Strings):- Beschreibung: Der Name der Context-Datei(en).
- Standardwert:
undefined
-
context.importFormat(string):- Beschreibung: Das Format, das beim Importieren von Memory verwendet wird.
- Standardwert:
undefined
-
context.discoveryMaxDirs(number):- Beschreibung: Maximale Anzahl an Verzeichnissen, die bei der Suche nach Memory durchsucht werden.
- Standardwert:
200
-
context.includeDirectories(Array):- Beschreibung: Zusätzliche Verzeichnisse, die im Workspace-Kontext berücksichtigt werden sollen. Fehlende Verzeichnisse werden mit einer Warnung übersprungen.
- Standardwert:
[]
-
context.loadFromIncludeDirectories(boolean):- Beschreibung: Steuert das Verhalten des Befehls
/memory refresh. Wenn auftruegesetzt, solltenQWEN.md-Dateien aus allen hinzugefügten Verzeichnissen geladen werden. BeifalsesollQWEN.mdnur aus dem aktuellen Verzeichnis geladen werden. - Standardwert:
false
- Beschreibung: Steuert das Verhalten des Befehls
-
context.fileFiltering.respectGitIgnore(boolean):- Beschreibung: Berücksichtigt
.gitignore-Dateien bei der Suche. - Standardwert:
true
- Beschreibung: Berücksichtigt
-
context.fileFiltering.respectQwenIgnore(boolean):- Beschreibung: Berücksichtigt
.qwenignore-Dateien bei der Suche. - Standardwert:
true
- Beschreibung: Berücksichtigt
-
context.fileFiltering.enableRecursiveFileSearch(boolean):- Beschreibung: Legt fest, ob rekursiv nach Dateinamen unterhalb des aktuellen Verzeichnisbaums gesucht werden soll, wenn
@-Präfixe im Prompt vervollständigt werden. - Standardwert:
true
- Beschreibung: Legt fest, ob rekursiv nach Dateinamen unterhalb des aktuellen Verzeichnisbaums gesucht werden soll, wenn
tools
-
tools.sandbox(boolean oder string):- Beschreibung: Sandbox-Ausführungsumgebung (kann ein Boolean oder ein Pfad-String sein).
- Standardwert:
undefined
-
tools.shell.enableInteractiveShell(boolean):Verwendet
node-ptyfür ein interaktives Shell-Erlebnis. Der Fallback aufchild_processbleibt weiterhin möglich. Standardmäßig auffalsegesetzt. -
tools.core(Array von Strings):- Beschreibung: Kann verwendet werden, um die Menge der integrierten Tools mittels einer Allowlist einzuschränken. Eine Liste der Core-Tools findest du unter Built-in Tools. Die Matching-Logik entspricht der von
tools.allowed. - Standardwert:
undefined
- Beschreibung: Kann verwendet werden, um die Menge der integrierten Tools mittels einer Allowlist einzuschränken. Eine Liste der Core-Tools findest du unter Built-in Tools. Die Matching-Logik entspricht der von
-
tools.exclude(Array von Strings):- Beschreibung: Tool-Namen, die von der Erkennung ausgeschlossen werden sollen.
- Standardwert:
undefined
-
tools.allowed(Array von Strings):- Beschreibung: Liste von Tool-Namen, für die der Bestätigungsdialog übersprungen wird. Nützlich für Tools, denen du vertraust und die du häufig verwendest. Beispiel:
["run_shell_command(git)", "run_shell_command(npm test)"]überspringt den Bestätigungsdialog beim Ausführen beliebigergit- undnpm test-Befehle. Details zu Präfix-Matching, Befehlsverkettung usw. findest du unter Shell Tool command restrictions. - Standardwert:
undefined
- Beschreibung: Liste von Tool-Namen, für die der Bestätigungsdialog übersprungen wird. Nützlich für Tools, denen du vertraust und die du häufig verwendest. Beispiel:
-
tools.approvalMode(string):- Beschreibung: Legt den Standard-Approval-Modus für die Tool-Nutzung fest. Mögliche Werte:
plan: Nur Analyse, keine Dateiänderungen oder Befehlsausführung.default: Bestätigung erforderlich vor Dateiänderungen oder Shell-Befehlen.auto-edit: Automatische Genehmigung von Dateiänderungen.yolo: Automatische Genehmigung aller Tool-Aufrufe.
- Standardwert:
default
- Beschreibung: Legt den Standard-Approval-Modus für die Tool-Nutzung fest. Mögliche Werte:
-
tools.discoveryCommand(string):- Beschreibung: Befehl, der zur Tool-Erkennung ausgeführt wird.
- Standardwert:
undefined
-
tools.callCommand(string):- Beschreibung: Definiert einen benutzerdefinierten Shell-Befehl zum Aufrufen eines spezifischen Tools, das über
tools.discoveryCommanderkannt wurde. Der Shell-Befehl muss folgende Kriterien erfüllen:- Er muss den Funktionsnamen (exakt wie in der Funktionsdeklaration ) als erstes Kommandozeilenargument entgegennehmen.
- Er muss Funktionsargumente als JSON von
stdinlesen, analog zufunctionCall.args. - Er muss die Funktionsausgabe als JSON auf
stdoutzurückgeben, analog zufunctionResponse.response.content.
- Standardwert:
undefined
- Beschreibung: Definiert einen benutzerdefinierten Shell-Befehl zum Aufrufen eines spezifischen Tools, das über
mcp
-
mcp.serverCommand(string):- Beschreibung: Befehl zum Starten eines MCP-Servers.
- Standardwert:
undefined
-
mcp.allowed(Array aus Strings):- Beschreibung: Eine Allowlist von erlaubten MCP-Servern.
- Standardwert:
undefined
-
mcp.excluded(Array aus Strings):- Beschreibung: Eine Denylist von auszuschließenden MCP-Servern.
- Standardwert:
undefined
security
-
security.folderTrust.enabled(boolean):- Beschreibung: Einstellung zur Aktivierung des Folder Trust.
- Standardwert:
false
-
security.auth.selectedType(string):- Beschreibung: Der aktuell ausgewählte Authentifizierungstyp.
- Standardwert:
undefined
-
security.auth.enforcedType(string):- Beschreibung: Der erforderliche Authentifizierungstyp (nützlich für Unternehmen).
- Standardwert:
undefined
-
security.auth.useExternal(boolean):- Beschreibung: Gibt an, ob ein externer Authentifizierungsablauf verwendet werden soll.
- Standardwert:
undefined
advanced
-
advanced.autoConfigureMemory(boolean):- Beschreibung: Automatische Konfiguration der Node.js Speicherlimits.
- Standardwert:
false
-
advanced.dnsResolutionOrder(string):- Beschreibung: Die DNS-Auflösungsreihenfolge.
- Standardwert:
undefined
-
advanced.excludedEnvVars(Array aus Strings):- Beschreibung: Umgebungsvariablen, die vom Projekt-Kontext ausgeschlossen werden sollen.
- Standardwert:
["DEBUG","DEBUG_MODE"]
-
advanced.bugCommand(Objekt):- Beschreibung: Konfiguration für den Bug-Report Befehl.
- Standardwert:
undefined
-
advanced.tavilyApiKey(string):- Beschreibung: API-Key für den Tavily Web-Suchdienst. Wird benötigt, um die Funktionalität des
web_searchTools zu aktivieren. Falls nicht konfiguriert, wird das Web-Suchtool deaktiviert und übersprungen. - Standardwert:
undefined
- Beschreibung: API-Key für den Tavily Web-Suchdienst. Wird benötigt, um die Funktionalität des
mcpServers
Konfiguriert Verbindungen zu einem oder mehreren Model-Context Protocol (MCP)-Servern, um benutzerdefinierte Tools zu entdecken und zu verwenden. Qwen Code versucht, sich mit jedem konfigurierten MCP-Server zu verbinden, um verfügbare Tools zu erkennen. Wenn mehrere MCP-Server ein Tool mit demselben Namen bereitstellen, werden die Tool-Namen mit dem von dir definierten Server-Alias vorangestellt (z. B. serverAlias__actualToolName), um Namenskonflikte zu vermeiden. Beachte, dass das System möglicherweise bestimmte Schema-Eigenschaften aus den MCP-Tool-Definitionen entfernt, um die Kompatibilität sicherzustellen. Mindestens eines der Felder command, url oder httpUrl muss angegeben werden. Werden mehrere Felder angegeben, gilt folgende Reihenfolge der Priorität: httpUrl, dann url, dann command.
mcpServers.<SERVER_NAME>(Objekt): Die Serverparameter für den benannten Server.command(String, optional): Der Befehl zum Starten des MCP-Servers über Standard-I/O.args(Array von Strings, optional): Argumente, die an den Befehl übergeben werden.env(Objekt, optional): Umgebungsvariablen, die für den Serverprozess gesetzt werden.cwd(String, optional): Das Arbeitsverzeichnis, in dem der Server gestartet wird.url(String, optional): Die URL eines MCP-Servers, der Server-Sent Events (SSE) zur Kommunikation verwendet.httpUrl(String, optional): Die URL eines MCP-Servers, der streambares HTTP zur Kommunikation verwendet.headers(Objekt, optional): Eine Map von HTTP-Headers, die bei Anfragen anurloderhttpUrlgesendet werden.timeout(Zahl, optional): Zeitlimit in Millisekunden für Anfragen an diesen MCP-Server.trust(Boolean, optional): Dem Server vertrauen und alle Bestätigungen beim Aufruf von Tools umgehen.description(String, optional): Eine kurze Beschreibung des Servers, die z. B. zu Anzeigezwecken verwendet werden kann.includeTools(Array von Strings, optional): Liste der Tool-Namen, die von diesem MCP-Server verwendet werden sollen. Wenn angegeben, sind nur die hier aufgelisteten Tools dieses Servers verfügbar (Whitelist-Verhalten). Ohne Angabe sind standardmäßig alle Tools des Servers aktiviert.excludeTools(Array von Strings, optional): Liste der Tool-Namen, die von diesem MCP-Server ausgeschlossen werden sollen. Die hier aufgelisteten Tools stehen dem Modell nicht zur Verfügung, selbst wenn sie vom Server bereitgestellt werden. Hinweis:excludeToolshat Vorrang vorincludeTools– wenn ein Tool in beiden Listen steht, wird es ausgeschlossen.
telemetry
Konfiguriert das Logging und die Metrikerfassung für Qwen Code. Weitere Informationen findest du unter Telemetry.
- Eigenschaften:
enabled(boolean): Gibt an, ob Telemetrie aktiviert ist.target(string): Das Ziel für die gesammelten Telemetriedaten. Unterstützte Werte sindlocalundgcp.otlpEndpoint(string): Der Endpoint für den OTLP Exporter.otlpProtocol(string): Das Protokoll für den OTLP Exporter (grpcoderhttp).logPrompts(boolean): Gibt an, ob der Inhalt von User-Prompts in die Logs aufgenommen werden soll.outfile(string): Die Datei, in die Telemetriedaten geschrieben werden, wenntargetauflocalgesetzt ist.useCollector(boolean): Gibt an, ob ein externer OTLP Collector verwendet werden soll.
Beispiel settings.json
Hier ist ein Beispiel für eine settings.json Datei mit der verschachtelten Struktur, neu ab v0.3.0:
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideBanner": true,
"hideTips": false,
"customWittyPhrases": [
"You forget a thousand things every day. Make sure this is one of ’em",
"Connecting to AGI"
]
},
"tools": {
"approvalMode": "yolo",
"sandbox": "docker",
"discoveryCommand": "bin/get_tools",
"callCommand": "bin/call_tool",
"exclude": ["write_file"]
},
"mcpServers": {
"mainServer": {
"command": "bin/mcp_server.py"
},
"anotherServer": {
"command": "node",
"args": ["mcp_server.js", "--verbose"]
}
},
"telemetry": {
"enabled": true,
"target": "local",
"otlpEndpoint": "http://localhost:4317",
"logPrompts": true
},
"privacy": {
"usageStatisticsEnabled": true
},
"model": {
"name": "qwen3-coder-plus",
"maxSessionTurns": 10,
"summarizeToolOutput": {
"run_shell_command": {
"tokenBudget": 100
}
}
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}Shell-Historie
Die CLI speichert eine Historie der ausgeführten Shell-Befehle. Um Konflikte zwischen verschiedenen Projekten zu vermeiden, wird diese Historie in einem projektspezifischen Verzeichnis innerhalb des Home-Ordners des Benutzers gespeichert.
- Speicherort:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>ist ein eindeutiger Identifier, der aus dem Root-Pfad deines Projekts generiert wird.- Die Historie wird in einer Datei mit dem Namen
shell_historygespeichert.
Umgebungsvariablen & .env-Dateien
Umgebungsvariablen sind eine gängige Methode, um Anwendungen zu konfigurieren – besonders für sensible Informationen wie API keys oder Einstellungen, die sich zwischen verschiedenen Umgebungen unterscheiden. Informationen zur Authentifizierung findest du in der Authentifizierungsdokumentation, die alle verfügbaren Authentifizierungsmethoden abdeckt.
Die CLI lädt Umgebungsvariablen automatisch aus einer .env-Datei. Die Ladereihenfolge ist wie folgt:
.env-Datei im aktuellen Arbeitsverzeichnis.- Falls nicht gefunden, sucht sie rekursiv in den übergeordneten Verzeichnissen, bis eine
.env-Datei gefunden wird oder das Projekt-Root-Verzeichnis (erkennbar an einem.git-Ordner) oder das Home-Verzeichnis erreicht ist. - Wenn immer noch nichts gefunden wurde, wird nach
~/.env(im Home-Verzeichnis des Benutzers) gesucht.
Ausschluss von Umgebungsvariablen: Einige Umgebungsvariablen (wie DEBUG und DEBUG_MODE) werden standardmäßig aus Projekt-.env-Dateien ausgeschlossen, um das Verhalten der CLI nicht zu beeinträchtigen. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen. Du kannst dieses Verhalten über die Einstellung advanced.excludedEnvVars in deiner settings.json-Datei anpassen.
OPENAI_API_KEY:- Eine von mehreren verfügbaren Authentifizierungsmethoden.
- Setze diesen Wert in deinem Shell-Profil (z. B.
~/.bashrc,~/.zshrc) oder in einer.env-Datei.
OPENAI_BASE_URL:- Eine von mehreren verfügbaren Authentifizierungsmethoden.
- Setze diesen Wert in deinem Shell-Profil (z. B.
~/.bashrc,~/.zshrc) oder in einer.env-Datei.
OPENAI_MODEL:- Legt das standardmäßig zu verwendende OPENAI-Modell fest.
- Überschreibt den fest codierten Standardwert.
- Beispiel:
export OPENAI_MODEL="qwen3-coder-plus"
GEMINI_TELEMETRY_ENABLED:- Auf
trueoder1setzen, um Telemetrie zu aktivieren. Jeder andere Wert deaktiviert sie. - Überschreibt die Einstellung
telemetry.enabled.
- Auf
GEMINI_TELEMETRY_TARGET:- Legt das Ziel für die Telemetrie fest (
localodergcp). - Überschreibt die Einstellung
telemetry.target.
- Legt das Ziel für die Telemetrie fest (
GEMINI_TELEMETRY_OTLP_ENDPOINT:- Legt den OTLP-Endpunkt für die Telemetrie fest.
- Überschreibt die Einstellung
telemetry.otlpEndpoint.
GEMINI_TELEMETRY_OTLP_PROTOCOL:- Legt das OTLP-Protokoll fest (
grpcoderhttp). - Überschreibt die Einstellung
telemetry.otlpProtocol.
- Legt das OTLP-Protokoll fest (
GEMINI_TELEMETRY_LOG_PROMPTS:- Auf
trueoder1setzen, um das Logging von Benutzerprompts zu aktivieren. Jeder andere Wert deaktiviert es. - Überschreibt die Einstellung
telemetry.logPrompts.
- Auf
GEMINI_TELEMETRY_OUTFILE:- Legt den Dateipfad fest, in den Telemetriedaten geschrieben werden, wenn das Ziel
localist. - Überschreibt die Einstellung
telemetry.outfile.
- Legt den Dateipfad fest, in den Telemetriedaten geschrieben werden, wenn das Ziel
GEMINI_TELEMETRY_USE_COLLECTOR:- Auf
trueoder1setzen, um einen externen OTLP-Collector zu aktivieren. Jeder andere Wert deaktiviert ihn. - Überschreibt die Einstellung
telemetry.useCollector.
- Auf
GEMINI_SANDBOX:- Alternative zur
sandbox-Einstellung insettings.json. - Akzeptiert
true,false,docker,podmanoder einen benutzerdefinierten Befehl als String.
- Alternative zur
SEATBELT_PROFILE(nur macOS):- Wechselt das Seatbelt- (
sandbox-exec) Profil unter macOS. permissive-open: (Standard) Beschränkt Schreibzugriffe auf den Projektordner (und einige andere, siehepackages/cli/src/utils/sandbox-macos-permissive-open.sb), erlaubt aber andere Operationen.strict: Verwendet ein striktes Profil, das standardmäßig alle Operationen ablehnt.<profile_name>: Verwendet ein benutzerdefiniertes Profil. Um ein solches Profil zu definieren, erstelle eine Datei namenssandbox-macos-<profile_name>.sbim.qwen/-Verzeichnis deines Projekts (z. B.my-project/.qwen/sandbox-macos-custom.sb).
- Wechselt das Seatbelt- (
DEBUGoderDEBUG_MODE(häufig von zugrunde liegenden Bibliotheken oder der CLI selbst verwendet):- Auf
trueoder1setzen, um detailliertes Debug-Logging zu aktivieren – hilfreich bei der Fehlersuche. - Hinweis: Diese Variablen werden standardmäßig aus Projekt-
.env-Dateien ausgeschlossen, um das CLI-Verhalten nicht zu stören. Verwende.qwen/.env-Dateien, wenn du diese speziell für Qwen Code setzen musst.
- Auf
NO_COLOR:- Auf einen beliebigen Wert setzen, um die farbige Ausgabe der CLI zu deaktivieren.
CLI_TITLE:- Auf einen String setzen, um den Titel der CLI anzupassen.
TAVILY_API_KEY:- Dein API key für den Tavily-Websuchdienst.
- Erforderlich, um die Funktionalität des
web_search-Tools zu aktivieren. - Wenn nicht konfiguriert, wird das Web-Suchtool deaktiviert und übersprungen.
- Beispiel:
export TAVILY_API_KEY="tvly-your-api-key-here"
Command-Line Arguments
Argumente, die direkt beim Ausführen der CLI übergeben werden, können andere Konfigurationen für diese spezifische Sitzung überschreiben.
--model <model_name>(-m <model_name>):- Gibt das Qwen-Modell an, das für diese Sitzung verwendet werden soll.
- Beispiel:
npm start -- --model qwen3-coder-plus
--prompt <your_prompt>(-p <your_prompt>):- Wird verwendet, um einen Prompt direkt an den Befehl zu übergeben. Dies ruft Qwen Code im nicht-interaktiven Modus auf.
- Für Skriptbeispiele verwende das Flag
--output-format json, um eine strukturierte Ausgabe zu erhalten.
--prompt-interactive <your_prompt>(-i <your_prompt>):- Startet eine interaktive Sitzung mit dem übergebenen Prompt als initiale Eingabe.
- Der Prompt wird innerhalb der interaktiven Sitzung verarbeitet, nicht davor.
- Kann nicht verwendet werden, wenn Eingaben von stdin gepiped werden.
- Beispiel:
qwen -i "explain this code"
--output-format <format>:- Beschreibung: Legt das Format der CLI-Ausgabe im nicht-interaktiven Modus fest.
- Werte:
text: (Standard) Die normale menschenlesbare Ausgabe.json: Eine maschinenlesbare JSON-Ausgabe.
- Hinweis: Für strukturierte Ausgaben und Skripting verwende das Flag
--output-format json.
--sandbox(-s):- Aktiviert den Sandbox-Modus für diese Sitzung.
--sandbox-image:- Setzt den URI des Sandbox-Images.
--debug(-d):- Aktiviert den Debug-Modus für diese Sitzung und liefert eine ausführlichere Ausgabe.
--all-files(-a):- Falls gesetzt, werden rekursiv alle Dateien im aktuellen Verzeichnis als Kontext für den Prompt einbezogen.
--help(oder-h):- Zeigt Hilfsinformationen zu den Command-Line Arguments an.
--show-memory-usage:- Zeigt den aktuellen Speicherverbrauch an.
--yolo:- Aktiviert den YOLO-Modus, bei dem alle Tool-Aufrufe automatisch genehmigt werden.
--approval-mode <mode>:- Legt den Genehmigungsmodus für Tool-Aufrufe fest. Unterstützte Modi:
plan: Nur Analyse – keine Dateiänderungen oder Befehlsausführungen.default: Genehmigung für Dateiänderungen oder Shell-Befehle erforderlich (Standardverhalten).auto-edit: Automatische Genehmigung von Edit-Tools (edit, write_file), andere Tools benötigen Bestätigung.yolo: Automatische Genehmigung aller Tool-Aufrufe (äquivalent zu--yolo).
- Kann nicht zusammen mit
--yoloverwendet werden. Verwende stattdessen--approval-mode=yolofür den neuen einheitlichen Ansatz. - Beispiel:
qwen --approval-mode auto-edit
- Legt den Genehmigungsmodus für Tool-Aufrufe fest. Unterstützte Modi:
--allowed-tools <tool1,tool2,...>:- Eine durch Kommas getrennte Liste von Tool-Namen, die den Bestätigungsdialog umgehen.
- Beispiel:
qwen --allowed-tools "ShellTool(git status)"
--telemetry:- Aktiviert Telemetrie.
--telemetry-target:- Setzt das Ziel für die Telemetrie. Siehe Telemetrie für weitere Informationen.
--telemetry-otlp-endpoint:- Setzt den OTLP-Endpunkt für die Telemetrie. Siehe Telemetrie für weitere Informationen.
--telemetry-otlp-protocol:- Setzt das OTLP-Protokoll für die Telemetrie (
grpcoderhttp). Standardmäßiggrpc. Siehe Telemetrie für weitere Informationen.
- Setzt das OTLP-Protokoll für die Telemetrie (
--telemetry-log-prompts:- Aktiviert das Logging von Prompts für die Telemetrie. Siehe Telemetrie für weitere Informationen.
--checkpointing:- Aktiviert Checkpointing.
--extensions <extension_name ...>(-e <extension_name ...>):- Gibt eine Liste von Erweiterungen an, die für die Sitzung verwendet werden sollen. Falls nicht angegeben, werden alle verfügbaren Erweiterungen verwendet.
- Verwende den speziellen Begriff
qwen -e none, um alle Erweiterungen zu deaktivieren. - Beispiel:
qwen -e my-extension -e my-other-extension
--list-extensions(-l):- Listet alle verfügbaren Erweiterungen auf und beendet sich danach.
--proxy:- Setzt den Proxy für die CLI.
- Beispiel:
--proxy http://localhost:7890.
--include-directories <dir1,dir2,...>:- Fügt zusätzliche Verzeichnisse zum Workspace hinzu, um Multi-Directory-Unterstützung zu ermöglichen.
- Kann mehrfach oder als kommagetrennte Werte angegeben werden.
- Maximal 5 Verzeichnisse können hinzugefügt werden.
- Beispiel:
--include-directories /path/to/project1,/path/to/project2oder--include-directories /path/to/project1 --include-directories /path/to/project2
--screen-reader:- Aktiviert den Screenreader-Modus, der das TUI für bessere Kompatibilität mit Screenreadern anpasst.
--version:- Zeigt die Version der CLI an.
--openai-logging:- Aktiviert das Logging von OpenAI-API-Aufrufen zur Fehlersuche und Analyse. Dieses Flag überschreibt die Einstellung
enableOpenAILoggingin dersettings.json.
- Aktiviert das Logging von OpenAI-API-Aufrufen zur Fehlersuche und Analyse. Dieses Flag überschreibt die Einstellung
--tavily-api-key <api_key>:- Setzt den Tavily-API-Key für die Web-Suchfunktion dieser Sitzung.
- Beispiel:
qwen --tavily-api-key tvly-your-api-key-here
Kontextdateien (Hierarchischer Anweisungskontext)
Auch wenn es sich nicht um eine strikte Konfiguration des CLI-Verhaltens handelt, sind Kontextdateien (standardmäßig QWEN.md, aber konfigurierbar über die Einstellung context.fileName) entscheidend für die Konfiguration des Anweisungskontexts (auch als „Speicher“ bezeichnet). Diese leistungsstarke Funktion ermöglicht es Ihnen, projektspezifische Anweisungen, Codierungsrichtlinien oder andere relevante Hintergrundinformationen an das KI-Modell zu übergeben, wodurch die Antworten gezielter und präziser auf Ihre Bedürfnisse abgestimmt werden. Die CLI enthält UI-Elemente, wie z. B. einen Indikator in der Fußzeile, der die Anzahl der geladenen Kontextdateien anzeigt, um Sie über den aktiven Kontext zu informieren.
- Zweck: Diese Markdown-Dateien enthalten Anweisungen, Richtlinien oder Kontextinformationen, die dem Qwen-Modell während Ihrer Interaktionen bekannt sein sollen. Das System ist so konzipiert, dass es diesen Anweisungskontext hierarchisch verwaltet.
Beispiel für den Inhalt einer Context-Datei (z. B. QWEN.md)
Hier ist ein konzeptionelles Beispiel dafür, was eine Context-Datei im Root-Verzeichnis eines TypeScript-Projekts enthalten könnte:
# Project: My Awesome TypeScript Library
## General Instructions:
- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 20+.
## Coding Style:
- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).
## Specific Component: `src/api/client.ts`
- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.Zu den Abhängigkeiten:
- Vermeide es, neue externe Abhängigkeiten einzuführen, es sei denn, es ist unbedingt notwendig.
- Falls eine neue Abhängigkeit erforderlich ist, gib bitte den Grund dafür an.
Dieses Beispiel zeigt, wie du allgemeinen Projektkontext, spezifische Coding-Konventionen und sogar Hinweise zu bestimmten Dateien oder Komponenten bereitstellen kannst. Je relevanter und präziser deine Kontextdateien sind, desto besser kann die KI dir helfen. Projekt-spezifische Kontextdateien sind sehr empfohlen, um Konventionen und Kontext festzulegen.
- **Hierarchisches Laden und Priorität:** Die CLI implementiert ein ausgeklügeltes hierarchisches Speichersystem, indem sie Kontextdateien (z. B. `QWEN.md`) aus mehreren Verzeichnissen lädt. Inhalte aus Dateien weiter unten in dieser Liste (spezifischer) überschreiben oder ergänzen in der Regel Inhalte aus Dateien weiter oben (allgemeiner). Die genaue Reihenfolge der Verkettung und der finale Kontext können mit dem Befehl `/memory show` eingesehen werden. Die typische Ladereihenfolge ist:
1. **Globale Kontextdatei:**
- Ort: `~/.qwen/<konfigurierter-kontext-dateiname>` (z. B. `~/.qwen/QWEN.md` in deinem Benutzerverzeichnis).
- Geltungsbereich: Stellt Standardanweisungen für alle deine Projekte bereit.
2. **Projektstamm & übergeordnete Verzeichnisse:**
- Ort: Die CLI sucht nach der konfigurierten Kontextdatei im aktuellen Arbeitsverzeichnis und dann in jedem übergeordneten Verzeichnis bis entweder zum Projektstamm (erkennbar an einem `.git`-Ordner) oder zu deinem Home-Verzeichnis.
- Geltungsbereich: Stellt Kontext bereit, der für das gesamte Projekt oder einen großen Teil davon relevant ist.
3. **Unterverzeichnisse (Kontextuell/Lokal):**
- Ort: Die CLI scannt auch nach der konfigurierten Kontextdatei in Unterverzeichnissen _unterhalb_ des aktuellen Arbeitsverzeichnisses (unter Berücksichtigung gängiger Ignoriermuster wie `node_modules`, `.git`, etc.). Die Breite dieser Suche ist standardmäßig auf 200 Verzeichnisse begrenzt, kann aber über die Einstellung `context.discoveryMaxDirs` in deiner `settings.json`-Datei konfiguriert werden.
- Geltungsbereich: Ermöglicht hochspezifische Anweisungen, die für eine bestimmte Komponente, ein Modul oder einen Teil deines Projekts relevant sind.
- **Verkettung & UI-Anzeige:** Die Inhalte aller gefundenen Kontextdateien werden verkettet (mit Trennzeichen, die ihren Ursprung und Pfad angeben) und als Teil des Systemprompts bereitgestellt. Die CLI-Fußzeile zeigt die Anzahl der geladenen Kontextdateien an, was dir einen schnellen visuellen Hinweis auf den aktiven Anweisungskontext gibt.
- **Inhalte importieren:** Du kannst deine Kontextdateien modularisieren, indem du andere Markdown-Dateien mit der Syntax `@pfad/zu/datei.md` importierst. Weitere Details findest du in der [Dokumentation zum Memory Import Processor](../core/memport.md).
- **Befehle zur Speicherverwaltung:**
- Verwende `/memory refresh`, um einen erneuten Scan und Reload aller Kontextdateien aus allen konfigurierten Orten zu erzwingen. Dies aktualisiert den Anweisungskontext der KI.
- Verwende `/memory show`, um den aktuell geladenen kombinierten Anweisungskontext anzuzeigen, sodass du die Hierarchie und den von der KI verwendeten Inhalt überprüfen kannst.
- Siehe die [Befehlsdokumentation](./commands.md#memory) für vollständige Details zum `/memory`-Befehl und seinen Unterbefehlen (`show` und `refresh`).
Durch das Verstehen und Nutzen dieser Konfigurationsebenen sowie der hierarchischen Struktur von Kontextdateien kannst du den Speicher der KI effektiv verwalten und die Antworten von Qwen Code an deine spezifischen Bedürfnisse und Projekte anpassen.
## Sandboxing
Qwen Code kann potenziell unsichere Operationen (wie Shell-Befehle und Dateiänderungen) innerhalb einer sandboxed Umgebung ausführen, um dein System zu schützen.
Sandboxing ist standardmäßig deaktiviert, aber du kannst es auf verschiedene Arten aktivieren:
- Mit dem Flag `--sandbox` oder `-s`.
- Durch Setzen der Umgebungsvariable `GEMINI_SANDBOX`.
- Sandboxing ist standardmäßig aktiviert, wenn du `--yolo` oder `--approval-mode=yolo` verwendest.
Standardmäßig wird ein vorgefertigtes Docker-Image namens `qwen-code-sandbox` verwendet.
Für projektspezifische Anforderungen kannst du ein eigenes Dockerfile unter `.qwen/sandbox.Dockerfile` im Root-Verzeichnis deines Projekts erstellen. Dieses Dockerfile kann auf dem Basis-Sandbox-Image basieren:
```dockerfile
FROM qwen-code-sandbox
# Füge hier deine eigenen Abhängigkeiten oder Konfigurationen hinzu
# Zum Beispiel:
# RUN apt-get update && apt-get install -y some-packageCOPY ./my-config /app/my-config
Wenn `.qwen/sandbox.Dockerfile` existiert, kannst du die `BUILD_SANDBOX` Umgebungsvariable verwenden, wenn du Qwen Code ausführst, um automatisch das benutzerdefinierte Sandbox-Image zu bauen:
```bash
BUILD_SANDBOX=1 qwen -sNutzungsstatistiken
Um uns bei der Verbesserung von Qwen Code zu unterstützen, sammeln wir anonymisierte Nutzungsstatistiken. Diese Daten helfen uns zu verstehen, wie die CLI verwendet wird, häufige Probleme zu identifizieren und neue Funktionen zu priorisieren.
Was wir sammeln:
- Tool-Aufrufe: Wir protokollieren die Namen der aufgerufenen Tools, ob sie erfolgreich waren oder fehlschlugen sowie deren Ausführungszeit. Wir sammeln weder die übergebenen Argumente noch von den Tools zurückgegebene Daten.
- API-Anfragen: Wir protokollieren das für jede Anfrage verwendete Modell, die Dauer der Anfrage und ihren Erfolg. Die Inhalte der Prompts oder Responses werden nicht gesammelt.
- Sitzungsinformationen: Wir erfassen Informationen zur Konfiguration der CLI, z. B. aktivierte Tools und der Genehmigungsmodus.
Was wir NICHT sammeln:
- Personenbezogene Daten (PII): Es werden keinerlei persönliche Informationen wie Name, E-Mail-Adresse oder API-Schlüssel gesammelt.
- Prompt- und Response-Inhalte: Weder der Inhalt eurer Prompts noch die vom Modell generierten Responses werden protokolliert.
- Dateiinhalte: Der Inhalt von Dateien, die von der CLI gelesen oder geschrieben werden, wird nicht erfasst.
So deaktivierst du die Sammlung:
Du kannst die Sammlung von Nutzungsdaten jederzeit deaktivieren, indem du die Eigenschaft usageStatisticsEnabled unter der Kategorie privacy in deiner settings.json-Datei auf false setzt:
{
"privacy": {
"usageStatisticsEnabled": false
}
}Hinweis: Wenn die Nutzungsstatistik aktiviert ist, werden Ereignisse an einen Alibaba Cloud RUM-Sammlungsendpunkt gesendet.