Arbeiten mit der Modernisierung von GitHub Copilot

In diesem Artikel wird beschrieben, wie Sie mit dem GitHub Copilot Modernisierungs-Agent kommunizieren, ihre Vorlieben unterrichten, Fehler korrigieren, ihre Arbeit überprüfen und Upgrades über mehrere Sitzungen hinweg verwalten.

GitHub Copilot ist ein interaktiver Kollaborateur, der Fragen stellt, Strategien vorschlägt, sich an Ihr Feedback anpasst und im Laufe der Zeit von Ihren Vorlieben lernt. Um die besten Ergebnisse zu erzielen, geben Sie dem Agent kontext. Je mehr es über Ihre Ziele, Einschränkungen und Vorlieben weiß, desto besser ist es.

❌ 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."

Tipp

Sie müssen nicht von Anfang an den gesamten Kontext bereitstellen. Der Agent stellt Nachverfolgungsfragen, wenn er weitere Informationen benötigt.

Starten einer Unterhaltung

  1. Öffnen Sie Copilot Chat in VS Code, Visual Studio oder Copilot CLI.
  2. Wählen Sie den GitHub Copilot-Modernisierungs-Agent für .NET aus der Agentauswahl aus, oder geben Sie die richtige Agent-Erwähnung für Ihre Umgebung ein: @modernize-dotnet in VS Code und Copilot CLI oder @Modernize in Visual Studio.
  3. Beschreiben Sie, was Sie in natürlicher Sprache erreichen möchten.

Was zu sagen ist

Natürliche Sprache funktioniert. Probieren Sie die folgenden Beispiele aus:

Was Sie wünschen Was zu sagen ist
Upgrade einer vollständigen Lösung "Upgrade meiner Lösung auf .NET 10"
Aktualisieren einer bestimmten Technologie "Helfen Sie mir beim Upgrade von EF6 auf EF Core"
Sehen, was verfügbar ist "Welche Szenarien sind verfügbar?"
Upgrade zuerst ein Projekt "Upgrade des API-Projekts zuerst, dann die freigegebene Bibliothek"
Grundlegendes zum aktuellen Zustand "Was ist der aktuelle Status meines Upgrades?"

Was geschieht als Nächstes?

Wenn Sie eine Unterhaltung starten, überprüft der Agent, ob ein vorhandener Upgrade-Vorgang in Ihrem Arbeitsbereich besteht.

  • Wenn keine Arbeit vorhanden ist, beginnt der Agent neu, normalerweise beginnend mit einer Bewertung Ihrer Lösung.
  • Wenn bereits eine Arbeit im Gange ist, setzt der Agent genau dort an, wo Sie aufgehört haben, und zeigt den aktuellen Status an, z. B. "3 von 8 Aufgaben abgeschlossen".

Auswählen eines Flussmodus

Der Agent unterstützt zwei Flussmodi, die steuern, wie lange der Agent für Ihre Eingabe pausiert.

Automatischer Modus

Im automatischen Modus arbeitet der Agent durch die Phasen (Bewertung, Planung, Ausführung) ohne Unterbrechung der Genehmigung an jeder Grenze. Der Agent hält weiterhin bei echten Blockern an oder wenn er eine Entscheidung benötigt, die nur Sie treffen können.

Am besten geeignet für erfahrene Benutzer, einfache Upgrades und kleine Lösungen.

Geführter Modus

Im geführten Modus hält der Agent an jeder Phasengrenze für Ihre Überprüfung an:

  • Nach der Bewertung, vor der Erstellung des Plans.
  • Nach der Planung, bevor Sie Aufgaben ausführen.
  • Vor komplexen Vorgangsaufschlüsselungen.
  • Bei wichtigen Entscheidungspunkten, an denen mehrere gültige Ansätze vorhanden sind.

Am besten für Erstmalige Benutzer, komplexe Lösungen und wann Sie den Prozess erlernen möchten.

Modi während der Sitzung wechseln

Sie können jederzeit frei zwischen den Modi wechseln.

So wechseln Sie zu Was zu sagen ist
Geführter Modus „PaVerwenden“ oder „Zum geführten Modus wechseln“
Automatischer Modus "Weiter" oder "Weiter"

Tipp

Beginnen Sie mit dem geführten Modus für Ihr erstes Upgrade. Der geführte Modus ist die beste Methode, um zu erfahren, wie der Agent denkt und welche Entscheidungen getroffen werden. Wechseln Sie in den automatischen Modus, sobald Sie bequem sind.

Trainieren Sie den Agenten

Der Agent lernt von Ihnen. Der Agent speichert Ihre Korrekturen, Einstellungen und Anweisungen unter scenario-instructions.md im Upgrade-Statusordner. Diese Einstellungen werden über Sitzungen hinweg beibehalten.

Fehler korrigieren

Wenn der Agent eine Entscheidung trifft, mit der Sie nicht einverstanden sind, teilen Sie dem Agenten folgendes mit:

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."

Der Agent aktualisiert scenario-instructions.md und trifft dieselbe Wahl nicht noch einmal, auch nicht in einer zukünftigen Sitzung.

Einstellungen festlegen

Teilen Sie dem Agent proaktiv mit, wie Sie dinge mögen:

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."

Aufgabenspezifische Anweisungen geben

Manchmal gilt eine Präferenz nur für einen bestimmten Vorgang.

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."

Was der Agent speichert

Die scenario-instructions.md Datei ist in klaren Abschnitten angeordnet:

Abschnitt Was es enthält Beispiel
Benutzereinstellungen (technisch) Paketauswahl, Frameworkentscheidungen, Codierungsmuster "Verwenden von System.Text.Json, nicht Newtonsoft"
Benutzereinstellungen (Ausführungsart) Funktionsweise des Agents "Immer Bottom-Up-Strategie verwenden"
Protokoll für wichtige Entscheidungen Wichtige Entscheidungen und deren Begründung "Hat EF Core über Dapper gewählt, weil..."
Benutzerdefinierte Anweisungen pro Aufgabe Aufgabenspezifisches Überschreiben "Überspringen von Tests für Aufgabe 3.1"

Tipp

Bearbeiten Sie scenario-instructions.md auch direkt. Es ist eine Markdown-Datei in .github/upgrades/{scenarioId}/. Der Agent liest die Datei zu Beginn jeder Interaktion vor.

Vornehmen von Korrekturen in der Mitte der Sitzung

Der Agent behandelt Unterbrechungen elegant und verliert nicht den Überblick darüber, wo er sich befindet oder was er gerade tut.

Anhalten und Überprüfen

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?"

Umleiten

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."

Rückgängig machen

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

Machen Sie Commits auch selbst mit Standard-Git-Befehlen rückgängig. Der Agent schreibt klare, beschreibende Commit-Nachrichten, damit Sie genau wissen, was jeder Commit geändert hat.

Fragen während des Ablaufs stellen

Das Stellen von Fragen entgleist den Workflow nicht:

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."

Überprüfen der Arbeit des Agenten

Der Agent bietet mehrere Möglichkeiten, seine Arbeit zu überprüfen.

Quellcodeverwaltung

Der Agent schlägt vor, in einem separaten Branch zu arbeiten, und committet Änderungen während der Arbeit. Überprüfen Sie die Änderungen des Agents mit standardmäßigen Git-Befehlen:

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

Workflowdateien

Der Agent verwaltet mehrere Dateien in .github/upgrades/{scenarioId}/, die Ihnen vollständige Transparenz bieten:

Datei Was es zeigt
tasks.md Übersicht über visuelle Fortschritte mit allen Aufgaben, Statusindikatoren (✅ erledigt, in Bearbeitung, 🔄 ⬜ ausstehend) und einer Statusanzeige
execution-log.md Vollständiger chronologischer Überwachungspfad jeder Aktion, die der Agent ausgeführt hat, wann und was passiert ist
assessment.md Die anfängliche Analyse Ihrer Lösung, einschließlich Abhängigkeiten, kritische Änderungen und Upgrade-Komplexität
scenario-instructions.md Ihre Vorlieben und die gelernten Entscheidungen des Agenten
tasks/{taskId}/progress-details.md Details pro Aufgabe: Aufgetretene Buildfehler, Behebung, Testergebnisse und getroffene Entscheidungen

Unterbrochene Arbeit fortsetzen

Schließen Sie den Chat, oder beenden Sie Ihre IDE. Der Agent bewältigt diese Situation nahtlos.

Der Agent speichert den gesamten Zustand in .github/upgrades/ in Ihrem Repository. Wenn Sie eine neue Unterhaltung beginnen, überprüft der Agent den aktuellen Zustand und weiß sofort:

  • Welches Szenario aktiv ist.
  • Welche Aufgaben abgeschlossen, in Bearbeitung oder ausstehend sind.
  • Welche Artefakte vorhanden sind (Bewertung, Plan, Aufgabendateien).
  • Gibt an, ob alle Vorgänge veraltet angezeigt werden (hängen bleibend im 🔄 Status einer vorherigen Sitzung).

Erkennung veralteter Aufgaben

Wenn eine Aufgabe aus einer vorherigen Sitzung ausgeführt wird, erkennt der Agent, dass die Aufgabe möglicherweise veraltet ist, und bietet Optionen, um fortzufahren, neu zu starten oder zu überspringen.

Tipp

Da sich der Zustand in .github/upgrades/ in Ihrem Repository befindet, reist er mit Ihrem Code mit. Pushen Sie Ihren Branch auf einen remote-Server oder führen Sie einen Pull auf einen anderen Rechner aus, und der Agent macht genau dort weiter, wo Sie aufgehört haben.

Arbeiten über mehrere Sitzungen hinweg

Große Upgrades, z. B. eine 20-Projektlösung, ein komplexes Framework-Upgrade oder eine mehrstufige Modernisierung, umfassen häufig mehrere Sitzungen über Tage oder Wochen. Der Agent verarbeitet Multi-Session-Arbeiten auf natürliche Weise:

  • Beständiger Zustand: Alles ist in .github/upgrades/. Es gibt keinen Speicherstatus, der verloren gehen könnte.
  • Sitzungsunabhängigkeit: Jede Chatsitzung ist unabhängig. Der Agent rekonstruiert seinen Kontext jedes Mal aus den Zustandsdateien.
  • IDE-übergreifende Unterstützung: Beginnen Sie in VS Code und setzen Sie in Visual Studio oder mit der Copilot CLI fort. Der Statusordner ist der gemeinsame Vertrag.

Tipps für die Arbeit mit mehreren Sitzungen

  • Committen Sie den Status-Ordner. Pushen Sie .github/upgrades/ in Ihren Branch, um den Ordner zu sichern und für Ihr Team sichtbar zu machen.
  • Überprüfen Sie zwischen den Sitzungen. Lesen Sie tasks.md und execution-log.md, um Ihr Gedächtnis aufzufrischen, was in der letzten Sitzung passiert ist.
  • Aktualisieren Sie einstellungen, während Sie lernen. Wenn Sie etwas beim Testen entdecken, das den Ansatz des Agents ändern sollte, teilen Sie dem Agent zu Beginn der nächsten Sitzung mit.

Hilfe anfordern

Sind Sie nicht sicher, was der Agent tun kann oder wie der Stand der Dinge ist? Fragen:

Was Sie wissen möchten Was zu sagen ist
Verfügbare Upgradeszenarien "Was können Sie tun?" oder "Welche Szenarien sind verfügbar?"
Aktueller Fortschritt "Was ist der aktuelle Status?" oder "Fortschritt anzeigen"
Der Upgradeplan "Erklären Sie den Plan" oder "Führen Sie mich durch die Aufgaben"
Bewertungsdetails "Die Bewertung anzeigen" oder "Was hat die Bewertung gefunden?"
Verfügbare Fähigkeiten "Welche Fähigkeiten haben Sie?" oder "Auflisten Ihrer Fähigkeiten"
Eine bestimmte Entscheidung "Warum haben Sie X über Y ausgewählt?"
Risiken oder Bedenken "Welche Risiken bestehen bei diesem Upgrade?

Effektives Kommunizieren

Die Qualität Ihrer Interaktion wirkt sich direkt auf die Qualität der Ergebnisse aus.

Seien Sie spezifisch bezüglich des Umfangs

"Upgrade just the Data.Access and Data.Models projects to .NET 10" gibt dem Agent einen klaren Fokus. "Alles aktualisieren" funktioniert, aber der Agent trifft selbst mehr Entscheidungen über Sortierung und Prioritäten.

Kontext freigeben

Der Agent kennt Ihre Geschäftseinschränkungen nicht, es sei denn, Sie teilen sie:

  • "Wir führen ein Upgrade durch, da Azure App Service im November den .NET 8 Support einstellt."
  • "Dies ist ein Produktionsdienst mit hohem Datenverkehr – keine Verhaltensänderungen in den API-Antworten."

Ausdrücken von Einschränkungen

Teilen Sie dem Agent mit, was er nicht tun sollte , nicht nur, was er tun sollte:

  • "Ändern Sie die öffentliche API-Oberfläche nicht – wir haben externe Consumer."
  • "Wir können Newtonsoft.Json noch nicht aktualisieren – das Team, das geteilte Verträge besitzt, wurde noch nicht aktualisiert."
  • „Fassen Sie das alte Berichtsmodul nicht an – das wird separat neu geschrieben.“

Feedback abgeben

Positives Feedback hilft genauso viel wie Korrekturen und bestätigt, dass der Agent auf dem richtigen Weg ist:

  • "Dieses Upgrade sieht großartig aus – führen Sie den gleichen Ansatz für das andere Repositoryprojekt aus."
  • "Das funktioniert, aber wir bevorzugen die Konstruktoreinfügung gegenüber der Eigenschafteneinfügung in dieser Codebasis."

Kurzreferenz

Situation Was zu sagen ist
Starten eines neuen Upgrades "Upgrade meiner Lösung auf .NET 10"
Vorherige Arbeit fortsetzen "Weiter" oder "Was ist der Status?"
Wechseln zum geführten Modus „PaVerwenden“ oder „Zum geführten Modus wechseln“
Wechseln zum automatischen Modus "Weiter" oder "Fortfahren ohne Fragen"
Korrigieren einer Entscheidung "Tatsächlich verwenden Sie X anstelle von Y"
Festlegen einer Präferenz „Führen Sie für diese Lösung immer X aus“
Änderungen überprüfen "Zeigen Sie mir, was Sie geändert haben" oder Git-Protokoll überprüfen
Rückgängigmachen einer Änderung "Die letzte Änderung wiederherstellen"
Fragen Sie, warum "Warum haben Sie diesen Ansatz gewählt?"
Überspringen einer Aufgabe "Diese Aufgabe jetzt überspringen"
Hilfe erhalten "Was können Sie tun?"