Skip to Content
Guide utilisateurConfigurationParamètres

Configuration de Qwen Code

Tip

Authentification / Clés API : L’authentification (Qwen OAuth, Alibaba Cloud Coding Plan ou clé API) et les variables d’environnement liées à l’authentification (comme OPENAI_API_KEY) sont documentées dans Authentification.

Note

Remarque sur le nouveau format de configuration : Le format du fichier settings.json a été mis à jour vers une nouvelle structure plus organisée. L’ancien format sera migré automatiquement. Qwen Code propose plusieurs méthodes pour configurer son comportement, notamment via des variables d’environnement, des arguments en ligne de commande et des fichiers de paramètres. Ce document détaille les différentes méthodes de configuration et les paramètres disponibles.

Niveaux de configuration

La configuration est appliquée selon l’ordre de priorité suivant (les numéros inférieurs sont écrasés par les numéros supérieurs) :

NiveauSource de configurationDescription
1Valeurs par défautValeurs par défaut codées en dur dans l’application
2Fichier de valeurs par défaut systèmeParamètres par défaut à l’échelle du système, pouvant être écrasés par d’autres fichiers de paramètres
3Fichier de paramètres utilisateurParamètres globaux pour l’utilisateur actuel
4Fichier de paramètres du projetParamètres spécifiques au projet
5Fichier de paramètres systèmeParamètres à l’échelle du système qui écrasent tous les autres fichiers de paramètres
6Variables d’environnementVariables à l’échelle du système ou spécifiques à la session, potentiellement chargées depuis des fichiers .env
7Arguments en ligne de commandeValeurs transmises au lancement du CLI

Fichiers de paramètres

Qwen Code utilise des fichiers de paramètres JSON pour la configuration persistante. Ces fichiers peuvent se trouver à quatre emplacements :

Type de fichierEmplacementPortée
Fichier de valeurs par défaut systèmeLinux: /etc/qwen-code/system-defaults.json
Windows: C:\ProgramData\qwen-code\system-defaults.json
macOS: /Library/Application Support/QwenCode/system-defaults.json
Le chemin peut être écrasé via la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH.
Fournit une couche de base de paramètres par défaut à l’échelle du système. Ces paramètres ont la priorité la plus basse et sont destinés à être écrasés par les paramètres utilisateur, projet ou système.
Fichier de paramètres utilisateur~/.qwen/settings.json (où ~ correspond à votre répertoire personnel).S’applique à toutes les sessions Qwen Code de l’utilisateur actuel.
Fichier de paramètres du projet.qwen/settings.json dans le répertoire racine de votre projet.S’applique uniquement lors de l’exécution de Qwen Code depuis ce projet spécifique. Les paramètres du projet écrasent les paramètres utilisateur.
Fichier de paramètres systèmeLinux: /etc/qwen-code/settings.json
Windows: C:\ProgramData\qwen-code\settings.json
macOS: /Library/Application Support/QwenCode/settings.json
Le chemin peut être écrasé via la variable d’environnement QWEN_CODE_SYSTEM_SETTINGS_PATH.
S’applique à toutes les sessions Qwen Code sur le système, pour tous les utilisateurs. Les paramètres système écrasent les paramètres utilisateur et projet. Peut être utile pour les administrateurs système en entreprise afin de contrôler les configurations Qwen Code des utilisateurs.
Note

Remarque sur les variables d’environnement dans les paramètres : Les valeurs de chaîne dans vos fichiers settings.json peuvent référencer des variables d’environnement en utilisant la syntaxe $VAR_NAME ou ${VAR_NAME}. Ces variables seront résolues automatiquement au chargement des paramètres. Par exemple, si vous disposez d’une variable d’environnement MY_API_TOKEN, vous pouvez l’utiliser dans settings.json ainsi : "apiKey": "$MY_API_TOKEN".

Le répertoire .qwen dans votre projet

En plus du fichier de paramètres du projet, le répertoire .qwen d’un projet peut contenir d’autres fichiers spécifiques au projet liés au fonctionnement de Qwen Code, tels que :

Migration de la configuration

Qwen Code migre automatiquement les anciens paramètres de configuration vers le nouveau format. Les anciens fichiers de paramètres sont sauvegardés avant la migration. Les paramètres suivants ont été renommés d’une nomenclature négative (disable*) à positive (enable*) :

Ancien paramètreNouveau paramètreNotes
disableAutoUpdate + disableUpdateNaggeneral.enableAutoUpdateConsolidé en un seul paramètre
disableLoadingPhrasesui.accessibility.enableLoadingPhrases
disableFuzzySearchcontext.fileFiltering.enableFuzzySearch
disableCacheControlmodel.generationConfig.enableCacheControl
Note

Inversion des valeurs booléennes : Lors de la migration, les valeurs booléennes sont inversées (par ex., disableAutoUpdate: true devient enableAutoUpdate: false).

Politique de consolidation pour disableAutoUpdate et disableUpdateNag

Lorsque les deux anciens paramètres sont présents avec des valeurs différentes, la migration suit cette politique : si disableAutoUpdate ou disableUpdateNag est true, alors enableAutoUpdate devient false :

disableAutoUpdatedisableUpdateNagenableAutoUpdate après migration
falsefalsetrue
falsetruefalse
truefalsefalse
truetruefalse

Paramètres disponibles dans settings.json

Les paramètres sont organisés par catégories. Tous les paramètres doivent être placés dans l’objet de catégorie de premier niveau correspondant dans votre fichier settings.json.

general

ParamètreTypeDescriptionValeur par défaut
general.preferredEditorstringL’éditeur préféré pour ouvrir les fichiers.undefined
general.vimModebooleanActive les raccourcis clavier Vim.false
general.enableAutoUpdatebooleanActive la vérification et l’installation automatiques des mises à jour au démarrage.true
general.gitCoAuthorbooleanAjoute automatiquement un trailer Co-authored-by aux messages de commit git lorsque les commits sont effectués via Qwen Code.true
general.checkpointing.enabledbooleanActive le checkpointing de session pour la récupération.false
general.defaultFileEncodingstringEncodage par défaut pour les nouveaux fichiers. Utilisez "utf-8" (par défaut) pour UTF-8 sans BOM, ou "utf-8-bom" pour UTF-8 avec BOM. Ne modifiez ce paramètre que si votre projet l’exige spécifiquement."utf-8"

output

ParamètreTypeDescriptionValeur par défautValeurs possibles
output.formatstringLe format de sortie du CLI."text""text", "json"

ui

ParamètreTypeDescriptionValeur par défaut
ui.themestringLe thème de couleurs pour l’interface. Voir Thèmes pour les options disponibles.undefined
ui.customThemesobjectDéfinitions de thèmes personnalisés.{}
ui.statusLineobjectConfiguration personnalisée de la barre d’état. Une commande shell dont la sortie est affichée dans la section gauche du pied de page. Voir Barre d’état.undefined
ui.hideWindowTitlebooleanMasque la barre de titre de la fenêtre.false
ui.hideTipsbooleanMasque les conseils utiles dans l’interface.false
ui.hideBannerbooleanMasque la bannière de l’application.false
ui.hideFooterbooleanMasque le pied de page de l’interface.false
ui.showMemoryUsagebooleanAffiche les informations d’utilisation de la mémoire dans l’interface.false
ui.showLineNumbersbooleanAffiche les numéros de ligne dans les blocs de code de la sortie CLI.true
ui.showCitationsbooleanAffiche les citations pour le texte généré dans le chat.true
ui.compactModebooleanMasque la sortie des outils et la réflexion pour une vue plus épurée. Basculez avec Ctrl+O pendant une session. Lorsqu’il est activé, un indicateur compact apparaît dans le pied de page. Le paramètre persiste entre les sessions.false
enableWelcomeBackbooleanAffiche une boîte de dialogue de bienvenue lors du retour sur un projet avec un historique de conversation. Lorsqu’il est activé, Qwen Code détecte automatiquement si vous revenez sur un projet disposant d’un résumé de projet généré précédemment (.qwen/PROJECT_SUMMARY.md) et affiche une boîte de dialogue vous permettant de reprendre votre conversation précédente ou de recommencer. Cette fonctionnalité s’intègre à la commande /summary et à la boîte de dialogue de confirmation de fermeture.true
ui.accessibility.enableLoadingPhrasesbooleanActive les phrases de chargement (désactivez pour l’accessibilité).true
ui.accessibility.screenReaderbooleanActive le mode lecteur d’écran, qui ajuste l’interface texte (TUI) pour une meilleure compatibilité avec les lecteurs d’écran.false
ui.customWittyPhrasesarray of stringsUne liste de phrases personnalisées à afficher pendant les états de chargement. Si fournie, le CLI fera défiler ces phrases au lieu des phrases par défaut.[]
ui.enableFollowupSuggestionsbooleanActive les suggestions de suivi qui prédisent ce que vous souhaitez taper ensuite après la réponse du modèle. Les suggestions apparaissent sous forme de texte fantôme et peuvent être acceptées avec Tab, Entrée ou la flèche droite.true
ui.enableCacheSharingbooleanUtilise des requêtes forkées conscientes du cache pour la génération de suggestions. Réduit les coûts sur les fournisseurs prenant en charge la mise en cache des préfixes (expérimental).true
ui.enableSpeculationbooleanExécute de manière spéculative les suggestions acceptées avant soumission. Les résultats apparaissent instantanément lorsque vous les acceptez (expérimental).false

ide

ParamètreTypeDescriptionValeur par défaut
ide.enabledbooleanActive le mode d’intégration IDE.false
ide.hasSeenNudgebooleanIndique si l’utilisateur a vu la suggestion d’intégration IDE.false

privacy

ParamètreTypeDescriptionValeur par défaut
privacy.usageStatisticsEnabledbooleanActive la collecte des statistiques d’utilisation.true

model

ParamètreTypeDescriptionValeur par défaut
model.namestringLe modèle Qwen à utiliser pour les conversations.undefined
model.maxSessionTurnsnumberNombre maximum de tours utilisateur/modèle/outil à conserver dans une session. -1 signifie illimité.-1
model.generationConfigobjectRemplacements avancés transmis au générateur de contenu sous-jacent. Prend en charge les contrôles de requête tels que timeout, maxRetries, enableCacheControl, contextWindowSize (écrase la taille de la fenêtre de contexte du modèle), modalities (écrase les modalités d’entrée détectées automatiquement), customHeaders (en-têtes HTTP personnalisés pour les requêtes API) et extra_body (paramètres de corps supplémentaires uniquement pour les requêtes API compatibles OpenAI), ainsi que les paramètres de réglage fin sous samplingParams (par exemple temperature, top_p, max_tokens). Laissez non défini pour utiliser les valeurs par défaut du fournisseur.undefined
model.chatCompression.contextPercentageThresholdnumberDéfinit le seuil de compression de l’historique de chat en pourcentage de la limite totale de tokens du modèle. Il s’agit d’une valeur entre 0 et 1 qui s’applique à la fois à la compression automatique et à la commande manuelle /compress. Par exemple, une valeur de 0.6 déclenchera la compression lorsque l’historique du chat dépassera 60 % de la limite de tokens. Utilisez 0 pour désactiver complètement la compression.0.7
model.skipNextSpeakerCheckbooleanIgnore la vérification du prochain locuteur.false
model.skipLoopDetectionbooleanDésactive les vérifications de détection de boucle. La détection de boucle empêche les boucles infinies dans les réponses de l’IA, mais peut générer des faux positifs qui interrompent des workflows légitimes. Activez cette option si vous rencontrez de fréquentes interruptions dues à des faux positifs de détection de boucle.false
model.skipStartupContextbooleanIgnore l’envoi du contexte de l’espace de travail au démarrage (résumé de l’environnement et accusé de réception) au début de chaque session. Activez cette option si vous préférez fournir le contexte manuellement ou si vous souhaitez économiser des tokens au démarrage.false
model.enableOpenAILoggingbooleanActive la journalisation des appels API OpenAI pour le débogage et l’analyse. Lorsqu’il est activé, les requêtes et réponses API sont enregistrées dans des fichiers JSON.false
model.openAILoggingDirstringChemin de répertoire personnalisé pour les journaux de l’API OpenAI. Si non spécifié, la valeur par défaut est logs/openai dans le répertoire de travail actuel. Prend en charge les chemins absolus, les chemins relatifs (résolus depuis le répertoire de travail actuel) et l’expansion ~ (répertoire personnel).undefined

Exemple pour model.generationConfig :

{ "model": { "generationConfig": { "timeout": 60000, "contextWindowSize": 128000, "modalities": { "image": true }, "enableCacheControl": true, "customHeaders": { "X-Client-Request-ID": "req-123" }, "extra_body": { "enable_thinking": true }, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 1024 } } } }

max_tokens (tokens de sortie adaptatifs) :

Lorsque samplingParams.max_tokens n’est pas défini, Qwen Code utilise une stratégie adaptative de tokens de sortie pour optimiser l’utilisation des ressources GPU :

  1. Les requêtes commencent avec une limite par défaut de 8K tokens de sortie
  2. Si la réponse est tronquée (le modèle atteint la limite), Qwen Code réessaie automatiquement avec 64K tokens
  3. La sortie partielle est ignorée et remplacée par la réponse complète issue de la nouvelle tentative

Ce processus est transparent pour les utilisateurs — vous pourrez brièvement voir un indicateur de nouvelle tentative si une escalade se produit. Comme 99 % des réponses font moins de 5K tokens, la nouvelle tentative est rare (<1 % des requêtes).

Pour écraser ce comportement, définissez samplingParams.max_tokens dans vos paramètres ou utilisez la variable d’environnement QWEN_CODE_MAX_OUTPUT_TOKENS.

contextWindowSize :

Écrase la taille par défaut de la fenêtre de contexte pour le modèle sélectionné. Qwen Code détermine la fenêtre de contexte à l’aide de valeurs par défaut intégrées basées sur la correspondance du nom du modèle, avec une valeur de secours constante. Utilisez ce paramètre lorsque la limite de contexte effective d’un fournisseur diffère de celle par défaut de Qwen Code. Cette valeur définit la capacité de contexte maximale supposée du modèle, et non une limite de tokens par requête.

modalities :

Écrase les modalités d’entrée détectées automatiquement pour le modèle sélectionné. Qwen Code détecte automatiquement les modalités prises en charge (image, PDF, audio, vidéo) en fonction de la correspondance de motifs du nom du modèle. Utilisez ce paramètre lorsque la détection automatique est incorrecte — par exemple, pour activer pdf pour un modèle qui le prend en charge mais n’est pas reconnu. Format : { "image": true, "pdf": true, "audio": true, "video": true }. Omettez une clé ou définissez-la sur false pour les types non pris en charge.

customHeaders :

Permet d’ajouter des en-têtes HTTP personnalisés à toutes les requêtes API. Cela est utile pour le traçage des requêtes, la surveillance, le routage de passerelle API, ou lorsque différents modèles nécessitent des en-têtes différents. Si customHeaders est défini dans modelProviders[].generationConfig.customHeaders, il sera utilisé directement ; sinon, les en-têtes de model.generationConfig.customHeaders seront utilisés. Aucune fusion n’a lieu entre les deux niveaux.

Le champ extra_body vous permet d’ajouter des paramètres personnalisés au corps de la requête envoyé à l’API. Cela est utile pour les options spécifiques au fournisseur qui ne sont pas couvertes par les champs de configuration standard. Remarque : Ce champ n’est pris en charge que pour les fournisseurs compatibles OpenAI (openai, qwen-oauth). Il est ignoré pour les fournisseurs Anthropic et Gemini. Si extra_body est défini dans modelProviders[].generationConfig.extra_body, il sera utilisé directement ; sinon, les valeurs de model.generationConfig.extra_body seront utilisées.

Exemples pour model.openAILoggingDir :

  • "~/qwen-logs" - Journalise dans le répertoire ~/qwen-logs
  • "./custom-logs" - Journalise dans ./custom-logs relatif au répertoire actuel
  • "/tmp/openai-logs" - Journalise dans le chemin absolu /tmp/openai-logs

fastModel

ParamètreTypeDescriptionValeur par défaut
fastModelstringModèle utilisé pour générer les suggestions de prompt et l’exécution spéculative. Laissez vide pour utiliser le modèle principal. Un modèle plus petit/plus rapide (par ex., qwen3-coder-flash) réduit la latence et le coût. Peut également être défini via /model --fast.""

context

ParamètreTypeDescriptionValeur par défaut
context.fileNamestring or array of stringsLe nom du ou des fichiers de contexte.undefined
context.importFormatstringLe format à utiliser lors de l’importation de la mémoire.undefined
context.includeDirectoriesarrayRépertoires supplémentaires à inclure dans le contexte de l’espace de travail. Spécifie un tableau de chemins absolus ou relatifs supplémentaires à inclure. Les répertoires manquants seront ignorés avec un avertissement par défaut. Les chemins peuvent utiliser ~ pour faire référence au répertoire personnel de l’utilisateur. Ce paramètre peut être combiné avec l’indicateur en ligne de commande --include-directories.[]
context.loadFromIncludeDirectoriesbooleanContrôle le comportement de la commande /memory refresh. Si défini sur true, les fichiers QWEN.md doivent être chargés depuis tous les répertoires ajoutés. Si défini sur false, QWEN.md ne doit être chargé que depuis le répertoire actuel.false
context.fileFiltering.respectGitIgnorebooleanRespecte les fichiers .gitignore lors de la recherche.true
context.fileFiltering.respectQwenIgnorebooleanRespecte les fichiers .qwenignore lors de la recherche.true
context.fileFiltering.enableRecursiveFileSearchbooleanIndique s’il faut activer la recherche récursive de noms de fichiers sous l’arborescence actuelle lors de la complétion des préfixes @ dans le prompt.true
context.fileFiltering.enableFuzzySearchbooleanLorsqu’il est défini sur true, active les capacités de recherche floue lors de la recherche de fichiers. Définissez sur false pour améliorer les performances sur les projets contenant un grand nombre de fichiers.true
context.gapThresholdMinutesnumberMinutes d’inactivité après lesquelles les blocs de réflexion conservés sont effacés pour libérer des tokens de contexte. S’aligne sur le TTL typique du cache de prompt du fournisseur. Augmentez cette valeur si votre fournisseur dispose d’un TTL de cache plus long.5

Dépannage des performances de recherche de fichiers

Si vous rencontrez des problèmes de performances lors de la recherche de fichiers (par ex., avec les complétions @), en particulier dans les projets contenant un très grand nombre de fichiers, voici quelques solutions à essayer par ordre de recommandation :

  1. Utilisez .qwenignore : Créez un fichier .qwenignore à la racine de votre projet pour exclure les répertoires contenant un grand nombre de fichiers que vous n’avez pas besoin de référencer (par ex., artefacts de build, journaux, node_modules). Réduire le nombre total de fichiers analysés est le moyen le plus efficace d’améliorer les performances.
  2. Désactivez la recherche floue : Si ignorer des fichiers ne suffit pas, vous pouvez désactiver la recherche floue en définissant enableFuzzySearch sur false dans votre fichier settings.json. Cela utilisera un algorithme de correspondance plus simple et non flou, ce qui peut être plus rapide.
  3. Désactivez la recherche récursive de fichiers : En dernier recours, vous pouvez désactiver complètement la recherche récursive de fichiers en définissant enableRecursiveFileSearch sur false. Ce sera l’option la plus rapide car elle évite une analyse récursive de votre projet. Cependant, cela signifie que vous devrez saisir le chemin complet des fichiers lors de l’utilisation des complétions @.

tools

ParamètreTypeDescriptionValeur par défautNotes
tools.sandboxboolean or stringEnvironnement d’exécution sandbox (peut être un booléen ou une chaîne de chemin).undefined
tools.shell.enableInteractiveShellbooleanUtilise node-pty pour une expérience shell interactive. Le repli sur child_process s’applique toujours.false
tools.corearray of stringsObsolète. Sera supprimé dans la prochaine version. Utilisez permissions.allow + permissions.deny à la place. Restreint les outils intégrés à une liste d’autorisation. Tous les outils non présents dans la liste sont désactivés.undefined
tools.excludearray of stringsObsolète. Utilisez permissions.deny à la place. Noms des outils à exclure de la découverte. Migré automatiquement vers le format permissions au premier chargement.undefined
tools.allowedarray of stringsObsolète. Utilisez permissions.allow à la place. Noms des outils qui contournent la boîte de dialogue de confirmation. Migré automatiquement vers le format permissions au premier chargement.undefined
tools.approvalModestringDéfinit le mode d’approbation par défaut pour l’utilisation des outils.defaultValeurs possibles : plan (analyser uniquement, ne pas modifier de fichiers ni exécuter de commandes), default (exiger une approbation avant les modifications de fichiers ou l’exécution de commandes shell), auto-edit (approuver automatiquement les modifications de fichiers), yolo (approuver automatiquement tous les appels d’outils)
tools.discoveryCommandstringCommande à exécuter pour la découverte des outils.undefined
tools.callCommandstringDéfinit une commande shell personnalisée pour appeler un outil spécifique découvert via tools.discoveryCommand. La commande shell doit respecter les critères suivants : elle doit prendre le name de la fonction (exactement comme dans la déclaration de fonction ) comme premier argument en ligne de commande. Elle doit lire les arguments de la fonction au format JSON sur stdin, de manière analogue à functionCall.args. Elle doit retourner la sortie de la fonction au format JSON sur stdout, de manière analogue à functionResponse.response.content.undefined
tools.useRipgrepbooleanUtilise ripgrep pour la recherche de contenu de fichier au lieu de l’implémentation de secours. Offre des performances de recherche plus rapides.true
tools.useBuiltinRipgrepbooleanUtilise le binaire ripgrep intégré. Lorsqu’il est défini sur false, la commande rg au niveau du système sera utilisée à la place. Ce paramètre n’est effectif que si tools.useRipgrep est true.true
tools.truncateToolOutputThresholdnumberTronque la sortie de l’outil si elle dépasse ce nombre de caractères. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles.25000Nécessite un redémarrage : Oui
tools.truncateToolOutputLinesnumberNombre maximum de lignes ou d’entrées conservées lors du troncage de la sortie de l’outil. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles.1000Nécess
Last updated on