Skip to Content
BlogQwen Code Semanal: Troca automática por sobrecarga de modelo, subagentes aninhados e integração com WeCom
Voltar ao Blog

Qwen Code Semanal: Troca automática por sobrecarga de modelo, subagentes aninhados e integração com WeCom

Qwen Team
2026-07-09

Esta semana o Qwen Code lançou 3 versões oficiais (v0.19.6 ~ v0.19.8), com 150+ PRs integrados, cobrindo quatro frentes:

Modelo sobrecarregado não trava mais. Antes, ao receber um 429/503/529, a conversa era interrompida e você precisava trocar de modelo manualmente. Agora a cadeia de fallback troca automaticamente para o modelo alternativo quando o orçamento de tentativas do modelo principal se esgota. Junto com /model --project, cada projeto pode ficar atrelado a um modelo diferente, sem precisar trocar na mão toda vez.

Subagentes agora podem gerar subagentes. Antes, o subagente era um “nó folha” — recebia a tarefa e tinha que resolver sozinho, sem poder delegar. Agora o limite padrão é de 5 níveis de aninhamento, e o subagente pode repassar subtarefas para a camada seguinte. Tanto o TUI quanto o Web Shell exibem a estrutura em árvore, deixando claro quem gerou quem.

O gerenciamento de sessões do Web Shell ficou completo. Arquivar, excluir, agrupar por nome, etiquetas de cor, página de gerenciamento de tarefas agendadas, tela dividida com visão geral das sessões — antes a barra lateral só permitia alternar entre sessões, agora é possível organizar, classificar, monitorar e operar em paralelo. 7 PRs transformaram as sessões de uma “lista simples” em um recurso gerenciável.

WeCom e controle de permissões completos. O canal de bot inteligente do WeCom foi integrado — bastam duas configurações (Bot ID + Secret) para funcionar, sem precisar de permissões de administrador da empresa nem webhook público. O “ask” do hook PreToolUse agora realmente exibe uma caixa de confirmação; antes, essa opção equivalia a uma recusa silenciosa. As regras de permissão também passaram a aceitar a sintaxe Tool(param:value), com controle por valor de parâmetro.

✨ Novidades

Troca automática por sobrecarga de modelo + configuração de modelo por projeto

Quando o modelo retorna 429/503/529, sua conversa trava. Esta versão introduziu uma cadeia de fallback opcional — quando o orçamento de tentativas do modelo principal se esgota, a resposta continua automaticamente com o próximo modelo da lista de fallback. Somente problemas de capacidade e throttling acionam o caminho de fallback. Erros de autenticação, cota, configuração ou do cliente falham imediatamente, pois não se trata de “modelo sobrecarregado”, mas de “sua configuração está com problema”.

O fallback avança antes de exibir conteúdo visível ao usuário. Se o modelo de fallback já tiver gerado parte do conteúdo e falhar, o restante do fallback não continua — o que você vê é uma resposta truncada. Mas o próximo turno do usuário recomeça pelo modelo principal, sem ficar preso no modelo de fallback.

Com /model --project, você pode vincular modelos diferentes a projetos diferentes. --project grava no .qwen/settings.json do projeto, --global grava no ~/.qwen/settings.json do usuário. Sem flag, o comportamento atual é mantido. As flags de escopo também funcionam com --fast, --voice e --vision.

O que você pode fazer com isso:

  • Configurar uma lista de modelos de fallback para troca automática em caso de sobrecarga, sem precisar trocar manualmente
  • Erros de autenticação/cota não são mascarados pelo fallback, os problemas aparecem mais cedo
  • /model --project permite que projetos diferentes usem modelos diferentes, a configuração acompanha o projeto
  • /model --global define o padrão global, novos projetos herdam

Veja os PRs #6273  e #6060 

Subagentes aninhados + visualização em árvore

Subagentes agora podem gerar novos subagentes. O limite padrão é de 5 níveis de profundidade, configurável via model.maxSubagentDepth. Definir como 1 restaura o comportamento anterior — subagentes não podem gerar subagentes.

Duas camadas de proteção: na fase de preparação do schema, o subagente mais profundo não vê a ferramenta de agente (ele simplesmente não sabe que essa ferramenta existe); no guardião de execução, solicitações de derivação que excedam o limite de profundidade são rejeitadas.

Tanto o TUI quanto o Web Shell exibem a estrutura aninhada em árvore. Subagentes aparecem abaixo do agente pai, com o marcador ↳ e recuo. Quando o agente pai sai, o subagente é promovido a nó raiz, com a anotação “from <parent>”. A visualização de detalhes mostra “Level N · from <parent type>”. Os indicadores de bloqueio e a confirmação de parada agora reconhecem a cadeia — a confirmação só aparece quando o cancelamento faz o turno terminar.

Essa funcionalidade vem habilitada por padrão — após a atualização, todos os ambientes existentes ganham a capacidade de derivação aninhada. Processos fork, teammates e workflow agents continuam excluídos. Sessões do Arena agora suportam aninhamento. Agentes em segundo plano restauram a profundidade original e o limite de inicialização ao serem retomados.

O que você pode fazer com isso:

  • Permitir que subagentes ao lidar com tarefas complexas derivem seus próprios subagentes para dividir o trabalho
  • Ver a árvore completa de agentes no TUI e no Web Shell
  • Ajustar o limite de profundidade de aninhamento via model.maxSubagentDepth

Veja os PRs #6189  e #6239 

Gerenciamento de sessões do Web Shell: arquivar, agrupar, tarefas agendadas e tela dividida

7 PRs transformaram a barra lateral de sessões do Web Shell de uma “lista simples” em um painel de gerenciamento onde é possível organizar, classificar, monitorar e operar em paralelo.

Arquivar e excluir. Cada linha de sessão ganhou atalhos e um menu ”…” com opções (renomear/arquivar/excluir). Sessões arquivadas ficam em uma seção “Archived” recolhível, podendo ser restauradas ou excluídas definitivamente. A sessão em uso não pode ser arquivada nem excluída; sessões arquivadas não podem ser abertas (409 session_archived); a exclusão é definitiva, com confirmação dupla. Por baixo, usa os endpoints do daemon archiveState e /sessions/archive, /sessions/unarchive.

Agrupamento por nome e etiquetas de cor. É possível criar, renomear e excluir grupos, arrastar sessões para dentro deles, atribuir etiquetas de cor e definir status de fixado/arquivado. Os dados de grupo atravessam desde a camada do daemon até a UI — o daemon armazena metadados de grupo em arquivos sidecar no nível do projeto, rotas REST/ACP oferecem operações CRUD, e a exposição depende do suporte do cliente sob feature gating.

Visão geral e tela dividida. Em telas grandes, a barra lateral exibe um painel com visão geral das sessões, com todas as sessões em cards em tempo real, ordenadas por prioridade: as que precisam de aprovação vêm primeiro, depois as em execução e por último as ociosas. Cada card mostra o modelo atual e a quantidade de clientes. Após seleção múltipla, é possível ver em tela dividida — dentro da aba atual ou em uma nova aba do navegador (parâmetro de URL ?split=a,b). N painéis de chat independentes lado a lado, cada um com seu próprio contexto de sessão, e o foco do teclado só atua no painel clicado.

O que você pode fazer com isso:

  • Arquivar e organizar sessões acumuladas ao longo do tempo, agrupando por projeto e com etiquetas de cor
  • Criar e gerenciar tarefas agendadas visualmente, sem precisar escrever expressões cron
  • Cada tarefa agendada tem sua própria sessão, com histórico de execução e transcrições acessíveis a qualquer momento
  • Em telas grandes, ver o status em tempo real de várias sessões em paralelo com tela dividida

Veja os PRs #6293 , #6350 , #6305 , #6348 , #6389 , #6453  e #6400 

Integração com canal WeCom

Integração com o bot inteligente do WeCom via @wecom/aibot-node-sdk. A configuração requer apenas Bot ID e Secret — não precisa de Corp ID, Agent ID, Token de callback, EncodingAESKey, nem endereço de callback público.

Recebe mensagens via conexão persistente WebSocket, com suporte a texto, transcrição de voz, conteúdo misto de texto e imagem, imagens, arquivos, vídeos e conteúdo citado. As respostas do Assistant são enviadas em formato markdown do WeCom. No envio, apenas marcadores de imagem local são suportados (dentro do diretório temporário do canal); marcadores de arquivo/vídeo/voz são ignorados.

Configuração:

{ "type": "wecom", "botId": "your-bot-id", "secret": "your-secret", "cwd": "/path/to/project" }

Comando para iniciar: qwen channel start my-wecom

O que você pode fazer com isso:

  • Integrar o WeCom com apenas Bot ID + Secret, sem precisar de permissões de administrador da empresa
  • Receber mensagens de texto, voz, imagem, arquivo, vídeo e citações
  • Usar o Qwen Code para responder em markdown em grupos do WeCom

Veja o PR #6436 

Caixa de confirmação nativa no hook PreToolUse

Antes, quando o hook PreToolUse retornava permissionDecision: "ask", equivalia a “deny” — a caixa de confirmação simplesmente não aparecia, e o desenvolvedor do hook achava que o usuário veria uma escolha, mas na verdade era recusado silenciosamente.

Agora “ask” exibe uma caixa de confirmação nativa no TUI. As opções são “Yes, allow once” e “No, suggest changes” — não há “always allow”, pois o hook é reavaliado a cada chamada. Após aprovação, a ferramenta é reexecutada; após recusa, é cancelada.

Em CLI não interativo e agentes em segundo plano, “ask” recai para deny — não fica pendurado esperando. Reutiliza o mecanismo existente de awaiting_approval, sem criar um caminho separado. Os comportamentos de “denied” e “stop” permanecem iguais, e o hook PermissionRequest não é afetado.

O que você pode fazer com isso:

  • Usar “ask” no hook PreToolUse para deixar o usuário decidir se a ferramenta deve ser executada
  • Sem risco de travar em cenários não interativos
  • Cada chamada do hook é reavaliada, sem liberação permanente

Veja o PR #5629 

Pré-visualização e revisão de Skills gerados automaticamente

Quando o agente gerava uma skill automaticamente, antes só era possível ver o nome do arquivo e o conteúdo só aparecia após a confirmação. Agora a caixa de revisão mostra uma pré-visualização inline do conteúdo completo — incluindo frontmatter.

O conteúdo gerado pelo modelo é sanitizado: sequências de controle ANSI/VT viram escapes inofensivos, CRLF vira quebra de linha normal. O limite de leitura é 64 KiB, o de exibição é 12 linhas (com cálculo de quebra automática), e o excedente é marcado como “lines hidden” / “truncated”.

Pressionar o abre o arquivo da skill no editor configurado, sem pular a revisão da skill atual. Após salvar o arquivo, a pré-visualização é atualizada automaticamente — junto com editores gráficos (comportamento padrão no macOS), é possível editar e depois conferir.

A opção “Turn off auto-generated skills” aparece no fim da lista, entra em vigor imediatamente ao ser selecionada (sem precisar reiniciar) e persiste no nível do workspace. O lote atual é colocado em espera (não é excluído), e ao reativar pelo /memory o lote volta.

O que você pode fazer com isso:

  • Ver o conteúdo completo da skill antes de confirmar, sem precisar aceitar e depois ir procurar o arquivo
  • Pressionar o para editar o conteúdo da skill diretamente no editor, com a pré-visualização atualizando ao salvar
  • Desativar a geração automática de skills com um clique, o lote atual não é excluído e pode ser recuperado pelo /memory a qualquer momento

Veja o PR #6393 

Antes (global qwen 0.19.6) — apenas nome + descriçãoDepois — revisão de skill individual com pré-visualização inline e opção de desativar
Antes — global qwen 0.19.6: apenas nome e descrição, sem pré-visualizaçãoDepois — revisão de skill individual com pré-visualização inline do SKILL.md e opção de desativar
Depois — último item do lote, opções em massa ocultasDepois — “Turn off auto-generated skills” selecionada
Depois — último item do lote: opções em massa ocultasDepois — desativar selecionado: lote fechado com dica de reativação

📊 Mais funcionalidades

FuncionalidadePRImpacto para você
Painel de status do Daemon: ver status de execução, métricas temporais e uso de Token pela barra lateral#6272 , #6307 , #6388 Sem precisar digitar comandos, saúde e tendências em uma tela
maxSubAgents: limitar a quantidade de subagentes em paralelo#6354 Controla o consumo de recursos, evita subagentes descontrolados
Permissão Tool(param:value): controle de ferramentas por valor de parâmetro#6106 Proibir com precisão a derivação de subagentes para model/skill específicos
Chamadas empilhadas de slash-skill: /skill1 /skill2 executados em sequência#6361 Múltiplas skills em sequência sem precisar fazer passo a passo
Configuração tools.visible: expor ferramentas diferidas seletivamente#6372 Ao iniciar, você vê apenas as ferramentas que precisa
Expiração de tarefas agendadas configurável: tempo de expiração para tarefas cron/loop#6173 Tarefas de longo prazo não expiram mais inesperadamente
Injeção de estado nos Hooks: hooks Stop/SubagentStop recebem informações de tarefas em segundo plano#6531 Hooks passam a reconhecer tarefas agendadas e estado de cron
Distintivo de modo de permissão: exibe a permissão atual no rodapé do modo DEFAULT#6498 Confirme o modo de segurança atual de relance
Blocos de dados echarts compactos: Web Shell suporta gráficos#6232 Visualização de dados diretamente no terminal
MCP mentions + menções @ iconificadas: Web Shell#6279 Menções @ mais intuitivas
Controles de tabela Markdown: reordenar colunas/zoom/congelar#6444 Experiência de navegação em tabelas grandes melhorada
Recarga a quente do LSP: servidores de linguagem suportam recarga a quente#5953 Mude configurações sem reiniciar o LSP
Intenção de memória de canal: memória de canal em linguagem natural#6376 Memória de contexto de canal mais natural
Controle de qualidade do /review: precisão de issues e atribuição de causa raiz#6395 Resultados de review mais confiáveis
Otimização de desempenho do glob: poda de diretórios ignorados durante a varredura#6123 Busca de arquivos mais rápida em projetos grandes
Descoberta de comandos slash: menu elevado, contagem por grupo, busca fuzzy#6267 Encontre comandos mais rápido
Auto-memory por worktree: memória independente para cada worktree#6462 Memórias de branches diferentes não se misturam
Agent working_dir: subagente fixado a um worktree#6456 Subagente trabalha no diretório especificado
Recarga a quente de extensões: plugins são recarregados automaticamente ao mudar#6347 Altere plugins sem reiniciar
dmPolicy: desabilitar mensagens privadas#6521 Bot de canal responde apenas em chats de grupo
Isolamento de ambiente do serve: isolamento de ambiente + controle total no modo serve#6416 Múltiplos projetos em serve sem interferência
Roteamento de sessões multi-workspace: serve suporta múltiplos workspaces#6511 Uma instância de serve atende vários projetos
Timeout por chamada de ferramenta: timeout individual por chamada#6136 Uma ferramenta travada não derruba a sessão inteira
Skill integrada dataviz: habilidade de visualização de dados#6198 Geração de gráficos pronta para uso

🔧 Correções importantes

CorreçãoPRImpacto para você
Correção de auth 401: 401 de autenticação não trava mais#6284 Token expirado não bloqueia mais a sessão
Detecção de OpenAI não-SSE: identifica corretamente respostas sem streaming#6466 Endpoints compatíveis com OpenAI não são mais interpretados errado
Bloqueio de rolagem em streaming: não rouba mais a posição de rolagem durante saída em streaming#6170 , #6421 Role livremente para ver o histórico durante saídas longas
Correção de pager no Windows: pager não trava mais no Windows#6390 Experiência estável para usuários de Windows
Correção de segurança do qqbot: reforço de segurança do canal#6200 Bot do canal QQ mais seguro
Janela de contexto padrão 200k: valor padrão corrigido#6387 Configuração da janela de contexto mais precisa
Correção de race condition em ACP settings: leitura e escrita concorrentes#6292 Configurações concorrentes não geram mais erros
Desbloqueio do /clear: /clear não trava mais#6499 Comando de limpar tela voltou ao normal

👥 Contribuidores

ContribuidorContribuiçõesPRs de referência
@wenshao Painel de status do Daemon, métricas temporais, análise de uso de Token, arquivar/excluir sessões, agrupamento de sessões + etiquetas de cor, página de gerenciamento de tarefas agendadas, sessões independentes para tarefas agendadas, unificação de sessões de tarefas, visão geral + tela dividida, descoberta de comandos slash, Agent working_dir, retry automático de porta do serve#6272 , #6307 , #6388 , #6293 , #6350 , #6348 , #6389 , #6453 , #6400 , #6267 , #6456 , #6513 
@ytahdn Recuperação de sessão, configuração de desabilitar skill, painel de @mention personalizado, callback de sessão, rolagem virtual, detalhes de ferramentas, tratamento de erro de interrupção de stream, atualização de to-do, resumo de chamadas de ferramenta, controle externo de tela dividida#6220 , #6223 , #6242 , #6333 , #6342 , #6352 , #6357 , #6362 , #6399 , #6422 , #6424 , #6425 , #6450 , #6523 
@yiliang114 Cadeia de fallback de modelos, maxSubAgents, correção de auth 401#6273 , #6354 , #6284 
@tanzhenxin Derivação aninhada de subagentes, visualização em árvore no Web Shell, pré-visualização e revisão de Skills gerados automaticamente, correção do valor padrão da janela de contexto#6189 , #6239 , #6393 , #6387 
@doudouOUC Backend de organização de sessões do Daemon, isolamento de ambiente do serve, roteamento de sessões multi-workspace#6305 , #6416 , #6511 
@qqqys Integração com canal WeCom, intenção de memória de canal, ferramenta de loop de canal, skill integrada dataviz#6436 , #6376 , #6287 , #6198 
@DennisYu07 Permissão Tool(param:value), chamadas empilhadas de slash-skill, distintivo de modo de permissão, injeção de estado nos Hooks#6106 , #6361 , #6498 , #6531 
@LaZzyMan Caixa de confirmação nativa no hook PreToolUse#5629 
@DragonnZhang Controle de qualidade do /review#6395 
@Alex-ai-future Configuração de modelo por projeto /model —project#6060 
@VectorPeak Correção de detecção de OpenAI não-SSE#6466 
@han-dreamer Correção de pager no Windows#6390 
@MikeWang0316tw Correção de bloqueio de rolagem em streaming#6170 , #6421 
@water-in-stone Recarga a quente do LSP#5953 
@ZijianZhang989 Recarga a quente de extensões#6347 
@BZ-D MCP mentions + menções @ iconificadas#6279 
@jifeng Controles de tabela Markdown (reordenar colunas/zoom/congelar)#6444 
@zhangxy-zju Blocos de dados echarts compactos#6232 
@Eric-GoodBoy-Tech Correção de segurança do qqbot#6200 
@TianYuan1024 Tempo de expiração de tarefas agendadas configurável#6173 
🆕 @callmeYe 🎉 Primeira contribuição: esquecimento/sonho de memória de sessão, timeline UI de tarefas agendadas, memória de gerenciamento do usuário#6227 , #6386 , #6432 
🆕 @kagura-agent 🎉 Primeira contribuição: retenção de prefixo tools no prompt-cache, limite de concorrência em primeiro plano, cache de varredura de skills#6225 , #6300 , #6155 
🆕 @Aleks-0 🎉 Primeira contribuição: configuração tools.visible, UTF-8 cmd.exe, KV-cache#6372 , #6216 , #6420 
🆕 @Nas01010101 🎉 Primeira contribuição: timeout de requisição, arquivos @-attached#6288 , #6295 , #6324 
🆕 @zjunothing 🎉 Primeira contribuição: auto-memory por worktree, desbloqueio do /clear, correção de tremor na status line#6462 , #6499 , #6533 
🆕 @minmax 🎉 Primeira contribuição: otimização de desempenho do glob, timeout por chamada de ferramenta#6123 , #6136 
🆕 @pomelo-nwu 🎉 Primeira contribuição: reforço de gating de PR, roteamento de sugestões de review#5723 , #5786 
🆕 @chiga0 🎉 Primeira contribuição: API de artifacts de sessão, documentação de side-channel do daemon#5895 , #4511 
🆕 @gauravyad86 🎉 Primeira contribuição: caminho rápido de bootstrap, isolamento de transform_data#6188 , #6285 
🆕 @mvanhorn 🎉 Primeira contribuição: caminho de configuração do seatbelt do macOS, valor padrão de timeout ocioso em streaming#6172 , #6107 
🆕 @AmariahAK 🎉 Primeira contribuição: seleção de modelo visual#6209 , #6236 
🆕 @barry166 🎉 Primeira contribuição: autenticação VSCode, audio prebuild#6274 , #6275 
🆕 @chenghuichen 🎉 Primeira contribuição: dmPolicy para desabilitar mensagens privadas#6521 
🆕 @beantownbytes 🎉 Primeira contribuição: desabilitar qwen thinking em ambientes não-DashScope#6271 
🆕 @heyparth1 🎉 Primeira contribuição: correção de cálculo da janela de contexto#6266 
🆕 @tomsen-ai 🎉 Primeira contribuição: chamada de ferramenta sem parâmetros#6250 

Como atualizar: execute npm i @qwen-code/qwen-code@latest -g para atualizar para a versão mais recente.

Se tiver dúvidas ou sugestões, fique à vontade para abrir uma issue no GitHub Issues !

Last updated on