Skip to Content
BenutzerhandbuchKonfigurationEinstellungen

Qwen Code-Konfiguration

Tip

Authentifizierung / API-Keys: Die Authentifizierung (API-Key, Alibaba Cloud Coding Plan) und authentifizierungsbezogene Umgebungsvariablen (wie OPENAI_API_KEY) sind in Authentication dokumentiert.

Note

Hinweis zum neuen Konfigurationsformat: Das Format der settings.json-Datei wurde auf eine neue, besser strukturierte Form aktualisiert. Das alte Format wird automatisch migriert. Qwen Code bietet verschiedene Möglichkeiten, sein Verhalten zu konfigurieren, darunter Umgebungsvariablen, Befehlszeilenargumente und Einstellungsdateien. Dieses Dokument erläutert die verschiedenen Konfigurationsmethoden und verfügbaren Einstellungen.

Konfigurationsebenen

Die Konfiguration wird in folgender Prioritätsreihenfolge angewendet (niedrigere Nummern werden durch höhere überschrieben):

LevelKonfigurationsquelleBeschreibung
1StandardwerteIm Code festgelegte Standardwerte innerhalb der Anwendung
2System-StandarddateiSystemweite Standardeinstellungen, die durch andere Einstellungsdateien überschrieben werden können
3BenutzereinstellungsdateiGlobale Einstellungen für den aktuellen Benutzer
4ProjekteinstellungsdateiProjektspezifische Einstellungen
5SystemeinstellungsdateiSystemweite Einstellungen, die alle anderen Einstellungsdateien überschreiben
6UmgebungsvariablenSystemweite oder sitzungsspezifische Variablen, die potenziell aus .env-Dateien geladen werden
7BefehlszeilenargumenteWerte, die beim Starten der CLI übergeben werden

Einstellungsdateien

Qwen Code verwendet JSON-Einstellungsdateien für persistente Konfigurationen. Es gibt vier Speicherorte für diese Dateien:

DateitypSpeicherortScope
System-StandarddateiLinux: /etc/qwen-code/system-defaults.json
Windows: C:\ProgramData\qwen-code\system-defaults.json
macOS: /Library/Application Support/QwenCode/system-defaults.json
Der Pfad kann über die QWEN_CODE_SYSTEM_DEFAULTS_PATH-Umgebungsvariable überschrieben werden.
Stellt eine Basisebene systemweiter Standardeinstellungen bereit. Diese Einstellungen haben die niedrigste Priorität und sind dafür gedacht, durch Benutzer-, Projekt- oder System-Override-Einstellungen überschrieben zu werden.
Benutzereinstellungsdatei~/.qwen/settings.json (wobei ~ dein Home-Verzeichnis ist).Gilt für alle Qwen Code-Sitzungen des aktuellen Benutzers.
Projekteinstellungsdatei.qwen/settings.json im Stammverzeichnis deines Projekts.Gilt nur, wenn Qwen Code aus diesem spezifischen Projekt heraus ausgeführt wird. Projekteinstellungen überschreiben Benutzereinstellungen.
SystemeinstellungsdateiLinux: /etc/qwen-code/settings.json
Windows: C:\ProgramData\qwen-code\settings.json
macOS: /Library/Application Support/QwenCode/settings.json
Der Pfad kann über die QWEN_CODE_SYSTEM_SETTINGS_PATH-Umgebungsvariable ü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 Kontrolle über die Qwen Code-Einrichtungen der Benutzer zu haben.
Note

Hinweis zu Umgebungsvariablen in Einstellungen: Zeichenkettenwerte in deinen settings.json-Dateien können Umgebungsvariablen entweder mit der $VAR_NAME- oder ${VAR_NAME}-Syntax referenzieren. Diese Variablen werden beim Laden der Einstellungen automatisch aufgelöst. Wenn du beispielsweise eine Umgebungsvariable MY_API_TOKEN hast, kannst du sie in settings.json so verwenden: "apiKey": "$MY_API_TOKEN".

Das .qwen-Verzeichnis in deinem Projekt

Zusätzlich zu einer Projekteinstellungsdatei kann das .qwen-Verzeichnis eines Projekts weitere projektspezifische Dateien im Zusammenhang mit dem Betrieb von Qwen Code enthalten, wie z. B.:

Konfigurationsmigration

Qwen Code migriert veraltete Konfigurationseinstellungen automatisch in das neue Format. Alte Einstellungsdateien werden vor der Migration gesichert. Die folgenden Einstellungen wurden von negativer (disable*) zu positiver (enable*) Benennung umbenannt:

Alte EinstellungNeue EinstellungHinweis
disableAutoUpdate + disableUpdateNaggeneral.enableAutoUpdateZu einer einzigen Einstellung zusammengefasst
disableLoadingPhrasesui.accessibility.enableLoadingPhrases
disableFuzzySearchcontext.fileFiltering.enableFuzzySearch
disableCacheControlmodel.generationConfig.enableCacheControl
Note

Invertierung von Boolean-Werten: Bei der Migration werden Boolean-Werte invertiert (z. B. wird disableAutoUpdate: true zu enableAutoUpdate: false).

Zusammenführungsrichtlinie für disableAutoUpdate und disableUpdateNag

Wenn beide veralteten Einstellungen mit unterschiedlichen Werten vorhanden sind, folgt die Migration dieser Richtlinie: Wenn entweder disableAutoUpdate oder disableUpdateNag auf true gesetzt ist, wird enableAutoUpdate auf false gesetzt:

disableAutoUpdatedisableUpdateNagMigriertes enableAutoUpdate
falsefalsetrue
falsetruefalse
truefalsefalse
truetruefalse

Verfügbare Einstellungen in settings.json

Die Einstellungen sind in Kategorien organisiert. Die meisten Einstellungen sollten innerhalb ihres entsprechenden Top-Level-Kategorieobjekts in deiner settings.json-Datei platziert werden. Einige Kompatibilitätseinstellungen, wie proxy, sind Top-Level-Keys.

top-level

SettingTypeBeschreibungDefault
proxystringProxy-URL für CLI-HTTP-Anfragen. Priorität: --proxy > proxy in settings.json > HTTPS_PROXY / https_proxy / HTTP_PROXY / http_proxy Umgebungsvariablen.undefined

general

SettingTypeBeschreibungDefault
general.preferredEditorstringDer bevorzugte Editor zum Öffnen von Dateien.undefined
general.vimModebooleanVim-Tastenkürzel aktivieren.false
general.enableAutoUpdatebooleanAutomatische Update-Prüfungen und -Installationen beim Start aktivieren.true
general.showSessionRecapbooleanZeigt automatisch eine einzeilige Zusammenfassung („Wo du aufgehört hast”) an, wenn du nach einer Pause zum Terminal zurückkehrst. Standardmäßig deaktiviert. Verwende /recap, um es manuell auszulösen, unabhängig von dieser Einstellung.false
general.sessionRecapAwayThresholdMinutesnumberMinuten, die das Terminal unscharf sein muss, bevor beim Fokussieren automatisch eine Zusammenfassung angezeigt wird. Wird nur verwendet, wenn showSessionRecap aktiviert ist.5
general.gitCoAuthorbooleanFügt Git-Commit-Nachrichten automatisch einen Co-authored-by-Trailer hinzu, wenn Commits über Qwen Code erstellt werden.true
general.checkpointing.enabledbooleanSitzungs-Checkpointing zur Wiederherstellung aktivieren.false
general.defaultFileEncodingstringStandardkodierung für neue Dateien. Verwende "utf-8" (Standard) für UTF-8 ohne BOM oder "utf-8-bom" für UTF-8 mit BOM. Ändere dies nur, wenn dein Projekt explizit BOM erfordert."utf-8"

output

SettingTypeBeschreibungDefaultMögliche Werte
output.formatstringDas Format der CLI-Ausgabe."text""text", "json"

ui

SettingTypeBeschreibungDefault
ui.themestringDas Farbthema für die UI. Siehe Themes für verfügbare Optionen.undefined
ui.customThemesobjectBenutzerdefinierte Themendefinitionen.{}
ui.statusLineobjectBenutzerdefinierte Konfiguration der Statusleiste. Ein Shell-Befehl, dessen Ausgabe im linken Bereich der Fußzeile angezeigt wird. Siehe Status Line.undefined
ui.hideWindowTitlebooleanDie Fenstertitelleiste ausblenden.false
ui.hideTipsbooleanAlle Tipps (Start- und Antwort-Tipps) in der UI ausblenden. Siehe Contextual Tips.false
ui.hideBannerbooleanDas Anwendungsbanner ausblenden.false
ui.hideFooterbooleanDie Fußzeile in der UI ausblenden.false
ui.showMemoryUsagebooleanSpeicherverbrauchsinformationen in der UI anzeigen.false
ui.showLineNumbersbooleanZeilennummern in Codeblöcken der CLI-Ausgabe anzeigen.true
ui.showCitationsbooleanQuellenangaben für generierten Text im Chat anzeigen.true
ui.compactModebooleanTool-Ausgaben und Denkprozesse für eine übersichtlichere Ansicht ausblenden. Umschaltbar mit Ctrl+O während einer Sitzung oder über das Einstellungsdialogfeld. Tool-Genehmigungsaufforderungen werden auch im Kompaktmodus nie ausgeblendet. Die Einstellung bleibt über Sitzungen hinweg erhalten.false
ui.shellOutputMaxLinesnumberMaximale Anzahl an Shell-Ausgabezeilen, die inline angezeigt werden. Setze auf 0, um das Limit zu deaktivieren und die vollständige Ausgabe anzuzeigen. Ausgeblendete Zeilen werden über den +N lines-Indikator angezeigt. Fehler, vom Benutzer initiierte Befehle mit !-Präfix, Bestätigungs-Tools und fokussierte eingebettete Shells zeigen immer die vollständige Ausgabe.5
enableWelcomeBackbooleanWillkommens-Dialog anzeigen, wenn du zu einem Projekt mit Konversationsverlauf zurückkehrst. Wenn aktiviert, erkennt Qwen Code automatisch, ob du zu einem Projekt mit einer zuvor generierten Projektzusammenfassung (.qwen/PROJECT_SUMMARY.md) zurückkehrst, und zeigt einen Dialog an, der es dir ermöglicht, die vorherige Konversation fortzusetzen oder neu zu beginnen. Wenn du Neue Chat-Sitzung starten wählst, wird diese Wahl für das aktuelle Projekt gespeichert, bis sich die Projektzusammenfassung ändert. Dieses Feature integriert sich mit dem /summary-Befehl und dem Bestätigungsdialog beim Beenden.true
ui.accessibility.enableLoadingPhrasesbooleanLade-Phrasen aktivieren (zur Barrierefreiheit deaktivieren).true
ui.accessibility.screenReaderbooleanAktiviert den Screenreader-Modus, der die TUI für eine bessere Kompatibilität mit Screenreadern anpasst.false
ui.customWittyPhrasesarray of stringsEine Liste benutzerdefinierter Phrasen, die während Ladezuständen angezeigt werden. Wenn angegeben, durchläuft die CLI diese Phrasen anstelle der Standardphrasen.[]
ui.enableFollowupSuggestionsbooleanFollow-up-Vorschläge aktivieren, die vorhersagen, was du als Nächstes eingeben möchtest, nachdem das Modell geantwortet hat. Vorschläge erscheinen als Ghost-Text und können mit Tab, Enter oder dem rechten Pfeiltaste angenommen werden.true
ui.enableCacheSharingbooleanCache-aware geforkte Abfragen für die Vorschlagsgenerierung verwenden. Reduziert Kosten bei Providern, die Prefix-Caching unterstützen (experimentell).true
ui.enableSpeculationbooleanAkzeptierte Vorschläge spekulativ vor der Übermittlung ausführen. Ergebnisse erscheinen sofort bei Annahme (experimentell).false
experimental.emitToolUseSummariesbooleanKurze LLM-basierte Labels generieren, die jeden Tool-Call-Batch zusammenfassen. Siehe Tool-Use Summaries. Erfordert, dass fastModel konfiguriert ist; wird andernfalls stillschweigend ignoriert. Kann pro Sitzung mit QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 oder =1 überschrieben werden.true

ide

SettingTypeBeschreibungDefault
ide.enabledbooleanIDE-Integrationsmodus aktivieren.false
ide.hasSeenNudgebooleanOb der Benutzer den Hinweis zur IDE-Integration bereits gesehen hat.false

privacy

SettingTypeBeschreibungDefault
privacy.usageStatisticsEnabledbooleanSammlung von Nutzungsstatistiken aktivieren.true

model

SettingTypeBeschreibungDefault
model.namestringDas für Konversationen zu verwendende Qwen-Modell.undefined
model.maxSessionTurnsnumberMaximale Anzahl an Benutzer-/Modell-/Tool-Turns, die in einer Sitzung gespeichert werden. -1 bedeutet unbegrenzt.-1
model.generationConfigobjectErweiterte Overrides, die an den zugrunde liegenden Content-Generator übergeben werden. Unterstützt Request-Controls wie timeout, maxRetries, enableCacheControl, splitToolMedia (setze true für strikt OpenAI-kompatible Server wie LM Studio, die nicht-textuelle Inhalte in role: "tool"-Nachrichten ablehnen – teilt Medien in eine folgende User-Nachricht auf), contextWindowSize (überschreibt die Context-Window-Größe des Modells), modalities (überschreibt automatisch erkannte Eingabemodalitäten), customHeaders (benutzerdefinierte HTTP-Header für API-Anfragen), extra_body (zusätzliche Body-Parameter nur für OpenAI-kompatible API-Anfragen) und reasoning ({ effort: 'low' | 'medium' | 'high' | 'max', budget_tokens?: number } zur Steuerung der Denkintensität, oder false zum Deaktivieren; 'max' ist eine DeepSeek-Erweiterung – siehe Reasoning / thinking configuration für Provider-spezifisches Verhalten. Hinweis: Wenn samplingParams bei einem OpenAI-kompatiblen Provider gesetzt ist, übergibt die Pipeline diese Keys unverändert und das separate Top-Level-reasoning-Feld wird verworfen – verwende in diesem Fall stattdessen reasoning_effort innerhalb von samplingParams (oder extra_body)), sowie Feinabstimmungs-Parameter unter samplingParams (z. B. temperature, top_p, max_tokens). Lasse es unset, um auf Provider-Standards zurückzugreifen.undefined
model.chatCompression.contextPercentageThresholdnumberSetzt den Schwellenwert für die Chatverlaufskomprimierung als Prozentsatz des gesamten Token-Limits des Modells. Dies ist ein Wert zwischen 0 und 1, der sowohl für die automatische Komprimierung als auch für den manuellen /compress-Befehl gilt. Ein Wert von 0.6 löst beispielsweise die Komprimierung aus, wenn der Chatverlauf 60 % des Token-Limits überschreitet. Verwende 0, um die Komprimierung vollständig zu deaktivieren.0.7
model.skipNextSpeakerCheckbooleanDie Prüfung des nächsten Sprechers überspringen.false
model.skipLoopDetectionbooleanDeaktiviert Loop-Detection-Prüfungen. Die Loop-Detection verhindert Endlosschleifen in KI-Antworten, kann aber False Positives erzeugen, die legitime Workflows unterbrechen. Aktiviere diese Option, wenn du häufige False-Positive-Unterbrechungen durch die Loop-Detection erlebst.false
model.skipStartupContextbooleanÜberspringt das Senden des Startup-Workspace-Kontexts (Umgebungszusammenfassung und Bestätigung) zu Beginn jeder Sitzung. Aktiviere dies, wenn du den Kontext manuell bereitstellen oder Tokens beim Start sparen möchtest.false
model.enableOpenAILoggingbooleanAktiviert das Logging von OpenAI-API-Aufrufen zum Debuggen und Analysieren. Wenn aktiviert, werden API-Anfragen und -Antworten in JSON-Dateien protokolliert.false
model.openAILoggingDirstringBenutzerdefinierter Verzeichnispfad für OpenAI-API-Logs. Wenn nicht angegeben, wird standardmäßig logs/openai im aktuellen Arbeitsverzeichnis verwendet. Unterstützt absolute Pfade, relative Pfade (aufgelöst vom aktuellen Arbeitsverzeichnis) und ~-Erweiterung (Home-Verzeichnis).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 } } } }

max_tokens (adaptive Output-Tokens):

Wenn samplingParams.max_tokens nicht gesetzt ist, verwendet Qwen Code eine adaptive Output-Token-Strategie zur Optimierung der GPU-Ressourcennutzung:

  1. Anfragen starten mit einem Standardlimit von 8K Output-Tokens
  2. Wenn die Antwort abgeschnitten wird (das Modell erreicht das Limit), wiederholt Qwen Code die Anfrage automatisch mit 64K Tokens
  3. Die Teil-Ausgabe wird verworfen und durch die vollständige Antwort aus dem Retry ersetzt

Dies ist für Benutzer transparent – du siehst möglicherweise kurz einen Retry-Indikator, wenn eine Eskalation erfolgt. Da 99 % der Antworten unter 5K Tokens liegen, erfolgt der Retry selten (<1 % der Anfragen).

Um dieses Verhalten zu überschreiben, setze entweder samplingParams.max_tokens in deinen Einstellungen oder verwende die Umgebungsvariable QWEN_CODE_MAX_OUTPUT_TOKENS.

contextWindowSize:

Überschreibt die standardmäßige Context-Window-Größe für das ausgewählte Modell. Qwen Code bestimmt die Context-Window-Größe anhand interner Standards basierend auf Modellnamens-Matching, mit einem konstanten Fallback-Wert. Verwende diese Einstellung, wenn das effektive Context-Limit eines Providers von Qwen Codes Standard abweicht. Dieser Wert definiert die angenommene maximale Context-Kapazität des Modells, nicht ein Token-Limit pro Anfrage.

modalities:

Überschreibt die automatisch erkannten Eingabemodalitäten für das ausgewählte Modell. Qwen Code erkennt automatisch unterstützte Modalitäten (Bild, PDF, Audio, Video) basierend auf Modellnamens-Pattern-Matching. Verwende diese Einstellung, wenn die Auto-Erkennung falsch ist – z. B. um pdf für ein Modell zu aktivieren, das es unterstützt, aber nicht erkannt wird. Format: { "image": true, "pdf": true, "audio": true, "video": true }. Lasse einen Key weg oder setze ihn auf false für nicht unterstützte Typen.

customHeaders:

Ermöglicht das Hinzufügen benutzerdefinierter HTTP-Header zu allen API-Anfragen. Dies ist nützlich für Request-Tracing, Monitoring, API-Gateway-Routing oder wenn verschiedene Modelle unterschiedliche Header benötigen. Wenn customHeaders in modelProviders[].generationConfig.customHeaders definiert ist, wird es direkt verwendet; andernfalls werden Header aus model.generationConfig.customHeaders verwendet. Es erfolgt kein Merging zwischen den beiden Ebenen.

Das extra_body-Feld ermöglicht das Hinzufügen benutzerdefinierter Parameter zum Request-Body, der an die API gesendet wird. Dies ist nützlich für Provider-spezifische Optionen, die nicht von den Standardkonfigurationsfeldern abgedeckt werden. Hinweis: Dieses Feld wird nur für OpenAI-kompatible Provider (openai, qwen-oauth) unterstützt. Es wird für Anthropic- und Gemini-Provider ignoriert. Wenn extra_body in modelProviders[].generationConfig.extra_body definiert ist, wird es direkt verwendet; andernfalls werden Werte aus model.generationConfig.extra_body verwendet.

Beispiele für model.openAILoggingDir:

  • "~/qwen-logs" - Logs im ~/qwen-logs-Verzeichnis
  • "./custom-logs" - Logs in ./custom-logs relativ zum aktuellen Verzeichnis
  • "/tmp/openai-logs" - Logs im absoluten Pfad /tmp/openai-logs

fastModel

SettingTypeBeschreibungDefault
fastModelstringModell zur Generierung von Prompt-Vorschlägen und spekulativer Ausführung. Lasse es leer, um das Hauptmodell zu verwenden. Ein kleineres/schnelleres Modell (z. B. qwen3-coder-flash) reduziert Latenz und Kosten. Kann auch über /model --fast gesetzt werden.""

context

SettingTypeBeschreibungDefault
context.fileNamestring or array of stringsDer Name der Kontextdatei(en).undefined
context.importFormatstringDas Format, das beim Importieren von Memory verwendet werden soll.undefined
context.includeDirectoriesarrayZusätzliche Verzeichnisse, die in den Workspace-Kontext aufgenommen werden sollen. Gibt ein Array zusätzlicher absoluter oder relativer Pfade an, die in den Workspace-Kontext aufgenommen werden. 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 --include-directories-Befehlszeilenflag kombiniert werden.[]
context.loadFromIncludeDirectoriesbooleanSteuert das Verhalten des /memory refresh-Befehls. Wenn auf true gesetzt, sollten QWEN.md-Dateien aus allen hinzugefügten Verzeichnissen geladen werden. Wenn auf false gesetzt, sollte QWEN.md nur aus dem aktuellen Verzeichnis geladen werden.false
context.fileFiltering.respectGitIgnoreboolean.gitignore-Dateien bei der Suche beachten.true
context.fileFiltering.respectQwenIgnoreboolean.qwenignore-Dateien bei der Suche beachten.true
context.fileFiltering.enableRecursiveFileSearchbooleanAktiviert die rekursive Suche nach Dateinamen im aktuellen Tree beim Vervollständigen von @-Präfixen im Prompt.true
context.fileFiltering.enableFuzzySearchbooleanWenn true, aktiviert Fuzzy-Suchfunktionen bei der Dateisuche. Setze auf false, um die Leistung bei Projekten mit einer großen Anzahl von Dateien zu verbessern.true
context.clearContextOnIdle.toolResultsThresholdMinutesnumberMinuten Inaktivität, bevor alter Tool-Result-Content gelöscht wird. Verwende -1 zum Deaktivieren.60
context.clearContextOnIdle.toolResultsNumToKeepnumberAnzahl der zuletzt kompaktierbaren Tool-Results, die beim Löschen erhalten bleiben. Minimum ist 1.5

Fehlerbehebung bei der Dateisuchleistung

Wenn du Leistungsprobleme bei der Dateisuche (z. B. mit @-Vervollständigungen) hast, insbesondere in Projekten mit sehr vielen Dateien, kannst du folgende Schritte in empfohlener Reihenfolge ausprobieren:

  1. Verwende .qwenignore: Erstelle eine .qwenignore-Datei im Projektstamm, um Verzeichnisse auszuschließen, die viele Dateien enthalten, auf die du nicht verweisen musst (z. B. Build-Artefakte, Logs, node_modules). Die Reduzierung der insgesamt durchsuchten Dateien ist der effektivste Weg, die Leistung zu verbessern.
  2. Deaktiviere Fuzzy Search: Wenn das Ignorieren von Dateien nicht ausreicht, kannst du die Fuzzy-Suche deaktivieren, indem du enableFuzzySearch in deiner settings.json-Datei auf false setzt. Dies verwendet einen einfacheren, nicht-fuzzy Matching-Algorithmus, der schneller sein kann.
  3. Deaktiviere rekursive Dateisuche: Als letzten Ausweg kannst du die rekursive Dateisuche vollständig deaktivieren, indem du enableRecursiveFileSearch auf false setzt. Dies ist die schnellste Option, da sie einen rekursiven Scan deines Projekts vermeidet. Allerdings musst du dann bei @-Vervollständigungen den vollständigen Pfad zu Dateien eingeben.

tools

SettingTypeBeschreibungDefaultHinweise
tools.sandboxboolean or stringSandbox-Ausführungsumgebung (kann ein Boolean oder ein Pfad-String sein).undefined
tools.sandboxImagestringSandbox-Image-URI, der von Docker/Podman verwendet wird, wenn --sandbox-image und QWEN_SANDBOX_IMAGE nicht gesetzt sind.undefined
tools.shell.enableInteractiveShellbooleanVerwende node-pty für eine interaktive Shell-Erfahrung. Fallback auf child_process bleibt bestehen.false
tools.corearray of stringsVeraltet. Wird in der nächsten Version entfernt. Verwende stattdessen permissions.allow + permissions.deny. Beschränkt integrierte Tools auf eine Allowlist. Alle Tools, die nicht in der Liste sind, werden deaktiviert.undefined
tools.excludearray of stringsVeraltet. Verwende stattdessen permissions.deny. Tool-Namen, die von der Discovery ausgeschlossen werden sollen. Wird beim ersten Laden automatisch in das permissions-Format migriert.undefined
tools.allowedarray of stringsVeraltet. Verwende stattdessen permissions.allow. Tool-Namen, die den Bestätigungsdialog umgehen. Wird beim ersten Laden automatisch in das permissions-Format migriert.undefined
tools.approvalModestringSetzt den standardmäßigen Genehmigungsmodus für die Tool-Nutzung.defaultMögliche Werte: plan (nur analysieren, keine Dateien ändern oder Befehle ausführen), default (Genehmigung vor Dateiänderungen oder Shell-Befehlen erforderlich), auto-edit (Dateiänderungen automatisch genehmigen), yolo (alle Tool-Aufrufe automatisch genehmigen)
tools.discoveryCommandstringBefehl, der zur Tool-Discovery ausgeführt wird.undefined
tools.callCommandstringDefiniert einen benutzerdefinierten Shell-Befehl zum Aufrufen eines spezifischen Tools, das mit tools.discoveryCommand entdeckt wurde. Der Shell-Befehl muss folgende Kriterien erfüllen: Er muss den Funktions-name (genau wie in der Funktionsdeklaration ) als erstes Kommandozeilenargument übernehmen. Er muss 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.useRipgrepbooleanVerwende ripgrep für die Dateiinhaltsuche anstelle der Fallback-Implementierung. Bietet schnellere Suchleistung.true
tools.useBuiltinRipgrepbooleanVerwende das gebündelte ripgrep-Binary. Wenn auf false gesetzt, wird stattdessen der systemweite rg-Befehl verwendet. Diese Einstellung ist nur wirksam, wenn tools.useRipgrep auf true gesetzt ist.true
tools.truncateToolOutputThresholdnumberKürzt die Tool-Ausgabe, wenn sie größer als diese Anzahl an Zeichen ist. Gilt für Shell-, Grep-, Glob-, ReadFile- und ReadManyFiles-Tools.25000Neustart erforderlich: Ja
tools.truncateToolOutputLinesnumberMaximale Anzahl an Zeilen oder Einträgen, die beim Kürzen der Tool-Ausgabe beibehalten werden. Gilt für Shell-, Grep-, Glob-, ReadFile- und ReadManyFiles-Tools.1000Neustart erforderlich: Ja
Note

Migration von tools.core / tools.exclude / tools.allowed: Diese veralteten Einstellungen sind deprecated und werden beim ersten Laden automatisch in das neue permissions-Format migriert. Konfiguriere permissions.allow / permissions.deny bevorzugt direkt. Verwende /permissions, um Regeln interaktiv zu verwalten.

memory

SettingTypeBeschreibungDefault
memory.enableManagedAutoMemorybooleanHintergrund-Extraktion von Memories aus Konversationen aktivieren.true
memory.enableManagedAutoDreambooleanAutomatische Konsolidierung (Deduplizierung und Bereinigung) gesammelter Memories aktivieren.false

Siehe Memory für Details zur Funktionsweise von Auto-Memory und zur Verwendung der /memory-, /remember- und /dream-Befehle.

permissions

Das Berechtigungssystem bietet feingranulare Kontrolle darüber, welche Tools ausgeführt werden können, welche eine Bestätigung erfordern und welche blockiert sind.

Entscheidungspriorität (höchste zuerst): deny > ask > allow > (Standard/interaktiver Modus)

Die erste passende Regel gewinnt. Regeln verwenden das Format "ToolName" oder "ToolName(specifier)".

SettingTypeBeschreibungDefault
permissions.allowarray of stringsRegeln für automatisch genehmigte Tool-Aufrufe (keine Bestätigung erforderlich). Wird über alle Scopes hinweg zusammengeführt (Benutzer + Projekt + System).undefined
permissions.askarray of stringsRegeln für Tool-Aufrufe, die immer eine Benutzerbestätigung erfordern. Hat Vorrang vor allow.undefined
permissions.denyarray of stringsRegeln für blockierte Tool-Aufrufe. Höchste Priorität – überschreibt sowohl allow als auch ask.undefined

Tool-Namen-Aliase (alle diese funktionieren in Regeln):

AliasCanonical toolHinweise
Bash, Shellrun_shell_command
Read, ReadFileread_fileMeta-Kategorie – siehe unten
Edit, EditFileeditMeta-Kategorie – siehe unten
Write, WriteFilewrite_file
Grep, SearchFilesgrep_search
Glob, FindFilesglob
ListFileslist_directory
WebFetchweb_fetch
Agenttask
Skillskill

Meta-Kategorien:

Einige Regelnamen decken automatisch mehrere Tools ab:

RegelnameAbgedeckte Tools
Readread_file, grep_search, glob, list_directory
Editedit, write_file

[!important] Read(/path/**) matcht alle vier Read-Tools (Dateilesen, Grep, Glob und Verzeichnisauflistung). Um nur das Dateilesen einzuschränken, verwende ReadFile(/path/**) oder read_file(/path/**).

Beispiele für Regelsyntax:

RegelBedeutung
"Bash"Alle Shell-Befehle
"Bash(git *)"Shell-Befehle, die mit git beginnen (Wortgrenze: NICHT gitk)
"Bash(git push *)"Shell-Befehle wie git push origin main
"Bash(npm run *)"Jedes npm run-Skript
"Read"Alle Datei-Leseoperationen (lesen, grep, glob, auflisten)
"Read(./secrets/**)"Lese jede Datei unter ./secrets/ rekursiv
"Edit(/src/**/*.ts)"Bearbeite TypeScript-Dateien unter Projektstamm /src/
"WebFetch(api.example.com)"Hole von api.example.com und allen seinen Subdomains
"mcp__puppeteer"Alle Tools vom puppeteer MCP-Server

Pfad-Präfixe für Patterns:

PräfixBedeutungBeispiel
//Absoluter Pfad vom Dateisystem-Root//etc/passwd
~/Relativ zum Home-Verzeichnis~/Documents/*.pdf
/Relativ zum Projektstamm/src/**/*.ts
./Relativ zum aktuellen Arbeitsverzeichnis./secrets/**
(keiner)Gleichbedeutend mit ./secrets/**

Verhinderung von Shell-Befehls-Umgehungen:

Berechtigungsregeln für Read, Edit und WebFetch werden auch erzwungen, wenn der Agent äquivalente Shell-Befehle ausführt. Wenn beispielsweise Read(./.env) in deny steht, kann der Agent dies nicht über cat .env in einem Shell-Befehl umgehen. Unterstützte Shell-Befehle umfassen cat, grep, curl, wget, cp, mv, rm, chmod und viele mehr. Unbekannte/sichere Befehle (z. B. git) werden von Datei-/Netzwerkregeln nicht beeinflusst.

Migration von veralteten Einstellungen:

Veraltete EinstellungÄquivalente permissions-RegelHinweise
tools.allowedpermissions.allowWird beim ersten Laden automatisch migriert
tools.excludepermissions.denyWird beim ersten Laden automatisch migriert
tools.corepermissions.allow (Allowlist)Wird automatisch migriert; nicht aufgeführte Tools werden auf Registry-Ebene deaktiviert

Beispielkonfiguration:

{ "permissions": { "allow": ["Bash(git *)", "Bash(npm run *)", "Read(//Users/alice/code/**)"], "ask": ["Bash(git push *)", "Edit"], "deny": ["Bash(rm -rf *)", "Read(.env)", "WebFetch(malicious.com)"] } }

[!tip] Verwende /permissions in der interaktiven CLI, um Regeln anzuzeigen, hinzuzufügen und zu entfernen, ohne settings.json direkt zu bearbeiten.

slashCommands

Steuert, welche Slash-Befehle in der CLI verfügbar sind. Nützlich zum Einschränken der Befehlsoberfläche in Multi-Tenant- oder Enterprise-Deployments.

SettingTypeBeschreibungDefault
slashCommands.disabledarray of stringsSlash-Befehlsnamen, die ausgeblendet und nicht ausgeführt werden sollen. Case-insensitiv gegen den finalen Befehlsnamen abgeglichen (bei Extension-Befehlen ist dies die disambiguierte Form, z. B. myext.deploy). Wird als Union über alle Scopes zusammengeführt, sodass Workspace-Einstellungen Einträge aus Benutzer- oder Systemeinstellungen hinzufügen, aber nicht entfernen können.undefined

Die gleiche Denylist kann auch über das --disabled-slash-commands-CLI-Flag (kommagetrennt oder wiederholt) und die QWEN_DISABLED_SLASH_COMMANDS-Umgebungsvariable bereitgestellt werden; Werte aus allen drei Quellen werden vereinigt.

Beispiel — Eingebaute Befehle für ein sandboxed Deployment sperren:

{ "slashCommands": { "disabled": ["auth", "mcp", "extensions", "ide", "quit"] } }

Mit diesen Werten in einer systemweiten settings.json (/etc/qwen-code/settings.json oder QWEN_CODE_SYSTEM_SETTINGS_PATH) können Benutzer die Denylist nicht aus ihrem eigenen Scope heraus verkleinern, und die deaktivierten Befehle erscheinen weder in der Autovervollständigung noch werden sie bei Eingabe ausgeführt.

[!note] Diese Einstellung betrifft nur Slash-Befehle (z. B. /auth, /mcp). Sie hat keinen Einfluss auf Tool-Berechtigungen – siehe dafür permissions.deny. Sie fängt auch keine Tastenkürzel wie Ctrl+C oder Esc ab.

mcp

SettingTypeBeschreibungDefault
mcp.serverCommandstringBefehl zum Starten eines MCP-Servers.undefined
mcp.allowedarray of stringsEine Allowlist von MCP-Servern, die erlaubt sind. Ermöglicht die Angabe einer Liste von MCP-Servernamen, die dem Modell zur Verfügung gestellt werden sollen. Dies kann verwendet werden, um die Menge der zu verbindenden MCP-Server einzuschränken. Beachte, dass dies ignoriert wird, wenn --allowed-mcp-server-names gesetzt ist.undefined
mcp.excludedarray of stringsEine Denylist von MCP-Servern, die ausgeschlossen werden sollen. Ein Server, der sowohl in mcp.excluded als auch in mcp.allowed aufgeführt ist, wird ausgeschlossen. Beachte, dass dies ignoriert wird, wenn --allowed-mcp-server-names gesetzt ist.undefined
Note

Sicherheitshinweis für MCP-Server: Diese Einstellungen verwenden einfaches String-Matching auf MCP-Servernamen, die geändert werden können. Wenn du als Systemadministrator verhindern möchtest, dass Benutzer dies umgehen, konfiguriere die mcpServers auf Ebene der Systemeinstellungen, sodass Benutzer keine eigenen MCP-Server konfigurieren können. Dies sollte nicht als absolut sicherer Sicherheitsmechanismus betrachtet werden.

lsp

[!warning] Experimentelles Feature: LSP-Unterstützung ist derzeit experimentell und standardmäßig deaktiviert. Aktiviere sie mit dem --experimental-lsp-Befehlszeilenflag.

Das Language Server Protocol (LSP) bietet Code-Intelligence-Features wie Go-to-Definition, Referenzen finden und Diagnosen.

Die LSP-Serverkonfiguration erfolgt über .lsp.json-Dateien in deinem Projektstammverzeichnis, nicht über settings.json. Siehe die LSP-Dokumentation für Konfigurationsdetails und Beispiele.

security

SettingTypeBeschreibungDefault
security.folderTrust.enabledbooleanEinstellung zur Verfolgung, ob Folder Trust aktiviert ist.false
security.auth.selectedTypestringDer aktuell ausgewählte Authentifizierungstyp.undefined
security.auth.enforcedTypestringDer erforderliche Authentifizierungstyp (nützlich für Unternehmen).undefined
security.auth.useExternalbooleanOb ein externer Authentifizierungsfluss verwendet werden soll.undefined

advanced

SettingTypeBeschreibungDefault
advanced.autoConfigureMemorybooleanNode.js-Speicherlimits automatisch konfigurieren.false
advanced.dnsResolutionOrderstringDie DNS-Auflösungsreihenfolge.undefined
advanced.excludedEnvVarsarray of stringsUmgebungsvariablen, die vom Projektkontext ausgeschlossen werden sollen. Gibt Umgebungsvariablen an, die nicht aus projektbezogenen .env-Dateien geladen werden sollen. Dies verhindert, dass projektspezifische Umgebungsvariablen (wie DEBUG=true) das CLI-Verhalten stören. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen.["DEBUG","DEBUG_MODE"]
advanced.bugCommandobjectKonfiguration für den Bug-Report-Befehl. Überschreibt die Standard-URL für den /bug-Befehl. Eigenschaften: urlTemplate (String): Eine URL, die {title}- und {info}-Platzhalter enthalten kann. Beispiel: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }undefined

mcpServers

Konfiguriert Verbindungen zu einem oder mehreren Model-Context Protocol (MCP)-Servern zum Entdecken und Verwenden benutzerdefinierter Tools. Qwen Code versucht, eine Verbindung zu jedem konfigurierten MCP-Server herzustellen, um verfügbare Tools zu entdecken. Wenn mehrere MCP-Server ein Tool mit demselben Namen bereitstellen, werden die Tool-Namen mit dem Server-Alias, den du in der Konfiguration definiert hast, präfixiert (z. B. serverAlias__actualToolName), um Konflikte zu vermeiden. Beachte, dass das System bestimmte Schema-Eigenschaften aus MCP-Tool-Definitionen zur Kompatibilität entfernen kann. Mindestens einer der Werte command, url oder httpUrl muss angegeben werden. Wenn mehrere angegeben sind, ist die Prioritätsreihenfolge httpUrl, dann url, dann command.

PropertyTypeBeschreibungOptional
mcpServers.<SERVER_NAME>.commandstringDer Befehl zum Starten des MCP-Servers über Standard-I/O.Ja
mcpServers.<SERVER_NAME>.argsarray of stringsArgumente, die an den Befehl übergeben werden.Ja
mcpServers.<SERVER_NAME>.envobjectUmgebungsvariablen, die für den Serverprozess gesetzt werden sollen.Ja
mcpServers.<SERVER_NAME>.cwdstringDas Arbeitsverzeichnis, in dem der Server gestartet wird.Ja
mcpServers.<SERVER_NAME>.urlstringDie URL eines MCP-Servers, der Server-Sent Events (SSE) für die Kommunikation verwendet.Ja
mcpServers.<SERVER_NAME>.httpUrlstringDie URL eines MCP-Servers, der streamable HTTP für die Kommunikation verwendet.Ja
mcpServers.<SERVER_NAME>.headersobjectEine Map von HTTP-Headern, die mit Anfragen an url oder httpUrl gesendet werden.Ja
mcpServers.<SERVER_NAME>.timeoutnumberTimeout in Millisekunden für Anfragen an diesen MCP-Server.Ja
mcpServers.<SERVER_NAME>.trustbooleanVertraue diesem Server und umgehe alle Tool-Call-Bestätigungen.Ja
mcpServers.<SERVER_NAME>.descriptionstringEine kurze Beschreibung des Servers, die ggf. für Anzeigezwecke verwendet wird.Ja
mcpServers.<SERVER_NAME>.includeToolsarray of stringsListe der Tool-Namen, die von diesem MCP-Server eingeschlossen werden sollen. Wenn angegeben, sind nur die hier aufgeführten Tools von diesem Server verfügbar (Allowlist-Verhalten). Wenn nicht angegeben, sind standardmäßig alle Tools des Servers aktiviert.Ja
mcpServers.<SERVER_NAME>.excludeToolsarray of stringsListe der Tool-Namen, die von diesem MCP-Server ausgeschlossen werden sollen. Hier aufgeführte Tools sind für das Modell nicht verfügbar, auch wenn sie vom Server bereitgestellt werden. Hinweis: excludeTools hat Vorrang vor includeTools – wenn ein Tool in beiden Listen steht, wird es ausgeschlossen.Ja

telemetry

Konfiguriert Logging und Metrik-Sammlung für Qwen Code. Weitere Informationen siehe telemetry.

SettingTypeBeschreibungDefault
telemetry.enabledbooleanOb Telemetry aktiviert ist.
telemetry.targetstringDas Ziel für gesammelte Telemetry. Unterstützte Werte sind local und gcp.
telemetry.otlpEndpointstringDer Endpunkt für den OTLP Exporter.
telemetry.otlpProtocolstringDas Protokoll für den OTLP Exporter (grpc oder http).
telemetry.logPromptsbooleanOb der Inhalt von Benutzer-Prompts in die Logs aufgenommen werden soll.
telemetry.outfilestringDie Datei, in die Telemetry geschrieben wird, wenn target auf local gesetzt ist.
telemetry.useCollectorbooleanOb 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, neu ab v0.3.0:

{ "proxy": "http://localhost:7890", "general": { "vimMode": true, "preferredEditor": "code" }, "ui": { "theme": "GitHub", "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", "sandboxImage": "ghcr.io/qwenlm/qwen-code:0.14.1", "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 dir ausgeführten Shell-Befehle. Um Konflikte zwischen verschiedenen Projekten zu vermeiden, wird dieser Verlauf in einem projektspezifischen Verzeichnis innerhalb deines Benutzer-Home-Ordners gespeichert.

  • Speicherort: ~/.qwen/tmp/<project_hash>/shell_history
    • <project_hash> ist ein eindeutiger Identifier, der aus dem Root-Pfad deines Projekts generiert wird.
    • Der Verlauf wird in einer Datei namens shell_history gespeichert.

Umgebungsvariablen & .env-Dateien

Umgebungsvariablen sind eine gängige Methode zur Konfiguration von Anwendungen, insbesondere für sensible Informationen (wie Tokens) oder für Einstellungen, die sich zwischen Umgebungen ändern können.

Qwen Code kann Umgebungsvariablen automatisch aus .env-Dateien laden. Für authentifizierungsbezogene Variablen (wie OPENAI_*) und den empfohlenen .qwen/.env-Ansatz siehe Authentication.

Tip

Ausschluss von Umgebungsvariablen: Einige Umgebungsvariablen (wie DEBUG und DEBUG_MODE) werden standardmäßig automatisch aus Projekt-.env-Dateien ausgeschlossen, um Störungen des CLI-Verhaltens zu verhindern. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen. Du kannst dieses Verhalten mit der advanced.excludedEnvVars-Einstellung in deiner settings.json-Datei anpassen.

Tabelle der Umgebungsvariablen

VariableBeschreibungHinweise
QWEN_TELEMETRY_ENABLEDSetze auf true oder 1, um Telemetry zu aktivieren. Jeder andere Wert wird als Deaktivierung behandelt.Überschreibt die telemetry.enabled-Einstellung.
QWEN_TELEMETRY_TARGETSetzt das Telemetry-Ziel (local oder gcp).Überschreibt die telemetry.target-Einstellung.
QWEN_TELEMETRY_OTLP_ENDPOINTSetzt den OTLP-Endpunkt für Telemetry.Überschreibt die telemetry.otlpEndpoint-Einstellung.
QWEN_TELEMETRY_OTLP_PROTOCOLSetzt das OTLP-Protokoll (grpc oder http).Überschreibt die telemetry.otlpProtocol-Einstellung.
QWEN_TELEMETRY_LOG_PROMPTSSetze auf true oder 1, um das Logging von Benutzer-Prompts zu aktivieren oder deaktivieren. Jeder andere Wert wird als Deaktivierung behandelt.Überschreibt die telemetry.logPrompts-Einstellung.
QWEN_TELEMETRY_OUTFILESetzt den Dateipfad, in den Telemetry geschrieben wird, wenn das Ziel local ist.Überschreibt die telemetry.outfile-Einstellung.
QWEN_TELEMETRY_USE_COLLECTORSetze auf true oder 1, um die Verwendung eines externen OTLP-Collectors zu aktivieren oder deaktivieren. Jeder andere Wert wird als Deaktivierung behandelt.Überschreibt die telemetry.useCollector-Einstellung.
QWEN_SANDBOXAlternative zur sandbox-Einstellung in settings.json.Akzeptiert true, false, docker, podman oder einen benutzerdefinierten Befehls-String.
QWEN_SANDBOX_IMAGEÜberschreibt die Sandbox-Image-Auswahl für Docker/Podman.Hat Vorrang vor tools.sandboxImage.
SEATBELT_PROFILE(macOS-spezifisch) Wechselt das Seatbelt (sandbox-exec)-Profil auf macOS.permissive-open: (Standard) Beschränkt Schreibzugriffe auf den Projektordner (und einige andere Ordner, siehe packages/cli/src/utils/sandbox-macos-permissive-open.sb), erlaubt aber andere Operationen. strict: Verwendet ein striktes Profil, das Operationen standardmäßig ablehnt. <profile_name>: Verwendet ein benutzerdefiniertes Profil. Um ein benutzerdefiniertes Profil zu definieren, erstelle eine Datei namens sandbox-macos-<profile_name>.sb im .qwen/-Verzeichnis deines Projekts (z. B. my-project/.qwen/sandbox-macos-custom.sb).
DEBUG oder DEBUG_MODE(häufig von zugrunde liegenden Bibliotheken oder der CLI selbst verwendet) Setze auf true oder 1, um ausführliches Debug-Logging zu aktivieren, was bei der Fehlerbehebung hilfreich sein kann.Hinweis: Diese Variablen werden standardmäßig automatisch aus Projekt-.env-Dateien ausgeschlossen, um Störungen des CLI-Verhaltens zu verhindern. Verwende .qwen/.env-Dateien, wenn du diese speziell für Qwen Code setzen musst.
NO_COLORSetze auf einen beliebigen Wert, um alle Farbausgaben in der CLI zu deaktivieren.
CLI_TITLESetze auf einen String, um den Titel der CLI anzupassen.
CODE_ASSIST_ENDPOINTGibt den Endpunkt für den Code-Assist-Server an.Dies ist nützlich für Entwicklung und Testing.
QWEN_CODE_MAX_OUTPUT_TOKENSÜberschreibt die standardmäßige maximale Anzahl an Output-Tokens pro Antwort. Wenn nicht gesetzt, verwendet Qwen Code eine adaptive Strategie: startet mit 8K Tokens und wiederholt automatisch mit 64K, wenn die Antwort abgeschnitten wird. Setze dies auf einen bestimmten Wert (z. B. 16000), um stattdessen ein festes Limit zu verwenden.Hat Vorrang vor dem gedeckelten Standard (8K), wird aber durch samplingParams.max_tokens in den Einstellungen überschrieben. Deaktiviert die automatische Eskalation, wenn gesetzt. Beispiel: export QWEN_CODE_MAX_OUTPUT_TOKENS=16000
QWEN_CODE_UNATTENDED_RETRYSetze auf true oder 1, um den persistenten Retry-Modus zu aktivieren. Wenn aktiviert, werden vorübergehende API-Kapazitätsfehler (HTTP 429 Rate Limit und 529 Overloaded) unbegrenzt mit exponentiellem Backoff (begrenzt auf 5 Minuten pro Retry) und Heartbeat-Keepalives alle 30 Sekunden auf stderr wiederholt.Entwickelt für CI/CD-Pipelines und Hintergrundautomatisierung, bei denen langlaufende Tasks vorübergehende API-Ausfälle überstehen sollen. Muss explizit gesetzt werden — CI=true allein aktiviert diesen Modus nicht. Siehe Headless Mode für Details. Beispiel: export QWEN_CODE_UNATTENDED_RETRY=1
QWEN_CODE_PROFILE_STARTUPSetze auf 1, um die Startup-Performance-Profiling zu aktivieren. Schreibt einen JSON-Timing-Report nach ~/.qwen/startup-perf/ mit Phasen-Dauern.Nur aktiv innerhalb des Sandbox-Child-Prozesses. Null Overhead, wenn nicht gesetzt. Beispiel: export QWEN_CODE_PROFILE_STARTUP=1

Befehlszeilenargumente

Argumente, die direkt beim Ausführen der CLI übergeben werden, können andere Konfigurationen für diese spezifische Sitzung überschreiben.

Für die Sandbox-Image-Auswahl gilt folgende Priorität: --sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > integriertes Standard-Image.

Tabelle der Befehlszeilenargumente

ArgumentAliasBeschreibungMögliche WerteHinweise
--model-mGibt das für diese Sitzung zu verwendende Qwen-Modell an.ModellnameBeispiel: npm start -- --model qwen3-coder-plus
--prompt-pWird verwendet, um einen Prompt direkt an den Befehl zu übergeben. Dies startet Qwen Code im nicht-interaktiven Modus.Dein Prompt-TextFür Scripting-Beispiele verwende das --output-format json-Flag, um strukturierte Ausgabe zu erhalten.
--prompt-interactive-iStartet eine interaktive Sitzung mit dem bereitgestellten Prompt als initiale Eingabe.Dein Prompt-TextDer Prompt wird innerhalb der interaktiven Sitzung verarbeitet, nicht davor. Kann nicht verwendet werden, wenn Input von stdin gepiped wird. Beispiel: qwen -i "explain this code"
--system-promptÜberschreibt den integrierten Haupt-Sitzungs-System-Prompt für diesen Lauf.Dein Prompt-TextGeladene Kontextdateien wie QWEN.md werden weiterhin nach diesem Override angehängt. Kann mit --append-system-prompt kombiniert werden.
--append-system-promptHängt zusätzliche Anweisungen an den Haupt-Sitzungs-System-Prompt für diesen Lauf an.Dein Prompt-TextWird nach dem integrierten Prompt und geladenen Kontextdateien angewendet. Kann mit --system-prompt kombiniert werden. Siehe Headless Mode für Beispiele.
--output-format-oGibt das Format der CLI-Ausgabe für den nicht-interaktiven Modus an.text, json, stream-jsontext: (Standard) Die standardmäßige menschenlesbare Ausgabe. json: Eine maschinenlesbare JSON-Ausgabe, die am Ende der Ausführung emittiert wird. stream-json: Streaming-JSON-Nachrichten, die während der Ausführung emittiert werden, sobald sie auftreten. Für strukturierte Ausgabe und Scripting verwende das --output-format json- oder --output-format stream-json-Flag. Siehe Headless Mode für detaillierte Informationen.
--input-formatGibt das Format an, das von der Standardeingabe konsumiert wird.text, stream-jsontext: (Standard) Standard-Texteingabe von stdin oder Befehlszeilenargumenten. stream-json: JSON-Message-Protokoll über stdin für bidirektionale Kommunikation. Voraussetzung: --input-format stream-json erfordert, dass --output-format stream-json gesetzt ist. Bei Verwendung von stream-json ist stdin für Protokollnachrichten reserviert. Siehe Headless Mode für detaillierte Informationen.
--include-partial-messagesSchließe partielle Assistant-Nachrichten ein, wenn das stream-json-Ausgabeformat verwendet wird. Wenn aktiviert, emittiert es Stream-Events (message_start, content_block_delta, etc.), sobald sie während des Streamings auftreten.Standard: false. Voraussetzung: Erfordert, dass --output-format stream-json gesetzt ist. Siehe Headless Mode für detaillierte Informationen zu Stream-Events.
--sandbox-sAktiviert den Sandbox-Modus für diese Sitzung.
--sandbox-imageSetzt die Sandbox-Image-URI.
--debug-dAktiviert den Debug-Modus für diese Sitzung und bietet ausführlichere Ausgabe.
--all-files-aWenn gesetzt, werden rekursiv alle Dateien im aktuellen Verzeichnis als Kontext für den Prompt eingeschlossen.
--help-hZeigt Hilfeinformationen zu Befehlszeilenargumenten an.
--show-memory-usageZeigt die aktuelle Speichernutzung an.
--yoloAktiviert den YOLO-Modus, der alle Tool-Aufrufe automatisch genehmigt.
--approval-modeSetzt den Genehmigungsmodus für Tool-Aufrufe.plan, default, auto-edit, yoloUnterstü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: Edit-Tools (edit, write_file) automatisch genehmigen, während andere abgefragt werden. yolo: Alle Tool-Aufrufe automatisch genehmigen (äquivalent zu --yolo). Kann nicht zusammen mit --yolo verwendet werden. Verwende --approval-mode=yolo anstelle von --yolo für den neuen einheitlichen Ansatz. Beispiel: qwen --approval-mode auto-edit
Siehe mehr über Approval Mode.
--allowed-toolsEine kommagetrennte Liste von Tool-Namen, die den Bestätigungsdialog umgehen.Tool-NamenBeispiel: qwen --allowed-tools "Shell(git status)"
--disabled-slash-commandsSlash-Befehlsnamen, die ausgeblendet/deaktiviert werden sollen (kommagetrennt oder wiederholt). Wird mit der slashCommands.disabled-Einstellung und der QWEN_DISABLED_SLASH_COMMANDS-Umgebungsvariable vereinigt. Case-insensitiv gegen den finalen Befehlsnamen abgeglichen.BefehlsnamenBeispiel: qwen --disabled-slash-commands "auth,mcp,extensions"
--telemetryAktiviert telemetry.
--telemetry-targetSetzt das Telemetry-Ziel.Siehe telemetry für weitere Informationen.
--telemetry-otlp-endpointSetzt den OTLP-Endpunkt für Telemetry.Siehe telemetry für weitere Informationen.
--telemetry-otlp-protocolSetzt das OTLP-Protokoll für Telemetry (grpc oder http).Standard ist grpc. Siehe telemetry für weitere Informationen.
--telemetry-log-promptsAktiviert das Logging von Prompts für Telemetry.Siehe telemetry für weitere Informationen.
--checkpointingAktiviert checkpointing.
--acpAktiviert den ACP-Modus (Agent Client Protocol). Nützlich für IDE/Editor-Integrationen wie Zed.Stabil. Ersetzt das veraltete --experimental-acp-Flag.
--experimental-lspAktiviert das experimentelle LSP (Language Server Protocol)-Feature für Code-Intelligence (Go-to-Definition, Referenzen finden, Diagnosen, etc.).Experimentell. Erfordert, dass Language Server installiert sind.
--extensions-eGibt eine Liste von Extensions an, die für die Sitzung verwendet werden sollen.Extension-NamenWenn nicht angegeben, werden alle verfügbaren Extensions verwendet. Verwende den speziellen Begriff qwen -e none, um alle Extensions zu deaktivieren. Beispiel: qwen -e my-extension -e my-other-extension
--list-extensions-lListet alle verfügbaren Extensions auf und beendet sich.
--proxySetzt den Proxy für die CLI.Proxy-URLBeispiel: --proxy http://localhost:7890.
--include-directoriesSchließt zusätzliche Verzeichnisse in den Workspace für Multi-Directory-Unterstützung ein.VerzeichnispfadeKann mehrfach oder als kommagetrennte Werte angegeben werden. Maximal 5 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-readerAktiviert den Screenreader-Modus, der die TUI für eine bessere Kompatibilität mit Screenreadern anpasst.
--versionZeigt die Version der CLI an.
--openai-loggingAktiviert das Logging von OpenAI-API-Aufrufen zum Debuggen und Analysieren.Dieses Flag überschreibt die enableOpenAILogging-Einstellung in settings.json.
--openai-logging-dirSetzt einen benutzerdefinierten Verzeichnispfad für OpenAI-API-Logs.VerzeichnispfadDieses Flag überschreibt die openAILoggingDir-Einstellung in settings.json. Unterstützt absolute Pfade, relative Pfade und ~-Erweiterung. Beispiel: qwen --openai-logging-dir "~/qwen-logs" --openai-logging

Kontextdateien (Hierarchischer Instruktionskontext)

Obwohl sie nicht streng genommen zur Konfiguration des CLI-Verhaltens gehören, sind Kontextdateien (standardmäßig QWEN.md, aber konfigurierbar über die context.fileName-Einstellung) entscheidend für die Konfiguration des Instruktionskontexts (auch als „Memory” bezeichnet). Dieses leistungsstarke Feature ermöglicht es dir, projektspezifische Anweisungen, Coding-Style-Guides oder relevante Hintergrundinformationen für die KI bereitzustellen, wodurch ihre Antworten gezielter und präziser auf deine Bedürfnisse zugeschnitten werden. Die CLI enthält UI-Elemente, wie einen Indikator in der Fußzeile, der die Anzahl der geladenen Kontextdateien anzeigt, um dich über den aktiven Kontext zu informieren.

  • Zweck: Diese Markdown-Dateien enthalten Anweisungen, Richtlinien oder Kontext, den du dem Qwen-Modell während deiner Interaktionen zur Verfügung stellen möchtest. Das System ist darauf ausgelegt, diesen Instruktionskontext hierarchisch zu verwalten.

Beispielinhalt einer Kontextdatei (z. B. QWEN.md)

Hier ist ein konzeptionelles Beispiel dafür, was eine Kontextdatei im Stammverzeichnis 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. ## Regarding Dependencies: - Avoid introducing new external dependencies unless absolutely necessary. - If a new dependency is required, please state the reason.

Dieses Beispiel zeigt, wie du allgemeinen Projektkontext, spezifische Coding-Konventionen und sogar Notizen zu bestimmten Dateien oder Komponenten bereitstellen kannst. Je relevanter und präziser deine Kontextdateien sind, desto besser kann die KI dich unterstützen. Projektspezifische Kontextdateien werden dringend empfohlen, um Konventionen und Kontext festzulegen.

  • Hierarchisches Laden und Priorität: Die CLI implementiert ein hierarchisches Memory-System, indem sie Kontextdateien (z. B. QWEN.md) aus mehreren Speicherorten lädt. Inhalte von Dateien, die weiter unten in dieser Liste stehen (spezifischer), überschreiben oder ergänzen typischerweise Inhalte von Dateien weiter oben (allgemeiner). Die genaue Verkettungsreihenfolge und der finale Kontext können mit dem /memory show-Befehl inspiziert werden. Die typische Ladereihenfolge ist:
    1. Globale Kontextdatei:
      • Speicherort: ~/.qwen/<configured-context-filename> (z. B. ~/.qwen/QWEN.md in deinem Benutzer-Home-Verzeichnis).
      • Scope: Bietet Standardanweisungen für alle deine Projekte.
    2. Projektstamm- & Vorfahren-Kontextdateien:
      • Speicherort: Die CLI sucht nach der konfigurierten Kontextdatei im aktuellen Arbeitsverzeichnis und dann in jedem übergeordneten Verzeichnis bis entweder zum Projektstamm (identifiziert durch einen .git-Ordner) oder deinem Home-Verzeichnis.
      • Scope: Bietet Kontext, der für das gesamte Projekt oder einen signifikanten Teil davon relevant ist.
  • Verkettung & UI-Indikator: Die Inhalte aller gefundenen Kontextdateien werden verkettet (mit Trennzeichen, die ihre Herkunft und ihren Pfad angeben) und als Teil des System-Prompts bereitgestellt. Die CLI-Fußzeile zeigt die Anzahl der geladenen Kontextdateien an, was dir einen schnellen visuellen Hinweis auf den aktiven Instruktionskontext gibt.
  • Importieren von Inhalten: Du kannst deine Kontextdateien modularisieren, indem du andere Markdown-Dateien mit der @path/to/file.md-Syntax importierst. Für weitere Details siehe die Memory Import Processor-Dokumentation.
  • Befehle zur Memory-Verwaltung:
    • Verwende /memory refresh, um einen erneuten Scan und Neuladen aller Kontextdateien aus allen konfigurierten Speicherorten zu erzwingen. Dies aktualisiert den Instruktionskontext der KI.
    • Verwende /memory show, um den kombinierten Instruktionskontext anzuzeigen, der aktuell geladen ist, damit du die Hierarchie und den von der KI verwendeten Inhalt überprüfen kannst.
    • Siehe die Commands-Dokumentation für vollständige Details zum /memory-Befehl und seinen Sub-Befehlen (show und refresh).

Indem du diese Konfigurationsebenen und die hierarchische Natur von Kontextdateien verstehst und nutzt, kannst du das Memory der KI effektiv verwalten und die Antworten von Qwen Code gezielt auf deine spezifischen Anforderungen und Projekte zuschneiden.

Sandbox

Qwen Code kann potenziell unsichere Operationen (wie Shell-Befehle und Dateiänderungen) in einer sandgeboxten Umgebung ausführen, um dein System zu schützen.

Sandbox ist standardmäßig deaktiviert, kann aber auf verschiedene Weise aktiviert werden:

  • Verwendung des --sandbox- oder -s-Flags.
  • Setzen der QWEN_SANDBOX-Umgebungsvariable.
  • Sandbox ist standardmäßig aktiviert, wenn --yolo oder --approval-mode=yolo verwendet wird.

Standardmäßig wird ein vorgefertigtes qwen-code-sandbox-Docker-Image verwendet.

Für projektspezifische Sandbox-Anforderungen kannst du ein benutzerdefiniertes Dockerfile unter .qwen/sandbox.Dockerfile im Stammverzeichnis deines Projekts erstellen. Dieses Dockerfile kann auf dem Basis-Sandbox-Image aufbauen:

FROM qwen-code-sandbox # Add your custom dependencies or configurations here # For example: # RUN apt-get update && apt-get install -y some-package # COPY ./my-config /app/my-config

Wenn .qwen/sandbox.Dockerfile existiert, kannst du beim Ausführen von Qwen Code die BUILD_SANDBOX-Umgebungsvariable verwenden, um das benutzerdefinierte Sandbox-Image automatisch zu bauen:

BUILD_SANDBOX=1 qwen -s

Nutzungsstatistiken

Um Qwen Code zu verbessern, sammeln wir anonymisierte Nutzungsstatistiken. Diese Daten helfen uns zu verstehen, wie die CLI verwendet wird, häufige Probleme zu identifizieren und neue Features zu priorisieren.

Was wir sammeln:

  • Tool-Aufrufe: Wir loggen die Namen der aufgerufenen Tools, ob sie erfolgreich waren oder fehlgeschlagen sind, und wie lange ihre Ausführung gedauert hat. Wir sammeln nicht die an die Tools übergebenen Argumente oder von ihnen zurückgegebene Daten.
  • API-Anfragen: Wir loggen das für jede Anfrage verwendete Modell, die Dauer der Anfrage und ob sie erfolgreich war. Wir sammeln nicht den Inhalt der Prompts oder Antworten.
  • Sitzungsinformationen: Wir sammeln Informationen zur Konfiguration der CLI, wie die aktivierten Tools und den Genehmigungsmodus.

Was wir NICHT sammeln:

  • Personenbezogene Daten (PII): Wir sammeln keine persönlichen Informationen wie deinen Namen, deine E-Mail-Adresse oder API-Keys.
  • Prompt- und Antwortinhalt: Wir loggen nicht den Inhalt deiner Prompts oder die Antworten des Modells.
  • Dateiinhalte: Wir loggen nicht den Inhalt von Dateien, die von der CLI gelesen oder geschrieben werden.

So kannst du dich abmelden:

Du kannst der Sammlung von Nutzungsstatistiken jederzeit widersprechen, indem du die usageStatisticsEnabled-Eigenschaft unter der privacy-Kategorie in deiner settings.json-Datei auf false setzt:

{ "privacy": { "usageStatisticsEnabled": false } }
Note

Wenn Nutzungsstatistiken aktiviert sind, werden Ereignisse an einen Alibaba Cloud RUM-Sammelendpunkt gesendet.

Last updated on