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 de 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 selon l’ordre de priorité suivant (les numéros inférieurs sont remplacé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 configuration système par défaut | Paramètres par défaut au niveau du système qui peuvent être remplacés par d’autres fichiers de configuration |
| 3 | Fichier de paramètres utilisateur | Paramètres globaux pour l’utilisateur actuel |
| 4 | Fichier de paramètres de projet | Paramètres spécifiques au projet |
| 5 | Fichier de configuration système | Paramètres au niveau du système qui remplacent tous les autres fichiers de configuration |
| 6 | Variables d’environnement | Variables au niveau du système ou spécifiques à la session, potentiellement chargées à partir de fichiers .env |
| 7 | Arguments de ligne de commande | Valeurs transmises lors du lancement du CLI |
Fichiers de configuration
Qwen Code utilise des fichiers de configuration JSON pour la configuration persistante. Il existe quatre emplacements pour ces fichiers :
| Type de fichier | Emplacement | Portée |
|---|---|---|
| Fichier des valeurs par défaut du 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 remplacé en utilisant la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH. | Fournit une couche de base de paramètres par défaut au niveau 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 pour l’utilisateur actuel. |
| Fichier de paramètres de projet | .qwen/settings.json dans le répertoire racine de votre projet. | S’applique uniquement lors de l’exécution de Qwen Code à partir de ce projet spécifique. Les paramètres du projet remplacent 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 remplacé en utilisant 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 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 automatiquement résolues lorsque les paramètres seront chargés. 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 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 (par exemple
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Compétences d’agent (expérimental) sous
.qwen/skills/(chaque compétence est un répertoire contenant un fichierSKILL.md).
Paramètres disponibles dans settings.json
Les paramètres sont organisés en 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.
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.gitCoAuthor | boolean | Ajouter automatiquement un en-tête Co-authored-by aux messages de commit Git lorsque les commits sont effectués via Qwen Code. | true |
general.checkpointing.enabled | boolean | Activer la sauvegarde ponctuelle des sessions pour la récupération. | false |
output
| Paramètre | Type | Description | Valeur par défaut | Valeurs possibles |
|---|---|---|---|---|
output.format | string | Le format de sortie de l’interface en ligne de commande. | "text" | "text", "json" |
ui
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
ui.theme | chaîne de caractères | Le thème de couleurs pour l’interface utilisateur. Voir Thèmes pour les options disponibles. | undefined |
ui.customThemes | objet | Définitions de thèmes personnalisés. | {} |
ui.hideWindowTitle | booléen | Masquer la barre de titre de la fenêtre. | false |
ui.hideTips | booléen | Masquer les conseils utiles dans l’interface utilisateur. | false |
ui.hideBanner | booléen | Masquer la bannière de l’application. | false |
ui.hideFooter | booléen | Masquer le pied de page de l’interface utilisateur. | false |
ui.showMemoryUsage | booléen | Afficher les informations d’utilisation de la mémoire dans l’interface utilisateur. | false |
ui.showLineNumbers | booléen | Afficher les numéros de ligne dans les blocs de code dans la sortie CLI. | true |
ui.showCitations | booléen | Afficher les citations pour le texte généré dans le chat. | true |
enableWelcomeBack | booléen | Afficher la boîte de dialogue de bienvenue lors du retour dans un projet avec un historique de conversation. Lorsque cette option est activée, Qwen Code détectera automatiquement si vous revenez dans 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 poursuivre 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 | booléen | Désactiver les phrases de chargement pour l’accessibilité. | false |
ui.accessibility.screenReader | booléen | Active le mode lecteur d’écran, qui ajuste l’interface utilisateur textuelle pour une meilleure compatibilité avec les lecteurs d’écran. | false |
ui.customWittyPhrases | tableau de chaînes | Une liste de phrases personnalisées à afficher pendant les états de chargement. Lorsqu’elle est fournie, la CLI parcourra ces phrases au lieu de celles 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 | Si l’utilisateur a vu la suggestion d’intégration IDE. | false |
confidentialité
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Activer 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.summarizeToolOutput | object | Active ou désactive la synthèse de la sortie des outils. Vous pouvez spécifier le budget en jetons pour la synthèse en utilisant 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 | 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 et disableCacheControl, ainsi que les paramètres de réglage fins sous samplingParams (par exemple temperature, top_p, max_tokens). Laisser 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 des discussions en pourcentage de la limite totale de jetons du modèle. Il s’agit d’une valeur comprise 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 jetons. Utilisez 0 pour désactiver entièrement la compression. | 0.7 |
model.skipNextSpeakerCheck | boolean | Ignorer 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 des flux de travail légitimes. Activez cette option si vous rencontrez fréquemment des interruptions de détection de boucle fausses. | false |
model.skipStartupContext | boolean | Ignore l’envoi du contexte de démarrage de l’espace de travail (résumé de l’environnement et confirmation) au début de chaque session. Activez cette option si vous préférez fournir le contexte manuellement ou si vous souhaitez économiser des jetons au démarrage. | false |
model.enableOpenAILogging | boolean | Active la journalisation des appels API OpenAI pour le débogage et l’analyse. Lorsqu’elle est activée, les requêtes et réponses API sont enregistrées dans des fichiers JSON. | false |
model.openAILoggingDir | string | Chemin personnalisé du répertoire pour les journaux 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 à partir du 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"- Journalise dans le répertoire~/qwen-logs"./custom-logs"- Journalise dans./custom-logsrelativement au répertoire actuel"/tmp/openai-logs"- Journalise 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 maximum de répertoires à parcourir pour rechercher 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 désigner le répertoire personnel de l’utilisateur. Ce paramètre peut être combiné avec l’option de ligne de commande --include-directories. | [] |
context.loadFromIncludeDirectories | booléen | Contrôle le comportement de la commande /memory refresh. Si défini à true, les fichiers QWEN.md doivent être chargés depuis tous les répertoires ajoutés. Si défini à false, les fichiers QWEN.md doivent être chargés uniquement depuis le répertoire actuel. | 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 de fichiers par nom dans l’arborescence actuelle lors de la complétion des préfixes @ dans l’invite. | true |
context.fileFiltering.disableFuzzySearch | booléen | Lorsque la valeur est 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 |
Dépannage des performances de recherche de fichiers
Si vous rencontrez des problèmes de performance avec la recherche de fichiers (par exemple, avec les complétions @), particulièrement dans des projets contenant un très grand nombre de fichiers, voici quelques éléments à essayer dans l’ordre des recommandations :
- Utilisez
.qwenignore: Créez un fichier.qwenignoreà la racine de votre projet pour exclure les répertoires contenant un grand nombre de fichiers que vous n’avez pas besoin de référencer (par exemple, les artefacts de build, les journaux,node_modules). Réduire le nombre total de fichiers parcourus est la manière la plus efficace d’améliorer les performances. - Désactivez la recherche floue : Si ignorer les fichiers n’est pas suffisant, vous pouvez désactiver la recherche floue en définissant
disableFuzzySearchàtruedans votre fichiersettings.json. Cela utilisera un algorithme de correspondance plus simple et non flou, qui peut être plus rapide. - Désactivez la recherche récursive de fichiers : En dernier recours, vous pouvez désactiver complètement la recherche récursive de fichiers en définissant
enableRecursiveFileSearchàfalse. Ce sera l’option la plus rapide car elle évite un parcours récursif de votre projet. Cependant, cela signifie que vous devrez taper le chemin complet des fichiers lorsque vous utilisez les complétions@.
outils
| Paramètre | Type | Description | Valeur par défaut | Notes |
|---|---|---|---|---|
tools.sandbox | booléen ou chaîne | Environnement d’exécution sandbox (peut être un booléen ou un chemin sous forme de chaîne). | undefined | |
tools.shell.enableInteractiveShell | booléen | Utilise node-pty pour une expérience shell interactive. Le repli vers child_process s’applique toujours. | false | |
tools.core | tableau de chaînes | Permet de restreindre l’ensemble des outils intégrés à l’aide d’une liste blanche. Vous pouvez également spécifier des restrictions spécifiques à certaines commandes pour les outils qui les prennent en charge, 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 à certaines commandes pour les outils qui les prennent en charge, 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 sont basées sur une correspondance de chaîne simple et peuvent être facilement 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 approuvé. 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 de noms d’outils qui contourneront la boîte de dialogue de confirmation. Cela est utile pour les outils en lesquels vous avez confiance et que vous utilisez fréquemment. Par exemple, ["run_shell_command(git)", "run_shell_command(npm test)"] passera la boîte de dialogue de confirmation pour exécuter n’importe quelle commande 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 (analyse uniquement, ne modifie pas les fichiers ni n’exécute de commandes), default (nécessite 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 | chaîne | Commande à exécuter pour la découverte d’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 name 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 sur 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 | Utilise ripgrep pour la recherche de contenu de fichiers au lieu de l’implémentation de repli. Fournit de meilleures performances de recherche. | true | |
tools.useBuiltinRipgrep | booléen | Utilise le binaire ripgrep intégré. Lorsque cette valeur est 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 | Active le troncage des sorties d’outils volumineuses. | true | Nécessite un redémarrage : Oui |
tools.truncateToolOutputThreshold | nombre | 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 | nombre | Nombre maximum de lignes ou d’entrées conservées lors du troncage de la sortie de l’outil. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 1000 | Nécessite un redémarrage : 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 la valeur est true, l’interface en ligne de commande contournera 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 | Liste blanche de serveurs MCP autorisés. Vous permet de spécifier une liste de noms de serveurs MCP qui devraient être rendus disponibles pour le modèle. Cela peut être utilisé pour restreindre l’ensemble des serveurs MCP auxquels se connecter. Notez que ceci sera ignoré si --allowed-mcp-server-names est défini. | undefined |
mcp.excluded | tableau de chaînes de caractères | Liste noire de serveurs MCP à exclure. Un serveur figurant à la fois dans mcp.excluded et mcp.allowed est exclu. Notez que ceci 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 sur les noms de serveurs MCP, qui peuvent être modifiés. Si vous êtes un administrateur système cherchant à empêcher les utilisateurs de contourner cela, envisagez de configurer les mcpServers au niveau des paramètres système afin que l’utilisateur ne puisse pas configurer ses propres serveurs MCP. Cela ne devrait pas être utilisé comme un mécanisme de sécurité hermétique.
sécurité
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
security.folderTrust.enabled | booléen | Paramètre pour suivre si la confiance du dossier est activée. | false |
security.auth.selectedType | chaîne | Le type d’authentification actuellement sélectionné. | undefined |
security.auth.enforcedType | chaîne | Le type d’authentification requis (utile pour les entreprises). | undefined |
security.auth.useExternal | booléen | 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 à partir des 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 | objet | Configuration pour la commande de rapport de bogue. Remplace l’URL par défaut pour 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 |
Note 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é pour 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__actualToolName) 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 un des paramètres 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 | chaîne | La commande à exécuter pour démarrer le serveur MCP via l’entrée/sortie standard. | Oui |
mcpServers.<SERVER_NAME>.args | tableau de chaînes | Arguments à passer à la commande. | Oui |
mcpServers.<SERVER_NAME>.env | objet | Variables d’environnement à définir pour le processus du serveur. | Oui |
mcpServers.<SERVER_NAME>.cwd | chaîne | Le répertoire de travail dans lequel démarrer le serveur. | Oui |
mcpServers.<SERVER_NAME>.url | chaîne | L’URL d’un serveur MCP qui utilise les Server-Sent Events (SSE) pour la communication. | Oui |
mcpServers.<SERVER_NAME>.httpUrl | chaîne | L’URL d’un serveur MCP qui utilise le HTTP diffusable pour la communication. | Oui |
mcpServers.<SERVER_NAME>.headers | objet | Une table de headers HTTP à envoyer avec les requêtes vers url ou httpUrl. | Oui |
mcpServers.<SERVER_NAME>.timeout | nombre | Délai d’attente en millisecondes pour les requêtes vers ce serveur MCP. | Oui |
mcpServers.<SERVER_NAME>.trust | booléen | Faire confiance à ce serveur et ignorer toutes les confirmations d’appel d’outils. | Oui |
mcpServers.<SERVER_NAME>.description | chaîne | Une brève description du serveur, qui peut ê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 spécifié, seuls les outils listés ici seront disponibles depuis ce serveur (comportement de 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 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. Note : excludeTools a priorité sur includeTools - si un outil figure dans les deux listes, il sera exclu. | Oui |
télémétrie
Configure la journalisation et la collecte des métriques pour Qwen Code. Pour plus d’informations, consultez télémétrie.
| Paramètre | Type | Description | Valeur par 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. Les valeurs prises en charge sont 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 ou non le contenu des invites 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 de settings.json
Voici un exemple de fichier settings.json avec la structure imbriquée, nouvelle à partir de la version 0.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,
"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 stocké dans un fichier nommé
shell_history.
Variables d’environnement et fichiers .env
Les variables d’environnement constituent un moyen courant de configurer les applications, en particulier pour les informations sensibles (comme les jetons) ou pour les paramètres qui peuvent varier entre les environnements.
Qwen Code peut charger automatiquement les variables d’environnement à partir des fichiers .env.
Pour les variables liées à l’authentification (comme OPENAI_*) et l’approche recommandée utilisant .qwen/.env, consultez la section Authentification.
Exclusion des 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 la CLI. Les variables provenant des fichiers .qwen/.env ne sont jamais exclues. Vous pouvez personnaliser ce comportement en utilisant le paramètre advanced.excludedEnvVars dans votre fichier settings.json.
Tableau des variables d’environnement
| Variable | Description | Notes |
|---|---|---|
GEMINI_TELEMETRY_ENABLED | Définir à true ou 1 pour activer la télémétrie. Toute autre valeur est considérée comme la désactivant. | 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 à true ou 1 pour activer ou désactiver l’enregistrement des invites utilisateur. Toute autre valeur est considérée comme la désactivant. | Remplace le paramètre telemetry.logPrompts. |
GEMINI_TELEMETRY_OUTFILE | Définit le chemin du fichier vers lequel écrire la télémétrie lorsque la cible est local. | Remplace le paramètre telemetry.outfile. |
GEMINI_TELEMETRY_USE_COLLECTOR | Définir à true ou 1 pour activer ou désactiver l’utilisation d’un collecteur OTLP externe. Toute autre valeur est considérée comme la désactivant. | 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) Active 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 par le CLI lui-même) Définir à true ou 1 pour activer la journalisation de débogage détaillée, ce qui peut être utile pour le dépannage. | Remarque : Ces variables sont automatiquement exclues des fichiers .env du projet par défaut pour éviter les interférences avec le comportement du CLI. Utilisez les fichiers .qwen/.env si vous devez définir ces variables spécifiquement pour Qwen Code. |
NO_COLOR | Définir à n’importe quelle valeur pour désactiver toutes les sorties colorées dans le CLI. | |
CLI_TITLE | Définir à une chaîne pour personnaliser le titre du CLI. | |
CODE_ASSIST_ENDPOINT | Spécifie le point de terminaison pour le serveur d’assistance de code. | Ceci est 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-votre-clé-api-ici" |
Arguments de ligne de commande
Les arguments passés directement lors de l’exécution du CLI peuvent remplacer d’autres configurations pour cette session spécifique.
Tableau des arguments de 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 transmettre directement une invite à la commande. Cela invoque Qwen Code en mode non interactif. | Votre texte d’invite | Pour les exemples de scripts, utilisez l’option --output-format json pour obtenir une sortie structurée. |
--prompt-interactive | -i | Démarre une session interactive avec l’invite fournie comme entrée initiale. | Votre texte d’invite | L’invite est traitée dans la session interactive, pas avant celle-ci. Ne peut pas être utilisée lors de l’envoi d’entrée depuis stdin. Exemple : qwen -i "explain this code" |
--output-format | -o | Spécifie le format de la sortie CLI pour le mode non interactif. | text, json, stream-json | text : (Par défaut) La sortie standard lisible par l’homme. json : Une sortie JSON lisible par la machine émise à la fin de l’exécution. stream-json : Messages JSON en streaming émis au fur et à mesure de leur occurrence pendant l’exécution. Pour une sortie structurée et des scripts, utilisez l’option --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 arguments de ligne de commande. stream-json : Protocole de message JSON via stdin pour une communication bidirectionnelle. Condition : --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é pour les messages de protocole. Voir Mode Headless pour plus d’informations. | |
--include-partial-messages | Inclure les messages partiels de l’assistant lors de l’utilisation du format de sortie stream-json. Lorsqu’activé, émet des événements de flux (message_start, content_block_delta, etc.) au fur et à mesure de leur occurrence pendant le streaming. | Par défaut : false. Condition : 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 sandbox pour cette session. | ||
--sandbox-image | Définit l’URI de l’image sandbox. | |||
--debug | -d | Active le mode débogage pour cette session, fournissant une sortie plus détaillée. | ||
--all-files | -a | Si défini, inclut récursivement tous les fichiers du répertoire courant comme contexte pour l’invite. | ||
--help | -h | Affiche les informations d’aide sur 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 | Définit le mode d’approbation pour les appels d’outils. | plan, default, auto-edit, yolo | Modes supportés : plan : Analyse uniquement—ne modifie pas les fichiers ni n’exécute de commandes. default : Nécessite l’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 confirmation 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 à la place de --yolo pour la nouvelle approche unifiée. Exemple : qwen --approval-mode auto-editVoir plus sur Mode d’approbation. | |
--allowed-tools | Une liste d’outils séparés par des virgules 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 la 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 l’enregistrement des invites pour la télémétrie. | Voir télémétrie pour plus d’informations. | ||
--checkpointing | Active la sauvegarde ponctuelle. | |||
--experimental-acp | Active le mode ACP (Agent Control Protocol). Utile pour les intégrations IDE/éditeur comme Zed. | Expérimental. | ||
--experimental-skills | Active les compétences d’agent expérimentales (enregistre l’outil skill et charge les compétences depuis .qwen/skills/ et ~/.qwen/skills/). | Expérimental. | ||
--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 le support multi-répertoires. | Chemins des répertoires | Peut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules. 5 répertoires peuvent être ajoutés au maximum. 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 l’enregistrement des appels API OpenAI pour le débogage et l’analyse. | Cette option remplace le paramètre enableOpenAILogging dans settings.json. | ||
--openai-logging-dir | Définit un chemin de répertoire personnalisé pour les journaux API OpenAI. | Chemin du répertoire | Cette option remplace le paramètre openAILoggingDir dans settings.json. Prend en charge les chemins absolus, relatifs et l’expansion de ~. 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 instructif hiérarchique)
Bien que ne constituant pas strictement une configuration du comportement du CLI, les fichiers de contexte (nommés par défaut QWEN.md mais configurables via le paramètre context.fileName) sont cruciaux pour configurer le contexte instructif (é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 à vos besoins. Le CLI inclut des éléments d’interface utilisateur, tels qu’un indicateur dans le pied de page montrant le nombre de fichiers de contexte chargés, afin de vous tenir informé du contexte actif.
- Objectif : Ces fichiers Markdown contiennent des instructions, des lignes directrices 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 instructif de manière hiérarchique.
Exemple de contenu de fichier de contexte (par exemple QWEN.md)
Voici un exemple conceptuel du contenu que pourrait avoir un fichier de contexte à la racine d’un projet TypeScript :
# Projet : Ma fantastique 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 disposent de commentaires JSDoc.
- Préférez les paradigmes de programmation fonctionnelle lorsque c'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` (par exemple, `IUserService`).
- Les membres privés des classes doivent être préfixés par un trait de soulignement (`_`).
- 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 existant `fetchWithRetry` pour toutes les requêtes GET.À propos des 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 indiquer la raison.
Cet exemple montre comment vous pouvez fournir un contexte général sur le projet, des conventions de codage spécifiques, et même des notes concernant des fichiers ou composants particuliers. Plus vos fichiers de contexte sont pertinents et précis, mieux l'IA pourra vous aider. La création de fichiers de contexte spécifiques au projet est fortement encouragée pour établir des conventions et du contexte.
- **Chargement hiérarchique et priorité :** La 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 ou complète généralement le contenu 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 de chargement typique 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 personnel).
- Portée : Fournit des instructions par défaut pour tous vos projets.
2. **Fichiers de contexte racine du projet et ancêtres :**
- Emplacement : La CLI recherche le fichier de contexte configuré dans le répertoire de travail actuel, puis dans chaque répertoire parent jusqu'au répertoire racine du projet (identifié 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.
3. **Fichiers de contexte des sous-répertoires (contextuels/locaux) :**
- Emplacement : La CLI recherche également le fichier de contexte configuré dans les sous-répertoires _situés sous_ le répertoire de travail actuel (en respectant les motifs d'ignorance courants comme `node_modules`, `.git`, etc.). La profondeur de cette recherche est limitée à 200 répertoires par défaut, mais peut être configurée via le paramètre `context.discoveryMaxDirs` dans votre fichier `settings.json`.
- Portée : Permet des instructions très spécifiques pertinentes pour un composant, module ou sous-section particulière de votre projet.
- **Concaténation et indication dans l'interface :** Le contenu de tous les fichiers de contexte trouvés est concaténé (avec des séparateurs indiquant leur origine et leur chemin) et fourni dans le cadre de l'invite 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 d'instructions 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, consultez la [documentation du processeur d'importation de mémoire](../configuration/memory).
- **Commandes pour la 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 d'instructions de l'IA.
- Utilisez `/memory show` pour afficher le contexte d'instructions combiné actuellement chargé, vous permettant de vérifier la hiérarchie et le contenu utilisé par l'IA.
- Consultez la [documentation des commandes](../features/commands) pour plus de détails sur la commande `/memory` et ses sous-commandes (`show` et `refresh`).
En comprenant et en utilisant ces couches de configuration et la nature hiérarchique des fichiers de contexte, vous pouvez gérer efficacement la mémoire de l'IA et adapter les réponses de Qwen Code à vos besoins et projets spécifiques.
## Sandbox
Qwen Code peut exécuter des opérations potentiellement dangereuses (comme des commandes shell et des modifications de fichiers) au sein d'un environnement sandboxé pour protéger votre système.
Le [Sandbox](../features/sandbox) est désactivé par défaut, mais vous pouvez l'activer de plusieurs façons :
- En utilisant l'option `--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 spécifiques de sandboxing liés à votre projet, vous pouvez créer un fichier Docker personnalisé à l'emplacement `.qwen/sandbox.Dockerfile` à la racine de votre projet. Ce Dockerfile peut être basé sur l'image de base du sandbox :
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 du 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 enregistrons les noms des outils appelés, s’ils réussissent ou échouent, et le temps d’exécution. Nous ne collectons pas les arguments passés aux outils ni les données qu’ils renvoient.
- Requêtes API : Nous enregistrons le modèle utilisé pour chaque requête, la durée de la requête et si elle a abouti. Nous ne collectons pas le contenu des invites ou des réponses.
- Informations de session : Nous collectons des informations sur la configuration de la 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, comme 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 les réponses du modèle.
- Contenu des fichiers : Nous n’enregistrons pas le contenu des fichiers lus ou écrits par la CLI.
Comment désactiver :
Vous pouvez désactiver à tout moment la collecte des statistiques d’utilisation en définissant la propriété usageStatisticsEnabled à 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 collecte Alibaba Cloud RUM.