Configuration de Qwen Code
Authentification / Clés API : L’authentification (clé API, Alibaba Cloud Coding Plan) et les variables d’environnement liées à l’authentification (comme OPENAI_API_KEY) sont documentées dans Authentification.
Note sur le nouveau format de configuration : Le format du fichier settings.json a été mis à jour vers une nouvelle structure plus organisée. L’ancien format sera migré automatiquement.
Qwen Code offre plusieurs façons de configurer son comportement, notamment via des variables d’environnement, des arguments en ligne de commande et des fichiers de paramètres. Ce document décrit les différentes méthodes de configuration et les paramètres disponibles.
Niveaux de configuration
La configuration est appliquée selon l’ordre de priorité suivant (les numéros les plus bas sont écrasés par les numéros les plus élevés) :
| Niveau | Source de configuration | Description |
|---|---|---|
| 1 | Valeurs par défaut | Valeurs par défaut codées en dur dans l’application |
| 2 | Fichier des paramètres système par défaut | Paramètres par défaut à l’échelle du système qui peuvent être remplacés par d’autres fichiers de paramètres |
| 3 | Fichier des paramètres utilisateur | Paramètres globaux pour l’utilisateur actuel |
| 4 | Fichier des paramètres du projet | Paramètres spécifiques au projet |
| 5 | Fichier des paramètres système | Paramètres à l’échelle du système qui remplacent tous les autres fichiers de paramètres |
| 6 | Variables d’environnement | Variables à l’échelle du système ou spécifiques à une session, potentiellement chargées depuis des fichiers .env |
| 7 | Arguments en ligne de commande | Valeurs transmises lors du lancement de la CLI |
Fichiers de paramètres
Qwen Code utilise des fichiers de paramètres JSON pour la configuration persistante. Il existe quatre emplacements pour ces fichiers :
| Type de fichier | Emplacement | Portée |
|---|---|---|
| Fichier des 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 remplacé en utilisant la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH. | Fournit une couche de base de paramètres par défaut à l’échelle du système. Ces paramètres ont la priorité la plus basse et sont destinés à être remplacés par les paramètres utilisateur, de projet ou de remplacement système. |
| Fichier des paramètres utilisateur | ~/.qwen/settings.json (où ~ est votre répertoire personnel). | S’applique à toutes les sessions Qwen Code de l’utilisateur actuel. |
| Fichier des paramètres du projet | .qwen/settings.json dans le répertoire racine de votre projet. | S’applique uniquement lors de l’exécution de Qwen Code depuis ce projet spécifique. Les paramètres du projet remplacent les paramètres utilisateur. |
| Fichier des 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 de projet. Peut être utile pour les administrateurs système en entreprise afin de contrôler les configurations Qwen Code des utilisateurs. |
Note sur les variables d’environnement dans les paramètres : Les valeurs de type chaîne de caractères dans vos fichiers settings.json peuvent référencer des variables d’environnement en utilisant la syntaxe $VAR_NAME ou ${VAR_NAME}. Ces variables seront résolues automatiquement au chargement des paramètres. Par exemple, si vous avez une variable d’environnement MY_API_TOKEN, vous pouvez l’utiliser dans settings.json comme ceci : "apiKey": "$MY_API_TOKEN".
Le répertoire .qwen dans votre projet
En plus d’un fichier de paramètres de projet, le répertoire .qwen d’un projet peut contenir d’autres fichiers spécifiques au projet liés au fonctionnement de Qwen Code, tels que :
- Profils de sandbox personnalisés (par ex.
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Agent Skills sous
.qwen/skills/(chaque Skill est un répertoire contenant unSKILL.md).
Migration de la configuration
Qwen Code migre automatiquement les anciens paramètres de configuration vers le nouveau format. Les anciens fichiers de paramètres sont sauvegardés avant la migration. Les paramètres suivants ont été renommés d’une nomenclature négative (disable*) à positive (enable*) :
| Ancien paramètre | Nouveau paramètre | Notes |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Consolidé en un seul paramètre |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Inversion des valeurs booléennes : Lors de la migration, les valeurs booléennes sont inversées (par ex., disableAutoUpdate: true devient enableAutoUpdate: false).
Politique de consolidation pour disableAutoUpdate et disableUpdateNag
Lorsque les deux anciens paramètres sont présents avec des valeurs différentes, la migration suit cette politique : si soit disableAutoUpdate soit 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 en catégories. La plupart des paramètres doivent être placés dans leur objet de catégorie de niveau supérieur correspondant dans votre fichier settings.json. Quelques paramètres de niveau supérieur comme proxy et plansDirectory restent des clés racines directes pour des raisons de compatibilité.
general
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
general.preferredEditor | string | L’éditeur préféré pour ouvrir les fichiers. | undefined |
general.vimMode | boolean | Active les raccourcis clavier Vim. | false |
general.enableAutoUpdate | boolean | Active la vérification et l’installation automatiques des mises à jour au démarrage. | true |
general.showSessionRecap | boolean | Affiche automatiquement un récapitulatif d’une ligne « là où vous vous êtes arrêté » lors du retour sur le terminal après une absence. Désactivé par défaut. Utilisez /recap pour le déclencher manuellement indépendamment de ce paramètre. | false |
general.sessionRecapAwayThresholdMinutes | number | Nombre de minutes pendant lesquelles le terminal doit être au second plan avant qu’un récapitulatif automatique ne se déclenche lors de la reprise du focus. Utilisé uniquement lorsque showSessionRecap est activé. | 5 |
general.gitCoAuthor.commit | boolean | Ajoute un trailer Co-authored-by aux messages de commit git ET attache 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 | Ajoute une ligne d’attribution Qwen Code aux descriptions des pull requests lors de l’exécution de gh pr create. | true |
general.defaultFileEncoding | enum | 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 cela que si votre projet nécessite spécifiquement le BOM. | "utf-8" |
general.voice.enabled | boolean | Active la dictée vocale dans la saisie du prompt. Peut également être activé/désactivé avec la commande /voice. Nécessite qu’un modèle de transcription (voiceModel) soit configuré. | false |
general.voice.mode | enum | Comportement du push-to-talk : "hold" pour parler tant que la touche est maintenue, ou "tap" pour démarrer et appuyer à nouveau (ou mettre en pause) pour arrêter et soumettre. | "hold" |
general.voice.language | string | Langue parlée préférée pour la transcription vocale (par ex. "english", "chinese"). Laisser vide pour une détection automatique. | "" |
general.voice.keytermsFile | string | Chemin vers un fichier de termes clés personnalisé (un terme par ligne, # pour les commentaires) qui oriente la transcription vocale vers des termes spécifiques au domaine. Les chemins relatifs sont résolus depuis la racine de l’espace de travail ; la valeur par défaut est .qwen/voice-keyterms.txt s’il est présent. Lu uniquement dans les espaces de travail de confiance. S’applique uniquement aux modèles Qwen ASR (qwen3-asr-*). | "" |
general.voice.refineTranscript | boolean | Nettoie les transcriptions vocales avec le modèle rapide avant de les insérer — supprime les mots de remplissage et corrige les erreurs de reconnaissance tout en préservant le sens. Revient à la transcription brute en cas d’échec, et est ignoré si aucun modèle rapide n’est configuré. | true |
general.cleanupPeriodDays | number | Nombre de 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 consultées dans la dernière heure ainsi que celle actuellement active. Les modifications prennent effet après le redémarrage. | 30 |
general.language | enum | Langue de l’interface utilisateur. Utilisez "auto" pour détecter depuis les paramètres du 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 pour la sortie du modèle. Utilisez "auto" pour détecter depuis les paramètres du système, ou définissez une langue spécifique. Nécessite un redémarrage. | "auto" |
general.dynamicCommandTranslation | boolean | Active la traduction par IA des descriptions des commandes slash dynamiques. Lorsqu’elle est désactivée, les commandes dynamiques conservent leurs descriptions d’origine et ignorent les appels au modèle de traduction. | false |
general.terminalBell | boolean | Joue un son de cloche du terminal lorsqu’une réponse est terminée ou nécessite une approbation. | true |
general.preventSystemSleep | boolean | Empêche le système de se mettre en veille pendant que Qwen Code diffuse une réponse du modèle ou exécute des outils. Le temps d’inactivité du prompt et les demandes d’autorisation n’inhibent pas la mise en veille. Lu une seule fois au démarrage, les modifications prennent donc effet après le redémarrage. | true |
general.chatRecording | boolean | Enregistre l’historique des discussions sur le disque. La désactivation de cette option empêche également --continue et --resume de fonctionner. Nécessite un redémarrage. | true |
output
| Paramètre | Type | Description | Par défaut | Valeurs possibles |
|---|---|---|---|---|
output.format | string | Le format de sortie de la CLI. | "text" | "text", "json" |
output.showTimestamps | boolean | Afficher un horodatage [HH:MM:SS] avant chaque réponse de l’assistant. | false |
ui
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
ui.theme | string | Le thème de couleurs de l’interface utilisateur. Voir Themes pour les options disponibles. | "Qwen Dark" |
ui.customThemes | object | Définitions de thèmes personnalisés. | {} |
ui.statusLine | object | Configuration personnalisée de la barre d’état. Prend en charge les options command, refreshInterval, respectUserColors et hideContextIndicator. Voir Status Line. | 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 les réponses) dans l’interface utilisateur. Voir Contextual Tips. | false |
ui.hideBanner | boolean | Masquer le logo ASCII de démarrage et le panneau d’information. Les astuces et la saisie du chat s’affichent toujours sauf si ui.hideTips est également défini. | false |
ui.customBannerTitle | string | Remplacer le titre par défaut >_ Qwen Code dans le panneau d’information 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 rendue entre le titre de la bannière et la ligne d’authentification/modèle, à la place de la ligne d’espacement vide. Nettoyé ; limité à 160 caractères. Vide (par défaut) conserve l’espacement vide d’origine. | "" |
ui.customAsciiArt | string | object | Remplacer 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 seule fois au démarrage avec O_NOFOLLOW sur POSIX, limité à 64 Ko), ou { "small": ..., "large": ... } pour une sélection en fonction de la largeur. Nettoyé ; limité à 200 lignes × 200 colonnes par niveau. | undefined |
ui.showLineNumbers | boolean | Afficher les numéros de ligne dans les blocs de code dans la sortie de la 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. Basculez pendant une session avec Alt/Option+M ; sur macOS, le terminal doit envoyer Option comme Meta. Voir Markdown Rendering. | "render" |
ui.showCitations | boolean | Afficher 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.history.collapsePreviewCount | number | Nombre de tours d’utilisateur les plus récents à garder visibles lorsque ui.history.collapseOnResume est activé. 0 réduit tout l’historique restauré par défaut ; -1 affiche tout l’historique restauré. | 0 |
ui.compactMode | boolean | Masquer la sortie des outils et la réflexion pour une vue plus épurée. Basculez avec Ctrl+O pendant une session ou via la boîte de dialogue Paramètres. Les invites d’approbation des outils ne sont jamais masquées, même en mode compact. Le paramètre persiste d’une session à l’autre. | 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 signalées via l’indicateur +N lines. Les erreurs, les commandes initiées par l’utilisateur préfixées par !, la confirmation des outils et les shells intégrés ciblés affichent toujours la sortie complète. | 5 |
ui.enableWelcomeBack | boolean | Afficher la boîte de dialogue de bienvenue lors du retour sur un projet avec un historique de conversation. Lorsqu’elle est activée, Qwen Code détectera automatiquement si vous revenez sur 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 de repartir à zéro. 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 fermeture. | 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 texte (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, la CLI alternera entre ces phrases au lieu des phrases par défaut. | [] |
ui.showResponseTokensPerSecond | boolean | Afficher une estimation en direct des tokens/seconde à côté du compteur de tokens de réponse pendant que le modèle diffuse. Il s’agit d’une indication de la vitesse de génération, et non d’une ETA ou d’un pourcentage d’achèvement. Prend effet lors de la prochaine session. | false |
ui.enableFollowupSuggestions | boolean | Activer les followup suggestions qui prédisent ce que vous voulez taper ensuite après la réponse du modèle. Les suggestions apparaissent sous forme de texte d’espace réservé et sont acceptées avec Tab, Entrée ou Flèche droite (ce qui remplit la saisie — elles ne sont pas soumises automatiquement). Activé par défaut ; définissez sur false pour désactiver. | true |
ui.enableCacheSharing | boolean | Utiliser des requêtes forkées conscientes 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 de préfixe (expérimental). | true |
ui.enableSpeculation | boolean | Exécuter de manière spéculative les suggestions acceptées avant la soumission. Les résultats apparaissent instantanément lorsque vous acceptez (expérimental). | false |
ui.showStatusInTitle | boolean | Afficher le nom et le statut de la session Qwen Code dans le titre de la fenêtre du terminal. | true |
ui.disableWorkflowKeywordTrigger | boolean | Lorsque true, mentionner le mot workflow dans un prompt ne redirige plus subtilement le tour vers l’outil Workflow (et l’indicateur workflow active du pied de page est supprimé). S’applique uniquement lorsque les workflows sont activés. | false |
ui.enableUserFeedback | boolean | Afficher une boîte de dialogue de feedback optionnelle après les conversations pour aider à améliorer les performances de Qwen. | true |
ui.compactInline | boolean | Affichage compact des outils au sein de chaque groupe au lieu de les fusionner entre les groupes. Nécessite que ui.compactMode soit activé. Nécessite un redémarrage. | false |
ui.useTerminalBuffer | boolean | Rendre l’historique des conversations dans une fenêtre défilable intégrée à l’application au lieu du tampon de défilement du terminal. Recommandé si vous observez des scintillements, des défilements intempestifs ou des gels de l’interface lors de longues sessions. Faites défiler avec Shift+↑/↓ (ligne), PgUp/PgDn (page), Ctrl+Home/End (haut/bas) ou la molette de la souris. N’utilise pas le tampon de défilement du terminal hôte lorsqu’il est activé ; maintenez Shift (ou Option sur macOS) enfoncé lors du glissement pour la sélection de texte native. | false |
ui.hideBuiltinWorktreeIndicator | boolean | Masquer la ligne intégrée ⎇ worktree-<branch> (<slug>) dans le pied de page. L’état du worktree est toujours transmis aux scripts de barre d’état personnalisés via la charge utile stdin. Conservez la valeur par défaut sauf si votre barre d’état personnalisée affiche le worktree lui-même. | false |
ide
| Setting | Type | Description | Default |
|---|---|---|---|
ide.enabled | boolean | Active le mode d’intégration IDE. | false |
ide.hasSeenNudge | boolean | Indique si l’utilisateur a vu l’invitation à l’intégration IDE. | false |
privacy
| Setting | Type | Description | Default |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Active 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.reasoningEffort | enum | Niveau de réflexion des modèles capables de raisonnement, appliqué à tous les fournisseurs. Défini avec la commande /effort (low, medium, high, xhigh, max). Chaque fournisseur mappe et limite cette valeur à ce que le modèle actif prend en charge (par ex. Gemini plafonne à high ; Anthropic limite aux paliers dont le modèle dispose). Laisser non défini pour utiliser la valeur par défaut du modèle/fournisseur. | undefined |
model.baseUrl | string | Persisté automatiquement par le sélecteur de modèle pour lever les ambiguïtés lorsque plusieurs entrées modelProviders partagent le même identifiant de modèle. Non destiné à être défini manuellement — utilisez plutôt le sélecteur /model ou une entrée modelProviders ; une valeur obsolète modifiée manuellement peut rediriger silencieusement les requêtes vers un autre fournisseur ayant le même identifiant. | undefined |
model.sessionTokenLimit | number | Nombre maximal de tokens de prompt enregistrés autorisé avant l’envoi du message suivant. -1 signifie illimité ; 0 est également traité comme illimité (contrairement à model.maxToolCalls, où 0 interdit tous les appels). Lorsque le nombre de prompts enregistrés dépasse la limite, le prochain envoi est ignoré (la session n’est pas interrompue). | -1 |
model.maxSessionTurns | number | Nombre maximal de tours utilisateur/modèle/outil à conserver dans une session. -1 signifie illimité. | -1 |
model.maxWallTimeSeconds | number | Budget en temps réel pour les exécutions sans interface / non supervisées, en secondes. -1 signifie illimité. Peut être remplacé par invocation via --max-wall-time, qui requiert 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 erreurs de frappe. Omettez le flag pour revenir à ce paramètre. Interrompt l’exécution avec le code de sortie 55 en cas de dépassement. | -1 |
model.maxToolCalls | number | Budget cumulatif d’appels d’outils 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 erreurs de frappe. Peut être remplacé via --max-tool-calls. Interrompt l’exécution avec le code de sortie 55 en cas de dépassement. | -1 |
model.maxSubagentDepth | number | Profondeur maximale d’imbrication des sous-agents (niveaux basés sur 1 : un sous-agent de premier niveau est le niveau 1). 1 maintient les sous-agents disponibles mais désactive l’imbrication — le comportement avant l’imbrication. Les valeurs sont limitées à la plage 1–100 ; les valeurs non finies reviennent à la valeur par défaut. Les coéquipiers, les forks et les agents générés par workflow ne s’imbriquent jamais, quel que soit ce paramètre. Peut être remplacé via --max-subagent-depth. | 5 |
model.generationConfig | object | Remplacements avancés transmis au générateur de contenu sous-jacent. Prend en charge les contrôles de requête tels que timeout, maxRetries, enableCacheControl, splitToolMedia (par défaut true ; divise les médias retournés par les outils — y compris les images lues par le read_file intégré — en un message utilisateur de suivi au lieu du message role: "tool" qui viole les spécifications, afin que les serveurs strictement compatibles OpenAI comme doubao / new-api / LM Studio puissent les voir ; définissez sur false pour restaurer le comportement legacy d’intégration dans l’outil), toolResultContentFormat (par défaut "parts" ; définissez sur "string" uniquement pour les runtimes legacy compatibles OpenAI dont les modèles d’outils ignorent les parties de contenu texte), contextWindowSize (remplace la taille de la fenêtre de contexte du modèle), modalities (remplace les modalités d’entrée auto-détectées), 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 paramètres de réglage fin 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É. Remplacé par context.autoCompactThreshold (voir la section #### context ci-dessous). L’auto-compaction utilise désormais une échelle de seuils à trois niveaux (warn / auto / hard) calculée en interne à partir de la fenêtre de contexte du modèle via la fonction computeThresholds(). L’ancien paramètre est ignoré silencieusement (pas d’avertissement au démarrage). Voir la PR #4345 / docs/design/auto-compaction-threshold-redesign.md pour la justification de la refonte. | N/A |
model.chatCompression.maxRecentFilesToRetain | number | Nombre de fichiers récemment modifiés dont le contenu actuel est restauré (intégré si petit, sinon référencé par chemin) dans l’historique après l’auto-compaction. 0 n’en restaure aucun. Remplacement par variable d’env : QWEN_COMPACT_MAX_RECENT_FILES. | 5 |
model.chatCompression.maxRecentImagesToRetain | number | Nombre d’images les plus récentes (captures d’écran d’outils / collages utilisateur) restaurées dans l’historique après l’auto-compaction. 0 n’en restaure aucune. Remplacement par variable d’env : QWEN_COMPACT_MAX_RECENT_IMAGES. | 3 |
model.chatCompression.enableScreenshotTrigger | boolean | Lorsque true, l’auto-compaction se déclenche également une fois que le nombre d’images retournées par les outils accumulées dans l’historique atteint screenshotTriggerThreshold, indépendamment de l’utilisation des tokens — conçu pour les sessions d’utilisation par ordinateur où les captures d’écran fréquentes diluent l’attention du modèle. Ne compte que les images retournées dans les résultats d’outils, pas les images collées par l’utilisateur. Remplacement par variable d’env : QWEN_COMPACT_SCREENSHOT_TRIGGER (1/true/0/false). | true |
model.chatCompression.screenshotTriggerThreshold | number | Nombre d’images retournées par les outils à partir duquel le déclencheur de capture d’écran se déclenche (uniquement lorsque enableScreenshotTrigger). La compaction réinitialise le compte — les images survivantes sont réintégrées en tant que parties de premier niveau, que le déclencheur ne compte pas — il ne se redéclenchera donc pas immédiatement. Remplacement par variable d’env : QWEN_COMPACT_SCREENSHOT_THRESHOLD. | 50 |
model.skipNextSpeakerCheck | boolean | Ignore la vérification du prochain intervenant. | true |
model.skipLoopDetection | boolean | Désactive les vérifications de détection de boucle en streaming. La valeur par défaut est true (la détection de boucle est ignorée) pour éviter les faux positifs qui interrompent les workflows légitimes. Définissez sur false pour réactiver la détection de boucle en streaming — utile comme garde-fou dans les exécutions sans interface / non interactives où une répétition bloquée peut autrement gaspiller le budget. | true |
model.maxToolCallsPerTurn | number | Limite stricte sur les appels d’outils au sein d’un seul tour (un tour du modèle plus ses continuations de résultats d’outils ; les continuations de Stop-hook bloquantes telles que les itérations de /goal démarrent un nouveau budget). Disjoncteur toujours actif contre les tours incontrôlés, indépendant de model.skipLoopDetection ; les détecteurs de boucles basés sur des motifs se déclenchent bien avant cette limite, qui ne borne que le volume total. Définissez sur 0 ou une valeur négative pour désactiver la limite. Choisir « Désactiver la détection de boucle pour cette session » dans la boîte de dialogue de détection de boucle la supprime également pour le reste de la session. | 100 |
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 si vous souhaitez économiser des tokens au démarrage. | false |
model.enableOpenAILogging | boolean | Active la journalisation des appels à l’API OpenAI pour le débogage et l’analyse. Lorsqu’elle est activée, les requêtes et réponses API sont journalisées dans des fichiers JSON. | false |
model.openAILoggingDir | string | Chemin de répertoire personnalisé pour les journaux de l’API OpenAI. Si non spécifié, la valeur par défaut est logs/openai dans le répertoire de travail actuel. Prend en charge les chemins absolus, les chemins relatifs (résolus à partir du répertoire de travail actuel) et l’expansion de ~ (répertoire personnel). | undefined |
| Exemple 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
}
}
}
}timeout (délai d’expiration de la requête) :
timeout est le délai d’expiration par requête en millisecondes (par défaut 120000). Définissez-le à 0 pour désactiver le délai d’expiration de la requête — conformément à la convention QWEN_STREAM_IDLE_TIMEOUT_MS=0 — plutôt que d’interrompre la requête. Il peut également être défini via la variable d’environnement QWEN_CODE_API_TIMEOUT_MS. Ceci est distinct de QWEN_STREAM_IDLE_TIMEOUT_MS, qui limite l’inactivité entre les chunks streamés.
max_tokens (limite de tokens en sortie) :
Lorsque ni samplingParams.max_tokens ni QWEN_CODE_MAX_OUTPUT_TOKENS n’est défini, Qwen Code utilise généralement la limite de sortie déclarée du modèle sélectionné comme limite de sortie par défaut de la requête. Si la réponse atteint tout de même cette limite, Qwen Code peut réessayer avec une limite augmentée (avec un plancher de 64K) puis récupérer au fil des tours de continuation.
Pour les fournisseurs compatibles OpenAI, samplingParams sert également d’échappatoire pour le format de requête : lorsqu’il est défini, ses clés sont transmises telles quelles et Qwen Code ne synthétise pas de valeur par défaut pour max_tokens. Utilisez ceci pour les paramètres spécifiques au fournisseur tels que max_completion_tokens.
Pour forcer une limite de sortie fixe, définissez samplingParams.max_tokens dans vos paramètres ou utilisez la variable d’environnement QWEN_CODE_MAX_OUTPUT_TOKENS. Les limites explicites désactivent l’augmentation automatique des tokens en sortie.
toolResultContentFormat :
Contrôle la sérialisation des résultats d’outils contenant uniquement du texte dans les requêtes compatibles OpenAI. La valeur par défaut "parts" conserve la structure standard du tableau de parties de contenu. Définissez "string" uniquement pour les runtimes hérités compatibles OpenAI dont les modèles d’outils ignorent les parties de contenu textuel, comme les anciens modèles GLM-5.1 vLLM/SGLang. Les médias retournés par les outils restent contrôlés par splitToolMedia.
contextWindowSize :
Remplace la taille par défaut de la fenêtre de contexte pour le modèle sélectionné. Qwen Code détermine la fenêtre de contexte en utilisant des valeurs par défaut intégrées basées sur la correspondance du nom du modèle, avec une valeur de secours constante. Utilisez ce paramètre lorsque la limite de contexte effective d’un fournisseur diffère de celle par défaut de Qwen Code. Cette valeur définit la capacité de contexte maximale supposée du modèle, et non une limite de tokens par requête.
Lorsque le modèle sélectionné est défini dans modelProviders, définissez
contextWindowSize dans le generationConfig de cette entrée fournisseur au lieu du
model.generationConfig de premier niveau. Les entrées de modèle fournisseur sont scellées, donc
les paramètres de génération de premier niveau ne remplissent pas les champs fournisseur manquants.
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 des 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 à false pour les types non pris en charge.
customHeaders :
Vous 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 supervision, 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 fournisseur correspondante, définissez-le dans model.generationConfig.customHeaders. Aucune fusion n’est effectuée entre les deux niveaux.
Le champ extra_body vous permet d’ajouter des paramètres personnalisés au corps de la requête envoyé à 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 est uniquement pris en charge 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 fournisseur correspondante, définissez-le dans model.generationConfig.extra_body.
Exemples pour model.openAILoggingDir :
"~/qwen-logs"- Enregistre les logs dans le répertoire~/qwen-logs"./custom-logs"- Enregistre les logs dans./custom-logspar rapport au répertoire courant"/tmp/openai-logs"- Enregistre les logs dans le chemin absolu/tmp/openai-logs
fastModel
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
fastModel | string | Modèle utilisé pour générer les suggestions de prompt et l’exécution spéculative. Laissez vide pour utiliser le modèle principal. Un modèle plus petit/rapide (par ex., qwen3-coder-flash) réduit la latence et le coût. Peut également être défini via /model --fast. | "" |
visionModel
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
visionModel | string | Modèle capable de traiter des images utilisé comme pont de vision : lorsqu’un modèle principal textuel uniquement reçoit une image, elle est d’abord transcrite par ce modèle. Laissez vide pour sélectionner automatiquement un modèle de vision du même fournisseur. Peut également être défini via /model --vision. | "" |
voiceModel
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
voiceModel | string | Modèle utilisé pour la transcription vocale. Laissez vide pour garder la dictée vocale désactivée jusqu’à ce qu’un modèle vocal soit sélectionné. Peut également être défini via /model --voice. | "" |
modelFallbacks
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
modelFallbacks | string | Liste ordonnée des ID de modèles de secours (séparés par des virgules, max 3) à essayer lorsque le modèle principal atteint des erreurs de capacité (429/503/529). Exemple : "qwen-plus,qwen-turbo". Peut également être défini via le flag CLI --fallback-model. Nécessite un redémarrage. | "" |
modelPricing
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
modelPricing | object | Tarification optionnelle par modèle pour l’estimation des coûts dans /stats model. Exemple : { "qwen3-coder": { "inputPerMillionTokens": 0.30, "outputPerMillionTokens": 1.20 } }. | undefined |
context
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
context.fileName | string or array of strings | Le nom du ou des fichiers de contexte. | undefined |
context.autoCompactThreshold | number | Fraction de la fenêtre de contexte à laquelle l’auto-compaction se déclenche. Doit être supérieur à 0 et au maximum à 1. La valeur par défaut est 0.7 (70 %). Pour les grandes fenêtres de contexte (>110K tokens), la branche absolue du système de seuils à trois niveaux domine, de sorte que les valeurs inférieures à ~0.7 peuvent n’avoir aucun effet visible. Les seuils personnalisés affectent principalement les modèles à petite fenêtre (≤128K). Remplace l’ancien model.chatCompression.contextPercentageThreshold. | undefined (utilise 0.7 en interne) |
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 le flag 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é qu’à partir du 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’exclusion personnalisés configurés lors de la recherche. | true |
context.fileFiltering.customIgnoreFiles | array | Fichiers d’exclusion 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 le prompt. | true |
context.fileFiltering.enableFuzzySearch | boolean | Lorsque true, active les capacités de recherche floue lors de la recherche de fichiers. Définir sur false pour améliorer les performances sur les projets comportant un grand nombre de fichiers. | true |
context.clearContextOnIdle.toolResultsThresholdMinutes | number | Minutes d’inactivité avant d’effacer le contenu des anciens résultats d’outils. Utilisez -1 pour désactiver le déclencheur d’inactivité. | 60 |
context.clearContextOnIdle.toolResultsNumToKeep | integer | Nombre entier de résultats d’outils 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 des résultats d’outils 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’outils récents protégés peuvent maintenir le total au-dessus de ce seuil. | 500000 |
Dépannage des performances de recherche de fichiers
Si vous rencontrez des problèmes de performances avec la recherche de fichiers (par exemple, avec les complétions @), en particulier dans les projets contenant un très grand nombre de fichiers, voici quelques solutions que vous pouvez essayer, par ordre de recommandation :
- Utiliser un fichier ignore : Créez un fichier
.qwenignoreou un fichier ignore personnalisé configuré à la racine de votre projet pour exclure les répertoires contenant un grand nombre de fichiers dont vous n’avez pas besoin de référencer (par exemple, les artefacts de build, les logs,node_modules). Réduire le nombre total de fichiers analysés 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 de fichiers récursive : En dernier recours, vous pouvez désactiver complètement la recherche de fichiers récursive en définissant
enableRecursiveFileSearchsurfalse. Ce sera l’option la plus rapide car elle évite une analyse récursive de votre projet. Cependant, cela signifie que vous devrez saisir le chemin complet des fichiers lors de l’utilisation des complétions@.
tools
| Paramètre | Type | Description | Par défaut | Remarques |
|---|---|---|---|---|
tools.sandbox | boolean or string | Environnement d’exécution sandbox (peut être un booléen ou une chaîne de chemin). | undefined | |
tools.sandboxImage | string | URI de l’image sandbox utilisée par Docker/Podman lorsque --sandbox-image et QWEN_SANDBOX_IMAGE ne sont pas définis. | undefined | |
tools.shell.enableInteractiveShell | boolean | Utilise node-pty pour une expérience de shell interactif. Le repli vers child_process s’applique toujours. | true | |
tools.core | array of strings | Obsolète. Sera supprimé dans la prochaine version. Utilisez permissions.allow + permissions.deny à la place. Restreint les outils intégrés à une liste blanche. Tous les outils ne figurant pas dans la liste sont désactivés. | undefined | |
tools.exclude | array of strings | Obsolète. Utilisez permissions.deny à la place. Noms des outils à exclure de la découverte. Migré automatiquement au format permissions lors du premier chargement. | undefined | |
tools.allowed | array of strings | Obsolète. Utilisez permissions.allow à la place. Noms des outils qui contournent la boîte de dialogue de confirmation. Migré automatiquement au format permissions lors du premier chargement. | undefined | |
tools.approvalMode | string | Définit le mode d’approbation par défaut pour l’utilisation des outils. | default | Valeurs possibles : plan (analyser uniquement, ne pas modifier les fichiers ni exécuter de commandes), default (exiger une approbation avant la modification des fichiers ou l’exécution de commandes shell), auto-edit (approuver automatiquement les modifications de fichiers), auto (le classificateur LLM approuve automatiquement les actions sûres et bloque les actions risquées), yolo (approuver automatiquement tous les appels d’outils) |
tools.discoveryCommand | string | Commande à exécuter pour la découverte des outils. | undefined | |
tools.callCommand | string | Définit une commande shell personnalisée pour appeler un outil spécifique découvert à l’aide de tools.discoveryCommand. La commande shell doit répondre aux critères suivants : elle doit prendre le nom de la fonction (exactement comme dans la déclaration de fonction ) comme premier argument de ligne de commande. Elle doit lire les arguments de la fonction au format JSON sur stdin, de manière analogue à functionCall.args. Elle doit renvoyer la sortie de la fonction au format JSON sur stdout, de manière analogue à functionResponse.response.content. | undefined | |
tools.useRipgrep | boolean | Utilise ripgrep pour la recherche de contenu de fichiers au lieu de l’implémentation de repli. Offre des performances de recherche plus rapides. | true | |
tools.useBuiltinRipgrep | boolean | Utilise le binaire ripgrep intégré. Lorsqu’il est défini sur false, la commande rg au niveau du système sera utilisée à la place. Ce paramètre n’est effectif que lorsque tools.useRipgrep est true. | true | |
tools.truncateToolOutputThreshold | number | Tronque la sortie de l’outil si elle dépasse ce nombre de caractères. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 25000 | Nécessite un redémarrage : Oui |
tools.truncateToolOutputLines | number | Nombre maximum de lignes ou d’entrées conservées lors de la troncature de la sortie de l’outil. S’applique aux outils Shell, Grep, Glob, ReadFile et ReadManyFiles. | 1000 | Nécessite un redémarrage : Oui |
tools.computerUse.enabled | boolean | Active les outils intégrés Computer Use (automatisation de bureau native cua-driver). Lorsque true (par défaut), les outils computer_use__* sont enregistrés en tant qu’outils intégrés différés ; le premier appel télécharge le binaire cua-driver épinglé et signé dans ~/.qwen/computer-use/ et guide l’utilisateur à travers les autorisations d’accessibilité / d’enregistrement d’écran de macOS. | true | Nécessite un redémarrage : Oui |
tools.computerUse.maxImageDimension | number | Limite de pixels appliquée au bord le plus long des captures d’écran cua-driver (via max_image_dimension de set_config). -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. Remplacement par variable d’env : QWEN_COMPUTER_USE_MAX_IMAGE_DIMENSION (un entier non négatif ; prend le pas sur ce paramètre) |
tools.computerUse.idleTimeoutMs | number | Millisecondes pendant lesquelles le processus cua-driver reste actif après le dernier appel computer_use__*. La valeur par défaut est 300000 (5 minutes). Définissez sur 0 pour le maintenir en cours d’exécution jusqu’à la fermeture de Qwen Code. | 300000 | Nécessite un redémarrage : Oui |
tools.toolSearch.enabled | boolean | Charge les outils MCP à la demande via ToolSearch pour réduire la taille du prompt. Désactivez cette option pour les modèles qui s’appuient sur la mise en cache KV basée sur les préfixes (par exemple, DeepSeek) afin de maintenir le préfixe du prompt stable et de maximiser les taux de réussite du cache. | true | Nécessite un redémarrage : Oui |
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 lors du 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 | Active l’extraction en arrière-plan des mémoires à partir des conversations. | true |
memory.enableManagedAutoDream | boolean | Active la consolidation automatique (déduplication et nettoyage) des mémoires collectées. | true |
memory.enableAutoSkill | boolean | Active la revue en arrière-plan pour détecter les skills réutilisables du projet après les sessions utilisant intensivement les outils. | true |
memory.autoSkillConfirm | boolean | Demande une confirmation avant que les skills auto-générés ne soient ajoutés à la bibliothèque de skills. Si désactivé, les auto-skills sont sauvegardés immédiatement. | true |
memory.enableTeamMemory | boolean | Active un niveau de mémoire de projet partagé avec les collaborateurs via le répertoire .qwen/team-memory/ suivi par git. Les écritures y sont analysées pour détecter les secrets et peuvent être consultées dans le diff git. | false |
memory.enableTeamMemorySync | boolean | Lorsque la mémoire d’équipe est activée, commit, pull (fast-forward) et push automatiquement le répertoire .qwen/team-memory/ au démarrage de la session pour synchroniser les collaborateurs. Nécessite un upstream git configuré. | false |
Consultez Memory pour plus de détails sur le fonctionnement de l’auto-memory et sur l’utilisation des commandes /memory, /remember et /dream.
permissions
Le système de permissions fournit un contrôle fin sur les outils qui peuvent s’exécuter, ceux qui nécessitent une confirmation et ceux qui sont bloqués.
Priorité de décision (de la plus haute à la plus basse) : 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 | array of strings | Règles pour les appels d’outils approuvés automatiquement (aucune confirmation nécessaire). Fusionnées dans tous les scopes (utilisateur + projet + système). | undefined |
permissions.ask | array of strings | Règles pour les appels d’outils qui nécessitent toujours une confirmation utilisateur. Prioritaire sur allow. | undefined |
permissions.deny | array of strings | Règles pour les appels d’outils bloqués. Priorité la plus élevée — écrase à la fois allow et ask. | undefined |
Alias des noms d’outils (l’un ou l’autre 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 fichiers, utilisezReadFile(/path/**)ouread_file(/path/**).
Exemples de syntaxe de règles :
| Règle | Signification |
|---|---|
"Bash" | Toutes les commandes shell |
"Bash(git *)" | Commandes shell commençant par git (limite de mot : PAS gitk) |
"Bash(git push *)" | Commandes shell comme git push origin main |
"Bash(npm run *)" | N’importe quel script npm run |
"Read" | Toutes les opérations de lecture de fichiers (read, grep, glob, list) |
"Read(./secrets/**)" | Lire n’importe quel fichier sous ./secrets/ de manière récursive |
"Edit(/src/**/*.ts)" | Éditer 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 home | ~/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 de permission pour Read, Edit et WebFetch sont également appliquées lorsque l’agent exécute des commandes shell équivalentes. Par exemple, si Read(./.env) est dans deny, l’agent ne peut pas le 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 :
| Paramètre hérité | Règle permissions équivalente | Notes |
|---|---|---|
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 afficher, ajouter et supprimer des règles sans modifiersettings.jsondirectement.
slashCommands
Contrôle les commandes slash disponibles dans le CLI. Utile pour restreindre la surface de commande dans les déploiements multi-tenant ou en entreprise.
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
slashCommands.disabled | array of strings | Noms des commandes slash à masquer et dont l’exécution sera refusée. La correspondance se fait sans casse sur 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 union à travers les scopes, ainsi les paramètres du workspace peuvent ajouter mais pas supprimer les entrées définies dans les paramètres utilisateur ou système. | undefined |
La même denylist peut également être fournie via le flag CLI --disabled-slash-commands (séparés par des virgules ou répétés) et la variable d’environnement QWEN_DISABLED_SLASH_COMMANDS ; les valeurs des trois sources sont fusionnées en union.
Exemple — verrouiller les commandes intégrées pour un déploiement en sandbox :
{
"slashCommands": {
"disabled": ["auth", "mcp", "extensions", "ide", "quit"]
}
}Avec ces valeurs dans un settings.json au niveau système (/etc/qwen-code/settings.json ou QWEN_CODE_SYSTEM_SETTINGS_PATH), les utilisateurs ne peuvent pas réduire la denylist depuis leur propre scope, et les commandes désactivées n’apparaîtront pas dans l’autocomplétion et ne s’exécuteront pas si elles sont tapées.
[!note] Ce paramètre contrôle uniquement les commandes slash (par ex.
/auth,/mcp). Il n’affecte pas les permissions des outils — consultezpermissions.denypour cela. Il n’intercepte pas non plus les raccourcis clavier commeCtrl+CouEsc.
skills
Contrôle les Skills exposées au modèle.
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
skills.disabled | array of strings | Noms des skills à masquer. La correspondance se fait sans casse sur le nom du skill. Les skills masquées n’apparaissent pas dans <available_skills> ni en tant que commandes slash /<name>. Fusionné en union à travers les scopes utilisateur/projet/système, ainsi un projet ne peut pas supprimer les entrées définies dans les paramètres utilisateur ou système. | undefined |
mcp
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
mcp.serverCommand | string | Commande pour démarrer un serveur MCP. | undefined |
mcp.allowed | array of strings | Une allowlist de serveurs MCP à autoriser. 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. Prend en charge les motifs glob (* correspond à n’importe quelle séquence, ? correspond à un seul caractère — par ex. "*puppeteer*") ; les entrées sans caractères glob correspondent exactement. Notez que cela sera ignoré si --allowed-mcp-server-names est défini. | undefined |
mcp.excluded | array of strings | Une denylist de serveurs MCP à exclure. Un serveur listé à la fois dans mcp.excluded et mcp.allowed est exclu. Prend en charge les motifs glob (*, ?) de la même manière que mcp.allowed. Notez que cela sera ignoré si --allowed-mcp-server-names est défini. | undefined |
mcp.toolIdleTimeoutMs | number | Délai d’inactivité en millisecondes pour les appels d’outils MCP. Si le serveur MCP ne produit aucune réponse ou mise à jour de progression dans ce délai, l’appel est interrompu. Doit être compris entre 10000 et 3600000. Peut être surchargé via la variable d’environnement QWEN_CODE_MCP_TOOL_IDLE_TIMEOUT_MS. | 300000 |
Note de sécurité pour les serveurs MCP : Ces paramètres utilisent une correspondance de chaînes simple sur les noms des serveurs MCP, qui peuvent être modifiés. Si vous êtes administrateur système et souhaitez empêcher les utilisateurs de contourner cette restriction, envisagez de configurer les mcpServers au niveau des paramètres système afin que l’utilisateur ne puisse pas configurer ses propres serveurs MCP. Ceci ne doit pas être utilisé comme un mécanisme de sécurité infaillible.
lsp
[!warning] Fonctionnalité expérimentale : La prise en charge de LSP est actuellement expérimentale et désactivée par défaut. Activez-la à l’aide du flag de ligne de commande
--experimental-lsp.
Le Language Server Protocol (LSP) fournit des fonctionnalités d’intelligence de code telles que la navigation vers la définition, la recherche de références et les diagnostics.
La configuration du serveur LSP s’effectue via des fichiers .lsp.json dans le répertoire racine de votre projet, et non via settings.json. Consultez la documentation LSP pour plus de détails et d’exemples de configuration.
security
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
security.folderTrust.enabled | boolean | Paramètre permettant de suivre si l’approbation des dossiers 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 |
security.auth.apiKey | string | Obsolète. Clé API pour l’authentification compatible OpenAI. Migrez vers modelProviders avec envKey à la place — voir Model Providers. | undefined |
security.auth.baseUrl | string | Obsolète. URL de base pour l’API compatible OpenAI. Migrez vers modelProviders à la place — voir Model Providers. | undefined |
advanced
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Configure automatiquement les limites de mémoire de Node.js. | false |
advanced.dnsResolutionOrder | string | Ordre de résolution DNS. | undefined |
advanced.excludedEnvVars | array of strings | Variables d’environnement à exclure du contexte du projet. Spécifie les variables d’environnement qui ne doivent pas être chargées depuis les fichiers .env du projet. Cela empêche les variables d’environnement spécifiques au projet (comme DEBUG=true) d’interférer avec le comportement de la CLI. Les variables des fichiers .qwen/.env ne sont jamais exclues. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | object | Configuration pour la commande de rapport de bug. Remplace l’URL par défaut de 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 approuvés du mode Plan. Les chemins relatifs sont résolus à partir de la racine du projet, et le chemin résolu doit rester dans cette racine. 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 committer les fichiers de plan. | undefined |
experimental
Fonctionnalités expérimentales. Ces interrupteurs activent des capacités en cours de développement et peuvent être modifiés ou supprimés dans les prochaines versions.
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
experimental.cron | boolean | Active les outils cron/loop en session (cron_create, cron_list, cron_delete) afin que le modèle puisse créer des prompts récurrents. Peut être désactivé via la variable d’environnement QWEN_CODE_DISABLE_CRON=1. Nécessite un redémarrage. | true |
experimental.cronRecurringMaxAgeDays | number | Nombre de jours pendant lesquels une tâche cron/loop récurrente reste active avant d’expirer automatiquement (elle s’exécute une dernière fois, puis est supprimée). Définir sur 0 pour désactiver l’expiration afin que les tâches s’exécutent jusqu’à leur suppression — utile pour les déploiements de démons sur le long terme. Peut être remplacé via la variable d’environnement QWEN_CODE_CRON_MAX_AGE_DAYS. Nécessite un redémarrage. | 7 |
experimental.agentTeam | boolean | Active les outils de collaboration d’é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 et non-SDK uniquement. QWEN_CODE_ENABLE_ARTIFACT=1 active record_artifact (métadonnées uniquement) pour les sessions de démons non-SDK et active également l’outil Artifact dans les sessions interactives ; QWEN_CODE_DISABLE_ARTIFACT=1 désactive les deux. Nécessite un redémarrage. | false |
experimental.emitToolUseSummaries | boolean | Génère un court libellé basé sur un LLM après la fin de chaque lot d’appels d’outils. Voir Tool-Use Summaries. 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 avec 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 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 | string | La commande à exécuter pour démarrer le serveur MCP via les entrées/sorties standard. | Oui |
mcpServers.<SERVER_NAME>.args | array of strings | Arguments à passer à la commande. | Oui |
mcpServers.<SERVER_NAME>.env | object | Variables d’environnement à définir pour le processus du serveur. | Oui |
mcpServers.<SERVER_NAME>.cwd | string | Le répertoire de travail dans lequel démarrer le serveur. | Oui |
mcpServers.<SERVER_NAME>.url | string | L’URL d’un serveur MCP qui utilise Server-Sent Events (SSE) pour la communication. | Oui |
mcpServers.<SERVER_NAME>.httpUrl | string | L’URL d’un serveur MCP qui utilise HTTP streamable pour la communication. | Oui |
mcpServers.<SERVER_NAME>.headers | object | Une map de headers HTTP à envoyer avec les requêtes vers url ou httpUrl. | Oui |
mcpServers.<SERVER_NAME>.timeout | number | Délai d’expiration en millisecondes pour les requêtes vers ce serveur MCP. | Oui |
mcpServers.<SERVER_NAME>.trust | boolean | 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 est prioritaire sur includeTools - si un outil figure dans les deux listes, il sera exclu. | Oui |
telemetry
Configure la journalisation et la collecte de métriques pour Qwen Code. Pour plus d’informations, consultez telemetry.
| Setting | Type | Description | Default |
|---|---|---|---|
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’endroit où les données sont envoyées. | |
telemetry.otlpEndpoint | string | L’endpoint pour l’exportateur OTLP. | |
telemetry.otlpProtocol | string | Le protocole pour l’exportateur OTLP (grpc ou http). | |
telemetry.logPrompts | boolean | Indique si le contenu des prompts de l’utilisateur doit être inclus dans les logs ou non. | |
telemetry.includeSensitiveSpanAttributes | boolean | Lorsqu’il est activé, attache les prompts utilisateur, les prompts système, les entrées/sorties des outils et les réponses du modèle textuellement aux attributs de span OTel natifs (en plus des spans de pont log-to-span). ⚠️ Envoie des données sensibles — contenus de fichiers, commandes shell, historique des conversations — à votre backend OTLP. | false |
telemetry.sensitiveSpanAttributeMaxLength | number | Longueur maximale de la chaîne JavaScript pour chaque payload de contenu d’attribut de span OTel natif sensible. Doit être comprise entre 1 et 104857600 (100 MiB). Définissez une valeur plus faible si votre collecteur ou votre backend rejette les attributs volumineux. | 1048576 |
telemetry.outfile | string | Chemin vers le fichier dans lequel écrire la télémétrie. Lorsqu’il est défini, remplace l’exportation OTLP. |
Exemple de 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,
"sensitiveSpanAttributeMaxLength": 1048576
},
"privacy": {
"usageStatisticsEnabled": true
},
"model": {
"name": "qwen3-coder-plus",
"maxSessionTurns": 10,
"enableOpenAILogging": false,
"openAILoggingDir": "~/qwen-logs",
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}Historique du shell
La CLI conserve un historique des commandes shell que vous exécutez. Pour éviter les conflits entre différents projets, cet historique est stocké dans un répertoire spécifique au projet dans le dossier personnel de votre utilisateur.
- Emplacement :
~/.qwen/tmp/<project_hash>/shell_history<project_hash>est un identifiant unique généré à partir du chemin racine de votre projet.- L’historique est stocké dans un fichier nommé
shell_history.
Variables d’environnement et fichiers .env
Les variables d’environnement sont un moyen courant de configurer les applications, en particulier pour les informations sensibles (comme les tokens) ou pour les paramètres susceptibles de changer d’un environnement à l’autre.
Qwen Code peut charger automatiquement les variables d’environnement depuis les fichiers .env.
Pour les variables liées à l’authentification (comme OPENAI_*) et l’approche recommandée avec .qwen/.env, consultez Authentication.
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 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 |
|---|---|---|
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 développé vers le répertoire personnel de l’utilisateur. | Stocke les identifiants, les paramètres, la mémoire, les skills et autres états globaux. Lorsqu’elle est définie, les répertoires .qwen/ au niveau du projet ne sont pas affectés. Une chaîne vide est considérée comme non définie. |
QWEN_RUNTIME_DIR | Remplace le répertoire de sortie d’exécution (conversations, logs, todos). Lorsqu’elle n’est pas définie, la valeur par défaut est 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éfinissez sur true ou 1 pour activer la télémétrie. Toute autre valeur est considérée comme une désactivation. | Remplace le paramètre telemetry.enabled. |
QWEN_TELEMETRY_TARGET | Définit une étiquette informative pour la destination de la 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’endroit où les données sont envoyées. | Remplace le paramètre telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Définit l’endpoint 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éfinissez sur true ou 1 pour activer ou désactiver la journalisation des prompts utilisateur. Toute autre valeur est considérée comme une désactivation. | Remplace le paramètre telemetry.logPrompts. |
QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES | Définissez sur true ou 1 pour attacher textuellement les prompts utilisateur, les prompts système, les E/S des outils et les réponses du modèle aux attributs de span OTel natifs (et conserver prompt / function_args / response_text sur les spans de pont log-to-span). Toute autre valeur désactive cette option. | Remplace le paramètre telemetry.includeSensitiveSpanAttributes. ⚠️ Envoie des données sensibles à votre backend OTLP. |
QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH | Définit la longueur maximale de la chaîne JavaScript pour chaque payload de contenu d’attribut de span OTel natif sensible. Doit être un entier positif inférieur ou égal à 104857600 (100 MiB). | Remplace le paramètre telemetry.sensitiveSpanAttributeMaxLength. La valeur par défaut est 1048576 (1 MiB) ; réduisez-la si votre collecteur ou votre backend rejette les attributs de span volumineux. |
QWEN_TELEMETRY_OUTFILE | Définit le chemin du fichier dans lequel écrire la télémétrie. Lorsqu’il est défini, remplace l’exportation 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 de l’image de sandbox pour Docker/Podman. | Est prioritaire 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. <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 or DEBUG_MODE | (souvent utilisées par les bibliothèques sous-jacentes ou la CLI elle-même) Définissez sur true ou 1 pour activer la journalisation de débogage 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 afin d’éviter toute interférence avec le comportement de la CLI. Utilisez les fichiers .qwen/.env si vous avez besoin de les définir spécifiquement pour Qwen Code. |
NO_COLOR | Définissez sur n’importe quelle valeur pour désactiver tout affichage en couleur dans la CLI. | |
FORCE_HYPERLINK | Remplace la détection des liens cliquables OSC 8 dans le moteur de rendu markdown. Définissez sur 1 (ou tout entier non nul, ou chaîne vide) pour forcer l’activation ; définissez sur 0 ou une valeur non numérique telle que false / off pour forcer la désactivation. Respecte les désactivations NO_COLOR / QWEN_DISABLE_HYPERLINKS définies au-dessus. | Utilisez ceci pour activer OSC 8 à l’intérieur de tmux / GNU screen (l’auto-détection refuse par défaut car les capacités du terminal hôte sont masquées par 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éfinissez sur 1 pour désactiver complètement les hyperliens cliquables OSC 8 dans le moteur de rendu markdown, même sur les terminaux qui s’auto-détectent comme compatibles. | Utile lorsqu’un terminal annonce son support mais plante sur les URL longues, ou lors du piping de la sortie via un intermédiaire qui altère les séquences d’échappement. Le moteur de rendu revient à un rendu simple label (url). |
CLI_TITLE | Définissez sur une chaîne pour personnaliser le titre de la CLI. | |
CODE_ASSIST_ENDPOINT | Spécifie l’endpoint 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 maximal de tokens de sortie par réponse par défaut. Lorsqu’elle n’est pas définie, Qwen Code utilise par défaut la limite de sortie déclarée du modèle et, si une réponse est tronquée, augmente automatiquement (plancher de 64K) et récupère au fil des tours. Définissez ceci sur une valeur spécifique (par exemple, 16000) pour utiliser une limite fixe à la place — utile pour les backends auto-hébergés à capacité limitée qui souhaitent une réservation de slots par requête plus faible. | Est prioritaire sur la limite par défaut du modèle, mais est remplacé par samplingParams.max_tokens dans les paramètres. Désactive l’augmentation automatique lorsqu’il est défini. Exemple : export QWEN_CODE_MAX_OUTPUT_TOKENS=16000 |
QWEN_CODE_UNATTENDED_RETRY | Définissez sur true ou 1 pour activer le mode de retry persistant. Lorsqu’il est activé, les erreurs de capacité d’API transitoires (HTTP 429 Rate Limit et 529 Overloaded) font l’objet de tentatives indéfinies avec un backoff exponentiel (plafonné à 5 minutes par tentative) et des keepalives heartbeat toutes les 30 secondes sur stderr. | Conçu pour les pipelines CI/CD et l’automatisation en arrière-plan où les tâches de longue durée doivent survivre aux pannes d’API temporaires. Doit être défini explicitement — CI=true seul n’active pas ce mode. Consultez Headless Mode pour plus de détails. Exemple : export QWEN_CODE_UNATTENDED_RETRY=1 |
QWEN_CODE_PROFILE_STARTUP | Définissez sur 1 pour activer le profilage des performances de démarrage. Écrit un rapport de timing JSON dans ~/.qwen/startup-perf/ avec les durées par phase. | Actif uniquement à l’intérieur du processus enfant de la sandbox (ou avec QWEN_CODE_PROFILE_STARTUP_OUTER=1). Zéro overhead lorsqu’il n’est pas défini. Exemple : export QWEN_CODE_PROFILE_STARTUP=1 |
QWEN_CODE_PROFILE_STARTUP_OUTER | Définissez sur 1 en même temps que QWEN_CODE_PROFILE_STARTUP=1 pour collecter également un profil de démarrage dans le processus externe (pré-sandbox). Les rapports du processus externe obtiennent un préfixe de nom de fichier outer- pour les distinguer du rapport de l’enfant de la sandbox. | Désactivé par défaut — seul l’enfant de la sandbox collecte, pour éviter les rapports en double. Utile pour le développement local où la CLI n’est pas relancée dans une sandbox. |
QWEN_CODE_PROFILE_STARTUP_NO_HEAP | Définissez sur 1 en même temps que QWEN_CODE_PROFILE_STARTUP=1 pour ignorer les instantanés process.memoryUsage() par point de contrôle. Utile pour mesurer l’overhead Heisenberg propre au profileur. | Désactivé par défaut. Les instantanés de heap coûtent environ 50 µs chacun (bien en dessous de 1 % du démarrage total), la plupart des utilisateurs devraient donc laisser ce paramètre tel quel. |
QWEN_CODE_LEGACY_MCP_BLOCKING | Définissez sur 1 pour restaurer le comportement pré-MCP progressif où Config.initialize() attend de manière synchrone le handshake de découverte de chaque serveur MCP configuré avant de retourner. | Désactivé par défaut. Le qwen-code moderne permet aux serveurs MCP de se mettre en ligne en arrière-plan pendant que l’UI est déjà interactive ; le modèle voit chaque lot de nouveaux outils dans les ~16 ms suivant la stabilisation du serveur. Ce flag est conservé comme solution de repli pour ≥ 1 release. Exemple : export QWEN_CODE_LEGACY_MCP_BLOCKING=1 |
Lorsque les deux fichiers .env au niveau utilisateur définissent la même variable, le fichier spécifique à Qwen est prioritaire : <QWEN_HOME>/.env (ou ~/.qwen/.env lorsque QWEN_HOME n’est pas défini) est chargé avant ~/.env, et les valeurs d’environnement existantes ne sont pas écrasées. |
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.
Pour la sélection de l’image du sandbox, l’ordre de priorité est le suivant :
--sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > image par défaut intégrée.
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 passer directement un prompt à la commande. Cela invoque Qwen Code en mode non interactif. | Votre texte de prompt | Pour des exemples de scripting, utilisez le flag --output-format json pour obtenir une sortie structurée. |
--prompt-interactive | -i | Démarre une session interactive avec le prompt fourni comme entrée initiale. | Votre texte de prompt | Le prompt est traité au sein de la session interactive, et non avant. Ne peut pas être utilisé lors du piping de l’entrée depuis stdin. Exemple : qwen -i "explain this code" |
--system-prompt | Remplace le system prompt intégré de la session principale pour cette exécution. | Votre texte de prompt | Les fichiers de contexte chargés tels que 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 au system prompt de la session principale pour cette exécution. | Votre texte de prompt | Appliqué après le prompt intégré et les fichiers de contexte chargés. Peut être combiné avec --system-prompt. Voir Headless Mode pour des exemples. | |
--output-format | -o | Spécifie le format de la sortie du CLI pour le mode non interactif. | text, json, stream-json | text : (Par défaut) La sortie standard lisible par un humain. json : Une sortie JSON lisible par une 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 du scripting, utilisez le flag --output-format json ou --output-format stream-json. Voir Headless Mode pour plus d’informations. |
--input-format | Spécifie le format consommé depuis l’entrée standard. | text, stream-json | text : (Par défaut) Entrée texte standard depuis stdin ou les arguments de ligne de commande. stream-json : Protocole de messages JSON via stdin pour une communication bidirectionnelle. Prérequis : --input-format stream-json nécessite que --output-format stream-json soit défini. Lors de l’utilisation de stream-json, stdin est réservé aux messages du protocole. Voir Headless Mode pour plus d’informations. | |
--include-partial-messages | Inclut les messages partiels de l’assistant lors de l’utilisation du format de sortie stream-json. Lorsqu’il est activé, émet les événements de streaming (message_start, content_block_delta, etc.) au fur et à mesure qu’ils se produisent pendant le streaming. | Par défaut : false. Prérequis : Nécessite que --output-format stream-json soit défini. Voir Headless Mode pour plus d’informations sur les événements de streaming. | ||
--sandbox | -s | Active le mode sandbox pour cette session. | ||
--sandbox-image | Définit l’URI de l’image du sandbox. | |||
--debug | -d | Active le mode debug pour cette session, fournissant une sortie plus verbeuse. | ||
--help | -h | Affiche l’aide sur les arguments de ligne de commande. | ||
--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 de commandes. default : Demander 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 une confirmation pour les autres. auto : Le classificateur LLM approuve automatiquement les actions sûres et bloque les actions risquées. yolo : Approuver automatiquement tous les appels d’outils (équivalent à --yolo). Ne peut pas être utilisé conjointement avec --yolo. Utilisez --approval-mode=yolo au lieu de --yolo pour la nouvelle approche unifiée. Exemple : qwen --approval-mode auto-editVoir plus d’informations sur le Approval Mode. | |
--allowed-tools | Une liste d’outils séparés par des virgules qui contourneront la boîte de dialogue de confirmation. | Noms des 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). Union avec le paramètre slashCommands.disabled et la variable d’environnement QWEN_DISABLED_SLASH_COMMANDS. Correspondance insensible à la casse avec le nom final de la commande. | Noms des 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 la 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 la 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 la télémétrie pour plus d’informations. | ||
--telemetry-log-prompts | Active la journalisation des prompts pour la télémétrie. | Voir la 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 le flag obsolète --experimental-acp. | ||
--experimental-lsp | Active la fonctionnalité expérimentale LSP (Language Server Protocol) pour l’intelligence de code (go-to-definition, find references, 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 des 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 le 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 des répertoires | Peut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules. Un maximum de 5 répertoires peut être ajouté. 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 le TUI pour une meilleure compatibilité avec les lecteurs d’écran. | |||
--version | Affiche la version du CLI. | |||
--openai-logging | Active la journalisation des appels à l’API OpenAI pour le débogage et l’analyse. | Ce flag remplace le paramètre enableOpenAILogging dans settings.json. | ||
--openai-logging-dir | Définit un chemin de répertoire personnalisé pour les journaux de l’API OpenAI. | Chemin du répertoire | Ce flag remplace le paramètre openAILoggingDir dans settings.json. Prend en charge les chemins absolus, les chemins relatifs et l’expansion de ~. Exemple : qwen --openai-logging-dir "~/qwen-logs" --openai-logging |
Fichiers de contexte (Contexte d’instruction hiérarchique)
Bien qu’ils ne constituent pas strictement une configuration du comportement du CLI, les fichiers de contexte (dont le nom par défaut est QWEN.md, mais configurable via le paramètre context.fileName) sont essentiels pour configurer le contexte d’instruction (également appelé « mémoire »). Cette fonctionnalité puissante vous permet de fournir des instructions spécifiques au projet, des guides de style de code ou toute information contextuelle pertinente à l’IA, afin que ses réponses soient mieux adaptées et plus précises pour vos besoins. Le CLI inclut des éléments d’interface utilisateur, comme un indicateur dans le pied de page affichant le nombre de fichiers de contexte chargés, pour vous tenir informé du contexte actif.
- Objectif : Ces fichiers Markdown contiennent des instructions, des directives ou du contexte dont vous souhaitez que le modèle Qwen ait connaissance lors de vos interactions. Le système est conçu pour gérer ce contexte d’instruction de manière hiérarchique.
Exemple de contenu de fichier de contexte (ex. QWEN.md)
Voici un exemple conceptuel de ce que pourrait contenir un fichier de contexte à la racine d’un projet TypeScript :
# 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 code spécifiques, et même des notes sur des fichiers ou composants particuliers. Plus vos fichiers de contexte sont pertinents et précis, mieux l’IA pourra vous assister. Les fichiers de contexte spécifiques au projet sont fortement recommandé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 (ex.
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 inspectés depuis la boîte de dialogue/memory. L’ordre de chargement typique est :- Fichier de contexte global :
- Emplacement :
~/.qwen/<configured-context-filename>(ex.~/.qwen/QWEN.mddans votre répertoire personnel). - Portée : Fournit les instructions par défaut pour tous vos projets.
- Emplacement :
- Fichiers de contexte de la racine du projet et des ancêtres :
- 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 UI : 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 repère visuel rapide sur le contexte d’instruction actif.
- Importation de contenu : Vous pouvez modulariser vos fichiers de contexte en important d’autres fichiers Markdown via la syntaxe
@path/to/file.md. Pour plus de détails, consultez la documentation sur la 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 réanalyser 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 ainsi que 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 non sûres (comme des commandes shell et des modifications de fichiers) dans un environnement sandbox pour protéger votre système.
La sandbox est désactivée par défaut, mais vous pouvez l’activer de plusieurs manières :
- En utilisant le flag
--sandboxou-s. - En définissant la variable d’environnement
QWEN_SANDBOX. - En définissant
tools.sandboxdans les paramètres.
⚠️
--yolon’active pas automatiquement une sandbox. Le mode YOLO approuve uniquement les appels d’outils automatiquement ; l’utilisation de la sandbox doit toujours être activée explicitement via--sandbox,QWEN_SANDBOXoutools.sandbox. Lors d’exécutions headless / non interactives avec--yolo(ou--approval-mode=yolo) et sans sandbox, le modèle peut exécuter les outils shell, write et edit au niveau de privilège du processus actuel — Qwen Code affiche un avertissement sur stderr dans ce cas. Supprimez-le avecQWEN_CODE_SUPPRESS_YOLO_WARNING=1une fois que vous avez évalué les compromis.
Par défaut, il utilise une image Docker préconstruite qwen-code-sandbox.
Pour des besoins de sandbox spécifiques au projet, vous pouvez créer un Dockerfile personnalisé à l’emplacement .qwen/sandbox.Dockerfile dans le répertoire racine de votre projet. Ce Dockerfile peut être basé sur l’image de sandbox de base :
FROM qwen-code-sandbox
# Add your custom dependencies or configurations here
# For example:
# RUN apt-get update && apt-get install -y some-package
# COPY ./my-config /app/my-configLorsque .qwen/sandbox.Dockerfile existe, vous pouvez utiliser la variable d’environnement BUILD_SANDBOX lors de l’exécution de Qwen Code pour construire automatiquement l’image sandbox personnalisée :
BUILD_SANDBOX=1 qwen -sStatistiques d’utilisation
Pour nous aider à améliorer Qwen Code, nous collectons des statistiques d’utilisation anonymisées. Ces données nous aident à comprendre comment le CLI est utilisé, à 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 nécessaire à leur exécution. Nous ne collectons pas les arguments passés aux outils ni les données qu’ils retournent.
- 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 prompts ni des réponses.
- Informations de session : Nous collectons des informations sur la configuration du CLI, telles que les outils activés et le mode d’approbation.
Ce que nous ne collectons PAS :
- Informations personnellement identifiables (PII) : Nous ne collectons aucune information personnelle, telle que votre nom, votre adresse e-mail ou vos clés API.
- Contenu des prompts et des réponses : Nous n’enregistrons pas le contenu de vos prompts ni les réponses du modèle.
- Contenu des fichiers : Nous n’enregistrons pas le contenu des fichiers lus ou écrits par le CLI.
Comment désactiver la collecte :
Vous pouvez désactiver la collecte des statistiques d’utilisation à tout moment en définissant la propriété usageStatisticsEnabled 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 collecte RUM d’Alibaba Cloud.