400 avec Qwen 3.8-Max : la correction à appliquer d’abord
Le correctif officiel a été intégré à Qwen Code v0.20.1, publiée le 21 juillet 2026, après la fusion de la pull request dédiée aux requêtes secondaires sur DashScope. Si la version installée est antérieure à 0.20.1, mettez Qwen Code à niveau avant de modifier les paramètres du modèle et ne forcez pas enable_thinking=false. (version officielle v0.20.1)
La cause confirmée concerne un conflit entre le mode de réflexion obligatoire de Qwen 3.8-Max Preview et l’ancienne logique de Qwen Code, qui désactivait parfois la réflexion pour les requêtes internes. La correction traite également certains appels structurés qui forçaient tool_choice: required, une combinaison rejetée par le modèle dans ce mode. (pull request officielle)
Cet article s’adresse aux développeurs qui utilisent Qwen 3.8-Max Preview comme modèle principal ou rapide dans Qwen Code, aux équipes d’agents IA dépendant du web fetch, des sous-agents ou des résumés, ainsi qu’aux ingénieurs de plateforme qui doivent reproduire le problème dans un environnement macOS isolé.
Dernière mise à jour : 30 juillet 2026. Vérification effectuée à partir du dépôt officiel de Qwen Code, de la pull request dédiée, de la version v0.20.1 et des tickets de régression associés.
Première étape : reconnaître le bon type de panne
Le symptôme le plus trompeur est une conversation principale qui fonctionne alors que certaines fonctions secondaires échouent. Un développeur peut donc continuer à écrire du code dans le terminal, puis recevoir une erreur lorsqu’il demande une page web, une classification de permissions, un résumé ou une compression du contexte.
Le message le plus caractéristique est proche de celui-ci :
400 data: {
"error": {
"code": "invalid_parameter_error",
"message": "The value of the enable_thinking parameter is restricted to True."
}
}
Ce message ne signifie pas nécessairement que la clé API est invalide, que le quota est épuisé ou que le modèle n’est plus accessible. Dans le ticket de reproduction, la requête fautive provenait de Qwen Code 0.20.0 avec qwen3.8-max-preview, et l’API refusait explicitement la valeur false. (ticket officiel sur enable_thinking)
Les restrictions importantes sont les suivantes :
- Le dialogue principal et la requête secondaire peuvent suivre deux chemins de génération différents. Un échange texte réussi ne valide donc pas le web fetch, le sous-agent ou la compression.
- L’ancienne logique pouvait désactiver la réflexion sans connaître la capacité réelle du modèle. Elle ajoutait alors
enable_thinking: falseà une requête adressée à un modèle qui exige la réflexion. - Les appels structurés possèdent une contrainte supplémentaire. Dans le correctif officiel, Qwen 3.8-Max Preview ne reçoit plus un choix d’outil forcé lorsque le mode de réflexion le rend incompatible ; la sélection redevient automatique.
- Une version corrigée n’est pas forcément la version réellement exécutée. Une installation globale, un processus déjà ouvert, un chemin
PATHdifférent ou une configuration persistante peuvent maintenir l’ancien comportement. - Le modèle principal et le modèle rapide peuvent être différents. Un modèle secondaire non compatible, ou un alias resté ancien, peut produire une erreur alors que le modèle principal répond correctement.
Avant toute modification, conservez l’erreur complète, la version de Qwen Code, l’identifiant exact du modèle, l’URL de compatibilité utilisée et la fonction qui a échoué. Cette trace évite de mélanger un problème de paramètre avec un problème de routage ou d’authentification.
Deuxième étape : comprendre pourquoi la réflexion ne doit pas être désactivée
Pourquoi Qwen 3.8-Max ne peut-il pas désactiver le mode de réflexion ?
Le point important n’est pas de déduire une capacité générale de Qwen 3.8-Max à partir d’un seul message d’erreur. La documentation technique du ticket officiel décrit une contrainte précise pour qwen3.8-max-preview sur les routes compatibles DashScope : le modèle est traité comme un modèle à réflexion obligatoire, et l’API rejette la valeur enable_thinking: false.
L’ancienne implémentation désactivait la réflexion pour réduire la latence et la consommation de jetons lors des requêtes secondaires. Cela pouvait concerner :
- les requêtes « side query » de Qwen Code ;
- la récupération puis le résumé d’une page web ;
- la classification d’une permission ;
- la génération d’un sous-agent ;
- les suggestions et résumés internes ;
- la compression d’une conversation longue.
Le correctif ne transforme pas Qwen 3.8-Max Preview en modèle configurable librement. Il empêche surtout Qwen Code d’envoyer une combinaison de paramètres déjà refusée par l’interface. La pull request indique également que le coût à accepter est une latence et une consommation de jetons liées au maintien de la réflexion pour les requêtes secondaires.
Que faire si Qwen Code renvoie une erreur avec enable_thinking=false ?
La première action consiste à supprimer toute surcharge locale qui force cette valeur, puis à installer Qwen Code v0.20.1 ou une version ultérieure. Il est déconseillé de corriger le symptôme en ajoutant d’autres paramètres dans settings.json, car cette modification peut masquer le chemin de requête qui reste ancien.
Les paramètres à inspecter sont notamment :
{
"generationConfig": {
"extra_body": {
"enable_thinking": false
}
}
}
Ce bloc n’est pas toujours présent directement sous cette forme ; il peut être généré par un profil de fournisseur, un alias de modèle ou une configuration de modèle rapide. Il faut donc vérifier la configuration effective, et pas uniquement le fichier que l’équipe pense utiliser.
Troisième étape : mettre Qwen Code à niveau sans invalider le diagnostic
1. Relever la version réellement lancée
Dans le terminal utilisé pour le projet, relevez d’abord la version :
qwen --version
Selon l’installation, le binaire peut utiliser un autre nom de commande. Le contrôle utile consiste à confirmer que le chemin exécuté correspond bien à l’installation que l’équipe vient de mettre à jour :
command -v qwen
Sur macOS, cette vérification est particulièrement importante lorsque plusieurs installations globales ou environnements Node.js coexistent. Une version affichée dans un gestionnaire de paquets ne prouve pas que le terminal courant utilise cette même copie.
2. Installer une version contenant le correctif
La version minimale à retenir pour cet incident est v0.20.1. La note de publication officielle mentionne explicitement la correction « support qwen3.8 side queries on DashScope », identifiée par la pull request 7303.
Utilisez la méthode de mise à jour correspondant au canal d’installation initial : gestionnaire de paquets, installateur officiel ou installation depuis les sources. Il ne faut pas mélanger une mise à jour globale avec une copie locale du dépôt, car le résultat peut donner une version corrigée dans un répertoire et une version obsolète dans le PATH.
Après la mise à niveau, contrôlez de nouveau :
qwen --version
command -v qwen
3. Fermer les processus qui conservent l’ancienne configuration
Quittez la session Qwen Code active et fermez les processus persistants liés à l’interface ou au démon, si l’installation en utilise un. La pull request précise que certains rafraîchissements de fournisseur et certains caches de générateur sont désormais invalidés correctement, mais une session déjà chargée reste un facteur de confusion lors d’un diagnostic.
Redémarrez ensuite une session propre, rechargez la configuration du fournisseur et sélectionnez à nouveau le modèle principal et le modèle rapide. Cette séquence permet de distinguer une correction non installée d’une configuration qui n’a jamais été relue.
4. Ne pas confondre fusion du code et disponibilité locale
La pull request 7303 a été fusionnée le 21 juillet 2026, tandis que la version v0.20.1 a été publiée le même jour. Une fusion dans la branche principale ne signifie pas qu’une ancienne installation locale bénéficie déjà du correctif.
Pour un environnement de production, la référence la plus sûre est donc la version publiée, et non le numéro d’une validation observée dans le dépôt.
Quatrième étape : isoler la configuration qui reste incompatible
Si l’erreur persiste après l’installation de v0.20.1 ou d’une version plus récente, le diagnostic doit suivre le trajet réel de la requête.
Le modèle secondaire n’est pas celui attendu
Qwen Code peut utiliser un modèle principal pour la conversation et un modèle rapide ou secondaire pour certaines opérations. Vérifiez séparément :
- le modèle principal ;
- le modèle rapide ;
- le modèle appelé par les requêtes secondaires ;
- les identifiants déclarés dans les profils de fournisseur.
Le correctif officiel prévoit notamment que le modèle secondaire d’un même fournisseur ne récupère pas automatiquement la capacité « réflexion obligatoire » d’un autre modèle. Cette distinction évite de traiter tous les modèles Qwen comme s’ils avaient les mêmes contraintes.
L’alias ne correspond plus à l’identifiant réel
Un alias local peut continuer à pointer vers un ancien identifiant, par exemple une variante générique ou un modèle différent de qwen3.8-max-preview. En cas de doute, comparez le nom affiché dans Qwen Code avec le nom effectivement envoyé à l’interface compatible.
Une erreur qui n’apparaît qu’avec le modèle rapide indique souvent un problème de sélection secondaire plutôt qu’un problème du dialogue principal.
La route compatible n’est pas la bonne
Le correctif documenté vise le comportement de Qwen 3.8-Max Preview sur des routes compatibles DashScope. La documentation officielle de configuration des fournisseurs Qwen Code précise que Qwen Code utilise des fournisseurs distincts et peut s’appuyer sur une interface compatible OpenAI.
Il faut donc relever l’URL de base, le fournisseur sélectionné et le type d’authentification. Une configuration qui utilise une interface compatible différente peut avoir ses propres règles concernant enable_thinking, les outils ou le choix structuré.
Une ancienne surcharge force encore false
Recherchez enable_thinking, reasoning, includeThoughts et tool_choice dans les fichiers de configuration du projet, les variables d’environnement et les profils importés. Ne modifiez pas tous les paramètres en même temps : retirez d’abord la surcharge de désactivation, relancez une requête minimale, puis observez le résultat.
Cinquième étape : valider séparément le texte, le web fetch et les outils
Comment vérifier que les requêtes secondaires fonctionnent après la mise à niveau ?
Une réponse normale du modèle ne suffit pas. La validation doit couvrir plusieurs catégories, car chacune peut emprunter un chemin différent.
La pull request officielle recommande de tester une requête secondaire texte et une requête secondaire structurée. Elle indique qu’après correction, la première doit conserver la réflexion et que la seconde doit éviter le choix d’outil forcé tout en retournant le résultat structuré attendu. Les tests mentionnent également une validation sur macOS.
Utilisez une fiche de validation plutôt qu’une impression générale :
- [ ] la version affichée est v0.20.1 ou supérieure ;
- [ ] l’identifiant principal est bien
qwen3.8-max-preview; - [ ] l’identifiant rapide a été vérifié séparément ;
- [ ] une requête texte principale répond ;
- [ ] une question secondaire courte répond ;
- [ ] une récupération de page web retourne du contenu ;
- [ ] un appel structuré termine sans
tool_choice: requiredincompatible ; - [ ] une fonction de sous-agent démarre et renvoie son résultat ;
- [ ] la classification de permission ne renvoie plus HTTP 400 ;
- [ ] le journal conserve la fonction testée et la catégorie d’erreur.
Pourquoi le web fetch et les sous-agents peuvent-ils échouer en même temps ?
Ils peuvent partager une même chaîne de génération secondaire. Le ticket consacré au web fetch décrit une situation où la récupération de la page n’était pas nécessairement la partie fautive : l’étape de synthèse interne échouait ensuite avec l’erreur enable_thinking. (ticket officiel sur le web fetch)
Un autre ticket de diagnostic décrit la même logique pour les fonctions web_fetch et les classificateurs : la méthode runSideQuery ajoutait une valeur incompatible au cours du traitement final, même lorsque la configuration du fournisseur indiquait une valeur différente. (ticket officiel sur les requêtes secondaires)
Cela explique pourquoi changer l’URL, la consigne ou le format de sortie ne résout pas toujours le problème. Si la requête secondaire envoie toujours un paramètre interdit, la fonction échoue quel que soit le contenu demandé.
Comparer les scénarios avant de modifier davantage la configuration
Le tableau suivant permet de choisir l’action la plus rationnelle au lieu de retoucher les paramètres au hasard.
| Situation observée | Indice principal | Action prioritaire | Conclusion provisoire |
|---|---|---|---|
| Qwen Code antérieur à 0.20.1 | Version ancienne, erreur sur web fetch ou compression | Mettre à niveau puis redémarrer la session | Compatibilité probablement non corrigée |
| Conversation principale fonctionnelle, outil secondaire en échec | Erreur limitée aux requêtes internes | Vérifier le modèle rapide et le fournisseur | Chemins de génération différents |
enable_thinking=false présent dans la configuration |
Surcharge visible dans un profil ou une variable | Retirer la désactivation explicite | Configuration locale conflictuelle |
| Appel structuré en échec mais texte fonctionnel | Erreur liée au choix d’outil | Vérifier la gestion automatique des outils | Incompatibilité de sélection structurée possible |
| Échec après mise à niveau | Version correcte mais ancien alias ou route | Recharger le fournisseur et comparer l’URL | Cache ou routage à examiner |
| Échec uniquement sur une route non DashScope | Différence de fournisseur ou d’endpoint | Reproduire sur la route documentée | Portée du correctif à confirmer |
Les informations ci-dessus restent limitées à l’incident de compatibilité documenté. Elles ne permettent pas de conclure à une date d’ouverture des poids, à une licence, à une méthode de déploiement local ou aux capacités d’une version future de Qwen 3.8-Max Preview.
Consigner une procédure de retour arrière propre
Une mise à niveau peut être conservée si les tests principaux et secondaires réussissent, si le modèle réellement appelé est confirmé et si aucune erreur de routage ne réapparaît après le redémarrage. Dans le cas contraire, il est préférable de conserver une copie de la configuration précédente et de noter précisément le point de divergence.
| Élément à consigner | Avant la mise à niveau | Après la mise à niveau |
|---|---|---|
| Version Qwen Code | Version affichée par le binaire | Version affichée après installation |
| Modèle principal | Identifiant exact | Identifiant exact |
| Modèle rapide | Identifiant exact | Identifiant exact |
| Route API | URL de base et fournisseur | URL de base et fournisseur |
| Fonction en échec | web fetch, résumé, sous-agent ou autre | Résultat du même test |
| Paramètres sensibles | enable_thinking, reasoning, outils |
Paramètres réellement conservés |
| Résultat HTTP | Code et message complet | Code et message complet |
| Session | Processus existants | Session neuve ou processus relancé |
Un environnement macOS temporaire devient pertinent lorsque plusieurs projets partagent des variables d’environnement, des fichiers de configuration ou des installations Node.js différentes. Il ne s’agit pas de supposer que macOS corrige le problème : l’intérêt est d’éliminer les variables héritées et de reproduire le même scénario avec une configuration minimale.
| Environnement | À choisir lorsque | Avantage du test | Limite |
|---|---|---|---|
| Poste de développement actuel | La configuration est simple et documentée | Validation rapide du correctif | Risque de pollution par le projet |
| Session macOS isolée | Plusieurs versions ou fournisseurs coexistent | Séparation nette des variables et caches | Demande une préparation supplémentaire |
| Environnement distant temporaire | Le poste local ne peut pas être interrompu | Reproduction indépendante et partageable | Ne reproduit pas automatiquement chaque intégration locale |
| Retour à l’ancienne version | Un autre incident bloquant apparaît après upgrade | Restauration contrôlée du service | Ne corrige pas la compatibilité avec Qwen 3.8-Max Preview |
Pour un projet contenant de nombreux outils, le guide d’aide de ZilCloud peut servir de point de départ pour organiser une vérification distante et séparer la couche machine de la configuration applicative. Une équipe qui souhaite comparer les modalités disponibles peut également consulter la présentation française de ZilCloud.
Ce que ce correctif change réellement pour un environnement de travail
Le correctif ne supprime pas les contraintes de Qwen 3.8-Max Preview. Il évite surtout une requête invalide et adapte le traitement des appels structurés. Les requêtes secondaires peuvent donc continuer à demander davantage de temps ou de jetons, puisque la réflexion n’est plus désactivée artificiellement.
Cette nuance compte pour les agents IA qui exécutent de nombreuses actions : une correction de compatibilité ne constitue pas une garantie de coût, de latence ou de disponibilité identique à celle d’un modèle sans réflexion obligatoire. Les équipes doivent mesurer séparément la réussite fonctionnelle, le délai de réponse et la consommation propre à leur fournisseur.
Si l’environnement actuel est une machine locale chargée de dépendances, il présente trois défauts réels pour ce type de diagnostic : les versions globales peuvent être difficiles à identifier, les variables d’environnement peuvent être héritées par plusieurs projets et les processus persistants peuvent conserver une configuration antérieure. Une machine distante temporaire fournie par ZilCloud offre un cadre plus propre pour reproduire l’incident, comparer deux installations et supprimer l’environnement après validation, sans transformer un dépannage ponctuel en achat de matériel.
Cette approche reste moins adaptée à un service qui exige une charge lourde permanente, des périphériques physiques spécifiques ou une continuité de stockage local. En revanche, pour une mise à niveau, un test d’agent, une vérification de compatibilité ou une reproduction isolée sur macOS, la location d’un Mac peut éviter de contaminer le poste principal et rendre le résultat plus facile à partager entre développeurs.
Pour approfondir la méthode, consultez la page de tarification de ZilCloud uniquement après avoir défini la durée réelle du test et les fonctions à valider. Le choix rationnel n’est pas de louer systématiquement une machine, mais de l’utiliser lorsque l’isolation de l’environnement vaut davantage que la conservation d’une configuration locale difficile à démêler.
Stabilisez vos workflows avec ZilCloud
Déployez vos outils sur un Mac distant ZilCloud prêt à l’emploi pour développer, tester et valider vos intégrations dans un environnement maîtrisé.
Bénéficiez de ressources adaptées aux traitements exigeants et aux appels répétés de vos applications d’intelligence artificielle.