Arbeta med moderniseringen av GitHub Copilot

Den här artikeln beskriver hur du kommunicerar med GitHub Copilot moderniseringsagenten, lär den dina inställningar, korrigerar misstag, granskar dess arbete och hanterar uppgraderingar över flera sessioner.

GitHub Copilot modernisering är en interaktiv medarbetare som ställer frågor, föreslår strategier, anpassar sig till din feedback och lär sig av dina preferenser över tid. För att få bästa resultat, ge agenten sammanhang. Ju mer den vet om dina mål, begränsningar och inställningar, desto bättre presterar den.

❌ Vague — the agent has to guess
"Upgrade my project"

✅ Specific — the agent knows exactly what you need
"Upgrade the WebAPI project to .NET 10. We need to keep backward
compatibility with our existing REST clients, and we can't change the
public API surface."

Tips/Råd

Du behöver inte ge alla kontexter i förväg. Agenten ställer uppföljningsfrågor när den behöver mer information.

Starta en konversation

  1. Öppna Copilot Chat i VS Code, Visual Studio eller Copilot CLI.
  2. Välj GitHub Copilot moderniseringsagenten för .NET från agentväljaren eller ange rätt agentomnämnande för din miljö: @modernize-dotnet i VS Code och Copilot CLI, eller @Modernize i Visual Studio.
  3. Beskriv vad du vill åstadkomma på naturligt språk.

Vad du ska säga

Naturligt språk fungerar. Prova följande exempel:

Vad du vill ha Vad du ska säga
Uppgradera en fullständig lösning "Uppgradera min lösning till .NET 10"
Uppgradera en specifik teknik "Hjälp mig att uppgradera från EF6 till EF Core"
Se vad som är tillgängligt "Vilka scenarier är tillgängliga?"
Uppgradera ett projekt först "Uppgradera API-projektet först och sedan det delade biblioteket"
Förstå det aktuella tillståndet "Vad är den aktuella statusen för min uppgradering?"

Vad händer härnäst

När du startar en konversation söker agenten efter befintligt uppgraderingsarbete på din arbetsyta:

  • Om det inte finns något befintligt arbete börjar agenten på nytt, vanligtvis med en utvärdering av din lösning.
  • Om det pågår ett befintligt arbete fortsätter agenten där du slutade och visar aktuell status, till exempel "3 av 8 slutförda uppgifter".

Välj ett flödesläge

Agenten stöder två flödeslägen som styr hur mycket agenten pausar för dina indata.

Automatiskt läge

I automatiskt läge arbetar agenten genom stegen (utvärdering, planering, körning) utan att pausa för godkännande vid varje gräns. Agenten stannar fortfarande vid verkliga hinder eller när den behöver ett beslut som endast du kan fatta.

Bäst för erfarna användare, enkla uppgraderingar och små lösningar.

Vägledningsläge

I guidat läge pausar agenten vid varje steggräns för din granskning:

  • Efter utvärderingen, innan du skapar planen.
  • Efter planeringen, innan du utför några uppdrag.
  • Innan komplexa aktivitetsuppdelningar.
  • Vid viktiga beslutspunkter där det finns flera giltiga metoder.

Bäst för förstagångsanvändare, komplexa lösningar och när du vill lära dig processen.

Växla lägen mitt i sessionen

Växla fritt mellan lägen när som helst:

Växla till Vad du ska säga
Vägledningsläge "Pausa" eller "Växla till guidat läge"
Automatiskt läge "Fortsätt" eller "Fortsätt"

Tips/Råd

Börja med guidat läge för din första uppgradering. Guidat läge är det bästa sättet att lära sig hur agenten tänker och vilka beslut den fattar. Växla till automatiskt läge när du är bekväm.

Lär agenten

Agenten lär sig av dig. Agenten sparar dina korrigeringar, inställningar och instruktioner i scenario-instructions.md mappen för uppgraderingstillstånd. De här inställningarna bevaras mellan sessioner.

Korrigera misstag

När agenten fattar ett beslut som du inte håller med om säger du till agenten:

You: "Actually, don't use Newtonsoft.Json — we're standardizing on System.Text.Json."
Agent: "Got it. I'll use System.Text.Json for all serialization going forward.
        I've saved this as a preference."

Agenten uppdaterar scenario-instructions.md och gör inte samma val igen, inte ens i framtida sessioner.

Gör inställningar

Berätta proaktivt för agenten hur du gillar saker som görs:

You: "Always use bottom-up strategy for this solution — upgrade leaf projects first."
Agent: "Noted. I'll use a bottom-up upgrade strategy, starting with projects that
        have no internal dependencies and working up to the top-level projects."

Ge uppgiftsspecifika instruktioner

Ibland gäller en inställning endast för en specifik uppgift:

You: "For this task, skip the test validation — the tests are broken for a known
      reason and we'll fix them separately."
Agent: "Understood. I'll skip test validation for this task only."

Vad agenten sparar

Filen scenario-instructions.md är uppdelad i tydliga avsnitt:

Avsnitt Vad den innehåller Exempel
Användarinställningar (teknisk) Paketval, ramverksbeslut, kodningsmönster "Använd System.Text.Json, inte Newtonsoft"
Användarinställningar (exekveringsstil) Så här fungerar agenten "Använd alltid bottom-up-strategi"
Nyckelbeslutslogg Viktiga beslut och deras motivering "Välj EF Core framför Dapper eftersom..."
Anpassade instruktioner per aktivitet Aktivitetsspecifika åsidosättningar "Hoppa över tester för uppgift 3.1"

Tips/Råd

Redigera även scenario-instructions.md direkt. Det är en Markdown-fil i .github/upgrades/{scenarioId}/. Agenten läser filen i början av varje interaktion.

Gör korrigeringar mitt i sessionen

Agenten hanterar avbrott på ett smidigt sätt och tappar inte reda på där det är eller vad det gjorde.

Pausa och granska

You: "Wait, stop — let me review that change first."
Agent: "Here's what I was about to do: [describes planned changes].
        Would you like me to proceed, or adjust the approach?"

Omdirigera

You: "Actually, let's do Project B before Project A — it has fewer dependencies."
Agent: "Good call. I'll reorder the tasks and start with Project B."

Undo

You: "That last change broke the build. Can we revert it?"
Agent: "I'll revert the last commit (abc1234: 'Migrate auth middleware').
        Reverting now."

Återställ dessutom ändringar själv med hjälp av vanliga Git-kommandon. Agenten skriver tydliga, beskrivande commit-meddelanden så att du vet exakt vad som har förändrats i varje commit.

Ställ frågor mitt i flödet

Att ställa frågor spårar inte ur arbetsflödet:

You: "Why did you choose to migrate the data layer before the API controllers?"
Agent: "The API controllers depend on the data layer interfaces. By migrating
        the data layer first, we avoid temporary compilation errors in the
        controllers and can validate each layer independently."

Granska agentens arbete

Agenten tillhandahåller flera sätt att granska sitt arbete.

Källkontroll

Agenten föreslår att du arbetar med en separat gren och genomför ändringar när den fungerar. Granska agentens ändringar med vanliga Git-kommandon:

git log --oneline -10
git diff main..<agent-branch>

Arbetsflödesfiler

Agenten har flera filer i .github/upgrades/{scenarioId}/ som ger dig fullständig insyn:

Arkiv Vad det visar
tasks.md Översikt över visuellt förlopp med alla uppgifter, statusindikatorer (✅ gjorda, 🔄 pågår, ⬜ väntar) och en förloppsindikator
execution-log.md Slutför kronologisk granskningslogg för varje åtgärd som agenten vidtog, när och vad som hände
assessment.md Den inledande analysen av din lösning, inklusive beroenden, kompatibilitetsbrytande ändringar och uppgraderingskomplexitet
scenario-instructions.md Dina inställningar och agentens inlärda beslut
tasks/{taskId}/progress-details.md Information per uppgift: kompileringsfel påträffades, hur de löstes, testresultat och beslut som fattats

Återuppta avbrutet arbete

Stäng chatten eller stäng din IDE. Agenten hanterar den här situationen sömlöst.

Agenten lagrar alla tillstånd i .github/upgrades/ inne i din lagringsplats. När du startar en ny konversation kontrollerar agenten det aktuella tillståndet och vet omedelbart:

  • Vilket scenario är aktivt.
  • Vilka uppgifter som slutförs, pågår eller väntar.
  • Vilka artefakter finns (utvärdering, plan, uppgiftsfiler).
  • Om några aktiviteter verkar inaktuella (har fastnat i 🔄 status från en tidigare session).

Identifiering av inaktuell uppgift

Om en aktivitet pågår från en tidigare session identifierar agenten att aktiviteten kan vara inaktuell och erbjuder alternativ för att fortsätta, starta om eller hoppa över.

Tips/Råd

Eftersom tillståndet finns i .github/upgrades/ i ditt repo, färdas det med din kod. Pusha din branch till en fjärrserver, dra in den på en annan dator, och agenten fortsätter precis där du slutade.

Arbeta över flera sessioner

Stora uppgraderingar, till exempel en 20-projektlösning, en komplex ramverksuppgradering eller en modernisering i flera steg, sträcker sig ofta över flera sessioner under dagar eller veckor. Agenten hanterar arbete med flera sessioner naturligt:

  • Beständiga tillstånd: Allt finns i .github/upgrades/. Inget minnesinternt tillstånd att förlora.
  • Sessionsberoende: Varje chattsession är oberoende. Agenten rekonstruerar sin kontext från tillståndsfilerna varje gång.
  • Cross-IDE-stöd: Starta i VS Code, fortsätt i Visual Studio eller Copilot CLI. Statusmappen är det delade kontraktet.

Tips för arbete med flera sessioner

  • Kommitta tillståndsmappen. Pusha .github/upgrades/ till din branch för att säkerhetskopiera och göra mappen synlig för ditt team.
  • Granska mellan sessioner. Läs tasks.md och execution-log.md för att fräscha upp ditt minne om vad som hände under den senaste sessionen.
  • Uppdatera inställningar när du lär dig. Om du upptäcker något i testningen som bör ändra agentens metod kan du berätta för agenten i början av nästa session.

Be om hjälp

Vet du inte vad agenten kan göra eller var saker och ting står? Fråga:

Vad du vill veta Vad du ska säga
Tillgängliga uppgraderingsscenarier "Vad kan du göra?" eller "Vilka scenarier är tillgängliga?"
Aktuellt förlopp "Vad är den aktuella statusen?" eller "Visa mig förloppet"
Uppgraderingsplanen "Förklara planen" eller "Gå igenom uppgifterna"
Utvärderingsinformation "Visa mig utvärderingen" eller "Vad hittade utvärderingen?"
Tillgängliga kunskaper "Vilka färdigheter har du?" eller "Visa en lista över dina kunskaper"
Ett specifikt beslut "Varför valde du X framför Y?"
Risker eller problem "Vilka är riskerna med den här uppgraderingen?"

Kommunicera effektivt

Kvaliteten på interaktionen påverkar resultatets kvalitet direkt.

Var specifik om omfång

"Uppgradera bara projekten Data.Access och Data.Models till .NET 10" ger agenten ett tydligt fokus. "Uppgradera allt" fungerar, men agenten fattar fler beslut på egen hand om ordning och prioriteringar.

Dela kontext

Agenten känner inte till dina affärsbegränsningar om du inte delar dem:

  • "Vi uppgraderar eftersom Azure App Service släpper stöd för .NET 8 i november."
  • "Det här är en produktionstjänst med hög trafik – inga beteendeändringar i API-svaren."

Uttrycka begränsningar

Berätta för agenten vad den inte ska göra, inte bara vad den ska:

  • "Ändra inte den offentliga API-ytan – vi har externa konsumenter."
  • "Vi kan inte uppgradera Newtonsoft.Json ännu – teamet som äger delade kontrakt har inte uppgraderats."
  • "Rör inte den äldre rapporteringsmodulen – den skrivs om separat."

Lämna feedback

Positiv feedback hjälper lika mycket som korrigeringar och bekräftar att agenten är på rätt spår:

  • "Uppgraderingen ser bra ut – gör samma metod för det andra lagringsplatsens projekt."
  • "Det fungerar, men vi föredrar konstruktorinmatning framför egenskapsinmatning i den här kodbasen."

Snabbreferens

Situation Vad du ska säga
Starta en ny uppgradering "Uppgradera min lösning till .NET 10"
Återuppta föregående arbete "Fortsätt" eller "Vad är statusen?"
Växla till guidat läge "Pausa" eller "Växla till guidat läge"
Växla till automatiskt läge "Fortsätt" eller "Fortsätt utan att fråga"
Korrigera ett beslut "Använd faktiskt X i stället för Y"
Ange en inställning "Gör alltid X för den här lösningen"
Granska ändringar "Visa mig vad du har ändrat" eller kontrollera Git-loggen
Ångra en ändring "Återställ den senaste ändringen"
Fråga varför "Varför valde du det tillvägagångssättet?"
Hoppa över en uppgift "Hoppa över den här uppgiften för tillfället"
Få hjälp "Vad kan du göra?"