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 les variables d’environnement, les arguments de ligne de commande et les fichiers de paramètres. Ce document décrit les différentes méthodes de configuration et les paramètres disponibles.
Couches de configuration
La configuration est appliquée selon l’ordre de priorité suivant (les numéros les plus bas sont remplacés par 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 système par défaut | Paramètres système par défaut pouvant être remplacés par d’autres fichiers |
| 3 | Fichier utilisateur | Paramètres globaux pour l’utilisateur actuel |
| 4 | Fichier du projet | Paramètres spécifiques au projet |
| 5 | Fichier système | Paramètres système qui remplacent tous les autres fichiers de configuration |
| 6 | Variables d’environnement | Variables système ou de session, potentiellement chargées depuis des fichiers .env |
| 7 | Arguments de ligne de commande | Valeurs passées lors du lancement de la CLI |
Fichiers de configuration
Qwen Code utilise des fichiers JSON pour la configuration persistante. Il existe quatre emplacements pour ces fichiers :
| Type de fichier | Emplacement | Portée |
|---|---|---|
| Fichier 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é via la variable d’environnement QWEN_CODE_SYSTEM_DEFAULTS_PATH. | Fournit une couche de base de paramètres système par défaut. Ces paramètres ont la priorité la plus basse et sont destinés à être remplacés par les paramètres utilisateur, projet ou système. |
| Fichier utilisateur | ~/.qwen/settings.json (où ~ est votre répertoire personnel). | S’applique à toutes les sessions Qwen Code pour l’utilisateur actuel. |
| Fichier du projet | .qwen/settings.json à la racine de votre projet. | S’applique uniquement lorsque vous exécutez Qwen Code depuis ce projet spécifique. Les paramètres du projet remplacent les paramètres utilisateur. |
| Fichier 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é via la variable d’environnement QWEN_CODE_SYSTEM_SETTINGS_PATH. | S’applique à toutes les sessions Qwen Code sur le système, pour tous les utilisateurs. Les paramètres système remplacent les paramètres utilisateur et projet. Peut être utile pour les administrateurs système en entreprise. |
Note sur les variables d’environnement dans les paramètres : Les valeurs de chaîne dans vos fichiers settings.json peuvent référencer des variables d’environnement en utilisant la syntaxe $VAR_NAME ou ${VAR_NAME}. Ces variables seront automatiquement résolues lors du chargement des paramètres. Par exemple, si vous avez une variable d’environnement MY_API_TOKEN, vous pouvez l’utiliser dans settings.json comme ceci : "apiKey": "$MY_API_TOKEN".
Le répertoire .qwen dans votre projet
En plus d’un fichier de configuration du projet, le répertoire .qwen d’un projet peut contenir d’autres fichiers spécifiques au projet liés au fonctionnement de Qwen Code, tels que :
- Profils sandbox personnalisés (par exemple
.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 paramètres de configuration hérités vers le nouveau format. Les anciens fichiers de paramètres sont sauvegardés avant la migration. Les paramètres suivants ont été renommés d’une nomenclature négative (disable*) à positive (enable*) :
| Ancien paramètre | Nouveau paramètre | Remarques |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Fusionné en un seul paramètre |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Inversion de valeur booléenne : Lors de la migration, les valeurs booléennes sont inversées (par exemple, disableAutoUpdate: true devient enableAutoUpdate: false).
Politique de consolidation pour disableAutoUpdate et disableUpdateNag
Lorsque les deux paramètres hérités sont présents avec des valeurs différentes, la migration suit cette politique : si l’un ou l’autre de disableAutoUpdate ou disableUpdateNag est true, alors enableAutoUpdate devient false :
disableAutoUpdate | disableUpdateNag | enableAutoUpdate après migration |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Paramètres disponibles dans settings.json
Les paramètres sont organisés par catégories. La plupart des paramètres doivent être placés dans leur objet de catégorie de 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 | Valeur par défaut |
|---|---|---|---|
general.preferredEditor | string | L’éditeur préféré pour ouvrir les fichiers. | undefined |
general.vimMode | boolean | Activer les raccourcis clavier Vim. | false |
general.enableAutoUpdate | boolean | Activer la vérification automatique des mises à jour et leur installation au démarrage. | true |
general.showSessionRecap | boolean | Afficher automatiquement un récapitulatif d’une ligne « où vous en étiez » en revenant au 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 | Minutes d’inactivité du terminal avant qu’un récapitulatif automatique ne s’affiche lors du retour. Utilisé uniquement si showSessionRecap est activé. | 5 |
general.gitCoAuthor.commit | boolean | Ajouter une signature « Co-authored-by » aux messages de commit git ET attacher une note d’attribution AI par fichier (refs/notes/ai-attribution) pour les commits effectués via Qwen Code. Désactiver pour ignorer les deux. | true |
general.gitCoAuthor.pr | boolean | Ajouter une ligne d’attribution Qwen Code dans les descriptions de pull requests lors de l’exécution de gh pr create. | true |
general.defaultFileEncoding | string | Encodage par défaut pour les nouveaux fichiers. Utilisez "utf-8" (défaut) pour UTF-8 sans BOM, ou "utf-8-bom" pour UTF-8 avec BOM. Ne modifiez ce paramètre que si votre projet nécessite explicitement un BOM. | "utf-8" |
general.cleanupPeriodDays | number | Jours de conservation des sauvegardes de session ~/.qwen/file-history/ utilisées par /rewind. Les sauvegardes plus anciennes sont supprimées par une tâche d’arrière-plan au maximum une fois par jour. 0 = rétention minimale (~1 heure) : conserve les sessions touchées dans la dernière heure plus la session active. Le changement prend effet après redémarrage. | 30 |
general.language | enum | Langue de l’interface utilisateur. Utilisez "auto" pour détecter depuis les paramètres système, ou un code de langue (par exemple "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 les réponses du modèle. Utilisez "auto" pour détecter depuis les paramètres système, ou définissez une langue spécifique. Nécessite un redémarrage. | "auto" |
general.dynamicCommandTranslation | boolean | Activer la traduction IA des descriptions des commandes dynamiques slash. Lorsqu’il est désactivé, les commandes dynamiques conservent leurs descriptions originales et ignorent les appels au modèle de traduction. | false |
output
| Paramètre | Type | Description | Valeur par défaut | Valeurs possibles |
|---|---|---|---|---|
output.format | string | Le format de la 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 | Valeur par défaut |
|---|---|---|---|
ui.theme | string | Le thème de couleur pour l’interface. 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 ligne 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 (de démarrage et post-réponse) dans l’interface. Voir Contextual Tips. | false |
ui.hideBanner | boolean | Masquer le logo ASCII de démarrage et le panneau d’informations. Les astuces et la zone de saisie restent affichées sauf si ui.hideTips est également défini. | false |
ui.customBannerTitle | string | Remplacer le titre par défaut >_ Qwen Code dans le panneau d’informations. 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 facultative affichée entre le titre de la bannière et la ligne d’authentification/modèle, à la place de l’espace vide par défaut. Nettoyée ; limitée à 160 caractères. Vide (défaut) conserve l’espace vide d’origine. | "" |
ui.customAsciiArt | string | object | Remplacer le logo ASCII QWEN dans la bannière. Accepte une chaîne simple (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 ; lu une fois au démarrage avec O_NOFOLLOW sur POSIX, limité à 64 Ko), ou { "small": ..., "large": ... } pour une sélection sensible à 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 de la sortie CLI. | true |
ui.renderMode | string | Mode d’affichage par défaut du Markdown. Utilisez "render" pour un aperçu visuel riche ou "raw" pour afficher le Markdown orienté source par défaut. Basculer pendant une session avec Alt/Option+M ; sur macOS, le terminal doit envoyer Option comme Meta. Voir Markdown Rendering. | "render" |
ui.showCitations | boolean | Afficher les citations pour le texte généré dans la discussion. | false |
ui.history.collapseOnResume | boolean | Si l’historique doit être réduit par défaut lors de la reprise d’une session. Peut être basculé via /history collapse-on-resume et /history expand-on-resume. | false |
ui.compactMode | boolean | Masquer les sorties des outils et la réflexion pour une vue plus épurée. Basculer avec Ctrl+O pendant une session ou via la boîte de dialogue des 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 shell affichées en ligne. Mettez à 0 pour désactiver la limite et afficher la sortie complète. Les lignes masquées sont signalées par l’indicateur +N lignes. Les erreurs, les commandes utilisateur préfixées par !, les outils de confirmation et les shells embarqués ciblés affichent toujours la sortie complète. | 5 |
ui.enableWelcomeBack | boolean | Afficher la boîte de dialogue de bienvenue en revenant à un projet avec un historique de conversation. Lorsqu’elle est activée, Qwen Code détecte automatiquement si vous revenez à un projet avec un résumé de projet précédemment généré (.qwen/PROJECT_SUMMARY.md) et affiche une boîte de dialogue vous permettant de continuer votre conversation précédente ou de recommencer à zéro. Si vous choisissez Démarrer une nouvelle session de discussion, ce choix est mémorisé pour le projet actuel jusqu’à ce que le résumé du projet change. Cette fonctionnalité s’intègre à la commande /summary et à la boîte de dialogue de confirmation de sortie. | true |
ui.accessibility.enableLoadingPhrases | boolean | Activer les phrases de chargement (désactiver pour l’accessibilité). | true |
ui.accessibility.screenReader | boolean | Active le mode lecteur d’écran, qui ajuste l’interface TUI pour une meilleure compatibilité avec les lecteurs d’écran. | false |
ui.customWittyPhrases | array of strings | Une liste de phrases personnalisées à afficher pendant les états de chargement. Lorsqu’elle est fournie, la CLI parcourra ces phrases au lieu de celles par défaut. | [] |
ui.showResponseTokensPerSecond | boolean | Afficher une estimation en direct des tokens/seconde à côté du compteur de tokens de réponse pendant le streaming. Il s’agit d’un indicateur de vitesse de génération, pas d’une ETA ou d’un pourcentage d’achèvement. Prend effet lors de la prochaine session. | false |
ui.enableFollowupSuggestions | boolean | Activer les suggestions de suivi qui prédisent ce que vous voulez taper ensuite après la réponse du modèle. Les suggestions apparaissent sous forme de texte indicatif et sont acceptées avec Tab, Entrée ou Flèche droite (elles remplissent l’entrée, ne la soumettent pas automatiquement). Activé par défaut ; définissez false pour désactiver. | true |
ui.enableCacheSharing | boolean | Utiliser des requêtes fourchues tenant compte du cache pour la génération de suggestions. Réduit les coûts sur les fournisseurs prenant en charge le préfixe de cache (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 les acceptez (expérimental). | false |
ide
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
ide.enabled | boolean | Activer le mode d’intégration IDE. | false |
ide.hasSeenNudge | boolean | Indique si l’utilisateur a vu l’invitation d’intégration IDE. | false |
privacy
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Activer la collecte de statistiques d’utilisation. | true |
model
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
model.name | string | Le modèle Qwen à utiliser pour les conversations. | undefined |
model.maxSessionTurns | number | Nombre maximum de tours utilisateur/modèle/outil à conserver dans une session. -1 signifie illimité. | -1 |
model.maxWallTimeSeconds | number | Budget de temps réel pour les exécutions headless / non supervisées, en secondes. -1 signifie illimité. Remplaçable par invocation via --max-wall-time, qui nécessite une durée positive (90, 30s, 5m, 1h, 1.5h); le minimum est 1 seconde — les valeurs inférieures à la seconde (500ms, 0.5) sont rejetées comme des fautes de frappe. Omettre le drapeau pour revenir à ce paramètre. Abandon avec le code de sortie 55 si dépassé. | -1 |
model.maxToolCalls | number | Budget cumulé 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 fautes de frappe. Remplaçable via --max-tool-calls. Abandon avec le code de sortie 55 si dépassé. | -1 |
model.generationConfig | object | Remplacements avancés passés au générateur de contenu sous-jacent. Prend en charge des contrôles de requête tels que timeout, maxRetries, enableCacheControl, splitToolMedia (par défaut true; divise les médias retournés par 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" violant la spécification, afin que les serveurs stricts compatibles OpenAI comme doubao / new-api / LM Studio puissent les voir; définissez false pour restaurer le comportement hérité d’incorporation dans l’outil), toolResultContentFormat (par défaut "parts"; définissez "string" uniquement pour les environnements d’exécution hérités compatibles OpenAI dont les modèles d’outil ignorent les parties de contenu textuel), contextWindowSize (remplace la taille de la fenêtre de contexte du modèle), modalities (remplace les modalités d’entrée détectées automatiquement), customHeaders (en-têtes HTTP personnalisés pour les requêtes API), et extra_body (paramètres de corps supplémentaires pour les requêtes API compatibles OpenAI uniquement), ainsi que des boutons de réglage fin sous samplingParams (par exemple temperature, top_p, max_tokens). Laissez non défini pour vous fier aux valeurs par défaut du fournisseur. | undefined |
model.chatCompression.contextPercentageThreshold | number | SUPPRIMÉ. La compaction automatique utilise désormais une échelle de seuil à trois niveaux (avertissement / automatique / dur) calculée en interne à partir de la fenêtre de contexte du modèle via la fonction computeThresholds() — n’est plus configurable par l’utilisateur. La définition de ce champ dans settings.json est ignorée silencieusement (aucun avertissement au démarrage). Il n’existe actuellement aucun remplacement pour ‘désactiver complètement la compression’ — la récupération réactive de débordement reste le filet de sécurité au niveau de l’API si la compression échoue. (Voir PR #4345 / docs/design/auto-compaction-threshold-redesign.md pour la justification de la refonte.) | N/A |
model.chatCompression.maxRecentFilesToRetain | number | Nombre de fichiers les plus récemment touchés dont le contenu actuel est restauré (incorporé s’il est petit, sinon référencé par chemin) dans l’historique après la compaction automatique. 0 n’en restaure aucun. Remplacement par variable d’environnement : 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 la compaction automatique. 0 n’en restaure aucune. Remplacement par variable d’environnement : QWEN_COMPACT_MAX_RECENT_IMAGES. | 3 |
model.chatCompression.enableScreenshotTrigger | boolean | Lorsque true, la compaction automatique 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 jetons — visant les sessions d’utilisation d’ordinateur où des captures d’écran fréquentes diluent l’attention du modèle. Compte uniquement les images retournées dans les résultats d’outils, pas les images collées par l’utilisateur. Remplacement par variable d’environnement : 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 s’active (uniquement lorsque enableScreenshotTrigger). La compaction réinitialise le compteur — les images survivantes sont réincorporées en tant que parties de niveau supérieur, que le déclencheur ne compte pas — donc il ne se réactive pas immédiatement. Remplacement par variable d’environnement : QWEN_COMPACT_SCREENSHOT_THRESHOLD. | 50 |
model.skipNextSpeakerCheck | boolean | Ignorer la vérification du prochain locuteur. | true |
model.skipLoopDetection | boolean | Désactive les vérifications de détection de boucle de streaming. Par défaut true (la détection de boucle est ignorée) pour éviter que des faux positifs n’interrompent des workflows légitimes. Définissez false pour réactiver la détection de boucle de streaming — utile comme garde-fou dans les exécutions headless / non interactives où une répétition bloquée pourrait autrement gaspiller du budget. | true |
model.skipStartupContext | boolean | Ignore l’envoi du contexte de l’espace de travail au démarrage (résumé de l’environnement et accusé de réception) au début de chaque session. Activez ceci si vous préférez fournir le contexte manuellement ou souhaitez économiser des jetons au démarrage. | false |
model.enableOpenAILogging | boolean | Active la journalisation des appels API OpenAI pour le débogage et l’analyse. Lorsque activé, les requêtes et réponses API sont enregistrées dans des fichiers JSON. | false |
model.openAILoggingDir | string | Chemin de répertoire personnalisé pour les journaux 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 ~ (répertoire personnel). | undefined |
| Exemple de model.generationConfig : |
{
"model": {
"generationConfig": {
"timeout": 60000,
"contextWindowSize": 128000,
"modalities": {
"image": true
},
"enableCacheControl": true,
"toolResultContentFormat": "parts",
"customHeaders": {
"X-Client-Request-ID": "req-123"
},
"extra_body": {
"enable_thinking": true
},
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}max_tokens (jetons de sortie adaptatifs) :
Lorsque samplingParams.max_tokens n’est pas défini, Qwen Code utilise une stratégie adaptative de jetons de sortie pour optimiser l’utilisation des ressources GPU :
- Les requêtes démarrent avec une limite par défaut de 8K jetons de sortie
- Si la réponse est tronquée (le modèle atteint la limite), Qwen Code relance automatiquement avec 64K jetons
- La sortie partielle est ignorée et remplacée par la réponse complète de la nouvelle tentative
Ce processus est transparent pour l’utilisateur — vous pouvez brièvement voir un indicateur de nouvelle tentative en cas d’escalade. Comme 99 % des réponses font moins de 5K jetons, la nouvelle tentative est rare (<1 % des requêtes).
Pour modifier ce comportement, définissez samplingParams.max_tokens dans vos paramètres ou utilisez la variable d’environnement QWEN_CODE_MAX_OUTPUT_TOKENS.
toolResultContentFormat :
Contrôle la façon dont les résultats d’outils textuels sont sérialisés dans les requêtes compatibles OpenAI. La valeur par défaut "parts" conserve la structure standard de tableau de parties de contenu. Définissez "string" uniquement pour les environnements d’exécution compatibles OpenAI hérités dont les templates d’outils ignorent les parties de contenu textuel, comme les anciens templates GLM-5.1 vLLM/SGLang. Les médias renvoyés par les outils sont toujours contrôlés par splitToolMedia.
contextWindowSize :
Remplace la taille de fenêtre de contexte par défaut pour le modèle sélectionné. Qwen Code détermine la fenêtre de contexte en utilisant les valeurs par défaut intégrées basées sur la correspondance du nom du modèle, avec une valeur de repli constante. Utilisez ce paramètre lorsque la limite de contexte effective d’un fournisseur diffère de la valeur 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 jetons par requête.
Lorsque le modèle sélectionné est défini dans modelProviders, définissez
contextWindowSize dans l’entrée generationConfig de ce fournisseur plutôt que dans
le model.generationConfig de haut niveau. Les entrées de modèle de fournisseur sont scellées, donc
les paramètres de génération de haut niveau ne remplissent pas les champs manquants du fournisseur.
modalities :
Remplace les modalités d’entrée détectées automatiquement 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 du nom du modèle. Utilisez ce paramètre lorsque la détection automatique est incorrecte — par exemple, pour activer pdf pour un modèle qui le prend en charge mais n’est pas reconnu. Format : { "image": true, "pdf": true, "audio": true, "video": true }. Omettez une clé ou définissez-la sur false pour les types non pris en charge.
customHeaders :
Permet d’ajouter des en-têtes HTTP personnalisés à toutes les requêtes API. Utile pour le traçage des requêtes, la surveillance, le routage de passerelle API, ou lorsque différents modèles nécessitent des en-têtes différents. Pour les modèles de fournisseur, définissez customHeaders dans modelProviders[].generationConfig.customHeaders. Pour les modèles d’exécution sans entrée de fournisseur correspondante, définissez-le dans model.generationConfig.customHeaders. Aucune fusion n’est effectuée entre les deux niveaux.
Le champ extra_body permet d’ajouter des paramètres personnalisés au corps de la requête envoyée à l’API. Utile pour des options spécifiques au fournisseur qui ne sont pas couvertes par les champs de configuration standard. Remarque : Ce champ n’est pris en charge que pour les fournisseurs compatibles OpenAI (openai, qwen-oauth). Il est ignoré pour les fournisseurs Anthropic et Gemini. Pour les modèles de fournisseur, définissez extra_body dans modelProviders[].generationConfig.extra_body. Pour les modèles d’exécution sans entrée de fournisseur correspondante, définissez-le dans model.generationConfig.extra_body.
Exemples de model.openAILoggingDir :
"~/qwen-logs"- Journalise dans le répertoire~/qwen-logs"./custom-logs"- Journalise dans./custom-logsrelatif au répertoire actuel"/tmp/openai-logs"- Journalise dans le chemin absolu/tmp/openai-logs
fastModel
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
fastModel | string | Modèle utilisé pour générer des suggestions d’invite et l’exécution spéculative. Laissez vide pour utiliser le modèle principal. Un modèle plus petit/rapide (par exemple, qwen3-coder-flash) réduit la latence et les coûts. Peut également être défini via /model --fast. | "" |
context
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
context.fileName | string ou tableau de strings | Le(s) nom(s) du ou des fichiers de contexte. | undefined |
context.importFormat | string | Le format à utiliser lors de l’importation de la mémoire. | undefined |
context.includeDirectories | array | Répertoires supplémentaires à inclure dans le contexte de l’espace de travail. Spécifie un tableau de chemins supplémentaires absolus ou relatifs à inclure dans le contexte de l’espace de travail. Les répertoires manquants seront ignorés avec un avertissement par défaut. Les chemins peuvent utiliser ~ pour faire référence au répertoire personnel de l’utilisateur. Ce paramètre peut être combiné avec l’option de ligne de commande --include-directories. | [] |
context.loadFromIncludeDirectories | boolean | Contrôle le comportement de la commande /memory refresh. Si true, les fichiers QWEN.md doivent être chargés depuis tous les répertoires ajoutés. Si false, les fichiers QWEN.md doivent être chargés uniquement depuis le répertoire actuel. | false |
context.fileFiltering.respectGitIgnore | boolean | Respecter les fichiers .gitignore lors de la recherche. | true |
context.fileFiltering.respectQwenIgnore | boolean | Respecter les fichiers .qwenignore et les fichiers d’ignor personnalisés configurés lors de la recherche. | true |
context.fileFiltering.customIgnoreFiles | array | Fichiers d’ignor relatifs à la racine du projet à utiliser à la place des fichiers de compatibilité par défaut (.agentignore, .aiignore) lorsque respectQwenIgnore est activé. .qwenignore est toujours inclus. | [".agentignore", ".aiignore"] |
context.fileFiltering.enableRecursiveFileSearch | boolean | Activer ou non la recherche récursive de noms de fichiers sous l’arborescence actuelle lors de la complétion des préfixes @ dans l’invite. | true |
context.fileFiltering.enableFuzzySearch | boolean | Lorsque true, active les capacités de recherche floue lors de la recherche de fichiers. Mettre à false pour améliorer les performances sur les projets avec un grand nombre de fichiers. | true |
context.clearContextOnIdle.toolResultsThresholdMinutes | number | Minutes d’inactivité avant de nettoyer l’ancien contenu des 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 du nettoyage. Les valeurs inférieures à 1 sont arrondies à 1. | 5 |
context.clearContextOnIdle.toolResultsTotalCharsThreshold | number | Nombre total de caractères de sortie des résultats d’outils compactables autorisé dans l’historique avant de nettoyer 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 |
Résolution des problèmes de performances de recherche de fichiers
Si vous rencontrez des problèmes de performances avec la recherche de fichiers (par exemple, avec les complétions @), en particulier dans les projets avec un très grand nombre de fichiers, voici quelques pistes à essayer, par ordre de recommandation :
- Utilisez un fichier d’ignor : Créez un fichier
.qwenignoreou un fichier d’ignor personnalisé configuré à la racine de votre projet pour exclure les répertoires contenant un grand nombre de fichiers que vous n’avez pas besoin de référencer (par exemple, artefacts de build, journaux,node_modules). Réduire le nombre total de fichiers parcourus est le moyen le plus efficace d’améliorer les performances. - Désactivez la recherche floue : Si l’ignor de 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, non flou, qui peut être plus rapide. - Désactivez la recherche récursive de fichiers : En dernier recours, vous pouvez désactiver complètement la recherche récursive de fichiers en définissant
enableRecursiveFileSearchsurfalse. Ce sera l’option la plus rapide car elle évite un parcours récursif 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 | Valeur par défaut | Notes |
|---|---|---|---|---|
tools.sandbox | boolean ou string | Environnement d’exécution sandbox (peut être un booléen ou un 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 | Utilisez node-pty pour une expérience de shell interactif. Le repli sur 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 d’autorisation. 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 d’outils à exclure de la découverte. Automatiquement migré vers le format permissions au premier chargement. | undefined | |
tools.allowed | array of strings | Obsolète. Utilisez permissions.allow à la place. Noms d’outils qui contournent la boîte de dialogue de confirmation. Automatiquement migré vers le format permissions au 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 les commandes), default (exiger une approbation avant les modifications de fichiers ou l’exécution de commandes shell), auto-edit (approuver automatiquement les modifications de fichiers), auto (le classifieur LLM approuve automatiquement les actions sûres, bloque les risquées), yolo (approuver automatiquement tous les appels d’outils) |
tools.discoveryCommand | string | Commande à exécuter pour la découverte d’outils. | undefined | |
tools.callCommand | string | Définit une commande shell personnalisée pour appeler un outil spécifique qui a été découvert en utilisant 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 en JSON sur stdin, analogue à functionCall.args. Elle doit renvoyer la sortie de la fonction en JSON sur stdout, analogue à functionResponse.response.content. | undefined | |
tools.useRipgrep | boolean | Utilisez ripgrep pour la recherche de contenu de fichier au lieu de l’implémentation de repli. Offre des performances de recherche plus rapides. | true | |
tools.useBuiltinRipgrep | boolean | Utilisez le binaire ripgrep fourni. Lorsqu’il est défini sur false, la commande rg 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 | Activez les outils Computer Use intégrés (automatisation de bureau native par cua-driver). Lorsque true (par défaut), les outils computer_use__* sont enregistrés comme modules intégrés différés ; le premier appel télécharge le binaire cua-driver épinglé et signé dans ~/.qwen/computer-use/ et parcourt les permissions d’Accessibilité / Enregistrement d’écran macOS. | true | Nécessite un redémarrage : Oui |
tools.computerUse.maxImageDimension | number | Limite maximale de pixels sur le bord le plus long appliquée aux captures d’écran de 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 en jetons de vision au détriment des détails fins. | -1 | Nécessite un redémarrage : Oui. Substitution par variable d’environnement : QWEN_COMPUTER_USE_MAX_IMAGE_DIMENSION (un entier non négatif ; a priorité sur ce paramètre) |
Migration depuis tools.core / tools.exclude / tools.allowed : Ces paramètres hérités sont obsolètes et migrés automatiquement vers le nouveau format permissions au premier chargement. Préférez configurer directement permissions.allow / permissions.deny. Utilisez /permissions pour gérer les règles de manière interactive.
mémoire
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
memory.enableManagedAutoMemory | boolean | Activer l’extraction en arrière-plan des souvenirs à partir des conversations. | true |
memory.enableManagedAutoDream | boolean | Activer la consolidation automatique (déduplication et nettoyage) des souvenirs collectés. | true |
memory.enableAutoSkill | boolean | Activer la vérification en arrière-plan pour les compétences de projet réutilisables après des sessions riches en outils. | true |
memory.autoSkillConfirm | boolean | Demander confirmation avant d’ajouter les compétences générées automatiquement à la bibliothèque de compétences. Sinon, elles sont enregistrées immédiatement. | true |
Voir Mémoire pour les détails sur le fonctionnement de la mémoire automatique et l’utilisation des commandes /memory, /remember et /dream.
permissions
Le système de permissions offre un contrôle fin sur les outils autorisés, ceux nécessitant une confirmation et ceux bloqués.
Priorité de décision (la plus élevée en premier) : deny > ask > allow > (défaut/mode interactif)
La première règle correspondante l’emporte. Les règles utilisent le format "NomOutil" ou "NomOutil(préciseur)".
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
permissions.allow | tableau de chaînes | Règles pour les appels d’outils auto-approuvés (aucune confirmation nécessaire). Fusionnées pour tous les contextes (utilisateur + projet + système). | undefined |
permissions.ask | tableau de chaînes | Règles pour les appels d’outils nécessitant toujours une confirmation utilisateur. Priorité sur allow. | undefined |
permissions.deny | tableau de chaînes | Règles pour les appels d’outils bloqués. Priorité maximale — remplace à la fois allow et ask. | undefined |
Alias de noms d’outils (n’importe lequel fonctionne dans les règles) :
| Alias | Outil canonique | Remarques |
|---|---|---|
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 règle | Outils couverts |
|---|---|
Read | read_file, grep_search, glob, list_directory |
Edit | edit, write_file, notebook_edit |
[!important]
Read(/chemin/**)correspond aux quatre outils de lecture (lecture de fichier, grep, glob et liste de répertoires). Pour restreindre uniquement la lecture de fichiers, utilisezReadFile(/chemin/**)ouread_file(/chemin/**).
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 *)" | Tout script npm run |
"Read" | Toutes les opérations de lecture de fichiers (read, grep, glob, list) |
"Read(./secrets/**)" | Lire tout fichier sous ./secrets/ récursivement |
"Edit(/src/**/*.ts)" | Éditer des fichiers TypeScript sous la racine du projet /src/ |
"WebFetch(api.example.com)" | Récupérer depuis api.example.com et tous ses sous-domaines |
"mcp__puppeteer" | Tous les outils du serveur MCP puppeteer |
Préfixes de motifs de chemin :
| Préfixe | Signification | Exemple |
|---|---|---|
// | Chemin absolu depuis la racine du système de fichiers | //etc/passwd |
~/ | Relatif au répertoire personnel | ~/Documents/*.pdf |
/ | Relatif à la racine du projet | /src/**/*.ts |
./ | Relatif au répertoire de travail actuel | ./secrets/** |
| (aucun) | Identique à ./ | secrets/** |
Prévention du contournement des commandes shell :
Les règles de permissions 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 contourner cela 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 exemple 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 | Remarques |
|---|---|---|
tools.allowed | permissions.allow | Migré automatiquement au premier chargement |
tools.exclude | permissions.deny | Migré automatiquement au premier chargement |
tools.core | permissions.allow (liste blanche) | Migré automatiquement ; les outils non listés sont désactivés au niveau du registre |
Exemple de configuration :
{
"permissions": {
"allow": ["Bash(git *)", "Bash(npm run *)", "Read(//Users/alice/code/**)"],
"ask": ["Bash(git push *)", "Edit"],
"deny": ["Bash(rm -rf *)", "Read(.env)", "WebFetch(malicious.com)"]
}
}[!tip] Utilisez
/permissionsdans le CLI interactif pour voir, ajouter et supprimer des règles sans éditer directementsettings.json.
slashCommands
Contrôle les commandes slash disponibles dans le CLI. Utile pour verrouiller la surface de commande dans les déploiements multi-utilisateurs ou en entreprise.
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
slashCommands.disabled | tableau de chaînes | Noms des commandes slash à masquer et à refuser d’exécuter. La correspondance est insensible à la casse avec le nom final de la commande (pour les commandes d’extension, il s’agit de la forme désambiguïsée, par exemple myext.deploy). Fusionné en union pour tous les contextes, donc les paramètres de l’espace de travail peuvent ajouter mais pas supprimer les entrées définies dans les paramètres utilisateur ou système. | undefined |
La même liste de blocage peut également être fournie via le drapeau CLI
--disabled-slash-commands (séparé par des virgules ou répété) et la variable
d’environnement QWEN_DISABLED_SLASH_COMMANDS ; les valeurs des trois sources
sont fusionnées en une union.
Exemple — verrouiller les commandes intégrées pour un déploiement en bac à sable :
{
"slashCommands": {
"disabled": ["auth", "mcp", "extensions", "ide", "quit"]
}
}Avec ces valeurs dans un fichier settings.json de niveau système (/etc/qwen-code/settings.json
ou QWEN_CODE_SYSTEM_SETTINGS_PATH), les utilisateurs ne peuvent pas réduire la liste de blocage
depuis leur propre contexte, et les commandes désactivées n’apparaîtront pas dans l’autocomplétion
ni ne s’exécuteront lorsqu’elles seront tapées.
[!note] Ce paramètre ne concerne que les commandes slash (par exemple
/auth,/mcp). Il n’affecte pas les permissions des outils — voirpermissions.denypour cela. Il n’intercepte pas non plus les raccourcis clavier commeCtrl+CouEchap.
mcp
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
mcp.serverCommand | chaîne | Commande pour démarrer un serveur MCP. | undefined |
mcp.allowed | tableau de chaînes | Une liste blanche des serveurs MCP autorisés. Permet de spécifier une liste de noms de serveurs MCP qui doivent être mis à la disposition du modèle. Cela peut être utilisé pour restreindre l’ensemble des serveurs MCP auxquels se connecter. Notez que cela sera ignoré si --allowed-mcp-server-names est défini. | undefined |
mcp.excluded | tableau de chaînes | Une liste noire des serveurs MCP à exclure. Un serveur listé à la fois dans mcp.excluded et mcp.allowed est exclu. Notez que cela sera ignoré si --allowed-mcp-server-names est défini. | undefined |
Note de sécurité pour les serveurs MCP : Ces paramètres utilisent une correspondance simple de chaînes sur les noms de serveurs MCP, qui peut être modifiée. Si vous êtes un administrateur système cherchant à empêcher les utilisateurs de contourner cela, envisagez de configurer les mcpServers au niveau des paramètres système afin que l’utilisateur ne puisse pas configurer ses propres serveurs MCP. Cela ne doit pas être utilisé comme un mécanisme de sécurité étanche.
lsp
[!warning] Fonctionnalité expérimentale : La prise en charge LSP est actuellement expérimentale et désactivée par défaut. Activez-la à l’aide du drapeau de ligne de commande
--experimental-lsp.
Language Server Protocol (LSP) fournit des fonctionnalités d’intelligence de code comme aller à la définition, trouver les références et les diagnostics.
La configuration du serveur LSP se fait via des fichiers .lsp.json dans le répertoire racine de votre projet, et non via settings.json. Voir la documentation LSP pour les détails de configuration et des exemples.
security
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
security.folderTrust.enabled | boolean | Paramètre pour suivre si la confiance de dossier est activée. | false |
security.auth.selectedType | chaîne | Le type d’authentification actuellement sélectionné. | undefined |
security.auth.enforcedType | chaîne | Le type d’authentification requis (utile pour les entreprises). | undefined |
security.auth.useExternal | boolean | Indique s’il faut utiliser un flux d’authentification externe. | undefined |
advanced
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Configurer automatiquement les limites de mémoire de Node.js. | false |
advanced.dnsResolutionOrder | chaîne | L’ordre de résolution DNS. | undefined |
advanced.excludedEnvVars | tableau de chaînes | Variables d’environnement à exclure du contexte du projet. Spécifie les variables d’environnement qui ne doivent pas être chargées à partir des fichiers .env du projet. Cela empêche les variables d’environnement spécifiques au projet (comme DEBUG=true) d’interférer avec le comportement du CLI. Les variables des fichiers .qwen/.env ne sont jamais exclues. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | objet | Configuration de la commande de rapport de bug. Remplace l’URL par défaut de la commande /bug. Propriétés : urlTemplate (chaîne) : Une URL pouvant contenir les espaces réservés {title} et {info}. Exemple : "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
plansDirectory | chaîne | Répertoire personnalisé pour les fichiers du Mode Plan approuvés. Les chemins relatifs sont résolus à partir de la racine du projet, et le chemin résolu doit rester dans la racine du projet. Si non défini, les fichiers de plan sont stockés dans ~/.qwen/plans. Nécessite un redémarrage. Si le répertoire se trouve dans la racine du projet, ajoutez-le à .gitignore pour éviter de commiter les fichiers de plan. | undefined |
experimental
Fonctionnalités expérimentales. Ces bascules activent des fonctionnalités en cours de développement et peuvent changer ou être supprimées dans les versions futures.
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
experimental.cron | boolean | Activer les outils cron/loop en session (cron_create, cron_list, cron_delete) afin que le modèle puisse créer des rappels récurrents. Peut être désactivé via la variable d’environnement QWEN_CODE_DISABLE_CRON=1. Nécessite un redémarrage. | true |
experimental.agentTeam | boolean | Activer les outils de collaboration en équipe d’agents (team_create, task_create, task_update, send_message, etc.) pour la coordination multi-agents. Peut également être activé via QWEN_CODE_ENABLE_AGENT_TEAM=1. Nécessite un redémarrage. | false |
experimental.artifact | boolean | Activer l’outil Artifact, permettant au modèle de publier une page HTML autonome et de l’ouvrir dans le navigateur. Sessions interactives non-SDK uniquement. Basculer via QWEN_CODE_ENABLE_ARTIFACT=1 / QWEN_CODE_DISABLE_ARTIFACT=1. Nécessite un redémarrage. | false |
experimental.emitToolUseSummaries | boolean | Générer une courte étiquette basée sur LLM après chaque lot d’appels d’outils terminé. Voir Résumés d’utilisation d’outils. Nécessite qu’un modèle rapide soit configuré (fastModel) ; ignoré silencieusement sinon. Peut être remplacé par session avec QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 ou =1. | true |
mcpServers
Configure les connexions à un ou plusieurs serveurs Model-Context Protocol (MCP) pour découvrir et utiliser des outils personnalisés. Qwen Code tente de se connecter à chaque serveur MCP configuré pour découvrir les outils disponibles. Si plusieurs serveurs MCP exposent un outil avec le même nom, les noms d’outils seront préfixés par l’alias du serveur que vous avez défini dans la configuration (par exemple, aliasServeur__nomOutilRéel) pour é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 de 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.<NOM_SERVEUR>.command | chaîne | La commande à exécuter pour démarrer le serveur MCP via l’entrée/sortie standard. | Oui |
mcpServers.<NOM_SERVEUR>.args | tableau de chaînes | Arguments à passer à la commande. | Oui |
mcpServers.<NOM_SERVEUR>.env | objet | Variables d’environnement à définir pour le processus du serveur. | Oui |
mcpServers.<NOM_SERVEUR>.cwd | chaîne | Le répertoire de travail dans lequel démarrer le serveur. | Oui |
mcpServers.<NOM_SERVEUR>.url | chaîne | L’URL d’un serveur MCP qui utilise les événements envoyés par le serveur (SSE) pour la communication. | Oui |
mcpServers.<NOM_SERVEUR>.httpUrl | chaîne | L’URL d’un serveur MCP qui utilise HTTP streamable pour la communication. | Oui |
mcpServers.<NOM_SERVEUR>.headers | objet | Une carte d’en-têtes HTTP à envoyer avec les requêtes à url ou httpUrl. | Oui |
mcpServers.<NOM_SERVEUR>.timeout | nombre | Délai d’attente en millisecondes pour les requêtes vers ce serveur MCP. | Oui |
mcpServers.<NOM_SERVEUR>.trust | boolean | Faire confiance à ce serveur et contourner toutes les confirmations d’appels d’outils. | Oui |
mcpServers.<NOM_SERVEUR>.description | chaîne | Une brève description du serveur, qui peut être utilisée à des fins d’affichage. | Oui |
mcpServers.<NOM_SERVEUR>.includeTools | tableau de chaînes | Liste des noms d’outils à inclure de ce serveur MCP. Lorsqu’elle est spécifiée, seuls les outils listés ici seront disponibles à partir de ce serveur (comportement de liste blanche). Si non spécifié, tous les outils du serveur sont activés par défaut. | Oui |
mcpServers.<NOM_SERVEUR>.excludeTools | tableau de chaînes | Liste des noms d’outils à exclure de ce serveur MCP. Les outils listés ici ne seront pas disponibles pour le modèle, même s’ils sont exposés par le serveur. Remarque : excludeTools a priorité sur includeTools - si un outil figure dans les deux listes, il sera exclu. | Oui |
télémétrie
Configure la journalisation et la collecte de métriques pour Qwen Code. Pour plus d’informations, consultez télémétrie.
| Paramètre | Type | Description | Par défaut |
|---|---|---|---|
telemetry.enabled | boolean | Indique si la télémétrie est activée ou non. | |
telemetry.target | string | Étiquette informative pour la destination de la télémétrie (local ou gcp). Ne contrôle pas le routage de l’exportateur ; définissez telemetry.otlpEndpoint ou telemetry.outfile pour configurer où les données sont envoyées. | |
telemetry.otlpEndpoint | string | Le point de terminaison pour l’exportateur OTLP. | |
telemetry.otlpProtocol | string | Le protocole pour l’exportateur OTLP (grpc ou http). | |
telemetry.logPrompts | boolean | Indique s’il faut inclure le contenu des invites utilisateur dans les journaux. | |
telemetry.includeSensitiveSpanAttributes | boolean | Lorsqu’il est activé, attache textuellement les invites utilisateur, les invites système, les entrées/sorties des outils et les réponses du modèle aux attributs natifs des spans OTel (en plus des spans de pont journalisation-span). ⚠️ Diffuse des données sensibles (contenu de fichiers, commandes shell, historique de conversation) vers votre backend OTLP. | false |
telemetry.sensitiveSpanAttributeMaxLength | number | Longueur maximale en caractères JavaScript pour chaque charge utile de contenu d’attribut natif de span OTel sensible. Doit être comprise entre 1 et 104857600 (100 Mio). Définissez une valeur plus basse si votre collecteur ou backend rejette les attributs volumineux. | 1048576 |
telemetry.outfile | string | Chemin pour écrire la télémétrie dans un fichier. 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": [
"Vous oubliez mille choses chaque jour. Assurez-vous que celle-ci en fait partie.",
"Connexion à l'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 des commandes shell
Le CLI conserve un historique des commandes shell que vous exécutez. Pour éviter les conflits entre différents projets, cet historique est stocké dans un répertoire spécifique au projet dans le dossier personnel de l’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 jetons) ou pour les paramètres qui peuvent varier entre les environnements.
Qwen Code peut charger automatiquement les variables d’environnement à partir de fichiers .env.
Pour les variables liées à l’authentification (comme OPENAI_*) et l’approche recommandée .qwen/.env, consultez Authentification.
Exclusion des variables d’environnement : Certaines variables d’environnement (comme DEBUG et DEBUG_MODE) sont automatiquement exclues des fichiers .env du projet par défaut pour éviter toute interférence avec le comportement du CLI. Les variables provenant des fichiers .qwen/.env ne sont jamais exclues. Vous pouvez personnaliser ce comportement en utilisant le paramètre advanced.excludedEnvVars dans votre fichier settings.json.
Tableau des variables d’environnement
| Variable | Description | Notes |
|---|---|---|
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 courant). Le ~ en tête est étendu au répertoire personnel de l’utilisateur. | Stocke les identifiants, les paramètres, la mémoire, les compétences et autres états globaux. Lorsqu’il est défini, les répertoires .qwen/ au niveau du projet ne sont pas affectés. Une chaîne vide est traitée comme non définie. |
QWEN_RUNTIME_DIR | Remplace le répertoire de sortie d’exécution (conversations, journaux, todos). Lorsqu’il n’est pas défini, 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 à true ou 1 pour activer la télémétrie. Toute autre valeur est considérée comme la désactivant. | Remplace le paramètre telemetry.enabled. |
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 où les données sont envoyées. | Remplace le paramètre telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Définit le point de terminaison OTLP pour la télémétrie. | Remplace le paramètre telemetry.otlpEndpoint. |
QWEN_TELEMETRY_OTLP_PROTOCOL | Définit le protocole OTLP (grpc ou http). | Remplace le paramètre telemetry.otlpProtocol. |
QWEN_TELEMETRY_LOG_PROMPTS | Définissez à true ou 1 pour activer ou désactiver la journalisation des invites utilisateur. Toute autre valeur est considérée comme la désactivant. | Remplace le paramètre telemetry.logPrompts. |
QWEN_TELEMETRY_INCLUDE_SENSITIVE_SPAN_ATTRIBUTES | Définissez à true ou 1 pour attacher textuellement les invites utilisateur, les invites système, les E/S des outils et les réponses du modèle aux attributs natifs des spans OTel (et conserver prompt / function_args / response_text sur les spans de pont journalisation-span). Toute autre valeur le désactive. | Remplace le paramètre telemetry.includeSensitiveSpanAttributes. ⚠️ Diffuse des données sensibles vers votre backend OTLP. |
QWEN_TELEMETRY_SENSITIVE_SPAN_ATTRIBUTE_MAX_LENGTH | Définit la longueur maximale en caractères JavaScript pour chaque charge utile de contenu d’attribut natif de span OTel sensible. Doit être un entier positif ne dépassant pas 104857600 (100 Mio). | Remplace le paramètre telemetry.sensitiveSpanAttributeMaxLength. La valeur par défaut est 1048576 (1 Mio) ; réduisez-la si votre collecteur ou backend rejette les attributs de span volumineux. |
QWEN_TELEMETRY_OUTFILE | Définit le chemin du fichier pour é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 du bac à sable pour Docker/Podman. | Prédomine sur tools.sandboxImage. |
SEATBELT_PROFILE | (spécifique à macOS) Change le profil Seatbelt (sandbox-exec) sur macOS. | permissive-open : (par défaut) Restreint les écritures au dossier du projet (et quelques autres dossiers, voir packages/cli/src/utils/sandbox-macos-permissive-open.sb) mais autorise les autres opérations. strict : Utilise un profil strict qui refuse les opérations par défaut. <nom_profil> : Utilise un profil personnalisé. Pour définir un profil personnalisé, créez un fichier nommé sandbox-macos-<nom_profil>.sb dans le répertoire .qwen/ de votre projet (par exemple, mon-projet/.qwen/sandbox-macos-custom.sb). |
DEBUG ou DEBUG_MODE | (souvent utilisé par les bibliothèques sous-jacentes ou le CLI lui-même) Définissez à true ou 1 pour activer la journalisation de débogage verbeuse, ce qui peut être utile pour le dépannage. | Remarque : Ces variables sont automatiquement exclues des fichiers .env du projet par défaut pour éviter toute interférence avec le comportement du CLI. Utilisez les fichiers .qwen/.env si vous devez les définir spécifiquement pour Qwen Code. |
NO_COLOR | Définissez à n’importe quelle valeur pour désactiver toute sortie colorée dans le CLI. | |
FORCE_HYPERLINK | Remplace la détection des liens cliquables OSC 8 dans le moteur de rendu Markdown. Définissez à 1 (ou tout entier non nul, ou chaîne vide) pour forcer l’activation ; définissez à 0 ou une valeur non numérique comme false / off pour forcer la désactivation. Honore NO_COLOR / QWEN_DISABLE_HYPERLINKS ci-dessus. | Utilisez ceci pour activer OSC 8 dans tmux / GNU screen (l’auto-détection refuse par défaut car les capacités du terminal hôte sont cachées derrière le multiplexeur). Nécessite set -g allow-passthrough on sur tmux 3.3+. Active également Hyper, qui n’est pas détecté automatiquement. |
QWEN_DISABLE_HYPERLINKS | Définissez à 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 capables. | Utile lorsqu’un terminal annonce un support mais casse sur les longues URL, ou lorsque la sortie est redirigée via un intermédiaire qui modifie les séquences d’échappement. Le moteur de rendu revient à un rendu label (url) simple. |
CLI_TITLE | Définissez sur une chaîne pour personnaliser le titre du CLI. | |
CODE_ASSIST_ENDPOINT | Spécifie le point de terminaison pour le serveur d’assistance de code. | Utile pour le développement et les tests. |
QWEN_CODE_MAX_OUTPUT_TOKENS | Remplace le nombre maximum de jetons de sortie par réponse. Lorsqu’il n’est pas défini, Qwen Code utilise une stratégie adaptative : commence avec 8K jetons et réessaie automatiquement avec 64K si la réponse est tronquée. Définissez une valeur spécifique (par exemple 16000) pour utiliser une limite fixe à la place. | Prévaut sur la valeur par défaut limitée (8K) mais est remplacé par samplingParams.max_tokens dans les paramètres. Désactive l’escalade automatique lorsqu’il est défini. Exemple : export QWEN_CODE_MAX_OUTPUT_TOKENS=16000 |
QWEN_CODE_UNATTENDED_RETRY | Définissez à true ou 1 pour activer le mode de nouvelle tentative persistante. Lorsqu’il est activé, les erreurs de capacité API transitoires (HTTP 429 Limite de débit et 529 Surcharge) sont réessayées indéfiniment avec un backoff exponentiel (plafonné à 5 minutes par tentative) et des signaux de vie toutes les 30 secondes sur stderr. | Conçu pour les pipelines CI/CD et l’automatisation en arrière-plan où les tâches de longue durée doivent survivre aux pannes API temporaires. Doit être défini explicitement — CI=true seul n’active pas ce mode. Voir Mode sans tête pour les détails. Exemple : export QWEN_CODE_UNATTENDED_RETRY=1 |
QWEN_CODE_PROFILE_STARTUP | Définissez à 1 pour activer le profilage des performances de démarrage. Écrit un rapport de synchronisation JSON dans ~/.qwen/startup-perf/ avec les durées par phase. | Actif uniquement dans le processus enfant du bac à sable (ou avec QWEN_CODE_PROFILE_STARTUP_OUTER=1). Aucun surcoût lorsqu’il n’est pas défini. Exemple : export QWEN_CODE_PROFILE_STARTUP=1 |
QWEN_CODE_PROFILE_STARTUP_OUTER | Définissez à 1 avec QWEN_CODE_PROFILE_STARTUP=1 pour également collecter un profil de démarrage dans le processus externe (avant le bac à sable). Les rapports du processus externe reçoivent un préfixe outer- pour les distinguer de ceux du processus enfant du bac à sable. | Désactivé par défaut — seul le processus enfant du bac à sable collecte, pour éviter les rapports en double. Utile pour le développement local où le CLI n’est pas relancé dans un bac à sable. |
QWEN_CODE_PROFILE_STARTUP_NO_HEAP | Définissez à 1 avec QWEN_CODE_PROFILE_STARTUP=1 pour ignorer les instantanés process.memoryUsage() par point de contrôle. Utile pour mesurer le surcoût Heisenberg du profileur lui-même. | Désactivé par défaut. Les instantanés de tas coûtent environ 50 µs chacun (bien en dessous de 1% du démarrage total), donc la plupart des utilisateurs devraient laisser ce paramètre inchangé. |
QWEN_CODE_LEGACY_MCP_BLOCKING | Définissez à 1 pour restaurer le comportement MCP pré-progressif où Config.initialize() attend de manière synchrone la poignée de main 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 démarrer en arrière-plan alors que l’interface utilisateur est déjà interactive ; le modèle voit chaque lot de nouveaux outils dans environ 16 ms après que le serveur se soit stabilisé. Ce drapeau est conservé comme échappatoire de rollback pour au moins 1 version. Exemple : export QWEN_CODE_LEGACY_MCP_BLOCKING=1 |
Lorsque les deux fichiers .env de niveau utilisateur définissent la même variable, le fichier spécifique à Qwen est prioritaire : <QWEN_HOME>/.env (ou ~/.qwen/.env si QWEN_HOME n’est pas défini) est chargé avant ~/.env, et les valeurs d’environnement existantes ne sont pas écrasées. |
Arguments en ligne de commande
Les arguments passés directement lors de l’exécution de la CLI peuvent surcharger les autres configurations pour cette session spécifique.
Pour la sélection de l’image sandbox, la priorité est :
--sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > image par défaut intégrée.
Tableau des arguments en ligne de commande
| Argument | Alias | Description | Valeurs possibles | Remarques |
|---|---|---|---|---|
--model | -m | Spécifie le modèle Qwen à utiliser pour cette session. | Nom du modèle | Exemple : npm start -- --model qwen3-coder-plus |
--prompt | -p | Utilisé pour passer un prompt directement à la commande. Cela exécute Qwen Code en mode non interactif. | Votre texte de prompt | Pour des exemples de script, utilisez le drapeau --output-format json pour obtenir une sortie structurée. |
--prompt-interactive | -i | Lance une session interactive avec le prompt fourni comme entrée initiale. | Votre texte de prompt | Le prompt est traité dans la session interactive, pas avant. Ne peut pas être utilisé lors d’un pipeline d’entrée depuis stdin. Exemple : qwen -i "explique ce code" |
--system-prompt | Remplace le prompt système principal intégré pour cette exécution. | Votre texte de prompt | Les fichiers de contexte chargés tels que QWEN.md sont toujours ajoutés après cette surcharge. Peut être combiné avec --append-system-prompt. | |
--append-system-prompt | Ajoute des instructions supplémentaires au prompt système principal de la session 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 Mode sans tête pour des exemples. | |
--output-format | -o | Spécifie le format de sortie de la CLI pour le mode non interactif. | text, json, stream-json | text : (Par défaut) La sortie standard lisible par l’humain. json : Une sortie JSON lisible par machine émise à la fin de l’exécution. stream-json : Des messages JSON en flux émis au fur et à mesure de l’exécution. Pour une sortie structurée et des scripts, utilisez les drapeaux --output-format json ou --output-format stream-json. Voir Mode sans tête pour des informations détaillées. |
--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 en ligne de commande. stream-json : Protocole de message JSON via stdin pour la communication bidirectionnelle. Condition : --input-format stream-json nécessite que --output-format stream-json soit défini. Lors de l’utilisation de stream-json, stdin est réservé aux messages du protocole. Voir Mode sans tête pour des informations détaillées. | |
--include-partial-messages | Inclure les messages partiels de l’assistant lors de l’utilisation du format de sortie stream-json. Lorsque activé, émet des événements de flux (message_start, content_block_delta, etc.) au fur et à mesure du streaming. | Par défaut : false. Condition : Nécessite que --output-format stream-json soit défini. Voir Mode sans tête pour des informations détaillées sur les événements de flux. | ||
--sandbox | -s | Active le mode sandbox pour cette session. | ||
--sandbox-image | Définit l’URI de l’image sandbox. | |||
--debug | -d | Active le mode débogage pour cette session, fournissant une sortie plus verbose. | ||
--all-files | -a | Si défini, inclut récursivement tous les fichiers du répertoire courant comme contexte pour le prompt. | ||
--help | -h | Affiche les informations d’aide sur les arguments en ligne de commande. | ||
--show-memory-usage | Affiche l’utilisation actuelle de la mémoire. | |||
--yolo | Active le mode YOLO, qui approuve automatiquement tous les appels d’outil. | |||
--approval-mode | Définit le mode d’approbation pour les appels d’outil. | 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 pour les autres. auto : Le classifieur LLM approuve automatiquement les actions sûres et bloque les risquées. yolo : Approuver automatiquement tous les appels d’outil (équivalent à --yolo). Ne peut pas être utilisé avec --yolo. Utilisez --approval-mode=yolo au lieu de --yolo pour la nouvelle approche unifiée. Exemple : qwen --approval-mode auto-editVoir plus à propos du Mode d’approbation. | |
--allowed-tools | Une liste séparée par des virgules des noms d’outils qui contourneront la boîte de dialogue de confirmation. | Noms d’outils | Exemple : qwen --allowed-tools "Shell(git status)" | |
--disabled-slash-commands | Noms des commandes slash à masquer/désactiver (séparés par des virgules ou répétés). Associé au paramètre slashCommands.disabled et à la variable d’environnement QWEN_DISABLED_SLASH_COMMANDS. La correspondance est insensible à la casse avec le nom final de la commande. | Noms de commandes | Exemple : qwen --disabled-slash-commands "auth,mcp,extensions" | |
--telemetry | Active la télémétrie. | |||
--telemetry-target | Définit la cible de télémétrie. | Voir télémétrie pour plus d’informations. | ||
--telemetry-otlp-endpoint | Définit le point de terminaison OTLP pour la télémétrie. | Voir télémétrie pour plus d’informations. | ||
--telemetry-otlp-protocol | Définit le protocole OTLP pour la télémétrie (grpc ou http). | Par défaut : grpc. Voir télémétrie pour plus d’informations. | ||
--telemetry-log-prompts | Active la journalisation des prompts pour la télémétrie. | Voir télémétrie pour plus d’informations. | ||
--acp | Active le mode ACP (Agent Client Protocol). Utile pour les intégrations IDE/éditeur comme Zed. | Stable. Remplace le drapeau obsolète --experimental-acp. | ||
--experimental-lsp | Active la fonctionnalité expérimentale LSP (Language Server Protocol) pour l’intelligence du code (aller à la définition, trouver les références, diagnostics, etc.). | Expérimental. Nécessite que des serveurs de langage soient installés. | ||
--extensions | -e | Spécifie une liste d’extensions à utiliser pour la session. | Noms d’extensions | Si non fourni, toutes les extensions disponibles sont utilisées. Utilisez le terme spécial qwen -e none pour désactiver toutes les extensions. Exemple : qwen -e my-extension -e my-other-extension |
--list-extensions | -l | Liste toutes les extensions disponibles et quitte. | ||
--proxy | Définit le proxy pour la CLI. | URL du proxy | Exemple : --proxy http://localhost:7890. | |
--include-directories | Inclut des répertoires supplémentaires dans l’espace de travail pour la prise en charge de plusieurs répertoires. | Chemins de répertoires | Peut être spécifié plusieurs fois ou sous forme de valeurs séparées par des virgules. 5 répertoires maximum peuvent être ajoutés. Exemple : --include-directories /path/to/project1,/path/to/project2 ou --include-directories /path/to/project1 --include-directories /path/to/project2 | |
--screen-reader | Active le mode lecteur d’écran, qui ajuste le TUI pour une meilleure compatibilité avec les lecteurs d’écran. | |||
--version | Affiche la version de la CLI. | |||
--openai-logging | Active la journalisation des appels API OpenAI pour le débogage et l’analyse. | Ce drapeau 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 de répertoire | Ce drapeau remplace le paramètre openAILoggingDir dans settings.json. Prend en charge les chemins absolus, relatifs et l’expansion ~. Exemple : qwen --openai-logging-dir "~/qwen-logs" --openai-logging |
Fichiers de contexte (contexte instructionnel hiérarchique)
Bien qu’il ne s’agisse pas strictement d’une configuration du comportement de la CLI, les fichiers de contexte (par défaut QWEN.md mais configurables via le paramètre context.fileName) sont essentiels pour configurer le contexte instructionnel (également appelé « mémoire »). Cette fonctionnalité puissante vous permet de donner des instructions spécifiques au projet, des guides de style de codage ou toute information de contexte pertinente à l’IA, rendant ses réponses plus adaptées et précises à vos besoins. La 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 que vous souhaitez que le modèle Qwen connaisse lors de vos interactions. Le système est conçu pour gérer ce contexte instructionnel de manière hiérarchique.
Exemple de contenu de fichier de contexte (p. ex. QWEN.md)
Voici un exemple conceptuel de ce qu’un fichier de contexte à la racine d’un projet TypeScript pourrait contenir :
# Project: My Awesome TypeScript Library
## General Instructions:
- When generating new TypeScript code, please follow the existing coding style.
- Ensure all new functions and classes have JSDoc comments.
- Prefer functional programming paradigms where appropriate.
- All code should be compatible with TypeScript 5.0 and Node.js 22+.
## Coding Style:
- Use 2 spaces for indentation.
- Interface names should be prefixed with `I` (e.g., `IUserService`).
- Private class members should be prefixed with an underscore (`_`).
- Always use strict equality (`===` and `!==`).
## Specific Component: `src/api/client.ts`
- This file handles all outbound API requests.
- When adding new API call functions, ensure they include robust error handling and logging.
- Use the existing `fetchWithRetry` utility for all GET requests.
## Regarding Dependencies:
- Avoid introducing new external dependencies unless absolutely necessary.
- If a new dependency is required, please state the reason.Cet exemple montre comment vous pouvez fournir un contexte général de projet, des conventions de codage spécifiques, et même des notes sur des fichiers ou composants particuliers. Plus vos fichiers de contexte sont pertinents et précis, plus l’IA peut vous aider efficacement. Les fichiers de contexte spécifiques au projet sont fortement encouragés pour établir des conventions et un contexte.
- Chargement hiérarchique et précédence : La CLI implémente un système de mémoire hiérarchique en chargeant les fichiers de contexte (par exemple,
QWEN.md) depuis plusieurs emplacements. Le contenu des fichiers situés plus bas dans cette liste (plus spécifiques) remplace ou complète généralement le contenu des fichiers situés plus haut (plus généraux). L’ordre exact de concaténation et le contexte final peuvent être inspectés depuis la boîte de dialogue/memory. L’ordre de chargement typique est le suivant :- Fichier de contexte global :
- Emplacement :
~/.qwen/<nom-du-fichier-de-contexte-configuré>(par exemple,~/.qwen/QWEN.mddans votre répertoire personnel). - Portée : Fournit des instructions par défaut pour tous vos projets.
- Emplacement :
- Fichiers de contexte de la racine du projet et des répertoires parents :
- Emplacement : La CLI cherche 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 : La CLI cherche 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 indicateur 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 de la CLI affiche le nombre de fichiers de contexte chargés, vous donnant un aperçu visuel rapide du contexte instructionnel actif.
- Importation de contenu : Vous pouvez modulariser vos fichiers de contexte en important d’autres fichiers Markdown en utilisant la syntaxe
@chemin/vers/fichier.md. Pour plus de détails, consultez la documentation sur la mémoire. - Commandes de gestion de la mémoire :
- Utilisez
/memorypour ouvrir la boîte de dialogue de gestion de la mémoire. - Rafraîchissez la mémoire depuis la boîte de dialogue pour re-scanner et recharger les fichiers de contexte depuis tous les emplacements configurés.
- Consultez la documentation sur les commandes pour plus de détails sur la commande
/memory.
- Utilisez
En comprenant et en utilisant ces couches de configuration et la nature hiérarchique des fichiers de contexte, vous pouvez gérer efficacement la mémoire de l’IA et adapter les réponses de Qwen Code à vos besoins et projets spécifiques.
Sandbox
Qwen Code peut exécuter des opérations potentiellement dangereuses (comme des commandes shell et des modifications de fichiers) dans un environnement sandboxé pour protéger votre système.
Le Sandbox est désactivé par défaut, mais vous pouvez l’activer de plusieurs manières :
- En utilisant le drapeau
--sandboxou-s. - En définissant la variable d’environnement
QWEN_SANDBOX. - En définissant
tools.sandboxdans les paramètres.
⚠️
--yolon’active pas automatiquement un sandbox. Le mode YOLO se contente d’approuver automatiquement les appels d’outils ; le sandboxing doit toujours être activé via--sandbox,QWEN_SANDBOXoutools.sandbox. Dans les exécutions sans tête / non interactives avec--yolo(ou--approval-mode=yolo) et sans sandbox, le modèle peut exécuter les outils shell, d’écriture et d’édition au niveau de privilège du processus actuel — Qwen Code affiche un avertissement sur stderr dans ce cas. Supprimez-le avecQWEN_CODE_SUPPRESS_YOLO_WARNING=1après avoir examiné le compromis.
Par défaut, il utilise une image Docker pré-construite qwen-code-sandbox.
Pour des besoins de sandboxing spécifiques au projet, vous pouvez créer un Dockerfile personnalisé dans .qwen/sandbox.Dockerfile à la racine de votre projet. Ce Dockerfile peut être basé sur l’image 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 la CLI est utilisée, à identifier les problèmes courants et à prioriser les nouvelles fonctionnalités.
Ce que nous collectons :
- Appels d’outils : Nous enregistrons les noms des outils appelés, s’ils réussissent ou échouent, et le temps qu’ils prennent pour s’exécuter. 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 ou des réponses.
- Informations de session : Nous collectons des informations sur la configuration de la CLI, comme les outils activés et le mode d’approbation.
Ce que nous NE collectons PAS :
- Informations personnelles identifiables (PII) : Nous ne collectons aucune information personnelle, comme votre nom, adresse e-mail ou clés API.
- Contenu des prompts et des réponses : Nous ne journalisons pas le contenu de vos prompts ni les réponses du modèle.
- Contenu des fichiers : Nous ne journalisons pas le contenu des fichiers lus ou écrits par la CLI.
Comment se désinscrire :
Vous pouvez vous désinscrire de la collecte de 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 terminaison de collecte Alibaba Cloud RUM.