Qwen Code Konfiguration
Qwen Code bietet mehrere Möglichkeiten, sein Verhalten zu konfigurieren, darunter Umgebungsvariablen, Kommandozeilenargumente und Einstellungsdateien. Dieses Dokument beschreibt die verschiedenen Konfigurationsmethoden und verfügbaren Einstellungen.
Konfigurationsebenen
Die Konfiguration wird in der folgenden Reihenfolge der Priorität angewendet (niedrigere Nummern werden von höheren überschrieben):
- Standardwerte: Fest codierte Standardwerte innerhalb der Anwendung.
- System-Standarddatei: Systemweite Standardeinstellungen, die durch andere 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 sitzungsspezifische Variablen, möglicherweise geladen aus
.envDateien. - 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 auch andere 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:
-
contextFileName(String oder Array von Strings):- Beschreibung: Gibt den Dateinamen für Kontextdateien an (z. B.
QWEN.md,AGENTS.md). Kann ein einzelner Dateiname oder eine Liste akzeptierter Dateinamen sein. - Standardwert:
QWEN.md - Beispiel:
"contextFileName": "AGENTS.md"
- Beschreibung: Gibt den Dateinamen für Kontextdateien an (z. B.
-
bugCommand(Objekt):- Beschreibung: Überschreibt die Standard-URL für den
/bug-Befehl. - Standardwert:
"urlTemplate": "https://github.com/QwenLM/qwen-code/issues/new?template=bug_report.yml&title={title}&info={info}" - Eigenschaften:
urlTemplate(String): Eine URL, die Platzhalter{title}und{info}enthalten kann.
- Beispiel:
"bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }
- Beschreibung: Überschreibt die Standard-URL für den
-
fileFiltering(Objekt):- Beschreibung: Steuert das git-basierte Filterverhalten für @-Befehle und Datei-Suchwerkzeuge.
- Standardwert:
"respectGitIgnore": true, "enableRecursiveFileSearch": true - Eigenschaften:
respectGitIgnore(Boolean): Legt fest, ob.gitignore-Muster beim Auffinden von Dateien berücksichtigt werden. Beitruewerden git-ignorierte Dateien (wienode_modules/,dist/,.env) automatisch von @-Befehlen und Dateilistenoperationen ausgeschlossen.enableRecursiveFileSearch(Boolean): Legt fest, ob rekursiv nach Dateinamen im aktuellen Verzeichnisbaum gesucht wird, wenn @-Präfixe im Prompt vervollständigt werden.disableFuzzySearch(Boolean): Wenntrue, wird die Fuzzy-Suche beim Suchen nach Dateien deaktiviert, was die Performance bei Projekten mit vielen Dateien verbessern kann.
- Beispiel:
"fileFiltering": { "respectGitIgnore": true, "enableRecursiveFileSearch": false, "disableFuzzySearch": true }
Problemlösung bei der Dateisuche-Performance
Wenn du Performance-Probleme bei der Dateisuche (z. B. mit @-Vervollständigungen) hast – besonders in Projekten mit sehr vielen Dateien – kannst du folgende Maßnahmen in der empfohlenen Reihenfolge ausprobieren:
-
Verwende
.qwenignore: Erstelle eine.qwenignore-Datei im Projektstammverzeichnis, um Verzeichnisse auszuschließen, die viele Dateien enthalten, auf die du nicht zugreifen musst (z. B. Build-Artefakte, Logs,node_modules). Die Reduzierung der Anzahl der durchsuchten Dateien ist die effektivste Methode zur Verbesserung der Performance. -
Deaktiviere Fuzzy Search: Wenn das Ignorieren von Dateien nicht ausreicht, kannst du die Fuzzy-Suche deaktivieren, indem du
disableFuzzySearchin deinersettings.jsonauftruesetzt. Dadurch wird ein einfacherer, nicht-fuzzy-basierter Abgleichalgorithmus verwendet, der schneller sein kann. -
Deaktiviere rekursive Dateisuche: Als letztes Mittel kannst du die rekursive Dateisuche komplett deaktivieren, indem du
enableRecursiveFileSearchauffalsesetzt. Dies ist die schnellste Option, da dadurch der rekursive Durchlauf des Projekts vermieden wird. Allerdings musst du dann den vollständigen Pfad zu Dateien eingeben, wenn du@-Vervollständigungen verwendest.
Konfigurationsoptionen
-
coreTools(Array von Strings):- Beschreibung: Ermöglicht es dir, eine Liste von Core-Tool-Namen anzugeben, die für das Modell verfügbar gemacht werden sollen. Damit kannst du die Menge der integrierten Tools einschränken. Eine Liste der verfügbaren Core-Tools findest du unter Built-in Tools. Du kannst auch Befehlsspezifische Einschränkungen für Tools festlegen, die dies unterstützen, wie z. B. das
ShellTool. Beispiel:"coreTools": ["ShellTool(ls -l)"]erlaubt nur die Ausführung des Befehlsls -l. - Standardwert: Alle Tools sind für das Modell verfügbar.
- Beispiel:
"coreTools": ["ReadFileTool", "GlobTool", "ShellTool(ls)"].
- Beschreibung: Ermöglicht es dir, eine Liste von Core-Tool-Namen anzugeben, die für das Modell verfügbar gemacht werden sollen. Damit kannst du die Menge der integrierten Tools einschränken. Eine Liste der verfügbaren Core-Tools findest du unter Built-in Tools. Du kannst auch Befehlsspezifische Einschränkungen für Tools festlegen, die dies unterstützen, wie z. B. das
-
allowedTools(Array von Strings):- Standardwert:
undefined - Beschreibung: Eine Liste von Tool-Namen, für die der Bestätigungsdialog übersprungen wird. Das ist nützlich für Tools, denen du vertraust und die du häufig verwendest. Die Matching-Logik entspricht der von
coreTools. - Beispiel:
"allowedTools": ["ShellTool(git status)"].
- Standardwert:
-
excludeTools(Array von Strings):- Beschreibung: Ermöglicht es dir, eine Liste von Core-Tool-Namen anzugeben, die vom Modell ausgeschlossen werden sollen. Ein Tool, das sowohl in
excludeToolsals auch incoreToolsaufgeführt ist, wird ausgeschlossen. Du kannst auch Befehlsspezifische Einschränkungen für Tools festlegen, die dies unterstützen, wie z. B. dasShellTool. Beispiel:"excludeTools": ["ShellTool(rm -rf)"]blockiert den Befehlrm -rf. - Standardwert: Keine Tools ausgeschlossen.
- Beispiel:
"excludeTools": ["run_shell_command", "findFiles"]. - Sicherheitshinweis: Befehlsspezifische Einschränkungen in
excludeToolsfürrun_shell_commandbasieren auf einfacher String-Matching und können leicht umgangen werden. Diese Funktion ist kein Sicherheitsmechanismus und sollte nicht darauf verlassen werden, um nicht vertrauenswürdigen Code sicher auszuführen. Es wird empfohlen,coreToolszu verwenden, um explizit die Befehle auszuwählen, die ausgeführt werden dürfen.
- Beschreibung: Ermöglicht es dir, eine Liste von Core-Tool-Namen anzugeben, die vom Modell ausgeschlossen werden sollen. Ein Tool, das sowohl in
-
allowMCPServers(Array von Strings):- Beschreibung: Ermöglicht es dir, eine Liste von MCP-Servernamen anzugeben, die für das Modell verfügbar gemacht werden sollen. Damit kannst du die Menge der MCP-Server einschränken, mit denen sich verbunden wird. Beachte, dass diese Einstellung ignoriert wird, wenn
--allowed-mcp-server-namesgesetzt ist. - Standardwert: Alle MCP-Server sind für das Modell verfügbar.
- Beispiel:
"allowMCPServers": ["myPythonServer"]. - Sicherheitshinweis: Hierbei wird einfaches String-Matching auf MCP-Servernamen verwendet, die manipuliert werden können. Wenn du als Systemadministrator verhindern möchtest, dass Benutzer diese Einstellung umgehen, solltest du
mcpServersauf Systemebene konfigurieren, sodass Benutzer keine eigenen MCP-Server konfigurieren können. Diese Funktion sollte nicht als absoluter Sicherheitsmechanismus betrachtet werden.
- Beschreibung: Ermöglicht es dir, eine Liste von MCP-Servernamen anzugeben, die für das Modell verfügbar gemacht werden sollen. Damit kannst du die Menge der MCP-Server einschränken, mit denen sich verbunden wird. Beachte, dass diese Einstellung ignoriert wird, wenn
-
excludeMCPServers(Array von Strings):- Beschreibung: Ermöglicht es dir, eine Liste von MCP-Servernamen anzugeben, die vom Modell ausgeschlossen werden sollen. Ein Server, der sowohl in
excludeMCPServersals auch inallowMCPServersaufgeführt ist, wird ausgeschlossen. Beachte, dass diese Einstellung ignoriert wird, wenn--allowed-mcp-server-namesgesetzt ist. - Standardwert: Keine MCP-Server ausgeschlossen.
- Beispiel:
"excludeMCPServers": ["myNodeServer"]. - Sicherheitshinweis: Hierbei wird einfaches String-Matching auf MCP-Servernamen verwendet, die manipuliert werden können. Wenn du als Systemadministrator verhindern möchtest, dass Benutzer diese Einstellung umgehen, solltest du
mcpServersauf Systemebene konfigurieren, sodass Benutzer keine eigenen MCP-Server konfigurieren können. Diese Funktion sollte nicht als absoluter Sicherheitsmechanismus betrachtet werden.
- Beschreibung: Ermöglicht es dir, eine Liste von MCP-Servernamen anzugeben, die vom Modell ausgeschlossen werden sollen. Ein Server, der sowohl in
-
autoAccept(Boolean):- Beschreibung: Legt fest, ob die CLI automatisch Tool-Aufrufe akzeptiert und ausführt, die als sicher gelten (z. B. schreibgeschützte Operationen), ohne explizite Benutzerbestätigung. Bei
truewird der Bestätigungsdialog für sichere Tools übersprungen. - Standardwert:
false - Beispiel:
"autoAccept": true
- Beschreibung: Legt fest, ob die CLI automatisch Tool-Aufrufe akzeptiert und ausführt, die als sicher gelten (z. B. schreibgeschützte Operationen), ohne explizite Benutzerbestätigung. Bei
-
theme(String):- Beschreibung: Setzt das visuelle Theme für Qwen Code.
- Standardwert:
"Default" - Beispiel:
"theme": "GitHub"
-
vimMode(Boolean):- Beschreibung: Aktiviert oder deaktiviert den Vim-Modus für die Eingabebearbeitung. Im aktivierten Zustand unterstützt der Eingabebereich Vim-artige Navigations- und Bearbeitungsbefehle mit NORMAL- und INSERT-Modus. Der Status des Vim-Modus wird in der Fußzeile angezeigt und bleibt zwischen Sitzungen erhalten.
- Standardwert:
false - Beispiel:
"vimMode": true
-
sandbox(Boolean oder String):- Beschreibung: Steuert, ob und wie Sandboxing für die Toolausführung verwendet wird. Bei
trueverwendet Qwen Code ein vorgebautesqwen-code-sandboxDocker-Image. Weitere Informationen findest du unter Sandboxing. - Standardwert:
false - Beispiel:
"sandbox": "docker"
- Beschreibung: Steuert, ob und wie Sandboxing für die Toolausführung verwendet wird. Bei
-
toolDiscoveryCommand(String):- Beschreibung: Gemäß Gemini CLI. Definiert einen benutzerdefinierten Shell-Befehl zum Entdecken von Tools aus deinem Projekt. Der Shell-Befehl muss auf
stdoutein JSON-Array von Function Declarations zurückgeben. Tool-Wrappers sind optional. - Standardwert: Leer
- Beispiel:
"toolDiscoveryCommand": "bin/get_tools"
- Beschreibung: Gemäß Gemini CLI. Definiert einen benutzerdefinierten Shell-Befehl zum Entdecken von Tools aus deinem Projekt. Der Shell-Befehl muss auf
-
toolCallCommand(String):- Beschreibung: Gemäß Gemini CLI. Definiert einen benutzerdefinierten Shell-Befehl zum Aufrufen eines bestimmten Tools, das über
toolDiscoveryCommandentdeckt wurde. Der Shell-Befehl muss folgende Kriterien erfüllen:- Er muss den Funktionsnamen (genau wie in der Function Declaration ) 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: Leer
- Beispiel:
"toolCallCommand": "bin/call_tool"
- Beschreibung: Gemäß Gemini CLI. Definiert einen benutzerdefinierten Shell-Befehl zum Aufrufen eines bestimmten Tools, das über
-
mcpServers(Objekt):- Beschreibung: Konfiguriert Verbindungen zu einem oder mehreren Model-Context Protocol (MCP)-Servern zum Entdecken und Nutzen von benutzerdefinierten Tools. Qwen Code versucht, sich mit jedem konfigurierten MCP-Server zu verbinden, um verfügbare Tools zu entdecken. Wenn mehrere MCP-Server ein Tool mit demselben Namen bereitstellen, werden die Tool-Namen mit dem Server-Alias aus der Konfiguration vorangestellt (z. B.
serverAlias__actualToolName), um Konflikte zu vermeiden. Beachte, dass das System möglicherweise bestimmte Schema-Eigenschaften aus MCP-Tooldefinitionen entfernt, um die Kompatibilität zu gewährleisten. Mindestens eines der Feldercommand,urloderhttpUrlmuss angegeben werden. Bei Angabe mehrerer Felder gilt die Priorität in dieser Reihenfolge:httpUrl, dannurl, danncommand. - Standardwert: Leer
- Eigenschaften:
<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) für die Kommunikation verwendet.httpUrl(String, optional): Die URL eines MCP-Servers, der streambare HTTP-Kommunikation verwendet.headers(Objekt, optional): Eine Map von HTTP-Headers, die mit Anfragen anurloderhttpUrlgesendet werden.timeout(Zahl, optional): Zeitlimit in Millisekunden für Anfragen an diesen MCP-Server.trust(Boolean, optional): Dem Server vertrauen und alle Tool-Bestätigungen umgehen.description(String, optional): Eine kurze Beschreibung des Servers, die für Anzeigezwecke verwendet werden kann.includeTools(Array von Strings, optional): Liste von Tool-Namen, die von diesem MCP-Server eingeschlossen werden sollen. Wenn angegeben, sind nur die hier aufgelisteten Tools von diesem Server verfügbar (Whitelist-Verhalten). Wenn nicht angegeben, sind standardmäßig alle Tools des Servers aktiviert.excludeTools(Array von Strings, optional): Liste von Tool-Namen, die von diesem MCP-Server ausgeschlossen werden sollen. Tools in dieser Liste 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.
- Beispiel:
"mcpServers": { "myPythonServer": { "command": "python", "args": ["mcp_server.py", "--port", "8080"], "cwd": "./mcp_tools/python", "timeout": 5000, "includeTools": ["safe_tool", "file_reader"], }, "myNodeServer": { "command": "node", "args": ["mcp_server.js"], "cwd": "./mcp_tools/node", "excludeTools": ["dangerous_tool", "file_deleter"] }, "myDockerServer": { "command": "docker", "args": ["run", "-i", "--rm", "-e", "API_KEY", "ghcr.io/foo/bar"], "env": { "API_KEY": "$MY_API_TOKEN" } }, "mySseServer": { "url": "http://localhost:8081/events", "headers": { "Authorization": "Bearer $MY_SSE_TOKEN" }, "description": "Ein Beispiel-SSE-basierter MCP-Server." }, "myStreamableHttpServer": { "httpUrl": "http://localhost:8082/stream", "headers": { "X-API-Key": "$MY_HTTP_API_KEY" }, "description": "Ein Beispiel-HTTP-basierter MCP-Server mit Streaming." } }
- Beschreibung: Konfiguriert Verbindungen zu einem oder mehreren Model-Context Protocol (MCP)-Servern zum Entdecken und Nutzen von benutzerdefinierten Tools. Qwen Code versucht, sich mit jedem konfigurierten MCP-Server zu verbinden, um verfügbare Tools zu entdecken. Wenn mehrere MCP-Server ein Tool mit demselben Namen bereitstellen, werden die Tool-Namen mit dem Server-Alias aus der Konfiguration vorangestellt (z. B.
-
checkpointing(Objekt):- Beschreibung: Konfiguriert die Checkpoint-Funktion, mit der du Gesprächs- und Dateistatus speichern und wiederherstellen kannst. Weitere Details findest du in der Checkpoint-Dokumentation.
- Standardwert:
{"enabled": false} - Eigenschaften:
enabled(Boolean): Wenntrue, ist der Befehl/restoreverfügbar.
-
preferredEditor(String):- Beschreibung: Gibt den bevorzugten Editor zum Anzeigen von Diffs an.
- Standardwert:
vscode - Beispiel:
"preferredEditor": "vscode"
-
telemetry(Objekt)- Beschreibung: Konfiguriert Logging und Metrikensammlung für Qwen Code. Weitere Informationen findest du unter Telemetry.
- Standardwert:
{"enabled": false, "target": "local", "otlpEndpoint": "http://localhost:4317", "logPrompts": true} - Eigenschaften:
enabled(Boolean): Ob Telemetrie aktiviert ist oder nicht.target(String): Ziel für gesammelte Telemetriedaten. Unterstützte Werte sindlocalundgcp.otlpEndpoint(String): Endpunkt für den OTLP-Exporter.logPrompts(Boolean): Ob der Inhalt von Benutzerprompts in die Logs aufgenommen werden soll.
- Beispiel:
"telemetry": { "enabled": true, "target": "local", "otlpEndpoint": "http://localhost:16686", "logPrompts": false }
-
usageStatisticsEnabled(Boolean):- Beschreibung: Aktiviert oder deaktiviert die Sammlung von Nutzungsstatistiken. Weitere Informationen findest du unter Nutzungsstatistiken.
- Standardwert:
true - Beispiel:
"usageStatisticsEnabled": false
-
hideTips(Boolean):- Beschreibung: Aktiviert oder deaktiviert hilfreiche Tipps in der CLI-Oberfläche.
- Standardwert:
false - Beispiel:
"hideTips": true
-
hideBanner(Boolean):- Beschreibung: Aktiviert oder deaktiviert das Startbanner (ASCII-Art-Logo) in der CLI-Oberfläche.
- Standardwert:
false - Beispiel:
"hideBanner": true
-
maxSessionTurns(Zahl):- Beschreibung: Legt die maximale Anzahl an Turns pro Sitzung fest. Wenn die Sitzung dieses Limit überschreitet, stoppt die CLI die Verarbeitung und begin
Beispiel settings.json:
{
"theme": "GitHub",
"sandbox": "docker",
"toolDiscoveryCommand": "bin/get_tools",
"toolCallCommand": "bin/call_tool",
"tavilyApiKey": "$TAVILY_API_KEY",
"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
},
"usageStatisticsEnabled": true,
"hideTips": false,
"hideBanner": false,
"skipNextSpeakerCheck": false,
"skipLoopDetection": false,
"maxSessionTurns": 10,
"summarizeToolOutput": {
"run_shell_command": {
"tokenBudget": 100
}
},
"excludedProjectEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadMemoryFromIncludeDirectories": true
}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 zur Konfiguration von Anwendungen – besonders für sensible Informationen wie API Keys oder Einstellungen, die sich zwischen verschiedenen Umgebungen unterscheiden können. Für die Authentifizierung siehe die Authentifizierungs-Dokumentation, die alle verfügbaren Authentifizierungsmethoden abdeckt.
Die CLI lädt automatisch Umgebungsvariablen aus einer .env Datei. Die Ladereihenfolge ist:
.envDatei im aktuellen Arbeitsverzeichnis.- Falls nicht gefunden, sucht sie rekursiv in den übergeordneten Verzeichnissen nach einer
.envDatei, bis entweder eine gefunden wird oder das Projekt-Root-Verzeichnis (erkennbar an einem.gitOrdner) oder das Home-Verzeichnis erreicht ist. - Wenn immer noch keine gefunden wurde, wird auf
~/.env(im Benutzer-Home-Verzeichnis) geprüft.
Ausschluss von Umgebungsvariablen: Bestimmte Umgebungsvariablen (wie DEBUG und DEBUG_MODE) werden standardmäßig aus Projekt .env Dateien ausgeschlossen, um mögliche Beeinträchtigungen des CLI-Verhaltens zu vermeiden. Variablen aus .qwen/.env Dateien werden niemals ausgeschlossen. Dieses Verhalten kann über die Einstellung excludedProjectEnvVars in der settings.json angepasst werden.
OPENAI_API_KEY:- Eine von mehreren verfügbaren Authentifizierungsmethoden.
- In deinem Shell-Profil (z. B.
~/.bashrc,~/.zshrc) oder einer.envDatei setzen.
OPENAI_BASE_URL:- Eine von mehreren verfügbaren Authentifizierungsmethoden.
- In deinem Shell-Profil (z. B.
~/.bashrc,~/.zshrc) oder einer.envDatei setzen.
OPENAI_MODEL:- Legt das Standard-OPENAI Modell fest.
- Überschreibt den fest codierten Default-Wert.
- Beispiel:
export OPENAI_MODEL="qwen3-coder-plus"
GEMINI_SANDBOX:- Alternative zur
sandboxEinstellung in dersettings.json. - Akzeptiert Werte wie
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: Nutzt ein striktes Profil, das standardmäßig alle Operationen ablehnt.<profil_name>: Nutzt ein eigenes Profil. Um ein solches zu definieren, erstelle eine Datei mit dem Namensandbox-macos-<profil_name>.sbim.qwen/Verzeichnis deines Projekts (z. B.my-project/.qwen/sandbox-macos-custom.sb).
- Wechselt das Seatbelt (
DEBUGoderDEBUG_MODE(häufig verwendet von zugrunde liegenden Libraries oder der CLI selbst):- Auf
trueoder1setzen, um detaillierte Debug-Ausgaben zu aktivieren – hilfreich bei der Fehlersuche. - Hinweis: Diese Variablen werden standardmäßig aus Projekt
.envDateien ausgeschlossen, um das CLI-Verhalten nicht zu beeinträchtigen. Verwende stattdessen.qwen/.envDateien, wenn du diese explizit für Qwen Code setzen musst.
- Auf
NO_COLOR:- Mit beliebigem Wert gesetzt, um jegliche Farbausgabe im CLI zu deaktivieren.
CLI_TITLE:- Ein String, um den Titel des CLI anzupassen.
CODE_ASSIST_ENDPOINT:- Gibt den Endpunkt für den Code Assist Server an.
- Nützlich für Entwicklung und Tests.
TAVILY_API_KEY:- Dein API Key für den Tavily Web-Suchdienst.
- Erforderlich, um die Funktionalität des
web_searchTools zu aktivieren. - Ohne Konfiguration wird dieses Tool 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.
--prompt-interactive <your_prompt>(-i <your_prompt>):- Startet eine interaktive Sitzung mit dem angegebenen Prompt als initiale Eingabe.
- Der Prompt wird innerhalb der interaktiven Sitzung verarbeitet, nicht davor.
- Kann nicht verwendet werden, wenn Eingaben von stdin weitergeleitet werden.
- Beispiel:
qwen -i "explain this code"
--sandbox(-s):- Aktiviert den Sandbox-Modus für diese Sitzung.
--sandbox-image:- Legt die URI des Sandbox-Images fest.
--debug(-d):- Aktiviert den Debug-Modus für diese Sitzung und gibt ausführlichere Informationen aus.
--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 automatisch alle Tool-Aufrufe genehmigt werden.
--approval-mode <mode>:- Legt den Genehmigungsmodus für Tool-Aufrufe fest. Unterstützte Modi:
plan: Nur analysieren – keine Dateien ändern oder Befehle ausführen.default: Genehmigung für Dateiänderungen oder Shell-Befehle erforderlich (Standardverhalten).auto-edit: Automatische Genehmigung von Edit-Tools (edit, write_file), während andere Tools nachgefragt werden.yolo: Automatische Genehmigung aller Tool-Aufrufe (äquivalent zu--yolo).
- Kann nicht zusammen mit
--yoloverwendet werden. Verwende stattdessen--approval-mode=yolo, um den neuen vereinheitlichten Ansatz zu nutzen. - 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:- Legt das Ziel für die Telemetrie fest. Siehe Telemetrie für weitere Informationen.
--telemetry-otlp-endpoint:- Legt den OTLP-Endpunkt für die Telemetrie fest. Siehe Telemetrie für weitere Informationen.
--telemetry-otlp-protocol:- Legt das OTLP-Protokoll für die Telemetrie fest (
grpcoderhttp). Standardmäßiggrpc. Siehe Telemetrie für weitere Informationen.
- Legt das OTLP-Protokoll für die Telemetrie fest (
--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. Wenn nichts angegeben ist, 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 anschließend.
--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-Support 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 Screen Reader-Modus zur Barrierefreiheit.
--version:- Zeigt die Version der CLI an.
--openai-logging:- Aktiviert das Logging von OpenAI-API-Aufrufen zum Debuggen und Analysieren. Dieses Flag überschreibt die Einstellung
enableOpenAILoggingin dersettings.json.
- Aktiviert das Logging von OpenAI-API-Aufrufen zum Debuggen und Analysieren. Dieses Flag überschreibt die Einstellung
--tavily-api-key <api_key>:- Setzt den Tavily-API-Key für die Web-Suche-Funktionalität dieser Sitzung.
- Beispiel:
qwen --tavily-api-key tvly-your-api-key-here
Context Files (Hierarchischer Instruktionskontext)
Auch wenn es sich nicht um eine strikte Konfiguration des CLI-Verhaltens handelt, sind Context Files (standardmäßig QWEN.md, aber konfigurierbar über die Einstellung contextFileName) entscheidend für die Konfiguration des Instruktionskontexts (auch als “Memory” bezeichnet). Diese leistungsstarke Funktion ermöglicht es dir, projektspezifische Anweisungen, Coding-Standards oder andere relevante Hintergrundinformationen an das KI-Modell zu übergeben, wodurch die Antworten gezielter und präziser auf deine Anforderungen abgestimmt werden. Die CLI enthält UI-Elemente, wie z. B. einen Indikator in der Fußzeile, der die Anzahl der geladenen Context Files anzeigt, um dich über den aktiven Kontext zu informieren.
- Zweck: Diese Markdown-Dateien enthalten Anweisungen, Richtlinien oder Kontextinformationen, die du möchtest, dass das Qwen-Modell während eurer Interaktionen berücksichtigt. Das System ist so konzipiert, dass es diesen Instruktionskontext 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 dich unterstützen. 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/<contextFileName>` (z. B. `~/.qwen/QWEN.md` in deinem Benutzerverzeichnis).
- Gültigkeitsbereich: 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 deinem Home-Verzeichnis.
- Gültigkeitsbereich: 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 Beachtung gängiger Ignoriermuster wie `node_modules`, `.git`, etc.). Die Breite dieser Suche ist standardmäßig auf 200 Verzeichnisse begrenzt, kann aber über das Feld `memoryDiscoveryMaxDirs` in deiner `settings.json`-Datei konfiguriert werden.
- Gültigkeitsbereich: 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. In der CLI-Fußzeile wird die Anzahl der geladenen Kontextdateien angezeigt, 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 `@path/to/file.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. Dadurch wird der Anweisungskontext der KI aktualisiert.
- Verwende `/memory show`, um den aktuell geladenen kombinierten Anweisungskontext anzuzeigen, sodass du die Hierarchie und den von der KI verwendeten Inhalt überprüfen kannst.
- Die vollständigen Details zum `/memory`-Befehl und seinen Unterbefehlen (`show` und `refresh`) findest du in der [Befehlsdokumentation](./commands.md#memory).
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 Anforderungen 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 helfen, 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, und wie lange ihre Ausführung dauerte. Wir sammeln weder die an die Tools übergebenen Argumente noch Daten, die von ihnen zurückgegeben wurden.
- API-Anfragen: Wir protokollieren das für jede Anfrage verwendete Modell, die Dauer der Anfrage und ob sie erfolgreich war. Wir sammeln weder den Inhalt der Prompts noch der Antworten.
- Sitzungsinformationen: Wir sammeln Informationen zur Konfiguration der CLI, wie z. B. die aktivierten Tools und der Genehmigungsmodus.
Was wir NICHT sammeln:
- Personenbezogene Daten (PII): Wir sammeln keine persönlichen Informationen wie Ihren Namen, Ihre E-Mail-Adresse oder API-Keys.
- Prompt- und Antwortinhalte: Wir protokollieren weder den Inhalt Ihrer Prompts noch die Antworten des Modells.
- Dateiinhalte: Wir protokollieren nicht den Inhalt von Dateien, die von der CLI gelesen oder geschrieben werden.
So deaktivieren Sie die Sammlung:
Sie können die Sammlung von Nutzungsstatistiken jederzeit deaktivieren, indem Sie die Eigenschaft usageStatisticsEnabled in Ihrer settings.json-Datei auf false setzen:
{
"usageStatisticsEnabled": false
}Hinweis: Wenn die Nutzungsstatistiken aktiviert sind, werden Ereignisse an einen Alibaba Cloud RUM-Sammlungsendpunkt gesendet.
enableWelcomeBack(boolean):- Beschreibung: Zeigt einen „Willkommen zurück“-Dialog an, wenn Sie zu einem Projekt mit Konversationsverlauf zurückkehren.
- Standardwert:
true - Kategorie: UI
- Neustart erforderlich: Nein
- Beispiel:
"enableWelcomeBack": false - Details: Wenn aktiviert, erkennt Qwen Code automatisch, ob Sie zu einem Projekt mit einer zuvor generierten Projektzusammenfassung (
.qwen/PROJECT_SUMMARY.md) zurückkehren, und zeigt einen Dialog an, der es Ihnen ermöglicht, Ihre vorherige Konversation fortzusetzen oder neu zu beginnen. Diese Funktion ist mit dem Befehl/chat summaryund dem Beendigungsbestätigungsdialog verknüpft. Weitere Informationen finden Sie in der Welcome Back-Dokumentation.