Configuration de Qwen Code
Note 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.
Pour plus de détails sur l’ancien format, consultez la documentation de configuration v1.
Qwen Code propose plusieurs façons de configurer son comportement, notamment via des variables d’environnement, des arguments en ligne de commande et des fichiers de configuration. Ce document décrit les différentes méthodes de configuration ainsi que les paramètres disponibles.
Couches de configuration
La configuration est appliquée dans l’ordre de priorité suivant (les nombres plus bas sont écrasés par les nombres plus élevés) :
- Valeurs par défaut : Valeurs codées en dur dans l’application.
- Fichier de valeurs par défaut système : Paramètres par défaut à l’échelle du système qui peuvent être écrasés par d’autres fichiers de configuration.
- Fichier de paramètres utilisateur : Paramètres globaux pour l’utilisateur actuel.
- Fichier de paramètres projet : Paramètres spécifiques au projet.
- Fichier de paramètres système : Paramètres à l’échelle du système qui écrasent tous les autres fichiers de configuration.
- Variables d’environnement : Variables à l’échelle du système ou spécifiques à la session, potentiellement chargées depuis des fichiers
.env. - Arguments de ligne de commande : Valeurs passées lors du lancement du CLI.
Fichiers de configuration
Qwen Code utilise des fichiers de configuration au format JSON pour stocker les paramètres de manière persistante. Il existe quatre emplacements possibles pour ces fichiers :
-
Fichier des valeurs par défaut du système :
- Emplacement :
/etc/qwen-code/system-defaults.json(Linux),C:\ProgramData\qwen-code\system-defaults.json(Windows) ou/Library/Application Support/QwenCode/system-defaults.json(macOS). Ce chemin peut être modifié via la variable d’environnementQWEN_CODE_SYSTEM_DEFAULTS_PATH. - Portée : Fournit une couche de base contenant les paramètres par défaut à l’échelle du système. Ces paramètres ont la priorité la plus faible et sont destinés à être écrasés par les paramètres utilisateur, projet ou système.
- Emplacement :
-
Fichier des paramètres utilisateur :
- Emplacement :
~/.qwen/settings.json(où~correspond à votre répertoire personnel). - Portée : S’applique à toutes les sessions Qwen Code de l’utilisateur courant.
- Emplacement :
-
Fichier des paramètres projet :
- Emplacement :
.qwen/settings.jsonà la racine de votre projet. - Portée : S’applique uniquement lorsque Qwen Code est exécuté depuis ce projet spécifique. Les paramètres du projet prennent le pas sur ceux de l’utilisateur.
- Emplacement :
-
Fichier des paramètres système :
- Emplacement :
/etc/qwen-code/settings.json(Linux),C:\ProgramData\qwen-code\settings.json(Windows) ou/Library/Application Support/QwenCode/settings.json(macOS). Ce chemin peut être modifié via la variable d’environnementQWEN_CODE_SYSTEM_SETTINGS_PATH. - Portée : S’applique à toutes les sessions Qwen Code sur le système, pour tous les utilisateurs. Les paramètres système prennent le pas sur les paramètres utilisateur et projet. Peut être utile aux administrateurs système dans un environnement professionnel afin de contrôler les configurations Qwen Code des utilisateurs.
- Emplacement :
Remarque sur les variables d’environnement dans les paramètres : Les valeurs de type chaîne de caractères dans vos fichiers settings.json peuvent faire référence à des variables d’environnement en utilisant la syntaxe $VAR_NAME ou ${VAR_NAME}. Ces variables seront automatiquement résolues au chargement des paramètres. Par exemple, si vous avez une variable d’environnement MY_API_TOKEN, vous pouvez l’utiliser dans settings.json comme ceci : "apiKey": "$MY_API_TOKEN".
Le répertoire .qwen dans votre projet
En plus du fichier de configuration du projet, le répertoire .qwen d’un projet peut contenir d’autres fichiers spécifiques au projet liés au fonctionnement de Qwen Code, tels que :
- Profils de sandbox personnalisés (ex. :
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile).
Paramètres disponibles dans settings.json
Les paramètres sont organisés par catégories. Tous les paramètres doivent être placés dans l’objet de catégorie de premier niveau correspondant dans votre fichier settings.json.
general
-
general.preferredEditor(string) :- Description : L’éditeur préféré pour ouvrir les fichiers.
- Default :
undefined
-
general.vimMode(boolean) :- Description : Activer les raccourcis clavier Vim.
- Default :
false
-
general.disableAutoUpdate(boolean) :- Description : Désactiver les mises à jour automatiques.
- Default :
false
-
general.disableUpdateNag(boolean) :- Description : Désactiver les notifications de mise à jour.
- Default :
false
-
general.checkpointing.enabled(boolean) :- Description : Activer la sauvegarde des sessions pour la récupération.
- Default :
false
output
output.format(string) :- Description : Le format de sortie du CLI.
- Default :
"text" - Valeurs :
"text","json"
ui
-
ui.theme(string):- Description : Le thème de couleurs pour l’interface utilisateur. Voir Themes pour les options disponibles.
- Valeur par défaut :
undefined
-
ui.customThemes(object):- Description : Définitions de thèmes personnalisés.
- Valeur par défaut :
{}
-
ui.hideWindowTitle(boolean):- Description : Masquer la barre de titre de la fenêtre.
- Valeur par défaut :
false
-
ui.hideTips(boolean):- Description : Masquer les astuces utiles dans l’interface utilisateur.
- Valeur par défaut :
false
-
ui.hideBanner(boolean):- Description : Masquer la bannière de l’application.
- Valeur par défaut :
false
-
ui.hideFooter(boolean):- Description : Masquer le pied de page de l’interface utilisateur.
- Valeur par défaut :
false
-
ui.showMemoryUsage(boolean):- Description : Afficher les informations d’utilisation de la mémoire dans l’interface utilisateur.
- Valeur par défaut :
false
-
ui.showLineNumbers(boolean):- Description : Afficher les numéros de ligne dans le chat.
- Valeur par défaut :
false
-
ui.showCitations(boolean):- Description : Afficher les citations pour le texte généré dans le chat.
- Valeur par défaut :
true
-
enableWelcomeBack(boolean):- Description : Afficher la boîte de dialogue de bienvenue lors du retour à un projet avec un historique de conversation.
- Valeur par défaut :
true
-
ui.accessibility.disableLoadingPhrases(boolean):- Description : Désactiver les phrases de chargement pour l’accessibilité.
- Valeur par défaut :
false
-
ui.customWittyPhrases(tableau de strings):- Description : Une liste de phrases personnalisées à afficher pendant les états de chargement. Lorsqu’elles sont fournies, le CLI parcourra ces phrases au lieu des phrases par défaut.
- Valeur par défaut :
[]
ide
-
ide.enabled(boolean):- Description: Active le mode d’intégration IDE.
- Default:
false
-
ide.hasSeenNudge(boolean):- Description: Indique si l’utilisateur a vu la notification d’intégration IDE.
- Default:
false
privacy
privacy.usageStatisticsEnabled(boolean):- Description: Active la collecte des statistiques d’utilisation.
- Default:
true
model
-
model.name(string):- Description : Le modèle Qwen à utiliser pour les conversations.
- Default :
undefined
-
model.maxSessionTurns(number):- Description : Nombre maximum de tours utilisateur/modèle/outils à conserver dans une session. -1 signifie illimité.
- Default :
-1
-
model.summarizeToolOutput(object):- Description : Active ou désactive le résumé de la sortie des outils. Vous pouvez spécifier le budget de tokens pour le résumé via le paramètre
tokenBudget. Note : Actuellement, seul l’outilrun_shell_commandest supporté. Par exemple :{"run_shell_command": {"tokenBudget": 2000}} - Default :
undefined
- Description : Active ou désactive le résumé de la sortie des outils. Vous pouvez spécifier le budget de tokens pour le résumé via le paramètre
-
model.chatCompression.contextPercentageThreshold(number):- Description : 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 de0.6déclenchera la compression lorsque l’historique dépasse 60 % de la limite de tokens. - Default :
0.7
- Description : 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
-
model.skipNextSpeakerCheck(boolean):- Description : Ignorer la vérification du prochain intervenant.
- Default :
false
-
model.skipLoopDetection(boolean):- Description : 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 fréquemment des interruptions intempestives liées à la détection de boucle.
- Default :
false
context
-
context.fileName(string ou tableau de strings) :- Description : Le nom du ou des fichiers de contexte.
- Default :
undefined
-
context.importFormat(string) :- Description : Le format à utiliser lors de l’import de la mémoire.
- Default :
undefined
-
context.discoveryMaxDirs(number) :- Description : Nombre maximum de répertoires à explorer pour trouver la mémoire.
- Default :
200
-
context.includeDirectories(array) :- Description : Répertoires supplémentaires à inclure dans le contexte de l’espace de travail. Les répertoires manquants seront ignorés avec un avertissement.
- Default :
[]
-
context.loadFromIncludeDirectories(boolean) :- Description : Contrôle le comportement de la commande
/memory refresh. Si défini surtrue, les fichiersQWEN.mddoivent être chargés depuis tous les répertoires ajoutés. Si défini surfalse, seuls les fichiersQWEN.mddu répertoire courant doivent être chargés. - Default :
false
- Description : Contrôle le comportement de la commande
-
context.fileFiltering.respectGitIgnore(boolean) :- Description : Respecter les fichiers
.gitignorelors de la recherche. - Default :
true
- Description : Respecter les fichiers
-
context.fileFiltering.respectQwenIgnore(boolean) :- Description : Respecter les fichiers
.qwenignorelors de la recherche. - Default :
true
- Description : Respecter les fichiers
-
context.fileFiltering.enableRecursiveFileSearch(boolean) :- Description : Activer ou non la recherche récursive des noms de fichiers sous l’arborescence actuelle lors de la complétion des préfixes
@dans le prompt. - Default :
true
- Description : Activer ou non la recherche récursive des noms de fichiers sous l’arborescence actuelle lors de la complétion des préfixes
tools
-
tools.sandbox(boolean ou string) :- Description : Environnement d’exécution sandboxé (peut être un booléen ou une chaîne représentant un chemin).
- Par défaut :
undefined
-
tools.shell.enableInteractiveShell(boolean) :Utilise
node-ptypour une expérience de shell interactive. Retombe surchild_processsi nécessaire. Valeur par défaut :false. -
tools.core(tableau de strings) :- Description : Peut être utilisé pour restreindre l’ensemble des outils intégrés via une liste autorisée. Voir Outils intégrés pour la liste complète. La logique de correspondance est identique à celle de
tools.allowed. - Par défaut :
undefined
- Description : Peut être utilisé pour restreindre l’ensemble des outils intégrés via une liste autorisée. Voir Outils intégrés pour la liste complète. La logique de correspondance est identique à celle de
-
tools.exclude(tableau de strings) :- Description : Noms des outils à exclure lors de la découverte.
- Par défaut :
undefined
-
tools.allowed(tableau de strings) :- Description : Liste des noms d’outils qui contourneront la boîte de dialogue de confirmation. Utile pour les outils fiables et fréquemment utilisés. Par exemple,
["run_shell_command(git)", "run_shell_command(npm test)"]permet d’exécuter toutes les commandesgitetnpm testsans confirmation. Voir Restrictions des commandes Shell Tool pour plus de détails sur le préfixe de correspondance, l’enchaînement des commandes, etc. - Par défaut :
undefined
- Description : Liste des noms d’outils qui contourneront la boîte de dialogue de confirmation. Utile pour les outils fiables et fréquemment utilisés. Par exemple,
-
tools.approvalMode(string) :- Description : Définit le mode d’approbation par défaut pour l’utilisation des outils. Les valeurs acceptées sont :
plan: Analyse uniquement, aucun fichier modifié ni commande exécutée.default: Demande une approbation avant modification de fichiers ou exécution de commandes shell.auto-edit: Approuve automatiquement les modifications de fichiers.yolo: Approuve automatiquement tous les appels aux outils.
- Par défaut :
default
- Description : Définit le mode d’approbation par défaut pour l’utilisation des outils. Les valeurs acceptées sont :
-
tools.discoveryCommand(string) :- Description : Commande à exécuter pour découvrir les outils disponibles.
- Par défaut :
undefined
-
tools.callCommand(string) :- Description : Définit une commande shell personnalisée pour appeler un outil spécifique découvert via
tools.discoveryCommand. Cette commande doit respecter les critères suivants :- Elle doit prendre en premier argument le
namede la fonction (exactement comme dans la déclaration de fonction ). - Elle doit lire les arguments de la fonction au format JSON depuis
stdin, de manière similaire àfunctionCall.args. - Elle doit retourner la sortie de la fonction au format JSON sur
stdout, de manière similaire àfunctionResponse.response.content.
- Elle doit prendre en premier argument le
- Par défaut :
undefined
- Description : Définit une commande shell personnalisée pour appeler un outil spécifique découvert via
mcp
-
mcp.serverCommand(string) :- Description : Commande pour démarrer un serveur MCP.
- Default :
undefined
-
mcp.allowed(tableau de strings) :- Description : Une liste d’autorisation des serveurs MCP autorisés.
- Default :
undefined
-
mcp.excluded(tableau de strings) :- Description : Une liste de refus des serveurs MCP à exclure.
- Default :
undefined
security
-
security.folderTrust.enabled(boolean) :- Description : Paramètre permettant de savoir si la confiance des dossiers est activée.
- Default :
false
-
security.auth.selectedType(string) :- Description : Le type d’authentification actuellement sélectionné.
- Default :
undefined
-
security.auth.enforcedType(string) :- Description : Le type d’authentification requis (utile pour les entreprises).
- Default :
undefined
-
security.auth.useExternal(boolean) :- Description : Indique s’il faut utiliser un flux d’authentification externe.
- Default :
undefined
advanced
-
advanced.autoConfigureMemory(boolean) :- Description : Configure automatiquement les limites de mémoire de Node.js.
- Default :
false
-
advanced.dnsResolutionOrder(string) :- Description : Ordre de résolution DNS.
- Default :
undefined
-
advanced.excludedEnvVars(array of strings) :- Description : Variables d’environnement à exclure du contexte du projet.
- Default :
["DEBUG","DEBUG_MODE"]
-
advanced.bugCommand(object) :- Description : Configuration de la commande de rapport de bug.
- Default :
undefined
-
advanced.tavilyApiKey(string) :- Description : Clé API pour le service de recherche web Tavily. Requise pour activer la fonctionnalité de l’outil
web_search. Si elle n’est pas configurée, l’outil de recherche web sera désactivé et ignoré. - Default :
undefined
- Description : Clé API pour le service de recherche web Tavily. Requise pour activer la fonctionnalité de l’outil
mcpServers
Configure les connexions à un ou plusieurs serveurs Model-Context Protocol (MCP) pour découvrir et utiliser des outils personnalisés. Qwen Code tente de se connecter à chaque serveur MCP configuré afin de découvrir les outils disponibles. Si plusieurs serveurs MCP exposent un outil portant le même nom, ces noms d’outils seront préfixés avec l’alias du serveur défini dans la configuration (par exemple, serverAlias__nomReelDeLOutil) afin d’éviter tout conflit. Notez que le système peut supprimer certaines propriétés du schéma des définitions d’outils MCP pour des raisons de compatibilité. Au moins un des champs command, url ou httpUrl doit être renseigné. Si plusieurs sont spécifiés, l’ordre de priorité est : httpUrl, puis url, puis command.
mcpServers.<SERVER_NAME>(objet) : Les paramètres du serveur identifié par ce nom.command(chaîne, optionnel) : La commande à exécuter pour démarrer le serveur MCP via les entrées/sorties standards.args(tableau de chaînes, optionnel) : Arguments à passer à la commande.env(objet, optionnel) : Variables d’environnement à définir pour le processus du serveur.cwd(chaîne, optionnel) : Le répertoire de travail depuis lequel démarrer le serveur.url(chaîne, optionnel) : L’URL d’un serveur MCP utilisant Server-Sent Events (SSE) pour communiquer.httpUrl(chaîne, optionnel) : L’URL d’un serveur MCP utilisant HTTP en streaming pour communiquer.headers(objet, optionnel) : Une map des en-têtes HTTP à envoyer avec les requêtes versurlouhttpUrl.timeout(nombre, optionnel) : Délai d’expiration en millisecondes pour les requêtes vers ce serveur MCP.trust(booléen, optionnel) : Faire confiance à ce serveur et contourner toutes les confirmations d’appel d’outils.description(chaîne, optionnel) : Brève description du serveur, pouvant être utilisée à des fins d’affichage.includeTools(tableau de chaînes, optionnel) : Liste des noms d’outils à inclure depuis ce serveur MCP. Lorsque cette liste est spécifiée, seuls les outils listés ici seront accessibles depuis ce serveur (comportement de type allowlist). Si non spécifié, tous les outils du serveur sont activés par défaut.excludeTools(tableau de chaînes, optionnel) : Liste des noms d’outils à exclure de ce serveur MCP. Les outils listés ici ne seront pas accessibles au modèle, même s’ils sont exposés par le serveur. Remarque :excludeToolsprime surincludeTools– si un outil figure dans les deux listes, il sera exclu.
telemetry
Configure la collecte de logs et de métriques pour Qwen Code. Pour plus d’informations, voir Telemetry.
- Propriétés :
enabled(boolean) : Indique si la télémétrie est activée ou non.target(string) : La destination des données de télémétrie collectées. Les valeurs supportées sontlocaletgcp.otlpEndpoint(string) : L’endpoint de l’OTLP Exporter.otlpProtocol(string) : Le protocole utilisé par l’OTLP Exporter (grpcouhttp).logPrompts(boolean) : Indique s’il faut inclure le contenu des prompts utilisateur dans les logs.outfile(string) : Le fichier dans lequel écrire les données de télémétrie lorsquetargetestlocal.useCollector(boolean) : Indique s’il faut utiliser un collecteur OTLP externe.
Exemple de settings.json
Voici un exemple de fichier settings.json avec la structure imbriquée, introduite à partir de la version v0.3.0 :
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideBanner": true,
"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",
"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,
"summarizeToolOutput": {
"run_shell_command": {
"tokenBudget": 100
}
}
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}Historique du Shell
Le CLI conserve un historique des commandes shell que vous exécutez. Pour éviter les conflits entre différents projets, cet historique est stocké dans un répertoire spécifique au projet, situé dans le dossier home de votre utilisateur.
- Emplacement :
~/.qwen/tmp/<project_hash>/shell_history<project_hash>est un identifiant unique généré à partir du chemin racine de votre projet.- L’historique est enregistré dans un fichier nommé
shell_history.
Variables d’environnement et fichiers .env
Les variables d’environnement sont une méthode courante pour configurer les applications, en particulier pour les informations sensibles comme les clés API ou les paramètres qui peuvent varier selon les environnements. Pour la configuration de l’authentification, consultez la documentation sur l’authentification qui couvre toutes les méthodes disponibles.
Le CLI charge automatiquement les variables d’environnement depuis un fichier .env. L’ordre de chargement est le suivant :
- Fichier
.envdans le répertoire courant. - Si non trouvé, il remonte dans les répertoires parents jusqu’à trouver un fichier
.envou atteindre la racine du projet (identifiée par un dossier.git) ou le répertoire utilisateur. - Si toujours non trouvé, il cherche
~/.env(dans le répertoire utilisateur).
Exclusion de variables d’environnement : Certaines variables (comme DEBUG et DEBUG_MODE) sont automatiquement exclues des fichiers .env du projet par défaut afin d’éviter d’interférer avec le comportement du CLI. Les variables provenant des fichiers .qwen/.env ne sont jamais exclues. Vous pouvez personnaliser ce comportement via le paramètre advanced.excludedEnvVars dans votre fichier settings.json.
OPENAI_API_KEY:- Une des méthodes d’authentification disponibles.
- Définissez-la dans votre profil shell (ex.
~/.bashrc,~/.zshrc) ou dans un fichier.env.
OPENAI_BASE_URL:- Une des méthodes d’authentification disponibles.
- Définissez-la dans votre profil shell (ex.
~/.bashrc,~/.zshrc) ou dans un fichier.env.
OPENAI_MODEL:- Spécifie le modèle OPENAI par défaut à utiliser.
- Remplace le modèle codé en dur.
- Exemple :
export OPENAI_MODEL="qwen3-coder-plus"
GEMINI_TELEMETRY_ENABLED:- Définir à
trueou1active la télémétrie. Toute autre valeur la désactive. - Remplace le paramètre
telemetry.enabled.
- Définir à
GEMINI_TELEMETRY_TARGET:- Définit la cible de télémétrie (
localougcp). - Remplace le paramètre
telemetry.target.
- Définit la cible de télémétrie (
GEMINI_TELEMETRY_OTLP_ENDPOINT:- Définit l’endpoint OTLP pour la télémétrie.
- Remplace le paramètre
telemetry.otlpEndpoint.
GEMINI_TELEMETRY_OTLP_PROTOCOL:- Définit le protocole OTLP (
grpcouhttp). - Remplace le paramètre
telemetry.otlpProtocol.
- Définit le protocole OTLP (
GEMINI_TELEMETRY_LOG_PROMPTS:- Définir à
trueou1active ou désactive la journalisation des prompts utilisateur. Toute autre valeur la désactive. - Remplace le paramètre
telemetry.logPrompts.
- Définir à
GEMINI_TELEMETRY_OUTFILE:- Définit le chemin du fichier où écrire la télémétrie lorsque la cible est
local. - Remplace le paramètre
telemetry.outfile.
- Définit le chemin du fichier où écrire la télémétrie lorsque la cible est
GEMINI_TELEMETRY_USE_COLLECTOR:- Définir à
trueou1active ou désactive l’utilisation d’un collecteur OTLP externe. Toute autre valeur le désactive. - Remplace le paramètre
telemetry.useCollector.
- Définir à
GEMINI_SANDBOX:- Alternative au paramètre
sandboxdanssettings.json. - Accepte
true,false,docker,podman, ou une commande personnalisée.
- Alternative au paramètre
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, voirpackages/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>.sbdans le répertoire.qwen/de votre projet (ex.my-project/.qwen/sandbox-macos-custom.sb).
- Change le profil Seatbelt (
DEBUGouDEBUG_MODE(souvent utilisées par les bibliothèques sous-jacentes ou le CLI lui-même) :- Définir à
trueou1active la journalisation détaillée, utile pour le débogage. - Note : Ces variables sont automatiquement exclues des fichiers
.envdu projet par défaut afin d’éviter d’interférer avec le comportement du CLI. Utilisez des fichiers.qwen/.envsi vous devez les définir spécifiquement pour Qwen Code.
- Définir à
NO_COLOR:- Définir à n’importe quelle valeur désactive toute sortie colorée dans le CLI.
CLI_TITLE:- Définir à une chaîne de caractères pour personnaliser le titre du CLI.
TAVILY_API_KEY:- Votre clé API pour le service de recherche web Tavily.
- Requise pour activer la fonctionnalité de l’outil
web_search. - Si non configurée, l’outil de recherche web sera désactivé et ignoré.
- Exemple :
export TAVILY_API_KEY="tvly-your-api-key-here"
Arguments de ligne de commande
Les arguments passés directement lors de l’exécution du CLI peuvent remplacer les autres configurations pour cette session spécifique.
--model <model_name>(-m <model_name>) :- Spécifie le modèle Qwen à utiliser pour cette session.
- Exemple :
npm start -- --model qwen3-coder-plus
--prompt <your_prompt>(-p <your_prompt>) :- Permet de passer un prompt directement à la commande. Cela invoque Qwen Code en mode non interactif.
- Pour des exemples de scripts, utilisez le flag
--output-format jsonafin d’obtenir une sortie structurée.
--prompt-interactive <your_prompt>(-i <your_prompt>) :- Démarre une session interactive avec le prompt fourni comme entrée initiale.
- Le prompt est traité dans la session interactive, et non avant celle-ci.
- Ne peut pas être utilisé lorsque l’entrée provient d’un pipe via stdin.
- Exemple :
qwen -i "explain this code"
--output-format <format>:- Description : Spécifie le format de la sortie CLI en mode non interactif.
- Valeurs :
text: (Par défaut) La sortie standard lisible par un humain.json: Une sortie au format JSON, lisible par une machine.
- Remarque : Pour obtenir une sortie structurée ou effectuer du scripting, utilisez le flag
--output-format json.
--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 détaillée.
--all-files(-a) :- Si activé, inclut récursivement tous les fichiers du répertoire courant comme contexte pour le prompt.
--help(ou-h) :- Affiche les informations d’aide concernant les arguments de 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 <mode>:- Définit le mode d’approbation pour les appels d’outils. Modes pris en charge :
plan: Analyse uniquement — ne modifie pas les fichiers ni n’exécute de commandes.default: Nécessite une approbation pour les modifications de fichiers ou les commandes shell (comportement par défaut).auto-edit: Approuve automatiquement les outils d’édition (edit, write_file), tout en demandant une validation pour les autres.yolo: Approuve automatiquement tous les appels d’outils (équivalent à--yolo).
- Ne peut pas être utilisé conjointement avec
--yolo. Utilisez plutôt--approval-mode=yolopour adopter la nouvelle approche unifiée. - Exemple :
qwen --approval-mode auto-edit
- Définit le mode d’approbation pour les appels d’outils. Modes pris en charge :
--allowed-tools <tool1,tool2,...>:- Liste séparée par des virgules des noms d’outils qui contourneront la boîte de dialogue de confirmation.
- Exemple :
qwen --allowed-tools "ShellTool(git status)"
--telemetry:- Active la télémétrie.
--telemetry-target:- Définit la cible de télémétrie. Voir télémétrie pour plus d’informations.
--telemetry-otlp-endpoint:- Définit le endpoint OTLP pour la télémétrie. Voir télémétrie pour plus d’informations.
--telemetry-otlp-protocol:- Définit le protocole OTLP pour la télémétrie (
grpcouhttp). Par défaut :grpc. Voir télémétrie pour plus d’informations.
- Définit le protocole OTLP pour la télémétrie (
--telemetry-log-prompts:- Active la journalisation des prompts pour la télémétrie. Voir télémétrie pour plus d’informations.
--checkpointing:- Active le checkpointing.
--extensions <extension_name ...>(-e <extension_name ...>) :- Spécifie une liste d’extensions à utiliser pour la session. Si non spécifié, toutes les extensions disponibles sont utilisées.
- Utilisez le terme spécial
qwen -e nonepour 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 le CLI.
- Exemple :
--proxy http://localhost:7890.
--include-directories <dir1,dir2,...>:- Inclut des répertoires supplémentaires dans l’espace de travail pour prendre en charge plusieurs répertoires.
- Peut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules.
- Maximum 5 répertoires peuvent être ajoutés.
- Exemple :
--include-directories /path/to/project1,/path/to/project2ou--include-directories /path/to/project1 --include-directories /path/to/project2
--screen-reader:- Active le mode lecteur d’écran, ajustant l’interface utilisateur textuelle (TUI) pour une meilleure compatibilité avec les lecteurs d’écran.
--version:- Affiche la version du CLI.
--openai-logging:- Active la journalisation des appels à l’API OpenAI à des fins de débogage et d’analyse. Ce flag remplace le paramètre
enableOpenAILoggingdanssettings.json.
- Active la journalisation des appels à l’API OpenAI à des fins de débogage et d’analyse. Ce flag remplace le paramètre
--tavily-api-key <api_key>:- Définit la clé API Tavily pour la fonctionnalité de recherche Web pour cette session.
- Exemple :
qwen --tavily-api-key tvly-your-api-key-here
Fichiers de contexte (Contexte hiérarchique d’instructions)
Bien qu’ils ne constituent pas strictement une configuration du comportement de 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 d’instruction (é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 ainsi ses réponses plus adaptées et précises selon vos besoins. La CLI inclut des éléments d’interface utilisateur, comme un indicateur dans le pied de page montrant 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 durant vos interactions. Le système est conçu pour gérer ce contexte d’instruction de manière hiérarchique.
Exemple de Contenu d’un Fichier Contexte (ex: QWEN.md)
Voici un exemple conceptuel du contenu d’un fichier contexte à la racine d’un projet TypeScript :
# Project: My Awesome TypeScript Library
## Instructions générales :
- Lors de la génération de nouveau code TypeScript, merci de suivre le style de codage existant.
- Assurez-vous que toutes les nouvelles fonctions et classes possèdent des commentaires JSDoc.
- Privilégiez les paradigmes de programmation fonctionnelle lorsque cela est approprié.
- Tout le code doit être compatible avec TypeScript 5.0 et Node.js 20+.
## Style de codage :
- Utilisez 2 espaces pour l'indentation.
- Les noms d'interfaces doivent être préfixés par `I` (ex : `IUserService`).
- Les membres privés des classes doivent être préfixés par un underscore (`_`).
- Utilisez toujours l'égalité stricte (`===` et `!==`).
## Composant spécifique : `src/api/client.ts`
- Ce fichier gère toutes les requêtes API sortantes.
- Lors de l'ajout de nouvelles fonctions d'appel API, assurez-vous qu'elles incluent une gestion d'erreur robuste et des logs.
- Utilisez l'utilitaire `fetchWithRetry` existant pour toutes les requêtes GET.Concernant les dépendances :
- Évitez d’introduire de nouvelles dépendances externes sauf si c’est absolument nécessaire.
- Si une nouvelle dépendance est requise, veuillez indiquer la raison.
Cet exemple montre comment vous pouvez fournir un contexte général sur le projet, des conventions de codage spécifiques, ainsi que des notes concernant certains 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 afin d'établir des conventions et un cadre clair.
- **Chargement hiérarchique et priorité :** Le CLI implémente un système de mémoire sophistiqué en chargeant les fichiers de contexte (par ex. `QWEN.md`) depuis plusieurs emplacements. Le contenu des fichiers situés plus bas dans cette liste (plus spécifique) remplace généralement ou complète celui des fichiers situés plus haut (plus général). L'ordre exact de concaténation et le contexte final peuvent être inspectés via la commande `/memory show`. L'ordre typique de chargement est :
1. **Fichier de contexte global :**
- Emplacement : `~/.qwen/<nom-du-fichier-de-contexte-configuré>` (par exemple, `~/.qwen/QWEN.md` dans votre répertoire utilisateur).
- Portée : Fournit des instructions par défaut pour tous vos projets.
2. **Fichiers de contexte à la racine du projet et dans ses ancêtres :**
- Emplacement : Le CLI recherche le fichier de contexte configuré dans le répertoire courant, puis dans chaque répertoire parent jusqu'à atteindre soit la racine du projet (identifiée par un dossier `.git`), soit votre répertoire personnel.
- Portée : Fournit un contexte pertinent pour l'ensemble du projet ou une grande partie de celui-ci.
3. **Fichiers de contexte dans les sous-répertoires (contextuels/locaux) :**
- Emplacement : Le CLI scanne également les sous-répertoires _situés sous_ le répertoire courant (en respectant les motifs d'exclusion usuels comme `node_modules`, `.git`, etc.) à la recherche du fichier de contexte configuré. Par défaut, cette recherche est limitée à 200 répertoires, mais elle peut être ajustée avec le paramètre `context.discoveryMaxDirs` dans votre fichier `settings.json`.
- Portée : Permet d’ajouter des instructions très précises applicables à un composant, module ou section spécifique de votre projet.
- **Concaténation & indication dans l'interface utilisateur :** Le contenu de tous les fichiers de contexte trouvés est concaténé (avec des séparateurs indiquant leur origine et leur chemin) et inclus dans le prompt système. Le pied de page du CLI affiche le nombre total de fichiers de contexte chargés, donnant ainsi un indicateur visuel rapide du contexte instructionnel actif.
- **Importation de contenu :** Vous pouvez modulariser vos fichiers de contexte en important d'autres fichiers Markdown grâce à la syntaxe `@chemin/vers/fichier.md`. Pour plus de détails, consultez la [documentation du processeur d'import mémoire](../core/memport.md).
- **Commandes de gestion de la mémoire :**
- Utilisez `/memory refresh` pour forcer un nouveau scan et recharger tous les fichiers de contexte depuis leurs emplacements configurés. Cela met à jour le contexte instructionnel utilisé par l'IA.
- Utilisez `/memory show` pour afficher le contexte instructionnel combiné actuellement chargé, ce qui vous permet de vérifier la hiérarchie et le contenu effectivement utilisés par l'IA.
- Consultez la [documentation des commandes](./commands.md#memory) pour obtenir tous les détails sur la commande `/memory` et ses sous-commandes (`show` et `refresh`).
En comprenant et en exploitant ces couches de configuration ainsi que la nature hiérarchique des fichiers de contexte, vous pouvez efficacement gérer la mémoire de l'IA et adapter les réponses de Qwen Code à vos besoins spécifiques et à vos projets.
## Sandboxing
Qwen Code peut exécuter des opérations potentiellement non sécurisées (comme les commandes shell et les modifications de fichiers) dans un environnement sandboxé pour protéger votre système.
Le sandboxing est désactivé par défaut, mais vous pouvez l'activer de plusieurs façons :
- En utilisant le flag `--sandbox` ou `-s`.
- En définissant la variable d'environnement `GEMINI_SANDBOX`.
- Le sandbox est activé par défaut lorsque vous utilisez `--yolo` ou `--approval-mode=yolo`.
Par défaut, il utilise une image Docker pré-construite `qwen-code-sandbox`.
Pour des besoins de sandboxing spécifiques à un projet, vous pouvez créer un Dockerfile personnalisé à l'emplacement `.qwen/sandbox.Dockerfile` dans le répertoire racine de votre projet. Ce Dockerfile peut être basé sur l'image de base du sandbox :
```dockerfile
FROM qwen-code-sandbox
# Ajoutez vos dépendances ou configurations personnalisées ici
# Par exemple :
# RUN apt-get update && apt-get install -y some-packageCOPY ./my-config /app/my-config
Quand `.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 :
```bash
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 permettent de comprendre comment le CLI est utilisé, d’identifier les problèmes courants et de prioriser les nouvelles fonctionnalités.
Ce que nous collectons :
- Appels d’outils : Nous enregistrons les noms des outils appelés, qu’ils réussissent ou échouent, ainsi que leur durée d’exécution. Nous ne collectons pas les arguments passés aux outils ni les données retournées par ceux-ci.
- Requêtes API : Nous enregistrons le modèle utilisé pour chaque requête, la durée de celle-ci et son succès ou échec. Nous ne collectons pas le contenu des prompts ou des réponses.
- Informations de session : Nous collectons des informations sur la configuration du CLI, comme les outils activés et le mode d’approbation.
Ce que nous ne collectons PAS :
- Données personnelles (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 n’enregistrons pas le contenu de vos prompts ou des réponses du modèle.
- Contenu des fichiers : Nous n’enregistrons pas le contenu des fichiers lus ou écrits par le CLI.
Comment désactiver la collecte :
Vous pouvez désactiver la collecte des statistiques d’utilisation à tout moment en définissant la propriété usageStatisticsEnabled à false dans la catégorie privacy de votre fichier settings.json :
{
"privacy": {
"usageStatisticsEnabled": false
}
}Remarque : Lorsque les statistiques d’utilisation sont activées, les événements sont envoyés à un endpoint de collecte Alibaba Cloud RUM.