Configuration de Qwen Code
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.
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) :
| Niveau | Source de configuration | Description |
|---|---|---|
| 1 | Valeurs par défaut | Valeurs par défaut codées en dur dans l’application |
| 2 | Fichier de valeurs par défaut système | Paramètres par défaut à l’échelle du système, pouvant être écrasés par d’autres fichiers de paramètres |
| 3 | Fichier de paramètres utilisateur | Paramètres globaux pour l’utilisateur actuel |
| 4 | Fichier de paramètres du projet | Paramètres spécifiques au projet |
| 5 | Fichier de paramètres système | Paramètres à l’échelle du système qui écrasent tous les autres fichiers de paramètres |
| 6 | Variables d’environnement | Variables à l’échelle du système ou spécifiques à la session, potentiellement chargées depuis des fichiers .env |
| 7 | Arguments en ligne de commande | Valeurs 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 fichier | Emplacement | Portée |
|---|---|---|
| Fichier de valeurs par défaut système | Linux: /etc/qwen-code/system-defaults.jsonWindows: C:\ProgramData\qwen-code\system-defaults.jsonmacOS: /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ème | Linux: /etc/qwen-code/settings.json Windows: C:\ProgramData\qwen-code\settings.json macOS: /Library/Application Support/QwenCode/settings.jsonLe 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. |
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 :
- Profils sandbox personnalisés (par ex.
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Compétences d’agent (Agent Skills) sous
.qwen/skills/(chaque compétence est un répertoire contenant unSKILL.md).
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ètre | Nouveau paramètre | Notes |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Consolidé en un seul paramètre |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
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 :
disableAutoUpdate | disableUpdateNag | enableAutoUpdate après migration |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
general.preferredEditor | string | L’éditeur préféré pour ouvrir les fichiers. | undefined |
general.vimMode | boolean | Active les raccourcis clavier Vim. | false |
general.enableAutoUpdate | boolean | Active la vérification et l’installation automatiques des mises à jour au démarrage. | true |
general.gitCoAuthor | boolean | Ajoute automatiquement un trailer Co-authored-by aux messages de commit git lorsque les commits sont effectués via Qwen Code. | true |
general.checkpointing.enabled | boolean | Active le checkpointing de session pour la récupération. | false |
general.defaultFileEncoding | string | Encodage 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ètre | Type | Description | Valeur par défaut | Valeurs possibles |
|---|---|---|---|---|
output.format | string | Le format de sortie du CLI. | "text" | "text", "json" |
ui
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
ui.theme | string | Le thème de couleurs pour l’interface. Voir Thèmes pour les options disponibles. | undefined |
ui.customThemes | object | Définitions de thèmes personnalisés. | {} |
ui.statusLine | object | Configuration 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.hideWindowTitle | boolean | Masque la barre de titre de la fenêtre. | false |
ui.hideTips | boolean | Masque les conseils utiles dans l’interface. | false |
ui.hideBanner | boolean | Masque la bannière de l’application. | false |
ui.hideFooter | boolean | Masque le pied de page de l’interface. | false |
ui.showMemoryUsage | boolean | Affiche les informations d’utilisation de la mémoire dans l’interface. | false |
ui.showLineNumbers | boolean | Affiche les numéros de ligne dans les blocs de code de la sortie CLI. | true |
ui.showCitations | boolean | Affiche les citations pour le texte généré dans le chat. | true |
ui.compactMode | boolean | Masque 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 |
enableWelcomeBack | boolean | Affiche 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.enableLoadingPhrases | boolean | Active les phrases de chargement (désactivez pour l’accessibilité). | true |
ui.accessibility.screenReader | boolean | Active le mode lecteur d’écran, qui ajuste l’interface texte (TUI) pour une meilleure compatibilité avec les lecteurs d’écran. | false |
ui.customWittyPhrases | array of strings | Une 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.enableFollowupSuggestions | boolean | Active 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.enableCacheSharing | boolean | Utilise 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.enableSpeculation | boolean | Exé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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
ide.enabled | boolean | Active le mode d’intégration IDE. | false |
ide.hasSeenNudge | boolean | Indique si l’utilisateur a vu la suggestion d’intégration IDE. | false |
privacy
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Active la collecte des statistiques d’utilisation. | true |
model
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
model.name | string | Le modèle Qwen à utiliser pour les conversations. | undefined |
model.maxSessionTurns | number | Nombre maximum de tours utilisateur/modèle/outil à conserver dans une session. -1 signifie illimité. | -1 |
model.generationConfig | object | Remplacements 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.contextPercentageThreshold | number | Dé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.skipNextSpeakerCheck | boolean | Ignore la vérification du prochain locuteur. | false |
model.skipLoopDetection | boolean | Dé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.skipStartupContext | boolean | Ignore 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.enableOpenAILogging | boolean | Active 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.openAILoggingDir | string | Chemin 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 :
- Les requêtes commencent avec une limite par défaut de 8K tokens de sortie
- Si la réponse est tronquée (le modèle atteint la limite), Qwen Code réessaie automatiquement avec 64K tokens
- 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-logsrelatif au répertoire actuel"/tmp/openai-logs"- Journalise dans le chemin absolu/tmp/openai-logs
fastModel
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
fastModel | string | Modè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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
context.fileName | string or array of strings | Le nom du ou des fichiers de contexte. | undefined |
context.importFormat | string | Le format à utiliser lors de l’importation de la mémoire. | undefined |
context.includeDirectories | array | Ré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.loadFromIncludeDirectories | boolean | Contrô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.respectGitIgnore | boolean | Respecte les fichiers .gitignore lors de la recherche. | true |
context.fileFiltering.respectQwenIgnore | boolean | Respecte les fichiers .qwenignore lors de la recherche. | true |
context.fileFiltering.enableRecursiveFileSearch | boolean | Indique 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.enableFuzzySearch | boolean | Lorsqu’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.gapThresholdMinutes | number | Minutes 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 :
- 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. - Désactivez la recherche floue : Si ignorer des fichiers ne suffit pas, vous pouvez désactiver la recherche floue en définissant
enableFuzzySearchsurfalsedans votre fichiersettings.json. Cela utilisera un algorithme de correspondance plus simple et non flou, ce qui peut être plus rapide. - 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
enableRecursiveFileSearchsurfalse. 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ètre | Type | Description | Valeur par défaut | Notes |
|---|---|---|---|---|
tools.sandbox | boolean or string | Environnement d’exécution sandbox (peut être un booléen ou une chaîne de chemin). | undefined | |
tools.shell.enableInteractiveShell | boolean | Utilise node-pty pour une expérience shell interactive. Le repli sur child_process s’applique toujours. | false | |
tools.core | array of strings | Obsolè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.exclude | array of strings | Obsolè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.allowed | array of strings | Obsolè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.approvalMode | string | Définit le mode d’approbation par défaut pour l’utilisation des outils. | default | Valeurs 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.discoveryCommand | string | Commande à exécuter pour la découverte des outils. | undefined | |
tools.callCommand | string | Dé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.useRipgrep | boolean | Utilise 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.useBuiltinRipgrep | boolean | Utilise 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.truncateToolOutputThreshold | number | Tronque la sortie de l’outil si elle dépasse ce nombre de caractères. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 25000 | Nécessite un redémarrage : Oui |
tools.truncateToolOutputLines | number | Nombre 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. | 1000 | Nécess |