Indexação do GitHub Copilot em Repositórios Grandes: Como Acelerar
🔍 WiseChecker

Indexação do GitHub Copilot em Repositórios Grandes: Como Acelerar

Ao abrir um repositório grande, o GitHub Copilot pode demorar muito para indexar arquivos antes de começar a sugerir código. Esse atraso ocorre porque o Copilot constrói um índice de contexto local para entender seu código. O processo de indexação varre todos os arquivos, o que pode ser lento em repositórios com milhares de arquivos ou diretórios enormes. Este artigo explica por que a indexação é lenta em repositórios grandes e fornece etapas concretas para acelerá-la.

Principais Conclusões: Acelerar a Indexação do GitHub Copilot

  • settings.json do VS Code > git copilot.advanced indexingExcludePatterns: Exclua diretórios grandes ou irrelevantes da indexação para reduzir o tempo de varredura.
  • Arquivo .copilotignore na raiz do repositório: Defina padrões para ignorar arquivos como node_modules, saídas de build e código gerado.
  • Status do Copilot na barra de status do VS Code: Verifique o progresso da indexação e reinicie se estiver travado para evitar espera indefinida.

Por que a Indexação do GitHub Copilot é Lenta em Repositórios Grandes

A indexação do GitHub Copilot constrói um índice vetorial local do seu código para fornecer sugestões com contexto. Ao abrir um repositório, o Copilot varre todos os arquivos no workspace. Para repositórios grandes com dezenas de milhares de arquivos, essa varredura pode levar vários minutos. O índice é reconstruído cada vez que você abre a pasta ou quando alterações em arquivos são detectadas.

O principal gargalo é a E/S do sistema de arquivos. Escanear cada arquivo e ler seu conteúdo para indexação consome CPU e recursos de disco. Repositórios com grandes arquivos binários, JavaScript minificado ou código gerado agravam o problema porque o Copilot ainda tenta indexá-los. Além disso, o índice é armazenado localmente e pode precisar ser reconstruído se o repositório for clonado novamente ou se a extensão do Copilot for atualizada.

O Copilot não indexa arquivos ignorados pelo seu sistema de controle de versão. No entanto, muitos desenvolvedores não configuram o .gitignore corretamente, deixando pastas grandes como node_modules ou artefatos de build no workspace. O Copilot indexa esses por padrão, a menos que você os exclua explicitamente.

Etapas para Acelerar a Indexação do GitHub Copilot

Método 1: Excluir Diretórios nas Configurações do VS Code

  1. Abra as configurações do VS Code
    Pressione Ctrl+, no Windows ou Cmd+, no Mac. Isso abre o editor de configurações.
  2. Pesquise por padrões de exclusão de indexação
    Digite git copilot.advanced indexingExcludePatterns na barra de pesquisa. Essa configuração controla quais arquivos o Copilot pula durante a indexação.
  3. Adicione padrões de exclusão
    Clique em Adicionar Item. Insira um padrão glob como node_modules/ para excluir a pasta node_modules. Adicione padrões para outros diretórios grandes, como build/, dist/, .next/ e vendor/.
  4. Salve e recarregue a janela
    Feche a aba de configurações. Recarregue a janela do VS Code pressionando Ctrl+Shift+P e executando Desenvolvedor: Recarregar Janela. O Copilot reindexa usando a nova lista de exclusão.

Método 2: Usar um Arquivo .copilotignore

  1. Crie um arquivo .copilotignore na raiz do repositório
    Abra a pasta raiz do seu repositório. Crie um novo arquivo chamado .copilotignore.
  2. Adicione padrões de exclusão
    Escreva padrões glob, um por linha. Por exemplo:
    node_modules/
    build/
    min.js
    map
    generated/
    Esses padrões informam ao Copilot para pular esses arquivos durante a indexação.
  3. Salve o arquivo e reinicie o Copilot
    Salve o arquivo .copilotignore. Abra a Paleta de Comandos com Ctrl+Shift+P e pesquise por GitHub Copilot: Reiniciar Copilot. Clique para forçar uma reindexação com as novas regras de ignorar.

Método 3: Reduzir o Escopo do Workspace

  1. Abra apenas a subpasta necessária
    Em vez de abrir o repositório inteiro, abra uma subpasta que contenha o código que você está editando ativamente. Por exemplo, se você trabalha em um serviço dentro de src/services/payments, abra essa pasta no VS Code.
  2. Use workspaces multi-raiz
    Se precisar de acesso a várias partes do repositório, crie um arquivo de workspace que inclua apenas as pastas relevantes. Vá em Arquivo > Adicionar Pasta ao Workspace e selecione apenas os diretórios necessários. O Copilot indexa apenas as pastas adicionadas.
  3. Salve o arquivo de workspace
    Salve o workspace como um arquivo .code-workspace. Na próxima vez que abri-lo, o Copilot indexará apenas as pastas selecionadas.

Método 4: Desabilitar a Indexação para uma Linguagem Específica

  1. Abra as configurações do VS Code
    Pressione Ctrl+, ou Cmd+,.
  2. Pesquise por exclusões de linguagem
    Digite git copilot.advanced indexingExcludeLanguages.
  3. Adicione linguagens para excluir
    Clique em Adicionar Item e insira um identificador de linguagem como markdown, yaml ou json. O Copilot pula arquivos dessas linguagens durante a indexação. Isso é útil para repositórios com muitos arquivos de documentação ou configuração.

Se o Copilot Ainda Tiver Indexação Lenta Após a Correção Principal

Barra de progresso da indexação mostra 0% por minutos

O Copilot pode travar se o arquivo de índice estiver corrompido. Abra a Paleta de Comandos e execute GitHub Copilot: Reiniciar Copilot. Se isso não ajudar, execute Desenvolvedor: Recarregar Janela para forçar uma reconstrução do índice.

Sugestões do Copilot estão ausentes ou genéricas apesar da indexação

O índice pode estar incompleto se o repositório contiver links simbólicos ou arquivos fora do workspace. Certifique-se de que todos os seus arquivos de código estejam dentro da pasta aberta. Verifique também se o arquivo .copilotignore não exclui acidentalmente diretórios de código fonte como src/.

Indexação reinicia toda vez que você muda de branch

Ao mudar de branch, os timestamps dos arquivos mudam. O Copilot detecta essas alterações e reindexa os arquivos modificados. Para reduzir isso, certifique-se de ter um .gitignore estável que exclua arquivos gerados. Você também pode desabilitar a indexação automática para arquivos grandes gerados adicionando-os ao .copilotignore.

Desempenho da Indexação do Copilot: Padrão vs Otimizado

Item Configuração Padrão Configuração Otimizada
Escopo da indexação Todos os arquivos no workspace Apenas arquivos de código fonte, excluindo node_modules, build e arquivos gerados
Tempo de indexação para 50k arquivos 5-10 minutos 30 segundos a 2 minutos
Método de exclusão Nenhum por padrão Arquivo .copilotignore ou padrões nas configurações do VS Code
Suporte a linguagens Todas as linguagens indexadas Apenas linguagens relevantes incluídas
Reindexação ao mudar de branch Reindexação completa Reindexação parcial apenas para arquivos alterados

Agora você pode reduzir o tempo de indexação do Copilot em repositórios grandes excluindo diretórios e arquivos irrelevantes. Comece criando um arquivo .copilotignore na raiz do repositório com padrões para node_modules, build e código gerado. Em seguida, ajuste as configurações do VS Code para excluir linguagens que você não precisa. Para mono-repos, abra apenas a subpasta em que você está trabalhando para limitar o escopo da indexação. Um .copilotignore bem configurado pode reduzir o tempo de indexação de vários minutos para menos de um minuto.