Como Usar o GitHub Copilot em Espaços de Trabalho Multi-Raiz do VS Code com Pilhas Mistas
🔍 WiseChecker

Como Usar o GitHub Copilot em Espaços de Trabalho Multi-Raiz do VS Code com Pilhas Mistas

Você trabalha em um espaço de trabalho multi-raiz do VS Code onde cada pasta usa uma linguagem e framework diferentes. Por exemplo, uma pasta executa uma API Node.js e outra executa um pipeline de dados Python. O GitHub Copilot pode ajudar em todas as pastas, mas pode sugerir código que não corresponde à linguagem ou às convenções do projeto do arquivo ativo. Isso acontece porque o Copilot lê o contexto de todo o espaço de trabalho, incluindo arquivos de pilhas não relacionadas. Este artigo explica como configurar o Copilot para respeitar os limites das pastas, como usar configurações no escopo do espaço de trabalho e como evitar contaminação entre pilhas em espaços de trabalho multi-raiz com pilhas de tecnologia mistas.

Principais Conclusões: Configurando o Copilot para Espaços de Trabalho Multi-Raiz

  • settings.json do VS Code por pasta: Substitua as configurações do Copilot como github.copilot.enable no nível da pasta para desabilitar o Copilot para pilhas específicas.
  • .gitignore no nível do espaço de trabalho: Exclua arquivos de pilhas não relacionadas para evitar que o Copilot os leia como contexto.
  • Sugestões inline do Copilot: Use Ctrl+Enter para abrir o painel de conclusões do Copilot e revisar sugestões apenas do arquivo atual.

ADVERTISEMENT

Por que o Copilot Pode Sugerir Código Irrelevante em Espaços de Trabalho Multi-Raiz

O GitHub Copilot gera sugestões com base em todo o espaço de trabalho aberto. Em um espaço de trabalho multi-raiz, cada pasta e cada arquivo que não é excluído se torna parte do contexto. Quando você edita um arquivo Python, o Copilot pode olhar para arquivos JavaScript de outra pasta e produzir sugestões que misturam sintaxe ou padrões de importação. Essa contaminação entre pilhas ocorre porque o Copilot não sabe automaticamente qual pasta é seu projeto atual. Ele trata todos os arquivos abertos como contexto relevante.

A extensão do Copilot lê as abas abertas, o arquivo ativo e arquivos no mesmo diretório. Ela também lê arquivos de outras pastas no espaço de trabalho se eles estiverem abertos ou se forem referenciados por importações. Em um espaço de trabalho com pilhas mistas, um arquivo Python pode importar um módulo que não está presente na pasta JavaScript, mas o Copilot ainda pode ver código JavaScript e sugerir assinaturas de função incorretas. A causa raiz é a falta de escopo no nível da pasta no mecanismo de contexto do Copilot.

Fatores adicionais incluem a configuração github.copilot.enable, que é global por padrão, e o arquivo .gitignore do espaço de trabalho, que não afeta o Copilot. Você deve dizer explicitamente ao Copilot quais arquivos e pastas ignorar ou desabilitá-lo por linguagem.

Passos para Configurar o Copilot por Pasta em um Espaço de Trabalho Multi-Raiz

  1. Crie ou abra seu arquivo de espaço de trabalho multi-raiz
    No VS Code, vá em Arquivo > Salvar Espaço de Trabalho Como para criar um arquivo .code-workspace. Este arquivo contém a lista de pastas raiz e configurações no nível do espaço de trabalho.
  2. Adicione configurações no nível da pasta para o Copilot
    Abra o arquivo .code-workspace. Dentro do objeto settings, adicione uma entrada github.copilot.enable com substituições por pasta. Use o nome da pasta como chave. Exemplo:
    "settings": {
    "[python]": {
    "github.copilot.enable": true
    },
    "[javascript]": {
    "github.copilot.enable": false
    }
    }

    Isso desabilita o Copilot para arquivos JavaScript enquanto o mantém ativo para arquivos Python.
  3. Desabilite o Copilot para linguagens específicas globalmente
    Se você quiser desabilitar o Copilot para uma linguagem inteira em todas as pastas, use a configuração github.copilot.enable com identificadores de linguagem. Abra as Configurações do VS Code (Ctrl+,), pesquise por github.copilot.enable e edite o JSON para incluir "typescript": false ou "go": false.
  4. Exclua pastas do contexto do Copilot
    Adicione uma configuração files.exclude no arquivo de espaço de trabalho para ocultar pastas inteiras do explorador de arquivos. O Copilot não lê arquivos que estão excluídos do espaço de trabalho. Exemplo:
    "files.exclude": {
    "/node_modules": true,
    "
    /python_env": true
    }

    Isso impede que o Copilot use arquivos dentro de node_modules ou python_env como contexto.
  5. Use um arquivo .copilotignore
    Crie um arquivo .copilotignore na raiz de cada pasta. Este arquivo usa a mesma sintaxe que .gitignore. O Copilot não lerá arquivos ou pastas listados em .copilotignore. Exemplo para uma pasta JavaScript:
    # .copilotignore
    node_modules/
    dist/
    log

    Coloque este arquivo na raiz da pasta JavaScript. O Copilot ignora esses caminhos ao gerar sugestões.
  6. Reinicie o Copilot após alterações de configuração
    Abra a Paleta de Comandos (Ctrl+Shift+P), pesquise por Desenvolvedor: Recarregar Janela e pressione Enter. Isso recarrega todas as extensões e configurações, incluindo a configuração do Copilot por pasta.

ADVERTISEMENT

Se o Copilot Ainda Mostrar Sugestões Irrelevantes

Copilot usa código da pasta errada em sugestões inline

Se o Copilot mostrar uma sugestão que contém importações ou funções de outra pasta, feche todos os arquivos dessa pasta. O Copilot lê as abas abertas. Com apenas o arquivo ativo aberto, o Copilot tem menos contexto entre pilhas. Em seguida, pressione Ctrl+Enter para abrir o painel de conclusões do Copilot. Este painel mostra várias sugestões. Selecione a que corresponde à sua linguagem atual.

Copilot sugere chamadas de API obsoletas ou incorretas

Quando você tem várias versões da mesma biblioteca em pastas diferentes, o Copilot pode escolher a versão errada. Por exemplo, uma pasta Python usa Flask 2.0 e outra usa Flask 3.0. Adicione a configuração github.copilot.advanced no arquivo de espaço de trabalho para limitar o número de arquivos que o Copilot lê. Defina github.copilot.advanced.maxTokens para um valor mais baixo para reduzir o tamanho do contexto. Isso não corrige completamente a incompatibilidade de versão. A melhor solução é usar um ambiente virtual por pasta e excluir os site-packages da outra pasta usando .copilotignore.

Copilot para de funcionar em uma pasta após desabilitá-lo em outra

Isso acontece quando você define github.copilot.enable como false globalmente em vez de por linguagem. Verifique seu arquivo user settings.json. Se você vir "github.copilot.enable": false no nível superior, remova-o. Use a substituição por linguagem conforme mostrado no Passo 2 acima. Em seguida, recarregue a janela.

GitHub Copilot em Espaços de Trabalho Multi-Raiz vs Espaços de Trabalho de Pasta Única: Principais Diferenças

Item Espaço de Trabalho Multi-Raiz Espaço de Trabalho de Pasta Única
Escopo do contexto Todas as pastas e arquivos abertos Apenas a pasta única e seus arquivos
Configurações por pasta Suportado via arquivo .code-workspace Não aplicável
Isolamento de linguagem Manual via .copilotignore ou github.copilot.enable Automático porque existe apenas uma pilha de linguagem
Painel de conclusões do Copilot Mostra sugestões de todas as pastas, a menos que filtrado Mostra sugestões da pasta única
Complexidade de configuração Maior: deve definir substituições por pasta ou por linguagem Menor: configurações globais funcionam

Agora você pode configurar o GitHub Copilot para funcionar corretamente em espaços de trabalho multi-raiz com pilhas mistas. Aplique configurações por pasta no arquivo .code-workspace, use .copilotignore para excluir arquivos não relacionados e feche abas de outras pilhas ao editar. Para isolamento avançado, combine regras de desabilitação por linguagem com exclusões no nível da pasta. Isso impede que o Copilot sugira código que mistura sintaxe Python e JavaScript na mesma conclusão.

ADVERTISEMENT