GitHub Copilot em Espaços de Trabalho Multi-Raiz no VS Code: Comportamento Explicado
🔍 WiseChecker

GitHub Copilot em Espaços de Trabalho Multi-Raiz no VS Code: Comportamento Explicado

Quando você abre um espaço de trabalho multi-raiz no VS Code, o GitHub Copilot precisa decidir quais arquivos e pastas usar como contexto. O comportamento padrão pode causar confusão porque o Copilot não vê automaticamente todas as pastas do espaço de trabalho. Este artigo explica exatamente como o Copilot lida com espaços de trabalho multi-raiz, como verificar seu comportamento e como ajustar as configurações para que funcione da maneira que você precisa.

Principais Conclusões: Como o Copilot Reage a Múltiplas Pastas Raiz

  • VS Code > Arquivo > Adicionar Pasta ao Espaço de Trabalho: Cada pasta adicionada se torna uma raiz separada. O Copilot vê todos os arquivos abertos em todas as raízes, mas prioriza a raiz do arquivo ativo para contexto.
  • Copilot > Configurações > GitHub Copilot: Habilitar ou Desabilitar por Raiz: Você pode desligar o Copilot para pastas raiz específicas sem afetar as outras.
  • Arquivo de espaço de trabalho (.code-workspace) > settings.json > “github.copilot.enable”: Definir isso como um objeto com caminhos de pasta controla a visibilidade do Copilot por raiz no nível do espaço de trabalho.

O que um Espaço de Trabalho Multi-Raiz Significa para o Copilot

Um espaço de trabalho multi-raiz no VS Code é um espaço de trabalho que contém duas ou mais pastas independentes. Você cria um selecionando Arquivo > Adicionar Pasta ao Espaço de Trabalho ou abrindo um arquivo .code-workspace que lista vários caminhos. Cada pasta tem sua própria árvore de arquivos, configurações e extensões. O Copilot trata a pasta raiz do editor ativo como a fonte de contexto principal. Ele usa arquivos abertos nessa raiz para sugestões, mas também pode referenciar arquivos de outras raízes se estiverem abertos em abas. O Copilot não mescla todas as pastas raiz em um projeto virtual. Isso significa que as sugestões podem ser mais fracas se você espera que o Copilot entenda relações entre arquivos em raízes diferentes.

Como o Copilot Seleciona o Contexto

O Copilot usa a pasta raiz do arquivo ativo no momento para determinar qual contexto de nível de projeto carregar. Por exemplo, se você tem raízes chamadas frontend e backend, e está editando um arquivo em frontend/src/app.js, o Copilot carrega contexto de arquivos em frontend que você tem abertos. Ele não carrega automaticamente arquivos de backend a menos que também estejam abertos em uma aba. O servidor de linguagem e a análise do Copilot são limitados à raiz ativa. Esse comportamento é proposital e corresponde a como o VS Code trata espaços de trabalho multi-raiz para outros recursos de linguagem.

Pré-requisitos

Antes de testar ou configurar o Copilot em um espaço de trabalho multi-raiz, verifique se você tem o seguinte:

  • VS Code versão 1.82 ou posterior (versões anteriores têm suporte limitado a multi-raiz)
  • Extensão GitHub Copilot versão 1.150 ou posterior
  • Uma assinatura ativa do GitHub Copilot (Free, Pro ou Business)
  • Um arquivo .code-workspace se quiser persistir a configuração multi-raiz

Como Verificar o Comportamento do Copilot em um Espaço de Trabalho Multi-Raiz

Você pode verificar qual pasta raiz o Copilot está usando para contexto olhando o ícone da barra de status do Copilot. O ícone mostra o nome da pasta raiz ativa ao passar o mouse. Para verificar o escopo do contexto, abra dois arquivos de raízes diferentes e peça ao Copilot uma sugestão que referencie uma função ou variável na outra raiz. Se a sugestão estiver incompleta ou ausente, o Copilot não viu aquele arquivo.

  1. Abra o ícone de status do Copilot
    Olhe no canto inferior direito do VS Code. O ícone do Copilot mostra um pequeno nome de pasta ao passar o mouse. Esta é a pasta raiz ativa.
  2. Abra arquivos de duas raízes diferentes
    Abra um arquivo da raiz A e um arquivo da raiz B em abas separadas. Certifique-se de que ambas as abas estejam visíveis no editor.
  3. Peça ao Copilot uma sugestão entre raízes
    No arquivo da raiz A, comece a digitar um nome de função que está definido apenas no arquivo da raiz B. Se o Copilot oferecer a conclusão, ele tem contexto de ambos os arquivos abertos.
  4. Feche a aba da raiz B
    Feche o arquivo da raiz B sem salvar. Agora peça ao Copilot novamente a mesma conclusão. Se a sugestão desaparecer, o Copilot não vê mais aquele arquivo.

Configurando o Copilot por Pasta Raiz

Você pode habilitar ou desabilitar o Copilot para pastas raiz específicas. Isso é útil quando uma raiz contém código sensível ou um projeto completamente diferente que você não quer que o Copilot analise.

  1. Abra as configurações do VS Code
    Pressione Ctrl+Virgula para abrir as Configurações. Clique na aba Espaço de Trabalho para aplicar as alterações apenas ao espaço de trabalho atual.
  2. Pesquise por Copilot enable
    Digite “github.copilot.enable” na caixa de pesquisa. A configuração aparece como booleano ou objeto dependendo da sua versão do VS Code.
  3. Defina valores por raiz
    No arquivo settings.json, adicione um objeto com caminhos de pasta como chaves. Exemplo:
    "github.copilot.enable": { "frontend": true, "backend": false }
    Isso habilita o Copilot apenas para a pasta raiz frontend.
  4. Salve o arquivo de espaço de trabalho
    Se você usa um arquivo .code-workspace, adicione a mesma configuração sob a propriedade settings. O Copilot lê essa configuração quando o espaço de trabalho é carregado.

Equívocos Comuns e Limitações

O Copilot Não Mescla Múltiplas Pastas Raiz em Um Único Projeto

Alguns usuários esperam que o Copilot trate todas as pastas raiz como uma única base de código. Não é assim que funciona. O Copilot usa o servidor de linguagem e o índice de arquivos da raiz ativa. Para obter sugestões entre raízes, você deve manter arquivos de ambas as raízes abertos em abas. Não há configuração para mesclar raízes. Se você precisar de contexto completo entre raízes, considere usar uma única pasta raiz que contenha todos os subprojetos, ou use links simbólicos.

O Arquivo .code-workspace Deve Ser Salvo para que as Configurações por Raiz Persistam

Se você adicionar pastas a um espaço de trabalho sem salvar o arquivo .code-workspace, o VS Code trata o espaço de trabalho como não salvo. As configurações que você definir na aba Espaço de Trabalho são perdidas ao fechar o VS Code. Sempre salve o arquivo de espaço de trabalho selecionando Arquivo > Salvar Espaço de Trabalho Como. Nomeie-o de forma significativa, como projeto.code-workspace.

O Copilot Chat Usa o Mesmo Escopo de Raiz

O painel do Copilot Chat também limita seu contexto à pasta raiz ativa. Quando você faz uma pergunta no Chat, ele vê apenas arquivos da raiz que contém o editor ativo. Se quiser que o Chat analise uma raiz diferente, clique em um arquivo dessa raiz primeiro. Isso se aplica tanto ao chat inline quanto ao chat da barra lateral.

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

Item Espaço de Trabalho de Raiz Única Espaço de Trabalho Multi-Raiz
Escopo do contexto Pasta raiz inteira Apenas a pasta raiz ativa
Conclusões entre pastas Todos os arquivos na raiz estão disponíveis Apenas arquivos abertos de outras raízes estão disponíveis
Habilitar/desabilitar por pasta Não aplicável Suportado via objeto github.copilot.enable
Arquivo de configurações do espaço de trabalho .code-workspace opcional Necessário para configurações por raiz persistentes
Escopo do Copilot Chat Raiz única Raiz ativa

Agora você entende como o GitHub Copilot se comporta em um espaço de trabalho multi-raiz. Verifique a raiz ativa usando o ícone da barra de status. Mantenha arquivos de diferentes raízes abertos se precisar de conclusões que abranjam várias pastas. Use a configuração github.copilot.enable no seu arquivo .code-workspace para desligar o Copilot para raízes específicas. Para uma integração mais profunda, considere reestruturar seu projeto em uma única raiz com subdiretórios claros. Essa abordagem dá ao Copilot o contexto mais amplo e as sugestões mais precisas.