Skip to Content
Guide utilisateurConfigurationParamètres

Configuration de Qwen Code

Tip

Authentification / Clés API : L’authentification (Qwen OAuth vs API compatible OpenAI) 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 façons de configurer son comportement, notamment via des variables d’environnement, des arguments en ligne de commande et des fichiers de paramètres. Ce document décrit les différentes méthodes de configuration et les paramètres disponibles.

Couches de configuration

La configuration est appliquée dans l’ordre de priorité suivant (les nombres plus bas sont remplacés par les nombres plus élevés) :

NiveauSource de configurationDescription
1Valeurs par défautValeurs codées en dur dans l’application
2Fichier de valeurs système par défautParamètres par défaut à l’échelle du système pouvant être remplacés par d’autres fichiers de paramètres
3Fichier de paramètres utilisateurParamètres globaux pour l’utilisateur actuel
4Fichier de paramètres projetParamètres spécifiques au projet
5Fichier de paramètres systèmeParamètres à l’échelle du système qui remplacent 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 de ligne de commandeValeurs passées lors du lancement de l’interface CLI

Fichiers de paramètres

Qwen Code utilise des fichiers de paramètres au format JSON pour la configuration persistante. Il existe quatre emplacements possibles pour ces fichiers :

Type de fichierEmplacementPortée
Fichier 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 modifié via la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH.
Fournit une couche de base pour les paramètres par défaut à l’échelle du système. Ces paramètres ont la priorité la plus faible et sont destinés à être remplacés par les paramètres utilisateur, projet ou système.
Fichier de paramètres utilisateur~/.qwen/settings.json (où ~ est votre répertoire personnel).S’applique à toutes les sessions Qwen Code de l’utilisateur actuel.
Fichier de paramètres projet.qwen/settings.json dans le répertoire racine de votre projet.S’applique uniquement lorsque Qwen Code est exécuté depuis ce projet spécifique. Les paramètres du projet remplacent ceux de l’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 modifié 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 remplacent ceux de l’utilisateur et du projet. Utile notamment pour les administrateurs système en entreprise.
Note

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

Le répertoire .qwen dans votre projet

En plus d’un fichier de paramètres de 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 :

Paramètres disponibles dans settings.json

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

général

ParamètreTypeDescriptionValeur par défaut
general.preferredEditorstringL’éditeur préféré pour ouvrir les fichiers.undefined
general.vimModebooleanActiver les raccourcis clavier Vim.false
general.disableAutoUpdatebooleanDésactiver les mises à jour automatiques.false
general.disableUpdateNagbooleanDésactiver les notifications de mise à jour.false
general.checkpointing.enabledbooleanActiver la sauvegarde des sessions pour récupération.false

output

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

ui

ParamètreTypeDescriptionDéfaut
ui.themestringLe thème de couleurs pour l’interface utilisateur. Voir Thèmes pour les options disponibles.undefined
ui.customThemesobjectDéfinitions de thèmes personnalisés.{}
ui.hideWindowTitlebooleanMasquer la barre de titre de la fenêtre.false
ui.hideTipsbooleanMasquer les astuces utiles dans l’interface utilisateur.false
ui.hideBannerbooleanMasquer la bannière de l’application.false
ui.hideFooterbooleanMasquer le pied de page de l’interface utilisateur.false
ui.showMemoryUsagebooleanAfficher les informations d’utilisation de la mémoire dans l’interface utilisateur.false
ui.showLineNumbersbooleanAfficher les numéros de ligne dans les blocs de code dans la sortie CLI.true
ui.showCitationsbooleanAfficher les citations pour le texte généré dans le chat.true
enableWelcomeBackbooleanAfficher la boîte de dialogue de bienvenue lors du retour à un projet avec un historique de conversation. Lorsque cette option est activée, Qwen Code détectera automatiquement si vous revenez à un projet avec un résumé de projet précédemment généré (.qwen/PROJECT_SUMMARY.md) et affichera une boîte de dialogue vous permettant de continuer votre conversation précédente ou d’en commencer une nouvelle. Cette fonctionnalité s’intègre à la commande /summary et à la boîte de dialogue de confirmation de fermeture.true
ui.accessibility.disableLoadingPhrasesbooleanDésactiver les phrases de chargement pour l’accessibilité.false
ui.accessibility.screenReaderbooleanActive le mode lecteur d’écran, qui adapte l’interface utilisateur textuelle 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. Lorsqu’elle est fournie, la CLI parcourra ces phrases au lieu des phrases par défaut.[]

ide

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

privacy

ParamètreTypeDescriptionValeur par défaut
privacy.usageStatisticsEnabledbooleanActiver la collecte de statistiques d’utilisation.true

model

ParamètreTypeDescriptionValeur par défaut
model.namestringLe modèle Qwen à utiliser pour les conversations.undefined
model.maxSessionTurnsnumberNombre maximal de tours utilisateur/modèle/outil à conserver dans une session. -1 signifie illimité.-1
model.summarizeToolOutputobjectActive ou désactive le résumé de la sortie des outils. Vous pouvez spécifier le budget en tokens pour le résumé via le paramètre tokenBudget. Remarque : Actuellement, seul l’outil run_shell_command est pris en charge. Par exemple {"run_shell_command": {"tokenBudget": 2000}}undefined
model.generationConfigobjectParamètres avancés transmis au générateur de contenu sous-jacent. Prend en charge des contrôles de requête tels que timeout, maxRetries et disableCacheControl, ainsi que des options de réglage fin dans 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 discussion en pourcentage de la limite totale de tokens du modèle. C’est 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 dépasse 60 % de la limite de tokens. Utilisez 0 pour désactiver complètement la compression.0.7
model.skipNextSpeakerCheckbooleanIgnore la vérification du prochain intervenant.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 IA mais peut générer des faux positifs qui interrompent les flux de travail légitimes. Activez cette option si vous rencontrez fréquemment des interruptions dues à des faux positifs.false
model.skipStartupContextbooleanIgnore l’envoi du contexte initial de l’espace de travail (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 à l’API OpenAI à des fins de débogage et d’analyse. Lorsque cette option est activée, les requêtes et réponses de l’API sont enregistrées dans des fichiers JSON.false
model.openAILoggingDirstringChemin personnalisé vers le répertoire des journaux de l’API OpenAI. S’il n’est pas 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 model.generationConfig :

{ "model": { "generationConfig": { "timeout": 60000, "disableCacheControl": false, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 1024 } } } }

Exemples model.openAILoggingDir :

  • "~/qwen-logs" - Enregistre les journaux dans le répertoire ~/qwen-logs
  • "./custom-logs" - Enregistre les journaux dans ./custom-logs relatif au répertoire courant
  • "/tmp/openai-logs" - Enregistre les journaux dans le chemin absolu /tmp/openai-logs

context

ParamètreTypeDescriptionValeur par défaut
context.fileNamechaîne ou tableau de chaînesLe nom du ou des fichiers de contexte.undefined
context.importFormatchaîneLe format à utiliser lors de l’importation de la mémoire.undefined
context.discoveryMaxDirsnombreNombre maximal de répertoires à explorer pour la mémoire.200
context.includeDirectoriestableauRépertoires supplémentaires à inclure dans le contexte de l’espace de travail. Spécifie un tableau de chemins absolus ou relatifs supplémentaires à inclure dans le contexte de l’espace de travail. 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 le drapeau de ligne de commande --include-directories.[]
context.loadFromIncludeDirectoriesbooléenContrô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 courant.false
context.fileFiltering.respectGitIgnorebooléenRespecter les fichiers .gitignore lors de la recherche.true
context.fileFiltering.respectQwenIgnorebooléenRespecter les fichiers .qwenignore lors de la recherche.true
context.fileFiltering.enableRecursiveFileSearchbooléenIndique s’il faut activer la recherche récursive des noms de fichiers sous l’arborescence actuelle lors de la complétion des préfixes @ dans l’invite.true
context.fileFiltering.disableFuzzySearchbooléenLorsque défini sur true, désactive les capacités de recherche floue lors de la recherche de fichiers, ce qui peut améliorer les performances sur les projets comportant un grand nombre de fichiers.false

Résolution des problèmes de performances de recherche de fichiers

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

  1. Utiliser .qwenignore : Créez un fichier .qwenignore à la racine de votre projet pour exclure les répertoires contenant un grand nombre de fichiers dont vous n’avez pas besoin de référencer (ex. : artefacts de build, journaux, node_modules). Réduire le nombre total de fichiers parcourus est le moyen le plus efficace d’améliorer les performances.
  2. Désactiver la recherche floue : Si ignorer des fichiers ne suffit pas, vous pouvez désactiver la recherche floue en définissant disableFuzzySearch sur true dans votre fichier settings.json. Cela utilisera un algorithme de correspondance plus simple et non flou, ce qui peut être plus rapide.
  3. Désactiver la recherche récursive de fichiers : En dernier recours, vous pouvez désactiver entièrement la recherche récursive de fichiers en définissant enableRecursiveFileSearch sur false. Il s’agira de l’option la plus rapide puisqu’elle évite un parcours récursif de votre projet. Toutefois, cela signifie que vous devrez taper le chemin complet des fichiers lorsque vous utilisez les complétions @.

outils

ParamètreTypeDescriptionValeur par défautRemarques
tools.sandboxbooléen ou chaîneEnvironnement d’exécution sandbox (peut être un booléen ou une chaîne de chemin).undefined
tools.shell.enableInteractiveShellbooléenUtiliser node-pty pour une expérience de shell interactive. Le recours à child_process s’applique toujours.false
tools.coretableau de chaînesPeut être utilisé pour restreindre l’ensemble des outils intégrés avec une liste autorisée. Vous pouvez également spécifier des restrictions spécifiques aux commandes pour les outils qui le permettent, comme l’outil run_shell_command. Par exemple, "tools.core": ["run_shell_command(ls -l)"] n’autorisera que l’exécution de la commande ls -l.undefined
tools.excludetableau de chaînesNoms d’outils à exclure de la découverte. Vous pouvez également spécifier des restrictions spécifiques aux commandes pour les outils qui le permettent, comme l’outil run_shell_command. Par exemple, "tools.exclude": ["run_shell_command(rm -rf)"] bloquera la commande rm -rf. Note de sécurité : Les restrictions spécifiques aux commandes dans tools.exclude pour run_shell_command reposent sur une simple correspondance de chaînes et peuvent facilement être contournées. Cette fonctionnalité n’est pas un mécanisme de sécurité et ne doit pas être utilisée pour exécuter en toute sécurité du code non fiable. Il est recommandé d’utiliser tools.core pour sélectionner explicitement les commandes pouvant être exécutées.undefined
tools.allowedtableau de chaînesListe des noms d’outils qui contourneront la boîte de dialogue de confirmation. Utile pour les outils de confiance utilisés fréquemment. Par exemple, ["run_shell_command(git)", "run_shell_command(npm test)"] ignorera la boîte de dialogue de confirmation pour exécuter toutes les commandes git et npm test.undefined
tools.approvalModechaîneDéfinit le mode d’approbation par défaut pour l’utilisation des outils.defaultValeurs possibles : plan (analyser uniquement, ne pas modifier les fichiers ni exécuter de commandes), default (nécessite une approbation avant modification de fichiers ou exécution de commandes shell), auto-edit (approuver automatiquement les modifications de fichiers), yolo (approuver automatiquement tous les appels d’outils)
tools.discoveryCommandchaîneCommande à exécuter pour la découverte des outils.undefined
tools.callCommandchaîneDéfinit une commande shell personnalisée pour appeler un outil spécifique découvert à l’aide de tools.discoveryCommand. La commande shell doit respecter les critères suivants : elle doit prendre le nom de la fonction (exactement comme dans la déclaration de fonction ) comme premier argument de ligne de commande. Elle doit lire les arguments de la fonction au format JSON depuis 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.useRipgrepbooléenUtiliser ripgrep pour la recherche de contenu dans les fichiers au lieu de l’implémentation de secours. Offre de meilleures performances de recherche.true
tools.useBuiltinRipgrepbooléenUtiliser le binaire ripgrep inclus. Si défini sur false, la commande système rg sera utilisée à la place. Ce paramètre n’est effectif que lorsque tools.useRipgrep est true.true
tools.enableToolOutputTruncationbooléenActiver la troncature des grandes sorties d’outils.trueRedémarrage requis : Oui
tools.truncateToolOutputThresholdnombreTronquer la sortie de l’outil si elle dépasse ce nombre de caractères. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles.25000Redémarrage requis : Oui
tools.truncateToolOutputLinesnombreNombre maximal de lignes ou d’entrées conservées lors de la troncature de la sortie de l’outil. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles.1000Redémarrage requis : Oui
tools.autoAcceptbooléenContrôle si l’interface en ligne de commande accepte et exécute automatiquement les appels d’outils considérés comme sûrs (par exemple, les opérations en lecture seule) sans confirmation explicite de l’utilisateur. Si défini sur true, l’interface en ligne de commande ignorera l’invite de confirmation pour les outils jugés sûrs.false

mcp

ParamètreTypeDescriptionValeur par défaut
mcp.serverCommandchaîne de caractèresCommande pour démarrer un serveur MCP.undefined
mcp.allowedtableau de chaînes de caractèresUne liste d’autorisation des serveurs MCP à autoriser. Vous permet de spécifier une liste de noms de serveurs MCP qui devraient être mis à disposition du modèle. Cela peut être utilisé pour restreindre l’ensemble des serveurs MCP auxquels se connecter. Notez que ce paramètre sera ignoré si --allowed-mcp-server-names est défini.undefined
mcp.excludedtableau de chaînes de caractèresUne liste de refus des serveurs MCP à exclure. Un serveur listé à la fois dans mcp.excluded et mcp.allowed est exclu. Notez que ce paramètre sera ignoré si --allowed-mcp-server-names est défini.undefined
Note

Note de sécurité pour les serveurs MCP : Ces paramètres utilisent une correspondance simple de chaînes de caractères sur les noms de serveurs MCP, qui peuvent être modifiés. Si vous êtes un administrateur système souhaitant empêcher les utilisateurs de contourner cela, envisagez de configurer mcpServers au niveau des paramètres système de sorte que l’utilisateur ne puisse pas configurer ses propres serveurs MCP. Cela ne doit pas être utilisé comme un mécanisme de sécurité infaillible.

sécurité

ParamètreTypeDescriptionValeur par défaut
security.folderTrust.enabledbooleanParamètre pour suivre si la confiance du dossier est activée.false
security.auth.selectedTypestringLe type d’authentification actuellement sélectionné.undefined
security.auth.enforcedTypestringLe type d’authentification requis (utile pour les entreprises).undefined
security.auth.useExternalbooleanIndique s’il faut utiliser un flux d’authentification externe.undefined

advanced

ParamètreTypeDescriptionValeur par défaut
advanced.autoConfigureMemorybooleanConfigure automatiquement les limites de mémoire de Node.js.false
advanced.dnsResolutionOrderstringL’ordre de résolution DNS.undefined
advanced.excludedEnvVarstableau de chaînesVariables d’environnement à exclure du contexte du projet. Spécifie les variables d’environnement qui ne doivent pas être chargées depuis les fichiers .env du projet. Cela empêche les variables d’environnement spécifiques au projet (comme DEBUG=true) d’interférer avec le comportement de l’interface CLI. Les variables des fichiers .qwen/.env ne sont jamais exclues.["DEBUG","DEBUG_MODE"]
advanced.bugCommandobjetConfiguration pour la commande de rapport de bogue. Remplace l’URL par défaut de la commande /bug. Propriétés : urlTemplate (chaîne) : Une URL pouvant contenir les espaces réservés {title} et {info}. Exemple : "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }undefined
advanced.tavilyApiKeystringClé API pour le service de recherche Web Tavily. Utilisée pour activer la fonctionnalité de l’outil web_search.undefined
Note

Remarque concernant advanced.tavilyApiKey : Il s’agit d’un format de configuration hérité. Pour les utilisateurs Qwen OAuth, le fournisseur DashScope est automatiquement disponible sans aucune configuration. Pour les autres types d’authentification, configurez les fournisseurs Tavily ou Google en utilisant le nouveau format de configuration webSearch.

mcpServers

Configure les connexions à un ou plusieurs serveurs Model-Context Protocol (MCP) pour découvrir et utiliser des outils personnalisés. Qwen Code tente de se connecter à chaque serveur MCP configuré afin de découvrir les outils disponibles. Si plusieurs serveurs MCP exposent un outil portant le même nom, les noms des outils seront préfixés avec l’alias du serveur que vous avez défini dans la configuration (par exemple, serverAlias__nomReelDeLOutil) afin d’éviter les conflits. Notez que le système peut supprimer certaines propriétés de schéma des définitions d’outils MCP pour des raisons de compatibilité. Au moins une des propriétés command, url ou httpUrl doit être fournie. Si plusieurs sont spécifiées, l’ordre de priorité est : httpUrl, puis url, puis command.

PropriétéTypeDescriptionOptionnel
mcpServers.<SERVER_NAME>.commandchaîne de caractèresLa commande à exécuter pour démarrer le serveur MCP via l’E/S standard.Oui
mcpServers.<SERVER_NAME>.argstableau de chaînesLes arguments à passer à la commande.Oui
mcpServers.<SERVER_NAME>.envobjetLes variables d’environnement à définir pour le processus du serveur.Oui
mcpServers.<SERVER_NAME>.cwdchaîne de caractèresLe répertoire de travail dans lequel démarrer le serveur.Oui
mcpServers.<SERVER_NAME>.urlchaîne de caractèresL’URL d’un serveur MCP utilisant les événements envoyés par le serveur (SSE) pour communiquer.Oui
mcpServers.<SERVER_NAME>.httpUrlchaîne de caractèresL’URL d’un serveur MCP utilisant HTTP en streaming pour communiquer.Oui
mcpServers.<SERVER_NAME>.headersobjetUne carte des en-têtes HTTP à envoyer avec les requêtes vers url ou httpUrl.Oui
mcpServers.<SERVER_NAME>.timeoutnombreDélai d’expiration en millisecondes pour les requêtes vers ce serveur MCP.Oui
mcpServers.<SERVER_NAME>.trustbooléenFaire confiance à ce serveur et contourner toutes les confirmations d’appel d’outils.Oui
mcpServers.<SERVER_NAME>.descriptionchaîne de caractèresUne brève description du serveur, pouvant être utilisée à des fins d’affichage.Oui
mcpServers.<SERVER_NAME>.includeToolstableau de chaînesListe des noms d’outils à inclure depuis ce serveur MCP. Lorsque cette liste est spécifiée, seuls les outils listés ici seront disponibles depuis ce serveur (comportement de type liste blanche). Si non spécifié, tous les outils du serveur sont activés par défaut.Oui
mcpServers.<SERVER_NAME>.excludeToolstableau de chaînesListe des noms d’outils à exclure depuis ce serveur MCP. Les outils listés ici ne seront pas accessibles au modèle, même s’ils sont exposés par le serveur. Remarque : excludeTools prime sur includeTools – si un outil figure dans les deux listes, il sera exclu.Oui

télémétrie

Configure la collecte de journaux et de métriques pour Qwen Code. Pour plus d’informations, voir télémétrie.

ParamètreTypeDescriptionDéfaut
telemetry.enabledbooleanIndique si la télémétrie est activée ou non.
telemetry.targetstringLa destination des données de télémétrie collectées. Valeurs supportées : local et gcp.
telemetry.otlpEndpointstringLe point de terminaison de l’exportateur OTLP.
telemetry.otlpProtocolstringLe protocole de l’exportateur OTLP (grpc ou http).
telemetry.logPromptsbooleanIndique s’il faut inclure le contenu des invites utilisateur dans les journaux.
telemetry.outfilestringLe fichier vers lequel écrire les données de télémétrie lorsque target est local.
telemetry.useCollectorbooleanIndique s’il faut utiliser un collecteur OTLP externe.

Exemple de settings.json

Voici un exemple de fichier settings.json avec la structure imbriquée, nouvelle depuis la version v0.3.0 :

{ "general": { "vimMode": true, "preferredEditor": "code" }, "ui": { "theme": "GitHub", "hideBanner": true, "hideTips": false, "customWittyPhrases": [ "Vous oubliez mille choses chaque jour. Assurez-vous que celle-ci en fait partie", "Connexion à l'AGI" ] }, "tools": { "approvalMode": "yolo", "sandbox": "docker", "discoveryCommand": "bin/get_tools", "callCommand": "bin/call_tool", "exclude": ["write_file"] }, "mcpServers": { "mainServer": { "command": "bin/mcp_server.py" }, "anotherServer": { "command": "node", "args": ["mcp_server.js", "--verbose"] } }, "telemetry": { "enabled": true, "target": "local", "otlpEndpoint": "http://localhost:4317", "logPrompts": true }, "privacy": { "usageStatisticsEnabled": true }, "model": { "name": "qwen3-coder-plus", "maxSessionTurns": 10, "enableOpenAILogging": false, "openAILoggingDir": "~/qwen-logs", "summarizeToolOutput": { "run_shell_command": { "tokenBudget": 100 } } }, "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"] } }

Historique du Shell

La CLI conserve un historique des commandes shell que vous exécutez. Pour éviter les conflits entre différents projets, cet historique est stocké dans un répertoire spécifique au projet, situé dans le dossier personnel de votre utilisateur.

  • Emplacement : ~/.qwen/tmp/<project_hash>/shell_history
    • <project_hash> est un identifiant unique généré à partir du chemin racine de votre projet.
    • L’historique est enregistré dans un fichier nommé shell_history.

Variables d’environnement et fichiers .env

Les variables d’environnement constituent une méthode courante pour configurer des applications, en particulier pour les informations sensibles (comme les jetons) ou les paramètres susceptibles de varier selon les environnements.

Qwen Code peut automatiquement charger les variables d’environnement à partir des fichiers .env. Pour les variables liées à l’authentification (telles que OPENAI_*) et l’approche recommandée avec .qwen/.env, consultez Authentification.

Tip

Exclusion de variables d’environnement : Certaines variables d’environnement (comme DEBUG et DEBUG_MODE) sont automatiquement exclues des fichiers .env du projet par défaut afin d’éviter toute interférence avec le comportement de l’interface CLI. Les variables provenant des fichiers .qwen/.env ne sont jamais exclues. Vous pouvez personnaliser ce comportement à l’aide du paramètre advanced.excludedEnvVars dans votre fichier settings.json.

Tableau des variables d’environnement

VariableDescriptionNotes
GEMINI_TELEMETRY_ENABLEDDéfinir sur true ou 1 pour activer la télémétrie. Toute autre valeur est traitée comme une désactivation.Remplace le paramètre telemetry.enabled.
GEMINI_TELEMETRY_TARGETDéfinit la cible de télémétrie (local ou gcp).Remplace le paramètre telemetry.target.
GEMINI_TELEMETRY_OTLP_ENDPOINTDéfinit le point de terminaison OTLP pour la télémétrie.Remplace le paramètre telemetry.otlpEndpoint.
GEMINI_TELEMETRY_OTLP_PROTOCOLDéfinit le protocole OTLP (grpc ou http).Remplace le paramètre telemetry.otlpProtocol.
GEMINI_TELEMETRY_LOG_PROMPTSDéfinir sur true ou 1 pour activer ou désactiver la journalisation des invites utilisateur. Toute autre valeur est traitée comme une désactivation.Remplace le paramètre telemetry.logPrompts.
GEMINI_TELEMETRY_OUTFILEDéfinit le chemin du fichier vers lequel écrire les données de télémétrie lorsque la cible est local.Remplace le paramètre telemetry.outfile.
GEMINI_TELEMETRY_USE_COLLECTORDéfinir sur true ou 1 pour activer ou désactiver l’utilisation d’un collecteur OTLP externe. Toute autre valeur est traitée comme une désactivation.Remplace le paramètre telemetry.useCollector.
GEMINI_SANDBOXAlternative au paramètre sandbox dans settings.json.Accepte true, false, docker, podman, ou une chaîne de commande personnalisée.
SEATBELT_PROFILE(spécifique à macOS) Change le profil Seatbelt (sandbox-exec) sur macOS.permissive-open : (Par défaut) Restreint les écritures au dossier du projet (et quelques autres dossiers, voir packages/cli/src/utils/sandbox-macos-permissive-open.sb) mais autorise les autres opérations. strict : Utilise un profil strict qui refuse les opérations par défaut. <profile_name> : Utilise un profil personnalisé. Pour définir un profil personnalisé, créez un fichier nommé sandbox-macos-<profile_name>.sb dans le répertoire .qwen/ de votre projet (par exemple, my-project/.qwen/sandbox-macos-custom.sb).
DEBUG ou DEBUG_MODE(souvent utilisé par les bibliothèques sous-jacentes ou le CLI lui-même) Définir sur true ou 1 pour activer la journalisation détaillée, utile pour le débogage.Remarque : Ces variables sont automatiquement exclues des fichiers .env du projet par défaut afin d’éviter toute interférence avec le comportement du CLI. Utilisez les fichiers .qwen/.env si vous devez les définir spécifiquement pour Qwen Code.
NO_COLORDéfinir sur n’importe quelle valeur pour désactiver toutes les sorties colorées dans le CLI.
CLI_TITLEDéfinir sur une chaîne de caractères pour personnaliser le titre du CLI.
CODE_ASSIST_ENDPOINTSpécifie le point de terminaison du serveur d’assistance au code.Utile pour le développement et les tests.
TAVILY_API_KEYVotre clé API pour le service de recherche Web Tavily.Utilisée pour activer la fonctionnalité de l’outil web_search. Exemple : export TAVILY_API_KEY="tvly-your-api-key-here"

Arguments de ligne de commande

Les arguments passés directement lors de l’exécution de la CLI peuvent remplacer d’autres configurations pour cette session spécifique.

Tableau des Arguments en Ligne de Commande

ArgumentAliasDescriptionValeurs PossiblesNotes
--model-mSpécifie le modèle Qwen à utiliser pour cette session.Nom du modèleExemple : npm start -- --model qwen3-coder-plus
--prompt-pUtilisé pour passer un prompt directement à la commande. Cela invoque Qwen Code en mode non interactif.Votre texte de promptPour des exemples de scripts, utilisez l’indicateur --output-format json afin d’obtenir une sortie structurée.
--prompt-interactive-iDémarre une session interactive avec le prompt fourni comme entrée initiale.Votre texte de promptLe prompt est traité dans la session interactive, et non avant celle-ci. Ne peut pas être utilisé lorsque l’entrée provient d’un pipe stdin. Exemple : qwen -i "explain this code"
--output-format-oSpécifie le format de la sortie CLI en mode non interactif.text, json, stream-jsontext : (Par défaut) La sortie standard lisible par l’homme. json : Une sortie JSON lisible par machine émise à la fin de l’exécution. stream-json : Messages JSON diffusés au fur et à mesure de leur apparition pendant l’exécution. Pour une sortie structurée et le scripting, utilisez l’indicateur --output-format json ou --output-format stream-json. Voir Mode Headless pour plus d’informations.
--input-formatSpécifie le format consommé depuis l’entrée standard.text, stream-jsontext : (Par défaut) Entrée texte standard depuis stdin ou les arguments de ligne de commande. stream-json : Protocole de message JSON via stdin pour une communication bidirectionnelle. Obligation : --input-format stream-json nécessite que --output-format stream-json soit défini. Lors de l’utilisation de stream-json, stdin est réservé aux messages de protocole. Voir Mode Headless pour plus d’informations.
--include-partial-messagesInclut les messages partiels de l’assistant lors de l’utilisation du format de sortie stream-json. Si activé, émet des événements de flux (message_start, content_block_delta, etc.) au fur et à mesure de leur diffusion.Par défaut : false. Obligation : Nécessite que --output-format stream-json soit défini. Voir Mode Headless pour plus d’informations sur les événements de flux.
--sandbox-sActive le mode bac à sable pour cette session.
--sandbox-imageDéfinit l’URI de l’image du bac à sable.
--debug-dActive le mode débogage pour cette session, fournissant une sortie plus verbeuse.
--all-files-aSi défini, inclut récursivement tous les fichiers du répertoire courant comme contexte pour le prompt.
--help-hAffiche les informations d’aide concernant les arguments en ligne de commande.
--show-memory-usageAffiche l’utilisation actuelle de la mémoire.
--yoloActive le mode YOLO, qui approuve automatiquement tous les appels d’outils.
--approval-modeDéfinit le mode d’approbation pour les appels d’outils.plan, default, auto-edit, yoloModes pris en charge : plan : Analyse uniquement — ne modifie pas les fichiers ni n’exécute de commandes. default : Nécessite une approbation pour les modifications de fichiers ou les commandes shell (comportement par défaut). auto-edit : Approuve automatiquement les outils d’édition (edit, write_file) tout en demandant une validation pour les autres. yolo : Approuve automatiquement tous les appels d’outils (équivalent à --yolo). Ne peut pas être utilisé conjointement avec --yolo. Utilisez --approval-mode=yolo au lieu de --yolo pour la nouvelle approche unifiée. Exemple : qwen --approval-mode auto-edit
Voir plus sur Mode d’approbation.
--allowed-toolsListe séparée par des virgules des noms d’outils qui contourneront la boîte de dialogue de confirmation.Noms d’outilsExemple : qwen --allowed-tools "Shell(git status)"
--telemetryActive la télémétrie.
--telemetry-targetDéfinit la cible de télémétrie.Voir télémétrie pour plus d’informations.
--telemetry-otlp-endpointDéfinit le point de terminaison OTLP pour la télémétrie.Voir télémétrie pour plus d’informations.
--telemetry-otlp-protocolDéfinit le protocole OTLP pour la télémétrie (grpc ou http).Par défaut : grpc. Voir télémétrie pour plus d’informations.
--telemetry-log-promptsActive la journalisation des prompts pour la télémétrie.Voir télémétrie pour plus d’informations.
--checkpointingActive le checkpointing.
--extensions-eSpécifie une liste d’extensions à utiliser pour la session.Noms d’extensionsSi non fourni, toutes les extensions disponibles sont utilisées. Utilisez le terme spécial qwen -e none pour désactiver toutes les extensions. Exemple : qwen -e my-extension -e my-other-extension
--list-extensions-lListe toutes les extensions disponibles et quitte.
--proxyDéfinit le proxy pour la CLI.URL du proxyExemple : --proxy http://localhost:7890.
--include-directoriesInclut des répertoires supplémentaires dans l’espace de travail pour la prise en charge multi-répertoires.Chemins des répertoiresPeut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules. Un maximum de 5 répertoires peuvent être ajoutés. Exemple : --include-directories /path/to/project1,/path/to/project2 ou --include-directories /path/to/project1 --include-directories /path/to/project2
--screen-readerActive le mode lecteur d’écran, qui ajuste l’interface utilisateur textuelle pour une meilleure compatibilité avec les lecteurs d’écran.
--versionAffiche la version de la CLI.
--openai-loggingActive la journalisation des appels API OpenAI à des fins de débogage et d’analyse.Cet indicateur remplace le paramètre enableOpenAILogging dans settings.json.
--openai-logging-dirDéfinit un chemin personnalisé pour les journaux d’appels API OpenAI.Chemin du répertoireCet indicateur remplace le paramètre openAILoggingDir dans settings.json. Prend en charge les chemins absolus, relatifs et l’expansion ~. Exemple : qwen --openai-logging-dir "~/qwen-logs" --openai-logging
--tavily-api-keyDéfinit la clé API Tavily pour la fonctionnalité de recherche Web pour cette session.Clé APIExemple : qwen --tavily-api-key tvly-your-api-key-here

Fichiers de contexte (Contexte hiérarchique d’instructions)

Bien qu’ils ne constituent pas strictement une configuration du comportement de l’interface en ligne de commande (CLI), les fichiers de contexte (nommés par défaut QWEN.md, mais configurables via le paramètre context.fileName) sont essentiels pour définir le contexte d’instruction (également appelé « mémoire »). Cette fonctionnalité puissante vous permet de fournir au modèle d’intelligence artificielle des instructions spécifiques au projet, des guides de style de codage ou toute autre information pertinente, rendant ainsi ses réponses plus adaptées et précises selon vos besoins. L’interface inclut des éléments d’interface utilisateur, comme un indicateur dans le pied de page indiquant le nombre de fichiers de contexte chargés, afin de vous informer sur le contexte actif.

  • Objectif : Ces fichiers Markdown contiennent des instructions, des directives ou des informations contextuelles que vous souhaitez que le modèle Qwen prenne en compte durant vos interactions. Le système est conçu pour gérer ce contexte d’instruction de manière hiérarchique.

Exemple de Contenu d’un Fichier Contextuel (ex. QWEN.md)

Voici un exemple conceptuel du contenu qu’un fichier contextuel à la racine d’un projet TypeScript pourrait contenir :

# Projet : Ma Superbe Bibliothèque TypeScript ## Instructions Générales : - Lors de la génération de nouveau code TypeScript, veuillez suivre le style de codage existant. - Assurez-vous que toutes les nouvelles fonctions et classes possèdent des commentaires JSDoc. - Privilégiez les paradigmes de programmation fonctionnelle lorsque cela est approprié. - Tout le code doit être compatible avec TypeScript 5.0 et Node.js 20+. ## Style de Codage : - Utilisez 2 espaces pour l'indentation. - Les noms d'interfaces doivent être préfixés par `I` (ex. : `IUserService`). - Les membres privés des classes doivent être préfixés par un tiret bas (`_`). - Utilisez toujours l'égalité stricte (`===` et `!==`). ## Composant Spécifique : `src/api/client.ts` - Ce fichier gère toutes les requêtes API sortantes. - Lors de l'ajout de nouvelles fonctions d'appel API, assurez-vous qu'elles incluent une gestion d'erreurs et une journalisation robustes. - Utilisez l'utilitaire `fetchWithRetry` existant pour toutes les requêtes GET.

Concernant les dépendances :

  • Évitez d’introduire de nouvelles dépendances externes sauf si cela est absolument nécessaire.
  • Si une nouvelle dépendance est requise, veuillez en indiquer la raison.
Cet exemple montre comment vous pouvez fournir un contexte général sur le projet, des conventions de codage spécifiques, ainsi que des notes concernant des fichiers ou composants particuliers. Plus vos fichiers de contexte sont pertinents et précis, mieux l'IA pourra vous assister. L'utilisation de fichiers de contexte spécifiques au projet est fortement encouragée afin d'établir des conventions et un contexte clairs. - **Chargement hiérarchique et priorité :** L'interface en ligne de commande (CLI) implémente un système de mémoire hiérarchique sophistiqué en chargeant les fichiers de contexte (par exemple, `QWEN.md`) depuis plusieurs emplacements. Le contenu des fichiers situés plus bas dans cette liste (plus spécifiques) remplace généralement ou complète celui des fichiers situés plus haut (plus généraux). L'ordre exact de concaténation et le contexte final peuvent être consultés à l'aide de la commande `/memory show`. L'ordre typique de chargement est le suivant : 1. **Fichier de contexte global :** - Emplacement : `~/.qwen/<nom-du-fichier-de-contexte-configuré>` (par exemple, `~/.qwen/QWEN.md` dans votre répertoire utilisateur). - Portée : Fournit des instructions par défaut pour tous vos projets. 2. **Fichiers de contexte à la racine du projet et dans ses ancêtres :** - Emplacement : La CLI recherche le fichier de contexte configuré dans le répertoire de travail actuel, puis dans chaque répertoire parent jusqu'à atteindre soit la racine du projet (identifiée par un dossier `.git`), soit votre répertoire personnel. - Portée : Fournit un contexte pertinent pour l'ensemble du projet ou une grande partie de celui-ci. 3. **Fichiers de contexte dans les sous-répertoires (contextuels/locaux) :** - Emplacement : La CLI analyse également la présence du fichier de contexte configuré dans les sous-répertoires _situés sous_ le répertoire de travail actuel (en respectant les motifs d'exclusion courants tels que `node_modules`, `.git`, etc.). Par défaut, cette recherche est limitée à 200 répertoires, mais elle peut être ajustée via le paramètre `context.discoveryMaxDirs` dans votre fichier `settings.json`. - Portée : Permet d'inclure des instructions très spécifiques liées à un composant, module ou section particulière de votre projet. - **Concaténation et indication dans l’interface utilisateur :** Les contenus de tous les fichiers de contexte trouvés sont concaténés (avec des séparateurs indiquant leur origine et leur chemin) et inclus dans l'invite système. Le pied de page de la CLI affiche le nombre total de fichiers de contexte chargés, offrant ainsi un repère visuel rapide sur le contexte instructionnel actif. - **Importation de contenu :** Vous pouvez modulariser vos fichiers de contexte en important d'autres fichiers Markdown à l’aide de la syntaxe `@chemin/vers/fichier.md`. Pour plus de détails, voir la [documentation du processeur d’importation mémoire](../configuration/memory). - **Commandes de gestion de la mémoire :** - Utilisez `/memory refresh` pour forcer un nouveau scan et recharger tous les fichiers de contexte depuis tous les emplacements configurés. Cela met à jour le contexte instructionnel de l'IA. - Utilisez `/memory show` pour afficher le contexte instructionnel combiné actuellement chargé, ce qui vous permet de vérifier la hiérarchie et le contenu utilisé par l'IA. - Consultez la [documentation des commandes](../features/commands) pour obtenir tous les détails concernant la commande `/memory` et ses sous-commandes (`show` et `refresh`). En comprenant et en exploitant ces couches de configuration ainsi que la nature hiérarchique des fichiers de contexte, vous pouvez efficacement gérer la mémoire de l'IA et adapter les réponses de Qwen Code à vos besoins et projets spécifiques. ## Bac à sable Qwen Code peut exécuter des opérations potentiellement non sûres (comme des commandes shell et des modifications de fichiers) dans un environnement bac à sable pour protéger votre système. Le [Bac à sable](../features/sandbox) est désactivé par défaut, mais vous pouvez l'activer de plusieurs façons : - En utilisant le drapeau `--sandbox` ou `-s`. - En définissant la variable d'environnement `GEMINI_SANDBOX`. - Le bac à sable est activé par défaut lorsque vous utilisez `--yolo` ou `--approval-mode=yolo`. Par défaut, il utilise une image Docker pré-construite `qwen-code-sandbox`. Pour des besoins spécifiques au projet en matière de mise en bac à sable, vous pouvez créer un Dockerfile personnalisé à l'emplacement `.qwen/sandbox.Dockerfile` dans le répertoire racine de votre projet. Ce Dockerfile peut être basé sur l'image de base du bac à sable :

FROM qwen-code-sandbox

Ajoutez vos dépendances ou configurations personnalisées ici

Par exemple :

RUN apt-get update && apt-get install -y some-package

# COPY ./my-config /app/my-config

Lorsque .qwen/sandbox.Dockerfile existe, vous pouvez utiliser la variable d’environnement BUILD_SANDBOX lors de l’exécution de Qwen Code pour construire automatiquement l’image sandbox personnalisée :

BUILD_SANDBOX=1 qwen -s

Statistiques d’utilisation

Pour nous aider à améliorer Qwen Code, nous collectons des statistiques d’utilisation anonymisées. Ces données nous aident à comprendre comment l’interface en ligne de commande (CLI) est utilisée, à identifier les problèmes courants et à prioriser les nouvelles fonctionnalités.

Ce que nous collectons :

  • Appels d’outils : Nous enregistrons les noms des outils appelés, qu’ils réussissent ou échouent, ainsi que le temps nécessaire à leur exécution. Nous ne collectons pas les arguments transmis aux outils ni les données renvoyées par ceux-ci.
  • Requêtes API : Nous enregistrons le modèle utilisé pour chaque requête, la durée de celle-ci et son succès ou échec. Nous ne collectons pas le contenu des invites ou des réponses.
  • Informations sur la session : Nous collectons des informations concernant la configuration de l’interface CLI, telles que les outils activés et le mode d’approbation.

Ce que nous ne collectons PAS :

  • Informations personnelles identifiables (PII) : Nous ne collectons aucune information personnelle telle que votre nom, votre adresse e-mail ou vos clés API.
  • Contenu des invites et des réponses : Nous n’enregistrons pas le contenu de vos invites ou des réponses du modèle.
  • Contenu des fichiers : Nous n’enregistrons pas le contenu des fichiers lus ou écrits par l’interface CLI.

Comment désactiver cette collecte :

Vous pouvez à tout moment désactiver la collecte des statistiques d’utilisation en définissant la propriété usageStatisticsEnabled sur false dans la catégorie privacy de votre fichier settings.json :

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

Lorsque les statistiques d’utilisation sont activées, les événements sont envoyés à un point de terminaison de collecte RUM d’Alibaba Cloud.

Last updated on