Configuration de Qwen Code
Authentification / Clés API : L’authentification (Qwen OAuth vs API compatible OpenAI) et les variables d’environnement liées à l’authentification (comme OPENAI_API_KEY) sont documentées dans Authentification.
Remarque sur le nouveau format de configuration : Le format du fichier settings.json a été mis à jour vers une nouvelle structure plus organisée. L’ancien format sera migré automatiquement.
Qwen Code propose plusieurs façons de configurer son comportement, notamment via des variables d’environnement, des arguments en ligne de commande et des fichiers de paramètres. Ce document décrit les différentes méthodes de configuration et les paramètres disponibles.
Couches de configuration
La configuration est appliquée dans l’ordre de priorité suivant (les nombres plus bas sont remplacés par les nombres plus élevés) :
| Niveau | Source de configuration | Description |
|---|---|---|
| 1 | Valeurs par défaut | Valeurs codées en dur dans l’application |
| 2 | Fichier de valeurs système par défaut | Paramètres par défaut à l’échelle du système pouvant être remplacé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 projet | Paramètres spécifiques au projet |
| 5 | Fichier de paramètres système | Paramètres à l’échelle du système qui remplacent 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 de ligne de commande | Valeurs passées lors du lancement de l’interface CLI |
Fichiers de paramètres
Qwen Code utilise des fichiers de paramètres au format JSON pour la configuration persistante. Il existe quatre emplacements possibles pour ces fichiers :
| Type de fichier | Emplacement | Portée |
|---|---|---|
| Fichier par défaut système | Linux : /etc/qwen-code/system-defaults.jsonWindows : C:\ProgramData\qwen-code\system-defaults.jsonmacOS : /Library/Application Support/QwenCode/system-defaults.json Le chemin peut être modifié via la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH. | Fournit une couche de base pour les paramètres par défaut à l’échelle du système. Ces paramètres ont la priorité la plus faible et sont destinés à être remplacés par les paramètres utilisateur, projet ou système. |
| Fichier de paramètres utilisateur | ~/.qwen/settings.json (où ~ est votre répertoire personnel). | S’applique à toutes les sessions Qwen Code de l’utilisateur actuel. |
| Fichier de paramètres projet | .qwen/settings.json dans le répertoire racine de votre projet. | S’applique uniquement lorsque Qwen Code est exécuté depuis ce projet spécifique. Les paramètres du projet remplacent ceux de l’utilisateur. |
| Fichier de paramètres système | Linux : /etc/qwen-code/settings.json Windows : C:\ProgramData\qwen-code\settings.json macOS : /Library/Application Support/QwenCode/settings.jsonLe chemin peut être modifié via la variable d’environnement QWEN_CODE_SYSTEM_SETTINGS_PATH. | S’applique à toutes les sessions Qwen Code sur le système, pour tous les utilisateurs. Les paramètres système remplacent ceux de l’utilisateur et du projet. Utile notamment pour les administrateurs système en entreprise. |
Remarque sur les variables d’environnement dans les paramètres : Les valeurs de type chaîne dans vos fichiers settings.json peuvent référencer des variables d’environnement en utilisant la syntaxe $NOM_VARIABLE ou ${NOM_VARIABLE}. Ces variables seront automatiquement résolues au chargement des paramètres. Par exemple, si vous avez une variable d’environnement MY_API_TOKEN, vous pouvez l’utiliser dans settings.json comme ceci : "apiKey": "$MY_API_TOKEN".
Le répertoire .qwen dans votre projet
En plus d’un fichier de paramètres de projet, le répertoire .qwen d’un projet peut contenir d’autres fichiers spécifiques au projet liés au fonctionnement de Qwen Code, tels que :
- Profils de bac à sable personnalisés (par exemple
.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 leur objet de catégorie de niveau supérieur correspondant dans votre fichier settings.json.
général
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
general.preferredEditor | string | L’éditeur préféré pour ouvrir les fichiers. | undefined |
general.vimMode | boolean | Activer les raccourcis clavier Vim. | false |
general.disableAutoUpdate | boolean | Désactiver les mises à jour automatiques. | false |
general.disableUpdateNag | boolean | Désactiver les notifications de mise à jour. | false |
general.checkpointing.enabled | boolean | Activer la sauvegarde des sessions pour récupération. | false |
output
| Paramètre | Type | Description | Défaut | Valeurs possibles |
|---|---|---|---|---|
output.format | string | Le format de sortie du CLI. | "text" | "text", "json" |
ui
| Paramètre | Type | Description | Défaut |
|---|---|---|---|
ui.theme | string | Le thème de couleurs pour l’interface utilisateur. Voir Thèmes pour les options disponibles. | undefined |
ui.customThemes | object | Définitions de thèmes personnalisés. | {} |
ui.hideWindowTitle | boolean | Masquer la barre de titre de la fenêtre. | false |
ui.hideTips | boolean | Masquer les astuces utiles dans l’interface utilisateur. | false |
ui.hideBanner | boolean | Masquer la bannière de l’application. | false |
ui.hideFooter | boolean | Masquer le pied de page de l’interface utilisateur. | false |
ui.showMemoryUsage | boolean | Afficher les informations d’utilisation de la mémoire dans l’interface utilisateur. | false |
ui.showLineNumbers | boolean | Afficher les numéros de ligne dans les blocs de code dans la sortie CLI. | true |
ui.showCitations | boolean | Afficher les citations pour le texte généré dans le chat. | true |
enableWelcomeBack | boolean | Afficher la boîte de dialogue de bienvenue lors du retour à un projet avec un historique de conversation. Lorsque cette option est activée, Qwen Code détectera automatiquement si vous revenez à un projet avec un résumé de projet précédemment généré (.qwen/PROJECT_SUMMARY.md) et affichera une boîte de dialogue vous permettant de continuer votre conversation précédente ou d’en commencer une nouvelle. Cette fonctionnalité s’intègre à la commande /summary et à la boîte de dialogue de confirmation de fermeture. | true |
ui.accessibility.disableLoadingPhrases | boolean | Désactiver les phrases de chargement pour l’accessibilité. | false |
ui.accessibility.screenReader | boolean | Active le mode lecteur d’écran, qui adapte l’interface utilisateur textuelle pour une meilleure compatibilité avec les lecteurs d’écran. | false |
ui.customWittyPhrases | array of strings | Une liste de phrases personnalisées à afficher pendant les états de chargement. Lorsqu’elle est fournie, la CLI parcourra ces phrases au lieu des phrases par défaut. | [] |
ide
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
ide.enabled | boolean | Activer le mode d’intégration IDE. | false |
ide.hasSeenNudge | boolean | Indique si l’utilisateur a vu la notification d’intégration IDE. | false |
privacy
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Activer la collecte de 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 maximal de tours utilisateur/modèle/outil à conserver dans une session. -1 signifie illimité. | -1 |
model.summarizeToolOutput | object | Active ou désactive le résumé de la sortie des outils. Vous pouvez spécifier le budget en tokens pour le résumé via le paramètre tokenBudget. Remarque : Actuellement, seul l’outil run_shell_command est pris en charge. Par exemple {"run_shell_command": {"tokenBudget": 2000}} | undefined |
model.generationConfig | object | Paramètres avancés transmis au générateur de contenu sous-jacent. Prend en charge des contrôles de requête tels que timeout, maxRetries et disableCacheControl, ainsi que des options de réglage fin dans samplingParams (par exemple temperature, top_p, max_tokens). Laissez non défini pour utiliser les valeurs par défaut du fournisseur. | undefined |
model.chatCompression.contextPercentageThreshold | number | Définit le seuil de compression de l’historique de discussion en pourcentage de la limite totale de tokens du modèle. C’est une valeur entre 0 et 1 qui s’applique à la fois à la compression automatique et à la commande manuelle /compress. Par exemple, une valeur de 0.6 déclenchera la compression lorsque l’historique dépasse 60 % de la limite de tokens. Utilisez 0 pour désactiver complètement la compression. | 0.7 |
model.skipNextSpeakerCheck | boolean | Ignore la vérification du prochain intervenant. | 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 les flux de travail légitimes. Activez cette option si vous rencontrez fréquemment des interruptions dues à des faux positifs. | false |
model.skipStartupContext | boolean | Ignore l’envoi du contexte initial de l’espace de travail (résumé de l’environnement et accusé de réception) au début de chaque session. Activez cette option si vous préférez fournir le contexte manuellement ou si vous souhaitez économiser des tokens au démarrage. | false |
model.enableOpenAILogging | boolean | Active la journalisation des appels à l’API OpenAI à des fins de débogage et d’analyse. Lorsque cette option est activée, les requêtes et réponses de l’API sont enregistrées dans des fichiers JSON. | false |
model.openAILoggingDir | string | Chemin personnalisé vers le répertoire des journaux de l’API OpenAI. S’il n’est pas spécifié, la valeur par défaut est logs/openai dans le répertoire de travail actuel. Prend en charge les chemins absolus, les chemins relatifs (résolus depuis le répertoire de travail actuel) et l’expansion ~ (répertoire personnel). | undefined |
Exemple model.generationConfig :
{
"model": {
"generationConfig": {
"timeout": 60000,
"disableCacheControl": false,
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}Exemples model.openAILoggingDir :
"~/qwen-logs"- Enregistre les journaux dans le répertoire~/qwen-logs"./custom-logs"- Enregistre les journaux dans./custom-logsrelatif au répertoire courant"/tmp/openai-logs"- Enregistre les journaux dans le chemin absolu/tmp/openai-logs
context
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
context.fileName | chaîne ou tableau de chaînes | Le nom du ou des fichiers de contexte. | undefined |
context.importFormat | chaîne | Le format à utiliser lors de l’importation de la mémoire. | undefined |
context.discoveryMaxDirs | nombre | Nombre maximal de répertoires à explorer pour la mémoire. | 200 |
context.includeDirectories | tableau | 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 dans le contexte de l’espace de travail. Les répertoires manquants seront ignorés avec un avertissement par défaut. Les chemins peuvent utiliser ~ pour faire référence au répertoire personnel de l’utilisateur. Ce paramètre peut être combiné avec le drapeau de ligne de commande --include-directories. | [] |
context.loadFromIncludeDirectories | booléen | 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 courant. | false |
context.fileFiltering.respectGitIgnore | booléen | Respecter les fichiers .gitignore lors de la recherche. | true |
context.fileFiltering.respectQwenIgnore | booléen | Respecter les fichiers .qwenignore lors de la recherche. | true |
context.fileFiltering.enableRecursiveFileSearch | booléen | Indique s’il faut activer la recherche récursive des noms de fichiers sous l’arborescence actuelle lors de la complétion des préfixes @ dans l’invite. | true |
context.fileFiltering.disableFuzzySearch | booléen | Lorsque défini sur true, désactive les capacités de recherche floue lors de la recherche de fichiers, ce qui peut améliorer les performances sur les projets comportant un grand nombre de fichiers. | false |
Résolution des problèmes de performances de recherche de fichiers
Si vous rencontrez des problèmes de performances avec la recherche de fichiers (par exemple, avec les complétions @), en particulier dans des projets comportant un très grand nombre de fichiers, voici quelques solutions que vous pouvez essayer par ordre de recommandation :
- Utiliser
.qwenignore: Créez un fichier.qwenignoreà la racine de votre projet pour exclure les répertoires contenant un grand nombre de fichiers dont vous n’avez pas besoin de référencer (ex. : artefacts de build, journaux,node_modules). Réduire le nombre total de fichiers parcourus est le moyen le plus efficace d’améliorer les performances. - Désactiver la recherche floue : Si ignorer des fichiers ne suffit pas, vous pouvez désactiver la recherche floue en définissant
disableFuzzySearchsurtruedans votre fichiersettings.json. Cela utilisera un algorithme de correspondance plus simple et non flou, ce qui peut être plus rapide. - Désactiver la recherche récursive de fichiers : En dernier recours, vous pouvez désactiver entièrement la recherche récursive de fichiers en définissant
enableRecursiveFileSearchsurfalse. Il s’agira de l’option la plus rapide puisqu’elle évite un parcours récursif de votre projet. Toutefois, cela signifie que vous devrez taper le chemin complet des fichiers lorsque vous utilisez les complétions@.
outils
| Paramètre | Type | Description | Valeur par défaut | Remarques |
|---|---|---|---|---|
tools.sandbox | booléen ou chaîne | Environnement d’exécution sandbox (peut être un booléen ou une chaîne de chemin). | undefined | |
tools.shell.enableInteractiveShell | booléen | Utiliser node-pty pour une expérience de shell interactive. Le recours à child_process s’applique toujours. | false | |
tools.core | tableau de chaînes | Peut être utilisé pour restreindre l’ensemble des outils intégrés avec une liste autorisée. Vous pouvez également spécifier des restrictions spécifiques aux commandes pour les outils qui le permettent, comme l’outil run_shell_command. Par exemple, "tools.core": ["run_shell_command(ls -l)"] n’autorisera que l’exécution de la commande ls -l. | undefined | |
tools.exclude | tableau de chaînes | Noms d’outils à exclure de la découverte. Vous pouvez également spécifier des restrictions spécifiques aux commandes pour les outils qui le permettent, comme l’outil run_shell_command. Par exemple, "tools.exclude": ["run_shell_command(rm -rf)"] bloquera la commande rm -rf. Note de sécurité : Les restrictions spécifiques aux commandes dans tools.exclude pour run_shell_command reposent sur une simple correspondance de chaînes et peuvent facilement être contournées. Cette fonctionnalité n’est pas un mécanisme de sécurité et ne doit pas être utilisée pour exécuter en toute sécurité du code non fiable. Il est recommandé d’utiliser tools.core pour sélectionner explicitement les commandes pouvant être exécutées. | undefined | |
tools.allowed | tableau de chaînes | Liste des noms d’outils qui contourneront la boîte de dialogue de confirmation. Utile pour les outils de confiance utilisés fréquemment. Par exemple, ["run_shell_command(git)", "run_shell_command(npm test)"] ignorera la boîte de dialogue de confirmation pour exécuter toutes les commandes git et npm test. | undefined | |
tools.approvalMode | chaîne | 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 (nécessite une approbation avant modification de fichiers ou exécution de commandes shell), auto-edit (approuver automatiquement les modifications de fichiers), yolo (approuver automatiquement tous les appels d’outils) |
tools.discoveryCommand | chaîne | Commande à exécuter pour la découverte des outils. | undefined | |
tools.callCommand | chaîne | Définit une commande shell personnalisée pour appeler un outil spécifique découvert à l’aide de tools.discoveryCommand. La commande shell doit respecter les critères suivants : elle doit prendre le nom de la fonction (exactement comme dans la déclaration de fonction ) comme premier argument de ligne de commande. Elle doit lire les arguments de la fonction au format JSON depuis stdin, de manière analogue à functionCall.args. Elle doit retourner la sortie de la fonction au format JSON sur stdout, de manière analogue à functionResponse.response.content. | undefined | |
tools.useRipgrep | booléen | Utiliser ripgrep pour la recherche de contenu dans les fichiers au lieu de l’implémentation de secours. Offre de meilleures performances de recherche. | true | |
tools.useBuiltinRipgrep | booléen | Utiliser le binaire ripgrep inclus. Si défini sur false, la commande système rg sera utilisée à la place. Ce paramètre n’est effectif que lorsque tools.useRipgrep est true. | true | |
tools.enableToolOutputTruncation | booléen | Activer la troncature des grandes sorties d’outils. | true | Redémarrage requis : Oui |
tools.truncateToolOutputThreshold | nombre | Tronquer 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 | Redémarrage requis : Oui |
tools.truncateToolOutputLines | nombre | Nombre maximal de lignes ou d’entrées conservées lors de la troncature de la sortie de l’outil. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 1000 | Redémarrage requis : Oui |
tools.autoAccept | booléen | Contrôle si l’interface en ligne de commande accepte et exécute automatiquement les appels d’outils considérés comme sûrs (par exemple, les opérations en lecture seule) sans confirmation explicite de l’utilisateur. Si défini sur true, l’interface en ligne de commande ignorera l’invite de confirmation pour les outils jugés sûrs. | false |
mcp
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
mcp.serverCommand | chaîne de caractères | Commande pour démarrer un serveur MCP. | undefined |
mcp.allowed | tableau de chaînes de caractères | Une liste d’autorisation des serveurs MCP à autoriser. Vous permet de spécifier une liste de noms de serveurs MCP qui devraient être mis à disposition du modèle. Cela peut être utilisé pour restreindre l’ensemble des serveurs MCP auxquels se connecter. Notez que ce paramètre sera ignoré si --allowed-mcp-server-names est défini. | undefined |
mcp.excluded | tableau de chaînes de caractères | Une liste de refus des serveurs MCP à exclure. Un serveur listé à la fois dans mcp.excluded et mcp.allowed est exclu. Notez que ce paramètre sera ignoré si --allowed-mcp-server-names est défini. | undefined |
Note de sécurité pour les serveurs MCP : Ces paramètres utilisent une correspondance simple de chaînes de caractères sur les noms de serveurs MCP, qui peuvent être modifiés. Si vous êtes un administrateur système souhaitant empêcher les utilisateurs de contourner cela, envisagez de configurer mcpServers au niveau des paramètres système de sorte que l’utilisateur ne puisse pas configurer ses propres serveurs MCP. Cela ne doit pas être utilisé comme un mécanisme de sécurité infaillible.
sécurité
| Paramè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 de Node.js. | false |
advanced.dnsResolutionOrder | string | L’ordre de résolution DNS. | undefined |
advanced.excludedEnvVars | tableau de chaînes | 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 l’interface CLI. Les variables des fichiers .qwen/.env ne sont jamais exclues. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | objet | Configuration pour la commande de rapport de bogue. Remplace l’URL par défaut de la commande /bug. Propriétés : urlTemplate (chaîne) : Une URL pouvant contenir les espaces réservés {title} et {info}. Exemple : "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
advanced.tavilyApiKey | string | Clé API pour le service de recherche Web Tavily. Utilisée pour activer la fonctionnalité de l’outil web_search. | undefined |
Remarque concernant advanced.tavilyApiKey : Il s’agit d’un format de configuration hérité. Pour les utilisateurs Qwen OAuth, le fournisseur DashScope est automatiquement disponible sans aucune configuration. Pour les autres types d’authentification, configurez les fournisseurs Tavily ou Google en utilisant le nouveau format de configuration webSearch.
mcpServers
Configure les connexions à un ou plusieurs serveurs Model-Context Protocol (MCP) pour découvrir et utiliser des outils personnalisés. Qwen Code tente de se connecter à chaque serveur MCP configuré afin de découvrir les outils disponibles. Si plusieurs serveurs MCP exposent un outil portant le même nom, les noms des outils seront préfixés avec l’alias du serveur que vous avez défini dans la configuration (par exemple, serverAlias__nomReelDeLOutil) afin d’éviter les conflits. Notez que le système peut supprimer certaines propriétés de schéma des définitions d’outils MCP pour des raisons de compatibilité. Au moins une des propriétés command, url ou httpUrl doit être fournie. Si plusieurs sont spécifiées, l’ordre de priorité est : httpUrl, puis url, puis command.
| Propriété | Type | Description | Optionnel |
|---|---|---|---|
mcpServers.<SERVER_NAME>.command | chaîne de caractères | La commande à exécuter pour démarrer le serveur MCP via l’E/S standard. | Oui |
mcpServers.<SERVER_NAME>.args | tableau de chaînes | Les arguments à passer à la commande. | Oui |
mcpServers.<SERVER_NAME>.env | objet | Les variables d’environnement à définir pour le processus du serveur. | Oui |
mcpServers.<SERVER_NAME>.cwd | chaîne de caractères | Le répertoire de travail dans lequel démarrer le serveur. | Oui |
mcpServers.<SERVER_NAME>.url | chaîne de caractères | L’URL d’un serveur MCP utilisant les événements envoyés par le serveur (SSE) pour communiquer. | Oui |
mcpServers.<SERVER_NAME>.httpUrl | chaîne de caractères | L’URL d’un serveur MCP utilisant HTTP en streaming pour communiquer. | Oui |
mcpServers.<SERVER_NAME>.headers | objet | Une carte des en-têtes HTTP à envoyer avec les requêtes vers url ou httpUrl. | Oui |
mcpServers.<SERVER_NAME>.timeout | nombre | Délai d’expiration en millisecondes pour les requêtes vers ce serveur MCP. | Oui |
mcpServers.<SERVER_NAME>.trust | booléen | Faire confiance à ce serveur et contourner toutes les confirmations d’appel d’outils. | Oui |
mcpServers.<SERVER_NAME>.description | chaîne de caractères | Une brève description du serveur, pouvant être utilisée à des fins d’affichage. | Oui |
mcpServers.<SERVER_NAME>.includeTools | tableau de chaînes | Liste des noms d’outils à inclure depuis ce serveur MCP. Lorsque cette liste est spécifiée, seuls les outils listés ici seront disponibles depuis ce serveur (comportement de type liste blanche). Si non spécifié, tous les outils du serveur sont activés par défaut. | Oui |
mcpServers.<SERVER_NAME>.excludeTools | tableau de chaînes | Liste des noms d’outils à exclure depuis ce serveur MCP. Les outils listés ici ne seront pas accessibles au modèle, même s’ils sont exposés par le serveur. Remarque : excludeTools prime sur includeTools – si un outil figure dans les deux listes, il sera exclu. | Oui |
télémétrie
Configure la collecte de journaux et de métriques pour Qwen Code. Pour plus d’informations, voir télémétrie.
| Paramètre | Type | Description | Défaut |
|---|---|---|---|
telemetry.enabled | boolean | Indique si la télémétrie est activée ou non. | |
telemetry.target | string | La destination des données de télémétrie collectées. Valeurs supportées : local et gcp. | |
telemetry.otlpEndpoint | string | Le point de terminaison de l’exportateur OTLP. | |
telemetry.otlpProtocol | string | Le protocole de l’exportateur OTLP (grpc ou http). | |
telemetry.logPrompts | boolean | Indique s’il faut inclure le contenu des invites utilisateur dans les journaux. | |
telemetry.outfile | string | Le fichier vers lequel écrire les données de télémétrie lorsque target est local. | |
telemetry.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, nouvelle depuis la version v0.3.0 :
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideBanner": true,
"hideTips": false,
"customWittyPhrases": [
"Vous oubliez mille choses chaque jour. Assurez-vous que celle-ci en fait partie",
"Connexion à l'AGI"
]
},
"tools": {
"approvalMode": "yolo",
"sandbox": "docker",
"discoveryCommand": "bin/get_tools",
"callCommand": "bin/call_tool",
"exclude": ["write_file"]
},
"mcpServers": {
"mainServer": {
"command": "bin/mcp_server.py"
},
"anotherServer": {
"command": "node",
"args": ["mcp_server.js", "--verbose"]
}
},
"telemetry": {
"enabled": true,
"target": "local",
"otlpEndpoint": "http://localhost:4317",
"logPrompts": true
},
"privacy": {
"usageStatisticsEnabled": true
},
"model": {
"name": "qwen3-coder-plus",
"maxSessionTurns": 10,
"enableOpenAILogging": false,
"openAILoggingDir": "~/qwen-logs",
"summarizeToolOutput": {
"run_shell_command": {
"tokenBudget": 100
}
}
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}Historique du Shell
La CLI conserve un historique des commandes shell que vous exécutez. Pour éviter les conflits entre différents projets, cet historique est stocké dans un répertoire spécifique au projet, situé dans le dossier personnel de votre utilisateur.
- Emplacement :
~/.qwen/tmp/<project_hash>/shell_history<project_hash>est un identifiant unique généré à partir du chemin racine de votre projet.- L’historique est enregistré dans un fichier nommé
shell_history.
Variables d’environnement et fichiers .env
Les variables d’environnement constituent une méthode courante pour configurer des applications, en particulier pour les informations sensibles (comme les jetons) ou les paramètres susceptibles de varier selon les environnements.
Qwen Code peut automatiquement charger les variables d’environnement à partir des fichiers .env.
Pour les variables liées à l’authentification (telles que OPENAI_*) et l’approche recommandée avec .qwen/.env, consultez Authentification.
Exclusion de variables d’environnement : Certaines variables d’environnement (comme DEBUG et DEBUG_MODE) sont automatiquement exclues des fichiers .env du projet par défaut afin d’éviter toute interférence avec le comportement de l’interface CLI. Les variables provenant des fichiers .qwen/.env ne sont jamais exclues. Vous pouvez personnaliser ce comportement à l’aide du paramètre advanced.excludedEnvVars dans votre fichier settings.json.
Tableau des variables d’environnement
| Variable | Description | Notes |
|---|---|---|
GEMINI_TELEMETRY_ENABLED | Définir sur true ou 1 pour activer la télémétrie. Toute autre valeur est traitée comme une désactivation. | Remplace le paramètre telemetry.enabled. |
GEMINI_TELEMETRY_TARGET | Définit la cible de télémétrie (local ou gcp). | Remplace le paramètre telemetry.target. |
GEMINI_TELEMETRY_OTLP_ENDPOINT | Définit le point de terminaison OTLP pour la télémétrie. | Remplace le paramètre telemetry.otlpEndpoint. |
GEMINI_TELEMETRY_OTLP_PROTOCOL | Définit le protocole OTLP (grpc ou http). | Remplace le paramètre telemetry.otlpProtocol. |
GEMINI_TELEMETRY_LOG_PROMPTS | Définir sur true ou 1 pour activer ou désactiver la journalisation des invites utilisateur. Toute autre valeur est traitée comme une désactivation. | Remplace le paramètre telemetry.logPrompts. |
GEMINI_TELEMETRY_OUTFILE | Définit le chemin du fichier vers lequel écrire les données de télémétrie lorsque la cible est local. | Remplace le paramètre telemetry.outfile. |
GEMINI_TELEMETRY_USE_COLLECTOR | Définir sur true ou 1 pour activer ou désactiver l’utilisation d’un collecteur OTLP externe. Toute autre valeur est traitée comme une désactivation. | Remplace le paramètre telemetry.useCollector. |
GEMINI_SANDBOX | Alternative au paramètre sandbox dans settings.json. | Accepte true, false, docker, podman, ou une chaîne de commande personnalisée. |
SEATBELT_PROFILE | (spécifique à macOS) Change le profil Seatbelt (sandbox-exec) sur macOS. | permissive-open : (Par défaut) Restreint les écritures au dossier du projet (et quelques autres dossiers, voir packages/cli/src/utils/sandbox-macos-permissive-open.sb) mais autorise les autres opérations. strict : Utilise un profil strict qui refuse les opérations par défaut. <profile_name> : Utilise un profil personnalisé. Pour définir un profil personnalisé, créez un fichier nommé sandbox-macos-<profile_name>.sb dans le répertoire .qwen/ de votre projet (par exemple, my-project/.qwen/sandbox-macos-custom.sb). |
DEBUG ou DEBUG_MODE | (souvent utilisé par les bibliothèques sous-jacentes ou le CLI lui-même) Définir sur true ou 1 pour activer la journalisation détaillée, utile pour le débogage. | Remarque : Ces variables sont automatiquement exclues des fichiers .env du projet par défaut afin d’éviter toute interférence avec le comportement du CLI. Utilisez les fichiers .qwen/.env si vous devez les définir spécifiquement pour Qwen Code. |
NO_COLOR | Définir sur n’importe quelle valeur pour désactiver toutes les sorties colorées dans le CLI. | |
CLI_TITLE | Définir sur une chaîne de caractères pour personnaliser le titre du CLI. | |
CODE_ASSIST_ENDPOINT | Spécifie le point de terminaison du serveur d’assistance au code. | Utile pour le développement et les tests. |
TAVILY_API_KEY | Votre clé API pour le service de recherche Web Tavily. | Utilisée pour activer la fonctionnalité de l’outil web_search. Exemple : export TAVILY_API_KEY="tvly-your-api-key-here" |
Arguments de ligne de commande
Les arguments passés directement lors de l’exécution de la CLI peuvent remplacer d’autres configurations pour cette session spécifique.
Tableau des Arguments en Ligne de Commande
| Argument | Alias | Description | Valeurs Possibles | Notes |
|---|---|---|---|---|
--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 | Utilisé pour passer un prompt directement à la commande. Cela invoque Qwen Code en mode non interactif. | Votre texte de prompt | Pour des exemples de scripts, utilisez l’indicateur --output-format json afin d’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, et non avant celle-ci. Ne peut pas être utilisé lorsque l’entrée provient d’un pipe stdin. Exemple : qwen -i "explain this code" |
--output-format | -o | Spécifie le format de la sortie CLI en mode non interactif. | text, json, stream-json | text : (Par défaut) La sortie standard lisible par l’homme. json : Une sortie JSON lisible par machine émise à la fin de l’exécution. stream-json : Messages JSON diffusés au fur et à mesure de leur apparition pendant l’exécution. Pour une sortie structurée et le scripting, utilisez l’indicateur --output-format json ou --output-format stream-json. Voir Mode Headless pour plus d’informations. |
--input-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 de ligne de commande. stream-json : Protocole de message JSON via stdin pour une communication bidirectionnelle. Obligation : --input-format stream-json nécessite que --output-format stream-json soit défini. Lors de l’utilisation de stream-json, stdin est réservé aux messages de protocole. Voir Mode Headless pour plus d’informations. | |
--include-partial-messages | Inclut les messages partiels de l’assistant lors de l’utilisation du format de sortie stream-json. Si activé, émet des événements de flux (message_start, content_block_delta, etc.) au fur et à mesure de leur diffusion. | Par défaut : false. Obligation : Nécessite que --output-format stream-json soit défini. Voir Mode Headless pour plus d’informations sur les événements de flux. | ||
--sandbox | -s | Active le mode bac à sable pour cette session. | ||
--sandbox-image | Définit l’URI de l’image du bac à sable. | |||
--debug | -d | Active le mode débogage pour cette session, fournissant une sortie plus verbeuse. | ||
--all-files | -a | Si défini, inclut récursivement tous les fichiers du répertoire courant comme contexte pour le prompt. | ||
--help | -h | Affiche les informations d’aide concernant 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 : Analyse uniquement — ne modifie pas les fichiers ni n’exécute de commandes. default : Nécessite une approbation pour les modifications de fichiers ou les commandes shell (comportement par défaut). auto-edit : Approuve automatiquement les outils d’édition (edit, write_file) tout en demandant une validation pour les autres. yolo : Approuve automatiquement tous les appels d’outils (équivalent à --yolo). Ne peut pas être utilisé conjointement avec --yolo. Utilisez --approval-mode=yolo au lieu de --yolo pour la nouvelle approche unifiée. Exemple : qwen --approval-mode auto-editVoir plus sur Mode d’approbation. | |
--allowed-tools | Liste séparée par des virgules des noms d’outils qui contourneront la boîte de dialogue de confirmation. | Noms d’outils | Exemple : qwen --allowed-tools "Shell(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 point de terminaison 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 (grpc ou http). | Par défaut : grpc. Voir télémétrie pour plus d’informations. | ||
--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 | -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 des répertoires | Peut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules. Un maximum de 5 répertoires peuvent être ajoutés. Exemple : --include-directories /path/to/project1,/path/to/project2 ou --include-directories /path/to/project1 --include-directories /path/to/project2 | |
--screen-reader | Active le mode lecteur d’écran, qui ajuste l’interface utilisateur textuelle 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 à des fins de débogage et d’analyse. | Cet indicateur remplace le paramètre enableOpenAILogging dans settings.json. | ||
--openai-logging-dir | Définit un chemin personnalisé pour les journaux d’appels API OpenAI. | Chemin du répertoire | Cet indicateur remplace le paramètre openAILoggingDir dans settings.json. Prend en charge les chemins absolus, relatifs et l’expansion ~. Exemple : qwen --openai-logging-dir "~/qwen-logs" --openai-logging | |
--tavily-api-key | Définit la clé API Tavily pour la fonctionnalité de recherche Web pour cette session. | Clé API | 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 l’interface en ligne de commande (CLI), les fichiers de contexte (nommés par défaut QWEN.md, mais configurables via le paramètre context.fileName) sont essentiels pour définir le contexte d’instruction (également appelé « mémoire »). Cette fonctionnalité puissante vous permet de fournir au modèle d’intelligence artificielle des instructions spécifiques au projet, des guides de style de codage ou toute autre information pertinente, rendant ainsi ses réponses plus adaptées et précises selon vos besoins. L’interface inclut des éléments d’interface utilisateur, comme un indicateur dans le pied de page indiquant le nombre de fichiers de contexte chargés, afin de vous informer sur le contexte actif.
- Objectif : Ces fichiers Markdown contiennent des instructions, des directives ou des informations contextuelles que vous souhaitez que le modèle Qwen prenne en compte durant vos interactions. Le système est conçu pour gérer ce contexte d’instruction de manière hiérarchique.
Exemple de Contenu d’un Fichier Contextuel (ex. QWEN.md)
Voici un exemple conceptuel du contenu qu’un fichier contextuel à la racine d’un projet TypeScript pourrait contenir :
# Projet : Ma Superbe Bibliothèque TypeScript
## Instructions Générales :
- Lors de la génération de nouveau code TypeScript, veuillez suivre le style de codage existant.
- Assurez-vous que toutes les nouvelles fonctions et classes possèdent des commentaires JSDoc.
- Privilégiez les paradigmes de programmation fonctionnelle lorsque cela est approprié.
- Tout le code doit être compatible avec TypeScript 5.0 et Node.js 20+.
## Style de Codage :
- Utilisez 2 espaces pour l'indentation.
- Les noms d'interfaces doivent être préfixés par `I` (ex. : `IUserService`).
- Les membres privés des classes doivent être préfixés par un tiret bas (`_`).
- Utilisez toujours l'égalité stricte (`===` et `!==`).
## Composant Spécifique : `src/api/client.ts`
- Ce fichier gère toutes les requêtes API sortantes.
- Lors de l'ajout de nouvelles fonctions d'appel API, assurez-vous qu'elles incluent une gestion d'erreurs et une journalisation robustes.
- Utilisez l'utilitaire `fetchWithRetry` existant pour toutes les requêtes GET.Concernant les dépendances :
- Évitez d’introduire de nouvelles dépendances externes sauf si cela est absolument nécessaire.
- Si une nouvelle dépendance est requise, veuillez en indiquer la raison.
Cet exemple montre comment vous pouvez fournir un contexte général sur le projet, des conventions de codage spécifiques, ainsi que des notes concernant des fichiers ou composants particuliers. Plus vos fichiers de contexte sont pertinents et précis, mieux l'IA pourra vous assister. L'utilisation de fichiers de contexte spécifiques au projet est fortement encouragée afin d'établir des conventions et un contexte clairs.
- **Chargement hiérarchique et priorité :** L'interface en ligne de commande (CLI) implémente un système de mémoire hiérarchique sophistiqué en chargeant les fichiers de contexte (par exemple, `QWEN.md`) depuis plusieurs emplacements. Le contenu des fichiers situés plus bas dans cette liste (plus spécifiques) remplace généralement ou complète celui des fichiers situés plus haut (plus généraux). L'ordre exact de concaténation et le contexte final peuvent être consultés à l'aide de la commande `/memory show`. L'ordre typique de chargement est le suivant :
1. **Fichier de contexte global :**
- Emplacement : `~/.qwen/<nom-du-fichier-de-contexte-configuré>` (par exemple, `~/.qwen/QWEN.md` dans votre répertoire utilisateur).
- Portée : Fournit des instructions par défaut pour tous vos projets.
2. **Fichiers de contexte à la racine du projet et dans ses ancêtres :**
- Emplacement : La CLI recherche le fichier de contexte configuré dans le répertoire de travail actuel, puis dans chaque répertoire parent jusqu'à atteindre soit la racine du projet (identifiée par un dossier `.git`), soit votre répertoire personnel.
- Portée : Fournit un contexte pertinent pour l'ensemble du projet ou une grande partie de celui-ci.
3. **Fichiers de contexte dans les sous-répertoires (contextuels/locaux) :**
- Emplacement : La CLI analyse également la présence du fichier de contexte configuré dans les sous-répertoires _situés sous_ le répertoire de travail actuel (en respectant les motifs d'exclusion courants tels que `node_modules`, `.git`, etc.). Par défaut, cette recherche est limitée à 200 répertoires, mais elle peut être ajustée via le paramètre `context.discoveryMaxDirs` dans votre fichier `settings.json`.
- Portée : Permet d'inclure des instructions très spécifiques liées à un composant, module ou section particulière de votre projet.
- **Concaténation et indication dans l’interface utilisateur :** Les contenus de tous les fichiers de contexte trouvés sont concaténés (avec des séparateurs indiquant leur origine et leur chemin) et inclus dans l'invite système. Le pied de page de la CLI affiche le nombre total de fichiers de contexte chargés, offrant ainsi un repère visuel rapide sur le contexte instructionnel actif.
- **Importation de contenu :** Vous pouvez modulariser vos fichiers de contexte en important d'autres fichiers Markdown à l’aide de la syntaxe `@chemin/vers/fichier.md`. Pour plus de détails, voir la [documentation du processeur d’importation mémoire](../configuration/memory).
- **Commandes de gestion de la mémoire :**
- Utilisez `/memory refresh` pour forcer un nouveau scan et recharger tous les fichiers de contexte depuis tous les emplacements configurés. Cela met à jour le contexte instructionnel de l'IA.
- Utilisez `/memory show` pour afficher le contexte instructionnel combiné actuellement chargé, ce qui vous permet de vérifier la hiérarchie et le contenu utilisé par l'IA.
- Consultez la [documentation des commandes](../features/commands) pour obtenir tous les détails concernant la commande `/memory` et ses sous-commandes (`show` et `refresh`).
En comprenant et en exploitant ces couches de configuration ainsi que la nature hiérarchique des fichiers de contexte, vous pouvez efficacement gérer la mémoire de l'IA et adapter les réponses de Qwen Code à vos besoins et projets spécifiques.
## Bac à sable
Qwen Code peut exécuter des opérations potentiellement non sûres (comme des commandes shell et des modifications de fichiers) dans un environnement bac à sable pour protéger votre système.
Le [Bac à sable](../features/sandbox) est désactivé par défaut, mais vous pouvez l'activer de plusieurs façons :
- En utilisant le drapeau `--sandbox` ou `-s`.
- En définissant la variable d'environnement `GEMINI_SANDBOX`.
- Le bac à sable est activé par défaut lorsque vous utilisez `--yolo` ou `--approval-mode=yolo`.
Par défaut, il utilise une image Docker pré-construite `qwen-code-sandbox`.
Pour des besoins spécifiques au projet en matière de mise en bac à sable, vous pouvez créer un Dockerfile personnalisé à l'emplacement `.qwen/sandbox.Dockerfile` dans le répertoire racine de votre projet. Ce Dockerfile peut être basé sur l'image de base du bac à sable :
FROM qwen-code-sandbox
Ajoutez vos dépendances ou configurations personnalisées ici
Par exemple :
RUN apt-get update && apt-get install -y some-package
# COPY ./my-config /app/my-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 l’interface en ligne de commande (CLI) est utilisée, à identifier les problèmes courants et à prioriser les nouvelles fonctionnalités.
Ce que nous collectons :
- Appels d’outils : Nous enregistrons les noms des outils appelés, qu’ils réussissent ou échouent, ainsi que le temps nécessaire à leur exécution. Nous ne collectons pas les arguments transmis aux outils ni les données renvoyées par ceux-ci.
- Requêtes API : Nous enregistrons le modèle utilisé pour chaque requête, la durée de celle-ci et son succès ou échec. Nous ne collectons pas le contenu des invites ou des réponses.
- Informations sur la session : Nous collectons des informations concernant la configuration de l’interface CLI, telles que les outils activés et le mode d’approbation.
Ce que nous ne collectons PAS :
- Informations personnelles identifiables (PII) : Nous ne collectons aucune information personnelle telle que votre nom, votre adresse e-mail ou vos clés API.
- Contenu des invites et des réponses : Nous n’enregistrons pas le contenu de vos invites ou des réponses du modèle.
- Contenu des fichiers : Nous n’enregistrons pas le contenu des fichiers lus ou écrits par l’interface CLI.
Comment désactiver cette collecte :
Vous pouvez à tout moment désactiver la collecte des statistiques d’utilisation en définissant la propriété usageStatisticsEnabled sur false dans la catégorie privacy de votre fichier settings.json :
{
"privacy": {
"usageStatisticsEnabled": false
}
}Lorsque les statistiques d’utilisation sont activées, les événements sont envoyés à un point de terminaison de collecte RUM d’Alibaba Cloud.