Configuração do Qwen Code
Autenticação / Chaves de API: A autenticação (Qwen OAuth vs API compatível com OpenAI) e variáveis de ambiente relacionadas à autenticação (como OPENAI_API_KEY) estão documentadas em Autenticação.
Nota 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 configurações disponíveis.
Camadas de configuração
A configuração é aplicada na seguinte ordem de precedência (números mais baixos são substituídos por números mais altos):
| Nível | Fonte da Configuração | Descrição |
|---|---|---|
| 1 | Valores padrão | Padrões codificados dentro da aplicação |
| 2 | Arquivo de padrões do sistema | Configurações padrão 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 do sistema que substituem todos os outros arquivos de configuração |
| 6 | Variáveis de ambiente | Variáveis do sistema ou da sessão, potencialmente carregadas de arquivos .env |
| 7 | Argumentos de linha de comando | Valores passados ao iniciar a CLI |
Arquivos de configurações
O Qwen Code utiliza arquivos de configuração em formato JSON para armazenar configurações persistentes. Existem quatro locais possíveis para esses arquivos:
| Tipo do arquivo | Localização | Escopo |
|---|---|---|
| Arquivo 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 em todo o sistema. Essas configurações têm a menor precedência e devem ser substituídas por configurações definidas pelo usuário, projeto ou substituições do sistema. |
| Arquivo de configuração do usuário | ~/.qwen/settings.json (onde ~ é o diretório home do usuário). | Aplica-se a todas as sessões do Qwen Code para o usuário atual. |
| Arquivo de configuração do projeto | .qwen/settings.json dentro do diretório raiz do seu projeto. | Aplica-se apenas quando o Qwen Code é executado a partir desse projeto específico. As configurações do projeto substituem as configurações do usuário. |
| Arquivo de configuração 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 substituem as configurações do usuário e do projeto. Pode ser útil para administradores de sistemas corporativos que desejam controlar as configurações do Qwen Code dos usuários. |
Nota sobre variáveis de ambiente nas configurações: Valores do tipo string nos seus arquivos settings.json podem referenciar variáveis de ambiente utilizando a sintaxe $VAR_NAME ou ${VAR_NAME}. Essas variáveis serão automaticamente resolvidas quando as configurações forem carregadas. Por exemplo, se você tiver uma variável de ambiente chamada MY_API_TOKEN, poderá utilizá-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 à operação do Qwen Code, como:
- Perfis personalizados de sandbox (por exemplo,
.qwen/sandbox-macos-custom.sb,.qwen/sandbox.Dockerfile).
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 da categoria correspondente no nível superior 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 | Habilitar atalhos de teclado do Vim. | false |
general.disableAutoUpdate | boolean | Desabilitar atualizações automáticas. | false |
general.disableUpdateNag | boolean | Desabilitar notificações de atualização. | false |
general.checkpointing.enabled | boolean | Habilitar pontos de verificação da sessão para recuperação. | false |
output
| Configuração | Tipo | Descrição | Padrão | Valores Possíveis |
|---|---|---|---|---|
output.format | string | O formato da saída do CLI. | "text" | "text", "json" |
ui
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
ui.theme | string | O tema de cores para a interface do usuário. Veja Temas para opções disponíveis. | undefined |
ui.customThemes | object | Definições de temas personalizados. | {} |
ui.hideWindowTitle | boolean | Ocultar a barra de título da janela. | false |
ui.hideTips | boolean | Ocultar dicas úteis na interface do usuário. | false |
ui.hideBanner | boolean | Ocultar o banner do aplicativo. | false |
ui.hideFooter | boolean | Ocultar o rodapé da interface do usuário. | false |
ui.showMemoryUsage | boolean | Exibir informações de uso de memória na interface do usuário. | false |
ui.showLineNumbers | boolean | Mostrar números de linha em blocos de código na saída do CLI. | true |
ui.showCitations | boolean | Mostrar citações para texto gerado no chat. | true |
enableWelcomeBack | boolean | Mostrar diálogo de boas-vindas ao retornar a um projeto com histórico de conversa. Quando ativado, o Qwen Code detectará automaticamente se você está retornando a um projeto com um resumo de projeto gerado anteriormente (.qwen/PROJECT_SUMMARY.md) e mostrará um diálogo permitindo que você continue sua conversa anterior ou comece do zero. Este recurso se integra ao comando /summary e ao diálogo de confirmação de saída. | true |
ui.accessibility.disableLoadingPhrases | boolean | Desativar frases de carregamento para acessibilidade. | false |
ui.accessibility.screenReader | boolean | Ativa o modo leitor de tela, que ajusta a interface TUI para melhor compatibilidade com leitores de tela. | false |
ui.customWittyPhrases | array of strings | Uma lista de frases personalizadas para exibir durante os estados de carregamento. Quando fornecidas, o CLI irá alternar entre essas frases em vez das padrão. | [] |
ide
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
ide.enabled | boolean | Ativa o modo de integração com IDE. | false |
ide.hasSeenNudge | boolean | Indica se o usuário viu a sugestão de integração. | false |
privacidade
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | Ativa a coleta de estatísticas de uso. | true |
model
| 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 turnos usuário/modelo/ferramenta a serem mantidos em uma sessão. -1 significa ilimitado. | -1 |
model.summarizeToolOutput | object | Habilita ou desabilita o resumo da saída da ferramenta. Você pode especificar o orçamento de tokens para o resumo usando a configuração tokenBudget. Nota: Atualmente apenas a ferramenta run_shell_command é suportada. Por exemplo {"run_shell_command": {"tokenBudget": 2000}} | undefined |
model.generationConfig | object | Substituições avançadas passadas ao gerador de conteúdo subjacente. Suporta controles de solicitação como timeout, maxRetries e disableCacheControl, juntamente com ajustes finos sob samplingParams (por exemplo temperature, top_p, max_tokens). Deixe não definido para confiar nos padrões do provedor. | undefined |
model.chatCompression.contextPercentageThreshold | number | Define o limite para compressão do histórico de bate-papo como uma porcentagem do limite total de tokens do modelo. Este é um valor entre 0 e 1 que se aplica 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 bate-papo exceder 60% do limite de tokens. Use 0 para desativar totalmente a compressão. | 0.7 |
model.skipNextSpeakerCheck | boolean | Ignora a verificação do próximo falante. | false |
model.skipLoopDetection | boolean | Desativa verificações de detecção de loop. A detecção de loop evita loops infinitos nas respostas de IA, mas pode gerar falsos positivos que interrompem fluxos de trabalho legítimos. Habilite esta opção se você experimentar interrupções frequentes de detecção de loop de falso positivo. | false |
model.skipStartupContext | boolean | Ignora o envio do contexto inicial do espaço de trabalho (resumo do ambiente e reconhecimento) no início de cada sessão. Habilite isso se preferir fornecer contexto manualmente ou quiser economizar tokens na inicialização. | false |
model.enableOpenAILogging | boolean | Habilita o registro das chamadas da API OpenAI para depuração e análise. Quando habilitado, solicitações e respostas da API são registradas em arquivos JSON. | false |
model.openAILoggingDir | string | Caminho personalizado para o diretório de registros da API OpenAI. Se não 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 ~ (diretório home). | undefined |
Exemplo de model.generationConfig:
{
"model": {
"generationConfig": {
"timeout": 60000,
"disableCacheControl": false,
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}Exemplos de model.openAILoggingDir:
"~/qwen-logs"- Registra no diretório~/qwen-logs"./custom-logs"- Registra em./custom-logsrelativo ao diretório atual"/tmp/openai-logs"- Registra no caminho absoluto/tmp/openai-logs
context
| 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.discoveryMaxDirs | número | Número máximo de diretórios a serem pesquisados para memória. | 200 |
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. Caminhos podem usar ~ para se referir ao diretório home do usuário. Esta configuração pode ser combinada com a flag --include-directories da linha de comando. | [] |
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, QWEN.md deve ser carregado apenas do diretório atual. | false |
context.fileFiltering.respectGitIgnore | boolean | Respeitar arquivos .gitignore durante a pesquisa. | true |
context.fileFiltering.respectQwenIgnore | boolean | Respeitar arquivos .qwenignore durante a pesquisa. | true |
context.fileFiltering.enableRecursiveFileSearch | boolean | Define se deve habilitar a busca recursiva por nomes de arquivos sob a árvore atual ao completar prefixos @ no prompt. | true |
context.fileFiltering.disableFuzzySearch | boolean | Quando true, desativa os recursos de busca difusa ao procurar arquivos, o que pode melhorar o desempenho em projetos com grande número de arquivos. | false |
Solução de Problemas de Desempenho na Pesquisa de Arquivos
Se você estiver enfrentando problemas de desempenho na pesquisa de arquivos (por exemplo, com os recursos de autocompletar usando @), especialmente em projetos com um número muito grande de arquivos, aqui estão algumas coisas que você pode tentar, em ordem de recomendação:
- Use
.qwenignore: Crie um arquivo.qwenignorena raiz do seu projeto para excluir diretórios que contenham um grande número de arquivos que você não precisa referenciar (por exemplo, artefatos de build, logs,node_modules). Reduzir o número total de arquivos indexados é a forma mais eficaz de melhorar o desempenho. - Desative a Pesquisa Aproximada (Fuzzy Search): Se ignorar arquivos não for suficiente, você pode desativar a pesquisa aproximada definindo
disableFuzzySearchcomotrueno seu arquivosettings.json. Isso fará com que uma lógica de correspondência mais simples e não aproximada seja usada, o que pode ser mais rápido. - Desative a Pesquisa Recursiva de Arquivos: Como último recurso, você pode desativar completamente a pesquisa recursiva de arquivos definindo
enableRecursiveFileSearchcomofalse. Essa será a opção mais rápida, pois evita uma varredura recursiva do seu projeto. No entanto, isso significa que você precisará digitar o caminho completo dos arquivos ao usar os recursos de autocompletar com@.
tools
| Configuração | Tipo | Descrição | Padrão | Observações |
|---|---|---|---|---|
tools.sandbox | boolean ou string | Ambiente de execução sandbox (pode ser um booleano ou uma string com caminho). | undefined | |
tools.shell.enableInteractiveShell | boolean | Usa node-pty para uma experiência interativa no shell. O fallback para child_process ainda se aplica. | false | |
tools.core | array de strings | Pode ser usado para restringir o conjunto de ferramentas embutidas com uma lista de permissões. Também é possível especificar restrições específicas por comando para ferramentas que suportam isso, 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 | array 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 suportam isso, como a ferramenta run_shell_command. Por exemplo, "tools.exclude": ["run_shell_command(rm -rf)"] bloqueará o comando rm -rf. Nota de segurança: Restrições específicas por comando em tools.exclude para run_shell_command são baseadas em correspondência simples de strings e podem ser facilmente contornadas. Este recurso não é um mecanismo de segurança e não deve ser usado para executar código não confiável com segurança. É recomendado usar tools.core para selecionar explicitamente os comandos que podem ser executados. | undefined | |
tools.allowed | array de strings | Uma lista de nomes de ferramentas que ignorará a caixa de diálogo de confirmação. Isso é útil para ferramentas em que você confia e usa com frequência. Por exemplo, ["run_shell_command(git)", "run_shell_command(npm test)"] irá 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 das ferramentas. | default | Valores possíveis: plan (apenas análise, não modifica arquivos nem executa comandos), default (requer aprovação antes de editar arquivos ou executar comandos 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 shell personalizado para chamar uma ferramenta específica descoberta usando tools.discoveryCommand. O comando shell deve atender aos seguintes critérios: Deve receber o nome da função (exatamente como na declaração de função ) como primeiro argumento da linha de comando. Deve ler os argumentos da função como JSON em stdin, de forma semelhante a functionCall.args. Deve retornar a saída da função como JSON em stdout, de forma semelhante a functionResponse.response.content. | undefined | |
tools.useRipgrep | boolean | Usa ripgrep para pesquisa de conteúdo em arquivos em vez da implementação alternativa. Oferece desempenho mais rápido na busca. | true | |
tools.useBuiltinRipgrep | boolean | Usa o binário ripgrep incluído. Quando definido como false, será usado o comando rg do sistema. Esta configuração só tem efeito quando tools.useRipgrep é true. | true | |
tools.enableToolOutputTruncation | boolean | Habilita o truncamento de saídas grandes de ferramentas. | true | Requer reinicialização: Sim |
tools.truncateToolOutputThreshold | número | Trunca a saída da ferramenta se ela ultrapassar esse número de caracteres. Aplica-se às ferramentas Shell, Grep, Glob, ReadFile e ReadManyFiles. | 25000 | Requer reinicialização: Sim |
tools.truncateToolOutputLines | 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 |
tools.autoAccept | boolean | Controla se a CLI aceita e executa automaticamente chamadas de ferramentas consideradas seguras (por exemplo, operações somente leitura) sem confirmação explícita do usuário. Se definido como true, a CLI ignorará o prompt de confirmação para ferramentas consideradas seguras. | false |
mcp
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
mcp.serverCommand | string | Comando para iniciar um servidor MCP. | undefined |
mcp.allowed | array de strings | Uma 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 se conectar. Observe que isso será ignorado se --allowed-mcp-server-names estiver definido. | undefined |
mcp.excluded | array de strings | Uma lista de bloqueio de servidores MCP excluídos. Um servidor listado tanto em mcp.excluded quanto em mcp.allowed é excluído. Observe que isso será ignorado se --allowed-mcp-server-names estiver definido. | undefined |
Nota de Segurança para servidores MCP: Essas configurações usam correspondência simples de strings nos nomes dos servidores MCP, que podem ser modificados. Se você for um administrador de sistema buscando impedir que os usuários contornem isso, considere configurar mcpServers no nível das configurações do sistema de forma que o usuário não consiga configurar nenhum servidor MCP por conta própria. Isso não deve ser usado como um mecanismo de segurança infalível.
segurança
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
security.folderTrust.enabled | boolean | Configuração para rastrear 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 obrigatório (útil para empresas). | undefined |
security.auth.useExternal | boolean | Se deve usar 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 variáveis de ambiente que devem ser excluídas de serem carregadas dos arquivos .env do projeto. Isso evita que variáveis de ambiente específicas do projeto (como DEBUG=true) interfiram no comportamento da CLI. Variáveis 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 para o comando /bug. Propriedades: urlTemplate (string): Uma URL que pode conter 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 na web Tavily. Usada para habilitar a funcionalidade da ferramenta web_search. | undefined |
Nota sobre advanced.tavilyApiKey: Este é um formato de configuração legado. Para usuários do Qwen OAuth, o provedor DashScope está automaticamente disponível sem nenhuma 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 alias do servidor definido na configuração (por exemplo, serverAlias__actualToolName) para evitar conflitos. Observe que o sistema pode remover certas propriedades de esquema das definições de ferramentas MCP para fins de compatibilidade. Pelo menos uma das opções command, url ou httpUrl deve ser fornecida. Se várias forem especificadas, a ordem de precedência é httpUrl, depois url e, por fim, command.
| Propriedade | Tipo | Descrição | Opcional |
|---|---|---|---|
mcpServers.<SERVER_NAME>.command | string | O comando a ser executado para iniciar o servidor MCP via entrada/saída padrão. | Sim |
mcpServers.<SERVER_NAME>.args | array de strings | Argumentos a serem passados ao comando. | Sim |
mcpServers.<SERVER_NAME>.env | object | Variáveis de ambiente a serem definidas para o processo do servidor. | Sim |
mcpServers.<SERVER_NAME>.cwd | string | O diretório de trabalho no qual o servidor será iniciado. | Sim |
mcpServers.<SERVER_NAME>.url | string | A URL de um servidor MCP que usa Server-Sent Events (SSE) para comunicação. | Sim |
mcpServers.<SERVER_NAME>.httpUrl | string | A URL de um servidor MCP que usa HTTP transmissível para comunicação. | Sim |
mcpServers.<SERVER_NAME>.headers | object | Um mapa de cabeçalhos HTTP a serem enviados com solicitações para url ou httpUrl. | Sim |
mcpServers.<SERVER_NAME>.timeout | number | Tempo limite em milissegundos para solicitações a este servidor MCP. | Sim |
mcpServers.<SERVER_NAME>.trust | boolean | Confiar neste servidor e ignorar todas as confirmações de chamada de ferramenta. | Sim |
mcpServers.<SERVER_NAME>.description | string | Uma breve descrição do servidor, que pode ser usada para fins de exibição. | Sim |
mcpServers.<SERVER_NAME>.includeTools | array de strings | Lista de nomes de ferramentas a serem incluídas deste servidor MCP. Quando especificado, apenas as ferramentas listadas aqui estarão disponíveis a partir deste servidor (comportamento de lista de permissões). Se não for especificado, todas as ferramentas do servidor são habilitadas por padrão. | Sim |
mcpServers.<SERVER_NAME>.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. Nota: excludeTools tem precedência sobre includeTools – se uma ferramenta estiver nas duas listas, ela será excluída. | Sim |
telemetry
Configura o registro e coleta de métricas para o Qwen Code. Para mais informações, consulte telemetry.
| Configuração | Tipo | Descrição | Padrão |
|---|---|---|---|
telemetry.enabled | boolean | Se a telemetria está habilitada ou não. | |
telemetry.target | string | O destino para a telemetria coletada. Valores suportados são local e gcp. | |
telemetry.otlpEndpoint | string | O endpoint para o Exportador OTLP. | |
telemetry.otlpProtocol | string | O protocolo para o Exportador OTLP (grpc ou http). | |
telemetry.logPrompts | boolean | Se deve incluir ou não o conteúdo dos prompts do usuário nos logs. | |
telemetry.outfile | string | O arquivo para onde escrever a telemetria quando target é local. | |
telemetry.useCollector | boolean | Se deve usar um coletor externo OTLP. |
Exemplo de settings.json
Aqui está um exemplo de arquivo settings.json com a estrutura aninhada, nova a partir da versão v0.3.0:
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideBanner": true,
"hideTips": false,
"customWittyPhrases": [
"Você esquece mil coisas por dia. Certifique-se de que esta é uma delas",
"Conectando à 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",
"summarizeToolOutput": {
"run_shell_command": {
"tokenBudget": 100
}
}
},
"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 do 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 home do seu usuário.
- Localização:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>é um identificador único 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 mudar entre ambientes.
O Qwen Code pode carregar automaticamente variáveis de ambiente de arquivos .env.
Para variáveis relacionadas à autenticação (como OPENAI_*) e a abordagem recomendada com .qwen/.env, consulte Autenticação.
Exclusão de Variáveis de Ambiente: Algumas variáveis de ambiente (como DEBUG e DEBUG_MODE) são excluídas automaticamente dos arquivos .env do projeto por padrão para evitar interferência no comportamento da CLI. Variáveis de arquivos .qwen/.env nunca são excluídas. Você pode personalizar esse comportamento usando a configuração advanced.excludedEnvVars no seu arquivo settings.json.
Tabela de Variáveis de Ambiente
| Variável | Descrição | Notas |
|---|---|---|
GEMINI_TELEMETRY_ENABLED | Defina como true ou 1 para habilitar a telemetria. Qualquer outro valor é tratado como desabilitação. | Substitui a configuração telemetry.enabled. |
GEMINI_TELEMETRY_TARGET | Define o destino da telemetria (local ou gcp). | Substitui a configuração telemetry.target. |
GEMINI_TELEMETRY_OTLP_ENDPOINT | Define o endpoint OTLP para telemetria. | Substitui a configuração telemetry.otlpEndpoint. |
GEMINI_TELEMETRY_OTLP_PROTOCOL | Define o protocolo OTLP (grpc ou http). | Substitui a configuração telemetry.otlpProtocol. |
GEMINI_TELEMETRY_LOG_PROMPTS | Defina como true ou 1 para habilitar ou desabilitar o registro dos prompts do usuário. Qualquer outro valor é tratado como desabilitação. | Substitui a configuração telemetry.logPrompts. |
GEMINI_TELEMETRY_OUTFILE | Define o caminho do arquivo para onde a telemetria será gravada quando o destino for local. | Substitui a configuração telemetry.outfile. |
GEMINI_TELEMETRY_USE_COLLECTOR | Defina como true ou 1 para habilitar ou desabilitar o uso de um coletor OTLP externo. Qualquer outro valor é tratado como desabilitação. | Substitui a configuração telemetry.useCollector. |
GEMINI_SANDBOX | Alternativa à configuração sandbox em settings.json. | Aceita true, false, docker, podman ou uma string de comando personalizada. |
SEATBELT_PROFILE | (específico para macOS) Alterna o perfil do Seatbelt (sandbox-exec) no macOS. | permissive-open: (Padrão) Restringe gravações na pasta do projeto (e algumas outras pastas, veja packages/cli/src/utils/sandbox-macos-permissive-open.sb) mas permite outras operações. strict: Usa um perfil restrito que nega operações por padrão. <nome_do_perfil>: Usa um perfil personalizado. Para definir um perfil personalizado, crie um arquivo chamado sandbox-macos-<nome_do_perfil>.sb no diretório .qwen/ do seu projeto (ex.: meu-projeto/.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 logs detalhados de depuração, úteis para solução de problemas. | Nota: 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 defini-las especificamente para o Qwen Code. |
NO_COLOR | Defina qualquer valor para desativar todas as saídas coloridas na CLI. | |
CLI_TITLE | Defina como uma string para personalizar o título da CLI. | |
CODE_ASSIST_ENDPOINT | Especifica o endpoint para o servidor de assistência de código. | Isso é útil para desenvolvimento e testes. |
TAVILY_API_KEY | Sua chave de API para o serviço de busca web Tavily. | Usado para habilitar a funcionalidade da ferramenta web_search. Exemplo: export TAVILY_API_KEY="tvly-sua-chave-de-api-aqui" |
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 da Linha de Comando
| Argumento | Alias | Descrição | Valores Possíveis | Notas |
|---|---|---|---|---|
--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. | Texto do seu 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. | Texto do seu prompt | O prompt é processado dentro da sessão interativa, e não antes dela. Não pode ser usado quando há entrada direta via stdin. Exemplo: qwen -i "explique este código" |
--output-format | -o | Especifica o formato da saída da CLI no modo não interativo. | text, json, stream-json | text: (Padrão) Saída legível por humanos. json: Saída em JSON legível por máquinas emitida ao final da execução. stream-json: Mensagens JSON transmitidas conforme ocorrem durante a execução. Para saídas estruturadas e scripts, use a flag --output-format json ou --output-format stream-json. Veja Modo Headless para informações detalhadas. |
--input-format | Especifica o formato consumido pela entrada padrão. | text, stream-json | text: (Padrão) Entrada de texto padrão via stdin ou 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 para mensagens do protocolo. Veja Modo Headless para 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 (message_start, content_block_delta, etc.) conforme ocorrem durante a transmissão. | Padrão: false. Requisito: Exige que --output-format stream-json esteja definido. Veja Modo Headless para informações detalhadas sobre eventos de fluxo. | ||
--sandbox | -s | Ativa o modo sandbox para esta sessão. | ||
--sandbox-image | Define a URI da imagem sandbox. | |||
--debug | -d | Ativa o modo de depuração para esta sessão, fornecendo uma 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 da linha de comando. | ||
--show-memory-usage | Exibe o uso atual de memória. | |||
--yolo | Ativa 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 — não modifica arquivos nem executa 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) enquanto solicita aprovação para outras. yolo: Aprova automaticamente todas as chamadas de ferramentas (equivalente a --yolo). Não pode ser usado junto com --yolo. Use --approval-mode=yolo em vez de --yolo para a nova abordagem unificada. Exemplo: qwen --approval-mode auto-editVeja mais sobre Modo de Aprovação. | |
--allowed-tools | Uma lista separada por vírgulas de nomes de ferramentas que ignoram a caixa de diálogo de confirmação. | Nomes das ferramentas | Exemplo: qwen --allowed-tools "Shell(git status)" | |
--telemetry | Ativa a telemetria. | |||
--telemetry-target | Define o destino da telemetria. | Veja telemetria para mais informações. | ||
--telemetry-otlp-endpoint | Define o endpoint OTLP para a telemetria. | Veja telemetria para mais informações. | ||
--telemetry-otlp-protocol | Define o protocolo OTLP para a telemetria (grpc ou http). | Padrão: grpc. Veja telemetria para mais informações. | ||
--telemetry-log-prompts | Ativa o registro de prompts para telemetria. | Veja telemetria para mais informações. | ||
--checkpointing | Ativa o checkpointing. | |||
--extensions | -e | Especifica uma lista de extensões a serem usadas na sessão. | Nomes das extensões | Se não for fornecido, todas as extensões disponíveis são usadas. Use o termo especial qwen -e none para desativar todas as extensões. Exemplo: qwen -e minha-extensao -e minha-outra-extensao |
--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 espaço de trabalho para suporte a múltiplos diretórios. | Caminhos dos diretórios | Pode ser especificado várias vezes ou como valores separados por vírgula. É possível adicionar até 5 diretórios. Exemplo: --include-directories /caminho/para/projeto1,/caminho/para/projeto2 ou --include-directories /caminho/para/projeto1 --include-directories /caminho/para/projeto2 | |
--screen-reader | Ativa o modo leitor de tela, ajustando a interface TUI para melhor compatibilidade com leitores de tela. | |||
--version | Exibe a versão da CLI. | |||
--openai-logging | Ativa o registro de chamadas à API da OpenAI para depuração e análise. | Esta flag substitui a configuração enableOpenAILogging no arquivo settings.json. | ||
--openai-logging-dir | Define um caminho personalizado para os registros da API da OpenAI. | Caminho do diretório | Esta flag substitui a configuração openAILoggingDir no arquivo settings.json. Suporta caminhos absolutos, relativos e expansão com ~. Exemplo: qwen --openai-logging-dir "~/qwen-logs" --openai-logging | |
--tavily-api-key | Define a chave da API Tavily para funcionalidade de busca na web nesta sessão. | Chave da API | Exemplo: qwen --tavily-api-key tvly-sua-chave-aqui |
Arquivos de Contexto (Contexto Instrucional Hierárquico)
Embora não sejam estritamente uma configuração para o comportamento da CLI, os arquivos de contexto (por padrão QWEN.md, mas configuráveis através da opção context.fileName) são essenciais para configurar o contexto instrucional (também chamado de “memória”). Este recurso poderoso permite que você forneça instruções específicas do projeto, guias de estilo de codificação ou qualquer informação relevante ao modelo de IA, tornando suas respostas mais adaptadas e precisas às suas necessidades. A CLI inclui elementos de interface, como um indicador no rodapé mostrando o número de arquivos de contexto carregados, mantendo você informado sobre o contexto ativo.
- Propósito: Esses arquivos Markdown contêm instruções, diretrizes ou contexto que você deseja que o modelo Qwen leve em consideração durante as interações. O sistema é projetado para gerenciar esse contexto instrucional de forma hierárquica.
Exemplo de Conteúdo do Arquivo de Contexto (por exemplo, QWEN.md)
Aqui 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 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 ser prefixados com `I` (por exemplo, `IUserService`).
- Membros privados de classe devem ser prefixados 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 incluir tratamento de erro robusto e registro em log.
- Use o utilitário `fetchWithRetry` existente para todas as requisições GET.
## Sobre Dependências:
- Evite introduzir novas dependências externas, a menos que seja absolutamente necessário.
- Se uma nova dependência for necessária, por favor, informe o motivo.Este exemplo demonstra como você pode fornecer 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 a 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 sofisticado de memória carregando arquivos de contexto (por exemplo,
QWEN.md) de diversos locais. O conteúdo dos arquivos mais abaixo nesta lista (mais específicos) geralmente substitui ou complementa o conteúdo dos arquivos mais 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 Ancestrais:
- Localização: A CLI procura pelo arquivo de contexto configurado no diretório de trabalho atual e depois em cada diretório pai até encontrar a raiz do projeto (identificada por uma pasta
.git) ou seu diretório home. - Escopo: Fornece contexto relevante para todo o projeto ou uma parte significativa dele.
- Localização: A CLI procura pelo arquivo de contexto configurado no diretório de trabalho atual e depois em cada diretório pai até encontrar a raiz do projeto (identificada por uma pasta
- Arquivos de Contexto de Subdiretórios (Contextuais/Locais):
- Localização: A CLI também verifica a existência do arquivo de contexto configurado em subdiretórios abaixo do diretório de trabalho atual (respeitando padrões comuns de exclusão como
node_modules,.git, etc.). A amplitude desta busca é limitada a 200 diretórios por padrão, mas pode ser configurada com a opçãocontext.discoveryMaxDirsno seu arquivosettings.json. - Escopo: Permite instruções altamente específicas relevantes para um componente, módulo ou subseção específica do seu projeto.
- Localização: A CLI também verifica a existência do arquivo de contexto configurado em subdiretórios abaixo do diretório de trabalho atual (respeitando padrões comuns de exclusão como
- Arquivo de Contexto Global:
- Concatenação e Indicação na Interface: 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 mostra 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/o/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 recarregar todos os arquivos de contexto de todos os locais configurados. Isso atualiza o contexto instrucional da IA. - Use
/memory showpara exibir o contexto instrucional combinado atualmente carregado, permitindo verificar a hierarquia e o conteúdo utilizado pela 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 da IA e personalizar as respostas do Qwen Code de acordo com suas necessidades e projetos específicos.
Sandbox
O Qwen Code pode executar operações potencialmente inseguras (como comandos shell e modificações de arquivos) dentro de um ambiente sandbox para proteger seu sistema.
O Sandbox está desativado por padrão, mas você pode ativá-lo de algumas maneiras:
- Usando a flag
--sandboxou-s. - Definindo a variável de ambiente
GEMI_SANDBOX. - O sandbox é ativado por padrão ao usar
--yoloou--approval-mode=yolo.
Por padrão, ele usa uma imagem Docker pré-construída qwen-code-sandbox.
Para necessidades específicas de sandboxing do projeto, você pode criar um Dockerfile personalizado em .qwen/sandbox.Dockerfile no diretório raiz do seu projeto. Este Dockerfile pode ser baseado na imagem base do sandbox:
FROM qwen-code-sandbox
# Adicione suas dependências ou configurações personalizadas aqui
# Por exemplo:
# RUN apt-get update && apt-get install -y algum-pacote
# COPY ./my-config /app/my-configQuando .qwen/sandbox.Dockerfile existir, você pode usar a variável de ambiente BUILD_SANDBOX ao executar o Qwen Code para construir automaticamente a imagem personalizada do sandbox:
BUILD_SANDBOX=1 qwen -sEstatí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 elas foram bem-sucedidas ou falharam e quanto tempo levaram para serem executadas. Não coletamos os argumentos passados para as ferramentas nem nenhum dado retornado por elas.
- Requisições de API: Registramos o modelo usado em cada requisição, a duração da requisição e se ela foi bem-sucedida. Não coletamos o conteúdo dos prompts ou 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 ou das respostas do modelo.
- Conteúdo de Arquivos: Não registramos o conteúdo de nenhum arquivo lido ou escrito pela CLI.
Como desativar:
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
}
}Quando as estatísticas de uso estão ativadas, os eventos são enviados para um endpoint de coleta RUM da Alibaba Cloud.