Qwen Code Atualização Semanal: Agent Team Colaboração Paralela, Durable /loop Sobrevive ao Reinício, /cd Trocar Diretório
Qwen Code lançou quatro versões oficiais v0.18.0~v0.18.3 esta semana, com mais de 100 PRs merged, cobrindo quatro direções:
Colaboração multi-Agent paralela. Antes /fork rodava Agents de background, mas cada Agent operava isoladamente sem comunicação, e você tinha que montar os resultados manualmente. O modo Agent Team permite ao modelo criar equipes nomeadas, spawnar múltiplos companheiros para trabalhar em paralelo, trocar mensagens, compartilhar listas de tarefas, e finalmente o leader consolida um relatório único. Companheiros são persistentes — após completar uma tarefa podem esperar pela próxima, não são subagents one-shot que desaparecem após finalizar.
Tarefas agendadas sobrevivendo ao reinício. Antes tarefas /loop pereciam com a sessão — desaparecendo silenciosamente após reinício. Durable /loop persiste tarefas agendadas em arquivos, recuperando automaticamente no próximo lançamento, com tarefas periódicas perdidas executando um ciclo de compensação.
Troca de diretório na sessão, sem reinício. /cd <path> troca o diretório de trabalho da sessão atual sem sair do CLI, arquivos de sessão migram automaticamente para o novo workspace, contexto system/directory se atualiza automaticamente. Antes você tinha que reiniciar para trocar diretórios de projeto.
✨ Novas Funcionalidades
Agent Team: Múltiplos Agents Colaborando em Paralelo, Trocando Mensagens, Compartilhando Tarefas
Antes o /fork de Qwen Code podia rodar Agents de background, mas cada Agent era isolado — você安排 três Agents para revisar código em paralelo, eles não tinham canal de comunicação, e você tinha que juntar os três resultados manualmente.
Esta semana adicionou o modo Agent Team (experimental, opt-in). Após ativado, o modelo pode criar equipes nomeadas e spawnar múltiplos “companheiros” para trabalhar em paralelo. Companheiros e o leader podem trocar mensagens e compartilhar listas de tarefas, com o leader consolidando um relatório unificado. Companheiros são persistentes, não subagents one-shot — podem completar uma tarefa e esperar pela próxima, em vez de desaparecer após execução.
Desativado por padrão (ativar via setting experimental.agentTeam ou variável de ambiente QWEN_CODE_ENABLE_AGENT_TEAM=1). Após ativado, o modelo ganha ferramentas de colaboração de equipe (criar/deletar equipes, enviar mensagens a companheiros, criar/atualizar/listar tarefas compartilhadas), e a ferramenta Agent adiciona parâmetro name para spawnar companheiros nomeados persistentes em vez de subagents disposable.
O que você pode fazer:
- Ter três reviewers revisando código em paralelo (um para tratamento de erros, um para condições de corrida, um para edge cases), e receber um relatório consolidado
- Coordenar uma equipe para construir um pequeno app de favoritos
- Companheiros reportam automaticamente ao leader após conclusão, o leader dá um resumo unificado
Ver PR #4844
Durable /loop: Tarefas Agendadas Sobrevivendo ao Reinício
Antes todas as tarefas /loop pereciam com a sessão — agendar “verificar meu PR cada 30 minutos” desaparecia silenciosamente após reiniciar Qwen Code. Esta semana tarefas /loop podem sobreviver a reinícios.
Quando uma requisição implica persistência (“verificar meu PR cada hora”), a tarefa é salva por projeto em ~/.qwen/tmp/<hash-projeto>/scheduled_tasks.json (não no workspace, não aparece em git status), e recuperada automaticamente no próximo lançamento. Default permanece session-only, lembretes temporários não escrevem arquivos.
Lembretes one-shot que expiraram durante indisponibilidade: ao reiniciar o modelo confirma antes de executar, nunca roda silenciosamente. Tarefas periódicas perdidas executam um ciclo de compensação após startup e retornam ao ritmo normal. Quando múltiplas sessões existem para o mesmo projeto, apenas uma dispara tarefas persistentes; se o holder crashar, outra assume em segundos. Tarefas periódicas auto-expiram após 7 dias (deletadas após último trigger).
O que você pode fazer:
- “Verificar meu PR cada hora” → continua rodando após reinício, sem necessidade de reagendar
- Tarefas periódicas perdidas são automaticamente compensadas uma vez após reinício
- Lembretes temporários
/loop 5m remind meainda perecem com a sessão, não escrevem arquivos
Ver PR #5004
/cd: Trocar Diretório Sem Reiniciar CLI
Antes, se você queria o Agent trabalhando de outro diretório de projeto, tinha que sair e reiniciar. Trocar entre múltiplos repos ou workspaces parent/child era inconveniente, sem forma de mover o active tool context dentro de uma sessão.
Esta semana adicionou /cd <path> slash command. Ele valida o diretório target, gerencia confirmação de trust, atualiza workspace roots e cwd service, migra os arquivos transcript/runtime/worktree da sessão atual para o novo diretório de sessão workspace, e atualiza system/directory context. Path completion ainda funciona.
O que você pode fazer:
/cd ../another-projecttrocar para projeto adjacente, arquivos de sessão migram automaticamente/cd /path/to/parent-reponavegar dentro da sessão, sem reinício necessário- Paths não trusted disparam confirmação, consistente com o fluxo de trust no primeiro startup
Ver PR #4890

Thinking Recolhível: Processo de Raciocínio Não Domina a Tela
Antes blocos thinking do modelo sempre exibiam o texto de raciocínio completo, ocupando enorme espaço na tela. Esta semana mudou para exibição de três estados:
- Fase streaming: janela scrolling de 4 linhas fixas mostrando conteúdo de raciocínio em tempo real + timer (”∴ Thinking… 8s”)
- Recolhido após conclusão (default): uma linha mostrando duração total (”∴ Thought for 15s”)
- Expandir para ver: shortcut key dedicado para blocos thinking será atribuído posteriormente; atualmente Ctrl+O dispara compactMode toggle, compartilhando a mesma tecla com expandir thinking, shortcuts independentes expandir/recolher serão desacoplados em PR subsequente
Setting thinkingDisplayMode foi removido, substituído por modo recolhível único. Blocos thinking são UI history only, não enviados à API, comportamento session resume inalterado.
O que você pode fazer:
- Raciocínio complexo recolhe para uma linha, não clutter a view
- Ctrl+O para expandir e ver o processo de raciocínio completo do modelo a qualquer momento
- Fase streaming tem timer, mostrando quanto tempo o modelo pensou
Ver PR #4598

MCP Approval Gate: Config MCP de Nível Projeto Não Conecta Automaticamente
Antes MCP servers declarados em .mcp.json do projeto ou .qwen/settings.json do workspace conectavam automaticamente — abrir um repo contendo .mcp.json malicioso podia iniciar o server antes de você revisá-lo.
Esta semana adicionou approval gate. Project .mcp.json e workspace scope MCP servers devem ser aprovados antes de conectar. Decisões de aprovação são persistidas em <QWEN_HOME>/mcpApprovals.json, indexadas por project root + server name, e bound a config hash. Modificar command/args/URL/environment/headers de um server muda o hash, revertendo-o para pending — não herda silenciosamente aprovações antigas.
Modelo de prioridade MCP server: user/default settings < project .mcp.json < workspace/system settings < session (ACP/IDE) < --mcp-config. Config de projeto pode override config de user mas não config de system enterprise.
O que você pode fazer:
- Abrir novo repo, MCP servers de nível projeto mostram como “Pending approval”, sem auto-connect
qwen mcp approve <name>ouqwen mcp approve --allpara aprovação batch- Modificar config de server auto-requer nova aprovação (hash binding)
qwen mcp listpara ver status de aprovação de todos os servers
Ver PR #4713

Permission Bubbling de Background Agent: Tarefas de Background Não Auto-Negam Confirmações
Antes Background Agents requerendo confirmação de permissão para tool calls (como git push, rm) eram auto-negados com “background agents cannot prompt for confirmation”, então a sessão pai re-executava em foreground — essencialmente o run de background foi wasted, voltando para fila de foreground.
Esta semana adicionou approvalMode: bubble. Quando uma config subagent define approvalMode: bubble, Background Agents encountering tool calls needing confirmation bubble a requisição para o UI Background tasks da sessão pai. Você pode abrir detalhes do footer pill para aprovar. Após aprovação o Agent continua execução; após negação ele sai normalmente. bubble é um valor approvalMode subagent-only, não uma opção session-level. Em contextos headless/ACP/SDK ainda auto-nega (sem UI para responder).
O que você pode fazer:
- Subagent custom declara
approvalMode: bubble, tarefas de background não auto-negam - Footer pill mostra ”⚠ needs approval”, press ↓ para abrir detalhes e aprovar (autorização única apenas, sem opção “always allow”)
- Após aprovação Agent continua e retorna resultados, sem necessidade de re-executar em foreground
Ver PR #4955

/compress-fast: Sem LLM Call, Compressão de Contexto Instantânea
Antes /compress dependia de LLM side query para gerar resumo (~2-5 segundos, consumindo ~30K tokens). Muito lento para deployments de modelos locais ou usuários que só queriam recuperar espaço rapidamente.
Esta semana adicionou /compress-fast, puramente rule-driven: força microcompaction para limpar resultados de tools antigos e conteúdo de mídia (mantendo os N mais recentes), então strip todas partes thinking das respostas do modelo. Zero API calls, zero token overhead, resposta instantânea. Escreve checkpoint chat_compression em JSONL, comportamento --resume idêntico ao /compress.
O que você pode fazer:
/compress-fastimediatamente reclaim milhares de tokens, sem delay sem custo- Ideal para sessões longas após muitas tool calls quando você quer recuperar espaço rapidamente
/compressainda disponível — use quando precisa de qualidade de resumo semântico- Duas
/compress-fastconsecutivas, a segunda mostra “No compression needed”
Ver PR #4893

Mais Novas Funcionalidades
| Funcionalidade | PR | Impacto |
|---|---|---|
| Workflow P2: parallel() + pipeline() fan-out concorrente | #4947 | Workflows podem executar múltiplos subagents concorrentemente; contrato errors-as-data previne que falhas parciais crashem todo o batch (opt-in, QWEN_CODE_ENABLE_WORKFLOWS=1) |
| Workflow P3: schema + agentType + model + isolation | #5034 | agent({schema}) saída estruturada, agent({agentType:'Explore'}) tipo de subagent, agent({isolation:'worktree'}) isola modificações de arquivos |
| Declarative Agent frontmatter v1 | #4842 | .qwen/agents/*.md suporta permissionMode, maxTurns, color — três campos de alinhamento CC 2.1.168 |
| Declarative Agent mcpServers + hooks | #4996 | MCP servers per-agent e hooks ativam quando subagents executam, comportamento consistente com CC |
| Truncagem escalonada de output de Tool | #4880 | Shell 30k, grep 20k, agent 32k budgets per-tool; output oversized salvo em arquivos temporários |
| /rewind restauração cross-session | #4897 | /rewind funciona após resume de session — chain de snapshots antes era in-memory |
| Plan Approval Gate | #4853 | AUTO/YOLO exiting plan mode executa agent de design review; modelo novo enter_plan_mode |
| Surfaces A2UI over MCP | #4961 | Web client do Daemon pode renderizar interfaces A2UI interativas de MCP tools |
| Fusão do modo Daemon | #4490 | 386 arquivos, +115K LOC batch Daemon merged |
| /sessions list para histórico | #5187 | Novo CLI command, qwen sessions list lista todas as sessions históricas |
| /import-config migração Claude MCP | #5095 | Import one-click de configs MCP de Claude Code / Claude Desktop |
| Loop/Cron habilitados por padrão | #4950 | Tools /loop e cron disponíveis por padrão; desabilitar com QWEN_CODE_DISABLE_CRON=1 |
| Computer Use migração cua-driver | #5051 | Migrado de ocu npm backend para cua-driver-rs Rust binary |
| Web shell shortcut de quebra de linha | #5005 | Option+Enter / Cmd+Enter para quebra de linha no Web shell |
| Desktop exibição de git branch | #5082 | Badge de workspace do app Desktop exibe git branch atual |
| FileSearch AsyncFzf worker thread | #4621 | Construção de índice de busca de arquivos em worker thread |
| Daemon status API | #5174 | qwen serve novo endpoint de status de Daemon |
| Workflow P4: meta + /workflows + phase-tree | #5094 | Command /workflows e progress phase-tree |
| Convenção de prefixo auto-skill | #4839 | Skills auto-gerados forçam prefixo auto-skill- |
| Upgrade do parser YAML do Skill frontmatter | #4870 | Skill frontmatter usa parser YAML completo |
| Skill frontmatter user-invocable | #5037 | Skills podem declarar entry points de comandos invocáveis pelo usuário |
| CHANGELOG.md auto-sync | #4881 | Auto-geração e sync de CHANGELOG.md em releases |
🔧 Correções Importantes
| PR | Correção | Impacto |
|---|---|---|
| #4982 | OOM por acumulação de debugResponses eliminado | Debug mode não mais explode memória |
| #4914 | Compaction idempotente + GC explícito + defaults de debug log | Proteção OOM fortalecida, compaction mais estável |
| #4929 | Fallback clipboard OSC 52 em ambiente SSH | Paste em sessão SSH remota funciona finalmente |
| #4852 | Cursor preso em boundary de linha hard-wrapped | Movimento do cursor não mais preso em wrap boundaries |
| #4963 | Fork subagent habilitado por padrão | /fork background Agent não precisa mais de ativação manual |
| #5012 | Comando printf ausente no startup do Windows | Usuários Windows não mais encontram erro de startup |
| #4967 | SchemaValidator coercion de strings numéricos para tools MCP | Chamadas de tools MCP de LLMs self-hosted não mais falham em type mismatch |
| #5111 | Bound active tool result history | Tool result history não mais cresce sem limite |
| #5036 | Hard-stop repeated identical tool calls | Modelo não mais repete infinitamente o mesmo tool call |
| #4793 | Coerce non-string tool params para LLMs self-hosted | Compatibilidade de tipos de parâmetros de tools de modelos self-hosted |
| #4969 | Correção de settings keys desatualizados, defaults errados e comandos ausentes em docs | Docs mais precisos |
| #5073 | QWEN.md/AGENTS.md acima de 15% da context window triggers warning | Context instructions oversized não mais squeeze silently modelo context |
| #5165 | Batch processing de notificações Monitor + expired event filtering | Monitor stdout não mais triggers um full LLM roundtrip por linha, consumo de tokens significativamente reduzido |
| #5196 | /dev/tcp, /dev/udp redirection não mais misclassificado como file I/O | Sistema de permissões não mais misclassifica network socket operations como file read/write |
| #5171 | Auto-retry transport errors antes do first chunk | Streaming calls não falham diretamente em network jitter, retry uma vez |
| #5155 | Fork explícito: omitir subagent_type não mais se torna fire-and-forget acidentalmente | Resultados de chamadas de agents parciais flow back corretamente para parent turn |
🎉 Contribuidores
Agradecimentos aos contribuidores desta semana:
| Contribuidor | Contribuições |
|---|---|
| @qqqys | Agent Team #4844 , Permission bubbling background Agent #4955 , A2UI over MCP #4961 , Guarda auto-modificação modo Auto #4572 , Prompt Hooks #4377 , autofix workflow #4989 |
| @LaZzyMan | Workflow P2 #4947 , Workflow P3 #5034 , Workflow P4 #5094 , Declarative Agent frontmatter #4842 , Declarative Agent mcpServers+hooks #4996 , Tool output truncation #4880 , Computer Use cua-driver #5051 , Mac code-signing #5013 |
| @callmeYe | Plan Approval Gate #4853 , Skill frontmatter YAML parser #4870 , Skill .toml commands #5017 , prompt-cache prefix #4896 |
| @tanzhenxin | Durable /loop #5004 , Loop/Cron habilitados por padrão #4950 , Skill allowedTools #4704 , Agent Team messaging harden #4988 |
| @doudouOUC | Fusão do modo Daemon #4490 , /rewind cross-session #4897 , Persistência resultados de Tool oversized #5042 , Daemon status API #5174 , Monitor batch processing #5165 |
| @DragonnZhang | MCP approval gate #4713 , Desktop git branch #5082 , Desktop app #3778 , VSCode ACP notification #4358 , CLI shortcut de quebra de linha #5005 |
| @zzhenyao | Eliminação OOM #4982 , Fortalecimento OOM #4914 , Clipboard SSH #4929 , printf Windows #5012 |
| @he-yufeng | Comando /cd #4890 , Fork habilitado por padrão #4963 , Background Agent preserve launch flags #5061 , Warning de context oversized #5073 |
| @chiga0 | Thinking collapse #4598 , DaemonTransport abstraction #5040 , TUI spacing #4595 |
| @BenGuanRan | /stats dedup #4995 |
| @yiliang114 | Auto-update standalone install #4629 , PR review CI #4549 , Release asset verification #3855 , Telemetry memory/CPU #4868 , Transport error auto-retry #5171 |
| @wenshao | Web shell improvements #5069 , #5109 , #5125 , #5088 , #5096 |
| @ytahdn | Web shell token/settings #5066 , Transcript events #5193 , Custom footer #5166 |
| @ZijianZhang989 | /compress-fast #4893 , /sessions list #5187 , qwen3.7-plus model list #4953 |
| @tt-a1i | /import-config Claude MCP #5095 , Desktop git branch #5082 |
| @pomelo-nwu | qwen3.7-plus multimodal #4803 , SchemaValidator coerce #4967 |
| @Jerry2003826 | Bound hard rescue retries #4526 , Bound foreground shell output #4524 |
| @warmjademe | /dev/tcp/udp permission fix #5196 |
| @huww98 | /copy argument hint #5110 |
Como atualizar: Execute npm i @qwen-code/qwen-code@latest -g para a versão mais recente.
Para perguntas ou sugestões, compartilhe feedback em GitHub Issues !