Skip to Content
BenutzerhandbuchKonfigurationEinstellungen

Qwen Code Konfiguration

Tip

Authentifizierung / API-Keys: Die Authentifizierung (API Key, Alibaba Cloud Coding Plan) und auth-bezogene 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 umgestellt. Das alte Format wird automatisch migriert. Qwen Code bietet verschiedene Möglichkeiten, sein Verhalten zu konfigurieren, darunter Umgebungsvariablen, Befehlszeilenargumente und Einstellungsdateien. Dieses Dokument beschreibt die verschiedenen Konfigurationsmethoden und verfügbaren Einstellungen.

Konfigurationsebenen

Die Konfiguration wird in der folgenden Prioritätsreihenfolge angewendet (niedrigere Zahlen werden durch höhere Zahlen überschrieben):

EbeneKonfigurationsquelleBeschreibung
1StandardwerteHartcodierte Standardwerte innerhalb der Anwendung
2System-StandarddateiSystemweite Standardeinstellungen, die durch andere Einstellungsdateien überschrieben werden können
3Benutzer-EinstellungsdateiGlobale Einstellungen für den aktuellen Benutzer
4Projekt-EinstellungsdateiProjektspezifische Einstellungen
5System-EinstellungsdateiSystemweite Einstellungen, die alle anderen Einstellungsdateien überschreiben
6UmgebungsvariablenSystemweite oder sitzungsspezifische Variablen, die möglicherweise aus .env-Dateien geladen werden
7BefehlszeilenargumenteBeim Starten der CLI übergebene Werte

Einstellungsdateien

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

DateitypSpeicherortGültigkeitsbereich
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 mit der Umgebungsvariable QWEN_CODE_SYSTEM_DEFAULTS_PATH überschrieben werden.
Bietet eine Basisebene systemweiter Standardeinstellungen. Diese Einstellungen haben die niedrigste Priorität und sind dafür gedacht, durch Benutzer-, Projekt- oder System-Override-Einstellungen überschrieben zu werden.
Benutzer-Einstellungsdatei~/.qwen/settings.json (wobei ~ dein Home-Verzeichnis ist).Gilt für alle Qwen Code-Sitzungen des aktuellen Benutzers.
Projekt-Einstellungsdatei.qwen/settings.json im Stammverzeichnis deines Projekts.Gilt nur, wenn Qwen Code aus diesem bestimmten Projekt heraus ausgeführt wird. Projekteinstellungen überschreiben Benutzereinstellungen.
System-EinstellungsdateiLinux: /etc/qwen-code/settings.json
Windows: C:\ProgramData\qwen-code\settings.json
macOS: /Library/Application Support/QwenCode/settings.json
Der Pfad kann mit der Umgebungsvariable QWEN_CODE_SYSTEM_SETTINGS_PATH überschrieben werden.
Gilt für alle Qwen Code-Sitzungen auf dem System, für alle Benutzer. Systemeinstellungen überschreiben Benutzer- und Projekteinstellungen. Kann für Systemadministratoren in Unternehmen nützlich sein, um die Qwen Code-Setups der Benutzer zu kontrollieren.
Note

Hinweis zu Umgebungsvariablen in Einstellungen: String-Werte in deinen settings.json-Dateien können über die Syntax $VAR_NAME oder ${VAR_NAME} auf Umgebungsvariablen verweisen. Diese Variablen werden beim Laden der Einstellungen automatisch aufgelöst. Wenn du beispielsweise eine Umgebungsvariable MY_API_TOKEN hast, kannst du sie in der settings.json wie folgt verwenden: "apiKey": "$MY_API_TOKEN".

Das .qwen-Verzeichnis in deinem Projekt

Zusätzlich zur Projekt-Einstellungsdatei kann das .qwen-Verzeichnis eines Projekts weitere projektspezifische Dateien enthalten, die sich auf den Betrieb von Qwen Code beziehen, wie zum Beispiel:

Konfigurationsmigration

Qwen Code migriert ältere Konfigurationseinstellungen automatisch in das neue Format. Alte Einstellungsdateien werden vor der Migration gesichert. Die folgenden Einstellungen wurden von einer negativen (disable*) zu einer positiven (enable*) Benennung umbenannt:

Alte EinstellungNeue EinstellungHinweise
disableAutoUpdate + disableUpdateNaggeneral.enableAutoUpdateIn eine einzige Einstellung zusammengefasst
disableLoadingPhrasesui.accessibility.enableLoadingPhrases
disableFuzzySearchcontext.fileFiltering.enableFuzzySearch
disableCacheControlmodel.generationConfig.enableCacheControl
Note

Umkehrung von Boolean-Werten: Bei der Migration werden Boolean-Werte umgekehrt (z. B. wird aus disableAutoUpdate: true ein enableAutoUpdate: false).

Konsolidierungsrichtlinie für disableAutoUpdate und disableUpdateNag

Wenn beide Legacy-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 in das entsprechende Top-Level-Kategorieobjekt in deiner settings.json-Datei eingefügt werden. Einige Top-Level-Einstellungen wie proxy und plansDirectory bleiben aus Kompatibilitätsgründen direkte Root-Keys.

general

EinstellungTypBeschreibungStandardwert
general.preferredEditorstringDer bevorzugte Editor zum Öffnen von Dateien.undefined
general.vimModebooleanVim-Tastenkombinationen aktivieren.false
general.enableAutoUpdatebooleanAutomatische Update-Prüfungen und -Installationen beim Start aktivieren.true
general.showSessionRecapbooleanAutomatisch eine einzeilige Zusammenfassung (“wo du aufgehört hast”) anzeigen, wenn du nach einer Abwesenheit zum Terminal zurückkehrst. Standardmäßig deaktiviert. Verwende /recap, um sie manuell auszulösen, unabhängig von dieser Einstellung.false
general.sessionRecapAwayThresholdMinutesnumberMinuten, die das Terminal den Fokus verloren haben muss, bevor beim erneuten Fokussieren eine automatische Zusammenfassung ausgelöst wird. Wird nur verwendet, wenn showSessionRecap aktiviert ist.5
general.gitCoAuthor.commitbooleanFügt Git-Commit-Nachrichten einen “Co-authored-by”-Trailer hinzu UND fügt eine dateibasierte KI-Zuweisungs-Notiz (refs/notes/ai-attribution) für über Qwen Code erstellte Commits hinzu. Deaktivieren überspringt beides.true
general.gitCoAuthor.prbooleanHängt Pull-Request-Beschreibungen beim Ausführen von gh pr create eine Qwen Code-Zuweisungszeile an.true
general.defaultFileEncodingenumStandardkodierung 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 spezifisch ein BOM erfordert."utf-8"
general.voice.enabledbooleanSprachdiktat in der Prompt-Eingabe aktivieren. Kann auch mit dem Befehl /voice umgeschaltet werden. Erfordert die Konfiguration eines Transkriptionsmodells (voiceModel).false
general.voice.modeenumVerhalten von Push-to-Talk: "hold", um zu sprechen, während die Taste gedrückt gehalten wird, oder "tap", um zu starten und durch erneutes Tippen (oder Pausieren) zu stoppen und abzusenden."hold"
general.voice.languagestringBevorzugte gesprochene Sprache für die Sprachtranskription (z. B. "english", "chinese"). Leer lassen für automatische Erkennung.""
general.voice.keytermsFilestringPfad zu einer benutzerdefinierten Keyterms-Datei (ein Begriff pro Zeile, # für Kommentare), die die Sprachtranskription in Richtung domänenspezifischer Begriffe lenkt. Relative Pfade werden vom Workspace-Root aufgelöst; Standard ist .qwen/voice-keyterms.txt, wenn vorhanden. Wird nur in vertrauenswürdigen Workspaces gelesen. Gilt nur für Qwen ASR-Modelle (qwen3-asr-*).""
general.voice.refineTranscriptbooleanBereinigt Sprachtranskripte mit dem Fast-Modell vor dem Einfügen – entfernt Füllwörter und korrigiert Erkennungsfehler, während die Bedeutung erhalten bleibt. Fällt bei einem Fehler auf das Rohtranskript zurück und wird übersprungen, wenn kein Fast-Modell konfiguriert ist.true
general.cleanupPeriodDaysnumberTage, die ~/.qwen/file-history/ Sitzungs-Backups aufbewahrt werden, die von /rewind verwendet werden. Backups, die älter als dieser Wert sind, werden durch einen Hintergrundlauf entfernt, der höchstens einmal pro Tag ausgeführt wird. 0 = minimale Aufbewahrung (~1 Stunde): behält Sitzungen, die in der letzten Stunde bearbeitet wurden, plus die aktuell aktive. Änderungen werden nach einem Neustart wirksam.30
general.languageenumSprache der Benutzeroberfläche. Verwende "auto", um sie aus den Systemeinstellungen zu erkennen, oder einen Sprachcode (z. B. "zh-CN", "fr"). Benutzerdefinierte Codes können hinzugefügt werden, indem JS-Locale-Dateien in ~/.qwen/locales/ abgelegt werden. Siehe i18n. Erfordert einen Neustart."auto"
general.outputLanguagestringSprache für die Modellausgabe. Verwende "auto", um sie aus den Systemeinstellungen zu erkennen, oder stelle eine bestimmte Sprache ein. Erfordert einen Neustart."auto"
general.dynamicCommandTranslationbooleanKI-Übersetzung von Beschreibungen dynamischer Slash-Befehle aktivieren. Wenn deaktiviert, behalten dynamische Befehle ihre ursprünglichen Beschreibungen und Überspringen Aufrufe des Übersetzungsmodells.false
general.terminalBellbooleanGibt einen Terminal-Bell-Sound aus, wenn eine Antwort abgeschlossen ist oder eine Genehmigung benötigt.true
general.preventSystemSleepbooleanVerhindert, dass das System in den Ruhezustand geht, während Qwen Code eine Modellantwort streamt oder Tools ausführt. Leerlaufzeit des Prompts und Berechtigungsabfragen verhindern den Ruhezustand nicht. Wird einmalig beim Start gelesen, Änderungen werden also erst nach einem Neustart wirksam.true
general.chatRecordingbooleanChat-Verlauf auf der Festplatte speichern. Das Deaktivieren verhindert auch, dass --continue und --resume funktionieren. Erfordert einen Neustart.true

output

SettingTypeBeschreibungDefaultMögliche Werte
output.formatstringDas Format der CLI-Ausgabe. Bei stream-json verhalten sich mit einem Prompt gestartete Runs nicht-interaktiv (headless), entsprechend --output-format stream-json. Zur argv-Parse-Zeit validierte Flags (--include-partial-messages, --input-format stream-json) erfordern weiterhin das explizite Flag --output-format stream-json."text""text", "json", "stream-json"
output.showTimestampsbooleanZeigt einen [HH:MM:SS] Zeitstempel vor jeder Assistant-Antwort an.false

review

SettingTypeBeschreibungDefault
review.attributionbooleanHängt den Attributions-Footer mit Modell- und CLI-Version (z. B. _— qwen3-coder via Qwen Code /review (v0.21.2)_) an Review-Bodys und Inline-Kommentare an, die von /review gepostet werden. Deaktivieren, um Reviews ohne sichtbare KI-Attribution zu posten: der Footer wird weggelassen und gepostete Kommentare und Body-Listen verlieren ihre **[Critical]**/**[Suggestion]**-Marker. Die Posts bleiben im Raw-Source identifizierbar: jeder trägt einen unsichtbaren Schweregrad-Marker (<!-- qwen-review critical -->) und der Review-Body trägt einen Ledger-Marker (<!-- qwen-review-ledger ... -->) — alles, was Kommentar-Bodys liest (GitHub-API-Automatisierung, die Workflows, die diese Einstellung koppelt), erkennt weiterhin ein /review-Artefakt, und die Presubmit-Duplikaterkennung erkennt frühere Posts des Review-Accounts am Schweregrad-Marker, obwohl nicht-attribuierte Posts anderer Accounts ihr entgehen. Weitere Konsequenz: qwen-autofix’s Critical-only-Modus (aktiviert nach Runde 5, oder früher wenn das Diff-Wachstums-Budget eines Zählfensters auslöst) erkennt die geposteten Ergebnisse nicht mehr als Critical und schiebt sie auf. Das Deaktivieren entzieht auch das Modell aus dem Machine-Ledger-Marker im Review-Body, sodass in einer frischen Umgebung (CI, ein anderes Clone — überall ohne Review-Cache) der inkrementelle Anker aus dem zuletzt geposteten Review die Same-Model-Prüfung fehlschlägt und das Re-Review auf den vollen Bereich zurückfällt.true
review.effortenumStandard-Aufwand für /review, wenn --effort nicht angegeben wird: "low", "medium", "high" oder "auto" (die eingebaute Regel: high für PRs, medium für lokale Änderungen). Ein explizites --effort hat Vorrang; ein wirksames --comment erzwingt weiterhin high und --fix setzt weiterhin mindestens medium."auto"
review.commentbooleanBehandelt jedes PR-/review so, als ob --comment übergeben wurde: Findings werden ohne das Flag an den Pull Request gepostet. Der Post bindet weiterhin an den in der Invocation genannten PR. Nur aktivieren, wenn Reviews immer veröffentlicht werden sollen.false
review.severityFloorenumDer niedrigste Schweregrad, den ein PR-/review postet, wenn --severity-floor nicht angegeben wird: "auto" (der rundenadaptive Standard – Suggestions werden bis Runde 5 gepostet, ab Runde 6 nur Criticals, wobei sonst postbare high-confidence Suggestions erfasst und aufgeschoben werden, und Runden 2–5 neue Suggestions auf Code unverändert seit der Vorrunde aufschieben; low-confidence und Nice-to-have-Findings bleiben terminal-only), "critical" (diese Haltung ab Runde 1) oder "suggestion" (Suggestions werden in jeder Runde gepostet; schaltet die Konvergenz-Haltung ab). Nicht-PR-Ziele haben keine Runden und ignorieren dies."auto"
review.reverseAuditRoundsnumberSenkt die Runden-Obergrenze der Reverse-Audit-Schleife für jedes High-Effort-Review. Die Obergrenze folgt ansonsten der Diff-Topologie (10 klein / 5 gechunkt; ein riesiges Diff ist 3 mit Review-Deadline und 5 ohne). Kann nur die jeweils geltende Stufe senken: ein Wert unter 3, über der Stufe oder keine ganze Zahl über null wird ignoriert. Das Kürzen der Obergrenze lässt Reviews nicht schneller konvergieren — die Schleife endet bei zwei aufeinanderfolgenden trockenen Runden — sondern führt dazu, dass sie häufiger vor der Konvergenz stoppen, und jeder solche Stopp deckelt das Fazit auf Comment.0 (nicht gesetzt)

Diese Einstellungen werden nur aus Operator-Scopes gelesen (User, System und SystemDefaults); Werte in einer Workspace-.qwen/settings.json werden ignoriert, sodass ein Repository keine Review-Policy für seine Reviewer setzen kann.

ui

SettingTypeBeschreibungDefault
ui.themestringDas Farbtheme für die UI. Siehe Themes für verfügbare Optionen."Qwen Dark"
ui.customThemesobjectBenutzerdefinierte Theme-Definitionen.{}
ui.statusLineobjectBenutzerdefinierte Statuszeilen-Konfiguration. Unterstützt die Optionen command, refreshInterval, respectUserColors und hideContextIndicator. Siehe Status Line.undefined
ui.hideWindowTitlebooleanBlendet die Fenstertitelleiste aus.false
ui.hideTipsbooleanBlendet alle Tipps (beim Start und nach der Antwort) in der UI aus. Siehe Contextual Tips.false
ui.hideBannerbooleanBlendet das ASCII-Logo und das Info-Panel beim Start aus. Tipps und Chat-Eingabe werden weiterhin gerendert, es sei denn, ui.hideTips ist ebenfalls gesetzt.false
ui.customBannerTitlestringErsetzt den Standardtitel >_ Qwen Code im Info-Panel des Banners. Das Versions-Suffix (vX.Y.Z) wird immer angehängt; Auth-, Model- und Pfadzeilen sind nicht betroffen. Bereinigt; auf 80 Zeichen begrenzt.""
ui.customBannerSubtitlestringOptionale Untertitelzeile, die zwischen dem Banner-Titel und der Auth/Model-Zeile anstelle der leeren Trennzeile gerendert wird. Bereinigt; auf 160 Zeichen begrenzt. Leer (Standard) behält die ursprüngliche leere Trennzeile bei.""
ui.customAsciiArtstring | objectErsetzt das QWEN ASCII-Logo im Banner. Akzeptiert einen Inline-String (wird für beide Breitenstufen verwendet), { "path": "./brand.txt" } (relative Pfade werden relativ zum Verzeichnis der besitzenden Einstellungsdatei aufgelöst; einmalig beim Start mit O_NOFOLLOW unter POSIX gelesen, auf 64 KB begrenzt) oder { "small": ..., "large": ... } für die breitenabhängige Auswahl. Bereinigt; auf 200 Zeilen × 200 Spalten pro Stufe begrenzt.undefined
ui.showLineNumbersbooleanZeigt Zeilennummern in Codeblöcken in der CLI-Ausgabe an.true
ui.renderModestringStandard-Markdown-Anzeigemodus. Verwende "render" für formatierte visuelle Vorschauen oder "raw", um standardmäßig quelltextorientiertes 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.showCitationsbooleanZeigt Quellenangaben für generierten Text im Chat an.false
ui.history.collapseOnResumebooleanGibt 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.history.collapsePreviewCountnumberAnzahl der neuesten Benutzereingaben, die sichtbar bleiben, wenn ui.history.collapseOnResume aktiviert ist. 0 klappt standardmäßig den gesamten wiederhergestellten Verlauf ein; -1 zeigt den gesamten wiederhergestellten Verlauf an.0
ui.compactModebooleanIm Terminal-UI ausgemustert. Die CLI zeigt jetzt immer die kompakte, typbasierte Tool-Ansicht im Haupttranskript; drücke Ctrl+O, um den erweiterten Detailmodus umzuschalten (alle Thinking-Blöcke und Tool-Ausgaben ein-/ausblenden), anstatt einen Modus umzuschalten. Wird weiterhin von der Web Shell berücksichtigt.false
ui.shellOutputMaxLinesnumberMaximale Anzahl der inline angezeigten Shell-Ausgabezeilen. Setze auf 0, um das Limit zu deaktivieren und die vollständige Ausgabe anzuzeigen. Ausgeblendete Zeilen werden über den +N lines Indikator angezeigt. Fehler, benutzerinitiierte Befehle mit !-Präfix, Tool-Bestätigungen und fokussierte eingebettete Shells zeigen immer die vollständige Ausgabe an.5
ui.enableWelcomeBackbooleanZeigt den Willkommen-zurück-Dialog an, wenn du zu einem Projekt mit Gesprächsverlauf 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, deine vorherige Konversation fortzusetzen oder neu zu beginnen. Wenn du Start new chat session wählst, wird diese Auswahl für das aktuelle Projekt gespeichert, bis sich die Projektzusammenfassung ändert. Dieses Feature integriert sich mit dem /summary Befehl und dem Beenden-Bestätigungsdialog.true
ui.accessibility.enableLoadingPhrasesbooleanAktiviert Lade-Phrasen (für 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 des Ladens angezeigt werden. Wenn angegeben, durchläuft die CLI diese Phrasen anstelle der Standardphrasen.[]
ui.showResponseTokensPerSecondbooleanZeigt eine Live-Schätzung der Tokens/Sek neben dem Antwort-Token-Zähler an, während das Modell streamt. Dies ist ein Hinweis auf die Generierungsgeschwindigkeit, keine ETA oder kein Fertigstellungsprozentsatz. Wird in der nächsten Sitzung wirksam.false
ui.enableFollowupSuggestionsbooleanAktiviert Folgevorschläge, die vorhersagen, was du als Nächstes tippen möchtest, nachdem das Modell geantwortet hat. Vorschläge erscheinen als Platzhaltertext und werden mit Tab, Enter oder der Pfeil-nach-rechts-Taste akzeptiert (wodurch die Eingabe gefüllt wird – sie werden nicht automatisch abgesendet). Standardmäßig aktiviert; setze auf false, um dies zu deaktivieren.true
ui.enableCacheSharingbooleanVerwendet Cache-bewusste Fork-Abfragen für die Vorschlagsgenerierung. Reduziert die Kosten bei Providern, die Prefix-Caching unterstützen (experimentell).true
ui.enableSpeculationbooleanFührt akzeptierte Vorschläge spekulativ vor der Übermittlung aus. Ergebnisse erscheinen sofort, wenn du akzeptierst (experimentell).false
ui.showStatusInTitlebooleanZeigt den Qwen Code-Sitzungsnamen und -status im Terminal-Fenstertitel an.true
ui.disableWorkflowKeywordTriggerbooleanWenn true, lenkt die Erwähnung des Wortes workflow in einem Prompt den Turn nicht mehr sanft in Richtung des Workflow-Tools (und der Footer-Indikator workflow active wird unterdrückt). Gilt nur, wenn Workflows aktiviert sind.false
ui.enableUserFeedbackbooleanZeigt nach Konversationen einen optionalen Feedback-Dialog an, um die Verbesserung der Qwen-Performance zu unterstützen.true
ui.compactInlinebooleanKompakte Tool-Anzeige innerhalb jeder Gruppe, anstatt über Gruppen hinweg zusammenzuführen. Erfordert, dass ui.compactMode aktiviert ist. Erfordert Neustart.false
ui.useTerminalBufferbooleanRendert den Gesprächsverlauf in einem scrollbaren In-App-Viewport anstelle des Terminal-Scrollback-Puffers. Standardmäßig in kompatiblen interaktiven Terminals aktiviert, um Flackern, Scroll-Sturm und einfrierende Benutzeroberflächen bei langen Sitzungen zu vermeiden. Scrolle mit Shift+↑/↓ (Zeile), PgUp/PgDn (Seite), Ctrl+Home/End (Anfang/Ende) oder dem Mausrad. Verwendet nicht den Scrollback-Puffer des Host-Terminals, während es aktiviert ist; ziehe zum Auswählen von Text (Doppel-/Dreifachklick wählt ein Wort/eine Zeile), oder halte Shift (oder Option unter macOS) beim Ziehen für die eigene Auswahl des Terminals. Mausinteraktionen (Rad, Ziehen, Klick, Hover) erfordern ui.mouseTracking (standardmäßig aktiv).true
ui.showScrollbarbooleanZeigt die automatisch ausgeblendete Scrollbar im scrollbaren In-App-Viewport (Virtualized History) an. Die Leiste erscheint beim Scrollen und blendet bei Inaktivität aus. Deaktiviere diese Option, um sie komplett auszublenden. Gilt nur für die interaktive Terminal-UI.true
ui.mouseTrackingbooleanAktiviert das SGR-Maus-Tracking in der App für Textauswahl, Klick-zu-Position in Texteingaben, Zeilen-Hover, Umschalten von History-Elementen und Viewport-Scrolling. Während es aktiviert ist, leitet das Terminal alle Mausereignisse an die App weiter, sodass native Rechtsklick-Kontextmenüs und OSC-8-Hyperlink-Klicks nicht verfügbar sind. Deaktiviere es, um native Rechtsklicks und klickbare URL-Links wiederherzustellen; dies schaltet alle Mausinteraktionen in der App aus, und im Virtualized History scrollt das Rad nicht mehr das Transkript – verwende stattdessen Shift+↑/↓, PgUp/PgDn oder Ctrl+Home/End (kombiniere mit ui.useTerminalBuffer: false, um den nativen Terminal-Scrollback wiederherzustellen). Gilt nur für die interaktive Terminal-UI.true
ui.hideBuiltinWorktreeIndicatorbooleanBlendet die eingebaute ⎇ worktree-<branch> (<slug>) Zeile im Footer aus. Der Worktree-Status wird weiterhin über die stdin-Payload an benutzerdefinierte Statusline-Skripte übergeben. Behalte den Standardwert bei, es sei denn, deine benutzerdefinierte Statuszeile rendert den Worktree selbst.false

ide

EinstellungTypBeschreibungStandard
ide.enabledbooleanAktiviert den IDE-Integrationsmodus.false
ide.hasSeenNudgebooleanGibt an, ob der Benutzer den IDE-Integrationshinweis bereits gesehen hat.false

privacy

EinstellungTypBeschreibungStandard
privacy.usageStatisticsEnabledbooleanAktiviert die Erfassung von Nutzungsstatistiken.true

model

EinstellungTypBeschreibungStandard
model.namestringDas für Konversationen zu verwendende Qwen-Modell.undefined
model.reasoningEffortenumLegt fest, wie stark reasoning-fähige Modelle denken, angewendet über alle Provider hinweg. Wird mit dem Befehl /effort gesetzt (low, medium, high, xhigh, max). Jeder Provider mappt und begrenzt diesen Wert auf das, was das aktive Modell unterstützt (z. B. begrenzt Gemini auf high; Anthropic clamppt Stufen, die einem Modell fehlen). Nicht setzen, um den Standardwert des Modells/Providers zu verwenden.undefined
model.baseUrlstringWird automatisch vom Model Picker persistiert, um Mehrdeutigkeiten aufzulösen, wenn mehrere modelProviders-Einträge dieselbe Modell-ID teilen. Nicht zur manuellen Bearbeitung gedacht – verwende stattdessen den /model-Picker oder einen modelProviders-Eintrag; ein veralteter, manuell geänderter Wert kann Anfragen stillschweigend an einen anderen Provider mit derselben ID umleiten.undefined
model.sessionTokenLimitnumberMaximal erlaubte, aufgezeichnete Prompt-Token-Anzahl vor dem Senden der nächsten Nachricht. -1 bedeutet unbegrenzt; 0 wird ebenfalls als unbegrenzt behandelt (im Gegensatz zu model.maxToolCalls, wo 0 alle Aufrufe verbietet). Wenn die aufgezeichnete Prompt-Anzahl das Limit überschreitet, wird das nächste Senden verworfen (die Session wird nicht abgebrochen).-1
model.maxSessionTurnsintegerMaximale Anzahl an User/Model/Tool-Turns, die in einer Session behalten werden. -1 bedeutet unbegrenzt.-1
model.maxWallTimeSecondsnumberWall-Clock-Budget für Headless-/Unattended-Runs in Sekunden. -1 bedeutet unbegrenzt. Kann pro Aufruf über --max-wall-time überschrieben werden, was eine positive Dauer erfordert (90, 30s, 5m, 1h, 1.5h); das Minimum ist 1 Sekunde – Sub-Sekunden-Werte (500ms, 0.5) werden als Tippfehler abgelehnt. Lasse den Flag weg, um auf diese Einstellung zurückzufallen. Bricht mit Exit-Code 55 ab, wenn das Limit überschritten wird.-1
model.maxToolCallsnumberKumulatives Tool-Call-Budget für einen Run (zählt jeden ausgeführten Tool-Aufruf, unabhängig von Erfolg oder Misserfolg; structured_output unter --json-schema ist ausgenommen). -1 bedeutet unbegrenzt; 0 bedeutet “keine Tool-Aufrufe erlaubt”. Auf 1.000.000 begrenzt, um Tippfehler abzufangen. Überschreibbar über --max-tool-calls. Bricht mit Exit-Code 55 ab, wenn das Limit überschritten wird.-1
model.maxSubagentDepthnumberMaximale Sub-Agent-Verschachtelungstiefe (1-basierte Ebenen: ein Top-Level-Sub-Agent ist Ebene 1). 1 hält Sub-Agenten verfügbar, deaktiviert aber die Verschachtelung – das Verhalten vor der Einführung von Nesting. Werte werden auf den Bereich 1–100 begrenzt; nicht-endliche Werte fallen auf den Standardwert zurück. Teammates, Forks und workflow-erzeugte Agenten verschachteln sich unabhängig von dieser Einstellung niemals. Überschreibbar über --max-subagent-depth.5
model.generationConfigobjectErweiterte Overrides, die an den zugrunde liegenden Content-Generator übergeben werden. Unterstützt Request-Controls wie timeout, maxRetries, retryInitialDelayMs, retryMaxDelayMs, enableCacheControl, splitToolMedia (Standard true; teilt von Tools zurückgegebene Medien – einschließlich Bilder, die von der integrierten read_file-Funktion gelesen werden – in eine nachfolgende User-Message auf, anstatt in die spezifikationsverletzende role: "tool"-Message, damit strikte OpenAI-kompatible Server wie doubao / new-api / LM Studio sie sehen können; setze false, um das Legacy-Verhalten “embed-in-tool” wiederherzustellen), toolResultContentFormat (Standard "parts"; setze nur "string" für Legacy-OpenAI-kompatible Runtimes, deren Tool-Templates Text-Content-Parts ignorieren), contextWindowSize (überschreibt die Context-Window-Größe des Modells), modalities (überschreibt automatisch erkannte Input-Modalitäten), customHeaders (benutzerdefinierte HTTP-Header für API-Requests) und extra_body (zusätzliche Body-Parameter nur für OpenAI-kompatible API-Requests), zusammen mit Feinjustierungs-Reglern unter samplingParams (z. B. temperature, top_p, max_tokens). Nicht setzen, um sich auf die Provider-Standards zu verlassen.undefined
model.chatCompression.contextPercentageThresholdnumberENTFERNT. Ersetzt durch context.autoCompactThreshold (siehe Abschnitt #### context unten). Auto-Compaction verwendet jetzt eine dreistufige Threshold-Leiter (warn / auto / hard), die intern aus dem Context-Window des Modells über die Funktion computeThresholds() berechnet wird. Die alte Einstellung wird stillschweigend ignoriert (keine Startup-Warnung). Siehe PR #4345 / docs/design/auto-compaction-threshold-redesign.md für die Begründung des Redesigns.N/A
model.chatCompression.maxRecentFilesToRetainnumberAnzahl der zuletzt geänderten Dateien, deren aktueller Inhalt nach der Auto-Compaction in die Historie wiederhergestellt wird (eingebettet, wenn klein, sonst per Pfad referenziert). 0 stellt keine wieder her. Env-Override: QWEN_COMPACT_MAX_RECENT_FILES.5
model.chatCompression.maxRecentImagesToRetainnumberAnzahl der neuesten Bilder (Tool-Screenshots / User-Pastes), die nach der Auto-Compaction in die Historie wiederhergestellt werden. 0 stellt keine wieder her. Env-Override: QWEN_COMPACT_MAX_RECENT_IMAGES.3
model.chatCompression.enableScreenshotTriggerbooleanWenn true, wird die Auto-Compaction auch ausgelöst, sobald die Anzahl der in der Historie angesammelten, von Tools zurückgegebenen Bilder screenshotTriggerThreshold erreicht, unabhängig vom Token-Verbrauch – gedacht für Computer-Use-Sessions, in denen häufige Screenshots die Aufmerksamkeit des Modells verwässern. Zählt nur Bilder, die innerhalb von Tool-Ergebnissen zurückgegeben werden, nicht vom User eingefügte Bilder. Env-Override: QWEN_COMPACT_SCREENSHOT_TRIGGER (1/true/0/false).true
model.chatCompression.screenshotTriggerThresholdnumberAnzahl der von Tools zurückgegebenen Bilder, ab der der Screenshot-Trigger auslöst (nur wenn enableScreenshotTrigger). Die Compaction setzt den Zähler zurück – überlebende Bilder werden als Top-Level-Parts neu eingebettet, was der Trigger nicht zählt – sodass er nicht sofort erneut auslöst. Env-Override: QWEN_COMPACT_SCREENSHOT_THRESHOLD.20
model.skipNextSpeakerCheckbooleanÜberspringt die nächste Speaker-Prüfung.true
model.skipLoopDetectionbooleanDeaktiviert die Streaming-Loop-Detection-Prüfungen. Standardmäßig true (Loop-Detection wird übersprungen), um False Positives zu vermeiden, die legitime Workflows unterbrechen. Setze auf false, um die Streaming-Loop-Detection wieder zu aktivieren – nützlich als Guardrail in Headless-/Non-Interactive-Runs, wo festgefahrene Wiederholungen sonst Budget verschwenden. In Daemon-/ACP-Sessions, die keinen der anderen Streaming-Detektoren ausführen, aktiviert das Wiederaktivieren auch einen globalen Duplicate-Tool-Call-Halt; der immer aktive pro-Turn-Tool-Call-Cap und ein Invalid-Tool-Params-Stagnation-Guard laufen dort unabhängig von dieser Einstellung.true
model.maxToolCallsPerTurnintegerObergrenze für Tool-Aufrufe pro Turn (ein Model-Turn plus dessen Tool-Result-Fortsetzungen; blockierende Stop-Hook-Fortsetzungen wie /goal-Iterationen starten ein neues Budget). Wenn explizit gesetzt, ist dieser Wert eine harte Obergrenze: der Turn hält beim nächsten Tool-Call danach an (das veröffentlichte Verhalten). Wenn nicht gesetzt (Standard 100), ist die Obergrenze adaptiv: sobald der Turn 100 überschreitet, hält er nur an, wenn das Modell denselben Aufruf wiederholt (festgefahrene Schleife); ein produktiver Turn (unterschiedliche Aufrufe) läuft bis zu einer harten Obergrenze von 1000 weiter, die immer anhält. Der adaptive Standard gilt für die interaktive TUI, nicht-interaktive (-p / JSON / stream-JSON) Core-Client-Runs und Daemon-/ACP-Sessions gleichermaßen. Daemon-/ACP-Sessions werten die Obergrenze einmal pro Tool-Batch aus, vor der Ausführung: ein Batch, der eine explizite Obergrenze oder die harte Obergrenze überschreiten würde, wird komplett übersprungen, sodass ein Turn nie über eine der beiden hinaus ausgeführt wird (er kann bis zu einem Batch davor anhalten), während die adaptive Soft-Obergrenze konstruktionsbedingt bis zur Obergrenze überschritten wird. Sie haben auch keine In-Session-Deaktivierung. Immer aktiver Circuit Breaker gegen durchdrehende Turns, unabhängig von model.skipLoopDetection. Setze auf 0 oder einen negativen Wert, um die Obergrenze zu deaktivieren. Die Auswahl von “Disable loop detection for this session” im Loop-Detected-Dialog unterdrückt sie ebenfalls für den Rest der Session.100
model.skipStartupContextbooleanÜberspringt das Senden des Startup-Workspace-Kontexts (Zusammenfassung der Umgebung und Bestätigung) zu Beginn jeder Session. Aktiviere dies, wenn du den Kontext lieber manuell bereitstellst oder beim Startup Tokens sparen möchtest.false
model.enableOpenAILoggingbooleanAktiviert das Logging von OpenAI-API-Aufrufen zu Debugging- und Analysezwecken. Wenn aktiviert, werden API-Requests und -Responses in JSON-Dateien protokolliert.false
model.openAILoggingDirstringBenutzerdefinierter Verzeichnispfad für OpenAI-API-Logs. Wenn nicht angegeben, ist der Standardwert logs/openai im aktuellen Arbeitsverzeichnis. Unterstützt absolute Pfade, relative Pfade (aufgelöst vom aktuellen Arbeitsverzeichnis) und ~-Expansion (Home-Verzeichnis).undefined
model.openAILogRetentionDaysnumberTage, die OpenAI-API-Logdateien aufbewahrt werden, wenn model.enableOpenAILogging aktiviert ist. Abgeschlossene Hintergrund-Housekeeping-Durchläufe laufen höchstens einmal pro Tag in interaktiven, Headless-, Stream-JSON-SDK- und ACP-Sessions. Kurzlebige nicht-interaktive Prozesse machen Best-Effort-Fortschritt, während persistente Prozesse bis zum Abschluss scannen. 0 = minimale Aufbewahrung (~1 Stunde). Für ein benutzerdefiniertes model.openAILoggingDir konfiguriere die Aufbewahrung auf User- oder System-Scope; Workspace-scoped Aufbewahrung wird übersprungen, da ein benutzerdefiniertes Verzeichnis von mehreren Workspaces geteilt werden kann. Änderungen werden nach einem Neustart wirksam.7
Beispiel für 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 } } } }

timeout (Request-Timeout):

timeout ist das Timeout pro Request in Millisekunden (Standard 120000). Setze es auf 0, um das Request-Timeout zu deaktivieren – entsprechend der Konvention QWEN_STREAM_IDLE_TIMEOUT_MS=0 – anstatt den Request abzubrechen. Es kann auch über die Umgebungsvariable QWEN_CODE_API_TIMEOUT_MS gesetzt werden. Dies ist verschieden von den beiden Stream-Guards unten.

Stream-Guards (nur OpenAI-kompatible Provider):

Zwei Guards begrenzen eine Streaming-Antwort, jeder akzeptiert 0 zum Deaktivieren. Keiner wird von den Anthropic/Gemini-Generatoren implementiert, die die unten beschriebene tröpfchenweise Form unbegrenzt lassen.

  • QWEN_STREAM_IDLE_TIMEOUT_MS (Standard 240000) begrenzt die Inaktivität zwischen gestreamten Chunks: Ein Stream, der so lange schweigt, wird als wiederholbares ETIMEDOUT abgebrochen.
  • QWEN_STREAM_MAX_LIFETIME_MS (Standard 900000) begrenzt die gesamte Upstream-Wartezeit einer Streaming-Antwort unabhängig vom Chunk-Fluss – die Obergrenze für einen tröpfchenweisen Stream, der nie abschließen kann, sich nie zurücksetzen kann.

Dies sind ausschließlich Umgebungsvariablen (oder für Embedder ContentGeneratorConfig.streamIdleTimeoutMs / streamMaxLifetimeMs) – es gibt keinen settings.json-Key; "streamMaxLifetimeMs" in settings.json zu schreiben hat keine Wirkung. Upgrade-Hinweise: Ein Deployment, das zuvor QWEN_STREAM_IDLE_TIMEOUT_MS=0 gesetzt hat – oder streamIdleTimeoutMs: 0 in ContentGeneratorConfig übergeben hat – um Stream-Abbrüche zu deaktivieren, benötigt jetzt auch QWEN_STREAM_MAX_LIFETIME_MS=0 (oder streamMaxLifetimeMs: 0), um dies beizubehalten; und die 15-Minuten-Lifetime-Obergrenze begrenzt auch einen Stream, dessen Idle-Timeout darüber angehoben wurde (z. B. QWEN_STREAM_IDLE_TIMEOUT_MS=1800000) – hebe die Obergrenze ebenfalls an oder setze sie auf 0, wenn du ein längeres Fenster benötigst.

max_tokens (Output-Token-Limit):

Wenn weder samplingParams.max_tokens noch QWEN_CODE_MAX_OUTPUT_TOKENS gesetzt ist, verwendet Qwen Code in der Regel das deklarierte Output-Limit des ausgewählten Modells als Standard-Output-Limit für den Request. Wenn die Antwort dennoch dieses Limit erreicht, kann Qwen Code einen Retry mit einem erhöhten Limit (mit einer Untergrenze von 64K) durchführen und dann über Fortsetzungs-Turns hinweg fortfahren.

Für OpenAI-kompatible Provider ist samplingParams auch ein Escape Hatch für das Wire-Format: Wenn es gesetzt ist, werden seine Schlüssel unverändert durchgereicht und Qwen Code synthetisiert keinen max_tokens-Standardwert. Verwende dies für provider-spezifische Parameter wie max_completion_tokens.

Um ein festes Output-Limit zu erzwingen, setze samplingParams.max_tokens in deinen Einstellungen oder verwende die Umgebungsvariable QWEN_CODE_MAX_OUTPUT_TOKENS. Explizite Limits deaktivieren die automatische Eskalation der Output-Token.

toolResultContentFormat:

Steuert, wie reine Text-Tool-Ergebnisse in OpenAI-kompatiblen Requests serialisiert werden. Der Standardwert "parts" behält die Standardform des Content-Part-Arrays bei. Setze "string" nur für Legacy-OpenAI-kompatible Runtimes, deren Tool-Templates Text-Content-Parts ignorieren, wie z. B. ältere GLM-5.1 vLLM/SGLang-Templates. Von Tools zurückgegebene Medien werden weiterhin durch splitToolMedia gesteuert.

contextWindowSize:

Überschreibt die Standardgröße des Context Windows für das ausgewählte Modell. Qwen Code bestimmt das Context Window anhand eingebauter Standardwerte basierend auf Model-Namens-Matching, mit einem konstanten Fallback-Wert. Verwende diese Einstellung, wenn das effektive Context-Limit eines Providers von der Qwen Code-Standardvorgabe abweicht. Dieser Wert definiert die angenommene maximale Context-Kapazität des Modells, nicht ein Token-Limit pro Request.

Wenn das ausgewählte Modell in modelProviders definiert ist, setze contextWindowSize in der generationConfig dieses Provider-Eintrags anstelle der Top-Level-model.generationConfig. Provider-Model-Einträge sind versiegelt (sealed), daher füllen Top-Level-Generation-Einstellungen fehlende Provider-Felder nicht auf.

modalities:

Überschreibt die automatisch erkannten Input-Modalitäten für das ausgewählte Modell. Qwen Code erkennt unterstützte Modalitäten (Bild, PDF, Audio, Video) automatisch basierend auf Model-Namens-Mustern. Verwende diese Einstellung, wenn die automatische Erkennung inkorrekt ist – zum Beispiel, 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 Schlüssel weg oder setze ihn auf false für nicht unterstützte Typen.

customHeaders:

Ermöglicht das Hinzufügen benutzerdefinierter HTTP-Header zu allen API-Requests. Dies ist nützlich für Request-Tracing, Monitoring, API-Gateway-Routing oder wenn verschiedene Modelle unterschiedliche Header erfordern. Für Provider-Modelle definiere customHeaders in modelProviders[].generationConfig.customHeaders. Für Runtime-Modelle ohne passenden Provider-Eintrag definiere es in model.generationConfig.customHeaders. Zwischen den beiden Ebenen erfolgt kein Merging.

Das Feld extra_body ermöglicht das Hinzufügen benutzerdefinierter Parameter zum an die API gesendeten Request-Body. Dies ist nützlich für provider-spezifische Optionen, die nicht von den Standard-Konfigurationsfeldern 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. Für Provider-Modelle definiere extra_body in modelProviders[].generationConfig.extra_body. Für Runtime-Modelle ohne passenden Provider-Eintrag definiere es in model.generationConfig.extra_body.

Beispiele für model.openAILoggingDir:

  • "~/qwen-logs" - Loggt in das Verzeichnis ~/qwen-logs
  • "./custom-logs" - Loggt in ./custom-logs relativ zum aktuellen Verzeichnis
  • "/tmp/openai-logs" - Loggt in den absoluten Pfad /tmp/openai-logs

fastModel

EinstellungTypBeschreibungStandard
fastModelstringModell, das zur Generierung von Prompt-Vorschlägen und spekulativer Ausführung verwendet wird. 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.""

advisorModel

EinstellungTypBeschreibungStandard
advisorModelstringModell, das von /advisor für Second-Opinion-Überprüfungen der Konversation verwendet wird. Leer lassen, um das Hauptmodell zu verwenden. Ein mindestens gleichwertiges Modell wie das Hauptmodell wird empfohlen. Die Einstellung sendet das aktuelle Konversationstranskript an dieses Modell, auch wenn es einen anderen Provider verwendet.""

visionModel

EinstellungTypBeschreibungStandard
visionModelstringBildfähiges Modell, das als Vision-Bridge verwendet wird: Wenn ein reines Text-Hauptmodell ein Bild empfängt oder read_file den begrenzten PDF-Visual-Fallback benötigt, wird es zuerst von diesem Modell transkribiert. Die explizite Einstellung autorisiert Bridge-Aufrufe an dieses Modell, auch wenn es einen anderen Provider verwendet; die Tool-Anzeige zeigt den Endpunkt an. Leer lassen, um automatisch ein Vision-Modell desselben Providers auszuwählen. Kann auch über /model --vision gesetzt werden.""

compactionModel

EinstellungTypBeschreibungStandard
compactionModelstringModell, das für die Chat-Komprimierung (Auto-Compaction) verwendet wird. Leer lassen, um auf das Hauptmodell zurückzufallen. Ein kleineres oder schnelleres Modell kann die Komprimierungslatenz und -kosten reduzieren. Kann auch über /model --compaction gesetzt oder gelöscht werden.""

imageModel

EinstellungTypBeschreibungStandard
imageModelstringModell, das vom integrierten image_gen-Tool verwendet wird. Die ausgewählte Route muss supportsImageGeneration: true (oder das Legacy imageOnly: true) setzen und eine HTTPS-baseUrl sowie envKey in modelProviders deklarieren. Leer lassen, um das Tool nicht verfügbar zu halten. Kann auch über /model --image gesetzt werden.""

visionBridgeTimeoutMs

EinstellungTypBeschreibungStandard
visionBridgeTimeoutMsintegerTimeout in Millisekunden pro Versuch für den Vision-Bridge-Bildtranskriptionsaufruf (positive Ganzzahl bis 2147483647; die Bridge wiederholt einen Timeout-Versuch einmal mit einem frischen Timeout). Nicht gesetzt verwendet den eingebauten Wert von 30s. Erhöhen für langsame oder proxied Vision-Endpunkte.nicht gesetzt

voiceModel

EinstellungTypBeschreibungStandard
voiceModelstringModell, das für die Sprachtranskription verwendet wird. Leer lassen, um die Spracheingabe deaktiviert zu lassen, bis ein Sprachmodell ausgewählt wird. Kann auch über /model --voice gesetzt werden.""

modelFallbacks

EinstellungTypBeschreibungStandard
modelFallbacksstringGeordnete Liste von Fallback-Modell-IDs (kommagetrennt, max. 3), die versucht werden, wenn das primäre Modell auf Kapazitätsfehler (429/503/529) trifft. Beispiel: "qwen-plus,qwen-turbo". Kann auch über den CLI-Flag --fallback-model gesetzt werden. Erfordert einen Neustart.""

modelPricing

EinstellungTypBeschreibungStandard
modelPricingobjectOptionale preisliche Angaben pro Modell für die Kostenschätzung in /stats model. Beispiel: { "qwen3-coder": { "inputPerMillionTokens": 0.30, "outputPerMillionTokens": 1.20 } }.undefined

context

EinstellungTypBeschreibungStandard
context.fileNamestring oder Array von StringsDer Name der Kontextdatei(en).undefined
context.autoCompactThresholdnumberZiel-Bruchteil des Context Windows, bei dem die automatische Komprimierung ausgelöst wird. Muss größer als 0 und höchstens 1 sein. Standard ist 0.85 (85 %). Wirkt als Obergrenze für den Trigger: Bei großen Fenstern ist er der effektive Trigger (~85 %), während bei kleineren Fenstern die Komprimierung früher auslösen kann, um Platz zum Zusammenfassen zu schaffen. Ersetzt den alten model.chatCompression.contextPercentageThreshold.undefined (verwendet intern 0.85)
context.importFormatstringDas Format, das beim Importieren von Memory verwendet werden soll.undefined
context.includeDirectoriesarrayZusätzliche Verzeichnisse, die in den Workspace-Kontext einbezogen werden sollen. Gibt ein Array zusätzlicher absoluter oder relativer Pfade an, die in den Workspace-Kontext einbezogen 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 Kommandozeilen-Flag 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 berücksichtigen.true
context.fileFiltering.respectQwenIgnoreboolean.qwenignore und konfigurierte benutzerdefinierte Ignore-Dateien bei der Suche berücksichtigen.true
context.fileFiltering.customIgnoreFilesarrayIgnore-Dateien relativ zum Projekt-Root, die anstelle der Standard-Kompatibilitätsdateien (.agentignore, .aiignore) verwendet werden, wenn respectQwenIgnore aktiviert ist. .qwenignore ist immer enthalten.[".agentignore", ".aiignore"]
context.fileFiltering.enableRecursiveFileSearchbooleanOb die rekursive Suche nach Dateinamen unter dem aktuellen Baum aktiviert werden soll, wenn @-Präfixe im Prompt vervollständigt werden.true
context.fileFiltering.enableFuzzySearchbooleanWenn true, werden Fuzzy-Search-Funktionen bei der Dateisuche aktiviert. Auf false setzen, um die Performance bei Projekten mit einer großen Anzahl von Dateien zu verbessern.true
context.clearContextOnIdle.toolResultsThresholdMinutesnumberMinuten der Inaktivität, bevor alte Tool-Ergebnisinhalte gelöscht werden. Verwende -1, um den Idle-Trigger zu deaktivieren.60
context.clearContextOnIdle.toolResultsNumToKeepintegerGanzzahlige Anzahl der neuesten komprimierbaren Tool-Ergebnisse, die beim Löschen beibehalten werden sollen. Werte unter 1 werden auf 1 abgerundet.5
context.clearContextOnIdle.toolResultsTotalCharsThresholdnumberGesamtzahl der erlaubten komprimierbaren Tool-Ergebnis-Ausgabezeichen im Verlauf, bevor die ältesten Ergebnisse gelöscht werden. Wenn überschritten, werden die ältesten Ergebnisse bis auf die Hälfte dieses Schwellenwerts gelöscht (Best Effort), damit spätere Turns weiterhin den Provider-Prompt-Cache wiederverwenden können, anstatt den Verlauf in jedem Turn neu zu schreiben. Verwende -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 bei der Performance der Dateisuche

Wenn du Performance-Probleme bei der Dateisuche hast (z. B. bei @-Completions), insbesondere in Projekten mit einer sehr großen Anzahl von Dateien, kannst du Folgendes in der empfohlenen Reihenfolge ausprobieren:

  1. Ignore-Datei verwenden: Erstelle eine .qwenignore oder eine konfigurierte benutzerdefinierte Ignore-Datei in deinem Projekt-Root, um Verzeichnisse auszuschließen, die eine große Anzahl von Dateien enthalten, auf die du nicht verweisen musst (z. B. Build-Artefakte, Logs, node_modules). Die Reduzierung der Gesamtzahl der durchsuchten Dateien ist der effektivste Weg, um die Performance zu verbessern.
  2. Fuzzy Search deaktivieren: Wenn das Ignorieren von Dateien nicht ausreicht, kannst du die Fuzzy-Suche deaktivieren, indem du enableFuzzySearch in deiner settings.json-Datei auf false setzt. Dadurch wird ein einfacherer, nicht-fuzzy Matching-Algorithmus verwendet, was schneller sein kann.
  3. Rekursive Dateisuche deaktivieren: Als letzte Möglichkeit kannst du die rekursive Dateisuche vollständig deaktivieren, indem du enableRecursiveFileSearch auf false setzt. Dies ist die schnellste Option, da ein rekursives Durchsuchen deines Projekts vermieden wird. Das bedeutet jedoch, dass du bei der Verwendung von @-Completions den vollständigen Pfad zu den Dateien eingeben musst.

tools

EinstellungTypBeschreibungStandardHinweise
tools.sandboxboolean or stringSandbox-Ausführungsumgebung (kann ein Boolean oder ein Pfad-String sein).undefined
tools.sandboxImagestringSandbox-Image-URI, die von Docker/Podman verwendet wird, wenn --sandbox-image und QWEN_SANDBOX_IMAGE nicht gesetzt sind.undefined
tools.shell.enableInteractiveShellbooleanVerwende node-pty für ein interaktives Shell-Erlebnis. Der Fallback auf child_process gilt weiterhin.true
tools.shell.defaultTimeoutMsnumberStandard-Timeout in Millisekunden für Vordergrund-Shell-Befehle, die vom Agent gestartet werden. Ein pro-Aufruf-Timeout des Shell-Tools überschreibt dies. Wenn nicht gesetzt, läuft das Vordergrund-Command-Timeout nach 120000 ms (2 Minuten) ab. Setze auf 0, um das Timeout zu deaktivieren.undefined
tools.shell.heartbeatIntervalMsnumberIntervall in Millisekunden zwischen Liveness-Heartbeats, die emittiert werden, während ein Vordergrund-Shell-Befehl keine Ausgabe erzeugt. Heartbeats werden an ACP-Clients und Stream-JSON-Konsumenten weitergeleitet, damit sie einen stillen Befehl von einer toten Session unterscheiden können. Wenn nicht gesetzt, werden Heartbeats alle 10000 ms (10 Sekunden) gesendet. Setze auf 0, um Heartbeats zu deaktivieren.undefined
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.disabledarray of stringsTool-Namen, die vollständig aus der Registry ausgeblendet werden. Im Gegensatz zu permissions.deny (das Aufrufe zur Laufzeit blockiert) werden deaktivierte Tools niemals registriert, sodass sie nicht in /tools erscheinen und vom Modell nicht entdeckt oder aufgerufen werden können. Beispielsweise verhindert ["enter_plan_mode"], dass das Modell eigenständig in den Plan-Modus wechselt. Wird als Union über alle Scopes zusammengeführt.undefined
tools.visiblearray of stringsDeferred-Tool-Namen, die beim Start sichtbar gemacht werden, ohne tool_search zu benötigen. Aufgelistete Tools erscheinen neben den Core-Tools in der initialen Session. Wird als Union über alle Scopes zusammengeführt.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.approvalModestringLegt den Standard-Genehmigungsmodus für die Tool-Nutzung fest.autoMögliche Werte: plan (nur analysieren, keine Dateien ändern oder Befehle ausführen), default (Genehmigung vor Dateiänderungen oder der Ausführung von Shell-Befehlen erforderlich), auto-edit (Dateiänderungen automatisch genehmigen), auto (LLM-Klassifizierer genehmigt sichere Aktionen automatisch und blockiert riskante), yolo (alle Tool-Aufrufe automatisch genehmigen)
tools.discoveryCommandstringBefehl, der für die Tool-Discovery ausgeführt wird.undefined
tools.callCommandstringDefiniert einen benutzerdefinierten Shell-Befehl zum Aufrufen eines bestimmten Tools, das mit tools.discoveryCommand gefunden wurde. Der Shell-Befehl muss die folgenden Kriterien erfüllen: Er muss den Funktions-name (genau wie in der Funktionsdeklaration ) als erstes Befehlszeilenargument übernehmen. Er muss Funktionsargumente als JSON auf stdin lesen, analog zu functionCall.args. Er muss die Funktionsausgabe als JSON auf stdout zurückgeben, analog zu functionResponse.response.content.undefined
tools.useRipgrepbooleanVerwende ripgrep für die Dateiinhaltsuche anstelle der Fallback-Implementierung. Bietet schnellere Suchperformance.true
tools.useBuiltinRipgrepbooleanVerwende die mitgelieferte ripgrep-Binärdatei. 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.workflowsEnabledbooleanAktiviert das Workflow-Tool, mit dem das Modell ein Skript erstellen und ausführen kann, das Subagenten parallel orchestriert. Standardmäßig deaktiviert; ein Run kann viele Subagenten dispatchen und entsprechend Tokens verbrauchen.falseNur User-, System- und SystemDefaults-Scopes; Workspace-Werte werden ignoriert. Neustart erforderlich: Ja. Env-Overrides: QWEN_CODE_ENABLE_WORKFLOWS=1 erzwingt an; QWEN_CODE_DISABLE_WORKFLOWS=1 erzwingt aus (disable gewinnt).
tools.truncateToolOutputThresholdnumberKürzt die Tool-Ausgabe, wenn sie größer als diese Anzahl von Zeichen ist. Gilt für die Tools Shell, Grep, Glob, ReadFile und ReadManyFiles.25000Neustart erforderlich: Ja
tools.truncateToolOutputLinesnumberMaximale Anzahl an Zeilen oder Einträgen, die beim Kürzen der Tool-Ausgabe beibehalten werden. Gilt für die Tools Shell, Grep, Glob, ReadFile und ReadManyFiles.1000Neustart erforderlich: Ja
tools.computerUse.enabledbooleanAktiviert die integrierten Computer-Use-Tools (cua-driver native Desktop-Automatisierung). Wenn true (Standard), werden die computer_use__*-Tools als verzögerte Built-ins registriert; der erste Aufruf lädt die gepinnte, signierte cua-driver-Binärdatei in ~/.qwen/computer-use/ herunter und führt durch die macOS Accessibility / Screen Recording Berechtigungen.trueNeustart erforderlich: Ja
tools.computerUse.maxImageDimensionnumberPixel-Obergrenze für die längste Kante, die auf cua-driver-Screenshots angewendet wird (über max_image_dimension von set_config). -1 (Standard) behält den eingebauten Standardwert von cua-driver (1568) bei; 0 deaktiviert die Skalierung (volle Auflösung); ein positiver Wert begrenzt die längste Kante. Niedrigere Obergrenzen reduzieren die Vision-Token-Kosten auf Kosten feiner Details.-1Neustart erforderlich: Ja. Env-Override: QWEN_COMPUTER_USE_MAX_IMAGE_DIMENSION (eine nicht-negative Ganzzahl; hat Vorrang vor dieser Einstellung)
tools.computerUse.idleTimeoutMsnumberMillisekunden, die der cua-driver-Prozess nach dem letzten computer_use__*-Aufruf am Leben gehalten wird. Der Standardwert ist 300000 (5 Minuten). Setze den Wert auf 0, um den Prozess laufen zu lassen, bis Qwen Code beendet wird.300000Neustart erforderlich: Ja
tools.toolSearch.enabledbooleanLädt MCP-Tools bei Bedarf über ToolSearch, um die Prompt-Größe zu reduzieren. Deaktiviere dies für Modelle, die auf präfixbasiertes KV-Caching angewiesen sind (z. B. DeepSeek), um das Prompt-Präfix stabil zu halten und die Cache-Trefferquote zu maximieren.trueNeustart erforderlich: Ja
tools.toolSearch.thresholdnumberKontextfenster-Prozentsatz, der als Session-Start-Budget für das Vorladen von Deferred Tools verwendet wird (sowohl gebündelte Built-ins als auch MCP). Wenn die kombinierten Schemas aller Deferred Tools in dieses Budget passen, werden sie alle im Voraus deklariert, anstatt bei Bedarf über ToolSearch geladen zu werden – eine stabile Deklarationsliste hält die Prefix-KV-Caches für die gesamte Session gültig. Setze 0, um Deferred Tools immer bei Bedarf zu laden.10Neustart erforderlich: Ja
tools.listDirectory.enabledbooleanAktiviert das integrierte list_directory-Tool. Standardmäßig deaktiviert, da glob die Verzeichnisauflistung in den meisten Fällen abdeckt; das Tool wird auch automatisch wieder aktiviert, wenn es explizit in der coreTools-Allowlist aufgeführt wird (--core-tools / tools.core).falseNeustart erforderlich: Ja
Note

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. Konfiguriere bevorzugt direkt permissions.allow / permissions.deny. Verwende /permissions, um Regeln interaktiv zu verwalten.

memory

SettingTypeDescriptionDefault
memory.enableManagedAutoMemorybooleanAktiviert die Hintergrundextraktion von Erinnerungen aus Konversationen.true
memory.enableManagedAutoDreambooleanAktiviert die automatische Konsolidierung (Deduplizierung und Bereinigung) gesammelter Erinnerungen.true
memory.enableAutoSkillbooleanAktiviert die Hintergrundprüfung auf wiederverwendbare Projekt-Skills nach tool-lastigen Sessions.true
memory.autoSkillConfirmbooleanFordert eine Bestätigung an, bevor automatisch generierte Skills zur Skill-Bibliothek hinzugefügt werden. Wenn deaktiviert, werden Auto-Skills sofort gespeichert.true
memory.enableTeamMemorybooleanAktiviert eine Projekt-Speicherebene, die über das über Git getrackte .qwen/team-memory/-Verzeichnis mit Mitarbeitern geteilt wird. Schreibzugriffe werden auf Secrets gescannt und können im Git-Diff überprüft werden.false
memory.enableTeamMemorySyncbooleanWenn Team-Memory aktiviert ist, wird das .qwen/team-memory/-Verzeichnis bei Session-Start automatisch committet, per Fast-Forward gepullt und gepusht, sodass Mitarbeiter synchron bleiben. Erfordert einen konfigurierten Git-Upstream.false
memory.agentTimeoutMinutesnumberMaximale Laufzeit in Minuten für Hintergrund-Memory-Agenten (Extraktion, Dream, Remember, Skill-Review). Nicht gesetzt verwendet den eingebauten Standardwert des jeweiligen Agenten (2–5 Minuten); 0 deaktiviert das Zeitlimit.unset
memory.agentMaxTurnsnumberMaximale Turns für Hintergrund-Memory-Agenten (Extraktion, Dream, Remember, Skill-Review). Nicht gesetzt verwendet den eingebauten Standardwert des jeweiligen Agenten (5–8); 0 deaktiviert das Turn-Limit.unset

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

agents

SettingTypeBeschreibungDefault
agents.builtin.exploreModelstringModell-Selektor für den eingebauten Explore-Subagenten. Verwende inherit für das Hauptsession-Modell, fast für fastModel, eine Modell-ID oder einen authType:model-id-Selektor. Ein benutzerdefinierter Explore-Agent mit gleichem Namen behält seine eigene Modellkonfiguration. Erfordert Neustart.inherit
agents.modelGradesobjectBildet semantische Grade-Namen, die dem Agent-Tool exposed werden, auf Modell-Selektoren ab. Erfordert Neustart.undefined
agents.allowedGradesarray of stringsOptionale Whitelist der konfigurierten Modell-Grades, die das Agent-Tool verwenden darf. Erfordert Neustart.undefined

permissions

Das Permission-System bietet eine 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 übereinstimmende Regel gewinnt. Regeln verwenden das Format "ToolName" oder "ToolName(Spezifizierer)".

SettingTypeDescriptionDefault
permissions.allowarray of stringsRegeln für automatisch genehmigte Tool-Aufrufe (keine Bestätigung erforderlich). Werden über alle Scopes (User + Projekt + System) zusammengeführt.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 (jeder dieser Namen funktioniert in Regeln):

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

Meta-Kategorien:

Einige Regelnamen decken automatisch mehrere Tools ab:

Rule nameTools covered
Readread_file, grep_search, glob, list_directory
Editedit, write_file, notebook_edit

[!important] Read(/path/**) trifft auf alle vier Read-Tools zu (Datei lesen, grep, glob und Verzeichnisauflistung). Um nur das Lesen von Dateien einzuschränken, verwende ReadFile(/path/**) oder read_file(/path/**).

Beispiele für die Regel-Syntax:

RuleMeaning
"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 (read, grep, glob, list)
"Read(./secrets/**)"Liest rekursiv jede Datei unter ./secrets/
"Edit(/src/**/*.ts)"Bearbeitet TypeScript-Dateien unter dem Projekt-Root /src/
"WebFetch(api.example.com)"Fetcht von api.example.com und allen Subdomains
"mcp__puppeteer"Alle Tools vom Puppeteer-MCP-Server

Präfixe für Pfadmuster:

PrefixMeaningExample
//Absoluter Pfad vom Dateisystem-Root//etc/passwd
~/Relativ zum Home-Verzeichnis~/Documents/*.pdf
/Relativ zum Projekt-Root/src/**/*.ts
./Relativ zum aktuellen Arbeitsverzeichnis./secrets/**
(none)Entspricht ./secrets/**

Verhinderung von Shell-Befehlsumgehungen:

Permission-Regeln für Read, Edit und WebFetch werden auch durchgesetzt, wenn der Agent äquivalente 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 Datei-/Netzwerkregeln nicht betroffen.

Migration von Legacy-Einstellungen:

Legacy settingEquivalent permissions ruleNotes
tools.allowedpermissions.allowWird beim ersten Laden automatisch migriert
tools.excludepermissions.denyWird beim ersten Laden automatisch migriert
tools.corepermissions.allow (Allowlist)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, um die Befehlsoberfläche in Multi-Tenant- oder Enterprise-Deployments einzuschränken.

SettingTypeDescriptionDefault
slashCommands.disabledarray of stringsNamen der Slash-Befehle, die ausgeblendet werden und deren Ausführung verweigert werden soll. Wird case-insensitive mit dem 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 User- oder System-Einstellungen hinzufügen, aber nicht entfernen können.undefined

Dieselbe Denylist kann auch über den CLI-Flag --disabled-slash-commands (kommagetrennt oder wiederholt) und die Umgebungsvariable QWEN_DISABLED_SLASH_COMMANDS bereitgestellt werden; Werte aus allen drei Quellen werden zusammengeführt.

Beispiel – Built-ins 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 verkleinern, und die deaktivierten Befehle erscheinen weder in der Autovervollständigung noch werden sie bei Eingabe ausgeführt.

[!note] Diese Einstellung beschränkt nur Slash-Befehle (z. B. /auth, /mcp). Sie beeinflusst nicht die Tool-Permissions – siehe dafür permissions.deny. Sie fängt auch keine Tastenkombinationen wie Ctrl+C oder Esc ab.

skills

Steuert, welche Skills dem Modell zur Verfügung gestellt werden.

SettingTypeDescriptionDefault
skills.disabledLevelsarray of stringsSkill-Discovery-Level, die vollständig übersprungen werden sollen. Unterstützte Werte sind project, user, extension und bundled. Wird als Union über die Einstellungsbereiche zusammengeführt. Verwende ["bundled"], um alle gebündelten Skills auszublenden, während vom Host bereitgestellte Skills erhalten bleiben. Hinweis: skills.directories-Einträge werden auf dem user-Level erkannt, daher verbirgt ["user"] diese ebenfalls.undefined
skills.disabledarray of stringsHart deaktivierte Skill-Namen. Wird case-insensitive abgeglichen und als Union über die Einstellungsbereiche zusammengeführt, sodass Projekteinstellungen einen User- oder System-Eintrag nicht überschreiben können. Versteckte Skills erscheinen weder in <available_skills> noch als /<name>-Slash-Befehle.undefined
skills.defaultDisabledarray of stringsSkill-Namen, die standardmäßig deaktiviert sind, aber über skills.enabled aktiviert werden können. Wird case-insensitive abgeglichen und als Union über die Einstellungsbereiche zusammengeführt.undefined
skills.enabledarray of stringsExplizite Aktivierungen, die passende skills.defaultDisabled-Einträge überschreiben. Wird case-insensitive abgeglichen und als Union über die Einstellungsbereiche zusammengeführt. Diese Einstellung kann skills.disabled nicht überschreiben oder Skills aus einem durch skills.disabledLevels ausgeschlossenen Level reaktivieren.undefined

Die Priorität ist skills.disabled > skills.enabled > skills.defaultDisabled. Ein Benutzer kann beispielsweise einen Skill in defaultDisabled setzen und ein Projekt kann denselben Namen zu enabled hinzufügen; ein hartes disabled auf beliebiger Ebene gewinnt dennoch.

mcp

SettingTypeDescriptionDefault
mcp.serverCommandstringBefehl zum Starten eines MCP-Servers.undefined
mcp.allowedarray of stringsEine Allowlist von MCP-Servern, die zugelassen werden sollen. 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. Unterstützt Glob-Muster (* matcht jede Sequenz, ? matcht ein einzelnes Zeichen – z. B. "*puppeteer*"); Einträge ohne Glob-Zeichen werden exakt abgeglichen. 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. Unterstützt Glob-Muster (*, ?) auf dieselbe Weise wie mcp.allowed. Beachte, dass dies ignoriert wird, wenn --allowed-mcp-server-names gesetzt ist.undefined
mcp.toolIdleTimeoutMsnumberIdle-Timeout in Millisekunden für MCP-Tool-Aufrufe. Wenn der MCP-Server innerhalb dieser Zeit keine Antwort oder Statusaktualisierung liefert, wird der Aufruf abgebrochen. Muss zwischen 10000 und 3600000 liegen. Kann über die Umgebungsvariable QWEN_CODE_MCP_TOOL_IDLE_TIMEOUT_MS überschrieben werden.300000
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, solltest du die mcpServers auf der Ebene der Systemeinstellungen konfigurieren, sodass der Benutzer keine eigenen MCP-Server konfigurieren kann. Dies sollte nicht als wasserdichter Sicherheitsmechanismus verwendet werden.

lsp

[!warning] Experimentelles Feature: LSP-Support ist derzeit experimentell und standardmäßig deaktiviert. Aktiviere ihn mit dem --experimental-lsp Command-Line-Flag.

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

Die LSP-Server-Konfiguration erfolgt über .lsp.json-Dateien in deinem Projekt-Root-Verzeichnis, nicht über settings.json. Siehe die LSP-Dokumentation für Konfigurationsdetails und Beispiele.

security

EinstellungTypBeschreibungStandard
security.folderTrust.enabledbooleanEinstellung zur Nachverfolgung, 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.useExternalbooleanGibt an, ob ein externer Authentifizierungs-Flow verwendet werden soll.undefined
security.auth.apiKeystringVeraltet. API-Key für die OpenAI-kompatible Authentifizierung. Migriere stattdessen zu modelProviders mit envKey – siehe Model Providers.undefined
security.auth.baseUrlstringVeraltet. Base-URL für die OpenAI-kompatible API. Migriere stattdessen zu modelProviders – siehe Model Providers.undefined
security.allowedInsecureVoiceBaseUrlsarray of stringsVollständige Voice-Provider-Base-URLs, die HTTP verwenden oder auf private Netzwerkadressen aufgelöst werden dürfen. Jeder Eintrag muss ein explizites http://- oder https://-Schema und den vollständigen Pfad enthalten (zum Beispiel /v1); nur URL-Serialisierung und abschließende Schrägstriche werden normalisiert. Wildcards werden nicht unterstützt; Metadata-, Link-Local-, Local-Use-NAT64-, 6to4- und Teredo-Adressen bleiben blockiert, auch wenn sie aufgeführt sind, ebenso wie Hostnamen, die auf Loopback aufgelöst werden; IPv4-gemappte, IPv4-kompatible und Well-Known-NAT64-(64:ff9b::/96) Literale werden nach ihrer eingebetteten IPv4-Adresse klassifiziert. Nur die Scopes User, System und SystemDefaults werden berücksichtigt. Nur für vertrauenswürdige Endpunkte in verwalteten privaten Netzwerken verwenden. Klartext-HTTP legt auch den Provider-API-Key offen, der im Authorization-Header übertragen wird. Ein erlaubter Hostname ist nur so vertrauenswürdig wie sein DNS; bevorzuge IP-Literal-Einträge, wenn die Gateway-Adresse stabil ist. Die exakte Übereinstimmung deckt die Batch-Request-URL ab; Streaming-Transporte verbinden sich mit einer daraus abgeleiteten WebSocket-URL (gleiches Schema, Host und Port, /api-ws/v1/...-Pfad), nicht mit dem erlaubten Pfad selbst.[]

serve

Persistente Sub-Session-Concurrency-Einstellungen für qwen serve. Änderungen erfordern einen Neustart des Daemons. Nicht-positive oder nicht-ganzzahlige Concurrency-Limits erzeugen eine Warnung und fallen auf ihre eingebauten Standardwerte zurück.

SettingTypBeschreibungStandard
serve.maxConcurrentSubSessionsPerCallerintegerMaximale Anzahl gleichzeitiger Sub-Sessions, die eine Caller-Session über create_sub_session erstellen kann. Muss mindestens 1 sein.16
serve.maxConcurrentSubSessionsTotalintegerMaximale Anzahl gleichzeitiger Sub-Sessions über alle Caller in einem Workspace. Muss eine Ganzzahl von 1 bis 1024 sein. Werte über 1024 werden ohne Warnung auf 1024 begrenzt.24

advanced

EinstellungTypBeschreibungStandard
advanced.autoConfigureMemorybooleanKonfiguriert die Node.js-Speicherlimits automatisch.false
advanced.dnsResolutionOrderstringDie DNS-Auflösungsreihenfolge.undefined
advanced.excludedEnvVarsarray of stringsUmgebungsvariablen, die vom Projekt-Kontext ausgeschlossen werden sollen. Gibt Umgebungsvariablen an, die nicht aus den .env-Dateien des Projekts geladen werden sollen. Dies verhindert, dass projektspezifische Umgebungsvariablen (wie DEBUG=true) das CLI-Verhalten beeinträchtigen. Variablen aus .qwen/.env-Dateien werden niemals von dieser Liste ausgeschlossen; Loader-betroffene Variablen werden aus jedem .env-Scope immer abgelehnt (siehe unten).["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 die Platzhalter {title} und {info} enthalten kann. Beispiel: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }undefined
plansDirectorystringBenutzerdefiniertes Verzeichnis für genehmigte Plan-Mode-Dateien. Relative Pfade werden vom Projekt-Root aufgelöst, und der aufgelöste Pfad muss innerhalb des Projekt-Roots bleiben. Wenn nicht gesetzt, werden Plan-Dateien in ~/.qwen/plans gespeichert. Erfordert einen Neustart. Wenn sich das Verzeichnis innerhalb des Projekt-Roots befindet, füge es zur .gitignore hinzu, um zu vermeiden, dass Plan-Dateien committet werden.undefined

experimental

Warning

Experimentelle Features. Diese Toggles schalten sich in der Entwicklung befindliche Funktionen frei und können sich in zukünftigen Releases ändern oder entfernt werden.

EinstellungTypBeschreibungStandard
experimental.sessionWorkflowbooleanZeigt den Daemon-WebShell-Session-Workflow-DAG an und präsentiert den bestehenden plan-Genehmigungsmodus als Plan & Review. Dies ändert nur die Darstellung: es fügt keinen Genehmigungsmodus hinzu, ändert das Todo-Ausführungsverhalten nicht und plant keine Abhängigkeiten. Änderungen werden ohne Neustart wirksam.false
experimental.cronbooleanAktiviert die In-Session-Cron/Loop-Tools (cron_create, cron_list, cron_delete), sodass das Modell wiederkehrende Prompts erstellen kann. Kann über die Umgebungsvariable QWEN_CODE_DISABLE_CRON=1 deaktiviert werden. Erfordert einen Neustart.true
experimental.todoStopGuardbooleanErlaubt Daemon- und ACP-Sessions, nach einem natürlichen Modell-Stopp fortzufahren, wenn die aktuelle Work-Chain erfolgreich eine unvollständige Top-Level-Todo-Liste geschrieben hat. Fügt höchstens zwei aufeinanderfolgende Primärmodell-Aufrufe ohne neue Benutzereingabe hinzu; Benutzereingaben mitten im Turn starten eine neue Zwei-Versuch-Phase. Wird nach einem Prozessneustart nicht wiederhergestellt und in den Modi safe, bare und Approval plan zwangsweise deaktiviert. Erfordert einen Neustart.false
experimental.sessionWriterLeasebooleanAktiviert prozessübergreifendes Write-Fencing für persistierte ACP- und Daemon-Sessions. Der Wert wird eingefroren, wenn der ACP- oder Daemon-Prozess startet. Alle gleichzeitigen ACP-Schreiber müssen die Einstellung aktiviert haben; gemischte Versionen oder Konfigurationen bleiben unsicher. Interaktive und Headless-Recorder sind nicht betroffen. Erfordert einen Prozessneustart.false
experimental.cronRecurringMaxAgeDaysnumberAnzahl der Tage, die ein wiederkehrender Cron/Loop-Job lebt, bevor er automatisch abläuft (er wird ein letztes Mal ausgeführt und dann gelöscht). Setze den Wert auf 0, um den Ablauf zu deaktivieren, sodass Jobs bis zur manuellen Löschung laufen – nützlich für langlaufende Daemon-Deployments. Kann über die Umgebungsvariable QWEN_CODE_CRON_MAX_AGE_DAYS überschrieben werden. Erfordert einen Neustart.7
experimental.agentTeambooleanAktiviert die Agent-Team-Kollaborationstools (team_create, task_create, task_update, send_message usw.) für die Multi-Agent-Koordination. Kann auch über QWEN_CODE_ENABLE_AGENT_TEAM=1 aktiviert werden. Erfordert einen Neustart.false
experimental.artifactbooleanAktiviert Artifact-Tools. Standardmäßig aktiviert. In interaktiven Non-SDK-Sessions kann das Modell eine in sich geschlossene HTML-Seite als interaktives Artifact veröffentlichen und im Browser öffnen. Non-SDK-Daemon-Sessions können das reine Metadaten-Tool record_artifact verwenden. Setze dies auf false oder verwende QWEN_CODE_DISABLE_ARTIFACT=1, um beides zu deaktivieren. Erfordert einen Neustart.true
experimental.emitToolUseSummariesbooleanGeneriert ein kurzes LLM-basiertes Label, nachdem jeder Tool-Call-Batch abgeschlossen ist. Siehe Tool-Use Summaries. Erfordert, dass ein schnelles Modell konfiguriert ist (fastModel); wird andernfalls stillschweigend übersprungen. Kann pro Session 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 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 den Tool-Namen der Server-Alias vorangestellt, den du in der Konfiguration definiert hast (z. B. serverAlias__actualToolName), um Konflikte zu vermeiden. Beachte, dass das System aus Kompatibilitätsgründen bestimmte Schema-Eigenschaften aus MCP-Tool-Definitionen entfernen kann. Mindestens eine der Optionen command, url oder httpUrl muss angegeben werden. Wenn mehrere angegeben sind, ist die Prioritätenreihenfolge httpUrl, dann url, dann command.

EigenschaftTypBeschreibungOptional
mcpServers.<SERVER_NAME>.commandstringDer Befehl, der ausgeführt wird, um den MCP-Server über Standard-I/O zu starten.Ja
mcpServers.<SERVER_NAME>.argsarray of stringsArgumente, die an den Befehl übergeben werden.Ja
mcpServers.<SERVER_NAME>.envobjectUmgebungsvariablen, die für den Server-Prozess gesetzt werden.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>.headersobjectEin Map von HTTP-Headern, die mit Requests an url oder httpUrl gesendet werden.Ja
mcpServers.<SERVER_NAME>.timeoutnumberTimeout in Millisekunden für Requests an diesen MCP-Server.Ja
mcpServers.<SERVER_NAME>.trustbooleanVertraue diesem Server und umgehe seine Tool-Call-Bestätigungen in einem vertrauenswürdigen Workspace.Ja
mcpServers.<SERVER_NAME>.descriptionstringEine kurze Beschreibung des Servers, die für Anzeigezwecke verwendet werden kann.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. Die hier aufgeführten Tools stehen dem Modell nicht zur Verfügung, auch wenn sie vom Server bereitgestellt werden. Hinweis: excludeTools hat Vorrang vor includeTools – wenn ein Tool in beiden Listen enthalten ist, wird es ausgeschlossen.Ja

Telemetrie

Konfiguriert das Logging und die Metrikerfassung für Qwen Code. Weitere Informationen findest du unter telemetry.

EinstellungTypBeschreibungStandard
telemetry.enabledbooleanGibt an, ob Telemetrie aktiviert ist.
telemetry.targetstringInformations-Label für das Telemetrie-Ziel (local oder gcp). Steuert nicht das Exporter-Routing; setze telemetry.otlpEndpoint oder telemetry.outfile, um zu konfigurieren, wohin die Daten gesendet werden.
telemetry.otlpEndpointstringDer Endpunkt für den OTLP-Exporter.
telemetry.otlpProtocolstringDas Protokoll für den OTLP-Exporter (grpc oder http).
telemetry.logPromptsbooleanGibt an, ob der Inhalt von Benutzer-Prompts in die Logs aufgenommen wird.
telemetry.userIdstringStabile End-Benutzer-Kennung, die in GenAI-Spans als ARMS-Erweiterung gen_ai.user.id geschrieben wird. Bevorzuge einen pseudonymen Wert. Setze keinen prozessweiten Wert für eine gemeinsam genutzte Multi-User-Daemon- oder Channel-Instanz.
telemetry.includeSensitiveSpanAttributesbooleanWenn aktiviert, werden wortwörtliche Benutzer-Prompts, System-Prompts, Tool-Inputs/Outputs und Modell-Antworten an native OTel-Span-Attribute angehängt (zusätzlich zu den Log-to-Span-Bridge-Spans). ⚠️ Streamt sensible Daten – Dateiinhalte, Shell-Befehle, Konversationsverlauf – an dein OTLP-Backend.false
telemetry.sensitiveSpanAttributeMaxLengthnumberMaximale JavaScript-Stringlänge für jeden sensiblen nativen OTel-Span-Attribut-Content-Payload. Muss zwischen 1 und 104857600 (100 MiB) liegen. Setze diesen Wert niedriger, wenn dein Collector oder Backend große Attribute ablehnt.1048576
telemetry.outfilestringPfad, um Telemetrie in eine Datei zu schreiben. Wenn gesetzt, wird der OTLP-Export überschrieben.

Beispiel 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", "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, "userId": "user-079458", "includeSensitiveSpanAttributes": false, "sensitiveSpanAttributeMaxLength": 1048576 }, "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 Shell-Befehle, die du ausführst. Um Konflikte zwischen verschiedenen Projekten zu vermeiden, wird dieser Verlauf in einem projektspezifischen Verzeichnis innerhalb deines Home-Verzeichnisses gespeichert.

  • Speicherort: ~/.qwen/tmp/<project_hash>/shell_history
    • <project_hash> ist ein eindeutiger Bezeichner, 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 verschiedenen Umgebungen ändern können.

Qwen Code kann Umgebungsvariablen automatisch aus .env-Dateien laden. Für authentifizierungsrelevante 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 projektbezogenen .env-Dateien ausgeschlossen, um Interferenzen mit dem CLI-Verhalten zu verhindern. Variablen aus .qwen/.env-Dateien werden niemals ausgeschlossen. Du kannst dieses Verhalten über die advanced.excludedEnvVars-Einstellung in deiner settings.json-Datei anpassen.

Warning

Loader-betroffene Variablen werden immer abgelehnt: Variablen, die einen gestarteten Node.js-Prozess oder OS-Loader dazu bringen, eine vom Angreifer gewählte Datei auszuführen — NODE_OPTIONS, npm_config_node_options (und npms Config-File-Weiterleitungen npm_config_userconfig, npm_config_globalconfig, npm_config_script_shell, npm_config_prefix), NODE_PATH, OPENSSL_CONF (dlopent eine vom Angreifer gewählte OpenSSL-Engine beim Startup), NODE_REPL_EXTERNAL_MODULE, npm_config_node_gyp, npm_config_init_module, LD_PRELOAD, LD_AUDIT, DYLD_INSERT_LIBRARIES, BASH_ENV, ZDOTDIR und exportierte Bash-Funktionsdefinitionen (BASH_FUNC_*) — werden niemals aus .env-Dateien geladen (kein Scope, einschließlich .qwen/.env und Dateien auf Benutzerebene) oder aus dem env-Abschnitt der obersten Ebene in settings.json. Ein dort über den Workspace kontrollierter Wert könnte die Modul-Auflösung für jeden von Qwen Code gestarteten Subprozess kapern, daher gibt Qwen Code eine Warnung aus, wenn es einen solchen Key ablehnt (einmal pro Prozess, pro Key und Quelle – in einem Multi-Workspace-Daemon wird die Ablehnung jedes Workspaces separat gemeldet). Um eine dieser Variablen zu verwenden, exportiere sie in der Umgebung, aus der du Qwen Code startest; Sessions, die von einem qwen serve-Daemon gehostet werden, übernehmen sie absichtlich nicht, während direkte Editor-Sessions (ACP) und die einfache CLI den exportierten Wert behalten. Bibliotheks-Such-Pfade (LD_LIBRARY_PATH, DYLD_LIBRARY_PATH) und die nur für interaktive Shells relevante ENV stehen absichtlich nicht auf dieser Liste – sie abzulehnen würde Mainstream-Toolchains brechen (ENV=production, Conda/CUDA-Bibliotheksverzeichnisse) – aber ein Projekt-.env kann sie beim Neuladen trotzdem nicht anwenden. Diese Ablehnung gilt nur für den env-Abschnitt der obersten Ebene: mcpServers[].env pro Server und hooks[].env pro Hook sind absichtlich auf diesen Server bzw. Hook beschränkt und werden weiterhin angewendet (beide Oberflächen sind über Folder-Trust für Workspace-bereitgestellte Konfigurationen abgesichert). Separat kann ein Projekt-.env niemals QWEN_CLI_ENTRY (den Session-Prozess-Entrypoint des Daemons), QWEN_CDP_MCP_COMMAND (den Befehl, den der Daemon als Browser-Automatisierungs-MCP-Adapter startet), QWEN_SERVE_CDP_TUNNEL_OVER_WS (schaltet diese Tunnel-Oberfläche um), DEV (den Dev-Harness-Startmarker), die TLS-Trust-Anchor-Variablen (NODE_EXTRA_CA_CERTS, SSL_CERT_FILE, SSL_CERT_DIR, CURL_CA_BUNDLE, REQUESTS_CA_BUNDLE, GIT_SSL_CAINFO, GIT_SSL_CAPATH, npm_config_cafile, npm_config_ca, npm_config_strict_ssl, PIP_CERT – ein Angreifer-CA dort, oder npm_config_strict_ssl=false, würde MITM des Token-tragenden Traffics ermöglichen, den git/npm/pip/curl-Aufrufe einer Session tätigen), die Git-Command-Execution-Variablen (GIT_SSH_COMMAND, GIT_SSH, GIT_EXEC_PATH, GIT_TEMPLATE_DIR, GIT_ASKPASS, GIT_PROXY_COMMAND, GIT_EDITOR, GIT_SEQUENCE_EDITOR, GIT_EXTERNAL_DIFF, GIT_CONFIG_GLOBAL, GIT_CONFIG_SYSTEM, GIT_CONFIG_COUNT, GIT_CONFIG_PARAMETERS und die nummerierten GIT_CONFIG_KEY_<n>/GIT_CONFIG_VALUE_<n>-Paare – Git führt diese bei jeder git-Invocation einer Session aus – sowie XDG_CONFIG_HOME, das die $XDG_CONFIG_HOME/git/config umleitet, die Git mit ~/.gitconfig mergt), die curl/wget-rc-File-Weiterleitungen (CURL_HOME, WGETRC – deren rc-Dateien einen Angreifer-Proxy oder CA installieren können), PIP_CONFIG_FILE (leitet die gesamte pip-Konfiguration um – index-url, trusted-host, Proxy- oder Cert-Einstellungen in einer Angreifer-Datei senden Session-pip-Traffic oder Credentials an Angreifer-Infrastruktur), SSH_ASKPASS (git/ssh führen es als Fallback-Passphrase-Prompt-Programm bei einer Auth-Challenge aus), LESSOPEN und LESSCLOSE (less führt sie als Input-Präprozessoren für jede Datei aus, die eine Session betrachtet), die node-gyp-Interpreter-Auswahl-Variablen (NODE_GYP_FORCE_PYTHON, npm_config_python, PYTHON – werden als Build-Python während Native-Addon-Installationen ausgeführt – sowie npm_config_git, als npms Git-Binärdatei ausgeführt), die Editor- und Startup-Hooks (VISUAL, EDITOR – Gits Editor-Fallback-Chain, die auch von den eigenen External-Editor-Flows der CLI gestartet werden – sowie PYTHONSTARTUP, das CPython beim interaktiven Start ausführt) oder BROWSER (die CLI führt ihn über den sicheren Browser-Launcher aus) setzen; diese bleiben aus der Shell-Umgebung oder einer .env auf Benutzerebene setzbar; im Gegensatz zur Loader-Liste oben werden sie nur aus Projektdateien abgelehnt, sodass ein selbst exportierter Wert erhalten bleibt. Sie werden auch beim Boot aus einer .env auf Benutzerebene eingefroren: ein Settings-Reload wendet keine Änderungen an ihnen dort – oder deren Entfernung – an, bis der Prozess neu startet. Upgrade-Hinweis: Vor der Einführung dieser Denylist konnten einige dieser Keys aus .env-Dateien oder dem env-Abschnitt von settings.json auf einigen Pfaden geladen werden; sie werden jetzt überall mit einer Warnung abgelehnt, und ein qwen serve-Daemon übergibt keine geerbten Werte mehr an Session-Subprozesse.

Tabelle der Umgebungsvariablen

VariableBeschreibungHinweise
QWEN_HOMEPasst das globale Konfigurationsverzeichnis an (Standard: ~/.qwen). Akzeptiert einen absoluten oder relativen Pfad (relative Pfade werden vom aktuellen Arbeitsverzeichnis aus aufgelöst). Ein vorangestelltes ~ wird zum Home-Verzeichnis des Benutzers expandiert.Speichert Credentials, Einstellungen, Memory, Skills und anderen globalen State. Wenn gesetzt, bleiben .qwen/-Verzeichnisse auf Projektebene unberührt. Ein leerer String wird wie nicht gesetzt behandelt.
QWEN_RUNTIME_DIRÜberschreibt das Runtime-Output-Verzeichnis (Konversationen, Logs, Todos). Wenn nicht gesetzt, ist standardmäßig das QWEN_HOME-Verzeichnis eingestellt.Verwende dies, um flüchtige Runtime-Daten von der persistenten Konfiguration zu trennen. Nützlich, wenn sich QWEN_HOME auf einem gemeinsam genutzten oder langsamen Dateisystem befindet.
QWEN_USAGE_STATISTICS_ENABLEDSetze dies auf true oder 1, um Nutzungsstatistiken zu aktivieren. Jeder andere Wert wird als Deaktivierung behandelt.Überschreibt die privacy.usageStatisticsEnabled-Einstellung. Standardmäßig aktiviert, wenn weder das eine noch das andere konfiguriert ist.
QWEN_TELEMETRY_ENABLEDSetze dies auf true oder 1, um Telemetrie zu aktivieren. Jeder andere Wert wird als Deaktivierung behandelt.Überschreibt die telemetry.enabled-Einstellung.
QWEN_TELEMETRY_TARGETSetzt ein Informations-Label für das Telemetrie-Ziel (local oder gcp). Steuert nicht das Routing; verwende QWEN_TELEMETRY_OTLP_ENDPOINT oder QWEN_TELEMETRY_OUTFILE, um zu konfigurieren, wohin die Daten gesendet werden.Überschreibt die telemetry.target-Einstellung.
QWEN_TELEMETRY_OTLP_ENDPOINTSetzt den OTLP-Endpunkt für Telemetrie.Überschreibt die telemetry.otlpEndpoint-Einstellung.
QWEN_TELEMETRY_OTLP_PROTOCOLSetzt das OTLP-Protokoll (grpc oder http).Überschreibt die telemetry.otlpProtocol-Einstellung.
QWEN_TELEMETRY_LOG_PROMPTSSetze dies auf true oder 1, um das Logging von Benutzer-Prompts zu aktivieren. Jeder andere Wert wird als Deaktivierung behandelt.Überschreibt die telemetry.logPrompts-Einstellung.
QWEN_TELEMETRY_USER_IDSetzt bei der Interaktion eine stabile End-Benutzer-Kennung auf Interaction-, LLM-, Tool- und Agent-Spans als gen_ai.user.id. Bevorzuge einen pseudonymen Wert.Überschreibt nach dem Trimmen telemetry.userId. Ein leerer Wert fällt auf die Einstellungen zurück. Dies ist prozessweit und darf nicht als pro-Request-Identität in einem gemeinsam genutzten Multi-User-Prozess verwendet werden.
QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTESSetze dies auf true oder 1, um wortwörtliche Benutzer-Prompts, System-Prompts, Tool-I/O und Modell-Antworten 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 telemetry.includeSensitiveSpanAttributes-Einstellung. ⚠️ Streamt sensible Daten an dein OTLP-Backend.
QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTHSetzt die maximale JavaScript-Stringlänge für jeden sensiblen nativen OTel-Span-Attribut-Content-Payload. Muss eine positive ganze Zahl sein, die nicht größer als 104857600 (100 MiB) ist.Überschreibt die telemetry.sensitiveSpanAttributeMaxLength-Einstellung. Standard ist 1048576 (1 MiB); setze diesen Wert niedriger, wenn dein Collector oder Backend große Span-Attribute ablehnt.
QWEN_TELEMETRY_OUTFILESetzt den Dateipfad, in den Telemetrie geschrieben werden soll. Wenn gesetzt, wird der OTLP-Export überschrieben.Überschreibt die telemetry.outfile-Einstellung.
QWEN_SANDBOXAlternative zur sandbox-Einstellung in settings.json.Akzeptiert true, false, docker, podman oder einen benutzerdefinierten Command-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) Schränkt Schreibzugriffe auf den Projektordner (und einige andere Ordner, siehe packages/cli/src/serve/sandbox-macos-permissive-open.sb) ein, erlaubt aber andere Operationen. strict: Verwendet ein strenges 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(wird oft von zugrunde liegenden Bibliotheken oder der CLI selbst verwendet) Setze dies 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 projektbezogenen .env-Dateien ausgeschlossen, um Interferenzen mit dem CLI-Verhalten zu verhindern. Verwende .qwen/.env-Dateien, wenn du diese speziell für Qwen Code setzen musst.
NO_COLORSetze dies auf einen beliebigen Wert, um die gesamte Farbausgabe in der CLI zu deaktivieren.
FORCE_HYPERLINKÜberschreibt die OSC-8-Erkennung für klickbare Links im Markdown-Renderer. Setze dies auf 1 (oder eine beliebige Ganzzahl ungleich Null oder einen leeren String), um es zu erzwingen; setze es auf 0 oder einen nicht-numerischen Wert wie false / off, um es zu deaktivieren. Beachtet NO_COLOR / QWEN_DISABLE_HYPERLINKS-Opt-outs darüber.Verwende dies, um OSC 8 innerhalb von tmux / GNU screen zu aktivieren (die Auto-Detection lehnt standardmäßig ab, da die Fähigkeiten des Host-Terminals hinter dem Multiplexer verborgen sind). Erfordert set -g allow-passthrough on unter tmux 3.3+. Aktiviert außerdem Hyper, was nicht automatisch erkannt wird.
QWEN_DISABLE_HYPERLINKSSetze dies auf 1, um OSC-8-klickbare Hyperlinks im Markdown-Renderer hart zu deaktivieren, sogar auf Terminals, die automatisch als fähig erkannt werden.Nützlich, wenn ein Terminal Support meldet, aber bei langen URLs abbricht, oder wenn die Ausgabe durch ein Intermediär gepiped wird, das Escape-Sequenzen verstümmelt. Der Renderer fällt auf das einfache label (url)-Rendering zurück.
CLI_TITLESetze dies 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äßigen maximalen Output-Tokens pro Antwort. Wenn nicht gesetzt, verwendet Qwen Code standardmäßig das deklarierte Output-Limit des Modells und eskaliert (64K-Basis) automatisch und stellt sich über Turns hinweg wieder her, wenn eine Antwort abgeschnitten wird. Setze dies auf einen bestimmten Wert (z. B. 16000), um stattdessen ein festes Limit zu verwenden – nützlich für kapazitätsbeschränkte Self-Hosted-Backends, die eine niedrigere Slot-Reservierung pro Request wünschen.Hat Vorrang vor dem Model-Limit-Standard, 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 dies auf true oder 1, um den Persistent-Retry-Modus zu aktivieren. Wenn aktiviert, werden vorübergehende API-Kapazitätsfehler (HTTP 429 Rate Limit und 529 Overloaded) unbegrenzt mit exponentiellem Backoff (gedeckelt 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_ACP_REPEATED_TOOL_FAILURE_GUARDOperator-Rollout-Modus für den Schutz vor wiederholtem Tool-Ausführungsfehler in ACP. Akzeptiert off, shadow, warn oder enforce; fehlende oder ungültige Werte fallen auf shadow zurück.Gilt nur für interaktive Vordergrund-ACP-Prompts; kanalgesteuerte und automatische Routen bleiben auf off. Projekt- und Workspace-Umgebungsdateien können diese Operator-Richtlinie nicht setzen. Shadow lässt Modell-Fortsetzung und Nachrichten unverändert, fügt aber das Queued-Prompt-Watch-Flag zu craft/drainMidTurnQueue hinzu; jeder Modus außer off erfordert zuverlässigen Queued-Prompt-Status. Nicht-leere ungültige Werte geben eine Diagnose aus; exportiere die Variable im Prozess-Environment oder einer Datei auf Benutzerebene.
QWEN_CODE_PROFILE_STARTUPSetze dies auf 1, um das Startup-Performance-Profiling zu aktivieren. Schreibt einen JSON-Timing-Report mit Dauerwerten pro Phase nach ~/.qwen/startup-perf/.Nur aktiv innerhalb des Sandbox-Child-Prozesses (oder mit QWEN_CODE_PROFILE_STARTUP_OUTER=1). Kein Overhead, wenn nicht gesetzt. Beispiel: export QWEN_CODE_PROFILE_STARTUP=1
QWEN_CODE_PROFILE_STARTUP_OUTERSetze dies zusammen mit QWEN_CODE_PROFILE_STARTUP=1 auf 1, um auch im äußeren (Pre-Sandbox)-Prozess ein Startup-Profil zu sammeln. Outer-Process-Reports erhalten das Dateinamen-Präfix outer-, um sie vom Report des Sandbox-Childs zu unterscheiden.Standardmäßig deaktiviert – nur der Sandbox-Child sammelt, um doppelte Reports zu vermeiden. Nützlich für die lokale Entwicklung, bei der die CLI nicht neu in einer Sandbox gestartet wird.
QWEN_CODE_PROFILE_STARTUP_NO_HEAPSetze dies zusammen mit QWEN_CODE_PROFILE_STARTUP=1 auf 1, um die process.memoryUsage()-Snapshots pro Checkpoint zu überspringen. Nützlich bei der Messung des eigenen Heisenberg-Overheads des Profilers.Standardmäßig deaktiviert. Heap-Snapshots kosten jeweils ~50 µs (weit unter 1 % der gesamten Startup-Zeit), daher sollten die meisten Benutzer dies unverändert lassen.
QWEN_CODE_LEGACY_MCP_BLOCKINGSetze dies auf 1, um das Pre-Progressive-MCP-Verhalten wiederherzustellen, bei dem Config.initialize() synchron auf den Discover-Handshake jedes konfigurierten MCP-Servers wartet, bevor es zurückkehrt.Standardmäßig deaktiviert. Modernes qwen-code lässt MCP-Server im Hintergrund online gehen, während die UI bereits interaktiv ist; das Modell sieht jeden Batch neuer Tools innerhalb von ~16 ms, nachdem der Server bereit ist. Dieser Flag wird als Rollback-Escape-Hatch für ≥ 1 Release beibehalten. Beispiel: export QWEN_CODE_LEGACY_MCP_BLOCKING=1
QWEN_CODE_LEGACY_ERASE_LINES=1 deaktiviert den Terminal-Redraw-Optimizer zwangsweise (stellt die zeilenweisen Löschsequenzen wieder her); =0 aktiviert ihn zwangsweise, auch auf WSL, wo er standardmäßig übersprungen wird, da ConPTY die gebatchten Cursor-Bewegungen des Optimizers mishandelt (Issue #7634). Nicht gesetzt = Plattform-Standard (überspringen, wenn WSL_DISTRO_NAME oder WSL_INTEROP gesetzt ist).Escape-Hatch für Streaming-Output-Regressionen. Da er aus der Umgebung gelesen wird, dropen ihn Launcher, die env bereinigen (z. B. sudo), ebenfalls – übergib ihn stattdessen beim Start: sudo QWEN_CODE_LEGACY_ERASE_LINES=1 qwen. Beispiel: export QWEN_CODE_LEGACY_ERASE_LINES=1
Wenn beide .env-Dateien auf Benutzerebene dieselbe Variable definieren, hat die Qwen-spezifische Datei Vorrang: <QWEN_HOME>/.env (oder ~/.qwen/.env, wenn QWEN_HOME nicht gesetzt ist) wird vor ~/.env geladen, und vorhandene Umgebungswerte werden nicht überschrieben.

Befehlszeilenargumente

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

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

Tabelle der Befehlszeilenargumente

ArgumentAliasBeschreibungMögliche WerteHinweise
--model-mGibt das Qwen-Modell an, das für diese Sitzung verwendet werden soll.ModellnameBeispiel: npm start -- --model qwen3-coder-plus
--prompt-pWird verwendet, um einen Prompt direkt an den Befehl zu übergeben. Dies ruft Qwen Code in einem nicht-interaktiven Modus auf.Prompt-TextFür Skriptbeispiele verwende das Flag --output-format json, um strukturierte Ausgaben zu erhalten.
--prompt-interactive-iStartet eine interaktive Sitzung mit dem angegebenen Prompt als anfängliche Eingabe.Prompt-TextDer Prompt wird innerhalb der interaktiven Sitzung verarbeitet, nicht davor. Kann nicht verwendet werden, wenn Eingaben von stdin gepipt werden. Beispiel: qwen -i "explain this code"
--system-promptÜberschreibt den integrierten System-Prompt der Hauptsitzung für diesen Durchlauf.Prompt-TextGeladene Kontextdateien wie QWEN.md werden auch nach dieser Überschreibung weiterhin angehängt. Kann mit --append-system-prompt kombiniert werden.
--append-system-promptHängt zusätzliche Anweisungen an den System-Prompt der Hauptsitzung für diesen Durchlauf an.Prompt-TextWird nach dem integrierten Prompt und den 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 Ausgaben und Skripting verwende das Flag --output-format json oder --output-format stream-json. 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-Nachrichtenprotokoll über stdin für bidirektionale Kommunikation. Voraussetzung: --input-format stream-json erfordert, dass --output-format stream-json gesetzt ist. Bei der Verwendung von stream-json ist stdin für Protokollnachrichten reserviert. Siehe Headless Mode für detaillierte Informationen.
--include-partial-messagesSchließt teilweise Assistenten-Nachrichten ein, wenn das stream-json-Ausgabeformat verwendet wird. Wenn aktiviert, werden Stream-Events (message_start, content_block_delta, etc.) emittiert, 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-imageLegt die Sandbox-Image-URI fest.
--debug-dAktiviert den Debug-Modus für diese Sitzung und bietet eine ausführlichere Ausgabe.
--help-hZeigt Hilfeinformationen zu den Befehlszeilenargumenten an.
--yoloAktiviert den YOLO-Modus, der alle Tool-Aufrufe automatisch genehmigt.
--approval-modeLegt den Genehmigungsmodus für Tool-Aufrufe fest.plan, default, auto-edit, auto, 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, notebook_edit) automatisch genehmigen, für andere nachfragen. auto: LLM-Klassifizierer genehmigt sichere Aktionen automatisch und blockiert riskante. yolo: Alle Tool-Aufrufe automatisch genehmigen (entspricht --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 durch Kommas getrennte Liste von Tool-Namen, die den Bestätigungsdialog umgehen.Tool-NamenBeispiel: qwen --allowed-tools "Shell(git status)"
--disabled-slash-commandsNamen von Slash-Befehlen zum Ausblenden/Deaktivieren (durch Kommas getrennt oder wiederholt). Wird mit der Einstellung slashCommands.disabled und der Umgebungsvariable QWEN_DISABLED_SLASH_COMMANDS vereinigt. Wird ohne Berücksichtigung der Groß-/Kleinschreibung mit dem endgültigen Befehlsnamen abgeglichen.BefehlsnamenBeispiel: qwen --disabled-slash-commands "auth,mcp,extensions"
--telemetryAktiviert Telemetrie.
--telemetry-targetLegt das Telemetrie-Ziel fest.Siehe Telemetrie für weitere Informationen.
--telemetry-otlp-endpointLegt den OTLP-Endpunkt für die Telemetrie fest.Siehe Telemetrie für weitere Informationen.
--telemetry-otlp-protocolLegt das OTLP-Protokoll für die Telemetrie fest (grpc oder http).Standardmäßig grpc. Siehe Telemetrie für weitere Informationen.
--telemetry-log-promptsAktiviert die Protokollierung von Prompts für die Telemetrie.Siehe Telemetrie für weitere Informationen.
--acpAktiviert den ACP-Modus (Agent Client Protocol). Nützlich für IDE-/Editor-Integrationen wie Zed.Stabil. Ersetzt das veraltete Flag --experimental-acp.
--experimental-lspAktiviert die experimentelle LSP (Language Server Protocol)-Funktion für Code-Intelligenz (Go-to-Definition, Referenzen finden, Diagnostik usw.).Experimentell. Erfordert die Installation von Language Servern.
--extensions-eGibt eine Liste von Erweiterungen an, die für die Sitzung verwendet werden sollen.ErweiterungsnamenWenn nicht angegeben, werden alle verfügbaren Erweiterungen verwendet. Verwende den speziellen Begriff qwen -e none, um alle Erweiterungen zu deaktivieren. Beispiel: qwen -e my-extension -e my-other-extension
--list-extensions-lListet alle verfügbaren Erweiterungen auf und beendet das Programm.
--proxyLegt den Proxy für die CLI fest.Proxy-URLBeispiel: --proxy http://localhost:7890.
--include-directoriesFügt dem Workspace zusätzliche Verzeichnisse hinzu, um die Unterstützung mehrerer Verzeichnisse zu ermöglichen.VerzeichnispfadeKann mehrfach oder als durch Kommas getrennte Werte angegeben werden. Beispiel: --include-directories /path/to/project1,/path/to/project2 oder --include-directories /path/to/project1 --include-directories /path/to/project2
--screen-readerAktiviert den Screen-Reader-Modus, der die TUI für eine bessere Kompatibilität mit Screen Readern anpasst.
--versionZeigt die Version der CLI an.
--openai-loggingAktiviert die Protokollierung von OpenAI-API-Aufrufen zum Debuggen und Analysieren.Dieses Flag überschreibt die Einstellung enableOpenAILogging in settings.json.
--openai-logging-dirLegt einen benutzerdefinierten Verzeichnispfad für OpenAI-API-Logs fest.VerzeichnispfadDieses Flag überschreibt die Einstellung openAILoggingDir in settings.json. Unterstützt absolute Pfade, relative Pfade und die ~-Expansion. Beispiel: qwen --openai-logging-dir "~/qwen-logs" --openai-logging

Kontextdateien (Hierarchischer Instruktionskontext)

Auch wenn Kontextdateien nicht streng genommen die Verhaltensweise der CLI konfigurieren (standardmäßig QWEN.md, konfigurierbar über die context.fileName-Einstellung), sind sie entscheidend für die Konfiguration des Instruktionskontextes (auch “Memory” genannt). Mit dieser leistungsstarken Funktion kannst du der KI projektspezifische Anweisungen, Coding-Style-Guides oder beliebige relevante Hintergrundinformationen geben, wodurch ihre Antworten besser auf deine Bedürfnisse zugeschnitten und genauer werden. Die CLI enthält UI-Elemente, wie z. B. eine Anzeige im Footer, die die Anzahl der geladenen Kontextdateien zeigt, um dich über den aktiven Kontext zu informieren.

  • Zweck: Diese Markdown-Dateien enthalten Anweisungen, Richtlinien oder Kontext, den das Qwen-Modell während eurer Interaktionen kennen soll. Das System ist so konzipiert, dass es diesen Instruktionskontext hierarchisch verwaltet.

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 22+. ## 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 zu etablieren.

  • Hierarchisches Laden und Priorität: Die CLI implementiert ein hierarchisches Memory-System, indem sie Kontextdateien (z. B. QWEN.md) aus verschiedenen Verzeichnissen lädt. Inhalte aus Dateien weiter unten in dieser Liste (spezifischer) überschreiben oder ergänzen in der Regel Inhalte aus Dateien weiter oben (allgemeiner). Die genaue Verkettungsreihenfolge und der finale Kontext können im /memory-Dialog eingesehen werden. Die typische Ladereihenfolge ist:
    1. Globale Kontextdatei:
      • Speicherort: ~/.qwen/<configured-context-filename> (z. B. ~/.qwen/QWEN.md in deinem Benutzer-Home-Verzeichnis).
      • Geltungsbereich: Stellt Standardanweisungen für alle deine Projekte bereit.
    2. Kontextdateien im Projekt-Root und übergeordneten Verzeichnissen:
      • Speicherort: Die CLI sucht im aktuellen Arbeitsverzeichnis nach der konfigurierten Kontextdatei und dann in jedem übergeordneten Verzeichnis bis entweder zum Projekt-Root (erkennbar an einem .git-Ordner) oder zu deinem Home-Verzeichnis.
      • Geltungsbereich: Stellt Kontext bereit, der für das gesamte Projekt oder einen wesentlichen Teil davon relevant ist.
  • Verkettung & UI-Anzeige: Die Inhalte aller gefundenen Kontextdateien werden verkettet (mit Trennzeichen, die auf ihre Herkunft und ihren Pfad hinweisen) und als Teil des System-Prompts bereitgestellt. Der CLI-Footer zeigt die Anzahl der geladenen Kontextdateien an und gibt dir so einen schnellen visuellen Hinweis auf den aktiven Instruktionskontext.
  • Inhalte importieren: Du kannst deine Kontextdateien modularisieren, indem du andere Markdown-Dateien mit der Syntax @path/to/file.md importierst. Weitere Details findest du in der Memory-Dokumentation.
  • Befehle zur Memory-Verwaltung:
    • Verwende /memory, um den Dialog zur Memory-Verwaltung zu öffnen.
    • Aktualisiere den Memory-Status über den Dialog, um Kontextdateien aus allen konfigurierten Verzeichnissen erneut zu scannen und neu zu laden.
    • Siehe die Befehlsdokumentation für vollständige Details zum /memory-Befehl.

Indem du diese Konfigurationsebenen und die hierarchische Natur von Kontextdateien verstehst und nutzt, kannst du den Memory der KI effektiv verwalten und die Antworten von Qwen Code genau auf deine spezifischen Bedürfnisse und Projekte zuschneiden.

Sandbox

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

Die Sandbox ist standardmäßig deaktiviert, du kannst sie jedoch auf verschiedene Arten aktivieren:

  • Verwendung des --sandbox- oder -s-Flags.
  • Setzen der QWEN_SANDBOX-Umgebungsvariable.
  • Setzen von tools.sandbox in den Einstellungen.

⚠️ --yolo aktiviert nicht automatisch eine Sandbox. Der YOLO-Modus genehmigt nur Tool-Aufrufe automatisch; die Sandbox muss weiterhin explizit über --sandbox, QWEN_SANDBOX oder tools.sandbox aktiviert werden. Bei Headless-/nicht-interaktiven Ausführungen mit --yolo (oder --approval-mode=yolo) und ohne Sandbox kann das Modell Shell-, Write- und Edit-Tools mit den Berechtigungen des aktuellen Prozesses ausführen – Qwen Code gibt in diesem Fall eine Warnung auf stderr aus. Unterdrücke diese mit QWEN_CODE_SUPPRESS_YOLO_WARNING=1, sobald du die Kompromisse geprüft hast.

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 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-config

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

BUILD_SANDBOX=1 qwen -s

Nutzungsstatistiken

Um uns bei der Verbesserung von Qwen Code zu unterstützen, erfassen wir anonymisierte Nutzungsstatistiken. Diese Daten helfen uns zu verstehen, wie die CLI genutzt wird, häufige Probleme zu identifizieren und neue Funktionen zu priorisieren.

Was wir erfassen:

  • Tool-Aufrufe: Wir protokollieren die Namen und Kategorien (native oder MCP) der aufgerufenen Tools, ihren Terminal-Status (success, error oder cancelled) und wie lange ihre Ausführung dauert. Wir erfassen 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 erfassen nicht den Inhalt der Prompts oder Antworten.
  • Sitzungsinformationen: Wir erfassen Informationen über die Konfiguration der CLI, wie z. B. die aktivierten Tools und den Genehmigungsmodus.

Was wir NICHT erfassen:

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

So kannst du die Erfassung deaktivieren:

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

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

Alternativ kannst du QWEN_USAGE_STATISTICS_ENABLED=false (oder 0) in der Umgebung setzen. Die Umgebungsvariable hat Vorrang vor der Einstellung. Starte Qwen Code nach der Änderung eines der beiden Werte neu.

Note

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

Last updated on