Partilhar via


Conceitos de modernização do GitHub Copilot

A modernização do GitHub Copilot utiliza uma abordagem estruturada para atualizar e migrar projetos .NET. Compreender como o agente trabalha, incluindo os seus cenários, competências, tarefas e fluxo de trabalho, ajuda-o a colaborar eficazmente com ele e a obter os melhores resultados.

Sugestão

Pense no agente como um colega experiente que compreende profundamente o .NET, segue um plano estruturado e se adapta ao seu feedback. Quanto mais contexto deres, melhor será o desempenho do agente.

O agente como colega de equipa

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

  • Conhecimento profundo de .NET: O agente compreende ficheiros de projeto, dependências do NuGet, alterações significativas e padrões de migração em dezenas de tecnologias .NET tanto para projetos C# como Visual Basic.
  • 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.

Cenários

Um cenário é um fluxo de trabalho de modernização gerido de ponta a ponta. Quando dizes ao agente "atualiza a minha solução para .NET 10", estás a desencadear o cenário .NET version upgrade.

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 uma lista completa de cenários, consulte Cenários e referência de habilidades.

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 migração do projeto: Reescrita no próprio local ou paralelamente para aplicações web; no próprio local ou multialvo para bibliotecas.
  • Modernização tecnológica: Escolhas para migraçã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:

Estratégia 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 simples aplicação de consola não vê opções de web framework, e um projeto sem Entity Framework não vê opções de migração de base de dados.

Competências

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

O agente vem com 30+ competências incorporadas organizadas por domínio:

  • Acesso aos dados: EF6 para EF Core (code-first e EDMX), LINQ para SQL e migração para 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

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 a lista completa, consulte Cenários e referência de competências.

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 "Migrar o uso de 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
execution-log.md Registo detalhado de todas as alterações e decisões
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.