Conceitos de atualização do GitHub Copilot

A atualização do GitHub Copilot utiliza fluxos de trabalho estruturados para atualizar projetos suportados. Aprenda como o agente utiliza pacotes tecnológicos, cenários, competências, tarefas e estado persistente para planear e validar alterações.

Sugestão

Descreve o resultado que queres em vez de memorizares os nomes dos cenários ou das competências. O agente deteta as tecnologias no seu repositório e seleciona as capacidades relevantes.

O agente como colega de equipa

O agente destaca-se pela colaboração, não pela automação isolada:

  • Conhecimento específico da tecnologia: Os pacotes tecnológicos fornecem fluxos de trabalho de atualização, ferramentas e orientações para linguagens suportadas, frameworks, gestores de pacotes e tipos de projetos.
  • Fluxo de trabalho estruturado: Cada atualização passa por avaliação, planeamento e execução. Sem alterações aleatórias, sem surpresas.
  • Aprende as tuas preferências: Quando dizes "usar sempre tipos explícitos em vez de var", o agente escreve essa preferência e scenario-instructions.md lembra-a entre sessões.
  • Corrigível a meio do voo: Tomaste uma decisão errada? Diz ao agente. Adapta-se e aplica a correção daqui para a frente.
  • Explica o seu raciocínio: Pergunte "por que escolheu essa abordagem?" e o agente guia-o na decisão.

Scenarios

Um cenário é um processo de atualização gerido de ponta a ponta. Por exemplo, "atualizar a minha solução para .NET 10" desencadeia o cenário de atualização da versão .NET. Um pacote tecnológico pode também fornecer um fluxo de trabalho para uma integração especializada, como a validação Dependabot para uma atualização de dependência em JavaScript ou TypeScript.

Como os cenários são descobertos

Não precisas de memorizar nomes de cenários. O agente descobre automaticamente cenários relevantes:

  1. Analisa a sua base de código para perceber que tecnologias está a usar, incluindo linguagem, versão do framework, bibliotecas e tipos de projeto.
  2. Identifica quais os cenários relevantes para os seus projetos.
  3. Classifica os cenários por importância e peso. Os mais relevantes surgem primeiro.

Também pode perguntar diretamente: "Que cenários estão disponíveis para a minha solução?"

Persistência de cenários

Cada cenário ativo tem a sua própria pasta em .github/upgrades/{scenarioId}/. A pasta de cenários contém o plano, progresso da tarefa, as suas preferências e registos de execução. A pasta faz parte do teu repositório Git.

Para fluxos de trabalho disponíveis, veja cenários e competências .NET e capacidades de JavaScript e TypeScript.

O ciclo de vida do fluxo de trabalho

Cada cenário segue o mesmo ciclo de vida: um fluxo de trabalho em três etapas.

Fase 1: Avaliação

O agente reúne tudo o que precisa antes de começar a trabalhar:

  • Estrutura de alvo: A versão para a qual estás a atualizar.
  • Estratégia Git: O agente sugere a ramificação e você controla os detalhes: nome do ramo, uso por tarefa das ramificações e o momento dos commits.
  • Modo de fluxo: Automático (o agente conduz) ou Guiado (aprova cada etapa).
  • Parâmetros específicos do cenário: Dependendo do cenário, o agente pode fazer mais perguntas.

O agente inicializa o espaço de trabalho do cenário em .github/upgrades/{scenarioId}/.

O agente analisa então a sua base de código:

  • Grafo de dependências de projeto (ordem topológica)
  • Compatibilidade de pacotes NuGet com o framework de destino
  • Alterações disruptivas na API
  • Cobertura de testes
  • Complexidade e fatores de risco

O agente guarda um relatório de avaliação exaustivo para assessment.md.

Com base na avaliação, o agente avalia a sua solução e identifica quais as decisões de atualização relevantes. Apresenta padrões sensatos e permite-lhe rever e anular qualquer escolha.

As opções podem incluir:

  • Estratégia de atualização: De baixo para cima, de cima para baixo ou tudo de uma vez.
  • Abordagem de atualização do projeto: Reescrita in-place ou lado a lado para aplicações web; in-place ou multidestino para bibliotecas.
  • Modernização tecnológica: Escolhas para atualização do Entity Framework, injeção de dependências, registo e configuração.
  • Gestão de pacotes: Se e quando adotar a Gestão Central de Pacotes.
  • Gestão de compatibilidade: Como resolver APIs e pacotes não suportados.

O agente guarda as decisões confirmadas para upgrade-options.md.

No modo Guiado, o agente pausa aqui para a sua revisão antes de prosseguir.

Fase 2: Planeamento

O agente cria o plano de tarefa com base na avaliação e nas opções confirmadas. O planeamento produz três ficheiros principais:

  • plan.md: O plano de atualização com estratégia e descrições de tarefas.
  • scenario-instructions.md: As tuas preferências, decisões e a memória do agente.
  • tasks.md — A lista ordenada de tarefas que o agente irá executar.

Fase 3: Execução

O agente trabalha as tarefas sequencialmente. Para cada tarefa em tasks.md, o agente segue um ciclo: iniciar, executar, validar (construir e testar) e concluir. Controla quando e como o agente faz commit de alterações: por tarefa, por grupo de tarefas ou no final. À medida que o agente trabalha, atualiza tasks.md com indicadores de estado ao vivo para que você possa acompanhar o progresso.

Estratégias de melhoria

Durante a fase de avaliação, o agente avalia a sua solução e recomenda uma destas estratégias:

Strategy Melhor para Como funciona
De baixo para cima Soluções grandes com grafos de dependência profundos Começa com projetos de folha (sem dependências), vai subindo.
De cima para baixo Feedback rápido sobre a aplicação principal Começa pelo projeto da aplicação, corrige dependências conforme necessário.
Tudo de uma vez Soluções pequenas e simples Atualiza tudo de uma só vez.

Sugestão

O agente apenas mostra decisões relevantes para o seu projeto. Uma aplicação simples de consola não vê opções de framework web, e um projeto sem Entity Framework não vê opções de atualização de base de dados.

Competências

As competências são capacidades de modernização mais pequenas e direcionadas. Quando o agente encontra o código EF6 durante uma atualização, carrega a competência de EF6 para EF-Core com instruções detalhadas para atualização passo a passo. Invoca uma competência diretamente durante uma atualização: "atualiza os serviços WCF do meu projeto para CoreWCF."

Os pacotes tecnológicos fornecem competências incorporadas organizadas por domínio. Os exemplos incluem:

  • Acesso aos dados: EF6 para EF Core (code-first e EDMX), LINQ para SQL e atualização do SqlClient
  • Web/ASP.NET: Identidade, Global.asax, OWIN, roteamento/filtros/agrupamento MVC e WCF para CoreWCF
  • Serialização: Newtonsoft.Json para System.Text.Json
  • Cloud: Funções do Azure em processo para modelo de trabalhador isolado
  • Bibliotecas: ADAL para MSAL, SignalR, PowerShell SDK e mais
  • JavaScript e TypeScript: atualizações de dependências npm, atualizações do compilador TypeScript, orientação para migração de frameworks e validação em tempo de execução

Competências carregam automaticamente com base no que o agente deteta na tua base de código. Não precisas de gerir a carga de competências. Basta descrever o que precisa.

Para listas específicas de tecnologia, consulte cenários e competências .NET e capacidades de JavaScript e TypeScript.

Tasks

As tarefas são as unidades atómicas de trabalho dentro de um cenário. Cada tarefa representa uma parte específica e limitada da atualização, como "Atualizar o CommonLib de .NET 6 para .NET 10" ou "Atualizar o uso do EF6 em DataLayer para EF Core."

Ciclo de vida da tarefa

As tarefas passam pelos seguintes estados:

  • Disponível: Pronto para começar, todas as dependências cumpridas.
  • Em Progresso: O agente está a trabalhar ativamente na tarefa.
  • Concluído: Alterações de código aplicadas, compilação bem-sucedida, testes bem-sucedidos.

Para cada tarefa, o agente:

  1. Carrega competências e contexto relacionados.
  2. Avalia a complexidade e decide se a tarefa necessita de subtarefas.
  3. Escreve um resumo do escopo para o tasks/{taskId}/task.md.
  4. Executa alterações de código.
  5. Valida ao executar compilações e testes.
  6. Regista os resultados em tasks/{taskId}/progress-details.md.
  7. Regista alterações e passa para a tarefa seguinte.

Gestão do Estado

O agente mantém o estado persistente para que possa parar e retomar a qualquer momento. Tudo está no teu repositório sob .github/upgrades/{scenarioId}/.

Ficheiro Purpose
scenario-instructions.md As suas preferências, decisões e instruções personalizadas. A memória persistente do agente.
upgrade-options.md Decisões confirmadas de atualização
plan.md O plano de melhoria com estratégia e descrições de tarefas
tasks.md Painel visual de progresso que mostra o estado da tarefa
tasks/{taskId}/task.md Âmbito e contexto por tarefa
tasks/{taskId}/progress-details.md Notas e resultados de execução por tarefa

Retomabilidade

Fecha o chat, fecha o teu IDE ou volta no dia seguinte. O agente retoma de onde ficou:

  1. Na sua próxima interação, o agente verifica automaticamente o estado atual do seu espaço de trabalho.
  2. O agente deteta o cenário existente e mostra o progresso atual, como "3 de 8 tarefas concluídas."
  3. O agente deteta tarefas estagnadas (bloqueadas por uma sessão interrompida anterior) e oferece retomar ou reiniciar essas tarefas.
  4. O agente recarrega as tuas preferências a partir de scenario-instructions.md.

Continuidade entre diferentes IDEs

Como o estado está no Git, podes alternar entre VS Code, Visual Studio e Copilot CLI a meio da atualização. A .github/upgrades/ pasta é o estado partilhado que ambos os IDEs compreendem.

Sugestão

Adiciona a .github/upgrades/ pasta à tua ramificação. Empurrem o ramo para um repositório remoto para permitir que os membros da equipa vejam o progresso ou continuem a atualização noutra máquina.

Modos de fluxo

O agente suporta dois modos de fluxo que controlam o grau de supervisão que tem: modo automático e modo guiado.

Modo automático

O agente trabalha em todas as fases (avaliação, planeamento e execução) sem parar para aprovação. Revela descobertas importantes e atualizações de progresso, mas continua a avançar.

Ideal para utilizadores experientes, atualizações simples e pequenas soluções.

Modo guiado

O agente faz uma pausa em cada limite de fase para a sua análise:

  • Após a avaliação: "Aqui está o que encontrei. Devo avançar com as opções de upgrade?"
  • Depois de planear: "Aqui está o plano da tarefa. Queres que comece a execução?"
  • Antes de descomposições complexas de tarefas: "Esta tarefa é complexa. Aqui está como eu dividiria isso."

Ideal para utilizadores iniciantes, soluções complexas e quando queres aprender o processo.

Muda de modo a qualquer momento

  • Diz "pausa" ou "mudar para guiado" para mudar para o modo Guiado.
  • Diz "continuar" ou "avançar" para mudar para o modo Automático.

Sugestão

Começa com o modo Guiado para a tua primeira atualização para perceberes o fluxo de trabalho, depois muda para Automático quando te sentires confortável.