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
- Abra as configurações do VS Code
Pressione Ctrl+, no Windows ou Cmd+, no Mac. Isso abre o editor de configurações. - Pesquise por padrões de exclusão de indexação
Digitegit copilot.advanced indexingExcludePatternsna barra de pesquisa. Essa configuração controla quais arquivos o Copilot pula durante a indexação. - Adicione padrões de exclusão
Clique em Adicionar Item. Insira um padrão glob comonode_modules/para excluir a pasta node_modules. Adicione padrões para outros diretórios grandes, comobuild/,dist/,.next/evendor/. - 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
- Crie um arquivo .copilotignore na raiz do repositório
Abra a pasta raiz do seu repositório. Crie um novo arquivo chamado.copilotignore. - Adicione padrões de exclusão
Escreva padrões glob, um por linha. Por exemplo:node_modules/build/min.jsmapgenerated/
Esses padrões informam ao Copilot para pular esses arquivos durante a indexação. - 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
- 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 desrc/services/payments, abra essa pasta no VS Code. - 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. - 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
- Abra as configurações do VS Code
Pressione Ctrl+, ou Cmd+,. - Pesquise por exclusões de linguagem
Digitegit copilot.advanced indexingExcludeLanguages. - Adicione linguagens para excluir
Clique em Adicionar Item e insira um identificador de linguagem comomarkdown,yamloujson. 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.