Configuração do Qwen Code
Autenticação / Chaves de API: A autenticação (OAuth do Qwen, Plano de Codificação da Alibaba Cloud ou Chave de API) e as variáveis de ambiente relacionadas à autenticação (como OPENAI_API_KEY) estão documentadas em Autenticação.
Observação sobre o Novo Formato de Configuração: O formato do arquivo settings.json foi atualizado para uma nova estrutura, mais organizada. O formato antigo será migrado automaticamente.
O Qwen Code oferece várias maneiras de configurar seu comportamento, incluindo variáveis de ambiente, argumentos de linha de comando e arquivos de configuração. Este documento descreve os diferentes métodos de configuração e as opções disponíveis.
Camadas de configuração
A configuração é aplicada na seguinte ordem de precedência (níveis mais baixos são substituídos por níveis mais altos):
| Nível | Fonte da configuração | Descrição |
|---|---|---|
| 1 | Valores padrão | Padrões embutidos no código da aplicação |
| 2 | Arquivo de padrões do sistema | Configurações padrão globais do sistema, que podem ser substituídas por outros arquivos de configuração |
| 3 | Arquivo de configurações do usuário | Configurações globais para o usuário atual |
| 4 | Arquivo de configurações do projeto | Configurações específicas do projeto |
| 5 | Arquivo de configurações do sistema | Configurações globais do sistema que substituem todos os demais arquivos de configuração |
| 6 | Variáveis de ambiente | Variáveis globais do sistema ou específicas da sessão, possivelmente carregadas a partir de arquivos .env |
| 7 | Argumentos da linha de comando | Valores passados ao iniciar a CLI |
Arquivos de configurações
O Qwen Code usa arquivos de configuração no formato JSON para definições persistentes. Há quatro locais possíveis para esses arquivos:
| Tipo de arquivo | Localização | Escopo |
|---|---|---|
| Arquivo de configurações padrão do sistema | Linux: /etc/qwen-code/system-defaults.jsonWindows: C:\ProgramData\qwen-code\system-defaults.jsonmacOS: /Library/Application Support/QwenCode/system-defaults.json O caminho pode ser substituído usando a variável de ambiente QWEN_CODE_SYSTEM_DEFAULTS_PATH. | Fornece uma camada base de configurações padrão válidas para todo o sistema. Essas configurações têm a menor precedência e devem ser sobrescritas pelas configurações de usuário, de projeto ou de substituição do sistema. |
| Arquivo de configurações do usuário | ~/.qwen/settings.json (onde ~ é seu diretório pessoal). | Aplica-se a todas as sessões do Qwen Code para o usuário atual. |
| Arquivo de configurações do projeto | .qwen/settings.json no diretório raiz do seu projeto. | Aplica-se apenas ao executar o Qwen Code a partir desse projeto específico. As configurações de projeto sobrescrevem as configurações do usuário. |
| Arquivo de configurações do sistema | Linux: /etc/qwen-code/settings.json Windows: C:\ProgramData\qwen-code\settings.json macOS: /Library/Application Support/QwenCode/settings.jsonO caminho pode ser substituído usando a variável de ambiente QWEN_CODE_SYSTEM_SETTINGS_PATH. | Aplica-se a todas as sessões do Qwen Code no sistema, para todos os usuários. As configurações do sistema sobrescrevem as configurações do usuário e do projeto. Pode ser útil para administradores de sistemas em empresas que precisam controlar as configurações do Qwen Code dos usuários. |
Observação sobre variáveis de ambiente nas configurações: Valores de cadeia de caracteres nos seus arquivos settings.json podem fazer referência a variáveis de ambiente usando a sintaxe $VAR_NAME ou ${VAR_NAME}. Essas variáveis serão resolvidas automaticamente ao carregar as configurações. Por exemplo, se você tiver uma variável de ambiente chamada MY_API_TOKEN, poderá usá-la no settings.json da seguinte forma: "apiKey": "$MY_API_TOKEN".
O diretório .qwen no seu projeto
Além de um arquivo de configurações do projeto, o diretório .qwen de um projeto pode conter outros arquivos específicos do projeto relacionados ao funcionamento do Qwen Code, como:
- Perfis personalizados de sandbox (por exemplo,
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile). - Habilidades de Agente sob
.qwen/skills/(cada Habilidade é um diretório contendo um arquivoSKILL.md).
Migração de configuração
O Qwen Code migra automaticamente as configurações legadas para o novo formato. Os arquivos antigos de configuração são copiados como backup antes da migração. As seguintes configurações foram renomeadas, passando de uma nomenclatura negativa (disable*) para uma positiva (enable*):
| Configuração Antiga | Nova Configuração | Observações |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | Consolidadas em uma única configuração |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
Inversão de valores booleanos: Durante a migração, os valores booleanos são invertidos (por exemplo, disableAutoUpdate: true torna-se enableAutoUpdate: false).
Política de consolidação para disableAutoUpdate e disableUpdateNag
Quando ambas as configurações legadas estiverem presentes com valores diferentes, a migração seguirá esta política: se qualquer uma das configurações disableAutoUpdate ou disableUpdateNag for true, então enableAutoUpdate passará a ser false:
disableAutoUpdate | disableUpdateNag | enableAutoUpdate migrado |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
Configurações disponíveis em settings.json
As configurações são organizadas em categorias. Todas as configurações devem ser colocadas dentro do objeto de categoria de nível superior correspondente no seu arquivo settings.json.
geral
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
general.preferredEditor | string | O editor preferido para abrir arquivos. | undefined |
general.vimMode | boolean | Habilita as teclas de atalho do Vim. | false |
general.enableAutoUpdate | boolean | Habilita verificações e instalações automáticas de atualizações na inicialização. | true |
general.gitCoAuthor | boolean | Adiciona automaticamente um rodapé Co-authored-by às mensagens de commit do Git quando os commits são feitos pelo Qwen Code. | true |
general.checkpointing.enabled | boolean | Habilita o ponto de verificação da sessão para recuperação. | false |
general.defaultFileEncoding | string | Codificação padrão para novos arquivos. Use "utf-8" (padrão) para UTF-8 sem BOM ou "utf-8-bom" para UTF-8 com BOM. Altere isso apenas se seu projeto exigir especificamente o BOM. | "utf-8" |
saída
| Configuração | Tipo | Descrição | Padrão | Valores Possíveis |
|---|---|---|---|---|
output.format | string | O formato da saída da CLI. | "text" | "text", "json" |
ui
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
ui.theme | string | O tema de cores da interface do usuário. Consulte Temas para ver as opções disponíveis. | undefined |
ui.customThemes | objeto | Definições de temas personalizados. | {} |
ui.hideWindowTitle | boolean | Oculta a barra de título da janela. | false |
ui.hideTips | boolean | Oculta dicas úteis na interface do usuário. | false |
ui.hideBanner | boolean | Oculta o banner do aplicativo. | false |
ui.hideFooter | boolean | Oculta o rodapé da interface do usuário. | false |
ui.showMemoryUsage | boolean | Exibe informações sobre o uso de memória na interface do usuário. | false |
ui.showLineNumbers | boolean | Exibe números de linha em blocos de código na saída da CLI. | true |
ui.showCitations | boolean | Exibe citações para o texto gerado nas conversas. | true |
enableWelcomeBack | boolean | Exibe um diálogo de boas-vindas ao retornar a um projeto com histórico de conversa. Quando ativado, o Qwen Code detecta automaticamente se você está retornando a um projeto com um resumo de projeto previamente gerado (.qwen/PROJECT_SUMMARY.md) e exibe um diálogo que permite continuar sua conversa anterior ou começar do zero. Esse recurso integra-se ao comando /summary e ao diálogo de confirmação ao sair. | true |
ui.accessibility.enableLoadingPhrases | boolean | Ativa frases de carregamento (desative para acessibilidade). | true |
ui.accessibility.screenReader | boolean | Ativa o modo leitor de tela, que ajusta a interface baseada em terminal (TUI) para melhor compatibilidade com leitores de tela. | false |
ui.customWittyPhrases | matriz de strings | Uma lista de frases personalizadas a serem exibidas durante estados de carregamento. Quando fornecida, a CLI percorre essas frases em vez das padrão. | [] |
ide
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
ide.enabled | boolean | Habilita o modo de integração com IDE. | false |
ide.hasSeenNudge | boolean | Indica se o usuário já viu a notificação de integração com IDE. | false |
privacidade
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Habilita a coleta de estatísticas de uso. | true |
modelo
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
model.name | string | O modelo Qwen a ser usado para conversas. | undefined |
model.maxSessionTurns | number | Número máximo de interações (usuário/modelo/ferramenta) a manter em uma sessão. -1 significa ilimitado. | -1 |
model.generationConfig | object | Sobrescritas avançadas repassadas ao gerador de conteúdo subjacente. Suporta controles de requisição como timeout, maxRetries, enableCacheControl, contextWindowSize (sobrescreve o tamanho da janela de contexto do modelo), modalities (sobrescreve as modalidades de entrada detectadas automaticamente), customHeaders (cabeçalhos HTTP personalizados para requisições de API) e extra_body (parâmetros adicionais no corpo da requisição, apenas para APIs compatíveis com OpenAI), além de ajustes finos sob samplingParams (por exemplo, temperature, top_p, max_tokens). Deixe não definido para usar os padrões do provedor. | undefined |
model.chatCompression.contextPercentageThreshold | number | Define o limiar para compressão do histórico de conversa como uma porcentagem do limite total de tokens do modelo. Trata-se de um valor entre 0 e 1 aplicado tanto à compressão automática quanto ao comando manual /compress. Por exemplo, um valor de 0.6 acionará a compressão quando o histórico de conversa exceder 60% do limite de tokens. Use 0 para desabilitar completamente a compressão. | 0.7 |
model.skipNextSpeakerCheck | boolean | Ignora a próxima verificação de falante. | false |
model.skipLoopDetection | boolean | Desativa as verificações de detecção de loops. A detecção de loops evita loops infinitos nas respostas da IA, mas pode gerar falsos positivos que interrompem fluxos de trabalho legítimos. Habilite esta opção se você experimentar interrupções frequentes por detecção incorreta de loops. | false |
model.skipStartupContext | boolean | Ignora o envio do contexto inicial do workspace (resumo do ambiente e confirmação) no início de cada sessão. Habilite esta opção se preferir fornecer o contexto manualmente ou desejar economizar tokens na inicialização. | false |
model.enableOpenAILogging | boolean | Habilita o registro das chamadas à API OpenAI para depuração e análise. Quando ativado, as requisições e respostas da API são registradas em arquivos JSON. | false |
model.openAILoggingDir | string | Caminho personalizado para o diretório de logs da API OpenAI. Se não for especificado, o padrão é logs/openai no diretório de trabalho atual. Suporta caminhos absolutos, caminhos relativos (resolvidos a partir do diretório de trabalho atual) e expansão de ~ (diretório home). | undefined |
Exemplo de model.generationConfig:
{
"model": {
"generationConfig": {
"timeout": 60000,
"contextWindowSize": 128000,
"modalities": {
"image": true
},
"enableCacheControl": true,
"customHeaders": {
"X-Client-Request-ID": "req-123"
},
"extra_body": {
"enable_thinking": true
},
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}contextWindowSize:
Sobrescreve o tamanho padrão da janela de contexto para o modelo selecionado. O Qwen Code determina a janela de contexto usando valores padrão embutidos com base na correspondência do nome do modelo, com um valor constante como fallback. Use esta configuração quando o limite efetivo de contexto do provedor diferir do padrão do Qwen Code. Esse valor define a capacidade máxima assumida de contexto do modelo, não um limite de tokens por requisição.
modalities:
Sobrescreve as modalidades de entrada detectadas automaticamente para o modelo selecionado. O Qwen Code detecta automaticamente as modalidades suportadas (imagem, PDF, áudio, vídeo) com base na correspondência de padrões no nome do modelo. Use esta configuração quando a detecção automática estiver incorreta — por exemplo, para habilitar pdf em um modelo que o suporta, mas não é reconhecido. Formato: { "image": true, "pdf": true, "audio": true, "video": true }. Omita uma chave ou defina-a como false para tipos não suportados.
customHeaders:
Permite adicionar cabeçalhos HTTP personalizados a todas as requisições de API. Isso é útil para rastreamento de requisições, monitoramento, roteamento via gateway de API ou quando modelos diferentes exigem cabeçalhos distintos. Se customHeaders for definido em modelProviders[].generationConfig.customHeaders, ele será usado diretamente; caso contrário, os cabeçalhos de model.generationConfig.customHeaders serão utilizados. Não ocorre mesclagem entre esses dois níveis.
O campo extra_body permite adicionar parâmetros personalizados ao corpo da requisição enviada à API. Isso é útil para opções específicas do provedor que não são cobertas pelos campos de configuração padrão. Observação: Este campo é suportado apenas por provedores compatíveis com OpenAI (openai, qwen-oauth). Ele é ignorado por provedores Anthropic e Gemini. Se extra_body for definido em modelProviders[].generationConfig.extra_body, ele será usado diretamente; caso contrário, os valores de model.generationConfig.extra_body serão utilizados.
Exemplos de model.openAILoggingDir:
"~/qwen-logs"— Registra em~/qwen-logs"./custom-logs"— Registra em./custom-logs, relativo ao diretório atual"/tmp/openai-logs"— Registra no caminho absoluto/tmp/openai-logs
contexto
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
context.fileName | string ou array de strings | O nome do(s) arquivo(s) de contexto. | undefined |
context.importFormat | string | O formato a ser usado ao importar memória. | undefined |
context.includeDirectories | array | Diretórios adicionais a serem incluídos no contexto do workspace. Especifica um array de caminhos absolutos ou relativos adicionais a serem incluídos no contexto do workspace. Diretórios ausentes serão ignorados com um aviso por padrão. Os caminhos podem usar ~ para se referir ao diretório home do usuário. Essa configuração pode ser combinada com a flag da linha de comando --include-directories. | [] |
context.loadFromIncludeDirectories | boolean | Controla o comportamento do comando /memory refresh. Se definido como true, os arquivos QWEN.md devem ser carregados de todos os diretórios adicionados. Se definido como false, os arquivos QWEN.md devem ser carregados apenas do diretório atual. | false |
context.fileFiltering.respectGitIgnore | boolean | Respeitar arquivos .gitignore durante a busca. | true |
context.fileFiltering.respectQwenIgnore | boolean | Respeitar arquivos .qwenignore durante a busca. | true |
context.fileFiltering.enableRecursiveFileSearch | boolean | Se deve habilitar a busca recursiva de nomes de arquivos na árvore atual ao completar prefixos @ no prompt. | true |
context.fileFiltering.enableFuzzySearch | boolean | Quando true, habilita recursos de busca difusa ao procurar por arquivos. Defina como false para melhorar o desempenho em projetos com um grande número de arquivos. | true |
Solução de Problemas de Desempenho na Pesquisa de Arquivos
Se você estiver enfrentando problemas de desempenho ao pesquisar arquivos (por exemplo, com as conclusões @), especialmente em projetos com um número muito grande de arquivos, experimente as seguintes soluções, listadas na ordem recomendada:
- Use
.qwenignore: Crie um arquivo.qwenignorena raiz do seu projeto para excluir diretórios que contenham um grande número de arquivos desnecessários para referência (por exemplo, artefatos de build, logs,node_modules). Reduzir o número total de arquivos analisados é a maneira mais eficaz de melhorar o desempenho. - Desative a Pesquisa Difusa (Fuzzy Search): Se ignorar arquivos não for suficiente, você pode desativar a pesquisa difusa definindo
enableFuzzySearchcomofalseno seu arquivosettings.json. Isso usará um algoritmo de correspondência mais simples e não difuso, o que pode ser mais rápido. - Desative a Pesquisa Recursiva de Arquivos: Como último recurso, você pode desativar totalmente a pesquisa recursiva de arquivos definindo
enableRecursiveFileSearchcomofalse. Essa será a opção mais rápida, pois evita a análise recursiva do seu projeto. No entanto, isso significa que você precisará digitar o caminho completo dos arquivos ao usar as conclusões@.
ferramentas
| Configuração | Tipo | Descrição | Padrão | Observações |
|---|---|---|---|---|
tools.sandbox | booleano ou string | Ambiente de execução em sandbox (pode ser um valor booleano ou um caminho em formato de string). | undefined | |
tools.shell.enableInteractiveShell | booleano | Usa node-pty para uma experiência de shell interativo. A alternativa com child_process ainda é aplicada como fallback. | false | |
tools.core | matriz de strings | Pode ser usada para restringir o conjunto de ferramentas embutidas por meio de uma lista de permissões (allowlist). Também é possível especificar restrições específicas por comando para ferramentas que o suportam, como a ferramenta run_shell_command. Por exemplo, "tools.core": ["run_shell_command(ls -l)"] permitirá apenas a execução do comando ls -l. | undefined | |
tools.exclude | matriz de strings | Nomes de ferramentas a serem excluídos da descoberta. Também é possível especificar restrições específicas por comando para ferramentas que o suportam, como a ferramenta run_shell_command. Por exemplo, "tools.exclude": ["run_shell_command(rm -rf)"] bloqueará o comando rm -rf. Aviso de segurança: As restrições específicas por comando em tools.exclude para run_shell_command baseiam-se em correspondência simples de strings e podem ser facilmente contornadas. Esse recurso não é um mecanismo de segurança e não deve ser usado como única proteção para executar código não confiável. Recomenda-se usar tools.core para selecionar explicitamente os comandos que podem ser executados. | undefined | |
tools.allowed | matriz de strings | Lista de nomes de ferramentas que ignorarão a caixa de diálogo de confirmação. Isso é útil para ferramentas nas quais você confia e que usa com frequência. Por exemplo, ["run_shell_command(git)", "run_shell_command(npm test)"] pulará a caixa de diálogo de confirmação ao executar quaisquer comandos git e npm test. | undefined | |
tools.approvalMode | string | Define o modo padrão de aprovação para uso de ferramentas. | default | Valores possíveis: plan (apenas análise, sem modificação de arquivos ou execução de comandos), default (requer aprovação antes de editar arquivos ou executar comandos no shell), auto-edit (aprova automaticamente edições de arquivos), yolo (aprova automaticamente todas as chamadas de ferramentas) |
tools.discoveryCommand | string | Comando a ser executado para descobrir ferramentas. | undefined | |
tools.callCommand | string | Define um comando personalizado no shell para chamar uma ferramenta específica descoberta usando tools.discoveryCommand. O comando no shell deve atender aos seguintes critérios: Deve receber o nome da função (exatamente como na declaração da função ) como primeiro argumento da linha de comando. Deve ler os argumentos da função como JSON na entrada padrão (stdin), de forma análoga a functionCall.args. Deve retornar a saída da função como JSON na saída padrão (stdout), de forma análoga a functionResponse.response.content. | undefined | |
tools.useRipgrep | booleano | Usa o ripgrep para pesquisa de conteúdo de arquivos, em vez da implementação alternativa (fallback). Oferece desempenho de busca mais rápido. | true | |
tools.useBuiltinRipgrep | booleano | Usa o binário embutido do ripgrep. Quando definido como false, será usado o comando rg do sistema em vez disso. Essa configuração só tem efeito quando tools.useRipgrep for true. | true | |
tools.truncateToolOutputThreshold | número | Trunca a saída da ferramenta se ela exceder esse número de caracteres. Aplica-se às ferramentas Shell, Grep, Glob, ReadFile e ReadManyFiles. | 25000 | Requer reinicialização: Sim |
tools.truncateToolOutputLines | número | Número máximo de linhas ou entradas mantidas ao truncar a saída da ferramenta. Aplica-se às ferramentas Shell, Grep, Glob, ReadFile e ReadManyFiles. | 1000 | Requer reinicialização: Sim |
mcp
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
mcp.serverCommand | string | Comando para iniciar um servidor MCP. | undefined |
mcp.allowed | matriz de strings | Lista de permissões de servidores MCP permitidos. Permite especificar uma lista de nomes de servidores MCP que devem estar disponíveis para o modelo. Isso pode ser usado para restringir o conjunto de servidores MCP aos quais é possível se conectar. Observe que essa configuração será ignorada se a flag --allowed-mcp-server-names for definida. | undefined |
mcp.excluded | matriz de strings | Lista de negações de servidores MCP a serem excluídos. Um servidor listado tanto em mcp.excluded quanto em mcp.allowed será excluído. Observe que essa configuração será ignorada se a flag --allowed-mcp-server-names for definida. | undefined |
Observação de segurança para servidores MCP: Essas configurações usam correspondência simples por nome de servidor MCP, que pode ser modificada. Se você for um administrador de sistema e desejar impedir que os usuários contornem essa restrição, considere configurar mcpServers no nível das configurações do sistema, de modo que o usuário não consiga configurar nenhum servidor MCP próprio. Essa abordagem não deve ser utilizada como um mecanismo de segurança infalível.
lsp
[!warning] Funcionalidade Experimental: O suporte a LSP está atualmente em fase experimental e desabilitado por padrão. Habilite-o usando a flag de linha de comando
--experimental-lsp.
O Language Server Protocol (LSP) fornece recursos de inteligência de código, como ir para definição, encontrar referências e diagnósticos.
A configuração do servidor LSP é feita por meio de arquivos .lsp.json no diretório raiz do seu projeto, e não através do arquivo settings.json. Consulte a documentação do LSP para obter detalhes de configuração e exemplos.
segurança
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
security.folderTrust.enabled | boolean | Configuração para acompanhar se a confiança de pasta está habilitada. | false |
security.auth.selectedType | string | O tipo de autenticação atualmente selecionado. | undefined |
security.auth.enforcedType | string | O tipo de autenticação exigido (útil para empresas). | undefined |
security.auth.useExternal | boolean | Se deve ser usado um fluxo de autenticação externo. | undefined |
avançado
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Configura automaticamente os limites de memória do Node.js. | false |
advanced.dnsResolutionOrder | string | A ordem de resolução DNS. | undefined |
advanced.excludedEnvVars | array de strings | Variáveis de ambiente a serem excluídas do contexto do projeto. Especifica quais variáveis de ambiente devem ser ignoradas ao carregar arquivos .env do projeto. Isso evita que variáveis específicas do projeto (como DEBUG=true) interfiram no comportamento da CLI. Variáveis provenientes de arquivos .qwen/.env nunca são excluídas. | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | objeto | Configuração para o comando de relatório de bugs. Substitui a URL padrão do comando /bug. Propriedades: urlTemplate (string): Uma URL que pode conter os espaços reservados {title} e {info}. Exemplo: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
advanced.tavilyApiKey | string | Chave de API para o serviço de busca web Tavily. Usada para habilitar a funcionalidade da ferramenta web_search. | undefined |
Observação sobre advanced.tavilyApiKey: Este é um formato de configuração legado. Para usuários do Qwen com autenticação OAuth, o provedor DashScope está automaticamente disponível sem necessidade de configuração. Para outros tipos de autenticação, configure os provedores Tavily ou Google usando o novo formato de configuração webSearch.
mcpServers
Configura conexões com um ou mais servidores do Model-Context Protocol (MCP) para descobrir e usar ferramentas personalizadas. O Qwen Code tenta se conectar a cada servidor MCP configurado para descobrir as ferramentas disponíveis. Se vários servidores MCP expuserem uma ferramenta com o mesmo nome, os nomes das ferramentas serão prefixados com o apelido do servidor definido na configuração (por exemplo, apelidoDoServidor__nomeRealDaFerramenta) para evitar conflitos. Observe que o sistema pode remover certas propriedades de esquema das definições de ferramentas MCP por questões de compatibilidade. Pelo menos uma das propriedades command, url ou httpUrl deve ser fornecida. Se várias forem especificadas, a ordem de precedência é httpUrl, seguida de url, seguida de command.
| Propriedade | Tipo | Descrição | Opcional |
|---|---|---|---|
mcpServers.<NOME_DO_SERVIDOR>.command | string | O comando a ser executado para iniciar o servidor MCP via entrada/saída padrão. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.args | array de strings | Argumentos a serem passados ao comando. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.env | objeto | Variáveis de ambiente a serem definidas para o processo do servidor. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.cwd | string | O diretório de trabalho no qual o servidor será iniciado. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.url | string | A URL de um servidor MCP que usa Server-Sent Events (SSE) para comunicação. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.httpUrl | string | A URL de um servidor MCP que usa HTTP com suporte a streaming para comunicação. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.headers | objeto | Um mapa de cabeçalhos HTTP a serem enviados nas requisições para url ou httpUrl. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.timeout | número | Tempo limite em milissegundos para requisições a este servidor MCP. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.trust | booleano | Confiar neste servidor e ignorar todas as confirmações de chamadas de ferramentas. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.description | string | Uma breve descrição do servidor, que pode ser usada para fins de exibição. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.includeTools | array de strings | Lista de nomes de ferramentas a serem incluídas deste servidor MCP. Quando especificada, apenas as ferramentas listadas aqui estarão disponíveis a partir deste servidor (comportamento de lista de permissões). Se não for especificada, todas as ferramentas do servidor são habilitadas por padrão. | Sim |
mcpServers.<NOME_DO_SERVIDOR>.excludeTools | array de strings | Lista de nomes de ferramentas a serem excluídas deste servidor MCP. As ferramentas listadas aqui não estarão disponíveis para o modelo, mesmo que sejam expostas pelo servidor. Observação: excludeTools tem precedência sobre includeTools — se uma ferramenta estiver em ambas as listas, ela será excluída. | Sim |
telemetria
Configura o registro de logs e a coleta de métricas para o Qwen Code. Para obter mais informações, consulte telemetria.
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
telemetry.enabled | boolean | Indica se a telemetria está habilitada ou não. | |
telemetry.target | string | O destino para os dados de telemetria coletados. Os valores suportados são local e gcp. | |
telemetry.otlpEndpoint | string | O endpoint do Exportador OTLP. | |
telemetry.otlpProtocol | string | O protocolo do Exportador OTLP (grpc ou http). | |
telemetry.logPrompts | boolean | Indica se o conteúdo dos prompts do usuário deve ser incluído nos logs ou não. | |
telemetry.outfile | string | O arquivo no qual gravar os dados de telemetria quando target for definido como local. | |
telemetry.useCollector | boolean | Indica se um coletor OTLP externo deve ser utilizado. |
Exemplo de settings.json
Abaixo está um exemplo de arquivo settings.json com a estrutura aninhada, nova a partir da versão 0.3.0:
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideTips": false,
"customWittyPhrases": [
"Você esquece mil coisas todos os dias. Certifique-se de que esta é uma delas",
"Conectando-se à AGI"
]
},
"tools": {
"approvalMode": "yolo",
"sandbox": "docker",
"discoveryCommand": "bin/get_tools",
"callCommand": "bin/call_tool",
"exclude": ["write_file"]
},
"mcpServers": {
"mainServer": {
"command": "bin/mcp_server.py"
},
"anotherServer": {
"command": "node",
"args": ["mcp_server.js", "--verbose"]
}
},
"telemetry": {
"enabled": true,
"target": "local",
"otlpEndpoint": "http://localhost:4317",
"logPrompts": true
},
"privacy": {
"usageStatisticsEnabled": true
},
"model": {
"name": "qwen3-coder-plus",
"maxSessionTurns": 10,
"enableOpenAILogging": false,
"openAILoggingDir": "~/qwen-logs",
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}Histórico do Shell
A CLI mantém um histórico dos comandos de shell que você executa. Para evitar conflitos entre diferentes projetos, esse histórico é armazenado em um diretório específico do projeto dentro da pasta inicial do seu usuário.
- Localização:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>é um identificador exclusivo gerado a partir do caminho raiz do seu projeto.- O histórico é armazenado em um arquivo chamado
shell_history.
Variáveis de ambiente e arquivos .env
Variáveis de ambiente são uma forma comum de configurar aplicações, especialmente para informações sensíveis (como tokens) ou para configurações que podem variar entre ambientes.
O Qwen Code pode carregar automaticamente variáveis de ambiente a partir de arquivos .env.
Para variáveis relacionadas à autenticação (como OPENAI_*) e para a abordagem recomendada com o arquivo .qwen/.env, consulte Autenticação.
Exclusão de variáveis de ambiente: Algumas variáveis de ambiente (como DEBUG e DEBUG_MODE) são automaticamente excluídas dos arquivos .env do projeto por padrão, para evitar interferência no comportamento da CLI. As variáveis provenientes de arquivos .qwen/.env nunca são excluídas. É possível personalizar esse comportamento usando a configuração advanced.excludedEnvVars no arquivo settings.json.
Tabela de Variáveis de Ambiente
| Variável | Descrição | Observações |
|---|---|---|
QWEN_TELEMETRY_ENABLED | Defina como true ou 1 para habilitar a telemetria. Qualquer outro valor é considerado como desabilitação. | Substitui a configuração telemetry.enabled. |
QWEN_TELEMETRY_TARGET | Define o destino da telemetria (local ou gcp). | Substitui a configuração telemetry.target. |
QWEN_TELEMETRY_OTLP_ENDPOINT | Define o endpoint OTLP para telemetria. | Substitui a configuração telemetry.otlpEndpoint. |
QWEN_TELEMETRY_OTLP_PROTOCOL | Define o protocolo OTLP (grpc ou http). | Substitui a configuração telemetry.otlpProtocol. |
QWEN_TELEMETRY_LOG_PROMPTS | Defina como true ou 1 para habilitar ou desabilitar o registro dos prompts do usuário. Qualquer outro valor é considerado como desabilitação. | Substitui a configuração telemetry.logPrompts. |
QWEN_TELEMETRY_OUTFILE | Define o caminho do arquivo para gravar a telemetria quando o destino for local. | Substitui a configuração telemetry.outfile. |
QWEN_TELEMETRY_USE_COLLECTOR | Defina como true ou 1 para habilitar ou desabilitar o uso de um coletor OTLP externo. Qualquer outro valor é considerado como desabilitação. | Substitui a configuração telemetry.useCollector. |
QWEN_SANDBOX | Alternativa à configuração sandbox em settings.json. | Aceita true, false, docker, podman ou uma string de comando personalizada. |
SEATBELT_PROFILE | (Específico do macOS) Alterna o perfil do Seatbelt (sandbox-exec) no macOS. | permissive-open: (Padrão) Restringe gravações à pasta do projeto (e algumas outras pastas, consulte packages/cli/src/utils/sandbox-macos-permissive-open.sb), mas permite outras operações. strict: Usa um perfil rigoroso que recusa operações por padrão. <profile_name>: Usa um perfil personalizado. Para definir um perfil personalizado, crie um arquivo chamado sandbox-macos-<profile_name>.sb no diretório .qwen/ do seu projeto (por exemplo, my-project/.qwen/sandbox-macos-custom.sb). |
DEBUG ou DEBUG_MODE | (Frequentemente usado por bibliotecas subjacentes ou pela própria CLI) Defina como true ou 1 para habilitar o registro detalhado de depuração, útil para solução de problemas. | Observação: Essas variáveis são automaticamente excluídas dos arquivos .env do projeto por padrão para evitar interferência no comportamento da CLI. Use arquivos .qwen/.env se precisar definir essas variáveis especificamente para o Qwen Code. |
NO_COLOR | Defina qualquer valor para desabilitar toda saída colorida na CLI. | |
CLI_TITLE | Defina uma string para personalizar o título da CLI. | |
CODE_ASSIST_ENDPOINT | Especifica o endpoint do servidor de assistência de código. | Útil para desenvolvimento e testes. |
TAVILY_API_KEY | Sua chave de API para o serviço de pesquisa web Tavily. | Usada para habilitar a funcionalidade da ferramenta web_search. Exemplo: export TAVILY_API_KEY="tvly-your-api-key-here" |
Argumentos de Linha de Comando
Argumentos passados diretamente ao executar a CLI podem substituir outras configurações para aquela sessão específica.
Tabela de Argumentos de Linha de Comando
| Argumento | Apelido | Descrição | Valores Possíveis | Observações |
|---|---|---|---|---|
--model | -m | Especifica o modelo Qwen a ser usado nesta sessão. | Nome do modelo | Exemplo: npm start -- --model qwen3-coder-plus |
--prompt | -p | Usado para passar um prompt diretamente ao comando. Isso invoca o Qwen Code em modo não interativo. | Seu texto de prompt | Para exemplos de scripts, use a flag --output-format json para obter uma saída estruturada. |
--prompt-interactive | -i | Inicia uma sessão interativa com o prompt fornecido como entrada inicial. | Seu texto de prompt | O prompt é processado dentro da sessão interativa, não antes dela. Não pode ser usado ao redirecionar entrada do stdin. Exemplo: qwen -i "explique este código" |
--output-format | -o | Especifica o formato da saída da CLI para o modo não interativo. | text, json, stream-json | text: (Padrão) Saída legível por humanos. json: Saída JSON legível por máquina emitida ao final da execução. stream-json: Mensagens JSON em fluxo emitidas conforme ocorrem durante a execução. Para saída estruturada e scripts, use a flag --output-format json ou --output-format stream-json. Consulte Modo Headless para mais informações detalhadas. |
--input-format | Especifica o formato consumido da entrada padrão (stdin). | text, stream-json | text: (Padrão) Entrada de texto padrão do stdin ou dos argumentos da linha de comando. stream-json: Protocolo de mensagens JSON via stdin para comunicação bidirecional. Requisito: --input-format stream-json exige que --output-format stream-json também seja definido. Ao usar stream-json, o stdin é reservado exclusivamente para mensagens do protocolo. Consulte Modo Headless para mais informações detalhadas. | |
--include-partial-messages | Inclui mensagens parciais do assistente ao usar o formato de saída stream-json. Quando ativado, emite eventos de fluxo (como message_start, content_block_delta, etc.) conforme ocorrem durante o streaming. | Padrão: false. Requisito: Exige que --output-format stream-json esteja definido. Consulte Modo Headless para mais informações sobre eventos de fluxo. | ||
--sandbox | -s | Habilita o modo sandbox para esta sessão. | ||
--sandbox-image | Define o URI da imagem do sandbox. | |||
--debug | -d | Habilita o modo de depuração para esta sessão, fornecendo saída mais detalhada. | ||
--all-files | -a | Se definido, inclui recursivamente todos os arquivos no diretório atual como contexto para o prompt. | ||
--help | -h | Exibe informações de ajuda sobre os argumentos de linha de comando. | ||
--show-memory-usage | Exibe o uso atual de memória. | |||
--yolo | Habilita o modo YOLO, que aprova automaticamente todas as chamadas de ferramentas. | |||
--approval-mode | Define o modo de aprovação para chamadas de ferramentas. | plan, default, auto-edit, yolo | Modos suportados: plan: Apenas análise — sem modificação de arquivos ou execução de comandos. default: Exige aprovação para edições de arquivos ou comandos shell (comportamento padrão). auto-edit: Aprova automaticamente ferramentas de edição (edit, write_file) e solicita confirmação para as demais. yolo: Aprova automaticamente todas as chamadas de ferramentas (equivalente a --yolo). Não pode ser usado em conjunto com --yolo. Use --approval-mode=yolo em vez de --yolo para a nova abordagem unificada. Exemplo: qwen --approval-mode auto-editConsulte mais sobre Modo de Aprovação. | |
--allowed-tools | Lista separada por vírgulas de nomes de ferramentas que ignoram a caixa de diálogo de confirmação. | Nomes de ferramentas | Exemplo: qwen --allowed-tools "Shell(git status)" | |
--telemetry | Habilita a telemetria. | |||
--telemetry-target | Define o destino da telemetria. | Consulte telemetria para mais informações. | ||
--telemetry-otlp-endpoint | Define o endpoint OTLP para telemetria. | Consulte telemetria para mais informações. | ||
--telemetry-otlp-protocol | Define o protocolo OTLP para telemetria (grpc ou http). | Padrão: grpc. Consulte telemetria para mais informações. | ||
--telemetry-log-prompts | Habilita o registro de prompts para fins de telemetria. | Consulte telemetria para mais informações. | ||
--checkpointing | Habilita o checkpointing. | |||
--acp | Habilita o modo ACP (Agent Client Protocol). Útil para integrações com IDEs/editores, como o Zed. | Estável. Substitui a flag obsoleta --experimental-acp. | ||
--experimental-lsp | Habilita a funcionalidade experimental de LSP (Language Server Protocol) para inteligência de código (ir para definição, encontrar referências, diagnósticos, etc.). | Experimental. Exige que servidores de linguagem estejam instalados. | ||
--extensions | -e | Especifica uma lista de extensões a serem usadas na sessão. | Nomes de extensões | Se não for fornecida, todas as extensões disponíveis serão usadas. Use o termo especial qwen -e none para desabilitar todas as extensões. Exemplo: qwen -e my-extension -e my-other-extension |
--list-extensions | -l | Lista todas as extensões disponíveis e encerra. | ||
--proxy | Define o proxy para a CLI. | URL do proxy | Exemplo: --proxy http://localhost:7890. | |
--include-directories | Inclui diretórios adicionais no workspace para suporte a múltiplos diretórios. | Caminhos de diretórios | Pode ser especificado várias vezes ou como valores separados por vírgula. No máximo 5 diretórios podem ser adicionados. Exemplo: --include-directories /path/to/project1,/path/to/project2 ou --include-directories /path/to/project1 --include-directories /path/to/project2 | |
--screen-reader | Habilita o modo leitor de tela, que ajusta a interface de terminal (TUI) para melhor compatibilidade com leitores de tela. | |||
--version | Exibe a versão da CLI. | |||
--openai-logging | Habilita o registro das chamadas à API OpenAI para depuração e análise. | Essa flag substitui a configuração enableOpenAILogging no arquivo settings.json. | ||
--openai-logging-dir | Define um caminho personalizado para o diretório de logs da API OpenAI. | Caminho do diretório | Essa flag substitui a configuração openAILoggingDir no arquivo settings.json. Suporta caminhos absolutos, relativos e expansão de ~. Exemplo: qwen --openai-logging-dir "~/qwen-logs" --openai-logging | |
--tavily-api-key | Define a chave da API Tavily para funcionalidade de busca web nesta sessão. | Chave da API | Exemplo: qwen --tavily-api-key tvly-your-api-key-here |
Arquivos de Contexto (Contexto Instrucional Hierárquico)
Embora não sejam, estritamente falando, uma configuração do comportamento da CLI, os arquivos de contexto (que, por padrão, têm o nome QWEN.md, mas podem ser configurados via a opção context.fileName) são fundamentais para configurar o contexto instrucional (também chamado de “memória”). Esse recurso poderoso permite fornecer ao modelo instruções específicas do projeto, diretrizes de estilo de codificação ou qualquer outra informação de fundo relevante, tornando as respostas da IA mais personalizadas e precisas às suas necessidades. A CLI inclui elementos de interface, como um indicador no rodapé que mostra a quantidade de arquivos de contexto carregados, para mantê-lo informado sobre o contexto ativo.
- Finalidade: Esses arquivos em Markdown contêm instruções, diretrizes ou informações contextuais que você deseja que o modelo Qwen conheça durante suas interações. O sistema foi projetado para gerenciar esse contexto instrucional de forma hierárquica.
Exemplo de Conteúdo de Arquivo de Contexto (por exemplo, QWEN.md)
Abaixo está um exemplo conceitual do que um arquivo de contexto na raiz de um projeto TypeScript pode conter:
# Projeto: Minha Incrível Biblioteca TypeScript
## Instruções Gerais:
- Ao gerar novo código TypeScript, siga o estilo de codificação já existente.
- Certifique-se de que todas as novas funções e classes tenham comentários JSDoc.
- Prefira paradigmas de programação funcional quando apropriado.
- Todo o código deve ser compatível com TypeScript 5.0 e Node.js 20+.
## Estilo de Codificação:
- Use 2 espaços para indentação.
- Nomes de interfaces devem começar com `I` (por exemplo, `IUserService`).
- Membros privados de classes devem começar com um sublinhado (`_`).
- Sempre use igualdade estrita (`===` e `!==`).
## Componente Específico: `src/api/client.ts`
- Este arquivo lida com todas as requisições de API de saída.
- Ao adicionar novas funções de chamada de API, certifique-se de que incluam tratamento robusto de erros e registro (logging).
- Use o utilitário existente `fetchWithRetry` para todas as requisições GET.
## Sobre Dependências:
- Evite introduzir novas dependências externas, a menos que sejam absolutamente necessárias.
- Se uma nova dependência for necessária, especifique o motivo.
Este exemplo demonstra como você pode fornecer um contexto geral do projeto, convenções específicas de codificação e até mesmo observações sobre arquivos ou componentes particulares. Quanto mais relevantes e precisos forem seus arquivos de contexto, melhor o assistente de IA poderá ajudá-lo. Arquivos de contexto específicos do projeto são altamente recomendados para estabelecer convenções e contexto.
- Carregamento Hierárquico e Precedência: A CLI implementa um sistema hierárquico de memória ao carregar arquivos de contexto (por exemplo,
QWEN.md) de diversos locais. O conteúdo dos arquivos listados abaixo (mais específicos) normalmente substitui ou complementa o conteúdo dos arquivos listados acima (mais gerais). A ordem exata de concatenação e o contexto final podem ser inspecionados usando o comando/memory show. A ordem típica de carregamento é:- Arquivo de Contexto Global:
- Localização:
~/.qwen/<nome-do-arquivo-de-contexto-configurado>(por exemplo,~/.qwen/QWEN.mdno diretório home do usuário). - Escopo: Fornece instruções padrão para todos os seus projetos.
- Localização:
- Arquivos de Contexto da Raiz do Projeto e de Diretórios Ancestrais:
- Localização: A CLI procura pelo arquivo de contexto configurado no diretório de trabalho atual e, em seguida, em cada diretório pai até encontrar a raiz do projeto (identificada por uma pasta
.git) ou o diretório home do usuário. - Escopo: Fornece contexto relevante para o projeto inteiro ou para uma parte significativa dele.
- Localização: A CLI procura pelo arquivo de contexto configurado no diretório de trabalho atual e, em seguida, em cada diretório pai até encontrar a raiz do projeto (identificada por uma pasta
- Arquivo de Contexto Global:
- Concatenação e Indicação na Interface do Usuário: O conteúdo de todos os arquivos de contexto encontrados é concatenado (com separadores indicando sua origem e caminho) e fornecido como parte do prompt do sistema. O rodapé da CLI exibe a contagem de arquivos de contexto carregados, oferecendo uma indicação visual rápida sobre o contexto instrucional ativo.
- Importação de Conteúdo: Você pode modularizar seus arquivos de contexto importando outros arquivos Markdown usando a sintaxe
@caminho/para/arquivo.md. Para mais detalhes, consulte a documentação do Processador de Importação de Memória. - Comandos para Gerenciamento de Memória:
- Use
/memory refreshpara forçar uma nova verificação e recarregamento de todos os arquivos de contexto de todos os locais configurados. Isso atualiza o contexto instrucional do assistente de IA. - Use
/memory showpara exibir o contexto instrucional combinado atualmente carregado, permitindo que você verifique a hierarquia e o conteúdo sendo utilizado pelo assistente de IA. - Consulte a documentação de Comandos para obter detalhes completos sobre o comando
/memorye seus subcomandos (showerefresh).
- Use
Ao compreender e utilizar essas camadas de configuração e a natureza hierárquica dos arquivos de contexto, você pode gerenciar efetivamente a memória do assistente de IA e personalizar as respostas do Qwen Code conforme suas necessidades e projetos específicos.
Sandbox
O Qwen Code pode executar operações potencialmente inseguras (como comandos de shell e modificações de arquivos) dentro de um ambiente isolado (sandbox) para proteger seu sistema.
O Sandbox está desabilitado por padrão, mas você pode habilitá-lo de algumas maneiras:
- Usando a flag
--sandboxou-s. - Definindo a variável de ambiente
QWEN_SANDBOX. - O sandbox é habilitado automaticamente ao usar
--yoloou--approval-mode=yolo.
Por padrão, ele usa uma imagem Docker pré-construída chamada qwen-code-sandbox.
Para necessidades específicas de sandboxing em projetos, você pode criar um Dockerfile personalizado em .qwen/sandbox.Dockerfile no diretório raiz do seu projeto. Esse Dockerfile pode ser baseado na imagem base do sandbox:
FROM qwen-code-sandbox
# Adicione aqui suas dependências ou configurações personalizadas
# Por exemplo:
# RUN apt-get update && apt-get install -y some-packageCOPIAR ./my-config /app/my-config
Quando o arquivo `.qwen/sandbox.Dockerfile` existir, você pode usar a variável de ambiente `BUILD_SANDBOX` ao executar o Qwen Code para criar automaticamente a imagem personalizada do sandbox:
BUILD_SANDBOX=1 qwen -s
## Estatísticas de Uso
Para nos ajudar a melhorar o Qwen Code, coletamos estatísticas de uso anonimizadas. Esses dados nos ajudam a entender como a CLI é utilizada, identificar problemas comuns e priorizar novos recursos.
**O que coletamos:**
- **Chamadas de Ferramentas:** Registramos os nomes das ferramentas chamadas, se tiveram sucesso ou falharam e quanto tempo levaram para ser executadas. Não coletamos os argumentos passados para as ferramentas nem quaisquer dados retornados por elas.
- **Solicitações à API:** Registramos o modelo usado em cada solicitação, a duração da solicitação e se ela foi bem-sucedida. Não coletamos o conteúdo dos prompts nem das respostas.
- **Informações da Sessão:** Coletamos informações sobre a configuração da CLI, como as ferramentas habilitadas e o modo de aprovação.
**O que NÃO coletamos:**
- **Informações Pessoalmente Identificáveis (PII):** Não coletamos nenhuma informação pessoal, como seu nome, endereço de e-mail ou chaves de API.
- **Conteúdo de Prompts e Respostas:** Não registramos o conteúdo dos seus prompts nem das respostas do modelo.
- **Conteúdo de Arquivos:** Não registramos o conteúdo de quaisquer arquivos lidos ou gravados pela CLI.
**Como recusar a coleta:**
Você pode desativar a coleta de estatísticas de uso a qualquer momento definindo a propriedade `usageStatisticsEnabled` como `false` na categoria `privacy` do seu arquivo `settings.json`:
{ “privacy”: { “usageStatisticsEnabled”: false } }
> [!note]
>
> Quando as estatísticas de uso estão habilitadas, os eventos são enviados a um endpoint de coleta RUM da Alibaba Cloud.