Skip to Content
Guia do UsuárioConfiguraçãoConfigurações

Configuração do Qwen Code

Tip

Autenticação / chaves de API: A autenticação (API Key, Alibaba Cloud Coding Plan) e as variáveis de ambiente relacionadas à autenticação (como OPENAI_API_KEY) estão documentadas em Autenticação.

Note

Nota sobre o novo formato de configuração: O formato do arquivo settings.json foi atualizado para uma estrutura nova e 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 menores são substituídos por números maiores):

LevelConfiguration SourceDescription
1Default valuesPadrões embutidos no código do aplicativo
2System defaults fileConfigurações padrão em todo o sistema que podem ser substituídas por outros arquivos de configuração
3User settings fileConfigurações globais para o usuário atual
4Project settings fileConfigurações específicas do projeto
5System settings fileConfigurações em todo o sistema que substituem todos os outros arquivos de configuração
6Environment variablesVariáveis em todo o sistema ou específicas da sessão, potencialmente carregadas de arquivos .env
7Command-line argumentsValores passados ao iniciar a CLI

Arquivos de configuração

O Qwen Code usa arquivos de configuração JSON para configuração persistente. Existem quatro locais para esses arquivos:

File TypeLocationScope
System defaults fileLinux: /etc/qwen-code/system-defaults.json
Windows: C:\ProgramData\qwen-code\system-defaults.json
macOS: /Library/Application Support/QwenCode/system-defaults.json
The path can be overridden using the QWEN_CODE_SYSTEM_DEFAULTS_PATH environment variable.
Fornece uma camada base de configurações padrão em todo o sistema. Essas configurações têm a menor precedência e destinam-se a ser substituídas por configurações de usuário, projeto ou substituição do sistema.
User settings file~/.qwen/settings.json (onde ~ é seu diretório home).Aplica-se a todas as sessões do Qwen Code para o usuário atual.
Project settings file.qwen/settings.json dentro do diretório raiz do seu projeto.Aplica-se apenas ao executar o Qwen Code a partir desse projeto específico. As configurações do projeto substituem as configurações do usuário.
System settings fileLinux: /etc/qwen-code/settings.json
Windows: C:\ProgramData\qwen-code\settings.json
macOS: /Library/Application Support/QwenCode/settings.json
The path can be overridden using the QWEN_CODE_SYSTEM_SETTINGS_PATH environment variable.
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 de usuário e projeto. Podem ser úteis para administradores de sistema em empresas que desejam controlar as configurações do Qwen Code dos usuários.
Note

Nota sobre variáveis de ambiente nas configurações: Valores de string nos seus arquivos settings.json podem referenciar variáveis de ambiente usando a sintaxe $VAR_NAME ou ${VAR_NAME}. Essas variáveis serão resolvidas automaticamente quando as configurações forem carregadas. Por exemplo, se você tiver uma variável de ambiente MY_API_TOKEN, poderá usá-la no settings.json assim: "apiKey": "$MY_API_TOKEN".

O diretório .qwen no seu projeto

Além de um arquivo de configuração do projeto, o diretório .qwen de um projeto pode conter outros arquivos específicos do projeto relacionados à operação do Qwen Code, como:

Migração de configuração

O Qwen Code migra automaticamente configurações legadas para o novo formato. Os arquivos de configuração antigos são salvos como backup antes da migração. As seguintes configurações foram renomeadas de nomenclatura negativa (disable*) para positiva (enable*):

Old SettingNew SettingNotes
disableAutoUpdate + disableUpdateNaggeneral.enableAutoUpdateConsolidado em uma única configuração
disableLoadingPhrasesui.accessibility.enableLoadingPhrases
disableFuzzySearchcontext.fileFiltering.enableFuzzySearch
disableCacheControlmodel.generationConfig.enableCacheControl
Note

Inversão de valores booleanos: Durante a migração, os valores booleanos são invertidos (ex.: disableAutoUpdate: true se torna enableAutoUpdate: false).

Política de consolidação para disableAutoUpdate e disableUpdateNag

Quando ambas as configurações legadas estão presentes com valores diferentes, a migração segue esta política: se qualquer uma (disableAutoUpdate ou disableUpdateNag) for true, então enableAutoUpdate se torna false:

disableAutoUpdatedisableUpdateNagMigrated enableAutoUpdate
falsefalsetrue
falsetruefalse
truefalsefalse
truetruefalse

Configurações disponíveis no settings.json

As configurações são organizadas em categorias. A maioria das configurações deve ser colocada dentro do objeto de categoria de nível superior correspondente no seu arquivo settings.json. Algumas configurações de compatibilidade, como proxy, são chaves de nível superior.

top-level

SettingTypeDescriptionDefault
proxystringURL de proxy para requisições HTTP da CLI. A precedência é --proxy > proxy no settings.json > variáveis de ambiente HTTPS_PROXY / https_proxy / HTTP_PROXY / http_proxy.undefined

general

SettingTypeDescriptionDefault
general.preferredEditorstringO editor preferido para abrir arquivos.undefined
general.vimModebooleanAtiva atalhos de teclado do Vim.false
general.enableAutoUpdatebooleanAtiva verificações e instalações automáticas de atualizações na inicialização.true
general.showSessionRecapbooleanExibe automaticamente um resumo de uma linha (“onde você parou”) ao retornar ao terminal após um período ausente. Desativado por padrão. Use /recap para acionar manualmente, independentemente desta configuração.false
general.sessionRecapAwayThresholdMinutesnumberMinutos que o terminal deve ficar em segundo plano antes que um resumo automático seja exibido ao recuperar o foco. Usado apenas quando showSessionRecap está ativado.5
general.gitCoAuthorbooleanAdiciona automaticamente um trailer Co-authored-by às mensagens de commit do git quando os commits são feitos pelo Qwen Code.true
general.checkpointing.enabledbooleanAtiva o checkpoint de sessão para recuperação.false
general.defaultFileEncodingstringCodificaçã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 apenas se seu projeto exigir especificamente BOM."utf-8"

output

SettingTypeDescriptionDefaultPossible Values
output.formatstringO formato da saída da CLI."text""text", "json"

ui

SettingTypeDescriptionDefault
ui.themestringO tema de cores para a UI. Consulte Temas para opções disponíveis.undefined
ui.customThemesobjectDefinições de temas personalizados.{}
ui.statusLineobjectConfiguração personalizada da linha de status. Um comando de shell cuja saída é exibida na seção esquerda do rodapé. Consulte Linha de Status.undefined
ui.hideWindowTitlebooleanOculta a barra de título da janela.false
ui.hideTipsbooleanOculta todas as dicas (inicialização e pós-resposta) na UI. Consulte Dicas Contextuais.false
ui.hideBannerbooleanOculta o banner do aplicativo.false
ui.hideFooterbooleanOculta o rodapé da UI.false
ui.showMemoryUsagebooleanExibe informações de uso de memória na UI.false
ui.showLineNumbersbooleanExibe números de linha nos blocos de código na saída da CLI.true
ui.showCitationsbooleanExibe citações para texto gerado no chat.true
ui.compactModebooleanOculta a saída de ferramentas e o pensamento para uma visualização mais limpa. Alterne com Ctrl+O durante uma sessão ou pela caixa de diálogo de Configurações. Os prompts de aprovação de ferramentas nunca são ocultados, mesmo no modo compacto. A configuração persiste entre sessões.false
ui.shellOutputMaxLinesnumberNúmero máximo de linhas de saída do shell exibidas inline. Defina como 0 para desativar o limite e exibir a saída completa. Linhas ocultas são indicadas por +N lines. Erros, comandos iniciados pelo usuário com prefixo !, confirmações de ferramentas e shells embutidos focados sempre exibem a saída completa.5
enableWelcomeBackbooleanExibe a caixa de 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 gerado anteriormente (.qwen/PROJECT_SUMMARY.md) e exibe uma caixa de diálogo permitindo continuar a conversa anterior ou começar do zero. Se você escolher Start new chat session, essa escolha é lembrada para o projeto atual até que o resumo do projeto seja alterado. Este recurso integra-se ao comando /summary e à caixa de diálogo de confirmação de saída.true
ui.accessibility.enableLoadingPhrasesbooleanAtiva frases de carregamento (desative para acessibilidade).true
ui.accessibility.screenReaderbooleanAtiva o modo de leitor de tela, que ajusta a TUI para melhor compatibilidade com leitores de tela.false
ui.customWittyPhrasesarray of stringsUma lista de frases personalizadas para exibir durante estados de carregamento. Quando fornecida, a CLI alternará entre essas frases em vez das padrão.[]
ui.enableFollowupSuggestionsbooleanAtiva sugestões de acompanhamento que preveem o que você deseja digitar a seguir após a resposta do modelo. As sugestões aparecem como texto fantasma e podem ser aceitas com Tab, Enter ou Seta para a Direita.true
ui.enableCacheSharingbooleanUsa consultas bifurcadas com cache para geração de sugestões. Reduz custos em provedores que suportam cache de prefixo (experimental).true
ui.enableSpeculationbooleanExecuta especulativamente sugestões aceitas antes do envio. Os resultados aparecem instantaneamente ao aceitar (experimental).false
experimental.emitToolUseSummariesbooleanGera rótulos curtos baseados em LLM resumindo cada lote de chamadas de ferramenta. Consulte Resumos de Uso de Ferramentas. Requer fastModel configurado; ignorado silenciosamente caso contrário. Pode ser substituído por sessão com QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0 ou =1.true

ide

SettingTypeDescriptionDefault
ide.enabledbooleanAtiva o modo de integração com IDE.false
ide.hasSeenNudgebooleanIndica se o usuário já viu o aviso de integração com IDE.false

privacy

SettingTypeDescriptionDefault
privacy.usageStatisticsEnabledbooleanAtiva a coleta de estatísticas de uso.true

model

SettingTypeDescriptionDefault
model.namestringO modelo Qwen a ser usado para conversas.undefined
model.maxSessionTurnsnumberNúmero máximo de turnos de usuário/modelo/ferramenta a manter em uma sessão. -1 significa ilimitado.-1
model.generationConfigobjectSubstituições avançadas passadas ao gerador de conteúdo subjacente. Suporta controles de requisição como timeout, maxRetries, enableCacheControl, splitToolMedia (defina true para servidores estritamente compatíveis com OpenAI, como LM Studio, que rejeitam conteúdo não textual em mensagens role: "tool" — divide mídia em uma mensagem de usuário de acompanhamento), contextWindowSize (substitui o tamanho da janela de contexto do modelo), modalities (substitui modalidades de entrada detectadas automaticamente), customHeaders (cabeçalhos HTTP personalizados para requisições de API), extra_body (parâmetros adicionais no corpo apenas para requisições de API compatíveis com OpenAI) e reasoning ({ effort: 'low' | 'medium' | 'high' | 'max', budget_tokens?: number } para controlar a intensidade do raciocínio, ou false para desativar; 'max' é uma extensão da DeepSeek — consulte Configuração de raciocínio / pensamento para comportamento por provedor. Nota: quando samplingParams está definido em um provedor compatível com OpenAI, o pipeline envia essas chaves literalmente e o campo reasoning separado de nível superior é descartado — coloque reasoning_effort dentro de samplingParams (ou extra_body) nesse caso), junto com ajustes finos em samplingParams (ex.: temperature, top_p, max_tokens). Deixe não definido para usar os padrões do provedor.undefined
model.chatCompression.contextPercentageThresholdnumberDefine o limite para compressão do histórico de chat como uma porcentagem do limite total de tokens do modelo. É 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 chat exceder 60% do limite de tokens. Use 0 para desativar a compressão completamente.0.7
model.skipNextSpeakerCheckbooleanIgnora a verificação do próximo orador.false
model.skipLoopDetectionbooleanDesativa as verificações de detecção de loop. A detecção de loop previne loops infinitos nas respostas da IA, mas pode gerar falsos positivos que interrompem fluxos de trabalho legítimos. Ative esta opção se você enfrentar interrupções frequentes por falsos positivos.false
model.skipStartupContextbooleanIgnora o envio do contexto do workspace na inicialização (resumo do ambiente e confirmação) no início de cada sessão. Ative se preferir fornecer o contexto manualmente ou quiser economizar tokens na inicialização.false
model.enableOpenAILoggingbooleanAtiva o registro de chamadas de API OpenAI para depuração e análise. Quando ativado, requisições e respostas da API são registradas em arquivos JSON.false
model.openAILoggingDirstringCaminho do diretório personalizado para logs 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, "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 } } } }

max_tokens (tokens de saída adaptativos):

Quando samplingParams.max_tokens não está definido, o Qwen Code usa uma estratégia adaptativa de tokens de saída para otimizar o uso de recursos de GPU:

  1. As requisições começam com um limite padrão de 8K tokens de saída
  2. Se a resposta for truncada (o modelo atinge o limite), o Qwen Code tenta novamente automaticamente com 64K tokens
  3. A saída parcial é descartada e substituída pela resposta completa da nova tentativa

Isso é transparente para os usuários — você pode ver brevemente um indicador de nova tentativa se a escalação ocorrer. Como 99% das respostas têm menos de 5K tokens, a nova tentativa acontece raramente (<1% das requisições).

Para substituir esse comportamento, defina samplingParams.max_tokens nas suas configurações ou use a variável de ambiente QWEN_CODE_MAX_OUTPUT_TOKENS.

contextWindowSize:

Substitui o tamanho padrão da janela de contexto para o modelo selecionado. O Qwen Code determina a janela de contexto usando padrões internos com base na correspondência do nome do modelo, com um valor de fallback constante. Use esta configuração quando o limite de contexto efetivo de um provedor diferir do padrão do Qwen Code. Este valor define a capacidade máxima de contexto assumida pelo modelo, não um limite de tokens por requisição.

modalities:

Substitui 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ão do nome do modelo. Use esta configuração quando a detecção automática estiver incorreta — por exemplo, para ativar pdf para um modelo que o suporta, mas não é reconhecido. Formato: { "image": true, "pdf": true, "audio": true, "video": true }. Omita uma chave ou defina 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 de gateway de API ou quando diferentes modelos exigem cabeçalhos diferentes. Se customHeaders estiver definido em modelProviders[].generationConfig.customHeaders, ele será usado diretamente; caso contrário, os cabeçalhos de model.generationConfig.customHeaders serão usados. Não ocorre mesclagem entre os 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 não cobertas pelos campos de configuração padrão. Nota: Este campo é suportado apenas para provedores compatíveis com OpenAI (openai, qwen-oauth). É ignorado para provedores Anthropic e Gemini. Se extra_body estiver definido em modelProviders[].generationConfig.extra_body, ele será usado diretamente; caso contrário, os valores de model.generationConfig.extra_body serão usados.

Exemplos de model.openAILoggingDir:

  • "~/qwen-logs" - Registra no diretório ~/qwen-logs
  • "./custom-logs" - Registra em ./custom-logs relativo ao diretório atual
  • "/tmp/openai-logs" - Registra no caminho absoluto /tmp/openai-logs

fastModel

SettingTypeDescriptionDefault
fastModelstringModelo usado para gerar sugestões de prompt e execução especulativa. Deixe vazio para usar o modelo principal. Um modelo menor/mais rápido (ex.: qwen3-coder-flash) reduz latência e custo. Também pode ser definido via /model --fast.""

context

SettingTypeDescriptionDefault
context.fileNamestring or array of stringsO nome do(s) arquivo(s) de contexto.undefined
context.importFormatstringO formato a ser usado ao importar memória.undefined
context.includeDirectoriesarrayDiretórios adicionais a incluir no contexto do workspace. Especifica um array de caminhos absolutos ou relativos adicionais a incluir no contexto do workspace. Diretórios ausentes serão ignorados com um aviso por padrão. Caminhos podem usar ~ para referenciar o diretório home do usuário. Esta configuração pode ser combinada com a flag de linha de comando --include-directories.[]
context.loadFromIncludeDirectoriesbooleanControla 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.respectGitIgnorebooleanRespeita arquivos .gitignore durante a busca.true
context.fileFiltering.respectQwenIgnorebooleanRespeita arquivos .qwenignore durante a busca.true
context.fileFiltering.enableRecursiveFileSearchbooleanSe deve ativar a busca recursiva por nomes de arquivos na árvore atual ao completar prefixos @ no prompt.true
context.fileFiltering.enableFuzzySearchbooleanQuando true, ativa recursos de busca fuzzy ao procurar arquivos. Defina como false para melhorar o desempenho em projetos com um grande número de arquivos.true
context.clearContextOnIdle.toolResultsThresholdMinutesnumberMinutos de inatividade antes de limpar o conteúdo antigo de resultados de ferramentas. Use -1 para desativar.60
context.clearContextOnIdle.toolResultsNumToKeepnumberNúmero de resultados de ferramentas compactáveis mais recentes a preservar ao limpar. Mínimo de 1.5

Solução de problemas de desempenho na busca de arquivos

Se você estiver enfrentando problemas de desempenho na busca de arquivos (ex.: com completions @), 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:

  1. Use .qwenignore: Crie um arquivo .qwenignore na raiz do seu projeto para excluir diretórios que contêm um grande número de arquivos que você não precisa referenciar (ex.: artefatos de build, logs, node_modules). Reduzir o número total de arquivos rastreados é a maneira mais eficaz de melhorar o desempenho.
  2. Desative a busca fuzzy: Se ignorar arquivos não for suficiente, você pode desativar a busca fuzzy definindo enableFuzzySearch como false no seu arquivo settings.json. Isso usará um algoritmo de correspondência mais simples e não fuzzy, que pode ser mais rápido.
  3. Desative a busca recursiva de arquivos: Como último recurso, você pode desativar completamente a busca recursiva definindo enableRecursiveFileSearch como false. Esta será a opção mais rápida, pois evita um rastreamento recursivo do seu projeto. No entanto, significa que você precisará digitar o caminho completo dos arquivos ao usar completions @.

tools

SettingTypeDescriptionDefaultNotes
tools.sandboxboolean or stringAmbiente de execução sandbox (pode ser um booleano ou uma string de caminho).undefined
tools.sandboxImagestringURI da imagem sandbox usada pelo Docker/Podman quando --sandbox-image e QWEN_SANDBOX_IMAGE não estão definidos.undefined
tools.shell.enableInteractiveShellbooleanUsa node-pty para uma experiência de shell interativo. O fallback para child_process ainda se aplica.false
tools.corearray of stringsObsoleto. Será removido na próxima versão. Use permissions.allow + permissions.deny em vez disso. Restringe ferramentas integradas a uma lista de permissão. Todas as ferramentas não na lista são desativadas.undefined
tools.excludearray of stringsObsoleto. Use permissions.deny em vez disso. Nomes de ferramentas a excluir da descoberta. Migrado automaticamente para o formato permissions no primeiro carregamento.undefined
tools.allowedarray of stringsObsoleto. Use permissions.allow em vez disso. Nomes de ferramentas que ignoram a caixa de diálogo de confirmação. Migrado automaticamente para o formato permissions no primeiro carregamento.undefined
tools.approvalModestringDefine o modo de aprovação padrão para uso de ferramentas.defaultValores possíveis: plan (apenas analisar, não modificar arquivos ou executar comandos), default (exigir aprovação antes de edições de arquivo ou comandos de shell), auto-edit (aprovar automaticamente edições de arquivo), yolo (aprovar automaticamente todas as chamadas de ferramenta)
tools.discoveryCommandstringComando a executar para descoberta de ferramentas.undefined
tools.callCommandstringDefine um comando de shell personalizado para chamar uma ferramenta específica descoberta usando tools.discoveryCommand. O comando de shell deve atender aos seguintes critérios: Deve aceitar o name da função (exatamente como na declaração da função ) como primeiro argumento de linha de comando. Deve ler os argumentos da função como JSON no stdin, análogo a functionCall.args. Deve retornar a saída da função como JSON no stdout, análogo a functionResponse.response.content.undefined
tools.useRipgrepbooleanUsa ripgrep para busca de conteúdo de arquivo em vez da implementação fallback. Fornece desempenho de busca mais rápido.true
tools.useBuiltinRipgrepbooleanUsa o binário ripgrep embutido. Quando definido como false, o comando rg do sistema será usado. Esta configuração só é efetiva quando tools.useRipgrep é true.true
tools.truncateToolOutputThresholdnumberTrunca a saída da ferramenta se for maior que este número de caracteres. Aplica-se às ferramentas Shell, Grep, Glob, ReadFile e ReadManyFiles.25000Requer reinicialização: Sim
tools.truncateToolOutputLinesnumberNú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.1000Requer reinicialização: Sim
Note

Migração de tools.core / tools.exclude / tools.allowed: Essas configurações legadas estão obsoletas e são migradas automaticamente para o novo formato permissions no primeiro carregamento. Prefira configurar permissions.allow / permissions.deny diretamente. Use /permissions para gerenciar regras interativamente.

memory

SettingTypeDescriptionDefault
memory.enableManagedAutoMemorybooleanAtiva a extração em segundo plano de memórias das conversas.true
memory.enableManagedAutoDreambooleanAtiva a consolidação automática (deduplicação e limpeza) de memórias coletadas.false

Consulte Memória para detalhes sobre como a auto-memória funciona e como usar os comandos /memory, /remember e /dream.

permissions

O sistema de permissões fornece controle granular sobre quais ferramentas podem ser executadas, quais exigem confirmação e quais são bloqueadas.

Prioridade de decisão (maior primeiro): deny > ask > allow > (padrão/modo interativo)

A primeira regra correspondente vence. As regras usam o formato "ToolName" ou "ToolName(specifier)".

SettingTypeDescriptionDefault
permissions.allowarray of stringsRegras para chamadas de ferramenta aprovadas automaticamente (sem necessidade de confirmação). Mescladas em todos os escopos (usuário + projeto + sistema).undefined
permissions.askarray of stringsRegras para chamadas de ferramenta que sempre exigem confirmação do usuário. Tem prioridade sobre allow.undefined
permissions.denyarray of stringsRegras para chamadas de ferramenta bloqueadas. Maior prioridade — substitui tanto allow quanto ask.undefined

Aliases de nome de ferramenta (qualquer um destes funciona nas regras):

AliasCanonical toolNotes
Bash, Shellrun_shell_command
Read, ReadFileread_fileMeta-categoria — veja abaixo
Edit, EditFileeditMeta-categoria — veja abaixo
Write, WriteFilewrite_file
Grep, SearchFilesgrep_search
Glob, FindFilesglob
ListFileslist_directory
WebFetchweb_fetch
Agenttask
Skillskill

Meta-categorias:

Alguns nomes de regra cobrem automaticamente várias ferramentas:

Rule nameTools covered
Readread_file, grep_search, glob, list_directory
Editedit, write_file

[!important] Read(/path/**) corresponde a todas as quatro ferramentas de leitura (leitura de arquivo, grep, glob e listagem de diretório). Para restringir apenas a leitura de arquivo, use ReadFile(/path/**) ou read_file(/path/**).

Exemplos de sintaxe de regras:

RuleMeaning
"Bash"Todos os comandos de shell
"Bash(git *)"Comandos de shell começando com git (limite de palavra: NÃO gitk)
"Bash(git push *)"Comandos de shell como git push origin main
"Bash(npm run *)"Qualquer script npm run
"Read"Todas as operações de leitura de arquivo (read, grep, glob, list)
"Read(./secrets/**)"Lê qualquer arquivo em ./secrets/ recursivamente
"Edit(/src/**/*.ts)"Edita arquivos TypeScript sob a raiz do projeto /src/
"WebFetch(api.example.com)"Busca de api.example.com e todos os seus subdomínios
"mcp__puppeteer"Todas as ferramentas do servidor MCP puppeteer

Prefixos de padrão de caminho:

PrefixMeaningExample
//Caminho absoluto a partir da raiz do sistema de arquivos//etc/passwd
~/Relativo ao diretório home~/Documents/*.pdf
/Relativo à raiz do projeto/src/**/*.ts
./Relativo ao diretório de trabalho atual./secrets/**
(none)Igual a ./secrets/**

Prevenção de bypass de comandos de shell:

As regras de permissão para Read, Edit e WebFetch também são aplicadas quando o agente executa comandos de shell equivalentes. Por exemplo, se Read(./.env) estiver em deny, o agente não poderá contorná-lo via cat .env em um comando de shell. Comandos de shell suportados incluem cat, grep, curl, wget, cp, mv, rm, chmod e muitos mais. Comandos desconhecidos/seguros (ex.: git) não são afetados por regras de arquivo/rede.

Migração de configurações legadas:

Legacy settingEquivalent permissions ruleNotes
tools.allowedpermissions.allowMigrado automaticamente no primeiro carregamento
tools.excludepermissions.denyMigrado automaticamente no primeiro carregamento
tools.corepermissions.allow (allowlist)Migrado automaticamente; ferramentas não listadas são desativadas no nível do registro

Exemplo de configuração:

{ "permissions": { "allow": ["Bash(git *)", "Bash(npm run *)", "Read(//Users/alice/code/**)"], "ask": ["Bash(git push *)", "Edit"], "deny": ["Bash(rm -rf *)", "Read(.env)", "WebFetch(malicious.com)"] } }

[!tip] Use /permissions na CLI interativa para visualizar, adicionar e remover regras sem editar o settings.json diretamente.

slashCommands

Controla quais comandos de barra estão disponíveis na CLI. Útil para restringir a superfície de comandos em implantações multi-tenant ou empresariais.

SettingTypeDescriptionDefault
slashCommands.disabledarray of stringsNomes de comandos de barra a ocultar e recusar execução. Correspondência sem distinção de maiúsculas/minúsculas com o nome final do comando (para comandos de extensão, esta é a forma desambiguada, ex.: myext.deploy). Mesclado como união entre escopos, portanto, configurações de workspace podem adicionar, mas não remover entradas definidas em configurações de usuário ou sistema.undefined

A mesma lista de bloqueio também pode ser fornecida via flag de CLI --disabled-slash-commands (separada por vírgulas ou repetida) e a variável de ambiente QWEN_DISABLED_SLASH_COMMANDS; valores de todas as três fontes são unidos.

Exemplo — restringir integrados para uma implantação em sandbox:

{ "slashCommands": { "disabled": ["auth", "mcp", "extensions", "ide", "quit"] } }

Com esses valores em um settings.json de nível de sistema (/etc/qwen-code/settings.json ou QWEN_CODE_SYSTEM_SETTINGS_PATH), os usuários não podem reduzir a lista de bloqueio do seu próprio escopo, e os comandos desativados não aparecerão no autocomplete nem serão executados quando digitados.

[!note] Esta configuração apenas controla comandos de barra (ex.: /auth, /mcp). Não afeta permissões de ferramentas — consulte permissions.deny para isso. Também não intercepta atalhos de teclado como Ctrl+C ou Esc.

mcp

SettingTypeDescriptionDefault
mcp.serverCommandstringComando para iniciar um servidor MCP.undefined
mcp.allowedarray of stringsUma lista de permissão de servidores MCP a permitir. Permite especificar uma lista de nomes de servidores MCP que devem ser disponibilizados ao modelo. Isso pode ser usado para restringir o conjunto de servidores MCP para conexão. Observe que isso será ignorado se --allowed-mcp-server-names estiver definido.undefined
mcp.excludedarray of stringsUma lista de bloqueio de servidores MCP a excluir. Um servidor listado em ambos mcp.excluded e mcp.allowed é excluído. Observe que isso será ignorado se --allowed-mcp-server-names estiver definido.undefined
Note

Nota de segurança para servidores MCP: Essas configurações usam correspondência simples de string nos nomes dos servidores MCP, que podem ser modificados. Se você é um administrador de sistema buscando impedir que usuários contornem isso, considere configurar mcpServers no nível das configurações do sistema para que o usuário não possa configurar seus próprios servidores MCP. Isso não deve ser usado como um mecanismo de segurança à prova de falhas.

lsp

[!warning] Recurso experimental: O suporte a LSP está atualmente em fase experimental e desativado por padrão. Ative-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 através de arquivos .lsp.json no diretório raiz do seu projeto, não através do settings.json. Consulte a documentação do LSP para detalhes e exemplos de configuração.

security

SettingTypeDescriptionDefault
security.folderTrust.enabledbooleanConfiguração para rastrear se a confiança de pasta está ativada.false
security.auth.selectedTypestringO tipo de autenticação atualmente selecionado.undefined
security.auth.enforcedTypestringO tipo de autenticação obrigatório (útil para empresas).undefined
security.auth.useExternalbooleanSe deve usar um fluxo de autenticação externo.undefined

advanced

SettingTypeDescriptionDefault
advanced.autoConfigureMemorybooleanConfigura automaticamente os limites de memória do Node.js.false
advanced.dnsResolutionOrderstringA ordem de resolução DNS.undefined
advanced.excludedEnvVarsarray of stringsVariáveis de ambiente a excluir do contexto do projeto. Especifica variáveis de ambiente que devem ser excluídas do carregamento de arquivos .env do projeto. Isso impede 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.bugCommandobjectConfiguração para o comando de relatório de bug. Substitui a URL padrão do comando /bug. Propriedades: urlTemplate (string): Uma URL que pode conter placeholders {title} e {info}. Exemplo: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }undefined

mcpServers

Configura conexões com um ou mais servidores Model-Context Protocol (MCP) para descobrir e usar ferramentas personalizadas. O Qwen Code tenta se conectar a cada servidor MCP configurado para descobrir ferramentas disponíveis. Se vários servidores MCP expuserem uma ferramenta com o mesmo nome, os nomes das ferramentas receberão o prefixo do alias do servidor definido na configuração (ex.: serverAlias__actualToolName) para evitar conflitos. Observe que o sistema pode remover certas propriedades de schema das definições de ferramentas MCP para compatibilidade. Pelo menos um de command, url ou httpUrl deve ser fornecido. Se múltiplos forem especificados, a ordem de precedência é httpUrl, depois url, depois command.

PropertyTypeDescriptionOptional
mcpServers.<SERVER_NAME>.commandstringO comando a executar para iniciar o servidor MCP via I/O padrão.Yes
mcpServers.<SERVER_NAME>.argsarray of stringsArgumentos a passar ao comando.Yes
mcpServers.<SERVER_NAME>.envobjectVariáveis de ambiente a definir para o processo do servidor.Yes
mcpServers.<SERVER_NAME>.cwdstringO diretório de trabalho no qual iniciar o servidor.Yes
mcpServers.<SERVER_NAME>.urlstringA URL de um servidor MCP que usa Server-Sent Events (SSE) para comunicação.Yes
mcpServers.<SERVER_NAME>.httpUrlstringA URL de um servidor MCP que usa HTTP streamable para comunicação.Yes
mcpServers.<SERVER_NAME>.headersobjectUm mapa de cabeçalhos HTTP a enviar com requisições para url ou httpUrl.Yes
mcpServers.<SERVER_NAME>.timeoutnumberTimeout em milissegundos para requisições a este servidor MCP.Yes
mcpServers.<SERVER_NAME>.trustbooleanConfiar neste servidor e ignorar todas as confirmações de chamada de ferramenta.Yes
mcpServers.<SERVER_NAME>.descriptionstringUma breve descrição do servidor, que pode ser usada para fins de exibição.Yes
mcpServers.<SERVER_NAME>.includeToolsarray of stringsLista de nomes de ferramentas a incluir deste servidor MCP. Quando especificado, apenas as ferramentas listadas aqui estarão disponíveis deste servidor (comportamento de lista de permissão). Se não especificado, todas as ferramentas do servidor são ativadas por padrão.Yes
mcpServers.<SERVER_NAME>.excludeToolsarray of stringsLista de nomes de ferramentas a excluir deste servidor MCP. 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 em ambas as listas, ela será excluída.Yes

telemetry

Configura registro e coleta de métricas para o Qwen Code. Para mais informações, consulte telemetria.

SettingTypeDescriptionDefault
telemetry.enabledbooleanSe a telemetria está ativada ou não.
telemetry.targetstringO destino para telemetria coletada. Valores suportados são local e gcp.
telemetry.otlpEndpointstringO endpoint para o Exportador OTLP.
telemetry.otlpProtocolstringO protocolo para o Exportador OTLP (grpc ou http).
telemetry.logPromptsbooleanSe deve ou não incluir o conteúdo dos prompts do usuário nos logs.
telemetry.outfilestringO arquivo para gravar a telemetria quando target é local.
telemetry.useCollectorbooleanSe deve usar um coletor OTLP externo.

Exemplo de settings.json

Aqui está um exemplo de um arquivo settings.json com a estrutura aninhada, nova a partir da v0.3.0:

{ "proxy": "http://localhost:7890", "general": { "vimMode": true, "preferredEditor": "code" }, "ui": { "theme": "GitHub", "hideTips": false, "customWittyPhrases": [ "You forget a thousand things every day. Make sure this is one of 'em", "Connecting to AGI" ] }, "tools": { "approvalMode": "yolo", "sandbox": "docker", "sandboxImage": "ghcr.io/qwenlm/qwen-code:0.14.1", "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 home do seu usuário.

  • Local: ~/.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 maneira comum de configurar aplicativos, 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 .qwen/.env, consulte Autenticação.

Tip

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. 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

VariableDescriptionNotes
QWEN_TELEMETRY_ENABLEDDefina como true ou 1 para ativar a telemetria. Qualquer outro valor é tratado como desativação.Substitui a configuração telemetry.enabled.
QWEN_TELEMETRY_TARGETDefine o destino da telemetria (local ou gcp).Substitui a configuração telemetry.target.
QWEN_TELEMETRY_OTLP_ENDPOINTDefine o endpoint OTLP para telemetria.Substitui a configuração telemetry.otlpEndpoint.
QWEN_TELEMETRY_OTLP_PROTOCOLDefine o protocolo OTLP (grpc ou http).Substitui a configuração telemetry.otlpProtocol.
QWEN_TELEMETRY_LOG_PROMPTSDefina como true ou 1 para ativar ou desativar o registro de prompts do usuário. Qualquer outro valor é tratado como desativação.Substitui a configuração telemetry.logPrompts.
QWEN_TELEMETRY_OUTFILEDefine o caminho do arquivo para gravar a telemetria quando o destino é local.Substitui a configuração telemetry.outfile.
QWEN_TELEMETRY_USE_COLLECTORDefina como true ou 1 para ativar ou desativar o uso de um coletor OTLP externo. Qualquer outro valor é tratado como desativação.Substitui a configuração telemetry.useCollector.
QWEN_SANDBOXAlternativa à configuração sandbox no settings.json.Aceita true, false, docker, podman ou uma string de comando personalizada.
QWEN_SANDBOX_IMAGESubstitui a seleção de imagem sandbox para Docker/Podman.Tem precedência sobre tools.sandboxImage.
SEATBELT_PROFILE(Específico do macOS) Alterna o perfil 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 estrito 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 (ex.: my-project/.qwen/sandbox-macos-custom.sb).
DEBUG or DEBUG_MODE(frequentemente usado por bibliotecas subjacentes ou pela própria CLI) Defina como true ou 1 para ativar logs de depuração detalhados, o que pode ser útil 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_COLORDefina para qualquer valor para desativar toda a saída colorida na CLI.
CLI_TITLEDefina como uma string para personalizar o título da CLI.
CODE_ASSIST_ENDPOINTEspecifica o endpoint para o servidor de assistência de código.Isso é útil para desenvolvimento e teste.
QWEN_CODE_MAX_OUTPUT_TOKENSSubstitui o número máximo padrão de tokens de saída por resposta. Quando não definido, o Qwen Code usa uma estratégia adaptativa: começa com 8K tokens e tenta novamente automaticamente com 64K se a resposta for truncada. Defina isso para um valor específico (ex.: 16000) para usar um limite fixo.Tem precedência sobre o padrão limitado (8K), mas é substituído por samplingParams.max_tokens nas configurações. Desativa a escalação automática quando definido. Exemplo: export QWEN_CODE_MAX_OUTPUT_TOKENS=16000
QWEN_CODE_UNATTENDED_RETRYDefina como true ou 1 para ativar o modo de nova tentativa persistente. Quando ativado, erros transitórios de capacidade da API (HTTP 429 Rate Limit e 529 Overloaded) são tentados indefinidamente com backoff exponencial (limitado a 5 minutos por tentativa) e keepalives de heartbeat a cada 30 segundos no stderr.Projetado para pipelines CI/CD e automação em segundo plano onde tarefas de longa duração devem sobreviver a interrupções temporárias da API. Deve ser definido explicitamente — CI=true sozinho não ativa este modo. Consulte Modo Headless para detalhes. Exemplo: export QWEN_CODE_UNATTENDED_RETRY=1
QWEN_CODE_PROFILE_STARTUPDefina como 1 para ativar o perfil de desempenho de inicialização. Grava um relatório de tempo JSON em ~/.qwen/startup-perf/ com durações por fase.Ativo apenas dentro do processo filho do sandbox. Zero overhead quando não definido. Exemplo: export QWEN_CODE_PROFILE_STARTUP=1

Argumentos de Linha de Comando

Argumentos passados diretamente ao executar a CLI podem substituir outras configurações para essa sessão específica.

Para seleção de imagem sandbox, a precedência é: --sandbox-image > QWEN_SANDBOX_IMAGE > tools.sandboxImage > imagem padrão embutida.

Tabela de Argumentos de Linha de Comando

ArgumentAliasDescriptionPossible ValuesNotes
--model-mEspecifica o modelo Qwen a usar nesta sessão.Nome do modeloExemplo: npm start -- --model qwen3-coder-plus
--prompt-pUsado para passar um prompt diretamente ao comando. Isso invoca o Qwen Code em modo não interativo.Seu texto de promptPara exemplos de scripting, use a flag --output-format json para obter saída estruturada.
--prompt-interactive-iInicia uma sessão interativa com o prompt fornecido como entrada inicial.Seu texto de promptO prompt é processado dentro da sessão interativa, não antes dela. Não pode ser usado ao canalizar entrada do stdin. Exemplo: qwen -i "explain this code"
--system-promptSubstitui o prompt de sistema principal embutido da sessão para esta execução.Seu texto de promptArquivos de contexto carregados, como QWEN.md, ainda são anexados após esta substituição. Pode ser combinado com --append-system-prompt.
--append-system-promptAnexa instruções extras ao prompt de sistema principal da sessão para esta execução.Seu texto de promptAplicado após o prompt embutido e arquivos de contexto carregados. Pode ser combinado com --system-prompt. Consulte Modo Headless para exemplos.
--output-format-oEspecifica o formato da saída da CLI para modo não interativo.text, json, stream-jsontext: (Padrão) A saída padrão legível por humanos. json: Uma saída JSON legível por máquina emitida no final da execução. stream-json: Mensagens JSON em streaming emitidas conforme ocorrem durante a execução. Para saída estruturada e scripting, use a flag --output-format json ou --output-format stream-json. Consulte Modo Headless para informações detalhadas.
--input-formatEspecifica o formato consumido da entrada padrão.text, stream-jsontext: (Padrão) Entrada de texto padrão do stdin ou argumentos de linha de comando. stream-json: Protocolo de mensagem JSON via stdin para comunicação bidirecional. Requisito: --input-format stream-json requer --output-format stream-json definido. Ao usar stream-json, o stdin é reservado para mensagens de protocolo. Consulte Modo Headless para informações detalhadas.
--include-partial-messagesInclui mensagens parciais do assistente ao usar o formato de saída stream-json. Quando ativado, emite eventos de stream (message_start, content_block_delta, etc.) conforme ocorrem durante o streaming.Padrão: false. Requisito: Requer --output-format stream-json definido. Consulte Modo Headless para informações detalhadas sobre eventos de stream.
--sandbox-sAtiva o modo sandbox para esta sessão.
--sandbox-imageDefine o URI da imagem sandbox.
--debug-dAtiva o modo de depuração para esta sessão, fornecendo saída mais detalhada.
--all-files-aSe definido, inclui recursivamente todos os arquivos no diretório atual como contexto para o prompt.
--help-hExibe informações de ajuda sobre argumentos de linha de comando.
--show-memory-usageExibe o uso atual de memória.
--yoloAtiva o modo YOLO, que aprova automaticamente todas as chamadas de ferramenta.
--approval-modeDefine o modo de aprovação para chamadas de ferramenta.plan, default, auto-edit, yoloModos suportados: plan: Apenas analisar—não modificar arquivos ou executar comandos. default: Exigir aprovação para edições de arquivo ou comandos de shell (comportamento padrão). auto-edit: Aprovar automaticamente ferramentas de edição (edit, write_file) enquanto solicita para outras. yolo: Aprovar automaticamente todas as chamadas de ferramenta (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-edit
Consulte mais sobre Modo de Aprovação.
--allowed-toolsUma lista separada por vírgulas de nomes de ferramentas que ignorarão a caixa de diálogo de confirmação.Nomes de ferramentasExemplo: qwen --allowed-tools "Shell(git status)"
--disabled-slash-commandsNomes de comandos de barra a ocultar/desativar (separados por vírgulas ou repetidos). Unido com a configuração slashCommands.disabled e a variável de ambiente QWEN_DISABLED_SLASH_COMMANDS. Correspondência sem distinção de maiúsculas/minúsculas com o nome final do comando.Nomes de comandosExemplo: qwen --disabled-slash-commands "auth,mcp,extensions"
--telemetryAtiva telemetria.
--telemetry-targetDefine o destino da telemetria.Consulte telemetria para mais informações.
--telemetry-otlp-endpointDefine o endpoint OTLP para telemetria.Consulte telemetria para mais informações.
--telemetry-otlp-protocolDefine o protocolo OTLP para telemetria (grpc ou http).Padrão para grpc. Consulte telemetria para mais informações.
--telemetry-log-promptsAtiva o registro de prompts para telemetria.Consulte telemetria para mais informações.
--checkpointingAtiva checkpointing.
--acpAtiva o modo ACP (Agent Client Protocol). Útil para integrações com IDE/editor como Zed.Estável. Substitui a flag obsoleta --experimental-acp.
--experimental-lspAtiva o recurso experimental LSP (Language Server Protocol) para inteligência de código (ir para definição, encontrar referências, diagnósticos, etc.).Experimental. Requer que os language servers estejam instalados.
--extensions-eEspecifica uma lista de extensões a usar para a sessão.Nomes de extensõesSe não 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 my-extension -e my-other-extension
--list-extensions-lLista todas as extensões disponíveis e sai.
--proxyDefine o proxy para a CLI.URL do proxyExemplo: --proxy http://localhost:7890.
--include-directoriesInclui diretórios adicionais no workspace para suporte a múltiplos diretórios.Caminhos de diretórioPode ser especificado várias vezes ou como valores separados por vírgulas. Máximo de 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-readerAtiva o modo de leitor de tela, que ajusta a TUI para melhor compatibilidade com leitores de tela.
--versionExibe a versão da CLI.
--openai-loggingAtiva o registro de chamadas de API OpenAI para depuração e análise.Esta flag substitui a configuração enableOpenAILogging no settings.json.
--openai-logging-dirDefine um caminho de diretório personalizado para logs da API OpenAI.Caminho do diretórioEsta flag substitui a configuração openAILoggingDir no settings.json. Suporta caminhos absolutos, caminhos relativos e expansão ~. Exemplo: qwen --openai-logging-dir "~/qwen-logs" --openai-logging

Arquivos de Contexto (Contexto Instrucional Hierárquico)

Embora não sejam estritamente configuração para o comportamento da CLI, os arquivos de contexto (padrão QWEN.md, mas configurável via context.fileName) são cruciais para configurar o contexto instrucional (também chamado de “memória”). Este recurso poderoso permite fornecer instruções específicas do projeto, guias de estilo de código ou qualquer informação de contexto relevante à IA, tornando suas respostas mais adequadas e precisas às suas necessidades. A CLI inclui elementos de UI, como um indicador no rodapé mostrando o número de arquivos de contexto carregados, para mantê-lo informado sobre o contexto ativo.

  • Propósito: Esses arquivos Markdown contêm instruções, diretrizes ou contexto que você deseja que o modelo Qwen conheça durante suas interações. O sistema é projetado para gerenciar esse contexto instrucional de forma hierárquica.

Exemplo de Conteúdo de Arquivo de Contexto (ex.: QWEN.md)

Aqui está um exemplo conceitual do que um arquivo de contexto na raiz de um projeto TypeScript pode conter:

# Project: My Awesome TypeScript Library ## General Instructions: - When generating new TypeScript code, please follow the existing coding style. - Ensure all new functions and classes have JSDoc comments. - Prefer functional programming paradigms where appropriate. - All code should be compatible with TypeScript 5.0 and Node.js 20+. ## Coding Style: - Use 2 spaces for indentation. - Interface names should be prefixed with `I` (e.g., `IUserService`). - Private class members should be prefixed with an underscore (`_`). - Always use strict equality (`===` and `!==`). ## Specific Component: `src/api/client.ts` - This file handles all outbound API requests. - When adding new API call functions, ensure they include robust error handling and logging. - Use the existing `fetchWithRetry` utility for all GET requests. ## Regarding Dependencies: - Avoid introducing new external dependencies unless absolutely necessary. - If a new dependency is required, please state the reason.

Este exemplo demonstra como você pode fornecer contexto geral do projeto, convenções de código específicas e até notas 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 de memória hierárquico carregando arquivos de contexto (ex.: QWEN.md) de vários locais. O conteúdo de arquivos mais abaixo nesta lista (mais específico) normalmente substitui ou complementa o conteúdo de arquivos mais acima (mais geral). A ordem exata de concatenação e o contexto final podem ser inspecionados usando o comando /memory show. A ordem típica de carregamento é:
    1. Arquivo de Contexto Global:
      • Local: ~/.qwen/<configured-context-filename> (ex.: ~/.qwen/QWEN.md no diretório home do seu usuário).
      • Escopo: Fornece instruções padrão para todos os seus projetos.
    2. Arquivos de Contexto da Raiz do Projeto e Ancestrais:
      • Local: A CLI busca o arquivo de contexto configurado no diretório de trabalho atual e depois em cada diretório pai até 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.
  • Concatenação e Indicação na UI: 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, fornecendo 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 @path/to/file.md. Para mais detalhes, consulte a documentação do Processador de Importação de Memória.
  • Comandos para Gerenciamento de Memória:
    • Use /memory refresh para forçar uma nova varredura e recarregamento de todos os arquivos de contexto de todos os locais configurados. Isso atualiza o contexto instrucional da IA.
    • Use /memory show para exibir o contexto instrucional combinado atualmente carregado, permitindo verificar a hierarquia e o conteúdo sendo usado pela IA.
    • Consulte a documentação de Comandos para detalhes completos sobre o comando /memory e seus subcomandos (show e refresh).

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 adaptar as respostas do Qwen Code às suas necessidades e projetos específicos.

Sandbox

O Qwen Code pode executar operações potencialmente inseguras (como comandos de shell e modificações de arquivo) 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 --sandbox ou -s.
  • Definindo a variável de ambiente QWEN_SANDBOX.
  • O sandbox é ativado por padrão ao usar --yolo ou --approval-mode=yolo.

Por padrão, ele usa uma imagem Docker pré-construída qwen-code-sandbox.

Para necessidades de sandbox específicas 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 sandbox base:

FROM qwen-code-sandbox # Add your custom dependencies or configurations here # For example: # RUN apt-get update && apt-get install -y some-package # COPY ./my-config /app/my-config

Quando .qwen/sandbox.Dockerfile existe, você pode usar a variável de ambiente BUILD_SANDBOX ao executar o Qwen Code para construir automaticamente a imagem sandbox personalizada:

BUILD_SANDBOX=1 qwen -s

Estatísticas de Uso

Para nos ajudar a melhorar o Qwen Code, coletamos estatísticas de uso anônimas. Esses dados nos ajudam a entender como a CLI é usada, identificar problemas comuns e priorizar novos recursos.

O que coletamos:

  • Chamadas de Ferramenta: Registramos os nomes das ferramentas chamadas, se foram bem-sucedidas ou falharam e quanto tempo levaram para executar. Não coletamos os argumentos passados às ferramentas nem nenhum dado retornado por elas.
  • Requisições de API: Registramos o modelo usado para cada requisição, a duração da requisição e se foi bem-sucedida. Não coletamos o conteúdo dos prompts ou respostas.
  • Informações da Sessão: Coletamos informações sobre a configuração da CLI, como as ferramentas ativadas 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 Prompt e Resposta: Não registramos o conteúdo dos seus prompts ou as respostas do modelo.
  • Conteúdo de Arquivo: Não registramos o conteúdo de nenhum arquivo lido ou gravado 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 } }
Note

Quando as estatísticas de uso estão ativadas, os eventos são enviados a um endpoint de coleta RUM do Alibaba Cloud.

Last updated on