Qwen-Code-Konfiguration
Authentifizierung / API-Schlüssel: Die Authentifizierung (Qwen-OAuth, Alibaba-Cloud-Coding-Plan oder API-Schlüssel) sowie auth-bezogene Umgebungsvariablen (wie OPENAI_API_KEY) sind unter Authentifizierung dokumentiert.
Hinweis zum neuen Konfigurationsformat: Das Format der Datei settings.json wurde auf eine neue, übersichtlichere Struktur aktualisiert. Das alte Format wird automatisch migriert.
Qwen Code bietet mehrere Möglichkeiten, sein Verhalten über Umgebungsvariablen, Befehlszeilenargumente und Einstellungsdateien zu konfigurieren. Dieses Dokument beschreibt die verschiedenen Konfigurationsmethoden und die verfügbaren Einstellungen.
Konfigurationsebenen
Die Konfiguration wird in der folgenden Reihenfolge nach Priorität angewendet (niedrigere Zahlen werden durch höhere Zahlen überschrieben):
| Ebene | Konfigurationsquelle | Beschreibung |
|---|---|---|
| 1 | Standardwerte | Fest im Code hinterlegte Standardwerte innerhalb der Anwendung |
| 2 | Systemstandarddatei | Systemweite Standardkonfiguration, die durch andere Konfigurationsdateien überschrieben werden kann |
| 3 | Benutzereinstellungsdatei | Globale Einstellungen für den aktuellen Benutzer |
| 4 | Projekteinstellungsdatei | Projektspezifische Einstellungen |
| 5 | Systemeinstellungsdatei | Systemweite Einstellungen, die alle anderen Konfigurationsdateien überschreiben |
| 6 | Umgebungsvariablen | Systemweite oder sessionspezifische Variablen, möglicherweise aus .env-Dateien geladen |
| 7 | Befehlszeilenargumente | Werte, die beim Starten der CLI übergeben werden |
Einstellungsdateien
Qwen Code verwendet JSON-Einstellungsdateien für eine dauerhafte Konfiguration. Es gibt vier Speicherorte für diese Dateien:
| Dateityp | Speicherort | Gültigkeitsbereich |
|---|---|---|
| Systemstandarddatei | Linux: /etc/qwen-code/system-defaults.jsonWindows: C:\ProgramData\qwen-code\system-defaults.jsonmacOS: /Library/Application Support/QwenCode/system-defaults.json Der Pfad kann mithilfe der Umgebungsvariablen QWEN_CODE_SYSTEM_DEFAULTS_PATH überschrieben werden. | Stellt eine Basisschicht systemweiter Standardeinstellungen bereit. Diese Einstellungen haben die niedrigste Priorität und sollen durch Benutzer-, Projekt- oder Systemüberschreibungseinstellungen überschrieben werden. |
| Benutzereinstellungsdatei | ~/.qwen/settings.json (wobei ~ Ihr Home-Verzeichnis ist). | Gilt für alle Qwen-Code-Sitzungen des aktuellen Benutzers. |
| Projekteinstellungsdatei | .qwen/settings.json im Stammverzeichnis Ihres Projekts. | Gilt nur, wenn Qwen Code aus diesem spezifischen Projekt heraus ausgeführt wird. Projekteinstellungen überschreiben Benutzereinstellungen. |
| Systemeinstellungsdatei | Linux: /etc/qwen-code/settings.json Windows: C:\ProgramData\qwen-code\settings.json macOS: /Library/Application Support/QwenCode/settings.jsonDer Pfad kann mithilfe der Umgebungsvariablen QWEN_CODE_SYSTEM_SETTINGS_PATH überschrieben werden. | 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 die Qwen-Code-Konfigurationen ihrer Benutzer zu steuern. |
Hinweis zu Umgebungsvariablen in Einstellungsdateien: Zeichenfolgenwerte innerhalb Ihrer settings.json-Dateien können Umgebungsvariablen mit der Syntax $VAR_NAME oder ${VAR_NAME} referenzieren. Diese Variablen werden automatisch aufgelöst, sobald die Einstellungen geladen werden. Wenn Sie beispielsweise die Umgebungsvariable MY_API_TOKEN definiert haben, können Sie sie in settings.json wie folgt verwenden: "apiKey": "$MY_API_TOKEN".
Das Verzeichnis .qwen in Ihrem Projekt
Neben einer Projekteinstellungsdatei kann das Verzeichnis .qwen Ihres Projekts weitere projektspezifische Dateien enthalten, die für den Betrieb von Qwen Code relevant sind, beispielsweise:
- Benutzerdefinierte Sandbox-Profile (z. B.
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Agenten-Skills im Verzeichnis
.qwen/skills/(jeder Skill ist ein Verzeichnis mit einer DateiSKILL.md).
Konfigurationsmigration
Qwen Code migriert automatisch veraltete Konfigurationseinstellungen in das neue Format. Vor der Migration werden alte Einstellungsdateien gesichert. Die folgenden Einstellungen wurden von einer negativen (disable*) in eine positive (enable*) Benennung umbenannt:
| Alte Einstellung | Neue Einstellung | Hinweise |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | In einer einzigen Einstellung zusammengefasst |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Invertierung boolescher Werte: Bei der Migration werden boolesche Werte invertiert (z. B. wird aus disableAutoUpdate: true enableAutoUpdate: false).
Konsolidierungsrichtlinie für disableAutoUpdate und disableUpdateNag
Wenn beide veralteten Einstellungen mit unterschiedlichen Werten vorhanden sind, erfolgt die Migration nach folgender Richtlinie: Falls entweder disableAutoUpdate oder disableUpdateNag den Wert true hat, wird enableAutoUpdate auf false gesetzt:
disableAutoUpdate | disableUpdateNag | Migrierte enableAutoUpdate |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Verfügbare Einstellungen in settings.json
Einstellungen sind in Kategorien gruppiert. Alle Einstellungen müssen innerhalb des entsprechenden obersten Kategorieobjekts in Ihrer Datei settings.json platziert werden.
Allgemein
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
general.preferredEditor | Zeichenkette | Der bevorzugte Editor zum Öffnen von Dateien. | undefined |
general.vimMode | Boolean | Aktiviert Vim-Tastenkombinationen. | false |
general.enableAutoUpdate | Boolean | Aktiviert automatische Prüfungen auf Updates und deren Installation beim Start. | true |
general.gitCoAuthor | Boolean | Fügt Git-Commit-Nachrichten automatisch einen „Co-authored-by“-Trailer hinzu, wenn Commits über Qwen Code erstellt werden. | true |
general.checkpointing.enabled | Boolean | Aktiviert die Sitzungs-Wiederherstellung über Checkpoints. | false |
general.defaultFileEncoding | Zeichenkette | Standardcodierung für neue Dateien. Verwenden Sie "utf-8" (Standard) für UTF-8 ohne BOM oder "utf-8-bom" für UTF-8 mit BOM. Ändern Sie dies nur, wenn Ihr Projekt explizit BOM erfordert. | "utf-8" |
Ausgabe
| Einstellung | Typ | Beschreibung | Standardwert | Mögliche Werte |
|---|---|---|---|---|
output.format | Zeichenkette | Das Format der CLI-Ausgabe. | "text" | "text", "json" |
ui
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
ui.theme | Zeichenkette | Das Farbthema für die Benutzeroberfläche. Siehe Themen für verfügbare Optionen. | undefined |
ui.customThemes | Objekt | Definitionen benutzerdefinierter Themen. | {} |
ui.hideWindowTitle | Boolean | Blendet die Titelleiste des Fensters aus. | false |
ui.hideTips | Boolean | Blendet hilfreiche Tipps in der Benutzeroberfläche aus. | false |
ui.hideBanner | Boolean | Blendet das Anwendungsbanner aus. | false |
ui.hideFooter | Boolean | Blendet die Fußzeile der Benutzeroberfläche aus. | false |
ui.showMemoryUsage | Boolean | Zeigt Informationen zur Speicherauslastung in der Benutzeroberfläche an. | false |
ui.showLineNumbers | Boolean | Zeigt Zeilennummern in Codeblöcken der CLI-Ausgabe an. | true |
ui.showCitations | Boolean | Zeigt Zitierhinweise für generierten Text im Chat an. | true |
enableWelcomeBack | Boolean | Zeigt einen Willkommensdialog an, wenn Sie zu einem Projekt mit Verlaufsdaten zurückkehren. 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, über den Sie Ihre vorherige Unterhaltung fortsetzen oder neu beginnen können. Diese Funktion ist in den /summary-Befehl und den Bestätigungsdialog beim Beenden integriert. | true |
ui.accessibility.enableLoadingPhrases | Boolean | Aktiviert Ladehinweise (zur Verbesserung der Barrierefreiheit deaktivieren). | true |
ui.accessibility.screenReader | Boolean | Aktiviert den Bildschirmlesermodus, der die TUI für eine bessere Kompatibilität mit Bildschirmlesern anpasst. | false |
ui.customWittyPhrases | Array von Zeichenketten | Eine Liste benutzerdefinierter Phrasen, die während Ladezustände angezeigt werden. Wenn angegeben, durchläuft die CLI diese Phrasen anstelle der Standardphrasen. | [] |
IDE
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
ide.enabled | boolean | Aktiviert den IDE-Integrationsmodus. | false |
ide.hasSeenNudge | boolean | Gibt an, ob der Benutzer die IDE-Integrationshinweis bereits gesehen hat. | false |
Datenschutz
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Aktiviert das Sammeln von Nutzungsstatistiken. | true |
Modell
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
model.name | Zeichenkette | Das Qwen-Modell, das für Konversationen verwendet werden soll. | undefined |
model.maxSessionTurns | Zahl | Maximale Anzahl an Benutzer-/Modell-/Tool-Austauschen, die in einer Sitzung gespeichert werden. Der Wert -1 bedeutet unbegrenzt. | -1 |
model.generationConfig | Objekt | Erweiterte Überschreibungen, die an den zugrundeliegenden Inhalts-Generator übergeben werden. Unterstützt Anfragesteuerungen wie timeout, maxRetries, enableCacheControl, contextWindowSize (Überschreibt die Kontextfenstergröße des Modells), modalities (Überschreibt automatisch erkannte Eingabemodalitäten), customHeaders (benutzerdefinierte HTTP-Header für API-Anfragen) und extra_body (zusätzliche Anfragetext-Parameter ausschließlich für OpenAI-kompatible API-Anfragen), sowie Feinabstimmungsparameter unter samplingParams (z. B. temperature, top_p, max_tokens). Wenn nicht festgelegt, werden die Standardwerte des Anbieters verwendet. | undefined |
model.chatCompression.contextPercentageThreshold | Zahl | Legt die Schwelle für die Komprimierung des Chatverlaufs als Prozentwert der gesamten Token-Grenze 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 /compress gilt. Ein Wert von 0.6 löst beispielsweise die Komprimierung aus, sobald der Chatverlauf 60 % der Token-Grenze überschreitet. Verwenden Sie 0, um die Komprimierung vollständig zu deaktivieren. | 0.7 |
model.skipNextSpeakerCheck | Boolean | Überspringt die nächste Sprecherprüfung. | false |
model.skipLoopDetection | Boolean | Deaktiviert die Schleiferkennung. Die Schleiferkennung verhindert unendliche Schleifen in KI-Antworten, kann jedoch falsch-positive Ergebnisse liefern, die legitime Abläufe unterbrechen. Aktivieren Sie diese Option, wenn Sie häufig falsch-positive Unterbrechungen durch die Schleiferkennung erleben. | false |
model.skipStartupContext | Boolean | Überspringt das Senden des Startarbeitsbereich-Kontexts (Zusammenfassung der Umgebung und Bestätigung) zu Beginn jeder Sitzung. Aktivieren Sie diese Option, wenn Sie den Kontext lieber manuell bereitstellen oder beim Start Token sparen möchten. | false |
model.enableOpenAILogging | Boolean | Aktiviert das Logging von OpenAI-API-Aufrufen für Debugging und Analyse. Wenn aktiviert, werden API-Anfragen und -Antworten in JSON-Dateien protokolliert. | false |
model.openAILoggingDir | Zeichenkette | Benutzerdefinierter Pfad zum Verzeichnis für OpenAI-API-Logs. Falls nicht angegeben, wird standardmäßig logs/openai im aktuellen Arbeitsverzeichnis verwendet. Unterstützt absolute Pfade, relative Pfade (aufgelöst vom aktuellen Arbeitsverzeichnis) sowie ~-Erweiterung (Heimatverzeichnis). | undefined |
Beispiel für model.generationConfig:
{
"model": {
"generationConfig": {
"timeout": 60000,
"contextWindowSize": 128000,
"modalities": {
"image": true
},
"enableCacheControl": true,
"customHeaders": {
"X-Client-Request-ID": "req-123"
},
"extra_body": {
"enable_thinking": true
},
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}contextWindowSize:
Überschreibt die Standard-Kontextfenstergröße für das ausgewählte Modell. Qwen Code bestimmt das Kontextfenster anhand integrierter Standardwerte, die auf Namensmustern des Modells basieren, mit einem konstanten Fallback-Wert. Verwenden Sie diese Einstellung, wenn die effektive Kontextgrenze eines Anbieters von der Standard-Kontextgrenze von Qwen Code abweicht. Dieser Wert definiert die vom Modell angenommene maximale Kontextkapazität, nicht eine pro Anfrage geltende Token-Grenze.
modalities:
Überschreibt die automatisch erkannten Eingabemodalitäten für das ausgewählte Modell. Qwen Code erkennt unterstützte Modalitäten (Bild, PDF, Audio, Video) automatisch anhand von Namensmustern des Modells. Verwenden Sie diese Einstellung, wenn die automatische Erkennung fehlerhaft ist – z. B., um pdf für ein Modell zu aktivieren, das dies unterstützt, aber nicht erkannt wird. Format: { "image": true, "pdf": true, "audio": true, "video": true }. Lassen Sie einen Schlüssel weg oder setzen Sie ihn auf false, um nicht unterstützte Typen auszuschließen.
customHeaders:
Ermöglicht das Hinzufügen benutzerdefinierter HTTP-Header zu allen API-Anfragen. Dies ist nützlich für Request-Tracing, Monitoring, Routing über API-Gateways oder wenn verschiedene Modelle unterschiedliche Header benötigen. Falls customHeaders in modelProviders[].generationConfig.customHeaders definiert ist, wird dieser direkt verwendet; andernfalls werden die Header aus model.generationConfig.customHeaders genutzt. Zwischen beiden Ebenen findet keine Zusammenführung statt.
Das Feld extra_body ermöglicht das Hinzufügen benutzerdefinierter Parameter zum Anfragetext, der an die API gesendet wird. Dies ist nützlich für anbieterspezifische Optionen, die nicht durch die Standardkonfigurationsfelder abgedeckt sind. Hinweis: Dieses Feld wird nur für OpenAI-kompatible Anbieter (openai, qwen-oauth) unterstützt. Für Anthropic- und Gemini-Anbieter wird es ignoriert. Falls extra_body in modelProviders[].generationConfig.extra_body definiert ist, wird dieser direkt verwendet; andernfalls werden die Werte aus model.generationConfig.extra_body genutzt.
Beispiele für model.openAILoggingDir:
"~/qwen-logs"– Protokolliert in das Verzeichnis~/qwen-logs"./custom-logs"– Protokolliert in./custom-logsrelativ zum aktuellen Verzeichnis"/tmp/openai-logs"– Protokolliert in den absoluten Pfad/tmp/openai-logs
Kontext
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
context.fileName | Zeichenkette oder Array von Zeichenketten | Der Name der bzw. der Kontextdatei(en). | undefined |
context.importFormat | Zeichenkette | Das Format, das beim Importieren von Speicherinhalten verwendet wird. | undefined |
context.includeDirectories | Array | Zusätzliche Verzeichnisse, die in den Arbeitsbereichskontext einbezogen werden sollen. Gibt ein Array zusätzlicher absoluter oder relativer Pfade an, die in den Arbeitsbereichskontext einbezogen werden sollen. Fehlende Verzeichnisse werden standardmäßig mit einer Warnung übersprungen. Pfade können ~ verwenden, um auf das Home-Verzeichnis des Benutzers zu verweisen. Diese Einstellung kann mit dem Befehlszeilenflag --include-directories kombiniert werden. | [] |
context.loadFromIncludeDirectories | Boolean | Steuert das Verhalten des Befehls /memory refresh. Ist dieser Wert auf true gesetzt, werden QWEN.md-Dateien aus allen hinzugefügten Verzeichnissen geladen. Ist er auf false gesetzt, werden QWEN.md-Dateien nur aus dem aktuellen Verzeichnis geladen. | false |
context.fileFiltering.respectGitIgnore | Boolean | Berücksichtigt .gitignore-Dateien bei der Suche. | true |
context.fileFiltering.respectQwenIgnore | Boolean | Berücksichtigt .qwenignore-Dateien bei der Suche. | true |
context.fileFiltering.enableRecursiveFileSearch | Boolean | Aktiviert die rekursive Suche nach Dateinamen im aktuellen Verzeichnisbaum beim Vervollständigen von @-Präfixen in der Eingabeaufforderung. | true |
context.fileFiltering.enableFuzzySearch | Boolean | Aktiviert bei true die fuzzy-Suche beim Suchen nach Dateien. Auf false setzen, um die Leistung in Projekten mit einer großen Anzahl von Dateien zu verbessern. | true |
Problembehandlung bei der Dateisuchleistung
Falls Sie Leistungsprobleme bei der Dateisuche (z. B. bei @-Vervollständigungen) feststellen, insbesondere in Projekten mit einer sehr großen Anzahl von Dateien, können Sie folgende Maßnahmen in der angegebenen Reihenfolge ausprobieren:
- Verwenden Sie
.qwenignore: Erstellen Sie eine Datei.qwenignoreim Stammverzeichnis Ihres Projekts, um Verzeichnisse auszuschließen, die eine große Anzahl von Dateien enthalten, auf die Sie nicht zugreifen müssen (z. B. Build-Artefakte, Protokolldateien odernode_modules). Die Reduzierung der Gesamtanzahl durchsuchter Dateien ist die effektivste Methode zur Leistungsverbesserung. - Deaktivieren Sie die unscharfe Suche: Falls das Ausschließen von Dateien nicht ausreicht, können Sie die unscharfe Suche deaktivieren, indem Sie in Ihrer Datei
settings.jsondie EinstellungenableFuzzySearchauffalsesetzen. Dadurch wird ein einfacherer, nicht-unscharfer Abgleichsalgorithmus verwendet, der schneller sein kann. - Deaktivieren Sie die rekursive Dateisuche: Als letztes Mittel können Sie die rekursive Dateisuche vollständig deaktivieren, indem Sie
enableRecursiveFileSearchin Ihrersettings.jsonauffalsesetzen. Dies ist die schnellste Option, da sie eine rekursive Durchsuchung Ihres Projekts vermeidet. Allerdings müssen Sie dann beim Einsatz von@-Vervollständigungen den vollständigen Pfad zu den Dateien eingeben.
Tools
| Einstellung | Typ | Beschreibung | Standardwert | Hinweise |
|---|---|---|---|---|
tools.sandbox | Boolean oder Zeichenkette | Sandbox-Ausführungsumgebung (kann ein Boolean oder ein Pfad als Zeichenkette sein). | undefined | |
tools.shell.enableInteractiveShell | Boolean | Verwendet node-pty für eine interaktive Shell-Erfahrung. Der Fallback auf child_process bleibt weiterhin aktiv. | false | |
tools.core | Array von Zeichenketten | Damit kann die Menge der integrierten Tools über eine Whitelist eingeschränkt werden. Für Tools, die dies unterstützen (z. B. run_shell_command), können auch kommandospezifische Einschränkungen angegeben werden. Beispiel: "tools.core": ["run_shell_command(ls -l)"] erlaubt ausschließlich die Ausführung des Befehls ls -l. | undefined | |
tools.exclude | Array von Zeichenketten | Tool-Namen, die bei der Tool-Erkennung ausgeschlossen werden sollen. Für Tools, die dies unterstützen (z. B. run_shell_command), können auch kommandospezifische Einschränkungen angegeben werden. Beispiel: "tools.exclude": ["run_shell_command(rm -rf)"] blockiert den Befehl rm -rf. Sicherheitshinweis: Kommandospezifische Einschränkungen in tools.exclude für run_shell_command basieren auf einfacher Zeichenkettenübereinstimmung und können leicht umgangen werden. Diese Funktion ist kein Sicherheitsmechanismus und darf nicht zur sicheren Ausführung nicht vertrauenswürdigen Codes genutzt werden. Es wird empfohlen, tools.core zu verwenden, um explizit die ausführbaren Befehle festzulegen. | undefined | |
tools.allowed | Array von Zeichenketten | Liste von Tool-Namen, die den Bestätigungsdialog umgehen. Nützlich für Tools, denen Sie vertrauen und die Sie häufig nutzen. Beispiel: ["run_shell_command(git)", "run_shell_command(npm test)"] überspringt den Bestätigungsdialog für beliebige git- und npm test-Befehle. | undefined | |
tools.approvalMode | Zeichenkette | Legt den Standardgenehmigungsmodus für die Tool-Nutzung fest. | default | Mögliche Werte: plan (nur Analyse, keine Dateiänderungen oder Befehlsausführungen), default (Bestätigung vor Dateiänderungen oder Shell-Befehlen erforderlich), auto-edit (Dateiänderungen werden automatisch genehmigt), yolo (alle Tool-Aufrufe werden automatisch genehmigt) |
tools.discoveryCommand | Zeichenkette | Befehl zur Durchführung der Tool-Erkennung. | undefined | |
tools.callCommand | Zeichenkette | Definiert einen benutzerdefinierten Shell-Befehl zum Aufruf eines bestimmten Tools, das mittels tools.discoveryCommand erkannt wurde. Der Shell-Befehl muss folgende Kriterien erfüllen: Er muss den Funktionsnamen (exakt wie in der Funktionsdeklaration ) als erstes Kommandozeilenargument enthalten. Er muss die Funktionsargumente als JSON über stdin lesen, analog zu functionCall.args. Er muss die Funktionsausgabe als JSON über stdout zurückgeben, analog zu functionResponse.response.content. | undefined | |
tools.useRipgrep | Boolean | Verwendet ripgrep für die Suche nach Dateiinhalten anstelle der Fallback-Implementierung. Bietet schnellere Suchleistung. | true | |
tools.useBuiltinRipgrep | Boolean | Verwendet die integrierte ripgrep-Binärdatei. Ist dieser Wert auf false gesetzt, wird stattdessen der systemweite rg-Befehl verwendet. Diese Einstellung wirkt nur, wenn tools.useRipgrep auf true gesetzt ist. | true | |
tools.truncateToolOutputThreshold | Zahl | Kürzt die Tool-Ausgabe, falls sie größer als diese Anzahl Zeichen ist. Wirkt auf die Tools Shell, Grep, Glob, ReadFile und ReadManyFiles. | 25000 | Neustart erforderlich: Ja |
tools.truncateToolOutputLines | Zahl | Maximale Anzahl an Zeilen oder Einträgen, die bei der Kürzung der Tool-Ausgabe beibehalten werden. Wirkt auf die Tools Shell, Grep, Glob, ReadFile und ReadManyFiles. | 1000 | Neustart erforderlich: Ja |
mcp
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
mcp.serverCommand | Zeichenkette | Befehl zum Starten eines MCP-Servers. | undefined |
mcp.allowed | Array von Zeichenketten | Eine Whitelist mit zulässigen MCP-Servern. Hier können Sie eine Liste von MCP-Servernamen angeben, die dem Modell zur Verfügung gestellt werden sollen. Damit lässt sich die Menge der verfügbaren MCP-Server einschränken. Beachten Sie: Diese Einstellung wird ignoriert, falls --allowed-mcp-server-names gesetzt ist. | undefined |
mcp.excluded | Array von Zeichenketten | Eine Blacklist mit auszuschließenden MCP-Servern. Ein Server, der sowohl in mcp.excluded als auch in mcp.allowed aufgeführt ist, wird ausgeschlossen. Beachten Sie: Diese Einstellung wird ignoriert, falls --allowed-mcp-server-names gesetzt ist. | undefined |
Sicherheitshinweis zu MCP-Servern: Diese Einstellungen verwenden eine einfache Zeichenkettenübereinstimmung für MCP-Servernamen, die jedoch modifiziert werden können. Falls Sie als Systemadministrator verhindern möchten, dass Benutzer diese Einschränkungen umgehen, sollten Sie die mcpServers auf Systemebene konfigurieren, sodass Benutzer keine eigenen MCP-Server konfigurieren können. Diese Einstellungen stellen keine vollständige Sicherheitslösung dar.
LSP
[!warning] Experimentelle Funktion: Die LSP-Unterstützung ist derzeit experimentell und standardmäßig deaktiviert. Aktivieren Sie sie mithilfe des Befehlszeilenflags
--experimental-lsp.
Das Language Server Protocol (LSP) bietet Code-Intelligenzfunktionen wie „Gehe zu Definition“, „Finde Verweise“ und Diagnosen.
Die Konfiguration des LSP-Servers erfolgt über .lsp.json-Dateien im Stammverzeichnis Ihres Projekts, nicht über settings.json. Weitere Informationen zur Konfiguration sowie Beispiele finden Sie in der LSP-Dokumentation.
Sicherheit
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
security.folderTrust.enabled | boolean | Gibt an, ob die Vertrauenswürdigkeit von Ordnern aktiviert ist. | false |
security.auth.selectedType | string | Der aktuell ausgewählte Authentifizierungstyp. | undefined |
security.auth.enforcedType | string | Der erforderliche Authentifizierungstyp (nützlich für Unternehmen). | undefined |
security.auth.useExternal | boolean | Gibt an, ob ein externer Authentifizierungsablauf verwendet wird. | undefined |
Erweitert
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Konfiguriert automatisch die Speichergrenzen für Node.js. | false |
advanced.dnsResolutionOrder | string | Die Reihenfolge der DNS-Auflösung. | undefined |
advanced.excludedEnvVars | Array von Strings | Umgebungsvariablen, die vom Projekt-Kontext ausgeschlossen werden sollen. Gibt an, welche Umgebungsvariablen nicht aus den Projekt-.env-Dateien geladen werden dürfen. Dadurch wird verhindert, dass projektspezifische Umgebungsvariablen (z. B. DEBUG=true) das Verhalten der CLI beeinträchtigen. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | Objekt | Konfiguration für den Befehl zum Melden von Fehlern. Überschreibt die Standard-URL für den /bug-Befehl. Eigenschaften: urlTemplate (string): Eine URL, die die Platzhalter {title} und {info} enthalten kann. Beispiel: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
advanced.tavilyApiKey | string | API-Schlüssel für den Tavily-Web-Suchdienst. Wird zur Aktivierung der Funktionalität des web_search-Tools verwendet. | undefined |
Hinweis zu advanced.tavilyApiKey: Dies ist ein veraltetes Konfigurationsformat. Für Qwen-OAuth-Nutzer ist der DashScope-Anbieter standardmäßig ohne weitere Konfiguration verfügbar. Für andere Authentifizierungstypen konfigurieren Sie bitte die Anbieter Tavily oder Google mithilfe des neuen webSearch-Konfigurationsformats.
mcpServers
Konfiguriert Verbindungen zu einem oder mehreren Model-Context-Protocol-(MCP-)Servern, um benutzerdefinierte Tools zu entdecken und zu nutzen. Qwen Code versucht, eine Verbindung zu jedem konfigurierten MCP-Server herzustellen, um verfügbare Tools zu ermitteln. Falls mehrere MCP-Server ein Tool mit demselben Namen bereitstellen, werden die Toolnamen mit dem von Ihnen in der Konfiguration definierten Server-Alias präfixiert (z. B. serverAlias__actualToolName), um Namenskonflikte zu vermeiden. Beachten Sie, dass das System bestimmte Schemaeigenschaften aus den MCP-Tooldefinitionen aus Kompatibilitätsgründen entfernen kann. Mindestens einer der folgenden Werte muss angegeben werden: command, url oder httpUrl. Werden mehrere Werte angegeben, gilt folgende Priorisierungsreihenfolge: httpUrl, dann url, dann command.
| Eigenschaft | Typ | Beschreibung | Optional |
|---|---|---|---|
mcpServers.<SERVER_NAME>.command | Zeichenkette | Der Befehl, der zur Startung des MCP-Servers über Standard-Ein-/Ausgabe ausgeführt wird. | Ja |
mcpServers.<SERVER_NAME>.args | Array von Zeichenketten | Argumente, die an den Befehl übergeben werden. | Ja |
mcpServers.<SERVER_NAME>.env | Objekt | Umgebungsvariablen, die für den Serverprozess gesetzt werden sollen. | Ja |
mcpServers.<SERVER_NAME>.cwd | Zeichenkette | Das Arbeitsverzeichnis, in dem der Server gestartet wird. | Ja |
mcpServers.<SERVER_NAME>.url | Zeichenkette | Die URL eines MCP-Servers, der Server-Sent Events (SSE) für die Kommunikation nutzt. | Ja |
mcpServers.<SERVER_NAME>.httpUrl | Zeichenkette | Die URL eines MCP-Servers, der streamfähige HTTP-Kommunikation nutzt. | Ja |
mcpServers.<SERVER_NAME>.headers | Objekt | Eine Zuordnung von HTTP-Headern, die mit Anfragen an url oder httpUrl gesendet werden. | Ja |
mcpServers.<SERVER_NAME>.timeout | Zahl | Timeout in Millisekunden für Anfragen an diesen MCP-Server. | Ja |
mcpServers.<SERVER_NAME>.trust | Boolesch | Diesem Server vertrauen und alle Bestätigungen für Toolaufrufe umgehen. | Ja |
mcpServers.<SERVER_NAME>.description | Zeichenkette | Eine kurze Beschreibung des Servers, die beispielsweise für Anzeigezwecke genutzt werden kann. | Ja |
mcpServers.<SERVER_NAME>.includeTools | Array von Zeichenketten | Liste der Toolnamen, die von diesem MCP-Server eingeschlossen werden sollen. Wenn angegeben, sind ausschließlich die hier aufgeführten Tools von diesem Server verfügbar (Whitelist-Verhalten). Falls nicht angegeben, sind standardmäßig alle vom Server bereitgestellten Tools aktiviert. | Ja |
mcpServers.<SERVER_NAME>.excludeTools | Array von Zeichenketten | Liste der Toolnamen, die von diesem MCP-Server ausgeschlossen werden sollen. Tools, die hier aufgelistet sind, stehen dem Modell nicht zur Verfügung, selbst wenn sie vom Server bereitgestellt werden. Hinweis: excludeTools hat Vorrang vor includeTools – ist ein Tool in beiden Listen enthalten, wird es ausgeschlossen. | Ja |
Telemetrie
Konfiguriert die Protokollierung und Erfassung von Metriken für Qwen Code. Weitere Informationen finden Sie unter Telemetrie.
| Einstellung | Typ | Beschreibung | Standardwert |
|---|---|---|---|
telemetry.enabled | boolean | Gibt an, ob die Telemetrie aktiviert ist. | |
telemetry.target | string | Das Ziel für die erfasste Telemetriedaten. Unterstützte Werte sind local und gcp. | |
telemetry.otlpEndpoint | string | Der Endpunkt für den OTLP-Exporter. | |
telemetry.otlpProtocol | string | Das Protokoll für den OTLP-Exporter (grpc oder http). | |
telemetry.logPrompts | boolean | Gibt an, ob der Inhalt der Benutzer-Prompts in die Protokolle aufgenommen wird. | |
telemetry.outfile | string | Die Datei, in die Telemetriedaten geschrieben werden, wenn target auf local gesetzt ist. | |
telemetry.useCollector | boolean | Gibt an, ob ein externer OTLP-Collector verwendet werden soll. |
Beispiel für settings.json
Hier ist ein Beispiel für eine settings.json-Datei mit der verschachtelten Struktur, die ab Version 0.3.0 neu eingeführt wurde:
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideTips": false,
"customWittyPhrases": [
"Sie vergessen täglich tausend Dinge. Stellen Sie sicher, dass dies eine davon ist.",
"Verbinde mit 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,
"enableOpenAILogging": false,
"openAILoggingDir": "~/qwen-logs",
},
"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-Verlauf
Die CLI speichert einen Verlauf der von Ihnen ausgeführten Shell-Befehle. Um Konflikte zwischen verschiedenen Projekten zu vermeiden, wird dieser Verlauf in einem projektbezogenen Verzeichnis innerhalb des Home-Ordners Ihres Benutzers gespeichert.
- Speicherort:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>ist eine eindeutige Kennung, die aus dem Stammverzeichnis Ihres Projekts generiert wird.- Der Verlauf wird in einer Datei namens
shell_historygespeichert.
Umgebungsvariablen und .env-Dateien
Umgebungsvariablen sind eine gängige Methode, um Anwendungen zu konfigurieren – insbesondere für sensible Informationen (wie Tokens) oder für Einstellungen, die sich je nach Umgebung unterscheiden können.
Qwen Code kann Umgebungsvariablen automatisch aus .env-Dateien laden.
Weitere Informationen zu authentifizierungsspezifischen Variablen (z. B. OPENAI_*) sowie zum empfohlenen Ansatz mit .qwen/.env finden Sie unter Authentifizierung.
Ausschluss von Umgebungsvariablen: Einige Umgebungsvariablen (z. B. DEBUG und DEBUG_MODE) werden standardmäßig automatisch aus Projekt-.env-Dateien ausgeschlossen, um Konflikte mit dem CLI-Verhalten zu vermeiden. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen. Dieses Verhalten lässt sich über die Einstellung advanced.excludedEnvVars in Ihrer settings.json-Datei anpassen.
Tabelle der Umgebungsvariablen
| Variable | Beschreibung | Hinweise |
|---|---|---|
QWEN_TELEMETRY_ENABLED | Auf true oder 1 setzen, um die Telemetrie zu aktivieren. Jeder andere Wert wird als Deaktivierung interpretiert. | Überschreibt die Einstellung telemetry.enabled. |
QWEN_TELEMETRY_TARGET | Legt das Telemetrieziel fest (local oder gcp). | Überschreibt die Einstellung telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Legt den OTLP-Endpunkt für die Telemetrie fest. | Überschreibt die Einstellung telemetry.otlpEndpoint. |
QWEN_TELEMETRY_OTLP_PROTOCOL | Legt das OTLP-Protokoll fest (grpc oder http). | Überschreibt die Einstellung telemetry.otlpProtocol. |
QWEN_TELEMETRY_LOG_PROMPTS | Auf true oder 1 setzen, um das Protokollieren von Benutzeranweisungen zu aktivieren oder zu deaktivieren. Jeder andere Wert wird als Deaktivierung interpretiert. | Überschreibt die Einstellung telemetry.logPrompts. |
QWEN_TELEMETRY_OUTFILE | Legt den Dateipfad fest, in den die Telemetriedaten geschrieben werden, wenn das Ziel local ist. | Überschreibt die Einstellung telemetry.outfile. |
QWEN_TELEMETRY_USE_COLLECTOR | Auf true oder 1 setzen, um die Verwendung eines externen OTLP-Collectors zu aktivieren oder zu deaktivieren. Jeder andere Wert wird als Deaktivierung interpretiert. | Überschreibt die Einstellung telemetry.useCollector. |
QWEN_SANDBOX | Alternative zur sandbox-Einstellung in settings.json. | Akzeptiert true, false, docker, podman oder eine benutzerdefinierte Befehlszeichenfolge. |
SEATBELT_PROFILE | (macOS-spezifisch) Wechselt das Seatbelt-Profils (sandbox-exec) unter macOS. | permissive-open: (Standard) Beschränkt Schreibzugriffe auf den Projektordner (und einige weitere Ordner, siehe packages/cli/src/utils/sandbox-macos-permissive-open.sb), erlaubt jedoch andere Operationen. strict: Verwendet ein strenges Profil, das Operationen standardmäßig ablehnt. <profile_name>: Verwendet ein benutzerdefiniertes Profil. Um ein benutzerdefiniertes Profil zu definieren, erstellen Sie eine Datei namens sandbox-macos-<profile_name>.sb im .qwen/-Verzeichnis Ihres Projekts (z. B. my-project/.qwen/sandbox-macos-custom.sb). |
DEBUG oder DEBUG_MODE | (wird häufig von zugrundeliegenden Bibliotheken oder der CLI selbst verwendet) Auf true oder 1 setzen, um ausführliche Debug-Protokollierung zu aktivieren, was bei der Fehlersuche hilfreich sein kann. | Hinweis: Diese Variablen werden standardmäßig automatisch aus Projekt-.env-Dateien ausgeschlossen, um Interferenzen mit dem CLI-Verhalten zu vermeiden. Verwenden Sie stattdessen .qwen/.env-Dateien, falls Sie diese speziell für Qwen Code festlegen müssen. |
NO_COLOR | Auf einen beliebigen Wert setzen, um die farbige Ausgabe in der CLI zu deaktivieren. | |
CLI_TITLE | Auf eine Zeichenfolge setzen, um den Titel der CLI anzupassen. | |
CODE_ASSIST_ENDPOINT | Gibt den Endpunkt des Code-Assist-Servers an. | Nützlich für Entwicklung und Tests. |
TAVILY_API_KEY | Ihr API-Schlüssel für den Tavily-Web-Suchdienst. | Wird zur Aktivierung der Funktionalität des web_search-Tools benötigt. Beispiel: export TAVILY_API_KEY="tvly-your-api-key-here" |
Befehlszeilenargumente
Argumente, die direkt beim Ausführen der CLI übergeben werden, können andere Konfigurationen für diese spezifische Sitzung überschreiben.
Befehlszeilenargumente-Tabelle
| Argument | Alias | Beschreibung | Mögliche Werte | Hinweise |
|---|---|---|---|---|
--model | -m | Gibt das Qwen-Modell an, das für diese Sitzung verwendet werden soll. | Modellname | Beispiel: npm start -- --model qwen3-coder-plus |
--prompt | -p | Dient dazu, eine Eingabeaufforderung direkt an den Befehl zu übergeben. Dadurch wird Qwen Code im nicht-interaktiven Modus gestartet. | Ihr Prompt-Text | Für Skriptbeispiele verwenden Sie die Option --output-format json, um strukturierte Ausgabe zu erhalten. |
--prompt-interactive | -i | Startet eine interaktive Sitzung, wobei der angegebene Prompt als erste Eingabe dient. | Ihr Prompt-Text | Der Prompt wird innerhalb der interaktiven Sitzung verarbeitet, nicht vorher. Kann nicht zusammen mit Eingabeübertragung über stdin verwendet werden. Beispiel: qwen -i "erkläre diesen Code" |
--output-format | -o | Legt das Format der CLI-Ausgabe für den nicht-interaktiven Modus fest. | text, json, stream-json | text: (Standard) Die übliche, für Menschen lesbare Ausgabe. json: Eine maschinenlesbare JSON-Ausgabe, die am Ende der Ausführung ausgegeben wird. stream-json: Streaming-JSON-Nachrichten, die während der Ausführung jeweils beim Auftreten ausgegeben werden. Für strukturierte Ausgabe und Skripting verwenden Sie die Option --output-format json oder --output-format stream-json. Weitere Informationen finden Sie unter Headless-Modus. |
--input-format | Legt das Format fest, das von der Standardeingabe (stdin) verarbeitet wird. | text, stream-json | text: (Standard) Normale Texteingabe von stdin oder über Befehlszeilenargumente. stream-json: JSON-Nachrichtenprotokoll über stdin für bidirektionale Kommunikation. Voraussetzung: --input-format stream-json erfordert, dass auch --output-format stream-json gesetzt ist. Bei Verwendung von stream-json ist stdin ausschließlich für Protokollnachrichten reserviert. Weitere Informationen finden Sie unter Headless-Modus. | |
--include-partial-messages | Schließt bei Verwendung des stream-json-Ausgabeformats teilweise Assistant-Nachrichten ein. Wenn aktiviert, werden Stream-Ereignisse (z. B. message_start, content_block_delta) während des Streamings jeweils beim Auftreten ausgegeben. | Standardwert: false. Voraussetzung: Erfordert, dass --output-format stream-json gesetzt ist. Weitere Informationen zu Stream-Ereignissen finden Sie unter Headless-Modus. | ||
--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 liefert ausführlichere Ausgaben. | ||
--all-files | -a | Wenn gesetzt, werden rekursiv alle Dateien im aktuellen Verzeichnis als Kontext für die Eingabeaufforderung eingeschlossen. | ||
--help | -h | Zeigt Hilfetext zu den Befehlszeilenargumenten an. | ||
--show-memory-usage | Zeigt die aktuelle Speicherauslastung an. | |||
--yolo | Aktiviert den YOLO-Modus, bei dem alle Tool-Aufrufe automatisch genehmigt werden. | |||
--approval-mode | Legt den Genehmigungsmodus für Tool-Aufrufe fest. | plan, default, auto-edit, yolo | Unterstützte Modi:plan: Nur Analyse – keine Dateiänderungen oder Befehlsausführungen.default: Genehmigung erforderlich für Dateiänderungen oder Shell-Befehle (Standardverhalten).auto-edit: Automatische Genehmigung von Editier-Tools (z. B. edit, write_file), bei anderen Tools wird weiterhin nachgefragt.yolo: Automatische Genehmigung aller Tool-Aufrufe (entspricht --yolo).Kann nicht zusammen mit --yolo verwendet werden. Nutzen Sie stattdessen den einheitlichen Ansatz --approval-mode=yolo. Beispiel: qwen --approval-mode auto-editWeitere Informationen finden Sie unter Genehmigungsmodus. | |
--allowed-tools | Eine durch Kommas getrennte Liste von Tool-Namen, die den Bestätigungsdialog umgehen. | Tool-Namen | Beispiel: qwen --allowed-tools "Shell(git status)" | |
--telemetry | Aktiviert Telemetrie. | |||
--telemetry-target | Legt das Telemetrie-Ziel fest. | Weitere Informationen finden Sie unter Telemetrie. | ||
--telemetry-otlp-endpoint | Legt den OTLP-Endpunkt für die Telemetrie fest. | Weitere Informationen finden Sie unter Telemetrie. | ||
--telemetry-otlp-protocol | Legt das OTLP-Protokoll für die Telemetrie fest (grpc oder http). | Standardwert: grpc. Weitere Informationen finden Sie unter Telemetrie. | ||
--telemetry-log-prompts | Aktiviert das Logging von Prompts für die Telemetrie. | Weitere Informationen finden Sie unter Telemetrie. | ||
--checkpointing | Aktiviert Checkpointing. | |||
--acp | Aktiviert den ACP-Modus (Agent Client Protocol). Nützlich für IDE-/Editor-Integrationen wie Zed. | Stabil. Ersetzt die veraltete Option --experimental-acp. | ||
--experimental-lsp | Aktiviert die experimentelle LSP-Funktion (Language Server Protocol) für Code-Intelligenz (z. B. „Gehe zu Definition“, „Finde Referenzen“, Diagnosen usw.). | Experimentell. Erfordert installierte Language Server. | ||
--extensions | -e | Gibt eine Liste von Erweiterungen an, die für die Sitzung verwendet werden sollen. | Erweiterungsnamen | Falls nicht angegeben, werden alle verfügbaren Erweiterungen genutzt. Verwenden Sie den speziellen Wert 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 das Programm. | ||
--proxy | Legt den Proxy für die CLI fest. | Proxy-URL | Beispiel: --proxy http://localhost:7890. | |
--include-directories | Fügt zusätzliche Verzeichnisse in den Arbeitsbereich ein, um die Unterstützung mehrerer Verzeichnisse zu ermöglichen. | Verzeichnispfade | Kann mehrfach angegeben oder als durch Kommas getrennte Werte übergeben werden. Maximal fünf Verzeichnisse können hinzugefügt werden. Beispiel: --include-directories /path/to/project1,/path/to/project2 oder --include-directories /path/to/project1 --include-directories /path/to/project2 | |
--screen-reader | Aktiviert den Screenreader-Modus, der die TUI für eine bessere Kompatibilität mit Screenreadern anpasst. | |||
--version | Zeigt die Version der CLI an. | |||
--openai-logging | Aktiviert das Logging von OpenAI-API-Aufrufen für Debugging und Analyse. | Diese Option überschreibt die Einstellung enableOpenAILogging in settings.json. | ||
--openai-logging-dir | Legt einen benutzerdefinierten Verzeichnispfad für OpenAI-API-Logs fest. | Verzeichnispfad | Diese Option überschreibt die Einstellung openAILoggingDir in settings.json. Unterstützt absolute Pfade, relative Pfade sowie ~-Expansion. Beispiel: qwen --openai-logging-dir "~/qwen-logs" --openai-logging | |
--tavily-api-key | Legt den Tavily-API-Schlüssel für die Web-Suchfunktion dieser Sitzung fest. | API-Schlüssel | Beispiel: qwen --tavily-api-key tvly-your-api-key-here |
Kontextdateien (hierarchischer instruktiver Kontext)
Obwohl Kontextdateien (standardmäßig QWEN.md, aber konfigurierbar über die Einstellung context.fileName) nicht streng genommen die Verhaltensweise der CLI konfigurieren, sind sie entscheidend für die Konfiguration des instruktiven Kontexts (auch als „Gedächtnis“ bezeichnet). Diese leistungsstarke Funktion ermöglicht es Ihnen, dem KI-Modell projektspezifische Anweisungen, Richtlinien für den Codierstil oder sonstige relevante Hintergrundinformationen bereitzustellen, wodurch die Antworten präziser und besser auf Ihre Anforderungen zugeschnitten werden. Die CLI enthält Benutzeroberflächenelemente – beispielsweise einen Indikator in der Fußzeile, der die Anzahl der geladenen Kontextdateien anzeigt –, um Sie stets über den aktiven Kontext zu informieren.
- Zweck: Diese Markdown-Dateien enthalten Anweisungen, Richtlinien oder Kontextinformationen, die das Qwen-Modell während Ihrer Interaktionen berücksichtigen soll. Das System ist so konzipiert, dass es diesen instruktiven Kontext hierarchisch verwaltet.
Beispielinhalt einer Kontextdatei (z. B. QWEN.md)
Hier ist ein konzeptionelles Beispiel für den Inhalt einer Kontextdatei im Stammverzeichnis eines TypeScript-Projekts:
# Projekt: Meine großartige TypeScript-Bibliothek
## Allgemeine Anweisungen:
- Generieren Sie neuen TypeScript-Code stets im Einklang mit dem bestehenden Codierungsstil.
- Stellen Sie sicher, dass alle neuen Funktionen und Klassen JSDoc-Kommentare enthalten.
- Verwenden Sie dort, wo sinnvoll, funktionale Programmierparadigmen.
- Der gesamte Code muss mit TypeScript 5.0 und Node.js 20+ kompatibel sein.
## Codierungsstil:
- Verwenden Sie zwei Leerzeichen für die Einrückung.
- Schnittstellennamen müssen mit `I` beginnen (z. B. `IUserService`).
- Private Klassenmember müssen mit einem Unterstrich (`_`) beginnen.
- Verwenden Sie stets strenge Gleichheit (`===` und `!==`).
## Spezifische Komponente: `src/api/client.ts`
- Diese Datei verarbeitet alle ausgehenden API-Anfragen.
- Wenn Sie neue API-Aufruffunktionen hinzufügen, stellen Sie sicher, dass sie eine robuste Fehlerbehandlung und Protokollierung enthalten.
- Verwenden Sie das vorhandene Hilfsprogramm `fetchWithRetry` für alle GET-Anfragen.
## Zu Abhängigkeiten:
- Vermeiden Sie die Einführung neuer externer Abhängigkeiten, sofern dies nicht unbedingt erforderlich ist.
- Falls eine neue Abhängigkeit benötigt wird, geben Sie bitte den Grund dafür an.
Dieses Beispiel zeigt, wie Sie allgemeinen Projektzusammenhang, spezifische Codierkonventionen und sogar Hinweise zu bestimmten Dateien oder Komponenten bereitstellen können. Je relevanter und präziser Ihre Kontextdateien sind, desto besser kann die KI Sie unterstützen. Projekt-spezifische Kontextdateien werden ausdrücklich empfohlen, um Konventionen und Kontext festzulegen.
- Hierarchisches Laden und Priorisierung: Die CLI implementiert ein hierarchisches Speichersystem, indem sie Kontextdateien (z. B.
QWEN.md) aus mehreren Standorten 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 Zusammenfassung und der endgültige Kontext können mithilfe des Befehls/memory showüberprüft werden. Die typische Lade-Reihenfolge lautet:- Globale Kontextdatei:
- Ort:
~/.qwen/<konfigurierter-kontext-dateiname>(z. B.~/.qwen/QWEN.mdim Home-Verzeichnis Ihres Benutzers). - Gültigkeitsbereich: Stellt Standardanweisungen für alle Ihre Projekte bereit.
- Ort:
- Kontextdateien im Projektstammverzeichnis und in übergeordneten Verzeichnissen:
- Ort: Die CLI sucht nach der konfigurierten Kontextdatei im aktuellen Arbeitsverzeichnis und anschließend in jedem übergeordneten Verzeichnis bis hin zum Projektstamm (identifiziert durch einen
.git-Ordner) oder bis zu Ihrem Home-Verzeichnis. - Gültigkeitsbereich: Stellt Kontext bereit, der für das gesamte Projekt oder einen größeren Teil davon relevant ist.
- Ort: Die CLI sucht nach der konfigurierten Kontextdatei im aktuellen Arbeitsverzeichnis und anschließend in jedem übergeordneten Verzeichnis bis hin zum Projektstamm (identifiziert durch einen
- Globale Kontextdatei:
- Zusammenfassung und UI-Anzeige: Die Inhalte aller gefundenen Kontextdateien werden zusammengeführt (mit Trennzeichen, die Herkunft und Pfad kennzeichnen) und als Teil der Systemanweisung bereitgestellt. In der Fußzeile der CLI wird die Anzahl der geladenen Kontextdateien angezeigt, sodass Sie auf einen Blick erkennen können, welcher instruktive Kontext gerade aktiv ist.
- Importieren von Inhalten: Sie können Ihre Kontextdateien modularisieren, indem Sie andere Markdown-Dateien mit der Syntax
@pfad/zur/datei.mdimportieren. Weitere Details finden Sie in der Dokumentation zum Memory-Import-Prozessor. - Befehle zur Speicherverwaltung:
- Verwenden Sie
/memory refresh, um einen erneuten Scan und Neuladen aller Kontextdateien aus allen konfigurierten Standorten zu erzwingen. Dadurch wird der instruktive Kontext der KI aktualisiert. - Verwenden Sie
/memory show, um den aktuell zusammengeführten instruktiven Kontext anzuzeigen und so die Hierarchie und den von der KI verwendeten Inhalt zu überprüfen. - Weitere Informationen zum
/memory-Befehl und seinen Unterbefehlen (showundrefresh) finden Sie in der Dokumentation zu Befehlen.
- Verwenden Sie
Indem Sie diese Konfigurationsebenen und die hierarchische Struktur von Kontextdateien verstehen und nutzen, können Sie den Speicher der KI effektiv verwalten und die Antworten von Qwen Code gezielt an Ihre spezifischen Anforderungen und Projekte anpassen.
Sandbox
Qwen Code kann potenziell unsichere Operationen (wie Shell-Befehle und Dateiänderungen) innerhalb einer Sandbox-Umgebung ausführen, um Ihr System zu schützen.
Der Sandbox-Modus ist standardmäßig deaktiviert, kann jedoch auf verschiedene Weisen aktiviert werden:
- Mit dem Flag
--sandboxoder-s. - Durch Festlegen der Umgebungsvariablen
QWEN_SANDBOX. - Der Sandbox-Modus ist standardmäßig aktiviert, wenn
--yolooder--approval-mode=yoloverwendet wird.
Standardmäßig wird das vorgefertigte Docker-Image qwen-code-sandbox verwendet.
Für projektbezogene Sandbox-Anforderungen können Sie im Stammverzeichnis Ihres Projekts eine benutzerdefinierte Dockerfile unter .qwen/sandbox.Dockerfile erstellen. Diese Dockerfile kann auf dem Basis-Sandbox-Image basieren:
FROM qwen-code-sandbox
# Fügen Sie hier Ihre benutzerdefinierten Abhängigkeiten oder Konfigurationen hinzu
# Beispiel:
# RUN apt-get update && apt-get install -y some-packageCOPY ./my-config /app/my-config
Wenn `.qwen/sandbox.Dockerfile` existiert, können Sie beim Ausführen von Qwen Code die Umgebungsvariable `BUILD_SANDBOX` verwenden, um das benutzerdefinierte Sandbox-Image automatisch zu erstellen:
BUILD_SANDBOX=1 qwen -s
## Nutzungsstatistiken
Um die Weiterentwicklung von Qwen Code zu unterstützen, erfassen wir anonymisierte Nutzungsstatistiken. Diese Daten helfen uns dabei, die Nutzung der CLI besser zu verstehen, häufig auftretende Probleme zu identifizieren und neue Funktionen entsprechend ihrer Relevanz zu priorisieren.
**Was wir erfassen:**
- **Tool-Aufrufe:** Wir protokollieren die Namen der aufgerufenen Tools, ob sie erfolgreich waren oder fehlgeschlagen sind, sowie ihre Ausführungszeit. Die an die Tools übergebenen Argumente sowie sämtliche von ihnen zurückgegebenen Daten werden nicht erfasst.
- **API-Anfragen:** Wir protokollieren das für jede Anfrage verwendete Modell, die Dauer der Anfrage und ob sie erfolgreich war. Der Inhalt der Prompts oder Antworten wird nicht erfasst.
- **Sitzungsinformationen:** Wir erfassen Informationen zur Konfiguration der CLI, beispielsweise welche Tools aktiviert sind und welcher Genehmigungsmodus verwendet wird.
**Was wir NICHT erfassen:**
- **Personenbezogene Daten (PII):** Wir erfassen keinerlei persönliche Informationen wie Ihren Namen, Ihre E-Mail-Adresse oder API-Schlüssel.
- **Inhalt von Prompts und Antworten:** Wir protokollieren weder den Inhalt Ihrer Prompts noch die Antworten des Modells.
- **Dateiinhalte:** Wir protokollieren nicht den Inhalt irgendwelcher Dateien, die von der CLI gelesen oder geschrieben werden.
**Wie Sie die Erfassung deaktivieren können:**
Sie können die Erfassung von Nutzungsstatistiken jederzeit deaktivieren, indem Sie die Eigenschaft `usageStatisticsEnabled` im Abschnitt `privacy` Ihrer `settings.json`-Datei auf `false` setzen:
{ “privacy”: { “usageStatisticsEnabled”: false } }
> [!note]
>
> Wenn Nutzungsstatistiken aktiviert sind, werden Ereignisse an einen Alibaba Cloud RUM-Erfassungsendpunkt gesendet.