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
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_fetchsuffit 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
| Correction | PR | Impact 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
| Contributeur | Contributions | PR 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 !