Skip to Content
BlogMises à jour07-23 Mise à jour produit

Qwen Code Hebdo : redirection en temps réel pour corriger l'Agent à la volée, Worktree pour isoler les sessions parallèles, web_search intégré de retour

Qwen Team
2026-07-23

Cette semaine, Qwen Code sort trois versions stables — v0.19.12, v0.20.0 et v0.20.1 — avec plus de 220 PR fusionnés.

L’Agent dévie ? Tapez pour le recadrer. Pendant que le modèle génère sa sortie, appuyez sur Entrée : votre message guide le tour en cours au prochain point d’échantillonnage. Ctrl+Q le reporte au tour suivant. Les messages saisis pendant l’exécution d’un outil sont également pris en compte. Plus besoin d’attendre que l’Agent ait fini pour le corriger.

Les tâches parallèles ne se marchent plus dessus. Le Web Shell permet de créer un Worktree isolé en un clic : plusieurs tâches dans le même dépôt s’exécutent chacune dans un git worktree indépendant, sans interférence sur les éditions de fichiers, git add ou git checkout. L’identifiant violet ⑂ est présent dans le chip git, la liste des sessions et le menu déroulant du workspace.

La recherche web est de retour. L’outil intégré web_search repose sur l’API Responses de Bailian — votre clé API Bailian existante suffit pour rechercher. La communauté demandait son retour depuis sa suppression : il est désormais réimplémenté avec recherche côté serveur + lecture de pages, et les réponses incluent automatiquement une section Sources en fin. Désactivé par défaut, à activer explicitement.

web_fetch reconstruit de zéro. Avant, la récupération de pages web perdait les liens, les PDF devenaient du charabia, et les grandes pages tronquées perdaient la réponse. Désormais, le HTML est converti en markdown avant troncature, les PDF sont extraits en texte inline, les fichiers binaires sont correctement sauvegardés, avec un timeout de 60 secondes et une limite de 10 Mo.

✨ Nouvelles fonctionnalités

Redirection en temps réel : corriger l’Agent pendant qu’il écrit

Avant, quand l’Agent était en train de produire sa sortie et que vous tapiez un message, il fallait attendre la fin pour l’envoyer — ça devenait un nouveau prompt. Si l’Agent partait dans la mauvaise direction, vous ne pouviez que le regarder finir avant de corriger.

Désormais, Entrée et Ctrl+Q ont des rôles clairement définis :

  • Entrée : le message entre dans la file de redirection et prend effet au prochain point d’échantillonnage du modèle, toujours dans le tour en cours. L’Agent écrit du code, vous tapez « réécris en TypeScript » — il reçoit cette consigne au point d’échantillonnage suivant.
  • Ctrl+Q : le message est reporté après la fin du tour en cours, comme ouverture d’un nouveau tour de conversation.
  • Pendant l’exécution d’un outil : les messages saisis sont consommés après le retour du résultat de l’outil, dans le même tour.
  • Vous avez changé d’avis ? Appuyez sur Haut ou Échap — le message en file revient dans le champ de saisie.

Les pièces jointes @ sont également conservées, sans préfixe synthétique ajouté. En cas d’échec ou d’annulation de la livraison, le message n’est pas perdu.

Ce que cela vous permet de faire :

  • L’Agent écrit du code dans la mauvaise direction — tapez pour corriger sans attendre la fin
  • Compléter le contexte pendant qu’un outil s’exécute
  • Préparer la question du prochain tour avec Ctrl+Q — elle part automatiquement à la fin du tour en cours

Voir le PR #7090 

Worktree : des sessions isolées pour les tâches parallèles

Quand vous travaillez sur deux tâches simultanément dans le même dépôt, une session modifie un fichier et le git status de l’autre est perturbé. Avant, il fallait faire manuellement git worktree add + cd. Désormais, un clic dans le Web Shell suffit.

Cliquez sur « New Worktree Task » dans le menu déroulant du pill de branche du workspace : le daemon crée automatiquement un git worktree sous <repoRoot>/.qwen/worktrees/<slug> et le répertoire de travail de la session bascule vers le worktree. L’identifiant violet ⑂ distingue visuellement l’ensemble : le chip git devient violet, la liste des sessions affiche un marqueur ⑂, et le menu déroulant du workspace inclut une description. L’option n’apparaît pas pour les dépôts non-git.

Les informations du Worktree sont persistées dans un fichier sidecar — elles survivent au redémarrage du daemon. Lors de la reprise d’une session, l’isolation worktree est automatiquement reconstruite, et la barre d’état affiche le nom de branche du worktree plutôt que celui du workspace principal.

Ce que cela vous permet de faire :

  • Développer deux fonctionnalités en parallèle, sans interférence
  • Corriger un bug tout en continuant une feature, sans stash à répétition
  • Laisser l’Agent faire des modifications expérimentales en environnement isolé, le workspace principal reste propre

Voir les PR #7221 , #7262 , #7365 , #7367 

web_search intégré : recherchez sur le web avec votre clé Bailian

Jusqu’ici, Qwen Code n’avait pas de recherche intégrée — la documentation vous orientait vers le MCP WebSearch de Bailian. Mais en pratique, ce MCP est insuffisant sur les requêtes complexes : une recherche de taux Medicare avec une réponse standard retournait 0 résultat pertinent sur 5, même après plusieurs tentatives.

Cette semaine, l’outil intégré web_search fait son retour. Basé sur la recherche côté serveur de l’API Responses de Bailian, il utilise votre clé API Bailian déjà configurée — pas de service MCP supplémentaire, pas de provider additionnel, pas de clé supplémentaire. L’agent de recherche ouvre les pages de résultats pour obtenir des réponses mieux étayées, en distinguant les « pages réellement lues » des « liens candidats non ouverts ». Le modèle doit obligatoirement joindre une section Sources en fin de réponse.

Désactivé par défaut, deux configurations sont nécessaires pour l’activer : tools.webSearch.enabled: true et le modèle de recherche tools.webSearch.model. Si la configuration est présente mais incomplète, l’outil reste désactivé et le démarrage vous indique précisément quelle condition n’est pas remplie. La configuration par variables d’environnement est également supportée (ENABLE_WEB_SEARCH, WEB_SEARCH_MODEL, etc.), utile pour les environnements où settings.json n’est pas accessible. Chaque appel de recherche nécessite une confirmation (affichage de la requête, avec option « toujours autoriser »).

Ce que cela vous permet de faire :

  • Consulter des informations temporelles : derniers changements de version d’une bibliothèque, mises à jour de documentation API, avis de sécurité
  • Investiguer des problèmes postérieurs à la date de connaissance du modèle : breaking changes récents, bug reports récents
  • Remplacer le flux manuel « quitter le terminal → ouvrir un navigateur → rechercher »

Voir le PR #7215 

web_fetch reconstruit de zéro : fin du charabia PDF et des liens perdus

web_fetch souffrait de plusieurs problèmes concrets : les grandes pages de liste étaient tronquées en HTML brut avant conversion, la réponse était coupée, toutes les URL de liens étaient perdues, et le modèle vous affirmait avec assurance que « la cible n’existe pas ». Les PDF étaient décodés comme du texte, produisant des dizaines de milliers de tokens de charabia. Certains sites gouvernementaux retournaient une 403 aux User-Agents anonymes.

Cette semaine, le pipeline entier a été reconstruit :

  • Le HTML est converti en markdown avant troncature — le contenu en profondeur des grandes pages est préservé, toutes les URL d’hyperliens sont conservées. La troncature est explicitement signalée, les scripts et styles ne consomment pas le budget de contenu.
  • Extraction de texte PDF inline — un seul appel web_fetch suffit pour répondre sur le contenu d’un PDF. Les fichiers binaires sont identifiés par magic bytes (pas seulement le Content-Type) et sauvegardés avec la bonne extension.
  • Timeout de 60 s + limite de 10 Mo — Échap annule immédiatement le transfert (avant, l’UI pouvait se figer). Les récupérations répétées d’une même URL dans un délai de 15 minutes passent par le cache.
  • Les redirections cross-hôte ne sont plus suivies silencieusement — un message vous invite à relancer la requête, via le flux de permissions normal.
  • Modèle de permissions : le premier accès à chaque hôte nécessite une confirmation (un GET expose le chemin complet et la requête — c’est un canal d’exfiltration de données). Une fois approuvé, la règle est persistée par hôte. Les URL blob GitHub sont automatiquement normalisées en adresses raw avant évaluation des permissions.

Ce que cela vous permet de faire :

  • Récupérer un lien PDF et répondre directement sur son contenu
  • Récupérer une longue page de liste et interroger des éléments en profondeur — les liens ne sont plus perdus
  • Les redirections cross-hôte vous invitent à relancer, sans suivi silencieux vers un domaine inconnu

Voir le PR #7146 

Web Shell : grosse mise à jour cette semaine

Le Web Shell a reçu un volume de modifications important cette semaine — de l’intégration git à la gestion des sessions en passant par l’expérience workspace. Voici le récapitulatif.

Le trio d’intégration git. La commande /log ouvre un navigateur d’historique de commits : une popup graphique affiche la liste des commits, cliquez pour déplier le message complet et les statistiques de changements de fichiers, copiez le SHA en un clic, avec pagination. La popup /diff intègre également un onglet History, sans changer de commande. Le chip git status s’affiche dans la barre d’outils du composer, la barre latérale présente l’état git du workspace, et la popup Changes montre un diff visuel du working-tree. Voir les PR #7204 , #7054 

Page de gestion des Skills et page Goals. Le Web Shell dispose désormais d’une page dédiée à la gestion des skills du workspace, sans revenir au terminal. La page Goals visualise les objectifs de /goal dans le Web Shell — les objectifs survivent au redémarrage du daemon. Voir les PR #7018 , #6561 

Améliorations de la gestion des sessions. Cmd+B / Ctrl+B bascule la barre latérale, la disposition en split view persiste entre les rafraîchissements (indépendante par onglet), l’historique des sessions reprises se charge par pagination au lieu de tout charger d’un coup, et les sessions archivées supportent l’export. La popup Add Workspace intègre l’auto-complétion de répertoire. Voir les PR #7135 , #7136 , #7064 , #6910 , #7125 

Expérience workspace. Prise en charge des noms d’affichage personnalisés pour les workspaces — en multi-workspace, vous ne voyez plus uniquement des chemins. Actions personnalisées pour les commandes slash, API de personnalisation de la sidebar (branding, navigation, actions de session, footer). Un brouillon de nouveau sujet vous suggère d’ouvrir une nouvelle session plutôt que de continuer dans l’ancienne. Voir les PR #7179 , #7267 , #7379 , #7098 

📊 Autres nouvelles fonctionnalités

Valeurs par défaut et alerte d’écriture des Artifacts. L’Agent dispose d’une configuration par défaut lors de la création d’artifacts, avec une confirmation avant écriture — moins de fichiers écrits par erreur. Voir le PR #7068 

Chemin actif dans le résumé des outils. Le résumé compact des outils affiche le chemin du fichier en cours de manipulation — en multi-fichiers, vous voyez d’un coup d’œil quel fichier est modifié. Voir le PR #7043 

Valeurs par défaut et garde-fous de la délégation aux sous-agents. Amélioration de la configuration par défaut et des limites de sécurité de la délégation aux sous-agents, pour un comportement plus prévisible. Voir le PR #7048 

Routage des logs VSCode. Les logs sont dirigés vers un output channel dédié Qwen Code Companion — plus besoin de fouiller dans d’autres panneaux pour diagnostiquer un problème dans VSCode. Voir le PR #7121 

Rotation des logs du daemon. Rotation avec plafond — les logs ne croissent plus indéfiniment, le disque n’est plus saturé par les logs du daemon. Voir le PR #6969 

Replay d’historique en lecture seule dans le WebShell. Rejouez l’historique ChatRecord dans un WebShell en lecture seule, pratique pour partager un enregistrement de session avec un collègue. Voir le PR #6999 

Normalisation des noms d’outils MCP. Normalisation des noms d’outils MCP pour les providers stricts, réduisant les échecs d’appel d’outils MCP. Voir le PR #6976 

Rappel de mémoire dans les Channels. Chaque message rappelle automatiquement les mémoires pertinentes, confirme les changements de mémoire naturelle et sauvegarde en sécurité les mémoires multi-faits — l’Agent se souvient du contexte antérieur dans les conversations de Channel. Voir les PR #7157 , #7066 , #7092 

Observation du nom de groupe dans les Channels. Le nom du groupe est automatiquement extrait des messages entrants — en multi-groupes, l’Agent sait dans quel groupe il se trouve. Voir le PR #7155 

Chemins formatés dans les descriptions d’outils. Les descriptions des outils grep/glob affichent des chemins de fichiers formatés, pour des résultats plus clairs et lisibles. Voir le PR #7050 

Auto-complétion améliorée de /cd. Après avoir saisi un nom de répertoire, Tab inclut le répertoire déjà tapé — la complétion est plus précise. Voir le PR #7320 

👏 Améliorations de l’expérience

Sélection à la souris en mode VP de retour. Avant, les événements souris en mode VP étaient consommés par le CLI — impossible de sélectionner et copier. Désormais, la sélection par glissement, le double-clic pour sélectionner un mot et le triple-clic pour sélectionner une ligne fonctionnent, avec copie automatique dans le presse-papiers au relâchement. Voir le PR #6937 

Sécurisation renforcée du mode Plan. Quitter le mode Plan nécessite désormais votre approbation explicite — plus de sortie silencieuse. Les commandes Shell en mode Plan sont classées par niveau de sécurité : les commandes en lecture seule s’exécutent normalement, les commandes modifiant l’état sont bloquées, et les commandes au statut incertain nécessitent une approbation au cas par cas sans quitter le mode Plan. La confirmation de sortie affiche le contenu complet du plan. Voir les PR #6967 , #7172 , #7060 

Langue de sortie automatique. En mode auto, la langue de sortie suit la langue d’entrée de l’utilisateur — plus besoin de basculer manuellement. Voir le PR #6953 

Protection contre les Ctrl+C accidentels. Quitter le TUI nécessite deux Ctrl+C en moins d’une seconde — un seul ne quitte plus directement. Voir le PR #7129 

Contrôle de concurrence des sous-agents. Prise en charge d’un plafond de concurrence par modèle pour les sous-agents — chaque modèle peut avoir un nombre de concurrents différent. Le paramètre fork_turns pour les sous-agents fork permet de n’hériter que des derniers tours de conversation plutôt que de l’historique complet. Voir les PR #6984 , #7346 

Adaptation des modèles. Limite de tokens kimi-k3 (contexte 1M, sortie 128K), qwen3.8-max-preview ajouté à la liste des modèles Token Plan, support de la région Singapour pour le Token Plan. Voir les PR #7144 , #7199 , #7280 

Autres améliorations. Le plafond d’appels d’outils par tour est désormais adaptatif, le mode headless supporte les sous-agents avec héritage de contexte, les goals sont utilisables dans une loop active, un indicateur de mode s’affiche pendant le streaming, et les mises à jour npm s’exécutent en arrière-plan de manière sécurisée. Voir les PR #7052 , #7378 , #7202 , #7219 , #7322 

🔧 Corrections importantes

CorrectionPRImpact pour vous
Redessin automatique du TUI après veille/sortie de veille#7265 L’interface n’est plus corrompue après la sortie de veille
Les annulations pendant les demandes de permission ne sont plus perdues#7295 Les opérations annulées ne disparaissent plus
Le prompt annulé après streaming est restauré dans le champ de saisie#7149 Plus besoin de retaper un prompt annulé
Les blocs de code streaming restent intacts lors du découpage entre commits#7020 Les blocs de code ne sont plus tronqués
Le panneau de tâches sticky est masqué quand l’Agent est inactif#7062 Interface plus propre
L’échec de vérification de mise à jour devient un avertissement#7409 Le démarrage hors ligne ne provoque plus d’erreur bloquante
Estimation correcte des tokens de raisonnement quand completion_tokens_details est absent#7239 Statistiques d’utilisation de tokens plus précises
Les side queries qwen3.8 fonctionnent sur Bailian#7303 Les utilisateurs Bailian n’ont plus d’échec de side query
Le post-traitement de web_fetch a des limites#7305 Le contenu déjà récupéré est préservé en cas d’échec
Le contenu existant est préservé dans le prompt système#7087 Le prompt système ne perd plus de contenu existant
Retry automatique des tool-results vides#7039 Un résultat vide du modèle ne bloque plus la session
Assouplissement de la restriction additionalProperties du wire OpenAI#7344 Compatibilité avec davantage de modèles
Les subagents créés après le démarrage ne sont plus rejetés pour cache expiré#7112 La création de subagents n’échoue plus occasionnellement
Retry automatique des tags thinking dupliqués malformés#7100 Un format thinking anormal du modèle ne provoque plus de crash
Renforcement des limites d’entrée du mode Plan#7248 Le mode Plan n’est plus activé accidentellement
Résolution correcte des chemins d’artifact dans les sessions Worktree#7429 Les artifacts en Worktree ne sont plus écrits au mauvais endroit
Terminaison du sous-processus après timeout de découverte MCP#6926 Plus de fuite de processus
Filtrage opt-in du payload modèle pour MCP#7413 Réduction des transferts de payload inutiles
Renforcement du cycle de vie des demandes de permission Desktop MCP#7013 Les prompts pending ne restent plus en suspens ni ne fuient
Le processus ACP VSCode conserve le mode Electron Node#7106 L’extension VSCode n’échoue plus à cause de la version de Node
Résolution correcte des liens symboliques racine dans les chemins de mémoire#6842 Les chemins avec liens symboliques ne produisent plus d’erreurs
Le paramètre enableManagedAutoMemory est correctement appliqué#6941 Le toggle de mémoire automatique n’est plus inopérant
Déduplication des images et raccourcis sidebar restaurés dans le Web Shell#7169 Plus d’éléments en double
Les popups d’approbation et de questions du Web Shell supportent le clavier#7074 Les popups sont utilisables au clavier
Le texte de prompt restauré dans le Web Shell ne s’empile plus#7134 Plus de copies dupliquées
Les sessions Worktree en cours s’ouvrent normalement#7424 Les sessions Worktree ne restent plus inaccessibles
Le token daemon du Web Shell est persisté par onglet#7374 Plus besoin de se réauthentifier après un rafraîchissement
Les réponses des agents en arrière-plan Channel sont correctement livrées#7336 Les réponses en arrière-plan ne sont plus perdues
Le pairing et la liste d’autorisation Channel sont isolés par workspace#7065 Les workspaces multiples n’interfèrent plus entre eux
Retry automatique des échecs transitoires d’émotion DingTalk#7329 Les réactions emoji n’échouent plus occasionnellement
La regex de @mention DingTalk est ancrée au début du texte#7401 Les @mentions ne sont plus faussement détectées
Limite de téléchargement média DingTalk à 50 Mo#7361 Alignement avec Feishu, les gros fichiers n’échouent plus

👥 Contributeurs

ContributeurContributionsPR de référence
@wenshao Sessions isolées Worktree, navigateur d’historique de commits git, chip git status + diff, reprise de sessions Worktree, multiples améliorations du Web Shell#7221 , #7204 , #7054 , #7262 
@doudouOUC Approbation de sortie du mode Plan, routage de sécurité Shell en mode Plan, rotation des logs du daemon, vérification de branche de session, renforcement multi-workspace#6967 , #7172 , #6969 , #7185 
@yiliang114 Routage multimodal par tour complet, mise à jour npm en arrière-plan, estimation des tokens de raisonnement, support qwen3.8, corrections de routage modèle#7045 , #7322 , #7239 , #7303 
@zjunothing Sélection à la souris en mode VP, bascule de sidebar Cmd+B, auto-complétion de répertoire, affichage complet du Plan, multiples corrections du Web Shell#6937 , #7135 , #7125 , #7060 
@chinesepowered Nettoyage SSE du SDK, multiples corrections de typos, corrections i18n, limite média DingTalk#7257 , #7057 , #7131 , #7361 
@tanzhenxin web_search intégré, reconstruction complète de web_fetch, limite de tokens kimi-k3, correction ask-user-question#7215 , #7146 , #7144 , #7063 
@qwen-code-dev-bot Limite de concurrence des sous-agents, rappel de mémoire Channel, contrôle par goal, indicateur de mode, multiples corrections CI#6984 , #7157 , #7202 , #7219 
@ytahdn Page de gestion des Skills, commandes slash personnalisées, API de personnalisation de la sidebar, corrections du Web Shell#7018 , #7267 , #7379 , #7294 
@qqqys Confirmation de mémoire Channel, sauvegarde de mémoires multi-faits, livraison des réponses d’agents en arrière-plan, corrections DingTalk#7066 , #7092 , #7336 , #7401 
@chiga0 Valeurs par défaut et alerte d’écriture des Artifacts, optimisation des contrôles en mode VP, correction du patch ink#7068 , #6931 , #7407 
@LaZzyMan Redirection en temps réel, demande de confirmation quand le classifieur Auto Mode est indisponible, filtrage de payload MCP, correction mobile-mcp#7090 , #7331 , #7413 , #7321 
@DragonnZhang Garde-fous de délégation aux sous-agents, fork_turns, sous-agents headless, correction du prompt système#7048 , #7346 , #7378 , #7087 
@han-dreamer Langue de sortie automatique, région Singapour Token Plan, correction managedAutoMemory#6953 , #7280 , #6941 
@callmeYe Localisation des tags d’extension, correction des paramètres vocaux, préservation des descriptions de skill, correction des icônes de tags#7337 , #7345 , #7032 , #7024 
@samuelhsin Nom d’affichage du workspace, endpoint d’agrégation session-info#7179 , #7077 
@BenGuanRan Contacts workspace Channel, observation du nom de groupe#7109 , #7155 
@mvanhorn Renforcement des permissions Desktop MCP, correction de l’écoute de resize stdout, exposition de la cause des erreurs de connexion#7013 , #7186 , #7010 
@morluto Terminaison du sous-processus après timeout de découverte MCP, normalisation des chemins de permission#6926 , #6923 
@barry166 Restauration du prompt annulé, avertissement de démarrage deferred stream-json#7149 , #7174 
@xurik Marquage sourceId du daemon Channel, étiquette de source de session#7078 , #6991 
@ZijianZhang989 Correction de la documentation CLI, limitation markdown Feishu, corrections en lot#7326 , #7324 , #7373 
@pomelo-nwu Module cœur CODEOWNERS, simplification en règles au niveau package#7304 , #7376 
@jordimas Mise à jour de la traduction catalane#7253 
@cxruan Replay d’historique en lecture seule WebShell, marquage d’historique d’outils orphelins#6999 , #7340 
@carffuca Suggestion de brouillon de nouveau sujet, correction du rognage des labels de la barre d’outils#7098 , #7196 
@dreamWB Correction de la restauration des tags de contexte#7312 
@BZ-D Correction de l’interaction de référence des tâches planifiées#7313 
@ran411285752 Normalisation des noms d’outils MCP#6976 
@yuanyuanAli API de personnalisation de la Sidebar#7379 
🆕 @azurecgx 🎉 Première contribution : correction du nombre de lignes MaxSizedBox du TUI et du diff show-more#6957 
🆕 @makwingchi 🎉 Première contribution : propagation de l’ID de prompt du daemon aux événements de tour#7082 
🆕 @ARE404 🎉 Première contribution : persistance des métadonnées de modèle des sous-agents#7104 
🆕 @ghisguth 🎉 Première contribution : adaptation du schéma d’appel d’outils natif Gemma 4#7177 
🆕 @ComplexSimply 🎉 Première contribution : l’échec de vérification de mise à jour devient un avertissement, timeout porté à 5 secondes#7409 

Mise à jour : exécutez npm i @qwen-code/qwen-code@latest -g pour passer à la dernière version.

Si vous avez des questions ou des suggestions, n’hésitez pas à nous les faire part sur GitHub Issues  !

Last updated on