Configuration de Qwen Code
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.
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) :
| Niveau | Source de configuration | Description |
|---|---|---|
| 1 | Valeurs par défaut | Valeurs par défaut codées en dur dans l’application |
| 2 | Fichier de paramètres système par défaut | Paramètres par défaut à l’échelle du système, pouvant être écrasés par d’autres fichiers de paramètres |
| 3 | Fichier de paramètres utilisateur | Paramètres globaux pour l’utilisateur actuel |
| 4 | Fichier de paramètres du projet | Paramètres spécifiques au projet |
| 5 | Fichier de paramètres système | Paramètres à l’échelle du système qui écrasent tous les autres fichiers de paramètres |
| 6 | Variables d’environnement | Variables à l’échelle du système ou spécifiques à la session, potentiellement chargées depuis des fichiers .env |
| 7 | Arguments en ligne de commande | Valeurs transmises 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 fichier | Emplacement | Portée |
|---|---|---|
| Fichier de paramètres système par défaut | Linux: /etc/qwen-code/system-defaults.jsonWindows: C:\ProgramData\qwen-code\system-defaults.jsonmacOS: /Library/Application Support/QwenCode/system-defaults.json Le chemin peut être écrasé via la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH. | Fournit une couche de base de paramètres par défaut à l’échelle du système. Ces paramètres ont la priorité la plus basse et sont 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ème | Linux: /etc/qwen-code/settings.json Windows: C:\ProgramData\qwen-code\settings.json macOS: /Library/Application Support/QwenCode/settings.jsonLe chemin peut être écrasé via la variable d’environnement QWEN_CODE_SYSTEM_SETTINGS_PATH. | S’applique à toutes les sessions Qwen Code sur le système, pour tous les utilisateurs. Les paramètres système écrasent les paramètres utilisateur et projet. Peut être utile pour les administrateurs système en entreprise afin de contrôler les configurations Qwen Code des utilisateurs. |
Remarque sur les variables d’environnement dans les paramètres : Les valeurs de chaîne dans vos fichiers settings.json peuvent référencer des variables d’environnement en utilisant la syntaxe $VAR_NAME ou ${VAR_NAME}. Ces variables seront résolues automatiquement 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 :
- Profils sandbox personnalisés (par ex.
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Compétences d’agent (Agent Skills) sous
.qwen/skills/(chaque compétence est un répertoire contenant unSKILL.md).
Migration de la configuration
Qwen Code migre automatiquement les anciens paramètres de configuration vers le nouveau format. Les anciens fichiers de paramètres sont sauvegardés avant la migration. Les paramètres suivants ont été renommés d’une nomenclature négative (disable*) à positive (enable*) :
| Ancien paramètre | Nouveau paramètre | Remarques |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Consolidé en un seul paramètre |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Inversion des valeurs booléennes : Lors de la migration, les valeurs booléennes sont inversées (par ex., disableAutoUpdate: true devient enableAutoUpdate: false).
Politique de consolidation pour disableAutoUpdate et disableUpdateNag
Lorsque les deux anciens paramètres sont présents avec des valeurs différentes, la migration suit cette politique : si disableAutoUpdate ou disableUpdateNag est true, alors enableAutoUpdate devient false :
disableAutoUpdate | disableUpdateNag | enableAutoUpdate migré |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Paramètres disponibles dans settings.json
Les paramètres sont organisés par catégories. 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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
proxy | string | URL 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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
general.preferredEditor | string | L’éditeur préféré pour ouvrir les fichiers. | undefined |
general.vimMode | boolean | Active les raccourcis clavier Vim. | false |
general.enableAutoUpdate | boolean | Active les vérifications et installations automatiques des mises à jour au démarrage. | true |
general.showSessionRecap | boolean | Affiche 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.sessionRecapAwayThresholdMinutes | number | Nombre 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.gitCoAuthor | boolean | Ajoute automatiquement un trailer Co-authored-by aux messages de commit git lorsque les commits sont effectués via Qwen Code. | true |
general.checkpointing.enabled | boolean | Active le checkpointing de session pour la récupération. | false |
general.defaultFileEncoding | string | Encodage par défaut pour les nouveaux fichiers. Utilisez "utf-8" (par défaut) pour UTF-8 sans BOM, ou "utf-8-bom" pour UTF-8 avec BOM. Ne modifiez ceci que si votre projet le requiert spécifiquement. | "utf-8" |
output
| Paramètre | Type | Description | Valeur par défaut | Valeurs possibles |
|---|---|---|---|---|
output.format | string | Le format de sortie de la CLI. | "text" | "text", "json" |
ui
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
ui.theme | string | Le thème de couleurs pour l’interface. Voir Themes pour les options disponibles. | undefined |
ui.customThemes | object | Définitions de thèmes personnalisés. | {} |
ui.statusLine | object | Configuration 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.hideWindowTitle | boolean | Masque la barre de titre de la fenêtre. | false |
ui.hideTips | boolean | Masque toutes les astuces (au démarrage et après réponse) dans l’interface. Voir Contextual Tips. | false |
ui.hideBanner | boolean | Masque la bannière de l’application. | false |
ui.hideFooter | boolean | Masque le pied de page de l’interface. | false |
ui.showMemoryUsage | boolean | Affiche les informations d’utilisation de la mémoire dans l’interface. | false |
ui.showLineNumbers | boolean | Affiche les numéros de ligne dans les blocs de code de la sortie CLI. | true |
ui.showCitations | boolean | Affiche les citations pour le texte généré dans le chat. | true |
ui.compactMode | boolean | Masque la sortie des outils et la réflexion pour une vue plus épurée. Basculez avec Ctrl+O pendant une session 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.shellOutputMaxLines | number | Nombre 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 |
enableWelcomeBack | boolean | Affiche 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.enableLoadingPhrases | boolean | Active les phrases de chargement (désactivez pour l’accessibilité). | true |
ui.accessibility.screenReader | boolean | Active le mode lecteur d’écran, qui ajuste l’interface TUI pour une meilleure compatibilité avec les lecteurs d’écran. | false |
ui.customWittyPhrases | array of strings | Liste 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.enableFollowupSuggestions | boolean | Active les suggestions de suivi qui prédisent ce que vous souhaitez taper ensuite après la réponse du modèle. Les suggestions apparaissent sous forme de texte fantôme et peuvent être acceptées avec Tab, Entrée ou Flèche droite. | true |
ui.enableCacheSharing | boolean | Utilise des requêtes forkées conscientes du cache pour la génération de suggestions. Réduit les coûts sur les fournisseurs prenant en charge la mise en cache des préfixes (expérimental). | true |
ui.enableSpeculation | boolean | Exécute de manière spéculative les suggestions acceptées avant soumission. Les résultats apparaissent instantanément lors de l’acceptation (expérimental). | false |
experimental.emitToolUseSummaries | boolean | Gé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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
ide.enabled | boolean | Active le mode d’intégration IDE. | false |
ide.hasSeenNudge | boolean | Indique si l’utilisateur a vu l’invite d’intégration IDE. | false |
privacy
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Active la collecte des statistiques d’utilisation. | true |
model
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
model.name | string | Le modèle Qwen à utiliser pour les conversations. | undefined |
model.maxSessionTurns | number | Nombre maximum de tours utilisateur/modèle/outil à conserver dans une session. -1 signifie illimité. | -1 |
model.generationConfig | object | Remplacements avancés transmis au générateur de contenu sous-jacent. Prend en charge les contrôles de requête tels que timeout, maxRetries, enableCacheControl, 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.contextPercentageThreshold | number | Définit le seuil de compression de l’historique de chat en pourcentage de la limite totale de tokens du modèle. Il s’agit d’une valeur entre 0 et 1 qui s’applique à la fois à la compression automatique et à la commande manuelle /compress. Par exemple, une valeur de 0.6 déclenchera la compression lorsque l’historique de chat dépassera 60 % de la limite de tokens. Utilisez 0 pour désactiver entièrement la compression. | 0.7 |
model.skipNextSpeakerCheck | boolean | Ignore la vérification du prochain locuteur. | false |
model.skipLoopDetection | boolean | Désactive les vérifications de détection de boucle. La détection de boucle empêche les boucles infinies dans les réponses 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.skipStartupContext | boolean | Ignore 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.enableOpenAILogging | boolean | Active la journalisation des appels API OpenAI pour le débogage et l’analyse. Lorsqu’il est activé, les requêtes et réponses API sont enregistrées dans des fichiers JSON. | false |
model.openAILoggingDir | string | Chemin 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 :
- Les requêtes commencent avec une limite par défaut de 8K tokens de sortie
- Si la réponse est tronquée (le modèle atteint la limite), Qwen Code réessaie automatiquement avec 64K tokens
- La sortie partielle est ignorée et remplacée par la réponse complète 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-logsrelatif au répertoire actuel"/tmp/openai-logs"- Journaux dans le chemin absolu/tmp/openai-logs
fastModel
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
fastModel | string | Modèle utilisé pour générer les suggestions de prompt et l’exécution spéculative. Laissez vide pour utiliser le modèle principal. Un modèle plus petit/rapide (par ex. qwen3-coder-flash) réduit la latence et le coût. Peut également être défini via /model --fast. | "" |
context
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
context.fileName | string or array of strings | Le nom du ou des fichiers de contexte. | undefined |
context.importFormat | string | Le format à utiliser lors de l’importation de la mémoire. | undefined |
context.includeDirectories | array | Répertoires supplémentaires à inclure dans le contexte de l’espace de travail. Spécifie un tableau de chemins absolus ou relatifs supplémentaires à inclure. Les répertoires manquants seront ignorés avec un avertissement par défaut. Les chemins peuvent utiliser ~ pour faire référence au répertoire personnel de l’utilisateur. Ce paramètre peut être combiné avec l’indicateur en ligne de commande --include-directories. | [] |
context.loadFromIncludeDirectories | boolean | Contrôle le comportement de la commande /memory refresh. Si défini sur true, les fichiers QWEN.md doivent être chargés depuis tous les répertoires ajoutés. Si défini sur false, QWEN.md ne doit être chargé que depuis le répertoire actuel. | false |
context.fileFiltering.respectGitIgnore | boolean | Respecte les fichiers .gitignore lors de la recherche. | true |
context.fileFiltering.respectQwenIgnore | boolean | Respecte les fichiers .qwenignore lors de la recherche. | true |
context.fileFiltering.enableRecursiveFileSearch | boolean | Indique s’il faut activer la recherche récursive de noms de fichiers sous l’arborescence actuelle lors de la complétion des préfixes @ dans le prompt. | true |
context.fileFiltering.enableFuzzySearch | boolean | Lorsque 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.toolResultsThresholdMinutes | number | Minutes d’inactivité avant d’effacer l’ancien contenu des résultats d’outils. Utilisez -1 pour désactiver. | 60 |
context.clearContextOnIdle.toolResultsNumToKeep | number | Nombre 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 :
- 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. - Désactivez la recherche floue : Si ignorer les fichiers ne suffit pas, vous pouvez désactiver la recherche floue en définissant
enableFuzzySearchsurfalsedans votre fichiersettings.json. Cela utilisera un algorithme de correspondance plus simple, non flou, qui peut être plus rapide. - 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
enableRecursiveFileSearchsurfalse. 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ètre | Type | Description | Valeur par défaut | Remarques |
|---|---|---|---|---|
tools.sandbox | boolean or string | Environnement d’exécution sandbox (peut être un booléen ou une chaîne de chemin). | undefined | |
tools.sandboxImage | string | URI de l’image sandbox utilisée par Docker/Podman lorsque --sandbox-image et QWEN_SANDBOX_IMAGE ne sont pas définis. | undefined | |
tools.shell.enableInteractiveShell | boolean | Utilise node-pty pour une expérience shell interactive. Le repli sur child_process s’applique toujours. | false | |
tools.core | array of strings | Dé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.exclude | array of strings | Dé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.allowed | array of strings | Dé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.approvalMode | string | Définit le mode d’approbation par défaut pour l’utilisation des outils. | default | Valeurs possibles : plan (analyser uniquement, ne pas modifier 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.discoveryCommand | string | Commande à exécuter pour la découverte des outils. | undefined | |
tools.callCommand | string | Définit une commande shell personnalisée pour appeler un outil spécifique découvert via tools.discoveryCommand. La commande shell doit respecter les critères suivants : Elle doit prendre le name de la fonction (exactement comme dans la déclaration de fonction ) comme premier argument en ligne de commande. Elle doit lire les arguments de la fonction 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.useRipgrep | boolean | Utilise 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.useBuiltinRipgrep | boolean | Utilise le binaire ripgrep intégré. Lorsqu’il est défini sur false, la commande rg au niveau du système sera utilisée à la place. Ce paramètre n’est effectif que si tools.useRipgrep est true. | true | |
tools.truncateToolOutputThreshold | number | Tronque la sortie de l’outil si elle dépasse ce nombre de caractères. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 25000 | Nécessite un redémarrage : Oui |
tools.truncateToolOutputLines | number | Nombre maximum de lignes ou d’entrées conservées lors de la troncature de la sortie de l’outil. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 1000 | Nécessite un redémarrage : Oui |
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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
memory.enableManagedAutoMemory | boolean | Active l’extraction en arrière-plan des mémoires depuis les conversations. | true |
memory.enableManagedAutoDream | boolean | Active 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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
permissions.allow | array of strings | Rè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.ask | array of strings | Règles pour les appels d’outils nécessitant toujours une confirmation utilisateur. Prend priorité sur allow. | undefined |
permissions.deny | array of strings | Rè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) :
| Alias | Outil canonique | Remarques |
|---|---|---|
Bash, Shell | run_shell_command | |
Read, ReadFile | read_file | Méta-catégorie — voir ci-dessous |
Edit, EditFile | edit | Méta-catégorie — voir ci-dessous |
Write, WriteFile | write_file | |
Grep, SearchFiles | grep_search | |
Glob, FindFiles | glob | |
ListFiles | list_directory | |
WebFetch | web_fetch | |
Agent | task | |
Skill | skill |
Méta-catégories :
Certains noms de règles couvrent automatiquement plusieurs outils :
| Nom de règle | Outils couverts |
|---|---|
Read | read_file, grep_search, glob, list_directory |
Edit | edit, 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, utilisezReadFile(/path/**)ouread_file(/path/**).
Exemples de syntaxe de règles :
| Règle | Signification |
|---|---|
"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éfixe | Signification | Exemple |
|---|---|---|
// | 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ètre | Règle permissions équivalente | Remarques |
|---|---|---|
tools.allowed | permissions.allow | Migré automatiquement au premier chargement |
tools.exclude | permissions.deny | Migré automatiquement au premier chargement |
tools.core | permissions.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
/permissionsdans la CLI interactive pour afficher, ajouter et supprimer des règles sans modifier directementsettings.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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
slashCommands.disabled | array of strings | Noms 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 — voirpermissions.denypour cela. Il n’intercepte pas non plus les raccourcis clavier tels queCtrl+CouEsc.
mcp
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
mcp.serverCommand | string | Commande pour démarrer un serveur MCP. | undefined |
mcp.allowed | array of strings | Liste 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.excluded | array of strings | Liste 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 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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
security.folderTrust.enabled | boolean | Paramètre pour suivre si la confiance du dossier est activée. | false |
security.auth.selectedType | string | Le type d’authentification actuellement sélectionné. | undefined |
security.auth.enforcedType | string | Le type d’authentification requis (utile pour les entreprises). | undefined |
security.auth.useExternal | boolean | Indique s’il faut utiliser un flux d’authentification externe. | undefined |
advanced
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Configure automatiquement les limites de mémoire Node.js. | false |
advanced.dnsResolutionOrder | string | L’ordre de résolution DNS. | undefined |
advanced.excludedEnvVars | array of strings | Variables 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.bugCommand | object | Configuration 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é | Type | Description | Optionnel |
|---|---|---|---|
mcpServers.<SERVER_NAME>.command | string | La commande à exécuter pour démarrer le serveur MCP via I/O standard. | Oui |
mcpServers.<SERVER_NAME>.args | array of strings | Arguments à passer à la commande. | Oui |
mcpServers.<SERVER_NAME>.env | object | Variables d’environnement à définir pour le processus du serveur. | Oui |
mcpServers.<SERVER_NAME>.cwd | string | Le répertoire de travail dans lequel démarrer le serveur. | Oui |
mcpServers.<SERVER_NAME>.url | string | L’URL d’un serveur MCP utilisant Server-Sent Events (SSE) pour la communication. | Oui |
mcpServers.<SERVER_NAME>.httpUrl | string | L’URL d’un serveur MCP utilisant HTTP streamable pour la communication. | Oui |
mcpServers.<SERVER_NAME>.headers | object | Une carte d’en-têtes HTTP à envoyer avec les requêtes vers url ou httpUrl. | Oui |
mcpServers.<SERVER_NAME>.timeout | number | Délai d’expiration en millisecondes pour les requêtes vers ce serveur MCP. | Oui |
mcpServers.<SERVER_NAME>.trust | boolean | Fait confiance à ce serveur et bypasse toutes les confirmations d’appels d’outils. | Oui |
mcpServers.<SERVER_NAME>.description | string | Une brève description du serveur, pouvant être utilisée à des fins d’affichage. | Oui |
mcpServers.<SERVER_NAME>.includeTools | array of strings | Liste 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>.excludeTools | array of strings | Liste 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ètre | Type | Description | Valeur par défaut |
|---|---|---|---|
telemetry.enabled | boolean | Indique si la télémétrie est activée. | |
telemetry.target | string | La destination pour la télémétrie collectée. Valeurs prises en charge : local et gcp. | |
telemetry.otlpEndpoint | string | Le point de terminaison pour l’exportateur OTLP. | |
telemetry.otlpProtocol | string | Le protocole pour l’exportateur OTLP (grpc ou http). | |
telemetry.logPrompts | boolean | Indique s’il faut inclure le contenu des prompts utilisateur dans les journaux. | |
telemetry.outfile | string | Le fichier dans lequel écrire la télémétrie lorsque target est local. | |
telemetry.useCollector | boolean | Indique 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.
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
| Variable | Description | Remarques |
|---|---|---|
QWEN_TELEMETRY_ENABLED | Dé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_TARGET | Définit la cible de télémétrie (local ou gcp). | Écrase le paramètre telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Définit le point de terminaison OTLP pour la télémétrie. | Écrase le paramètre telemetry.otlpEndpoint. |
QWEN_TELEMETRY_OTLP_PROTOCOL | Définit le protocole OTLP (grpc ou http). | Écrase le paramètre telemetry.otlpProtocol. |
QWEN_TELEMETRY_LOG_PROMPTS | Dé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_OUTFILE | Dé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_COLLECTOR | Dé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_SANDBOX | Alternative 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_COLOR | Définissez sur n’importe quelle valeur pour désactiver toute sortie colorée dans la CLI. | |
CLI_TITLE | Définissez sur une chaîne pour personnaliser le titre de la CLI. | |
CODE_ASSIST_ENDPOINT | Spé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_RETRY | Dé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_STARTUP | Dé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
| Argument | Alias | Description | Valeurs possibles | Remarques |
|---|---|---|---|---|
--model | -m | Spécifie le modèle Qwen à utiliser pour cette session. | Nom du modèle | Exemple : npm start -- --model qwen3-coder-plus |
--prompt | -p | Permet de passer un prompt directement à la commande. Cela invoque Qwen Code en mode non interactif. | Votre texte de prompt | Pour les exemples de scripting, utilisez l’indicateur --output-format json pour obtenir une sortie structurée. |
--prompt-interactive | -i | Démarre une session interactive avec le prompt fourni comme entrée initiale. | Votre texte de prompt | Le 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 prompt | Les 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-prompt | Ajoute des instructions supplémentaires au prompt système de session principale pour cette exécution. | Votre texte de prompt | Appliqué 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 | -o | Spécifie le format de sortie de la CLI pour le mode non interactif. | text, json, stream-json | text : (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-format | Spécifie le format consommé depuis l’entrée standard. | text, stream-json | text : (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-messages | Inclut 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 | -s | Active le mode sandbox pour cette session. | ||
--sandbox-image | Définit l’URI de l’image sandbox. | |||
--debug | -d | Active le mode debug pour cette session, fournissant une sortie plus verbeuse. | ||
--all-files | -a | Si défini, inclut récursivement tous les fichiers du répertoire actuel comme contexte pour le prompt. | ||
--help | -h | Affiche les informations d’aide sur les arguments en ligne de commande. | ||
--show-memory-usage | Affiche l’utilisation actuelle de la mémoire. | |||
--yolo | Active le mode YOLO, qui approuve automatiquement tous les appels d’outils. | |||
--approval-mode | Définit le mode d’approbation pour les appels d’outils. | plan, default, auto-edit, yolo | Modes 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-editEn savoir plus sur Approval Mode. | |
--allowed-tools | Une liste séparée par des virgules de noms d’outils qui bypasseront la boîte de dialogue de confirmation. | Noms d’outils | Exemple : qwen --allowed-tools "Shell(git status)" | |
--disabled-slash-commands | Noms 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 commandes | Exemple : qwen --disabled-slash-commands "auth,mcp,extensions" | |
--telemetry | Active la télémétrie. | |||
--telemetry-target | Définit la cible de télémétrie. | Voir telemetry pour plus d’informations. | ||
--telemetry-otlp-endpoint | Définit le point de terminaison OTLP pour la télémétrie. | Voir telemetry pour plus d’informations. | ||
--telemetry-otlp-protocol | Dé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-prompts | Active la journalisation des prompts pour la télémétrie. | Voir telemetry pour plus d’informations. | ||
--checkpointing | Active le checkpointing. | |||
--acp | Active 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-lsp | Active 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 | -e | Spécifie une liste d’extensions à utiliser pour la session. | Noms d’extensions | Si 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 | -l | Liste toutes les extensions disponibles et quitte. | ||
--proxy | Définit le proxy pour la CLI. | URL du proxy | Exemple : --proxy http://localhost:7890. | |
--include-directories | Inclut des répertoires supplémentaires dans l’espace de travail pour la prise en charge multi-répertoires. | Chemins de répertoires | Peut ê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-reader | Active le mode lecteur d’écran, qui ajuste l’interface TUI pour une meilleure compatibilité avec les lecteurs d’écran. | |||
--version | Affiche la version de la CLI. | |||
--openai-logging | Active 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-dir | Définit un chemin de répertoire personnalisé pour les journaux API OpenAI. | Chemin de répertoire | Cet 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 :- Fichier de contexte global :
- Emplacement :
~/.qwen/<configured-context-filename>(par ex.~/.qwen/QWEN.mddans votre répertoire personnel). - Portée : Fournit des instructions par défaut pour tous vos projets.
- Emplacement :
- 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.
- 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
- Fichier de contexte global :
- 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 refreshpour 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 showpour 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
/memoryet ses sous-commandes (showetrefresh).
- Utilisez
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
--sandboxou-s. - En définissant la variable d’environnement
QWEN_SANDBOX. - Le sandbox est activé par défaut lors de l’utilisation de
--yoloou--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-configLorsque .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 -sStatistiques 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
}
}Lorsque les statistiques d’utilisation sont activées, les événements sont envoyés à un point de collecte RUM Alibaba Cloud.