Skip to Content
Guide utilisateurConfigurationParamètres

Configuration de Qwen Code

Tip

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

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 les variables d’environnement, les arguments en ligne de commande et les 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 paramètres système par défautParamè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 lors du lancement de la 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 paramètres système par défautLinux: /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 conçus pour être écrasé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 pour 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 lors du chargement des paramètres. Par exemple, si vous avez 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 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 :

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ètreRemarques
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 migré
falsefalsetrue
falsetruefalse
truefalsefalse
truetruefalse

Paramètres disponibles dans settings.json

Les paramètres sont organisés par catégories. La plupart des paramètres doivent être placés dans l’objet de catégorie de premier niveau correspondant dans votre fichier settings.json. Quelques paramètres de compatibilité, comme proxy, sont des clés de premier niveau.

Premier niveau

ParamètreTypeDescriptionValeur par défaut
proxystringURL du proxy pour les requêtes HTTP de la CLI. L’ordre de priorité est --proxy > proxy dans settings.json > variables d’environnement HTTPS_PROXY / https_proxy / HTTP_PROXY / http_proxy.undefined

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 les vérifications et installations automatiques des mises à jour au démarrage.true
general.showSessionRecapbooleanAffiche automatiquement un résumé d’une ligne “où vous en étiez” lors du retour au terminal après une absence. Désactivé par défaut. Utilisez /recap pour le déclencher manuellement, quel que soit ce paramètre.false
general.sessionRecapAwayThresholdMinutesnumberNombre de minutes pendant lesquelles le terminal doit être flou avant qu’un résumé automatique ne se déclenche au regain de focus. Utilisé uniquement lorsque showSessionRecap est activé.5
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 ceci que si votre projet le requiert spécifiquement."utf-8"

output

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

ui

ParamètreTypeDescriptionValeur par défaut
ui.themestringLe thème de couleurs pour l’interface. Voir Themes pour les options disponibles.undefined
ui.customThemesobjectDéfinitions de thèmes personnalisés.{}
ui.statusLineobjectConfiguration personnalisée de la ligne d’état. Une commande shell dont la sortie est affichée dans la section gauche du pied de page. Voir Status Line.undefined
ui.hideWindowTitlebooleanMasque la barre de titre de la fenêtre.false
ui.hideTipsbooleanMasque toutes les astuces (au démarrage et après réponse) dans l’interface. Voir Contextual Tips.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 ou via la boîte de dialogue Paramètres. Les invites d’approbation des outils ne sont jamais masquées, même en mode compact. Le paramètre persiste entre les sessions.false
ui.shellOutputMaxLinesnumberNombre maximum de lignes de sortie shell affichées en ligne. Définissez sur 0 pour désactiver la limite et afficher la sortie complète. Les lignes masquées sont indiquées via l’indicateur +N lines. Les erreurs, les commandes initiées par l’utilisateur avec le préfixe !, la confirmation des outils et les shells intégrés focalisés affichent toujours la sortie complète.5
enableWelcomeBackbooleanAffiche la boîte de dialogue de bienvenue lors du retour à un projet avec un historique de conversation. Lorsqu’il est activé, Qwen Code détecte automatiquement si vous revenez à un projet avec 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 poursuivre votre conversation précédente ou de recommencer. Si vous choisissez Start new chat session, cette décision est mémorisée pour le projet actuel jusqu’à ce que le résumé du projet change. 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 TUI pour une meilleure compatibilité avec les lecteurs d’écran.false
ui.customWittyPhrasesarray of stringsListe de phrases personnalisées à afficher pendant les états de chargement. Lorsqu’elle est fournie, la 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 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 lors de l’acceptation (expérimental).false
experimental.emitToolUseSummariesbooleanGénère de courtes étiquettes basées sur un LLM résumant chaque lot d’appels d’outils. Voir Tool-Use Summaries. Nécessite que fastModel soit configuré ; sinon, ignoré silencieusement. Peut être écrasé par session avec QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 ou =1.true

ide

ParamètreTypeDescriptionValeur par défaut
ide.enabledbooleanActive le mode d’intégration IDE.false
ide.hasSeenNudgebooleanIndique si l’utilisateur a vu l’invite 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, splitToolMedia (définissez sur true pour les serveurs strictement compatibles OpenAI comme LM Studio qui rejettent le contenu non textuel sur les messages role: "tool" — sépare les médias dans un message utilisateur de suivi), 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), extra_body (paramètres de corps supplémentaires pour les requêtes API compatibles OpenAI uniquement), et reasoning ({ effort: 'low' | 'medium' | 'high' | 'max', budget_tokens?: number } pour contrôler l’intensité de la réflexion, ou false pour désactiver ; 'max' est une extension DeepSeek — voir Reasoning / thinking configuration pour le comportement par fournisseur. Remarque : lorsque samplingParams est défini sur un fournisseur compatible OpenAI, le pipeline expédie ces clés telles quelles et le champ reasoning séparé de premier niveau est supprimé — placez reasoning_effort dans samplingParams (ou extra_body) dans ce cas), ainsi que des paramètres de réglage 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 de chat dépassera 60 % de la limite de tokens. Utilisez 0 pour désactiver entièrement 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 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.false
model.skipStartupContextbooleanIgnore l’envoi du contexte d’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 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 du répertoire personnalisé pour les journaux 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 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 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 remplacer 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 en utilisant des 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 la valeur 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. 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 permet d’ajouter des paramètres personnalisés au corps de la requête envoyé à l’API. Utile pour les options spécifiques au fournisseur non 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 model.openAILoggingDir :

  • "~/qwen-logs" - Journaux dans le répertoire ~/qwen-logs
  • "./custom-logs" - Journaux dans ./custom-logs relatif au répertoire actuel
  • "/tmp/openai-logs" - Journaux 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/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.enableFuzzySearchbooleanLorsque 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.clearContextOnIdle.toolResultsThresholdMinutesnumberMinutes d’inactivité avant d’effacer l’ancien contenu des résultats d’outils. Utilisez -1 pour désactiver.60
context.clearContextOnIdle.toolResultsNumToKeepnumberNombre de résultats d’outils compactables les plus récents à conserver lors de l’effacement. Plancher à 1.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 dont vous n’avez pas besoin de référencer (par ex. artefacts de build, journaux, node_modules). Réduire le nombre total de fichiers parcourus est la méthode la plus efficace pour améliorer les performances.
  2. Désactivez la recherche floue : Si ignorer les 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, non flou, qui peut être plus rapide.
  3. Désactivez 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. Ce sera l’option la plus rapide car elle évite un parcours récursif de votre projet. Cependant, cela signifie que vous devrez taper le chemin complet des fichiers lors de l’utilisation des complétions @.

tools

ParamètreTypeDescriptionValeur par défautRemarques
tools.sandboxboolean or stringEnvironnement d’exécution sandbox (peut être un booléen ou une chaîne de chemin).undefined
tools.sandboxImagestringURI de l’image sandbox utilisée par Docker/Podman lorsque --sandbox-image et QWEN_SANDBOX_IMAGE ne sont pas définis.undefined
tools.shell.enableInteractiveShellbooleanUtilise node-pty pour une expérience shell interactive. Le repli sur child_process s’applique toujours.false
tools.corearray of stringsDéprécié. 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 stringsDéprécié. 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 stringsDéprécié. Utilisez permissions.allow à la place. Noms des outils qui bypassent 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 les fichiers ni exécuter de commandes), default (requiert une approbation avant les modifications de fichiers ou l’exécution de commandes shell), auto-edit (approuve automatiquement les modifications de fichiers), yolo (approuve 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 en JSON sur stdin, analogue à functionCall.args. Elle doit retourner la sortie de la fonction en JSON sur stdout, analogue à functionResponse.response.content.undefined
tools.useRipgrepbooleanUtilise ripgrep pour la recherche de contenu de fichiers 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 de la troncature de la sortie de l’outil. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles.1000Nécessite un redémarrage : Oui
Note

Migration depuis tools.core / tools.exclude / tools.allowed : Ces anciens paramètres sont dépréciés et automatiquement migrés vers le nouveau format permissions au premier chargement. Préférez configurer permissions.allow / permissions.deny directement. Utilisez /permissions pour gérer les règles de manière interactive.

memory

ParamètreTypeDescriptionValeur par défaut
memory.enableManagedAutoMemorybooleanActive l’extraction en arrière-plan des mémoires depuis les conversations.true
memory.enableManagedAutoDreambooleanActive la consolidation automatique (déduplication et nettoyage) des mémoires collectées.false

Voir Memory pour plus de détails sur le fonctionnement de l’auto-mémoire et l’utilisation des commandes /memory, /remember et /dream.

permissions

Le système de permissions offre un contrôle fin sur les outils pouvant s’exécuter, ceux nécessitant une confirmation et ceux étant bloqués.

Priorité de décision (la plus haute en premier) : deny > ask > allow > (mode par défaut/interactif)

La première règle correspondante l’emporte. Les règles utilisent le format "ToolName" ou "ToolName(specifier)".

ParamètreTypeDescriptionValeur par défaut
permissions.allowarray of stringsRègles pour les appels d’outils auto-approuvés (aucune confirmation nécessaire). Fusionnées sur tous les scopes (utilisateur + projet + système).undefined
permissions.askarray of stringsRègles pour les appels d’outils nécessitant toujours une confirmation utilisateur. Prend priorité sur allow.undefined
permissions.denyarray of stringsRègles pour les appels d’outils bloqués. Priorité la plus haute — écrase à la fois allow et ask.undefined

Alias de noms d’outils (l’un de ceux-ci fonctionne dans les règles) :

AliasOutil canoniqueRemarques
Bash, Shellrun_shell_command
Read, ReadFileread_fileMéta-catégorie — voir ci-dessous
Edit, EditFileeditMéta-catégorie — voir ci-dessous
Write, WriteFilewrite_file
Grep, SearchFilesgrep_search
Glob, FindFilesglob
ListFileslist_directory
WebFetchweb_fetch
Agenttask
Skillskill

Méta-catégories :

Certains noms de règles couvrent automatiquement plusieurs outils :

Nom de règleOutils couverts
Readread_file, grep_search, glob, list_directory
Editedit, write_file

[!important] Read(/path/**) correspond aux quatre outils de lecture (lecture de fichier, grep, glob et liste de répertoires). Pour restreindre uniquement la lecture de fichiers, utilisez ReadFile(/path/**) ou read_file(/path/**).

Exemples de syntaxe de règles :

RègleSignification
"Bash"Toutes les commandes shell
"Bash(git *)"Commandes shell commençant par git (limite de mot : PAS gitk)
"Bash(git push *)"Commandes shell comme git push origin main
"Bash(npm run *)"Tout script npm run
"Read"Toutes les opérations de lecture de fichiers (read, grep, glob, list)
"Read(./secrets/**)"Lit tout fichier sous ./secrets/ récursivement
"Edit(/src/**/*.ts)"Modifie les fichiers TypeScript sous la racine du projet /src/
"WebFetch(api.example.com)"Récupère depuis api.example.com et tous ses sous-domaines
"mcp__puppeteer"Tous les outils du serveur MCP puppeteer

Préfixes de motifs de chemin :

PréfixeSignificationExemple
//Chemin absolu depuis la racine du système de fichiers//etc/passwd
~/Relatif au répertoire personnel~/Documents/*.pdf
/Relatif à la racine du projet/src/**/*.ts
./Relatif au répertoire de travail actuel./secrets/**
(aucun)Identique à ./secrets/**

Prévention du bypass de commandes shell :

Les règles de permission pour Read, Edit et WebFetch sont également appliquées lorsque l’agent exécute des commandes shell équivalentes. Par exemple, si Read(./.env) est dans deny, l’agent ne peut pas le bypasser via cat .env dans une commande shell. Les commandes shell prises en charge incluent cat, grep, curl, wget, cp, mv, rm, chmod et bien d’autres. Les commandes inconnues/sûres (par ex. git) ne sont pas affectées par les règles de fichiers/réseau.

Migration depuis les anciens paramètres :

Ancien paramètreRègle permissions équivalenteRemarques
tools.allowedpermissions.allowMigré automatiquement au premier chargement
tools.excludepermissions.denyMigré automatiquement au premier chargement
tools.corepermissions.allow (liste d’autorisation)Migré automatiquement ; les outils non listés sont désactivés au niveau du registre

Exemple de configuration :

{ "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] Utilisez /permissions dans la CLI interactive pour afficher, ajouter et supprimer des règles sans modifier directement settings.json.

slashCommands

Contrôle les commandes slash disponibles dans la CLI. Utile pour verrouiller la surface des commandes dans les déploiements multi-locataires ou en entreprise.

ParamètreTypeDescriptionValeur par défaut
slashCommands.disabledarray of stringsNoms des commandes slash à masquer et refuser d’exécuter. Correspondance insensible à la casse avec le nom de commande final (pour les commandes d’extension, il s’agit de la forme désambiguïsée, par ex. myext.deploy). Fusionné en union sur les scopes, donc les paramètres d’espace de travail peuvent ajouter mais pas supprimer les entrées définies dans les paramètres utilisateur ou système.undefined

La même liste de blocage peut également être fournie via l’indicateur CLI --disabled-slash-commands (séparé par des virgules ou répété) et la variable d’environnement QWEN_DISABLED_SLASH_COMMANDS ; les valeurs des trois sources sont fusionnées.

Exemple — verrouillage des intégrées pour un déploiement sandboxé :

{ "slashCommands": { "disabled": ["auth", "mcp", "extensions", "ide", "quit"] } }

Avec ces valeurs dans un settings.json au niveau système (/etc/qwen-code/settings.json ou QWEN_CODE_SYSTEM_SETTINGS_PATH), les utilisateurs ne peuvent pas réduire la liste de blocage depuis leur propre scope, et les commandes désactivées n’apparaîtront pas dans l’autocomplétion ni ne s’exécuteront lorsqu’elles sont tapées.

[!note] Ce paramètre ne contrôle que les commandes slash (par ex. /auth, /mcp). Il n’affecte pas les permissions des outils — voir permissions.deny pour cela. Il n’intercepte pas non plus les raccourcis clavier tels que Ctrl+C ou Esc.

mcp

ParamètreTypeDescriptionValeur par défaut
mcp.serverCommandstringCommande pour démarrer un serveur MCP.undefined
mcp.allowedarray of stringsListe d’autorisation de serveurs MCP à autoriser. Permet de spécifier une liste de noms de serveurs MCP qui doivent être mis à disposition du modèle. Peut être utilisé pour restreindre l’ensemble des serveurs MCP auxquels se connecter. Notez que cela sera ignoré si --allowed-mcp-server-names est défini.undefined
mcp.excludedarray of stringsListe de blocage de serveurs MCP à exclure. Un serveur listé dans mcp.excluded et mcp.allowed est exclu. Notez que cela 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 simple correspondance de chaîne sur les noms de serveurs MCP, qui peuvent être modifiés. Si vous êtes administrateur système et souhaitez empêcher les utilisateurs de bypasser cela, envisagez de configurer mcpServers au niveau des paramètres système afin que l’utilisateur ne puisse pas configurer ses propres serveurs MCP. Cela ne doit pas être utilisé comme un mécanisme de sécurité étanche.

lsp

[!warning] Fonctionnalité expérimentale : La prise en charge LSP est actuellement expérimentale et désactivée par défaut. Activez-la via l’indicateur en ligne de commande --experimental-lsp.

Le Language Server Protocol (LSP) fournit des fonctionnalités d’intelligence de code comme aller à la définition, trouver les références et les diagnostics.

La configuration du serveur LSP s’effectue via des fichiers .lsp.json dans le répertoire racine de votre projet, et non via settings.json. Voir la documentation LSP pour les détails de configuration et les exemples.

security

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 Node.js.false
advanced.dnsResolutionOrderstringL’ordre de résolution DNS.undefined
advanced.excludedEnvVarsarray of stringsVariables 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 la CLI. Les variables des fichiers .qwen/.env ne sont jamais exclues.["DEBUG","DEBUG_MODE"]
advanced.bugCommandobjectConfiguration pour la commande de rapport de bug. Écrase l’URL par défaut de la commande /bug. Propriétés : urlTemplate (string) : 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

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é pour découvrir les outils disponibles. Si plusieurs serveurs MCP exposent un outil avec le même nom, les noms d’outils seront préfixés avec l’alias du serveur que vous avez défini dans la configuration (par ex. serverAlias__actualToolName) pour é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 l’un des éléments command, url ou httpUrl doit être fourni. Si plusieurs sont spécifiés, l’ordre de priorité est httpUrl, puis url, puis command.

PropriétéTypeDescriptionOptionnel
mcpServers.<SERVER_NAME>.commandstringLa commande à exécuter pour démarrer le serveur MCP via I/O standard.Oui
mcpServers.<SERVER_NAME>.argsarray of stringsArguments à passer à la commande.Oui
mcpServers.<SERVER_NAME>.envobjectVariables d’environnement à définir pour le processus du serveur.Oui
mcpServers.<SERVER_NAME>.cwdstringLe répertoire de travail dans lequel démarrer le serveur.Oui
mcpServers.<SERVER_NAME>.urlstringL’URL d’un serveur MCP utilisant Server-Sent Events (SSE) pour la communication.Oui
mcpServers.<SERVER_NAME>.httpUrlstringL’URL d’un serveur MCP utilisant HTTP streamable pour la communication.Oui
mcpServers.<SERVER_NAME>.headersobjectUne carte d’en-têtes HTTP à envoyer avec les requêtes vers url ou httpUrl.Oui
mcpServers.<SERVER_NAME>.timeoutnumberDélai d’expiration en millisecondes pour les requêtes vers ce serveur MCP.Oui
mcpServers.<SERVER_NAME>.trustbooleanFait confiance à ce serveur et bypasse toutes les confirmations d’appels d’outils.Oui
mcpServers.<SERVER_NAME>.descriptionstringUne brève description du serveur, pouvant être utilisée à des fins d’affichage.Oui
mcpServers.<SERVER_NAME>.includeToolsarray of stringsListe des noms d’outils à inclure depuis ce serveur MCP. Lorsqu’elle est spécifiée, seuls les outils listés ici seront disponibles depuis ce serveur (comportement de liste d’autorisation). Si non spécifiée, tous les outils du serveur sont activés par défaut.Oui
mcpServers.<SERVER_NAME>.excludeToolsarray of stringsListe des noms d’outils à exclure de ce serveur MCP. Les outils listés ici ne seront pas disponibles pour le modèle, même s’ils sont exposés par le serveur. Remarque : excludeTools prend priorité sur includeTools - si un outil est dans les deux listes, il sera exclu.Oui

telemetry

Configure la journalisation et la collecte de métriques pour Qwen Code. Pour plus d’informations, voir telemetry.

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

Exemple settings.json

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

{ "proxy": "http://localhost:7890", "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 }, "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"] } }

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 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 stocké dans un fichier nommé shell_history.

Variables d’environnement et fichiers .env

Les variables d’environnement sont une méthode courante pour configurer les applications, notamment pour les informations sensibles (comme les tokens) ou pour les paramètres susceptibles de varier entre les environnements.

Qwen Code peut charger automatiquement les variables d’environnement depuis des fichiers .env. Pour les variables liées à l’authentification (comme OPENAI_*) et l’approche recommandée .qwen/.env, voir Authentication.

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 pour éviter d’interférer avec le comportement de la CLI. Les variables des fichiers .qwen/.env ne sont jamais exclues. Vous pouvez personnaliser ce comportement via le paramètre advanced.excludedEnvVars dans votre fichier settings.json.

Tableau des variables d’environnement

VariableDescriptionRemarques
QWEN_TELEMETRY_ENABLEDDéfinissez sur true ou 1 pour activer la télémétrie. Toute autre valeur est traitée comme une désactivation.Écrase le paramètre telemetry.enabled.
QWEN_TELEMETRY_TARGETDéfinit la cible de télémétrie (local ou gcp).Écrase le paramètre telemetry.target.
QWEN_TELEMETRY_OTLP_ENDPOINTDéfinit le point de terminaison OTLP pour la télémétrie.Écrase le paramètre telemetry.otlpEndpoint.
QWEN_TELEMETRY_OTLP_PROTOCOLDéfinit le protocole OTLP (grpc ou http).Écrase le paramètre telemetry.otlpProtocol.
QWEN_TELEMETRY_LOG_PROMPTSDéfinissez sur true ou 1 pour activer ou désactiver la journalisation des prompts utilisateur. Toute autre valeur est traitée comme une désactivation.Écrase le paramètre telemetry.logPrompts.
QWEN_TELEMETRY_OUTFILEDéfinit le chemin du fichier dans lequel écrire la télémétrie lorsque la cible est local.Écrase le paramètre telemetry.outfile.
QWEN_TELEMETRY_USE_COLLECTORDéfinissez 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.Écrase le paramètre telemetry.useCollector.
QWEN_SANDBOXAlternative au paramètre sandbox dans settings.json.Accepte true, false, docker, podman ou une chaîne de commande personnalisée.
QWEN_SANDBOX_IMAGEÉcrase la sélection de l’image sandbox pour Docker/Podman.Prend priorité sur tools.sandboxImage.
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 ex. my-project/.qwen/sandbox-macos-custom.sb).
DEBUG ou DEBUG_MODE(souvent utilisé par les bibliothèques sous-jacentes ou la CLI elle-même) Définissez sur true ou 1 pour activer la journalisation de débogage verbeuse, utile pour le dépannage.Remarque : Ces variables sont automatiquement exclues des fichiers .env du projet par défaut pour éviter d’interférer avec le comportement de la CLI. Utilisez les fichiers .qwen/.env si vous devez les définir spécifiquement pour Qwen Code.
NO_COLORDéfinissez sur n’importe quelle valeur pour désactiver toute sortie colorée dans la CLI.
CLI_TITLEDéfinissez sur une chaîne pour personnaliser le titre de la CLI.
CODE_ASSIST_ENDPOINTSpécifie le point de terminaison pour le serveur d’assistance au code.Utile pour le développement et les tests.
QWEN_CODE_MAX_OUTPUT_TOKENSÉcrase le nombre maximum de tokens de sortie par réponse par défaut. Lorsqu’il n’est pas défini, Qwen Code utilise une stratégie adaptative : commence avec 8K tokens et réessaie automatiquement avec 64K si la réponse est tronquée. Définissez-le sur une valeur spécifique (par ex. 16000) pour utiliser une limite fixe à la place.Prend priorité sur la valeur par défaut plafonnée (8K) mais est écrasé par samplingParams.max_tokens dans les paramètres. Désactive l’escalade automatique lorsqu’il est défini. Exemple : export QWEN_CODE_MAX_OUTPUT_TOKENS=16000
QWEN_CODE_UNATTENDED_RETRYDéfinissez sur true ou 1 pour activer le mode de nouvelle tentative persistante. Lorsqu’il est activé, les erreurs de capacité API transitoires (HTTP 429 Rate Limit et 529 Overloaded) sont retentées indéfiniment avec un backoff exponentiel (plafonné à 5 minutes par tentative) et des keepalives heartbeat toutes les 30 secondes sur stderr.Conçu pour les pipelines CI/CD et l’automatisation en arrière-plan où les tâches de longue durée doivent survivre aux pannes API temporaires. Doit être défini explicitement — CI=true seul n’active pas ce mode. Voir Headless Mode pour les détails. Exemple : export QWEN_CODE_UNATTENDED_RETRY=1
QWEN_CODE_PROFILE_STARTUPDéfinissez sur 1 pour activer le profilage des performances au démarrage. Écrit un rapport de timing JSON dans ~/.qwen/startup-perf/ avec les durées par phase.Actif uniquement dans le processus enfant sandbox. Zéro surcharge lorsqu’il n’est pas défini. Exemple : export QWEN_CODE_PROFILE_STARTUP=1

Arguments en ligne de commande

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

Pour la sélection de l’image sandbox, l’ordre de priorité est : --sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > image par défaut intégrée.

Tableau des arguments en ligne de commande

ArgumentAliasDescriptionValeurs possiblesRemarques
--model-mSpécifie le modèle Qwen à utiliser pour cette session.Nom du modèleExemple : npm start -- --model qwen3-coder-plus
--prompt-pPermet de passer un prompt directement à la commande. Cela invoque Qwen Code en mode non interactif.Votre texte de promptPour les exemples de scripting, utilisez l’indicateur --output-format json pour 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, pas avant. Ne peut pas être utilisé lors du piping d’entrée depuis stdin. Exemple : qwen -i "explain this code"
--system-promptÉcrase le prompt système de session principale intégré pour cette exécution.Votre texte de promptLes fichiers de contexte chargés tels que QWEN.md sont toujours ajoutés après cet écrasement. Peut être combiné avec --append-system-prompt.
--append-system-promptAjoute des instructions supplémentaires au prompt système de session principale pour cette exécution.Votre texte de promptAppliqué après le prompt intégré et les fichiers de contexte chargés. Peut être combiné avec --system-prompt. Voir Headless Mode pour les exemples.
--output-format-oSpécifie le format de sortie de la CLI pour le mode non interactif.text, json, stream-jsontext : (Par défaut) La sortie standard lisible par l’humain. json : Une sortie JSON lisible par machine émise à la fin de l’exécution. stream-json : Messages JSON en streaming émis au fur et à mesure de l’exécution. Pour une sortie structurée et le scripting, utilisez l’indicateur --output-format json ou --output-format stream-json. Voir Headless Mode pour des informations détaillées.
--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 en ligne de commande. stream-json : Protocole de message JSON via stdin pour la communication bidirectionnelle. Requis : --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 Headless Mode pour des informations détaillées.
--include-partial-messagesInclut les messages d’assistant partiels lors de l’utilisation du format de sortie stream-json. Lorsqu’il est activé, émet des événements de stream (message_start, content_block_delta, etc.) au fur et à mesure du streaming.Par défaut : false. Requis : Nécessite que --output-format stream-json soit défini. Voir Headless Mode pour des informations détaillées sur les événements de stream.
--sandbox-sActive le mode sandbox pour cette session.
--sandbox-imageDéfinit l’URI de l’image sandbox.
--debug-dActive le mode debug pour cette session, fournissant une sortie plus verbeuse.
--all-files-aSi défini, inclut récursivement tous les fichiers du répertoire actuel comme contexte pour le prompt.
--help-hAffiche les informations d’aide sur 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 : Analyser uniquement—ne pas modifier les fichiers ni exécuter de commandes. default : Requiert une approbation pour les modifications de fichiers ou les commandes shell (comportement par défaut). auto-edit : Approuve automatiquement les outils de modification (edit, write_file) tout en demandant pour les autres. yolo : Approuve automatiquement tous les appels d’outils (équivalent à --yolo). Ne peut pas être utilisé avec --yolo. Utilisez --approval-mode=yolo à la place de --yolo pour la nouvelle approche unifiée. Exemple : qwen --approval-mode auto-edit
En savoir plus sur Approval Mode.
--allowed-toolsUne liste séparée par des virgules de noms d’outils qui bypasseront la boîte de dialogue de confirmation.Noms d’outilsExemple : qwen --allowed-tools "Shell(git status)"
--disabled-slash-commandsNoms de commandes slash à masquer/désactiver (séparés par des virgules ou répétés). Fusionné avec le paramètre slashCommands.disabled et la variable d’environnement QWEN_DISABLED_SLASH_COMMANDS. Correspondance insensible à la casse avec le nom de commande final.Noms de commandesExemple : qwen --disabled-slash-commands "auth,mcp,extensions"
--telemetryActive la télémétrie.
--telemetry-targetDéfinit la cible de télémétrie.Voir telemetry pour plus d’informations.
--telemetry-otlp-endpointDéfinit le point de terminaison OTLP pour la télémétrie.Voir telemetry 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 telemetry pour plus d’informations.
--telemetry-log-promptsActive la journalisation des prompts pour la télémétrie.Voir telemetry pour plus d’informations.
--checkpointingActive le checkpointing.
--acpActive le mode ACP (Agent Client Protocol). Utile pour les intégrations IDE/éditeur comme Zed.Stable. Remplace l’indicateur déprécié --experimental-acp.
--experimental-lspActive la fonctionnalité expérimentale LSP (Language Server Protocol) pour l’intelligence de code (aller à la définition, trouver les références, diagnostics, etc.).Expérimental. Nécessite l’installation des serveurs de langage.
--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 de répertoiresPeut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules. 5 répertoires maximum 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 TUI pour une meilleure compatibilité avec les lecteurs d’écran.
--versionAffiche la version de la CLI.
--openai-loggingActive la journalisation des appels API OpenAI pour le débogage et l’analyse.Cet indicateur écrase le paramètre enableOpenAILogging dans settings.json.
--openai-logging-dirDéfinit un chemin de répertoire personnalisé pour les journaux API OpenAI.Chemin de répertoireCet indicateur écrase 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

Fichiers de contexte (Contexte instructionnel hiérarchique)

Bien qu’il ne s’agisse pas strictement d’une configuration du comportement de la CLI, les fichiers de contexte (par défaut QWEN.md, mais configurable via le paramètre context.fileName) sont essentiels pour configurer le contexte instructionnel (également appelé “mémoire”). Cette fonctionnalité puissante vous permet de fournir des instructions spécifiques au projet, des guides de style de codage ou toute information contextuelle pertinente à l’IA, rendant ses réponses plus adaptées et précises à vos besoins. La CLI inclut des éléments d’interface, comme un indicateur dans le pied de page affichant le nombre de fichiers de contexte chargés, pour vous tenir informé du contexte actif.

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

Exemple de contenu d’un fichier de contexte (par ex. QWEN.md)

Voici un exemple conceptuel de ce qu’un fichier de contexte à la racine d’un projet TypeScript pourrait contenir :

# 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 20+. ## 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.

Cet exemple montre comment fournir un contexte général de projet, des conventions de codage spécifiques et même des notes sur des fichiers ou composants particuliers. Plus vos fichiers de contexte sont pertinents et précis, mieux l’IA pourra vous assister. Les fichiers de contexte spécifiques au projet sont fortement encouragés pour établir des conventions et un contexte.

  • Chargement hiérarchique et priorité : La CLI implémente un système de mémoire hiérarchique en chargeant les fichiers de contexte (par ex. QWEN.md) depuis plusieurs emplacements. Le contenu des fichiers plus bas dans cette liste (plus spécifiques) écrase ou complète généralement le contenu des fichiers plus hauts (plus généraux). L’ordre exact de concaténation et le contexte final peuvent être inspectés via la commande /memory show. L’ordre de chargement typique est :
    1. Fichier de contexte global :
      • Emplacement : ~/.qwen/<configured-context-filename> (par ex. ~/.qwen/QWEN.md dans votre répertoire personnel).
      • Portée : Fournit des instructions par défaut pour tous vos projets.
    2. Fichiers de contexte racine du projet et 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’à la racine du projet (identifiée par un dossier .git) ou votre répertoire personnel.
      • Portée : Fournit un contexte pertinent pour l’ensemble du projet ou une partie significative de celui-ci.
  • Concaténation et indication UI : Le contenu de tous les fichiers de contexte trouvés est concaténé (avec des séparateurs indiquant leur origine et chemin) et fourni dans le prompt système. Le pied de page de la CLI affiche le nombre de fichiers de contexte chargés, vous donnant un indicateur visuel rapide sur le contexte instructionnel actif.
  • Importation de contenu : Vous pouvez modulariser vos fichiers de contexte en important d’autres fichiers Markdown via la syntaxe @path/to/file.md. Pour plus de détails, voir la documentation Memory Import Processor.
  • Commandes pour la gestion de la mémoire :
    • Utilisez /memory refresh pour forcer une nouvelle analyse et un rechargement de 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é, vous permettant de vérifier la hiérarchie et le contenu utilisés par l’IA.
    • Voir la documentation Commands pour tous les détails sur la commande /memory et ses sous-commandes (show et refresh).

En comprenant et en utilisant ces couches de configuration et la nature hiérarchique des fichiers de contexte, vous pouvez gérer efficacement la mémoire de l’IA et adapter les réponses de Qwen Code à vos besoins et projets spécifiques.

Sandbox

Qwen Code peut exécuter des opérations potentiellement dangereuses (comme des commandes shell et des modifications de fichiers) dans un environnement sandbox pour protéger votre système.

Sandbox est désactivé par défaut, mais vous pouvez l’activer de plusieurs façons :

  • Via l’indicateur --sandbox ou -s.
  • En définissant la variable d’environnement QWEN_SANDBOX.
  • Le sandbox est activé par défaut lors de l’utilisation de --yolo ou --approval-mode=yolo.

Par défaut, il utilise une image Docker pré-construite qwen-code-sandbox.

Pour les besoins de sandbox spécifiques au projet, vous pouvez créer un Dockerfile personnalisé à .qwen/sandbox.Dockerfile dans le répertoire racine de votre projet. Ce Dockerfile peut être basé sur l’image sandbox de base :

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

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 la CLI est utilisée, à identifier les problèmes courants et à prioriser les nouvelles fonctionnalités.

Ce que nous collectons :

  • Appels d’outils : Nous journalisons les noms des outils appelés, s’ils réussissent ou échouent, et leur durée d’exécution. Nous ne collectons pas les arguments passés aux outils ni les données qu’ils retournent.
  • Requêtes API : Nous journalisons le modèle utilisé pour chaque requête, la durée de la requête et si elle a réussi. Nous ne collectons pas le contenu des prompts ou des réponses.
  • Informations de session : Nous collectons des informations sur la configuration de la CLI, comme les outils activés et le mode d’approbation.

Ce que nous NE collectons PAS :

  • Informations personnellement identifiables (PII) : Nous ne collectons aucune information personnelle, telle que votre nom, adresse e-mail ou clés API.
  • Contenu des prompts et réponses : Nous ne journalisons pas le contenu de vos prompts ou les réponses du modèle.
  • Contenu des fichiers : Nous ne journalisons pas le contenu des fichiers lus ou écrits par la CLI.

Comment se désengager :

Vous pouvez vous désengager de la collecte de statistiques d’utilisation à tout moment en définissant la propriété usageStatisticsEnabled sur false sous la catégorie privacy dans 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 collecte RUM Alibaba Cloud.

Last updated on