Qwen Code Configuration
Authentification / Clés API : L’authentification (clé API, Plan de codage Alibaba Cloud) 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 les variables d’environnement, les arguments de ligne de commande et les 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 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 paramètres système par défaut | Paramètres système généraux par défaut, 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 du projet | Paramètres spécifiques au projet |
| 5 | Fichier de paramètres système | Paramètres système qui remplacent tous les autres fichiers |
| 6 | Variables d’environnement | Variables système ou de session, potentiellement chargées depuis des fichiers .env |
| 7 | Arguments de ligne de commande | Valeurs passées lors du lancement de l’interface en ligne de commande |
Fichiers de paramètres
Qwen Code utilise des fichiers JSON pour la configuration persistante. Il existe quatre emplacements pour ces fichiers :
| Type de fichier | Emplacement | Portée |
|---|---|---|
| Fichier de paramètres système par défaut | Linux : /etc/qwen-code/system-defaults.jsonWindows : C:\ProgramData\qwen-code\system-defaults.jsonmacOS : /Library/Application Support/QwenCode/system-defaults.json Le chemin peut être modifié via la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH. | Fournit une couche de base de paramètres système par défaut. Ces paramètres ont la priorité la plus basse et sont destinés à être remplacés par les paramètres utilisateur, projet ou de remplacement système. |
| Fichier de paramètres utilisateur | ~/.qwen/settings.json (où ~ est votre répertoire utilisateur). | S’applique à toutes les sessions Qwen Code pour l’utilisateur actuel. |
| Fichier de paramètres du projet | .qwen/settings.json dans le répertoire racine de votre projet. | S’applique uniquement lorsque vous exécutez Qwen Code 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. Peut être utile pour les administrateurs système en entreprise souhaitant contrôler les configurations Qwen Code des utilisateurs. |
Remarque concernant les variables d’environnement dans les paramètres : Les valeurs chaîne dans vos fichiers settings.json peuvent référencer des variables d’environnement en utilisant la syntaxe $NOM_VAR ou ${NOM_VAR}. Ces variables seront automatiquement résolues lors du chargement des paramètres. Par exemple, si vous avez une variable d’environnement MY_API_TOKEN, vous pouvez l’utiliser dans settings.json 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, comme :
- Profils sandbox personnalisés (par ex.
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Compétences de l’agent sous
.qwen/skills/(chaque compétence est un répertoire contenant un fichierSKILL.md).
Migration de la configuration
Qwen Code migre automatiquement les paramètres de configuration hérités vers le nouveau format. Les anciens fichiers de paramètres sont sauvegardés avant la migration. Les paramètres suivants ont été renommés d’une dénomination négative (disable*) à une dénomination positive (enable*) :
| Ancien paramètre | Nouveau paramètre | Remarques |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Fusionné en un seul paramètre |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Inversion des valeurs booléennes : Lors de la migration, les valeurs booléennes sont inversées (par ex., disableAutoUpdate: true devient enableAutoUpdate: false).
Politique de consolidation pour disableAutoUpdate et disableUpdateNag
Lorsque les deux paramètres hérités sont présents avec des valeurs différentes, la migration suit cette politique : si l’un ou l’autre de disableAutoUpdate ou disableUpdateNag est true, alors enableAutoUpdate devient false :
disableAutoUpdate | disableUpdateNag | enableAutoUpdate migré |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Paramètres disponibles dans settings.json
Les paramètres sont organisés par catégories. La plupart des paramètres doivent être placés dans leur objet de catégorie de premier niveau correspondant dans votre fichier settings.json. Quelques paramètres de premier niveau comme proxy et plansDirectory restent des clés racines directes pour des raisons de compatibilité.
general
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
general.preferredEditor | string | L’éditeur préféré pour ouvrir les fichiers. | undefined |
general.vimMode | boolean | Activer les raccourcis clavier Vim. | false |
general.enableAutoUpdate | boolean | Activer les vérifications et installations automatiques des mises à jour au démarrage. | true |
general.showSessionRecap | boolean | Afficher automatiquement un récapitulatif d’une ligne « où vous en étiez » lorsque vous revenez dans le terminal après une absence. Désactivé par défaut. Utilisez /recap pour déclencher manuellement, indépendamment de ce paramètre. | false |
general.sessionRecapAwayThresholdMinutes | number | Minutes pendant lesquelles le terminal doit être flou avant qu’un récapitulatif automatique ne se déclenche lors du retour au premier plan. Uniquement utilisé lorsque showSessionRecap est activé. | 5 |
general.gitCoAuthor.commit | boolean | Ajouter un suffixe Co-authored-by aux messages de commit git ET attacher une note git d’attribution IA par fichier (refs/notes/ai-attribution) pour les commits effectués via Qwen Code. La désactivation ignore les deux. | true |
general.gitCoAuthor.pr | boolean | Ajouter une ligne d’attribution Qwen Code aux descriptions de pull request lors de l’exécution de gh pr create. | true |
general.defaultFileEncoding | string | Encodage par défaut pour les nouveaux fichiers. Utilisez "utf-8" (par défaut) pour UTF-8 sans BOM, ou "utf-8-bom" pour UTF-8 avec BOM. Ne modifiez ceci que si votre projet nécessite spécifiquement le BOM. | "utf-8" |
general.cleanupPeriodDays | number | Jours de conservation des sauvegardes de session ~/.qwen/file-history/ utilisées par /rewind. Les sauvegardes plus anciennes sont supprimées par un passage en arrière-plan qui s’exécute au maximum une fois par jour. 0 = rétention minimale (~1 heure) : conserve les sessions touchées dans la dernière heure plus la session active actuelle. Les modifications prennent effet après redémarrage. | 30 |
general.language | enum | Langue de l’interface utilisateur. Utilisez "auto" pour détecter depuis les paramètres système, ou un code de langue (par ex. "zh-CN", "fr"). Des codes personnalisés peuvent être ajoutés en plaçant des fichiers de locale JS dans ~/.qwen/locales/. Voir i18n. Nécessite un redémarrage. | "auto" |
general.outputLanguage | string | Langue de sortie du modèle. Utilisez "auto" pour détecter depuis les paramètres système, ou définissez une langue spécifique. Nécessite un redémarrage. | "auto" |
general.dynamicCommandTranslation | boolean | Activer la traduction par IA des descriptions de commandes dynamiques slash. Lorsque désactivé, les commandes dynamiques conservent leurs descriptions originales et ignorent les appels au modèle de traduction. | false |
output
| Réglage | Type | Description | Défaut | Valeurs possibles |
|---|---|---|---|---|
output.format | string | Le format de la sortie CLI. | "text" | "text", "json" |
output.showTimestamps | boolean | Affiche un horodatage [HH:MM:SS] avant chaque réponse de l’assistant. | false |
ui
| Réglage | Type | Description | Défaut |
|---|---|---|---|
ui.theme | string | Le thème de couleur pour l’interface. Voir Thèmes pour les options disponibles. | "Qwen Dark" |
ui.customThemes | object | Définitions de thèmes personnalisés. | {} |
ui.statusLine | object | Configuration personnalisée de la ligne d’état. Prend en charge les options command, refreshInterval, respectUserColors et hideContextIndicator. Voir Ligne d’état. | undefined |
ui.hideWindowTitle | boolean | Masquer la barre de titre de la fenêtre. | false |
ui.hideTips | boolean | Masquer toutes les astuces (au démarrage et après réponse) dans l’interface. Voir Astuces contextuelles. | false |
ui.hideBanner | boolean | Masquer le logo ASCII de démarrage et le panneau d’informations. Les astuces et la saisie du chat restent affichés sauf si ui.hideTips est également défini. | false |
ui.customBannerTitle | string | Remplace le titre par défaut >_ Qwen Code dans le panneau d’informations de la bannière. Le suffixe de version (vX.Y.Z) est toujours ajouté ; les lignes d’authentification, de modèle et de chemin ne sont pas affectées. Nettoyé ; limité à 80 caractères. | "" |
ui.customBannerSubtitle | string | Ligne de sous-titre optionnelle affichée entre le titre de la bannière et la ligne d’authentification/modèle, à la place de la rangée d’espacement vide. Nettoyé ; limité à 160 caractères. Vide (par défaut) conserve l’espacement vide d’origine. | "" |
ui.customAsciiArt | string | object | Remplace le logo ASCII QWEN dans la bannière. Accepte une chaîne en ligne (utilisée pour les deux niveaux de largeur), { "path": "./brand.txt" } (les chemins relatifs sont résolus par rapport au répertoire du fichier de paramètres propriétaire ; lu une fois au démarrage avec O_NOFOLLOW sur POSIX, limité à 64 Ko), ou { "small": ..., "large": ... } pour une sélection adaptée à la largeur. Nettoyé ; limité à 200 lignes × 200 colonnes par niveau. | undefined |
ui.showLineNumbers | boolean | Affiche les numéros de ligne dans les blocs de code de la sortie CLI. | true |
ui.renderMode | string | Mode d’affichage Markdown par défaut. Utilisez "render" pour des aperçus visuels riches ou "raw" pour afficher le Markdown orienté source par défaut. Basculer pendant une session avec Alt/Option+M ; sur macOS, le terminal doit envoyer Option comme Meta. Voir Rendu Markdown. | "render" |
ui.showCitations | boolean | Affiche les citations pour le texte généré dans le chat. | false |
ui.history.collapseOnResume | boolean | Indique si l’historique doit être réduit par défaut lors de la reprise d’une session. Peut être basculé via /history collapse-on-resume et /history expand-on-resume. | false |
ui.compactMode | boolean | Masque la sortie des outils et la réflexion pour une vue plus épurée. Basculer avec Ctrl+O pendant une session ou via la boîte de dialogue Paramètres. Les invites d’approbation des outils ne sont jamais masquées, même en mode compact. Le paramètre persiste entre les sessions. | false |
ui.shellOutputMaxLines | number | Nombre maximal de lignes de sortie du shell affichées en ligne. Définir sur 0 pour désactiver la limite et afficher la sortie complète. Les lignes masquées sont révélées via l’indicateur +N lignes. Les erreurs, les commandes initiées par l’utilisateur avec le préfixe !, les outils de confirmation et les shells intégrés focalisés affichent toujours la sortie complète. | 5 |
ui.enableWelcomeBack | boolean | Affiche une boîte de dialogue de bienvenue lors du retour à un projet avec un historique de conversation. Lorsqu’il est activé, Qwen Code détecte automatiquement si vous revenez à un projet avec un résumé de projet précédemment généré (.qwen/PROJECT_SUMMARY.md) et affiche une boîte de dialogue vous permettant de continuer votre conversation précédente ou de commencer une nouvelle. Si vous choisissez Démarrer une nouvelle session de chat, ce choix est mémorisé pour le projet actuel jusqu’à ce que le résumé du projet change. Cette fonctionnalité s’intègre avec la commande /summary et la boîte de dialogue de confirmation de sortie. | true |
ui.accessibility.enableLoadingPhrases | boolean | Activer les phrases de chargement (désactiver pour l’accessibilité). | true |
ui.accessibility.screenReader | boolean | Active le mode lecteur d’écran, qui ajuste l’interface TUI pour une meilleure compatibilité avec les lecteurs d’écran. | false |
ui.customWittyPhrases | array of strings | Une liste de phrases personnalisées à afficher pendant les états de chargement. Lorsqu’elle est fournie, le CLI parcourt ces phrases au lieu de celles par défaut. | [] |
ui.showResponseTokensPerSecond | boolean | Affiche une estimation en direct des tokens/seconde à côté du compteur de tokens de réponse pendant le streaming du modèle. Il s’agit d’une indication de vitesse de génération, pas d’une estimation de temps restant ou d’un pourcentage d’achèvement. Prend effet lors de la prochaine session. | false |
ui.enableFollowupSuggestions | boolean | Activer les suggestions de suivi qui prédisent ce que vous voulez taper ensuite après la réponse du modèle. Les suggestions apparaissent comme texte d’espace réservé et sont acceptées avec Tab, Entrée ou Flèche droite (qui remplissent l’entrée — elles ne sont pas soumises automatiquement). Activé par défaut ; définir sur false pour désactiver. | true |
ui.enableCacheSharing | boolean | Utilise des requêtes bifurquées tenant compte du cache pour la génération de suggestions. Réduit les coûts sur les fournisseurs qui prennent en charge la mise en cache des préfixes (expérimental). | true |
ui.enableSpeculation | boolean | Exécute de manière spéculative les suggestions acceptées avant la soumission. Les résultats apparaissent instantanément lorsque vous acceptez (expérimental). | false |
ide
| Setting | Type | Description | Default |
|---|---|---|---|
ide.enabled | boolean | Activer le mode d’intégration IDE. | false |
ide.hasSeenNudge | boolean | Indique si l’utilisateur a vu l’incitation à l’intégration IDE. | false |
privacy
| Setting | Type | Description | Default |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Activer la collecte des statistiques d’utilisation. | true |
model
| Setting | Type | Description | Default |
|---|---|---|---|
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.maxWallTimeSeconds | number | Budget de temps réel pour les exécutions sans tête / non supervisées, en secondes. -1 signifie illimité. Modifiable par invocation via --max-wall-time, qui nécessite une durée positive (90, 30s, 5m, 1h, 1.5h) ; le minimum est de 1 seconde — les valeurs inférieures à la seconde (500ms, 0.5) sont rejetées comme des fautes de frappe. Omettez le drapeau pour utiliser ce réglage. Se termine avec le code de sortie 55 lorsque dépassé. | -1 |
model.maxToolCalls | number | Budget cumulé d’appels d’outil pour une exécution (compte chaque outil exécuté, succès ou échec ; structured_output sous --json-schema est exempté). -1 signifie illimité ; 0 signifie « aucun appel d’outil autorisé ». Plafonné à 1 000 000 pour détecter les fautes de frappe. Modifiable via --max-tool-calls. Se termine avec le code de sortie 55 lorsque dépassé. | -1 |
model.generationConfig | object | Remplacements avancés passés au générateur de contenu sous-jacent. Prend en charge des contrôles de requête tels que timeout, maxRetries, enableCacheControl, splitToolMedia (par défaut true ; divise les médias retournés par l’outil — y compris les images lues par le read_file intégré — en un message utilisateur de suivi au lieu du message role: "tool" violant la spécification, afin que les serveurs stricts compatibles OpenAI comme doubao / new-api / LM Studio puissent le voir ; définir false pour restaurer le comportement hérité d’encapsulation dans l’outil), toolResultContentFormat (par défaut "parts" ; définir "string" uniquement pour les runtimes compatibles OpenAI hérités dont les modèles d’outil ignorent les parties de contenu texte), contextWindowSize (remplacer la taille de la fenêtre de contexte du modèle), modalities (remplacer les modalités d’entrée détectées automatiquement), customHeaders (en-têtes HTTP personnalisés pour les requêtes API), et extra_body (paramètres de corps supplémentaires pour les requêtes API compatibles OpenAI uniquement), ainsi que des réglages de fine-tuning 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 | SUPPRIMÉ. La compaction automatique utilise désormais une échelle de seuil à trois niveaux (avertissement / automatique / strict) calculée en interne à partir de la fenêtre de contexte du modèle via la fonction computeThresholds() — plus configurable par l’utilisateur. Définir ce champ dans settings.json est silencieusement ignoré (aucun avertissement au démarrage). Il n’existe actuellement aucun remplacement pour « désactiver complètement la compression » — la récupération réactive de débordement reste le filet de sécurité au niveau de l’API si la compression elle-même échoue. (Voir PR #4345 / docs/design/auto-compaction-threshold-redesign.md pour la justification de la refonte.) | N/A |
model.chatCompression.maxRecentFilesToRetain | number | Nombre de fichiers les plus récemment touchés dont le contenu actuel est restauré (incorporé si petit, sinon référencé par chemin) dans l’historique après la compaction automatique. 0 n’en restaure aucun. Surcharge env : QWEN_COMPACT_MAX_RECENT_FILES. | 5 |
model.chatCompression.maxRecentImagesToRetain | number | Nombre d’images les plus récentes (captures d’écran d’outil / collages utilisateur) restaurées dans l’historique après la compaction automatique. 0 n’en restaure aucune. Surcharge env : QWEN_COMPACT_MAX_RECENT_IMAGES. | 3 |
model.chatCompression.enableScreenshotTrigger | boolean | Quand true, la compaction automatique se déclenche également lorsque le nombre d’images retournées par l’outil accumulées dans l’historique atteint screenshotTriggerThreshold, indépendamment de l’utilisation de jetons — destiné aux sessions d’utilisation de l’ordinateur où des captures d’écran fréquentes diluent l’attention du modèle. Ne compte que les images retournées dans les résultats d’outil, pas les images collées par l’utilisateur. Surcharge env : QWEN_COMPACT_SCREENSHOT_TRIGGER (1/true/0/false). | true |
model.chatCompression.screenshotTriggerThreshold | number | Nombre d’images retournées par l’outil au-dessus ou égal duquel le déclencheur de capture d’écran s’active (uniquement quand enableScreenshotTrigger). La compaction réinitialise le compteur — les images survivantes sont réincorporées en tant que parties de premier niveau, que le déclencheur ne compte pas — donc il ne se réactivera pas immédiatement. Surcharge env : QWEN_COMPACT_SCREENSHOT_THRESHOLD. | 50 |
model.skipNextSpeakerCheck | boolean | Ignorer la vérification du prochain locuteur. | true |
model.skipLoopDetection | boolean | Désactive les vérifications de détection de boucle de streaming. Par défaut true (la détection de boucle est ignorée) pour éviter que de faux positifs n’interrompent des flux de travail légitimes. Définir sur false pour réactiver la détection de boucle de streaming — utile comme garde-fou dans les exécutions sans tête / non interactives où une répétition bloquée pourrait autrement gaspiller le budget. | true |
model.skipStartupContext | boolean | Ignore l’envoi du contexte de l’espace de travail au démarrage (résumé de l’environnement et accusé de réception) au début de chaque session. Activez ceci si vous préférez fournir le contexte manuellement ou 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’il est activé, les requêtes et réponses API sont enregistrées dans des fichiers JSON. | false |
model.openAILoggingDir | string | Chemin de répertoire personnalisé pour les logs API OpenAI. S’il n’est pas spécifié, par défaut 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 de model.generationConfig : |
{
"model": {
"generationConfig": {
"timeout": 60000,
"contextWindowSize": 128000,
"modalities": {
"image": true
},
"enableCacheControl": true,
"toolResultContentFormat": "parts",
"customHeaders": {
"X-Client-Request-ID": "req-123"
},
"extra_body": {
"enable_thinking": true
},
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}max_tokens (jetons de sortie adaptatifs) :
Lorsque samplingParams.max_tokens n’est pas défini, Qwen Code utilise une stratégie de jetons de sortie adaptatifs pour optimiser l’utilisation des ressources GPU :
- Les requêtes commencent avec une limite par défaut de 8K jetons de sortie
- Si la réponse est tronquée (le modèle atteint la limite), Qwen Code réessaie automatiquement avec 64K jetons
- La sortie partielle est ignorée et remplacée par la réponse complète de la nouvelle tentative
Ceci est transparent pour les utilisateurs — vous pouvez brièvement voir un indicateur de nouvelle tentative en cas d’escalade. Étant donné que 99 % des réponses font moins de 5K jetons, la nouvelle tentative est rare (<1 % des requêtes).
Pour modifier ce comportement, définissez samplingParams.max_tokens dans vos paramètres ou utilisez la variable d’environnement QWEN_CODE_MAX_OUTPUT_TOKENS.
toolResultContentFormat :
Contrôle la manière dont les résultats d’outil textuels sont sérialisés dans les requêtes compatibles OpenAI. La valeur par défaut "parts" conserve la forme standard du tableau de parties de contenu. Définissez "string" uniquement pour les exécutions héritées compatibles OpenAI dont les modèles d’outil ignorent les parties de contenu textuel, comme les anciens modèles GLM-5.1 vLLM/SGLang. Les médias renvoyés par l’outil sont toujours contrôlés par splitToolMedia.
contextWindowSize :
Remplace la taille de fenêtre de contexte par défaut pour le modèle sélectionné. Qwen Code détermine la fenêtre de contexte à l’aide de valeurs par défaut intégrées basées sur la correspondance du nom du modèle, avec une valeur de repli constante. Utilisez ce paramètre lorsque la limite de contexte effective d’un fournisseur diffère de celle par défaut de Qwen Code. Cette valeur définit la capacité maximale de contexte supposée du modèle, et non une limite de jetons par requête.
Lorsque le modèle sélectionné est défini dans modelProviders, définissez
contextWindowSize dans le generationConfig de cette entrée de fournisseur au lieu du
model.generationConfig de premier niveau. Les entrées de modèle de fournisseur sont scellées, donc
les paramètres de génération de premier niveau ne remplissent pas les champs manquants du fournisseur.
modalities :
Remplace les modalités d’entrée auto-détectées pour le modèle sélectionné. Qwen Code détecte automatiquement les modalités prises en charge (image, PDF, audio, vidéo) en fonction de la correspondance de motifs du nom du modèle. Utilisez ce paramètre lorsque l’auto-détection est incorrecte — par exemple, pour activer pdf pour un modèle qui le prend en charge mais n’est pas reconnu. Format : { "image": true, "pdf": true, "audio": true, "video": true }. Omettez une clé ou définissez-la sur false pour les types non pris en charge.
customHeaders :
Permet d’ajouter des en-têtes HTTP personnalisés à toutes les requêtes API. Ceci est utile pour le traçage des requêtes, la surveillance, le routage de passerelle API, ou lorsque différents modèles nécessitent des en-têtes différents. Pour les modèles de fournisseur, définissez customHeaders dans modelProviders[].generationConfig.customHeaders. Pour les modèles d’exécution sans entrée de fournisseur correspondante, définissez-le dans model.generationConfig.customHeaders. Aucune fusion n’a lieu entre les deux niveaux.
Le champ extra_body vous permet d’ajouter des paramètres personnalisés au corps de la requête envoyée à l’API. Ceci est utile pour les options spécifiques au fournisseur qui ne sont pas couvertes par les champs de configuration standard. Remarque : Ce champ n’est pris en charge que pour les fournisseurs compatibles OpenAI (openai, qwen-oauth). Il est ignoré pour les fournisseurs Anthropic et Gemini. Pour les modèles de fournisseur, définissez extra_body dans modelProviders[].generationConfig.extra_body. Pour les modèles d’exécution sans entrée de fournisseur correspondante, définissez-le dans model.generationConfig.extra_body.
Exemples de model.openAILoggingDir :
"~/qwen-logs"- Enregistre dans le répertoire~/qwen-logs"./custom-logs"- Enregistre dans./custom-logsrelatif au répertoire courant"/tmp/openai-logs"- Enregistre dans le chemin absolu/tmp/openai-logs
fastModel
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
fastModel | string | Modèle utilisé pour générer des suggestions d’invite et l’exécution spéculative. Laissez vide pour utiliser le modèle principal. Un modèle plus petit/rapide (ex. qwen3-coder-flash) réduit la latence et les coûts. Peut également être défini via /model --fast. | "" |
context
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
context.fileName | string ou tableau de strings | Le nom du ou des fichiers de contexte. | undefined |
context.importFormat | string | Le format à utiliser lors de l’importation de la mémoire. | undefined |
context.includeDirectories | array | Répertoires supplémentaires à inclure dans le contexte de l’espace de travail. Spécifie un tableau de chemins absolus ou relatifs supplémentaires à inclure 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 l’option de ligne de commande --include-directories. | [] |
context.loadFromIncludeDirectories | boolean | Contrôle le comportement de la commande /memory refresh. Si défini sur true, les fichiers QWEN.md doivent être chargés depuis tous les répertoires ajoutés. Si défini sur false, QWEN.md ne doit être chargé que depuis le répertoire courant. | false |
context.fileFiltering.respectGitIgnore | boolean | Respecter les fichiers .gitignore lors de la recherche. | true |
context.fileFiltering.respectQwenIgnore | boolean | Respecter les fichiers .qwenignore et les fichiers d’ignor personnalisés configurés lors de la recherche. | true |
context.fileFiltering.customIgnoreFiles | array | Fichiers d’ignor relatifs à la racine du projet à utiliser à la place des fichiers de compatibilité par défaut (.agentignore, .aiignore) lorsque respectQwenIgnore est activé. .qwenignore est toujours inclus. | [".agentignore", ".aiignore"] |
context.fileFiltering.enableRecursiveFileSearch | boolean | Indique s’il faut activer la recherche récursive de noms de fichiers sous l’arborescence courante lors de la complétion des préfixes @ dans l’invite. | true |
context.fileFiltering.enableFuzzySearch | boolean | Lorsque true, active les capacités de recherche floue lors de la recherche de fichiers. Définissez sur false pour améliorer les performances sur les projets avec un grand nombre de fichiers. | true |
context.clearContextOnIdle.toolResultsThresholdMinutes | number | Minutes d’inactivité avant d’effacer les anciens contenus de résultats d’outil. Utilisez -1 pour désactiver le déclencheur d’inactivité. | 60 |
context.clearContextOnIdle.toolResultsNumToKeep | integer | Nombre entier des résultats d’outil compactables les plus récents à conserver lors de l’effacement. Les valeurs inférieures à 1 sont ramenées à 1. | 5 |
context.clearContextOnIdle.toolResultsTotalCharsThreshold | number | Nombre total de caractères de sortie de résultats d’outil compactables autorisés dans l’historique avant d’effacer les résultats les plus anciens. Utilisez -1 pour désactiver le déclencheur de taille. Il s’agit d’un seuil souple : les résultats d’outil récents protégés peuvent maintenir le total au-dessus de ce seuil. | 500000 |
Dépannage des performances de la recherche de fichiers
Si vous rencontrez des problèmes de performances lors de 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 pistes à essayer, classées par ordre de recommandation :
- Utiliser un fichier d’ignorance : Créez un fichier
.qwenignoreou un fichier d’ignorance personnalisé configuré à la racine de votre projet pour exclure les répertoires contenant un grand nombre de fichiers dont vous n’avez pas besoin (par exemple les artefacts de construction, les 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
enableFuzzySearchsurfalsedans 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 complètement la recherche récursive de fichiers en définissant
enableRecursiveFileSearchsurfalse. Ce sera l’option la plus rapide car elle évite un parcours récursif de votre projet. Cela signifie cependant que vous devrez saisir le chemin complet des fichiers lors de l’utilisation des complétions@.
outils
| Paramètre | Type | Description | Par défaut | Notes |
|---|---|---|---|---|
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.sandboxImage | chaîne | URI de l’image sandbox utilisée par Docker/Podman lorsque --sandbox-image et QWEN_SANDBOX_IMAGE ne sont pas définis. | undefined | |
tools.shell.enableInteractiveShell | booléen | Utiliser node-pty pour une expérience de shell interactive. Le recours à child_process s’applique toujours comme solution de repli. | true | |
tools.core | tableau de chaînes | Obsolète. Sera supprimé dans la prochaine version. Utilisez permissions.allow + permissions.deny à la place. Limite les outils intégrés à une liste autorisée. Tous les outils ne figurant pas dans la liste sont désactivés. | undefined | |
tools.exclude | tableau de chaînes | Obsolète. Utilisez permissions.deny à la place. Noms des outils à exclure de la découverte. Migré automatiquement vers le format permissions au premier chargement. | undefined | |
tools.allowed | tableau de chaînes | Obsolète. Utilisez permissions.allow à la place. Noms des outils qui contournent la boîte de dialogue de confirmation. Migré automatiquement vers le format permissions au premier chargement. | 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 (demander une approbation avant les modifications de fichiers ou l’exécution de commandes shell), auto-edit (approuver automatiquement les modifications de fichiers), auto (le classifieur LLM approuve automatiquement les actions sûres, bloque les actions risquées), yolo (approuver 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 via tools.discoveryCommand. La commande shell doit répondre aux critères suivants : elle doit prendre le nom de la fonction name (exactement comme dans la déclaration de fonction ) comme premier argument en ligne de commande. Elle doit lire les arguments de la fonction en JSON sur stdin, de manière analogue à functionCall.args. Elle doit renvoyer la sortie de la fonction en 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 repli. Offre de meilleures performances de recherche. | true | |
tools.useBuiltinRipgrep | booléen | Utiliser le binaire ripgrep inclus. Lorsqu’il est 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.truncateToolOutputThreshold | nombre | Tronquer la sortie des outils 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 maximal de lignes ou d’entrées conservées lors de la troncature de la sortie des outils. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 1000 | Nécessite un redémarrage : Oui |
tools.computerUse.enabled | booléen | Activer les outils intégrés Computer Use (automatisation native du bureau cua-driver). Lorsqu’il est true (par défaut), les outils computer_use__* sont enregistrés comme outils intégrés différés ; le premier appel télécharge le binaire signé cua-driver dans ~/.qwen/computer-use/ et parcourt les autorisations macOS Accessibilité / Enregistrement d’écran. | true | Nécessite un redémarrage : Oui |
tools.computerUse.maxImageDimension | nombre | Limite maximale des pixels sur le bord le plus long appliquée aux captures d’écran cua-driver (via set_config’s max_image_dimension). -1 (par défaut) conserve la valeur par défaut intégrée de cua-driver (1568) ; 0 désactive le redimensionnement (pleine résolution) ; une valeur positive limite le bord le plus long. Des limites plus basses réduisent le coût des tokens de vision au détriment des détails fins. | -1 | Nécessite un redémarrage : Oui. Surcharge d’environnement : QWEN_COMPUTER_USE_MAX_IMAGE_DIMENSION (un entier non négatif ; prévaut sur ce paramètre) |
Migration depuis tools.core / tools.exclude / tools.allowed : Ces paramètres hérités sont obsolètes et automatiquement migrés vers le nouveau format permissions au premier chargement. Préférez configurer directement permissions.allow / permissions.deny. Utilisez /permissions pour gérer les règles de manière interactive.
memory
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
memory.enableManagedAutoMemory | boolean | Activer l’extraction en arrière‑plan des souvenirs à partir des conversations. | true |
memory.enableManagedAutoDream | boolean | Activer la consolidation automatique (déduplication et nettoyage) des souvenirs collectés. | true |
memory.enableAutoSkill | boolean | Activer l’examen en arrière‑plan des compétences réutilisables du projet après des sessions intensives en outils. | true |
memory.autoSkillConfirm | boolean | Demander confirmation avant que les compétences générées automatiquement soient ajoutées à la bibliothèque de compétences. Désactivé, les compétences auto sont enregistrées immédiatement. | true |
Voir Mémoire pour les détails sur le fonctionnement de la mémoire automatique et comment utiliser les commandes /memory, /remember et /dream.
permissions
Le système de permissions offre un contrôle précis sur les outils qui peuvent s’exécuter, ceux qui nécessitent une confirmation et ceux qui sont bloqués.
Priorité de décision (la plus élevée en premier) : deny > ask > allow > (mode par défaut/interactif)
La première règle correspondante l’emporte. Les règles utilisent le format "ToolName" ou "ToolName(specifier)".
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
permissions.allow | tableau de chaînes | Règles pour les appels d’outils automatiquement approuvés (aucune confirmation nécessaire). Fusionnées sur tous les contextes (utilisateur + projet + système). | undefined |
permissions.ask | tableau de chaînes | Règles pour les appels d’outils qui nécessitent toujours une confirmation de l’utilisateur. Prend le pas sur allow. | undefined |
permissions.deny | tableau de chaînes | Règles pour les appels d’outils bloqués. Priorité la plus élevée — remplace à la fois allow et ask. | undefined |
Alias de noms d’outils (n’importe lequel fonctionne dans les règles) :
| Alias | Outil canonique | Notes |
|---|---|---|
Bash, Shell | run_shell_command | |
Read, ReadFile | read_file | Méta‑catégorie — voir ci‑dessous |
Edit, EditFile | edit | Méta‑catégorie — voir ci‑dessous |
Write, WriteFile | write_file | |
NotebookEdit | notebook_edit | |
NotebookEditTool | notebook_edit | |
Grep, SearchFiles | grep_search | |
Glob, FindFiles | glob | |
ListFiles | list_directory | |
WebFetch | web_fetch | |
Agent | task | |
Skill | skill |
Méta‑catégories :
Certains noms de règles couvrent automatiquement plusieurs outils :
| Nom de la règle | Outils couverts |
|---|---|
Read | read_file, grep_search, glob, list_directory |
Edit | edit, write_file, notebook_edit |
[!important]
Read(/path/**)correspond aux quatre outils de lecture (lecture de fichier, grep, glob et listage de répertoire). Pour restreindre uniquement la lecture de fichier, utilisezReadFile(/path/**)ouread_file(/path/**).
Exemples de syntaxe de règle :
| Règle | Signification |
|---|---|
"Bash" | Toutes les commandes shell |
"Bash(git *)" | Commandes shell commençant par git (limite de mot : pas gitk) |
"Bash(git push *)" | Commandes shell comme git push origin main |
"Bash(npm run *)" | Tout script npm run |
"Read" | Toutes les opérations de lecture de fichier (lecture, grep, glob, listage) |
"Read(./secrets/**)" | Lire tout fichier sous ./secrets/ récursivement |
"Edit(/src/**/*.ts)" | Modifier les fichiers TypeScript sous la racine du projet /src/ |
"WebFetch(api.example.com)" | Récupérer depuis api.example.com et tous ses sous‑domaines |
"mcp__puppeteer" | Tous les outils du serveur MCP puppeteer |
| Préfixes de motifs de chemin : |
| Préfixe | Signification | Exemple |
|---|---|---|
// | Chemin absolu depuis la racine du système de fichiers | //etc/passwd |
~/ | Relatif au répertoire personnel | ~/Documents/*.pdf |
/ | Relatif à la racine du projet | /src/**/*.ts |
./ | Relatif au répertoire de travail courant | ./secrets/** |
| (aucun) | Identique à ./ | secrets/** |
Prévention du contournement des commandes shell :
Les règles d’autorisation pour Read, Edit et WebFetch sont également appliquées lorsque l’agent exécute des commandes shell équivalentes. Par exemple, si Read(./.env) est dans deny, l’agent ne peut pas le contourner via cat .env dans une commande shell. Les commandes shell prises en charge incluent cat, grep, curl, wget, cp, mv, rm, chmod et bien d’autres. Les commandes inconnues/sûres (par ex. git) ne sont pas affectées par les règles de fichiers/réseau.
Migration depuis les paramètres hérités :
| Ancien paramètre | Règle d’autorisation équivalente | Remarques |
|---|---|---|
tools.allowed | permissions.allow | Migré automatiquement au premier chargement |
tools.exclude | permissions.deny | Migré automatiquement au premier chargement |
tools.core | permissions.allow (allowlist) | Migré automatiquement ; les outils non listés sont désactivés au niveau du registre |
Exemple de configuration :
{
"permissions": {
"allow": ["Bash(git *)", "Bash(npm run *)", "Read(//Users/alice/code/**)"],
"ask": ["Bash(git push *)", "Edit"],
"deny": ["Bash(rm -rf *)", "Read(.env)", "WebFetch(malicious.com)"]
}
}[!tip] Utilisez
/permissionsdans le CLI interactif pour voir, ajouter et supprimer des règles sans modifier directementsettings.json.
slashCommands
Contrôle quelles commandes slash sont disponibles dans le CLI. Utile pour verrouiller la surface de commande dans les déploiements multi-locataires ou d’entreprise.
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
slashCommands.disabled | tableau de chaînes | Noms des commandes slash à masquer et à refuser d’exécuter. La correspondance est insensible à la casse avec le nom final de la commande (pour les commandes d’extension, il s’agit de la forme désambiguïsée, par ex. myext.deploy). Fusionné en tant qu’union entre les portées, de sorte que les paramètres de l’espace de travail peuvent ajouter des entrées à celles définies dans les paramètres utilisateur ou système, mais ne peuvent pas en supprimer. | undefined |
La même liste de blocage peut également être fournie via le flag CLI --disabled-slash-commands (séparé par des virgules ou répété) et la variable d’environnement QWEN_DISABLED_SLASH_COMMANDS ; les valeurs des trois sources sont fusionnées en une union.
Exemple — verrouiller les commandes intégrées pour un déploiement en bac à sable :
{
"slashCommands": {
"disabled": ["auth", "mcp", "extensions", "ide", "quit"]
}
}Avec ces valeurs dans un settings.json au niveau système (/etc/qwen-code/settings.json ou QWEN_CODE_SYSTEM_SETTINGS_PATH), les utilisateurs ne peuvent pas réduire la liste de blocage depuis leur propre portée, et les commandes désactivées n’apparaîtront pas dans l’autocomplétion et ne s’exécuteront pas lorsqu’elles sont tapées.
[!note] Ce paramètre ne contrôle que les commandes slash (par ex.
/auth,/mcp). Il n’affecte pas les permissions des outils — voirpermissions.denypour cela. Il n’intercepte pas non plus les raccourcis clavier commeCtrl+CouEsc.
mcp
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
mcp.serverCommand | chaîne | Commande pour démarrer un serveur MCP. | undefined |
mcp.allowed | tableau de chaînes | Une liste d’autorisation de serveurs MCP à autoriser. Vous permet de spécifier une liste de noms de serveurs MCP qui doivent être mis à disposition du modèle. Cela peut être utilisé pour restreindre l’ensemble des serveurs MCP auxquels se connecter. Notez que cela sera ignoré si --allowed-mcp-server-names est défini. | undefined |
mcp.excluded | tableau de chaînes | Une liste de blocage des serveurs MCP à exclure. Un serveur listé à la fois dans mcp.excluded et mcp.allowed est exclu. Notez que cela sera ignoré si --allowed-mcp-server-names est défini. | undefined |
Note de sécurité pour les serveurs MCP : Ces paramètres utilisent une correspondance simple de chaînes sur les noms des serveurs MCP, qui peuvent être modifiés. Si vous êtes un administrateur système souhaitant empêcher les utilisateurs de contourner cela, pensez à configurer les mcpServers au niveau des paramètres système afin que l’utilisateur ne puisse pas configurer ses propres serveurs MCP. Cela ne doit pas être utilisé comme un mécanisme de sécurité hermétique.
lsp
[!warning] Fonctionnalité expérimentale : La prise en charge LSP est actuellement expérimentale et désactivée par défaut. Activez-la avec le flag
--experimental-lspen ligne de commande.
Le Language Server Protocol (LSP) offre des fonctionnalités d’intelligence de code comme aller à la définition, trouver les références et les diagnostics.
La configuration du serveur LSP se fait via des fichiers .lsp.json dans le répertoire racine de votre projet, et non via settings.json. Consultez la documentation LSP pour les détails de configuration et des exemples.
security
| Réglage | Type | Description | Par défaut |
|---|---|---|---|
security.folderTrust.enabled | boolean | Paramètre pour savoir si la confiance de 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
| Réglage | Type | Description | 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 | array of strings | Variables d’environnement à exclure du contexte du projet. Spécifie les variables d’environnement qui doivent être exclues du chargement depuis les fichiers .env du projet. Cela empêche les variables d’environnement spécifiques au projet (comme DEBUG=true) d’interférer avec le comportement de la CLI. Les variables provenant des fichiers .qwen/.env ne sont jamais exclues. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | object | Configuration pour la commande de rapport de bug. Remplace l’URL par défaut pour la commande /bug. Propriétés : urlTemplate (string) : Une URL pouvant contenir les placeholders {title} et {info}. Exemple : "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
plansDirectory | string | Répertoire personnalisé pour les fichiers du Plan Mode approuvés. Les chemins relatifs sont résolus depuis la racine du projet, et le chemin résolu doit rester dans la racine du projet. Si non défini, les fichiers de plan sont stockés dans ~/.qwen/plans. Nécessite un redémarrage. Si le répertoire se trouve dans la racine du projet, ajoutez-le au .gitignore pour éviter de commiter les fichiers de plan. | undefined |
experimental
Fonctionnalités expérimentales. Ces toggles activent des capacités en cours de développement et peuvent changer ou être supprimés dans les versions futures.
| Réglage | Type | Description | Par défaut |
|---|---|---|---|
experimental.cron | boolean | Active les outils cron/boucle dans la session (cron_create, cron_list, cron_delete) afin que le modèle puisse créer des invites récurrentes. Peut être désactivé via la variable d’environnement QWEN_CODE_DISABLE_CRON=1. Nécessite un redémarrage. | true |
experimental.agentTeam | boolean | Active les outils de collaboration en équipe d’agents (team_create, task_create, task_update, send_message, etc.) pour la coordination multi-agents. Peut également être activé via QWEN_CODE_ENABLE_AGENT_TEAM=1. Nécessite un redémarrage. | false |
experimental.artifact | boolean | Active l’outil Artifact, permettant au modèle de publier une page HTML autonome et de l’ouvrir dans le navigateur. Sessions interactives uniquement, pas dans les sessions SDK. Activez via QWEN_CODE_ENABLE_ARTIFACT=1 / QWEN_CODE_DISABLE_ARTIFACT=1. Nécessite un redémarrage. | false |
experimental.emitToolUseSummaries | boolean | Génère une courte étiquette basée sur LLM après chaque lot d’appels d’outils. Voir Résumés d’utilisation d’outils. Nécessite qu’un modèle rapide soit configuré (fastModel) ; ignoré silencieusement sinon. Peut être remplacé par session avec QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 ou =1. | true |
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 par 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 l’un des éléments command, url ou httpUrl doit être fourni. Si plusieurs sont spécifiés, l’ordre de priorité est httpUrl, puis url, puis command.
| Propriété | Type | Description | Optionnel |
|---|---|---|---|
mcpServers.<SERVER_NAME>.command | string | La commande à exécuter pour démarrer le serveur MCP via l’entrée/sortie standard. | Oui |
mcpServers.<SERVER_NAME>.args | array of strings | Les arguments à passer à la commande. | Oui |
mcpServers.<SERVER_NAME>.env | object | Les variables d’environnement à définir pour le processus du serveur. | Oui |
mcpServers.<SERVER_NAME>.cwd | string | Le répertoire de travail dans lequel démarrer le serveur. | Oui |
mcpServers.<SERVER_NAME>.url | string | L’URL d’un serveur MCP qui utilise les Server-Sent Events (SSE) pour la communication. | Oui |
mcpServers.<SERVER_NAME>.httpUrl | string | L’URL d’un serveur MCP qui utilise le HTTP streamable pour la communication. | Oui |
mcpServers.<SERVER_NAME>.headers | object | Une correspondance d’en-têtes HTTP à envoyer avec les requêtes vers url ou httpUrl. | Oui |
mcpServers.<SERVER_NAME>.timeout | number | Le délai d’expiration en millisecondes pour les requêtes vers ce serveur MCP. | Oui |
mcpServers.<SERVER_NAME>.trust | boolean | Faire confiance à ce serveur et contourner toutes les confirmations d’appel d’outil. | Oui |
mcpServers.<SERVER_NAME>.description | string | Une brève description du serveur, qui peut être utilisée à des fins d’affichage. | Oui |
mcpServers.<SERVER_NAME>.includeTools | array of strings | Liste des noms d’outils à inclure depuis ce serveur MCP. Lorsqu’elle est spécifiée, seuls les outils listés ici seront disponibles depuis ce serveur (comportement de liste blanche). Si elle n’est pas spécifiée, tous les outils du serveur sont activés par défaut. | Oui |
mcpServers.<SERVER_NAME>.excludeTools | array of strings | Liste des noms d’outils à exclure de ce serveur MCP. Les outils listés ici ne seront pas disponibles pour le modèle, même s’ils sont exposés par le serveur. Remarque : excludeTools prime sur includeTools – si un outil figure dans les deux listes, il sera exclu. | Oui |
télémétrie
Configure la journalisation et la collecte de métriques pour Qwen Code. Pour plus d’informations, voir télémétrie.
| Setting | Type | Description | Valeur par défaut |
|---|---|---|---|
telemetry.enabled | boolean | Indique si la télémétrie est activée ou non. | |
telemetry.target | string | Étiquette informative pour la destination de la télémétrie (local ou gcp). Ne contrôle pas le routage de l’exportateur ; définissez telemetry.otlpEndpoint ou telemetry.outfile pour configurer l’envoi des données. | |
telemetry.otlpEndpoint | string | Le point de terminaison pour l’exportateur OTLP. | |
telemetry.otlpProtocol | string | Le protocole pour l’exportateur OTLP (grpc ou http). | |
telemetry.logPrompts | boolean | Indique s’il faut inclure le contenu des invites utilisateur dans les journaux. | |
telemetry.includeSensitiveSpanAttributes | boolean | Lorsqu’elle est activée, attache les invites utilisateur textuelles, les invites système, les entrées/sorties des outils et les réponses du modèle aux attributs natifs des spans OTel (en plus des spans du pont journal-à-span). ⚠️ Transmet des données sensibles — contenu des fichiers, commandes shell, historique de la conversation — à votre backend OTLP. | false |
telemetry.outfile | string | Chemin pour écrire la télémétrie dans un fichier. Lorsqu’il est défini, remplace l’export OTLP. |
Exemple settings.json
Voici un exemple de fichier settings.json avec la structure imbriquée, nouvelle depuis la v0.3.0 :
{
"proxy": "http://localhost:7890",
"plansDirectory": "./.qwen/plans",
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideTips": false,
"customWittyPhrases": [
"You forget a thousand things every day. Make sure this is one of 'em",
"Connecting to AGI"
]
},
"tools": {
"approvalMode": "yolo",
"sandbox": "docker",
"sandboxImage": "ghcr.io/qwenlm/qwen-code:0.14.1",
"discoveryCommand": "bin/get_tools",
"callCommand": "bin/call_tool",
"exclude": ["write_file"]
},
"mcpServers": {
"mainServer": {
"command": "bin/mcp_server.py"
},
"anotherServer": {
"command": "node",
"args": ["mcp_server.js", "--verbose"]
}
},
"telemetry": {
"enabled": true,
"target": "local",
"otlpEndpoint": "http://localhost:4317",
"logPrompts": true,
"includeSensitiveSpanAttributes": false
},
"privacy": {
"usageStatisticsEnabled": true
},
"model": {
"name": "qwen3-coder-plus",
"maxSessionTurns": 10,
"enableOpenAILogging": false,
"openAILoggingDir": "~/qwen-logs",
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}Historique du shell
Le CLI conserve un historique des commandes shell que vous exécutez. Pour éviter les conflits entre différents projets, cet historique est stocké dans un répertoire spécifique au projet à l’intérieur de votre dossier personnel.
- 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 & Fichiers .env
Les variables d’environnement sont un moyen courant de configurer les applications, en particulier pour les informations sensibles (comme les jetons) ou pour les paramètres qui peuvent changer selon l’environnement.
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 .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 pour éviter toute interférence avec le comportement de la CLI. Les variables des fichiers .qwen/.env ne sont jamais exclues. Vous pouvez personnaliser ce comportement via le paramètre advanced.excludedEnvVars de votre fichier settings.json.
Tableau des variables d’environnement
| Variable | Description | Remarques |
|---|---|---|
QWEN_HOME | Personnalise le répertoire de configuration global (par défaut : ~/.qwen). Accepte un chemin absolu ou relatif (les chemins relatifs sont résolus à partir du répertoire de travail actuel). Le ~ initial est étendu au répertoire personnel de l’utilisateur. | Stocke les identifiants, paramètres, mémoire, compétences et autres états globaux. Lorsque défini, les répertoires .qwen/ au niveau du projet ne sont pas affectés. Une chaîne vide est traitée comme non définie. |
QWEN_RUNTIME_DIR | Remplace le répertoire de sortie d’exécution (conversations, journaux, tâches). Lorsqu’il n’est pas défini, prend par défaut le répertoire QWEN_HOME. | Utilisez ceci pour séparer les données d’exécution éphémères de la configuration persistante. Utile lorsque QWEN_HOME se trouve sur un système de fichiers partagé ou lent. |
QWEN_TELEMETRY_ENABLED | Définir sur true ou 1 pour activer la télémétrie. Toute autre valeur est traitée comme la désactivant. | Remplace le paramètre telemetry.enabled. |
QWEN_TELEMETRY_TARGET | Définit une étiquette informationnelle pour la destination de télémétrie (local ou gcp). Ne contrôle pas le routage ; utilisez QWEN_TELEMETRY_OTLP_ENDPOINT ou QWEN_TELEMETRY_OUTFILE pour configurer l’envoi des données. | Remplace le paramètre telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Définit le point de terminaison OTLP pour la télémétrie. | Remplace le paramètre telemetry.otlpEndpoint. |
QWEN_TELEMETRY_OTLP_PROTOCOL | Définit le protocole OTLP (grpc ou http). | Remplace le paramètre telemetry.otlpProtocol. |
QWEN_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 la désactivant. | Remplace le paramètre telemetry.logPrompts. |
QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES | Définir sur true ou 1 pour attacher textuellement les invites utilisateur, les invites système, les entrées/sorties d’outils et les réponses du modèle aux attributs natifs des spans OTel (et conserver prompt / function_args / response_text sur les spans de pont log-to-span). Toute autre valeur le désactive. | Remplace le paramètre telemetry.includeSensitiveSpanAttributes. ⚠️ Envoie des données sensibles vers votre backend OTLP. |
QWEN_TELEMETRY_OUTFILE | Définit le chemin du fichier dans lequel écrire la télémétrie. Lorsqu’il est défini, remplace l’export OTLP. | Remplace le paramètre telemetry.outfile. |
QWEN_SANDBOX | Alternative au paramètre sandbox dans settings.json. | Accepte true, false, docker, podman, ou une chaîne de commande personnalisée. |
QWEN_SANDBOX_IMAGE | Remplace la sélection d’image sandbox pour Docker/Podman. | Prime sur tools.sandboxImage. |
SEATBELT_PROFILE | (spécifique macOS) Change le profil Seatbelt (sandbox-exec) sur macOS. | permissive-open : (Par défaut) Restreint les écritures dans le 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. <nom_du_profil> : Utilise un profil personnalisé. Pour définir un profil personnalisé, créez un fichier nommé sandbox-macos-<nom_du_profil>.sb dans le répertoire .qwen/ de votre projet (par exemple mon-projet/.qwen/sandbox-macos-custom.sb). |
DEBUG ou DEBUG_MODE | (souvent utilisé par les bibliothèques sous-jacentes ou la CLI elle-même) Définir sur true ou 1 pour activer la journalisation de débogage verbeuse, 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 toute interférence avec le comportement de la CLI. Utilisez les fichiers .qwen/.env si vous devez les définir spécifiquement pour Qwen Code. |
NO_COLOR | Définir sur n’importe quelle valeur pour désactiver toute sortie colorée dans la CLI. | |
FORCE_HYPERLINK | Remplace la détection des liens cliquables OSC 8 dans le rendu Markdown. Définir sur 1 (ou tout entier non nul, ou chaîne vide) pour forcer l’activation ; définir sur 0 ou une valeur non numérique comme false / off pour forcer la désactivation. Respecte les désactivations NO_COLOR / QWEN_DISABLE_HYPERLINKS ci-dessus. | Utilisez ceci pour adopter OSC 8 dans tmux / GNU screen (la détection automatique refuse par défaut car les capacités du terminal hôte sont cachées derrière le multiplexeur). Nécessite set -g allow-passthrough on sur tmux 3.3+. Active également Hyper, qui n’est pas détecté automatiquement. |
QWEN_DISABLE_HYPERLINKS | Définir sur 1 pour désactiver complètement les hyperliens cliquables OSC 8 dans le rendu Markdown, même sur les terminaux qui se détectent automatiquement comme capables. | Utile lorsqu’un terminal annonce la prise en charge mais échoue sur les longues URL, ou lorsque la sortie est canalisée via un intermédiaire qui déforme les séquences d’échappement. Le rendu revient à un affichage simple label (url). |
CLI_TITLE | Définir sur une chaîne pour personnaliser le titre de la CLI. | |
CODE_ASSIST_ENDPOINT | Spécifie le point de terminaison pour le serveur d’assistance au code. | Ceci est utile pour le développement et les tests. |
QWEN_CODE_MAX_OUTPUT_TOKENS | Remplace le nombre maximum de jetons de sortie par réponse par défaut. Lorsqu’il n’est pas défini, Qwen Code utilise une stratégie adaptative : commence avec 8K jetons et réessaie automatiquement avec 64K si la réponse est tronquée. Définissez-le sur une valeur spécifique (par exemple 16000) pour utiliser une limite fixe à la place. | Prime sur la valeur par défaut plafonnée (8K) mais est remplacé par samplingParams.max_tokens dans les paramètres. Désactive l’escalade automatique lorsqu’il est défini. Exemple : export QWEN_CODE_MAX_OUTPUT_TOKENS=16000 |
QWEN_CODE_UNATTENDED_RETRY | Définir sur true ou 1 pour activer le mode de nouvelle tentative persistante. Lorsqu’il est activé, les erreurs de capacité API transitoires (HTTP 429 Limite de débit et 529 Surchargé) sont retentées indéfiniment avec un backoff exponentiel (plafonné à 5 minutes par tentative) et des signaux de vie toutes les 30 secondes sur stderr. | Conçu pour les pipelines CI/CD et l’automatisation en arrière-plan où les tâches de longue durée doivent survivre à des pannes API temporaires. Doit être défini explicitement — CI=true seul n’active pas ce mode. Voir Mode sans tête pour plus de détails. Exemple : export QWEN_CODE_UNATTENDED_RETRY=1 |
QWEN_CODE_PROFILE_STARTUP | Définir sur 1 pour activer le profilage des performances au démarrage. Écrit un rapport de chronométrage JSON dans ~/.qwen/startup-perf/ avec les durées par phase. | Actif uniquement dans le processus enfant sandbox (ou avec QWEN_CODE_PROFILE_STARTUP_OUTER=1). Aucune surcharge lorsque non défini. Exemple : export QWEN_CODE_PROFILE_STARTUP=1 |
QWEN_CODE_PROFILE_STARTUP_OUTER | Définir sur 1 avec `QWEN_CODE_PROFILE_STARTUP= | |
Lorsque deux fichiers .env au niveau utilisateur définissent la même variable, le fichier spécifique à Qwen l’emporte : <QWEN_HOME>/.env (ou ~/.qwen/.env si QWEN_HOME n’est pas défini) est chargé avant ~/.env, et les valeurs d’environnement existantes ne sont pas écrasées. |
Arguments en 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.
Pour la sélection de l’image du sandbox, la priorité est la suivante :
--sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > image par défaut intégrée.
Tableau des arguments en ligne de commande
| Argument | Alias | Description | Valeurs possibles | 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 | Permet de passer une invite directement à la commande. Cela appelle Qwen Code en mode non interactif. | Votre texte d’invite | Pour des exemples de scripts, utilisez l’indicateur --output-format json pour obtenir une sortie structurée. |
--prompt-interactive | -i | Démarre une session interactive avec l’invite fournie comme saisie initiale. | Votre texte d’invite | L’invite est traitée dans la session interactive, pas avant. Ne peut pas être utilisée lors d’un tuyau d’entrée depuis stdin. Exemple : qwen -i "explique ce code" |
--system-prompt | Remplace l’invite système intégrée de la session principale pour cette exécution. | Votre texte d’invite | Les fichiers de contexte chargés comme QWEN.md sont toujours ajoutés après ce remplacement. Peut être combiné avec --append-system-prompt. | |
--append-system-prompt | Ajoute des instructions supplémentaires à l’invite système de la session principale pour cette exécution. | Votre texte d’invite | Appliqué après l’invite intégrée et les fichiers de contexte chargés. Peut être combiné avec --system-prompt. Voir Mode autonome pour des exemples. | |
--output-format | -o | Spécifie le format de sortie de la CLI pour le mode non interactif. | text, json, stream-json | text : (Défaut) La sortie standard lisible par l’humain. json : Une sortie JSON lisible par machine émise à la fin de l’exécution. stream-json : Messages JSON en streaming émis au fur et à mesure de l’exécution. Pour une sortie structurée et des scripts, utilisez l’indicateur --output-format json ou --output-format stream-json. Voir Mode autonome pour des informations détaillées. |
--input-format | Spécifie le format consommé depuis l’entrée standard. | text, stream-json | text : (Défaut) Saisie de texte standard depuis stdin ou les arguments en ligne de commande. stream-json : Protocole de messages JSON via stdin pour la 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é aux messages du protocole. Voir Mode autonome pour des informations détaillées. | |
--include-partial-messages | Inclure les messages partiels de l’assistant lors de l’utilisation du format de sortie stream-json. Lorsqu’activé, émet les événements de flux (message_start, content_block_delta, etc.) au fur et à mesure qu’ils se produisent pendant le streaming. | Défaut : false. Condition : Nécessite que --output-format stream-json soit défini. Voir Mode autonome pour des informations détaillées 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 verbeuse. | ||
--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 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, auto, yolo | Modes pris en charge : plan : Analyser uniquement — ne pas modifier les fichiers ni exécuter les commandes. default : Exiger une approbation pour les modifications de fichiers ou les commandes shell (comportement par défaut). auto-edit : Approuver automatiquement les outils d’édition (edit, write_file, notebook_edit) tout en demandant pour les autres. auto : Un classifieur LLM approuve automatiquement les actions sûres et bloque les risquées. yolo : Approuver automatiquement tous les appels d’outils (équivalent à --yolo). Ne peut pas être utilisé 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 | Une 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)" | |
--disabled-slash-commands | Noms des commandes slash à masquer/désactiver (séparés par des virgules ou répétés). Unis avec le paramètre slashCommands.disabled et la variable d’environnement QWEN_DISABLED_SLASH_COMMANDS. La correspondance est insensible à la casse par rapport au nom final de la commande. | Noms de commandes | Exemple : qwen --disabled-slash-commands "auth,mcp,extensions" | |
--telemetry | Active la télémétrie. | |||
--telemetry-target | Définit la cible de télémétrie. | Voir 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 invites pour la télémétrie. | Voir télémétrie pour plus d’informations. | ||
--acp | Active le mode ACP (Agent Client Protocol). Utile pour les intégrations IDE/éditeur comme Zed. | Stable. Remplace l’indicateur obsolète --experimental-acp. | ||
--experimental-lsp | Active la fonctionnalité expérimentale LSP (Language Server Protocol) pour l’intelligence de code (aller à la définition, trouver les références, diagnostics, etc.). | Expérimental. Nécessite que les serveurs de langage soient installés. | ||
--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 mon-extension -e mon-autre-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 de plusieurs répertoires. | Chemins de répertoires | Peut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules. 5 répertoires maximum peuvent être ajoutés. Exemple : --include-directories /path/to/project1,/path/to/project2 ou --include-directories /path/to/project1 --include-directories /path/to/project2 | |
--screen-reader | Active le mode lecteur d’écran, qui ajuste l’interface TUI pour une meilleure compatibilité avec les lecteurs d’écran. | |||
--version | Affiche la version de la CLI. | |||
--openai-logging | Active la journalisation des appels API OpenAI pour le débogage et l’analyse. | Cet indicateur 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 de 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 |
Fichiers de contexte (Contexte instructionnel hiérarchique)
Bien qu’il ne s’agisse pas strictement d’une configuration du comportement du CLI, les fichiers de contexte (par défaut QWEN.md mais configurables via le paramètre context.fileName) sont essentiels pour configurer le contexte instructionnel (aussi appelé « mémoire »). Cette fonctionnalité puissante vous permet de donner des instructions spécifiques au projet, des guides de style de codage ou toute information contextuelle pertinente à l’IA, rendant ses réponses plus adaptées et précises à vos besoins. Le CLI inclut des éléments d’interface utilisateur, comme un indicateur dans le pied de page indiquant le nombre de fichiers de contexte chargés, pour vous tenir informé du contexte actif.
- Objectif : Ces fichiers Markdown contiennent des instructions, des directives ou un contexte que vous souhaitez que le modèle Qwen connaisse lors de vos interactions. Le système est conçu pour gérer ce contexte instructionnel de manière hiérarchique.
Exemple de contenu d’un fichier de contexte (par ex. QWEN.md)
Voici un exemple conceptuel de ce qu’un fichier de contexte à la racine d’un projet TypeScript pourrait contenir :
# Project: My Awesome TypeScript Library
## General Instructions:
- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 22+.
## Coding Style:
- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).
## Specific Component: `src/api/client.ts`
- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.
## Regarding Dependencies:
- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.Cet exemple montre comment vous pouvez fournir un contexte général de projet, des conventions de codage spécifiques, et même des notes sur des fichiers ou composants particuliers. Plus vos fichiers de contexte sont pertinents et précis, mieux l’IA peut vous assister. Les fichiers de contexte spécifiques au projet sont fortement encouragés pour établir des conventions et un contexte.
- Chargement hiérarchique et précédence : Le CLI implémente un système de mémoire hiérarchique en chargeant les fichiers de contexte (par ex.,
QWEN.md) depuis plusieurs emplacements. Le contenu des fichiers plus bas dans cette liste (plus spécifiques) remplace ou complète généralement le contenu des fichiers plus haut (plus généraux). L’ordre exact de concaténation et le contexte final peuvent être inspectés depuis la boîte de dialogue/memory. L’ordre de chargement typique est :- Fichier de contexte global :
- Emplacement :
~/.qwen/<configured-context-filename>(par ex.,~/.qwen/QWEN.mddans votre répertoire personnel). - Portée : Fournit des instructions par défaut pour tous vos projets.
- Emplacement :
- Fichiers de contexte de la racine du projet et des dossiers parents :
- Emplacement : Le CLI recherche le fichier de contexte configuré dans le répertoire de travail actuel, puis dans chaque répertoire parent jusqu’à la racine du projet (identifiée par un dossier
.git) ou votre répertoire personnel. - Portée : Fournit un contexte pertinent pour l’ensemble du projet ou une partie significative de celui-ci.
- Emplacement : Le CLI recherche le fichier de contexte configuré dans le répertoire de travail actuel, puis dans chaque répertoire parent jusqu’à la racine du projet (identifiée par un dossier
- Fichier de contexte global :
- Concaténation et indication dans l’interface utilisateur : Le contenu de tous les fichiers de contexte trouvés est concaténé (avec des séparateurs indiquant leur origine et leur chemin) et fourni dans le prompt système. Le pied de page du CLI affiche le nombre de fichiers de contexte chargés, vous donnant un aperçu visuel rapide du contexte instructionnel actif.
- Importation de contenu : Vous pouvez modulariser vos fichiers de contexte en important d’autres fichiers Markdown à l’aide de la syntaxe
@path/to/file.md. Pour plus de détails, consultez la documentation Mémoire. - Commandes pour la gestion de la mémoire :
- Utilisez
/memorypour ouvrir la boîte de dialogue de gestion de la mémoire. - Actualisez la mémoire depuis la boîte de dialogue pour rescanner et recharger les fichiers de contexte depuis tous les emplacements configurés.
- Consultez la documentation des commandes pour tous les détails sur la commande
/memory.
- Utilisez
En comprenant et en utilisant ces couches de configuration et la nature hiérarchique des fichiers de contexte, vous pouvez gérer efficacement la mémoire de l’IA et adapter les réponses de Qwen Code à vos besoins et projets spécifiques.
Sandbox
Qwen Code peut exécuter des opérations potentiellement dangereuses (comme des commandes shell et des modifications de fichiers) dans un environnement sandboxé pour protéger votre système.
Sandbox est désactivé par défaut, mais vous pouvez l’activer de plusieurs manières :
- En utilisant l’option
--sandboxou-s. - En définissant la variable d’environnement
QWEN_SANDBOX. - En définissant
tools.sandboxdans les paramètres.
⚠️
--yolon’active pas automatiquement un sandbox. Le mode YOLO approuve automatiquement les appels d’outils ; l’utilisation d’un sandbox doit toujours être choisie via--sandbox,QWEN_SANDBOXoutools.sandbox. Dans les exécutions headless / non interactives avec--yolo(ou--approval-mode=yolo) et sans sandbox, le modèle peut exécuter les outils shell, d’écriture et d’édition au niveau de privilège du processus actuel — Qwen Code imprime un avertissement sur stderr dans ce cas. Supprimez-le avecQWEN_CODE_SUPPRESS_YOLO_WARNING=1une fois que vous avez examiné le compromis. Par défaut, il utilise une image Docker pré-construiteqwen-code-sandbox.
Pour les besoins de sandboxing spécifiques à un projet, vous pouvez créer un Dockerfile personnalisé à l’emplacement .qwen/sandbox.Dockerfile dans le répertoire racine de votre projet. Ce Dockerfile peut être basé sur l’image sandbox de base :
FROM qwen-code-sandbox
# Ajoutez ici vos dépendances ou configurations personnalisées
# 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 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, et leur durée 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 réussi. Nous ne collectons pas le contenu des invites ou des réponses.
- Informations de session : Nous collectons des informations sur 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, comme votre nom, votre adresse e-mail ou vos clés API.
- Contenu des invites et des réponses : Nous ne journalisons pas le contenu de vos invites ni les réponses du modèle.
- Contenu des fichiers : Nous ne journalisons pas le contenu des fichiers lus ou écrits par l’interface CLI.
Comment se désinscrire :
Vous pouvez à tout moment vous désinscrire de la collecte de 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 Alibaba Cloud RUM.