Qwen Code Konfiguration
Authentifizierung / API-Schlüssel: Authentifizierung (API-Key, Alibaba Cloud Coding Plan) und authentifizierungsbezogene Umgebungsvariablen (wie OPENAI_API_KEY) sind in Authentifizierung dokumentiert.
Hinweis zum neuen Konfigurationsformat: Das Format der settings.json-Datei wurde auf ein neues, übersichtlicheres Format aktualisiert. Das alte Format wird automatisch migriert.
Qwen Code bietet mehrere Möglichkeiten, sein Verhalten zu konfigurieren, darunter Umgebungsvariablen, Kommandozeilenargumente und Einstellungsdateien. Dieses Dokument beschreibt die verschiedenen Konfigurationsmethoden und verfügbaren Einstellungen.
Konfigurationsebenen
Die Konfiguration wird in der folgenden Prioritätsreihenfolge angewendet (niedrigere Nummern werden von höheren Nummern überschrieben):
| Ebene | Konfigurationsquelle | Beschreibung |
|---|---|---|
| 1 | Standardwerte | Im Programm fest codierte Standardwerte |
| 2 | System-Standarddatei | Systemweite Standardeinstellungen, die durch andere Einstellungsdateien überschrieben werden können |
| 3 | Benutzereinstellungsdatei | Globale Einstellungen für den aktuellen Benutzer |
| 4 | Projekteinstellungsdatei | Projektspezifische Einstellungen |
| 5 | Systemeinstellungsdatei | Systemweite Einstellungen, die alle anderen Einstellungsdateien überschreiben |
| 6 | Umgebungsvariablen | Systemweite oder sitzungsspezifische Variablen, möglicherweise aus .env-Dateien geladen |
| 7 | Kommandozeilenargumente | Werte, die beim Start der CLI übergeben werden |
Einstellungsdateien
Qwen Code verwendet JSON-Einstellungsdateien für die dauerhafte Konfiguration. Es gibt vier Speicherorte für diese Dateien:
| Dateityp | Speicherort | Gültigkeitsbereich |
|---|---|---|
| System-Standarddatei | Linux: /etc/qwen-code/system-defaults.jsonWindows: C:\ProgramData\qwen-code\system-defaults.jsonmacOS: /Library/Application Support/QwenCode/system-defaults.json Der Pfad kann mit der Umgebungsvariablen QWEN_CODE_SYSTEM_DEFAULTS_PATH überschrieben werden. | Bietet eine Basisebene systemweiter Standardeinstellungen. Diese Einstellungen haben die niedrigste Priorität und sollen von Benutzer-, Projekt- oder System-Override-Einstellungen überschrieben werden. |
| Benutzereinstellungsdatei | ~/.qwen/settings.json (wobei ~ Ihr Benutzerverzeichnis ist). | Gilt für alle Qwen Code-Sitzungen des aktuellen Benutzers. |
| Projekteinstellungsdatei | .qwen/settings.json im Stammverzeichnis Ihres Projekts. | Gilt nur, wenn Qwen Code von diesem bestimmten Projekt aus 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 mit 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 Kontrolle über die Qwen Code-Konfigurationen der Benutzer zu haben. |
Hinweis zu Umgebungsvariablen in Einstellungen: Zeichenfolgenwerte in Ihren settings.json-Dateien können mittels $VAR_NAME- oder ${VAR_NAME}-Syntax auf Umgebungsvariablen verweisen. Diese Variablen werden beim Laden der Einstellungen automatisch aufgelöst. Wenn Sie z. B. eine Umgebungsvariable MY_API_TOKEN haben, können Sie sie in settings.json wie folgt verwenden: "apiKey": "$MY_API_TOKEN".
Das .qwen-Verzeichnis in Ihrem Projekt
Zusätzlich zu einer Projekteinstellungsdatei kann das .qwen-Verzeichnis eines Projekts andere projektspezifische Dateien enthalten, die für den Betrieb von Qwen Code relevant sind, z. B.:
- Benutzerdefinierte Sandbox-Profile (z. B.
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Agent-Fähigkeiten unter
.qwen/skills/(jede Fähigkeit ist ein Verzeichnis, das eineSKILL.mdenthält).
Migrationskonfiguration
Qwen Code migriert automatisch alte Konfigurationseinstellungen in das neue Format. Alte Einstellungsdateien werden vor der Migration gesichert. Die folgenden Einstellungen wurden von negativer (disable*) zu positiver (enable*) Benennung umbenannt:
| Alte Einstellung | Neue Einstellung | Anmerkungen |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | In einer einzigen Einstellung zusammengefasst |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Invertierung von booleschen Werten: Bei der Migration werden boolesche Werte invertiert (z. B. wird disableAutoUpdate: true zu enableAutoUpdate: false).
Konsolidierungsrichtlinie für disableAutoUpdate und disableUpdateNag
Wenn beide alten Einstellungen mit unterschiedlichen Werten vorhanden sind, folgt die Migration dieser Richtlinie: Wenn entweder disableAutoUpdate oder disableUpdateNag true ist, dann wird enableAutoUpdate zu false:
disableAutoUpdate | disableUpdateNag | Migrierter enableAutoUpdate |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Verfügbare Einstellungen in settings.json
Die Einstellungen sind in Kategorien organisiert. Die meisten Einstellungen sollten in das entsprechende Objekt der obersten Kategorie in Ihrer settings.json-Datei eingefügt werden. Einige wenige Einstellungen der obersten Ebene wie proxy und plansDirectory bleiben aus Kompatibilitätsgründen direkte Stammschlüssel.
general
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
general.preferredEditor | string | Der bevorzugte Editor zum Öffnen von Dateien. | undefined |
general.vimMode | boolean | Vim-Tastenkombinationen aktivieren. | false |
general.enableAutoUpdate | boolean | Automatische Update-Prüfungen und -Installationen beim Start aktivieren. | true |
general.showSessionRecap | boolean | Beim Zurückkehren in das Terminal nach einer Abwesenheit automatisch eine einzeilige Zusammenfassung („wo Sie aufgehört haben“) anzeigen. Standardmäßig deaktiviert. Verwenden Sie /recap, um die Zusammenfassung unabhängig von dieser Einstellung manuell auszulösen. | false |
general.sessionRecapAwayThresholdMinutes | number | Minuten, die das Terminal abgedunkelt sein muss, bevor beim Fokussieren eine automatische Zusammenfassung ausgelöst wird. Wird nur verwendet, wenn showSessionRecap aktiviert ist. | 5 |
general.gitCoAuthor.commit | boolean | Fügt einen Co-authored-by-Trailer zu Git-Commit-Nachrichten hinzu UND hängt eine pro-Datei-KI-Zuschreibungs-Git-Notiz (refs/notes/ai-attribution) für Commits an, die über Qwen Code getätigt wurden. Deaktivieren überspringt beides. | true |
general.gitCoAuthor.pr | boolean | Fügt eine Qwen-Code-Zuschreibungszeile an Pull-Request-Beschreibungen an, wenn gh pr create ausgeführt wird. | true |
general.defaultFileEncoding | string | 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 eine BOM erfordert. | "utf-8" |
general.cleanupPeriodDays | number | Tage, die ~/.qwen/file-history/-Sitzungssicherungen für /rewind aufbewahrt werden sollen. Ältere Sicherungen werden durch einen Hintergrundprozess entfernt, der höchstens einmal pro Tag läuft. 0 = minimale Aufbewahrungsdauer (~1 Stunde): hält Sitzungen, die in der letzten Stunde berührt wurden, sowie die aktuell aktive. Änderungen werden nach einem Neustart wirksam. | 30 |
general.language | enum | Sprache für die Benutzeroberfläche. Verwenden Sie "auto", um die Sprache aus den Systemeinstellungen zu ermitteln, oder einen Sprachcode (z. B. "zh-CN", "fr"). Benutzerdefinierte Codes können hinzugefügt werden, indem JS-Gebietsschemadateien in ~/.qwen/locales/ abgelegt werden. Siehe i18n. Erfordert Neustart. | "auto" |
general.outputLanguage | string | Sprache für die Modellausgabe. Verwenden Sie "auto", um die Sprache aus den Systemeinstellungen zu ermitteln, oder legen Sie eine bestimmte Sprache fest. Erfordert Neustart. | "auto" |
general.dynamicCommandTranslation | boolean | KI-Übersetzung von Beschreibungen dynamischer Schrägstrichbefehle aktivieren. Wenn deaktiviert, behalten dynamische Befehle ihre ursprünglichen Beschreibungen und überspringen Übersetzungsmodellaufrufe. | false |
output
| Einstellung | Typ | Beschreibung | Standard | Mögliche Werte |
|---|---|---|---|---|
output.format | string | Das Format der CLI-Ausgabe. | "text" | "text", "json" |
output.showTimestamps | boolean | Zeigt vor jeder Assistentenantwort einen [HH:MM:SS]-Zeitstempel an. | false |
ui
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
ui.theme | string | Das Farbthema für die Benutzeroberfläche. Siehe Themes für verfügbare Optionen. | "Qwen Dark" |
ui.customThemes | object | Benutzerdefinierte Themen-Definitionen. | {} |
ui.statusLine | object | Benutzerdefinierte Statuszeilen-Konfiguration. Unterstützt die Optionen command, refreshInterval, respectUserColors und hideContextIndicator. Siehe Status Line. | undefined |
ui.hideWindowTitle | boolean | Titelzeile des Fensters ausblenden. | false |
ui.hideTips | boolean | Alle Tipps (Start- und Nach-Antwort-Tipps) in der Benutzeroberfläche ausblenden. Siehe Contextual Tips. | false |
ui.hideBanner | boolean | Das ASCII-Logo und das Info-Panel beim Start ausblenden. Tipps und Chat-Eingabe werden weiterhin angezeigt, sofern nicht auch ui.hideTips gesetzt ist. | false |
ui.customBannerTitle | string | Ersetzt den Standardtitel >_ Qwen Code im Banner-Info-Panel. Das Versions-Suffix (vX.Y.Z) wird immer angehängt; Authentifizierungs-, Modell- und Pfadzeilen sind nicht betroffen. Bereinigt; auf 80 Zeichen begrenzt. | "" |
ui.customBannerSubtitle | string | Optionale Untertitelzeile, die zwischen dem Bannertitel und der Authentifizierungs-/Modellzeile anstelle der leeren Abstandszeile eingefügt wird. Bereinigt; auf 160 Zeichen begrenzt. Leer (Standard) behält die ursprüngliche leere Abstandszeile bei. | "" |
ui.customAsciiArt | string | object | Ersetzt das QWEN-ASCII-Logo im Banner. Akzeptiert einen Inline-String (für beide Breitenstufen verwendet), { "path": "./brand.txt" } (relative Pfade werden relativ zum Verzeichnis der zugehörigen Einstellungsdatei aufgelöst; einmal beim Start mit O_NOFOLLOW auf POSIX gelesen, auf 64 KB begrenzt) oder { "small": ..., "large": ... } für eine breitenabhängige Auswahl. Bereinigt; auf 200 Zeilen × 200 Spalten pro Stufe begrenzt. | undefined |
ui.showLineNumbers | boolean | Zeilennummern in Codeblöcken in der CLI-Ausgabe anzeigen. | true |
ui.renderMode | string | Standard-Markdown-Anzeigemodus. Verwenden Sie "render" für reichhaltige visuelle Vorschauen oder "raw", um standardmäßig quellorientiertes Markdown anzuzeigen. Umschalten während einer Sitzung mit Alt/Option+M; unter macOS muss das Terminal Option als Meta senden. Siehe Markdown Rendering. | "render" |
ui.showCitations | boolean | Zitate für generierten Text im Chat anzeigen. | false |
ui.history.collapseOnResume | boolean | Gibt an, ob der Verlauf beim Fortsetzen einer Sitzung standardmäßig eingeklappt werden soll. Kann über /history collapse-on-resume und /history expand-on-resume umgeschaltet werden. | false |
ui.compactMode | boolean | Tool-Ausgabe und Gedankengänge ausblenden, um eine übersichtlichere Ansicht zu erhalten. Umschalten mit Strg+O während einer Sitzung oder über das Einstellungsdialogfeld. Tool-Genehmigungsaufforderungen werden auch im kompakten Modus nie ausgeblendet. Die Einstellung bleibt über Sitzungen hinweg erhalten. | false |
ui.shellOutputMaxLines | number | Maximale Anzahl von Shell-Ausgabezeilen, die inline angezeigt werden. Auf 0 setzen, um die Begrenzung zu deaktivieren und die vollständige Ausgabe anzuzeigen. Ausgeblendete Zeilen werden über den Indikator +N lines sichtbar gemacht. Fehler, von Benutzern initiierte Befehle mit !-Präfix, bestätigende Tools und fokussierte eingebettete Shells zeigen immer die vollständige Ausgabe an. | 5 |
ui.enableWelcomeBack | boolean | Zeigt das „Willkommen zurück“-Dialogfeld an, wenn Sie zu einem Projekt mit Gesprächsverlauf 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 ein Dialogfeld an, in dem Sie entweder das vorherige Gespräch fortsetzen oder von vorne beginnen können. Wenn Sie Neue Chat-Sitzung starten wählen, wird diese Auswahl für das aktuelle Projekt gespeichert, bis sich die Projektzusammenfassung ändert. Diese Funktion arbeitet mit dem Befehl /summary und dem Bestätigungsdialog zum Beenden zusammen. | true |
ui.accessibility.enableLoadingPhrases | boolean | Lade-Sprüche aktivieren (für Barrierefreiheit deaktivieren). | true |
ui.accessibility.screenReader | boolean | Aktiviert den Bildschirmlesemodus, der die TUI für eine bessere Kompatibilität mit Bildschirmlesegeräten anpasst. | false |
ui.customWittyPhrases | array of strings | Eine Liste benutzerdefinierter Sprüche, die während Ladezuständen angezeigt werden. Wenn angegeben, durchläuft die CLI diese Sprüche anstelle der Standard-Sprüche. | [] |
ui.showResponseTokensPerSecond | boolean | Zeigt eine Live-Schätzung der Tokens pro Sekunde neben dem Antwort-Token-Zähler an, während das Modell streamt. Dies ist ein Hinweis auf die Generierungsgeschwindigkeit, keine ETA oder ein Fertigstellungsprozentsatz. Wirkt in der nächsten Sitzung. | false |
ui.enableFollowupSuggestions | boolean | Aktiviert Follow-up-Vorschläge, die vorhersagen, was Sie als Nächstes eingeben möchten, nachdem das Modell geantwortet hat. Vorschläge erscheinen als Platzhaltertext und werden mit Tabulator, Eingabetaste oder Rechtspfeil akzeptiert (die den Eingabebereich füllen – sie senden nicht automatisch ab). Standardmäßig aktiviert; setzen Sie auf false, um zu deaktivieren. | true |
ui.enableCacheSharing | boolean | Verwendet cache-bewusste gegabelte Abfragen für die Vorschlagsgenerierung. Reduziert Kosten bei Anbietern, die Präfix-Caching unterstützen (experimentell). | true |
ui.enableSpeculation | boolean | Führt akzeptierte Vorschläge spekulativ aus, bevor sie abgeschickt werden. Ergebnisse erscheinen sofort beim Akzeptieren (experimentell). | false |
ide
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
ide.enabled | boolean | Aktiviert den IDE-Integrationsmodus. | false |
ide.hasSeenNudge | boolean | Gibt an, ob der Nutzer den IDE-Integrationshinweis gesehen hat. | false |
privacy
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Aktiviert die Erfassung von Nutzungsstatistiken. | true |
model
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
model.name | string | Das Qwen-Modell, das für Unterhaltungen verwendet werden soll. | undefined |
model.maxSessionTurns | number | Maximale Anzahl von Benutzer-/Modell-/Tool-Durchgängen, die in einer Sitzung behalten werden. -1 bedeutet unbegrenzt. | -1 |
model.maxWallTimeSeconds | number | Wanduhr-Budget für unbeaufsichtigte / automatisierte Ausführungen in Sekunden. -1 bedeutet unbegrenzt. Kann pro Aufruf überschrieben werden mit --max-wall-time, das eine positive Dauer erfordert (90, 30s, 5m, 1h, 1.5h); das Minimum beträgt 1 Sekunde – Werte unter einer Sekunde (500ms, 0.5) werden als Tippfehler abgelehnt. Weglassen des Flags führt zur Verwendung dieser Einstellung. Bricht mit Exit-Code 55 ab, wenn das Budget überschritten wird. | -1 |
model.maxToolCalls | number | Kumuliertes Tool-Aufruf-Budget für eine Ausführung (zählt jedes ausgeführte Tool, Erfolg oder Fehlschlag; structured_output unter --json-schema ist ausgenommen). -1 bedeutet unbegrenzt; 0 bedeutet „keine Tool-Aufrufe erlaubt“. Gedeckelt auf 1.000.000, um Tippfehler abzufangen. Kann überschrieben werden mit --max-tool-calls. Bricht mit Exit-Code 55 ab, wenn das Budget überschritten wird. | -1 |
model.generationConfig | object | Erweiterte Überschreibungen, die an den zugrunde liegenden Inhaltsgenerator weitergegeben werden. Unterstützt Anforderungssteuerungen wie timeout, maxRetries, enableCacheControl, splitToolMedia (Standard true; teilt von Tools zurückgegebene Medien – einschließlich der von der integrierten Funktion read_file gelesenen Bilder – in eine nachfolgende Benutzernachricht auf, anstatt in die protokollverletzende role: "tool"-Nachricht, sodass strenge OpenAI-kompatible Server wie doubao / new-api / LM Studio sie sehen können; setzen Sie auf false, um das alte Einbetten im Tool wiederherzustellen), toolResultContentFormat (Standard "parts"; setzen Sie "string" nur für alte OpenAI-kompatible Laufzeiten, deren Tool-Vorlagen Textinhalte ignorieren), 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 Körperparameter nur für OpenAI-kompatible API-Anfragen), zusammen mit Feineinstellungsoptionen unter samplingParams (z. B. temperature, top_p, max_tokens). Lassen Sie die Einstellung ungesetzt, um sich auf die Standardwerte des Anbieters zu verlassen. | undefined |
model.chatCompression.contextPercentageThreshold | number | ENTFERNT. Die automatische Verdichtung verwendet jetzt eine dreistufige Schweillenleiter (Warnung / automatisch / hart), die intern aus dem Kontextfenster des Modells über die Funktion computeThresholds() berechnet wird – nicht mehr benutzerkonfigurierbar. Das Setzen dieses Feldes in settings.json wird stillschweigend ignoriert (keine Startwarnung). Derzeit gibt es keinen Ersatz für „Komprimierung vollständig deaktivieren“ – die reaktive Überlaufwiederherstellung bleibt das Sicherheitsnetz auf der API-Ebene, falls die Komprimierung selbst fehlschlägt. (Siehe PR #4345 / docs/design/auto-compaction-threshold-redesign.md für die Begründung des Redesigns.) | N/A |
model.chatCompression.maxRecentFilesToRetain | number | Anzahl der zuletzt bearbeiteten Dateien, deren aktueller Inhalt nach der automatischen Verdichtung wiederhergestellt wird (eingebettet, wenn klein, sonst durch Pfad referenziert). 0 stellt keine wiederher. Umgebungsüberschreibung: QWEN_COMPACT_MAX_RECENT_FILES. | 5 |
model.chatCompression.maxRecentImagesToRetain | number | Anzahl der zuletzt verwendeten Bilder (Tool-Screenshots / Benutzereinfügungen), die nach der automatischen Verdichtung wiederhergestellt werden. 0 stellt keine wiederher. Umgebungsüberschreibung: QWEN_COMPACT_MAX_RECENT_IMAGES. | 3 |
model.chatCompression.enableScreenshotTrigger | boolean | Wenn true, wird die automatische Verdichtung auch ausgelöst, sobald die Anzahl der von Tools zurückgegebenen Bilder im Verlauf den Schwellenwert screenshotTriggerThreshold erreicht, unabhängig von der Token-Nutzung – gedacht für Computer-Nutzungssitzungen, bei denen häufige Screenshots die Modellaufmerksamkeit verwässern. Zählt nur Bilder, die in Tool-Ergebnissen zurückgegeben werden, nicht vom Benutzer eingefügte Bilder. Umgebungsüberschreibung: QWEN_COMPACT_SCREENSHOT_TRIGGER (1/true/0/false). | true |
model.chatCompression.screenshotTriggerThreshold | number | Anzahl der von Tools zurückgegebenen Bilder, bei deren Erreichen oder Überschreiten der Screenshot-Trigger ausgelöst wird (nur wenn enableScreenshotTrigger aktiviert ist). Die Verdichtung setzt den Zähler zurück – überlebende Bilder werden als Top-Level-Teile wieder eingebettet, die der Trigger nicht zählt – sodass er nicht sofort erneut auslöst. Umgebungsüberschreibung: QWEN_COMPACT_SCREENSHOT_THRESHOLD. | 50 |
model.skipNextSpeakerCheck | boolean | Überspringt die Überprüfung des nächsten Sprechers. | true |
model.skipLoopDetection | boolean | Deaktiviert die Erkennung von Streaming-Schleifen. Standardmäßig true (Schleifenerkennung wird übersprungen), um Fehlalarme zu vermeiden, die legitime Workflows unterbrechen. Setzen Sie auf false, um die Streaming-Schleifenerkennung zu aktivieren – nützlich als Sicherheitsmaßnahme in unbeaufsichtigten / nicht-interaktiven Ausführungen, bei denen wiederholte Blockaden sonst das Budget verschwenden können. | true |
model.skipStartupContext | boolean | Überspringt das Senden des Start-Arbeitsbereichskontexts (Umgebungszusammenfassung und Bestätigung) zu Beginn jeder Sitzung. Aktivieren Sie diese Option, wenn Sie Kontext lieber manuell bereitstellen oder Token beim Start sparen möchten. | false |
model.enableOpenAILogging | boolean | Aktiviert die Protokollierung von OpenAI-API-Aufrufen zur Fehlersuche und Analyse. Wenn aktiviert, werden API-Anfragen und -Antworten in JSON-Dateien protokolliert. | false |
model.openAILoggingDir | string | Benutzerdefinierter Verzeichnispfad für OpenAI-API-Protokolle. Falls nicht angegeben, wird standardmäßig logs/openai im aktuellen Arbeitsverzeichnis verwendet. Unterstützt absolute Pfade, relative Pfade (vom aktuellen Arbeitsverzeichnis aus aufgelöst) und ~-Expansion (Home-Verzeichnis). | undefined |
| Beispiel model.generationConfig: |
{
"model": {
"generationConfig": {
"timeout": 60000,
"contextWindowSize": 128000,
"modalities": {
"image": true
},
"enableCacheControl": true,
"toolResultContentFormat": "parts",
"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-Token):
Wenn samplingParams.max_tokens nicht gesetzt ist, verwendet Qwen Code eine adaptive Output-Token-Strategie, um die GPU-Ressourcennutzung zu optimieren:
- Anfragen beginnen mit einem Standard-Limit von 8K Output-Token
- Wenn die Antwort abgeschnitten wird (das Modell erreicht das Limit), wiederholt Qwen Code automatisch mit 64K Token
- Die partielle Ausgabe wird verworfen und durch die vollständige Antwort des Wiederholungsversuchs ersetzt
Dies ist für Benutzer transparent – Sie können kurzzeitig einen Wiederholungsindikator sehen, falls eine Eskalation auftritt. Da 99 % der Antworten unter 5K Token liegen, kommt der Wiederholungsversuch selten vor (<1 % der Anfragen).
Um dieses Verhalten zu überschreiben, setzen Sie entweder samplingParams.max_tokens in Ihren Einstellungen oder verwenden Sie die Umgebungsvariable QWEN_CODE_MAX_OUTPUT_TOKENS.
toolResultContentFormat:
Steuert, wie reine Text-Tool-Ergebnisse in OpenAI-kompatiblen Anfragen serialisiert werden. Der Standardwert "parts"" behält die übliche Content-Part-Array-Struktur bei. Setzen Sie "string" nur für Legacy-OpenAI-kompatible Laufzeiten, deren Tool-Vorlagen Text-Content-Parts ignorieren, wie z. B. ältere GLM-5.1 vLLM/SGLang-Vorlagen. Von Tools zurückgegebene Medien werden weiterhin von splitToolMedia gesteuert.
contextWindowSize:
Überschreibt die Standard-Kontextfenstergröße für das ausgewählte Modell. Qwen Code bestimmt das Kontextfenster anhand integrierter Standardwerte basierend auf dem Modellnamen-Matching, mit einem konstanten Fallback-Wert. Verwenden Sie diese Einstellung, wenn das effektive Kontextlimit eines Anbieters von Qwen Codes Standard abweicht. Dieser Wert definiert die angenommene maximale Kontextkapazität des Modells, nicht ein Token-Limit pro Anfrage.
Wenn das ausgewählte Modell in modelProviders definiert ist, setzen Sie
contextWindowSize in den generationConfig dieses Anbietereintrags, nicht
im übergeordneten model.generationConfig. Provider-Modell-Einträge sind versiegelt, sodass
übergeordnete Generierungseinstellungen fehlende Provider-Felder nicht auffüllen.
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 Mustervergleichen des Modellnamens. Verwenden Sie diese Einstellung, wenn die automatische 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 }. Lassen Sie einen Schlüssel weg oder setzen Sie 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 Anfrageverfolgung, Überwachung, API-Gateway-Routing oder wenn verschiedene Modelle unterschiedliche Header benötigen. Für Provider-Modelle definieren Sie customHeaders in modelProviders[].generationConfig.customHeaders. Für Laufzeitmodelle ohne passenden Provider-Eintrag definieren Sie es in model.generationConfig.customHeaders. Es findet kein Merging zwischen den beiden Ebenen statt.
Das Feld extra_body ermöglicht das Hinzufügen benutzerdefinierter Parameter zum Anfragebody, der an die API gesendet wird. Dies ist nützlich für anbieterspezifische Optionen, die nicht von den Standardkonfigurationsfeldern abgedeckt werden. Hinweis: Dieses Feld wird nur für OpenAI-kompatible Provider (openai, qwen-oauth) unterstützt. Für Anthropic- und Gemini-Provider wird es ignoriert. Für Provider-Modelle definieren Sie extra_body in modelProviders[].generationConfig.extra_body. Für Laufzeitmodelle ohne passenden Provider-Eintrag definieren Sie es in model.generationConfig.extra_body.
model.openAILoggingDir Beispiele:
"~/qwen-logs"- Protokolliert im Verzeichnis~/qwen-logs"./custom-logs"- Protokolliert in./custom-logsrelativ zum aktuellen Verzeichnis"/tmp/openai-logs"- Protokolliert im absoluten Pfad/tmp/openai-logs
fastModel
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
fastModel | string | Modell zur Generierung von Prompt-Vorschlägen und spekulativer Ausführung. Leer lassen, 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
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
context.fileName | string oder Array von Strings | Der Name der Kontextdatei(en). | undefined |
context.importFormat | string | Das Format, das beim Importieren des Speichers verwendet werden soll. | undefined |
context.includeDirectories | array | Zusätzliche Verzeichnisse, die in den Arbeitsbereichskontext aufgenommen werden sollen. Gibt ein Array zusätzlicher absoluter oder relativer Pfade an, die in den Arbeitsbereichskontext aufgenommen 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. Wenn auf true gesetzt, sollen QWEN.md-Dateien aus allen hinzugefügten Verzeichnissen geladen werden. Wenn auf false gesetzt, soll QWEN.md nur aus dem aktuellen Verzeichnis geladen werden. | false |
context.fileFiltering.respectGitIgnore | boolean | .gitignore-Dateien bei der Suche respektieren. | true |
context.fileFiltering.respectQwenIgnore | boolean | .qwenignore und konfigurierte benutzerdefinierte Ignore-Dateien bei der Suche respektieren. | true |
context.fileFiltering.customIgnoreFiles | array | Ignore-Dateien relativ zum Projektstamm, die anstelle der Standard-Kompatibilitätsdateien (.agentignore, .aiignore) verwendet werden, wenn respectQwenIgnore aktiviert ist. .qwenignore ist immer enthalten. | [".agentignore", ".aiignore"] |
context.fileFiltering.enableRecursiveFileSearch | boolean | Ob die rekursive Suche nach Dateinamen unter dem aktuellen Verzeichnisbaum aktiviert werden soll, wenn @-Präfixe in der Eingabeaufforderung vervollständigt werden. | true |
context.fileFiltering.enableFuzzySearch | boolean | Wenn true, aktiviert es Fuzzy-Suchfunktionen bei der Dateisuche. Setzen Sie auf false, um die Leistung bei Projekten mit vielen Dateien zu verbessern. | true |
context.clearContextOnIdle.toolResultsThresholdMinutes | number | Minuten der Inaktivität, bevor alte Tool-Ergebnisinhalte gelöscht werden. Verwenden Sie -1, um den Inaktivitäts-Trigger zu deaktivieren. | 60 |
context.clearContextOnIdle.toolResultsNumToKeep | integer | Ganzzahl der zuletzt komprimierbaren Tool-Ergebnisse, die beim Löschen erhalten bleiben sollen. Werte unter 1 werden auf 1 abgerundet. | 5 |
context.clearContextOnIdle.toolResultsTotalCharsThreshold | number | Gesamtanzahl der komprimierbaren Tool-Ergebniszeichen, die im Verlauf erlaubt sind, bevor die ältesten Ergebnisse gelöscht werden. Verwenden Sie -1, um den Größen-Trigger zu deaktivieren. Dies ist ein weicher Schwellenwert: Geschützte aktuelle Tool-Ergebnisse können die Gesamtzahl darüber halten. | 500000 |
Fehlerbehebung für die Dateisuchleistung
Wenn Sie Leistungsprobleme bei der Dateisuche (z. B. mit @-Vervollständigungen) haben, insbesondere in Projekten mit einer sehr großen Anzahl von Dateien, können Sie die folgenden Maßnahmen in der empfohlenen Reihenfolge ausprobieren:
- Eine Ignorieren-Datei verwenden: Erstellen Sie eine
.qwenignoreoder eine konfigurierte benutzerdefinierte Ignorieren-Datei im Stammverzeichnis Ihres Projekts, um Verzeichnisse auszuschließen, die eine große Anzahl von Dateien enthalten, auf die Sie nicht verweisen müssen (z. B. Build-Artefakte, Logs,node_modules). Die Reduzierung der Gesamtzahl der durchsuchten Dateien ist der effektivste Weg, um die Leistung zu verbessern. - Fuzzy-Suche deaktivieren: Falls das Ignorieren von Dateien nicht ausreicht, können Sie die Fuzzy-Suche deaktivieren, indem Sie
enableFuzzySearchin Ihrersettings.json-Datei auffalsesetzen. Dadurch wird ein einfacherer, nicht-fuzzy Matching-Algorithmus verwendet, der schneller sein kann. - Rekursive Dateisuche deaktivieren: Als letzte Möglichkeit können Sie die rekursive Dateisuche vollständig deaktivieren, indem Sie
enableRecursiveFileSearchauffalsesetzen. Dies ist die schnellste Option, da eine rekursive Durchsuchung Ihres Projekts vermieden wird. Dies bedeutet jedoch, dass Sie den vollständigen Pfad zu Dateien eingeben müssen, wenn Sie@-Vervollständigungen verwenden.
tools
| Einstellung | Typ | Beschreibung | Standard | Anmerkungen |
|---|---|---|---|---|
tools.sandbox | boolean oder string | Sandbox-Ausführungsumgebung (kann ein boolescher Wert oder ein Pfad-String sein). | undefined | |
tools.sandboxImage | string | Sandbox-Image-URI, die von Docker/Podman verwendet wird, wenn --sandbox-image und QWEN_SANDBOX_IMAGE nicht gesetzt sind. | undefined | |
tools.shell.enableInteractiveShell | boolean | Verwenden Sie node-pty für eine interaktive Shell-Erfahrung. Fallback auf child_process wird weiterhin angewendet. | true | |
tools.core | array of strings | Veraltet. Wird in der nächsten Version entfernt. Verwenden Sie stattdessen permissions.allow + permissions.deny. Beschränkt integrierte Tools auf eine Positivliste. Alle nicht in der Liste enthaltenen Tools sind deaktiviert. | undefined | |
tools.exclude | array of strings | Veraltet. Verwenden Sie stattdessen permissions.deny. Namen von Tools, die von der Erkennung ausgeschlossen werden sollen. Wird beim ersten Laden automatisch in das permissions-Format migriert. | undefined | |
tools.allowed | array of strings | Veraltet. Verwenden Sie stattdessen permissions.allow. Toolnamen, die den Bestätigungsdialog umgehen. Wird beim ersten Laden automatisch in das permissions-Format migriert. | undefined | |
tools.approvalMode | string | Legt den Standard-Freigabemodus für die Toolnutzung fest. | default | Mögliche Werte: plan (nur analysieren, keine Dateien ändern oder Befehle ausführen), default (Freigabe vor Dateibearbeitungen oder Shell-Befehlsausführung erforderlich), auto-edit (Dateibearbeitungen automatisch freigeben), auto (LLM-Klassifikator genehmigt sichere Aktionen automatisch, blockiert riskante), yolo (alle Tool-Aufrufe automatisch freigeben) |
tools.discoveryCommand | string | Befehl, der für die Tool-Erkennung ausgeführt werden soll. | undefined | |
tools.callCommand | string | Definiert einen benutzerdefinierten Shell-Befehl zum Aufrufen eines bestimmten Tools, das mit tools.discoveryCommand erkannt wurde. Der Shell-Befehl muss die folgenden Kriterien erfüllen: Er muss den Funktionsnamen (genau wie in der Funktionsdeklaration ) als erstes Befehlszeilenargument entgegennehmen. Er muss die Funktionsargumente als JSON von stdin lesen, analog zu functionCall.args. Er muss die Funktionsausgabe als JSON auf stdout zurückgeben, analog zu functionResponse.response.content. | undefined | |
tools.useRipgrep | boolean | Verwenden Sie ripgrep für die Dateiinhaltsuche anstelle der Fallback-Implementierung. Bietet eine schnellere Suchleistung. | true | |
tools.useBuiltinRipgrep | boolean | Verwenden Sie die gebündelte ripgrep-Binärdatei. Wenn auf false gesetzt, wird stattdessen der systemeigene rg-Befehl verwendet. Diese Einstellung ist nur wirksam, wenn tools.useRipgrep auf true gesetzt ist. | true | |
tools.truncateToolOutputThreshold | number | Kürzt die Tool-Ausgabe, wenn sie größer als diese Zeichenanzahl ist. Gilt für die Tools Shell, Grep, Glob, ReadFile und ReadManyFiles. | 25000 | Erfordert Neustart: Ja |
tools.truncateToolOutputLines | number | Maximale Anzahl von Zeilen oder Einträgen, die beim Kürzen der Tool-Ausgabe beibehalten werden. Gilt für die Tools Shell, Grep, Glob, ReadFile und ReadManyFiles. | 1000 | Erfordert Neustart: Ja |
tools.computerUse.enabled | boolean | Aktivieren Sie die integrierten Computer Use Tools (cua-driver native Desktop-Automatisierung). Wenn true (Standard), werden die computer_use__* Tools als zurückgestellte integrierte Tools registriert; der erste Aufruf lädt die signierte cua-driver-Binärdatei herunter und führt die macOS-Berechtigungen für Bedienungshilfen / Bildschirmaufnahme durch. | true | Erfordert Neustart: Ja |
tools.computerUse.maxImageDimension | number | Maximale Pixelzahl der längsten Kante für cua-driver-Screenshots (via set_config’s max_image_dimension). -1 (Standard) behält den eingebauten Standard von cua-driver (1568); 0 deaktiviert die Größenänderung (volle Auflösung); ein positiver Wert begrenzt die längste Kante. Niedrigere Grenzwerte senken die Kosten für Vision-Token auf Kosten feiner Details. | -1 | Erfordert Neustart: Ja. Umgebungsüberschreibung: QWEN_COMPUTER_USE_MAX_IMAGE_DIMENSION (eine nicht-negative Ganzzahl; hat Vorrang vor dieser Einstellung) |
Migration von tools.core / tools.exclude / tools.allowed: Diese Legacy-Einstellungen sind veraltet und werden beim ersten Laden automatisch in das neue permissions-Format migriert. Bevorzugen Sie die direkte Konfiguration von permissions.allow / permissions.deny. Verwenden Sie /permissions, um Regeln interaktiv zu verwalten.
memory
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
memory.enableManagedAutoMemory | boolean | Aktiviert die Hintergrundextraktion von Erinnerungen aus Gesprächen. | true |
memory.enableManagedAutoDream | boolean | Aktiviert die automatische Konsolidierung (Deduplizierung und Bereinigung) gesammelter Erinnerungen. | true |
memory.enableAutoSkill | boolean | Aktiviert die Hintergrundprüfung auf wiederverwendbare Projektfähigkeiten nach werkzeugintensiven Sitzungen. | true |
memory.autoSkillConfirm | boolean | Nachfragen, ob Bestätigung erforderlich ist, bevor automatisch generierte Fähigkeiten zur Fähigkeitsbibliothek hinzugefügt werden. Wenn aus, werden Auto-Fähigkeiten sofort gespeichert. | true |
Siehe Speicher für Details zur Funktionsweise des automatischen Speichers und zur Verwendung der Befehle /memory, /remember und /dream.
permissions
Das Berechtigungssystem bietet eine feinkörnige Kontrolle darüber, welche Tools ausgeführt werden dürfen, welche eine Bestätigung erfordern und welche blockiert sind.
Entscheidungspriorität (höchste zuerst): deny > ask > allow > (Standard/Interaktivmodus)
Die erste passende Regel gewinnt. Regeln verwenden das Format "ToolName" oder "ToolName(spezifizierer)".
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
permissions.allow | array of strings | Regeln für automatisch genehmigte Tool-Aufrufe (keine Bestätigung erforderlich). Werden über alle Bereiche (Benutzer + Projekt + System) hinweg zusammengeführt. | undefined |
permissions.ask | array of strings | Regeln für Tool-Aufrufe, die immer eine Benutzerbestätigung erfordern. Haben Vorrang vor allow. | undefined |
permissions.deny | array of strings | Regeln für blockierte Tool-Aufrufe. Höchste Priorität – überschreibt sowohl allow als auch ask. | undefined |
Toolname-Aliase (alle funktionieren in Regeln):
| Alias | Kanonisches Tool | Anmerkungen |
|---|---|---|
Bash, Shell | run_shell_command | |
Read, ReadFile | read_file | Meta-Kategorie – siehe unten |
Edit, EditFile | edit | Meta-Kategorie – siehe unten |
Write, WriteFile | write_file | |
NotebookEdit | notebook_edit | |
NotebookEditTool | notebook_edit | |
Grep, SearchFiles | grep_search | |
Glob, FindFiles | glob | |
ListFiles | list_directory | |
WebFetch | web_fetch | |
Agent | task | |
Skill | skill |
Meta-Kategorien:
Einige Regelnamen decken automatisch mehrere Tools ab:
| Regelname | Abgedeckte Tools |
|---|---|
Read | read_file, grep_search, glob, list_directory |
Edit | edit, write_file, notebook_edit |
[!important]
Read(/path/**)passt auf alle vier Lese-Tools (Dateilesen, grep, glob und Verzeichnisliste). Um nur das Dateilesen einzuschränken, verwenden SieReadFile(/path/**)oderread_file(/path/**).
Beispiele für Regelsyntax:
| Regel | Bedeutung |
|---|---|
"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-Lesevorgänge (read, grep, glob, list) |
"Read(./secrets/**)" | Jede Datei unter ./secrets/ rekursiv lesen |
"Edit(/src/**/*.ts)" | TypeScript-Dateien unter dem Projektstamm /src/ bearbeiten |
"WebFetch(api.example.com)" | Abruf von api.example.com und allen Subdomains |
"mcp__puppeteer" | Alle Tools des Puppeteer-MCP-Servers |
| Präfix für Pfadmuster: |
| Präfix | Bedeutung | Beispiel |
|---|---|---|
// | Absoluter Pfad ab Dateisystemstamm | //etc/passwd |
~/ | Relativ zum Benutzerverzeichnis | ~/Documents/*.pdf |
/ | Relativ zum Projektstamm | /src/**/*.ts |
./ | Relativ zum aktuellen Arbeitsverzeichnis | ./secrets/** |
| (keines) | Gleich wie ./ | secrets/** |
Umgehung von Shell-Befehlen verhindern:
Die Berechtigungsregeln für Read, Edit und WebFetch werden auch durchgesetzt, wenn der Agent entsprechende Shell-Befehle ausführt. Wenn beispielsweise Read(./.env) in deny enthalten ist, 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 weitere. Unbekannte/sichere Befehle (z.B. git) sind von den Datei-/Netzwerkregeln nicht betroffen.
Migration von alten Einstellungen:
| Alte Einstellung | Entsprechende permissions-Regel | Hinweise |
|---|---|---|
tools.allowed | permissions.allow | Wird beim ersten Laden automatisch migriert |
tools.exclude | permissions.deny | Wird beim ersten Laden automatisch migriert |
tools.core | permissions.allow (Zulassungsliste) | 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] Verwenden Sie
/permissionsin der interaktiven CLI, um Regeln anzuzeigen, hinzuzufügen und zu entfernen, ohnesettings.jsondirekt zu bearbeiten.
slashCommands
Steuert, welche Slash-Befehle in der CLI verfügbar sind. Nützlich, um die Befehlsoberfläche in Multi-Tenant- oder Unternehmensumgebungen einzuschränken.
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
slashCommands.disabled | Array von Zeichenketten | Namen von Slash-Befehlen, die ausgeblendet und nicht ausgeführt werden sollen. Groß-/Kleinschreibung wird beim Abgleich mit dem endgültigen Befehlsnamen nicht beachtet (bei Erweiterungsbefehlen ist dies die disambiguierte Form, z.B. myext.deploy). Als Vereinigung über verschiedene Bereiche hinweg zusammengeführt, sodass Arbeitsbereichseinstellungen Einträge hinzufügen, aber nicht entfernen können, die in Benutzer- oder Systemeinstellungen definiert sind. | undefined |
Die gleiche Sperrliste kann auch über das CLI-Flag --disabled-slash-commands (durch Kommas getrennt oder wiederholt) und die Umgebungsvariable QWEN_DISABLED_SLASH_COMMANDS bereitgestellt werden; Werte aus allen drei Quellen werden vereinigt.
Beispiel – integrierte Befehle für eine Sandbox-Umgebung 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 Sperrliste aus ihrem eigenen Bereich nicht verkleinern, und die deaktivierten Befehle werden weder in der Autovervollständigung angezeigt noch bei Eingabe ausgeführt.
[!note] Diese Einstellung steuert nur Slash-Befehle (z.B.
/auth,/mcp). Sie hat keine Auswirkungen auf Tool-Berechtigungen – siehe dazupermissions.deny. Sie fängt auch keine Tastaturkürzel wieStrg+CoderEscab.
mcp
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
mcp.serverCommand | Zeichenkette | Befehl zum Starten eines MCP-Servers. | undefined |
mcp.allowed | Array von Zeichenketten | Eine Zulassungsliste 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. Beachten Sie, dass dies ignoriert wird, wenn --allowed-mcp-server-names gesetzt ist. | undefined |
mcp.excluded | Array von Zeichenketten | Eine Sperrliste von MCP-Servern, die ausgeschlossen werden sollen. Ein Server, der sowohl in mcp.excluded als auch in mcp.allowed aufgeführt ist, wird ausgeschlossen. Beachten Sie, dass dies ignoriert wird, wenn --allowed-mcp-server-names gesetzt ist. | undefined |
[!note] Sicherheitshinweis für MCP-Server: Diese Einstellungen verwenden einfachen String-Abgleich auf MCP-Servernamen, der geändert werden kann. Wenn Sie als Systemadministrator verhindern möchten, dass Benutzer dies umgehen, sollten Sie die
mcpServersauf Systemebene so konfigurieren, dass der Benutzer keine eigenen MCP-Server konfigurieren kann. Dies sollte nicht als abgesicherter Sicherheitsmechanismus betrachtet werden.
lsp
[!warning] Experimentelle Funktion: Die LSP-Unterstützung ist derzeit experimentell und standardmäßig deaktiviert. Aktivieren Sie sie mit dem Befehlszeilen-Flag
--experimental-lsp.
Das Language Server Protocol (LSP) bietet Code-Intelligence-Funktionen wie Gehe-zu-Definition, Referenzen finden und Diagnosen.
Die Konfiguration des LSP-Servers erfolgt über .lsp.json-Dateien im Stammverzeichnis Ihres Projekts, nicht über settings.json. Weitere Konfigurationsdetails und Beispiele finden Sie in der LSP-Dokumentation.
security
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
security.folderTrust.enabled | boolean | Einstellung, um zu verfolgen, ob Ordnervertrauensstellung 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 | Ob ein externer Authentifizierungsablauf verwendet werden soll. | undefined |
advanced
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Node.js-Speichergrenzen automatisch konfigurieren. | false |
advanced.dnsResolutionOrder | string | Die DNS-Auflösungsreihenfolge. | undefined |
advanced.excludedEnvVars | array of strings | Umgebungsvariablen, die aus dem Projektkontext ausgeschlossen werden sollen. Legt Umgebungsvariablen fest, die nicht aus den .env-Dateien des Projekts geladen werden sollen. Dadurch wird verhindert, dass projektspezifische Umgebungsvariablen (wie DEBUG=true) das CLI-Verhalten beeinträchtigen. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | object | Konfiguration für den Fehlerbericht-Befehl. Ü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 |
plansDirectory | string | Benutzerdefiniertes Verzeichnis für genehmigte Plan-Modus-Dateien. Relative Pfade werden ausgehend vom Projektstammverzeichnis aufgelöst, und der aufgelöste Pfad muss innerhalb des Projektstammverzeichnisses bleiben. Wenn nicht gesetzt, werden Plan-Dateien in ~/.qwen/plans gespeichert. Erfordert Neustart. Wenn sich das Verzeichnis innerhalb des Projektstammverzeichnisses befindet, fügen Sie es zur .gitignore hinzu, um ein Einchecken von Plan-Dateien zu vermeiden. | undefined |
experimental
Experimentelle Funktionen. Diese Schalter aktivieren Funktionen in der Entwicklung und können sich in zukünftigen Versionen ändern oder entfernt werden.
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
experimental.cron | boolean | Aktiviert Sitzungs-interne Cron-/Loop-Tools (cron_create, cron_list, cron_delete), damit das Modell wiederkehrende Eingabeaufforderungen erstellen kann. Kann über die Umgebungsvariable QWEN_CODE_DISABLE_CRON=1 deaktiviert werden. Erfordert Neustart. | true |
experimental.agentTeam | boolean | Aktiviert Tools für die Zusammenarbeit im Agententeam (team_create, task_create, task_update, send_message usw.) für die Koordination mehrerer Agenten. Kann auch über QWEN_CODE_ENABLE_AGENT_TEAM=1 aktiviert werden. Erfordert Neustart. | false |
experimental.artifact | boolean | Aktiviert das Artifact-Tool, mit dem das Modell eine eigenständige HTML-Seite veröffentlichen und im Browser öffnen kann. Nur interaktive, nicht-SDK-Sitzungen. Umschaltbar über QWEN_CODE_ENABLE_ARTIFACT=1 / QWEN_CODE_DISABLE_ARTIFACT=1. Erfordert Neustart. | false |
experimental.emitToolUseSummaries | boolean | Erzeugt nach jedem abgeschlossenen Tool-Aufruf-Batch ein kurzes LLM-basiertes Label. Siehe Tool-Use Summaries. Erfordert ein konfiguriertes schnelles Modell (fastModel); wird ansonsten stillschweigend übersprungen. Kann sitzungsweise mit QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 oder =1 überschrieben werden. | true |
mcpServers
Konfiguriert Verbindungen zu einem oder mehreren Model‑Context‑Protocol (MCP)‑Servern zum Auffinden und Verwenden benutzerdefinierter Tools. Qwen Code versucht, eine Verbindung zu jedem konfigurierten MCP‑Server herzustellen, um verfügbare Tools zu erkennen. Wenn mehrere MCP‑Server ein Tool mit demselben Namen bereitstellen, werden die Toolnamen mit dem von Ihnen in der Konfiguration definierten Server‑Alias versehen (z. B. serverAlias__actualToolName), um Konflikte zu vermeiden. Beachten Sie, dass das System aus Kompatibilitätsgründen bestimmte Schemaeigenschaften aus MCP‑Tooldefinitionen entfernen kann. Mindestens eines von command, url oder httpUrl muss angegeben werden. Wenn mehrere angegeben werden, gilt folgende Prioritätsreihenfolge: httpUrl, dann url, dann command.
| Eigenschaft | Typ | Beschreibung | Optional |
|---|---|---|---|
mcpServers.<SERVER_NAME>.command | Zeichenkette | Der auszuführende Befehl zum Starten des MCP‑Servers über Standard‑I/O. | 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. | 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) zur Kommunikation verwendet. | Ja |
mcpServers.<SERVER_NAME>.httpUrl | Zeichenkette | Die URL eines MCP‑Servers, der streamable HTTP zur Kommunikation verwendet. | Ja |
mcpServers.<SERVER_NAME>.headers | Objekt | Eine Map 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 | Vertraue diesem Server und umgehe alle Bestätigungen von Tool‑Aufrufen. | Ja |
mcpServers.<SERVER_NAME>.description | Zeichenkette | Eine kurze Beschreibung des Servers, die zu Anzeigezwecken verwendet werden kann. | Ja |
mcpServers.<SERVER_NAME>.includeTools | Array von Zeichenketten | Liste der Toolnamen, die von diesem MCP‑Server eingeschlossen werden sollen. Wenn angegeben, sind nur die hier aufgeführten Tools von diesem Server verfügbar (Allowlist‑Verhalten). Falls nicht angegeben, sind standardmäßig alle Tools des Servers aktiviert. | Ja |
mcpServers.<SERVER_NAME>.excludeTools | Array von Zeichenketten | Liste der Toolnamen, die von diesem MCP‑Server ausgeschlossen werden sollen. Die hier aufgeführten Tools sind für das Modell nicht verfügbar, selbst wenn sie vom Server bereitgestellt werden. Hinweis: excludeTools hat Vorrang vor includeTools – wenn ein Tool in beiden Listen steht, wird es ausgeschlossen. | Ja |
Telemetrie
Konfiguriert die Protokollierung und Metriksammlung für Qwen Code. Weitere Informationen finden Sie unter Telemetrie.
| Einstellung | Typ | Beschreibung | Standard |
|---|---|---|---|
telemetry.enabled | boolean | Ob Telemetrie aktiviert ist oder nicht. | |
telemetry.target | string | Informationsbezeichnung für das Telemetrieziel (local oder gcp). Steuert nicht das Export-Routing; setzen Sie telemetry.otlpEndpoint oder telemetry.outfile, um zu konfigurieren, wohin Daten gesendet werden. | |
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 | Ob der Inhalt von Benutzer-Prompts in die Protokolle aufgenommen werden soll oder nicht. | |
telemetry.includeSensitiveSpanAttributes | boolean | Wenn aktiviert, fügt es wortgetreue Benutzer-Prompts, System-Prompts, Tool-Eingaben/-Ausgaben und Modellantworten zu nativen OTel-Span-Attributen hinzu (zusätzlich zu Log-to-Span-Bridge-Spans). ⚠️ Streamt sensible Daten – Dateiinhalte, Shell-Befehle, Gesprächsverlauf – an Ihr OTLP-Backend. | false |
telemetry.outfile | string | Pfad zum Schreiben der Telemetrie in eine Datei. Wenn gesetzt, überschreibt es den OTLP-Export. |
Beispiel settings.json
Hier ist ein Beispiel einer settings.json-Datei mit der verschachtelten Struktur, neu seit v0.3.0:
{
"proxy": "http://localhost:7890",
"plansDirectory": "./.qwen/plans",
"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,
"includeSensitiveSpanAttributes": false
},
"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 führt einen Verlauf der von Ihnen ausgeführten Shell-Befehle. Um Konflikte zwischen verschiedenen Projekten zu vermeiden, wird dieser Verlauf in einem projektspezifischen Verzeichnis innerhalb Ihres Benutzer-Home-Ordners gespeichert.
- Ort:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>ist ein eindeutiger Bezeichner, der aus dem Stammverzeichnis Ihres Projekts generiert wird.- Der Verlauf wird in einer Datei namens
shell_historygespeichert.
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 verschiedenen Umgebungen ändern können.
Qwen Code kann Umgebungsvariablen automatisch aus .env-Dateien laden.
Für authentifizierungsbezogene Variablen (wie OPENAI_*) und den empfohlenen Ansatz mit .qwen/.env siehe Authentifizierung.
Ausschluss von Umgebungsvariablen: Einige Umgebungsvariablen (wie DEBUG und DEBUG_MODE) werden standardmäßig automatisch aus Projekt-.env-Dateien ausgeschlossen, um Beeinträchtigungen des CLI-Verhaltens zu verhindern. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen. Sie können dieses Verhalten mit der Einstellung advanced.excludedEnvVars in Ihrer settings.json-Datei anpassen.
Tabelle der Umgebungsvariablen
| Variable | Beschreibung | Hinweise |
|---|---|---|
QWEN_HOME | Passt das globale Konfigurationsverzeichnis an (Standard: ~/.qwen). Akzeptiert einen absoluten oder relativen Pfad (relative Pfade werden vom aktuellen Arbeitsverzeichnis aus aufgelöst). Ein führendes ~ wird zum Home-Verzeichnis des Benutzers erweitert. | Speichert Anmeldedaten, Einstellungen, Speicher, Fähigkeiten und andere globale Zustände. Wenn gesetzt, sind projektbezogene .qwen/-Verzeichnisse davon nicht betroffen. Ein leerer String wird als nicht gesetzt behandelt. |
QWEN_RUNTIME_DIR | Überschreibt das Laufzeit-Ausgabeverzeichnis (Konversationen, Logs, Todos). Wenn nicht gesetzt, wird standardmäßig das QWEN_HOME-Verzeichnis verwendet. | Verwenden Sie dies, um flüchtige Laufzeitdaten von der persistenten Konfiguration zu trennen. Nützlich, wenn QWEN_HOME auf einem gemeinsamen/langsamen Dateisystem liegt. |
QWEN_TELEMETRY_ENABLED | Setzen Sie auf true oder 1, um Telemetrie zu aktivieren. Jeder andere Wert wird als Deaktivierung behandelt. | Überschreibt die Einstellung telemetry.enabled. |
QWEN_TELEMETRY_TARGET | Setzt ein informatives Label für das Telemetrieziel (local oder gcp). Steuert nicht das Routing; verwenden Sie QWEN_TELEMETRY_OTLP_ENDPOINT oder QWEN_TELEMETRY_OUTFILE, um zu konfigurieren, wohin die Daten gesendet werden. | Überschreibt die Einstellung telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Setzt den OTLP-Endpunkt für die Telemetrie. | Überschreibt die Einstellung telemetry.otlpEndpoint. |
QWEN_TELEMETRY_OTLP_PROTOCOL | Setzt das OTLP-Protokoll (grpc oder http). | Überschreibt die Einstellung telemetry.otlpProtocol. |
QWEN_TELEMETRY_LOG_PROMPTS | Setzen Sie auf true oder 1, um das Protokollieren von Benutzereingabeaufforderungen zu aktivieren oder zu deaktivieren. Jeder andere Wert wird als Deaktivierung behandelt. | Überschreibt die Einstellung telemetry.logPrompts. |
QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES | Setzen Sie auf true oder 1, um wörtliche Benutzereingabeaufforderungen, Systemanweisungen, Werkzeug-E/A und Modellantworten an native OTel-Span-Attribute anzuhängen (und prompt/function_args/response_text auf Log-to-Span-Bridge-Spans zu belassen). Jeder andere Wert deaktiviert dies. | Überschreibt die Einstellung telemetry.includeSensitiveSpanAttributes-Einstellung. ⚠️ Streamt sensible Daten an Ihr OTLP-Backend. |
QWEN_TELEMETRY_OUTFILE | Legt den Dateipfad fest, in den die Telemetrie geschrieben werden soll. Wenn gesetzt, überschreibt dies den OTLP-Export. | Überschreibt die Einstellung telemetry.outfile. |
QWEN_SANDBOX | Alternative zur sandbox-Einstellung in der settings.json. | Akzeptiert true, false, docker, podman oder einen benutzerdefinierten Befehl als Zeichenkette. |
QWEN_SANDBOX_IMAGE | Überschreibt die Auswahl des Sandbox-Images für Docker/Podman. | Hat Vorrang vor tools.sandboxImage. |
SEATBELT_PROFILE | (macOS-spezifisch) Wechselt das Seatbelt-Profil (sandbox-exec) auf macOS. | permissive-open: (Standard) Schränkt Schreibvorgänge auf den Projektordner (und einige andere Ordner, siehe packages/cli/src/utils/sandbox-macos-permissive-open.sb) ein, 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, erstellen Sie eine Datei namens sandbox-macos-<profile_name>.sb in Ihrem Projektverzeichnis .qwen/ (z. B. my-project/.qwen/sandbox-macos-custom.sb). |
DEBUG oder DEBUG_MODE | (häufig von zugrunde liegenden Bibliotheken oder der CLI selbst verwendet) Setzen Sie auf true oder 1, um ausführliches Debug-Logging zu aktivieren, das bei der Fehlerbehebung hilfreich sein kann. | Hinweis: Diese Variablen werden standardmäßig automatisch aus Projekt-.env-Dateien ausgeschlossen, um Beeinträchtigungen des CLI-Verhaltens zu verhindern. Verwenden Sie .qwen/.env-Dateien, wenn Sie diese speziell für Qwen Code setzen müssen. |
NO_COLOR | Setzen Sie auf einen beliebigen Wert, um die gesamte Farbausgabe in der CLI zu deaktivieren. | |
FORCE_HYPERLINK | Überschreibt die OSC-8-Erkennung von klickbaren Links im Markdown-Renderer. Setzen Sie auf 1 (oder eine beliebige ganze Zahl ungleich Null oder einen leeren String), um die Erzwingung zu aktivieren; setzen Sie auf 0 oder einen nicht-numerischen Wert wie false/off, um die Deaktivierung zu erzwingen. Beachtet NO_COLOR/QWEN_DISABLE_HYPERLINKS-Opt-outs, die darüber liegen. | Verwenden Sie dies, um OSC 8 in tmux/GNU screen zu aktivieren (die Autoerkennung lehnt standardmäßig ab, da die Fähigkeiten des Host-Terminals hinter dem Multiplexer verborgen sind). Erfordert set -g allow-passthrough on in tmux 3.3+. Aktiviert auch Hyper, das nicht automatisch erkannt wird. |
QWEN_DISABLE_HYPERLINKS | Setzen Sie auf 1, um OSC-8-klickbare Hyperlinks im Markdown-Renderer hart zu deaktivieren, selbst auf Terminals, die automatisch als fähig erkannt werden. | Nützlich, wenn ein Terminal Unterstützung anmeldet, aber bei langen URLs Probleme macht, oder wenn die Ausgabe durch eine Zwischenstation geleitet wird, die Escape-Sequenzen beschädigt. Der Renderer fällt dann auf die einfache label (url)-Darstellung zurück. |
CLI_TITLE | Setzen Sie auf eine Zeichenkette, um den Titel der CLI anzupassen. | |
CODE_ASSIST_ENDPOINT | Gibt den Endpunkt für den Code-Assist-Server an. | Dies ist nützlich für Entwicklung und Tests. |
QWEN_CODE_MAX_OUTPUT_TOKENS | Überschreibt die Standard-Maximalzahl der Ausgabetokens pro Antwort. Wenn nicht gesetzt, verwendet Qwen Code eine adaptive Strategie: Beginnt mit 8K Tokens und wiederholt automatisch mit 64K, wenn die Antwort abgeschnitten ist. Setzen Sie einen bestimmten Wert (z. B. 16000), um stattdessen eine feste Grenze zu verwenden. | Hat Vorrang vor dem gedeckelten Standardwert (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_RETRY | Setzen Sie auf true oder 1, um den persistenten Wiederholungsmodus zu aktivieren. Wenn aktiviert, werden vorübergehende API-Kapazitätsfehler (HTTP 429 Rate Limit und 529 Overloaded) unbegrenzt mit exponentiellem Backoff (maximal 5 Minuten pro Wiederholung) und Heartbeat-Keepalives alle 30 Sekunden auf stderr wiederholt. | Entwickelt für CI/CD-Pipelines und Hintergrundautomatisierung, bei denen langlebige Aufgaben 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_STARTUP | Setzen Sie auf 1, um das Startzeit-Leistungsprofil zu aktivieren. Schreibt einen JSON-Zeitbericht in ~/.qwen/startup-perf/ mit Zeitangaben pro Phase. | Nur aktiv innerhalb des Sandbox-Kindprozesses (oder mit QWEN_CODE_PROFILE_STARTUP_OUTER=1). Kein Overhead, wenn nicht gesetzt. Beispiel: export QWEN_CODE_PROFILE_STARTUP=1 |
QWEN_CODE_PROFILE_STARTUP_OUTER | Setzen Sie auf 1 zusammen mit QWEN_CODE_PROFILE_STARTUP=1, um auch ein Startprofil im äußeren (vor der Sandbox) Prozess zu sammeln. Berichte des äußeren Prozesses erhalten ein outer--Dateinamenspräfix, um sie vom Bericht des Sandbox-Kindprozesses zu unterscheiden. | Standardmäßig ausgeschaltet – nur der Sandbox-Kindprozess sammelt, um doppelte Berichte zu vermeiden. Nützlich für lokale Entwicklung, bei der die CLI nicht erneut in eine Sandbox gestartet wird. |
QWEN_CODE_PROFILE_STARTUP_NO_HEAP | Setzen Sie auf 1 zusammen mit QWEN_CODE_PROFILE_STARTUP=1, um die process.memoryUsage()-Schnappschüsse pro Prüfpunkt zu überspringen. Nützlich, wenn Sie den eigenen Heisenberg-Overhead des Profilers messen möchten. | Standardmäßig ausgeschaltet. Heap-Schnappschüsse kosten jeweils etwa 50 µs (deutlich unter 1 % der gesamten Startzeit), daher sollten die meisten Benutzer dies unverändert lassen. |
QWEN_CODE_LEGACY_MCP_BLOCKING | Setzen Sie auf 1, um das alte Verhalten vor dem progressiven MCP wiederherzustellen, bei dem Config.initialize() synchron auf den Discovery-Handshake jedes konfigurierten MCP-Servers wartet, bevor es zurückkehrt. | Standardmäßig ausgeschaltet. Modernes qwen-code lässt MCP-Server im Hintergrund online gehen, während die Benutzeroberfläche bereits interaktiv ist; das Modell sieht jede Charge neuer Tools innerhalb von etwa 16 ms, nachdem der Server bereit ist. Dieses Flag wird als Rollback-Notausstieg für mindestens eine Version beibehalten. Beispiel: export QWEN_CODE_LEGACY_MCP_BLOCKING=1 |
Wenn beide .env-Dateien auf Benutzerebene dieselbe Variable definieren, gewinnt die Qwen-spezifische Datei: <QWEN_HOME>/.env (oder ~/.qwen/.env, wenn QWEN_HOME nicht gesetzt ist) wird vor ~/.env geladen, und bestehende Umgebungsvariablen werden nicht überschrieben. |
Befehlszeilenargumente
Direkt beim Ausführen der CLI übergebene Argumente können andere Konfigurationen für diese Sitzung überschreiben.
Für die Auswahl des Sandbox-Images gilt die folgende Rangfolge: --sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > integriertes Standard-Image.
Tabelle der Befehlszeilenargumente
| Argument | Alias | Beschreibung | Mögliche Werte | Anmerkungen |
|---|---|---|---|---|
--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 | Wird verwendet, um einen Prompt direkt an den Befehl zu übergeben. Dies ruft Qwen Code im nicht-interaktiven Modus auf. | Ihr Prompttext | Verwenden Sie für Skriptbeispiele das Flag --output-format json, um strukturierte Ausgaben zu erhalten. |
--prompt-interactive | -i | Startet eine interaktive Sitzung mit dem angegebenen Prompt als anfängliche Eingabe. | Ihr Prompttext | Der Prompt wird innerhalb der interaktiven Sitzung verarbeitet, nicht davor. Kann nicht verwendet werden, wenn Eingaben von stdin weitergeleitet werden. Beispiel: qwen -i "explain this code" |
--system-prompt | Überschreibt den integrierten System-Prompt der Hauptsitzung für diesen Durchlauf. | Ihr Prompttext | Geladene Kontextdateien wie QWEN.md werden nach dieser Überschreibung weiterhin angehängt. Kann mit --append-system-prompt kombiniert werden. | |
--append-system-prompt | Hängt zusätzliche Anweisungen an den System-Prompt der Hauptsitzung für diesen Durchlauf an. | Ihr Prompttext | Wird nach dem integrierten Prompt und den geladenen Kontextdateien angewendet. Kann mit --system-prompt kombiniert werden. Siehe Headless Mode für Beispiele. | |
--output-format | -o | Gibt das Format der CLI-Ausgabe für den nicht-interaktiven Modus an. | text, json, stream-json | text: (Standard) Die standardmäßige menschenlesbare Ausgabe. json: Eine maschinenlesbare JSON-Ausgabe, die am Ende der Ausführung ausgegeben wird. stream-json: Streaming von JSON-Nachrichten, die während der Ausführung ausgegeben werden. Für strukturierte Ausgaben und Skripterstellung verwenden Sie das Flag --output-format json oder --output-format stream-json. Siehe Headless Mode für detaillierte Informationen. |
--input-format | Gibt das Format an, das von der Standardeingabe gelesen wird. | text, stream-json | text: (Standard) Standardtexteingabe von stdin oder Befehlszeilenargumenten. stream-json: JSON-Nachrichtenprotokoll ü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-messages | Schließt partielle Assistant-Nachrichten bei Verwendung des Ausgabeformats stream-json ein. Wenn aktiviert, werden Stream-Ereignisse (message_start, content_block_delta usw.) ausgegeben, 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-Ereignissen. | ||
--sandbox | -s | Aktiviert den Sandbox-Modus für diese Sitzung. | ||
--sandbox-image | Setzt die URI des Sandbox-Images. | |||
--debug | -d | Aktiviert den Debug-Modus für diese Sitzung, der eine ausführlichere Ausgabe bietet. | ||
--all-files | -a | Wenn gesetzt, werden rekursiv alle Dateien im aktuellen Verzeichnis als Kontext für den Prompt eingeschlossen. | ||
--help | -h | Zeigt Hilfeinformationen zu Befehlszeilenargumenten an. | ||
--show-memory-usage | Zeigt die aktuelle Speichernutzung an. | |||
--yolo | Aktiviert den YOLO-Modus, der alle Tool-Aufrufe automatisch genehmigt. | |||
--approval-mode | Legt den Genehmigungsmodus für Tool-Aufrufe fest. | plan, default, auto-edit, auto, yolo | Unterstützte Modi: plan: Nur analysieren – keine Dateien ändern oder Befehle ausführen. default: Genehmigung für Dateibearbeitungen oder Shell-Befehle erforderlich (Standardverhalten). auto-edit: Bearbeitungstools (edit, write_file, notebook_edit) automatisch genehmigen, bei anderen nachfragen. auto: Der LLM-Klassifikator genehmigt sichere Aktionen automatisch und blockiert riskante. yolo: Alle Tool-Aufrufe automatisch genehmigen (entspricht --yolo). Kann nicht zusammen mit --yolo verwendet werden. Verwenden Sie --approval-mode=yolo anstelle von --yolo für den neuen einheitlichen Ansatz. Beispiel: qwen --approval-mode auto-editWeitere Informationen zum Genehmigungsmodus. | |
--allowed-tools | Eine durch Kommas getrennte Liste von Toolnamen, die den Bestätigungsdialog umgehen. | Toolnamen | Beispiel: qwen --allowed-tools "Shell(git status)" | |
--disabled-slash-commands | Slash-Befehlsnamen, die ausgeblendet/deaktiviert werden sollen (kommagetrennt oder wiederholt). Vereinigt mit der Einstellung slashCommands.disabled und der Umgebungsvariable QWEN_DISABLED_SLASH_COMMANDS. Groß-/Kleinschreibung wird beim Abgleich mit dem endgültigen Befehlsnamen nicht beachtet. | Befehlsnamen | Beispiel: qwen --disabled-slash-commands "auth,mcp,extensions" | |
--telemetry | Aktiviert Telemetrie. | |||
--telemetry-target | Setzt das Telemetrieziel. | Siehe Telemetrie für weitere Informationen. | ||
--telemetry-otlp-endpoint | Setzt den OTLP-Endpunkt für Telemetrie. | Siehe Telemetrie für weitere Informationen. | ||
--telemetry-otlp-protocol | Setzt das OTLP-Protokoll für Telemetrie (grpc oder http). | Standardmäßig grpc. Siehe Telemetrie für weitere Informationen. | ||
--telemetry-log-prompts | Aktiviert die Protokollierung von Prompts für Telemetrie. | Siehe Telemetrie für weitere Informationen. | ||
--acp | Aktiviert den ACP-Modus (Agent Client Protocol). Nützlich für IDE/Editor-Integrationen wie Zed. | Stabil. Ersetzt das veraltete Flag --experimental-acp. | ||
--experimental-lsp | Aktiviert die experimentelle LSP (Language Server Protocol)-Funktion für Code-Intelligenz (Gehe-zu-Definition, Referenzen finden, Diagnose usw.). | Experimentell. Erfordert installierte Sprachserver. | ||
--extensions | -e | Gibt eine Liste der für die Sitzung zu verwendenden Erweiterungen an. | Erweiterungsnamen | Wenn nicht angegeben, werden alle verfügbaren Erweiterungen verwendet. Verwenden Sie den speziellen Begriff qwen -e none, um alle Erweiterungen zu deaktivieren. Beispiel: qwen -e my-extension -e my-other-extension |
--list-extensions | -l | Listet alle verfügbaren Erweiterungen auf und beendet sich. | ||
--proxy | Setzt den Proxy für die CLI. | Proxy-URL | Beispiel: --proxy http://localhost:7890. | |
--include-directories | Schließt zusätzliche Verzeichnisse in den Arbeitsbereich für die Unterstützung mehrerer Verzeichnisse ein. | Verzeichnispfade | Kann mehrfach oder als durch Kommas getrennte 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-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 die Protokollierung von OpenAI-API-Aufrufen für Debugging und Analyse. | Dieses Flag überschreibt die Einstellung enableOpenAILogging in settings.json. | ||
--openai-logging-dir | Setzt einen benutzerdefinierten Verzeichnispfad für OpenAI-API-Protokolle. | Verzeichnispfad | Dieses Flag überschreibt die Einstellung openAILoggingDir in settings.json. Unterstützt absolute Pfade, relative Pfade und ~-Erweiterung. Beispiel: qwen --openai-logging-dir "~/qwen-logs" --openai-logging |
Kontextdateien (Hierarchischer Anweisungskontext)
Obwohl sie nicht streng zur Konfiguration des Verhaltens der CLI gehören, sind Kontextdateien (standardmäßig QWEN.md, aber über die Einstellung context.fileName konfigurierbar) entscheidend für die Konfiguration des Anweisungskontexts (auch als “Speicher” bezeichnet). Diese leistungsstarke Funktion ermöglicht es Ihnen, projektspezifische Anweisungen, Codierungsstilrichtlinien oder andere relevante Hintergrundinformationen an die KI zu geben, wodurch ihre Antworten maßgeschneiderter und genauer auf Ihre Bedürfnisse zugeschnitten werden. Die CLI enthält UI-Elemente, wie z. B. einen Indikator in der Fußzeile, der die Anzahl der geladenen Kontextdateien anzeigt, um Sie über den aktiven Kontext zu informieren.
- Zweck: Diese Markdown-Dateien enthalten Anweisungen, Richtlinien oder Kontext, den das Qwen-Modell während Ihrer Interaktionen kennen soll. Das System ist darauf ausgelegt, diesen Anweisungskontext hierarchisch zu verwalten.
Beispiel für den Inhalt einer Kontextdatei (z. B. QWEN.md)
Hier ist ein konzeptionelles Beispiel dafür, was eine Kontextdatei im Stammverzeichnis eines TypeScript-Projekts enthalten könnte:
# Projekt: Meine geniale TypeScript-Bibliothek
## Allgemeine Anweisungen:
- Generiere neuen TypeScript-Code bitte gemäß dem bestehenden Codierungsstil.
- Stelle sicher, dass alle neuen Funktionen und Klassen JSDoc-Kommentare haben.
- Bevorzuge funktionale Programmierparadigmen, wo angemessen.
- Der gesamte Code sollte mit TypeScript 5.0 und Node.js 22+ kompatibel sein.
## Codierungsstil:
- Verwende 2 Leerzeichen für die Einrückung.
- Schnittstellennamen sollten mit `I` beginnen (z. B. `IUserService`).
- Private Klassenmitglieder sollten mit einem Unterstrich (`_`) beginnen.
- Verwende immer strikte Gleichheit (`===` und `!==`).
## Spezifische Komponente: `src/api/client.ts`
- Diese Datei verwaltet alle ausgehenden API-Anfragen.
- Wenn neue API-Aufruffunktionen hinzugefügt werden, stelle sicher, dass sie robuste Fehlerbehandlung und Protokollierung enthalten.
- Verwende das vorhandene `fetchWithRetry`-Dienstprogramm für alle GET-Anfragen.
## Bezüglich Abhängigkeiten:
- Vermeide die Einführung neuer externer Abhängigkeiten, es sei denn, es ist unbedingt notwendig.
- Wenn eine neue Abhängigkeit erforderlich ist, gib bitte den Grund an.Dieses Beispiel zeigt, wie Sie allgemeinen Projektkontext, spezifische Codierungskonventionen und sogar Notizen zu bestimmten Dateien oder Komponenten bereitstellen können. Je relevanter und präziser Ihre Kontextdateien sind, desto besser kann die KI Sie unterstützen. Projektspezifische Kontextdateien werden dringend empfohlen, um Konventionen und Kontext festzulegen.
- Hierarchisches Laden und Vorrang: Die CLI implementiert ein hierarchisches Speichersystem, indem sie Kontextdateien (z. B.
QWEN.md) von mehreren Speicherorten lädt. Inhalte aus Dateien, die in dieser Liste weiter unten stehen (spezifischer), überschreiben oder ergänzen in der Regel Inhalte aus Dateien weiter oben (allgemeiner). Die genaue Verkettungsreihenfolge und der endgültige Kontext können über das/memory-Dialogfeld eingesehen werden. Die typische Ladereihenfolge ist:- Globale Kontextdatei:
- Speicherort:
~/.qwen/<konfigurierter-Kontextdateiname>(z. B.~/.qwen/QWEN.mdin Ihrem Benutzerhome-Verzeichnis). - Gültigkeitsbereich: Stellt Standardanweisungen für alle Ihre Projekte bereit.
- Speicherort:
- Projektstamm & übergeordnete Kontextdateien:
- Speicherort: Die CLI sucht im aktuellen Arbeitsverzeichnis und dann in jedem übergeordneten Verzeichnis bis zum Projektstamm (identifiziert durch einen
.git-Ordner) oder Ihrem Home-Verzeichnis nach der konfigurierten Kontextdatei. - Gültigkeitsbereich: Stellt Kontext bereit, der für das gesamte Projekt oder einen wesentlichen Teil davon relevant ist.
- Speicherort: Die CLI sucht im aktuellen Arbeitsverzeichnis und dann in jedem übergeordneten Verzeichnis bis zum Projektstamm (identifiziert durch einen
- Globale Kontextdatei:
- Verkettung & UI-Anzeige: Die Inhalte aller gefundenen Kontextdateien werden verkettet (mit Trennzeichen, die ihre Herkunft und den Pfad angeben) und als Teil des System-Prompts bereitgestellt. Die CLI-Fußzeile zeigt die Anzahl der geladenen Kontextdateien an und gibt Ihnen so einen schnellen visuellen Hinweis auf den aktiven Anweisungskontext.
- Importieren von Inhalten: Sie können Ihre Kontextdateien modularisieren, indem Sie andere Markdown-Dateien mit der Syntax
@pfad/zu/datei.mdimportieren. Weitere Details finden Sie in der Speicher-Dokumentation. - Befehle zur Speicherverwaltung:
- Verwenden Sie
/memory, um das Speicherverwaltungsdialogfeld zu öffnen. - Aktualisieren Sie den Speicher über das Dialogfeld, um Kontextdateien von allen konfigurierten Speicherorten erneut zu scannen und zu laden.
- Die vollständigen Details zum Befehl
/memoryfinden Sie in der Befehls-Dokumentation.
- Verwenden Sie
Durch das Verständnis und die Nutzung dieser Konfigurationsebenen und der hierarchischen Natur von Kontextdateien können Sie den Speicher der KI effektiv verwalten und die Antworten von Qwen Code auf Ihre spezifischen Anforderungen und Projekte zuschneiden.
Sandbox
Qwen Code kann potenziell unsichere Operationen (wie Shell-Befehle und Dateiänderungen) in einer Sandbox-Umgebung ausführen, um Ihr System zu schützen.
Sandbox ist standardmäßig deaktiviert, aber Sie können sie auf verschiedene Weise aktivieren:
- Verwenden des Flags
--sandboxoder-s. - Setzen der Umgebungsvariablen
QWEN_SANDBOX. - Setzen von
tools.sandboxin den Einstellungen.
⚠️
--yoloaktiviert nicht automatisch eine Sandbox. Der YOLO-Modus genehmigt nur Tool-Aufrufe automatisch; die Sandbox muss weiterhin über--sandbox,QWEN_SANDBOXodertools.sandboxaktiviert werden. Bei headless / nicht-interaktiven Ausführungen mit--yolo(oder--approval-mode=yolo) und ohne Sandbox kann das Modell Shell-, Schreib- und Bearbeitungswerkzeuge mit den Berechtigungen des aktuellen Prozesses ausführen – Qwen Code gibt in diesem Fall eine Warnung auf stderr aus. Unterdrücken Sie diese mitQWEN_CODE_SUPPRESS_YOLO_WARNING=1, sobald Sie den Kompromiss geprüft haben. Standardmäßig verwendet es ein vorgefertigtes Docker-Imageqwen-code-sandbox.
Für projektspezifische Sandbox-Anforderungen können Sie im Stammverzeichnis Ihres Projekts eine benutzerdefinierte Dockerdatei unter .qwen/sandbox.Dockerfile erstellen. Diese Dockerdatei kann auf dem Basis-Sandbox-Image basieren:
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-configWenn .qwen/sandbox.Dockerfile existiert, können Sie beim Ausführen von Qwen Code die Umgebungsvariable BUILD_SANDBOX verwenden, um automatisch das benutzerdefinierte Sandbox-Image zu erstellen:
BUILD_SANDBOX=1 qwen -sNutzungsstatistiken
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 Funktionen zu priorisieren.
Was wir sammeln:
- Tool-Aufrufe: Wir protokollieren die Namen der aufgerufenen Tools, ob sie erfolgreich sind oder fehlschlagen und wie lange sie zur Ausführung benötigen. Wir sammeln nicht die an die Tools übergebenen Argumente oder die von ihnen zurückgegebenen Daten.
- API-Anfragen: Wir protokollieren das für jede Anfrage verwendete Modell, die Dauer der Anfrage und ob sie erfolgreich war. Wir sammeln nicht den Inhalt der Eingabeaufforderungen oder Antworten.
- Sitzungsinformationen: Wir sammeln Informationen über die Konfiguration der CLI, wie die aktivierten Tools und den Genehmigungsmodus.
Was wir NICHT sammeln:
- Personenbezogene Daten (PII): Wir sammeln keine persönlichen Informationen wie Ihren Namen, Ihre E-Mail-Adresse oder API-Schlüssel.
- Inhalt von Eingabeaufforderungen und Antworten: Wir protokollieren nicht den Inhalt Ihrer Eingabeaufforderungen oder die Antworten des Modells.
- Dateiinhalte: Wir protokollieren nicht den Inhalt von Dateien, die von der CLI gelesen oder geschrieben werden.
So deaktivieren Sie die Datenerfassung:
Sie können die Sammlung von Nutzungsstatistiken jederzeit deaktivieren, indem Sie die Eigenschaft usageStatisticsEnabled unter der Kategorie privacy in Ihrer settings.json-Datei auf false setzen:
{
"privacy": {
"usageStatisticsEnabled": false
}
}Wenn Nutzungsstatistiken aktiviert sind, werden Ereignisse an einen Alibaba Cloud RUM-Erfassungsendpunkt gesendet.