Práce na modernizaci GitHub Copilot

Tento článek popisuje, jak komunikovat s GitHub Copilot agentem modernizace, naučit ho vaše preference, opravovat chyby, kontrolovat svou práci a spravovat upgrady napříč několika relacemi.

GitHub Copilot je modernizovaný interaktivní partner, který klade otázky, navrhuje strategie, přizpůsobuje se vaší zpětné vazbě a učí se z vašich preferencí s časem. Nejlepších výsledků dosáhnete tak, že dáte agentovi kontext. Čím více ví o vašich cílech, omezeních a preferencích, tím lépe to funguje.

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

Návod

Nemusíte dávat všechny kontexty předem. Agent se ptá na následné otázky, když potřebuje další informace.

Zahájení konverzace

  1. Otevřete Copilot Chat v editoru VS Code, Visual Studio nebo rozhraní příkazového řádku Copilot.
  2. Ve výběru agenta zvolte modernizační agent GitHub Copilot pro .NET nebo zadejte správnou zmínku o agentovi pro vaše prostředí: @modernize-dotnet v editoru VS Code a rozhraní příkazového řádku Copilot nebo @Modernize ve Visual Studiu.
  3. Popište, co chcete dosáhnout v přirozeném jazyce.

Co říct

Přirozený jazyk funguje. Vyzkoušejte tyto příklady:

Co chcete Co říct
Upgrade plného řešení Aktualizujte moje řešení na .NET 10
Upgrade konkrétní technologie "Pomozte mi upgradovat z EF6 na EF Core"
Podívejte se, co je k dispozici "Jaké scénáře jsou k dispozici?"
Nejprve upgradujte jeden projekt. Nejprve upgradujte projekt rozhraní API a pak sdílenou knihovnu.
Vysvětlení aktuálního stavu "Jaký je aktuální stav mé aktualizace?"

Co se stane dál

Když zahájíte konverzaci, asistent zkontroluje existující práci na upgradu ve vašem pracovním prostoru.

  • Pokud neexistuje žádná stávající práce, agent začne znovu, obvykle tím, že provede posouzení vašeho řešení.
  • Pokud probíhá práce, agent vybere místo, kde jste skončili, a zobrazí aktuální stav, například 3 z 8 dokončených úkolů.

Volba režimu toku

Agent podporuje dva režimy toku, které řídí, jak dlouho se agent pozastaví pro vaši reakci.

Automatický režim

V automatickém režimu agent pracuje ve fázích (posouzení, plánování, provádění) bez pozastavení schválení na jednotlivých hranicích. Agent se stále zastaví u skutečných překážek nebo když potřebuje rozhodnutí, které můžete učinit pouze vy.

Nejvhodnější pro zkušené uživatele, jednoduché upgrady a malá řešení.

Režim s asistencí

V režimu s asistencí se agent pozastaví na každé hranici fáze k vaší kontrole.

  • Po posouzení před vytvořením plánu.
  • Po naplánování před provedením jakýchkoli úkolů.
  • Před složitým rozpisem úkolů.
  • V klíčových rozhodovacích bodech, kde existuje více platných přístupů.

Vhodné pro uživatele, kteří jsou na počátku, při složitých řešeních a když se chcete proces naučit.

Přepínání režimů uprostřed relace

Kdykoli můžete přepínat mezi režimy:

Přepnutí na Co říct
Režim s asistencí "Pozastavit" nebo "Přepnout do režimu s asistencí"
Automatický režim "Pokračovat" nebo "Pokračovat"

Návod

Začněte s režimem s asistencí pro první upgrade. Režim s asistencí je nejlepší způsob, jak zjistit, jak si agent myslí a jaká rozhodnutí dělá. Jakmile budete spokojení, přepněte do automatického režimu.

Naučte agenta

Agent se od vás učí. Agent uloží opravy, předvolby a pokyny do scenario-instructions.md složky stavu upgradu. Tyto předvolby se zachovají napříč relacemi.

Oprava chyb

Když agent rozhodne, že nesouhlasíte, sdělte agentovi:

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

Agent se aktualizuje scenario-instructions.md a znovu neučiní stejnou volbu, ani v budoucí relaci.

Nastavení předvoleb

Proaktivně řekněte agentovi, jak se vám to líbí:

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

Zadání pokynů pro konkrétní úkol

Někdy se předvolba vztahuje pouze na konkrétní úkol:

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

Co agent ukládá

Soubor scenario-instructions.md je uspořádaný do jasných oddílů:

Oddíl Co obsahuje Příklad
Uživatelské předvolby (technické) Volby balíčků, rozhodnutí o architekturách, vzory kódování "Use System.Text.Json, not Newtonsoft"
Uživatelské předvolby (styl provádění) Jak agent funguje "Vždy používat strategii zdola nahoru"
Protokol klíčových rozhodnutí Důležitá rozhodnutí a jejich odůvodnění "Zvolil jsem EF Core místo Dapperu, protože..."
Vlastní pokyny pro úlohu Změny specifické pro jednotlivé úkoly "Přeskočit testy pro úkol 3.1"

Návod

Upravte scenario-instructions.md také přímo. Jedná se o soubor ve formátu Markdown v .github/upgrades/{scenarioId}/. Agent přečte soubor na začátku každé interakce.

Opravy během relace

Agent zpracovává přerušení elegantně a neztratí přehled o tom, kde se nachází nebo co právě dělal.

Pozastavení a kontrola

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

Přesměrovat

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

Zpět

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

Také sami revertujte commity pomocí standardních příkazů Gitu. Agent zapisuje jasné a popisné commit zprávy, abyste přesně věděli, co každá změna commitu obsahuje.

Kladení otázek uprostřed toku

Kladení otázek nenarušuje pracovní postup:

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

Kontrola práce agenta

Agent nabízí několik způsobů, jak zkontrolovat jeho práci.

Správa zdrojového kódu

Agent navrhuje pracovat na samostatné větvi a průběžně potvrzovat změny. Zkontrolujte změny agenta pomocí standardních příkazů Gitu:

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

Soubory pracovního postupu

Agent udržuje několik souborů, .github/upgrades/{scenarioId}/ které vám poskytnou plnou viditelnost:

Soubor Co ukazuje
tasks.md Přehled vizuálního průběhu se všemi úkoly, indikátory stavu (✅ dokončené, 🔄 probíhající, ⬜ čekající) a indikátorem průběhu
execution-log.md Kompletní záznam chronologického auditu všech akcí, které agent provedl, kdy a co se stalo
assessment.md Počáteční analýza vašeho řešení, včetně závislostí, zásadních změn a složitosti upgradu
scenario-instructions.md Vaše preference a naučené rozhodnutí agenta
tasks/{taskId}/progress-details.md Podrobnosti o jednotlivých úkolech: Zjištěny chyby sestavení, způsob jejich řešení, výsledky testů a rozhodování

Pokračovat v přerušené práci

Zavřete chat nebo vypněte integrované vývojové prostředí (IDE). Agent tuto situaci bezproblémově zpracovává.

Agent ukládá veškerý stav ve .github/upgrades/ vašem úložišti. Když zahájíte novou konverzaci, agent zkontroluje aktuální stav a okamžitě ví:

  • Který scénář je aktivní.
  • Které úkoly jsou dokončené, probíhající nebo čekající.
  • Jaké artefakty existují (posouzení, plán, soubory úkolů).
  • Jestli se některé úkoly jeví jako vleklé (zablokované ve 🔄 stavu z předchozí relace).

Zastaralá detekce úloh

Pokud úloha probíhá z předchozího sezení, agent si uvědomí, že úloha může být zastaralá a nabízí možnosti pro pokračování, restartování nebo přeskočení.

Návod

Stav je uložen ve .github/upgrades/ vašem úložišti a putuje společně s vaším kódem. Nasdílejte větev do vzdáleného umístění, stáhněte ji na jiný počítač a agent převezme přesně místo, kde jste skončili.

Práce napříč několika sezeními

Velké upgrady, jako je 20 projektové řešení, komplexní upgrade architektury nebo modernizace s více kroky, často zahrnují více relací v průběhu dnů nebo týdnů. Agent přirozeně zvládá práci s více relacemi.

  • Trvalý stav: Všechno je v .github/upgrades/. Nepřijdete o žádný stav v paměti.
  • Nezávislost relace: Každá chatovací relace je nezávislá. Agent pokaždé rekonstruuje svůj kontext ze stavových souborů.
  • Podpora napříč IDE: Spusťte ve VS Code, pokračujte ve Visual Studiu nebo Copilot CLI (rozhraní příkazového řádku). Složka stavu je sdílený kontrakt.

Tipy pro práci s více relacemi

  • Potvrďte složku stavu. Odešlete .github/upgrades/ do své větve, aby se složka zálohovala a byla viditelná vašemu týmu.
  • Zkontrolujte mezi relacemi. Přečtěte si tasks.md a execution-log.md a připomeňte si, co se stalo během posledního sezení.
  • Aktualizujte předvolby při učení. Pokud při testování zjistíte něco, co by mělo změnit přístup agenta, řekněte agentovi na začátku další relace.

Požádat o pomoc

Nejste si jisti, co může agent dělat nebo jak se věci mají? Požádat:

Co chcete vědět Co říct
Dostupné scénáře upgradu "Co můžete dělat?" nebo "Jaké scénáře jsou k dispozici?"
Aktuální průběh "Jaký je aktuální stav?" nebo "Show me the progress" (Zobrazit průběh)
Plán aktualizace "Vysvětli plán" nebo "Projdi se mnou úkoly"
Podrobnosti o posouzení "Ukaž mi posouzení" nebo "Co zjistilo posouzení?"
Dostupné dovednosti "Jaké dovednosti máte?" nebo "Vypsat své dovednosti"
Konkrétní rozhodnutí "Proč jste vybrali X přes Y?"
Rizika nebo obavy "Jaká jsou rizika s tímto upgradem?"

Efektivní komunikace

Kvalita interakce přímo ovlivňuje kvalitu výsledků.

Konkrétní informace o rozsahu

"Upgradujte pouze projekty Data.Access a Data.Models na .NET 10" dává agentům jasný fokus. "Vylepšit vše" funguje, ale agent nyní sám více rozhoduje o pořadí a prioritách.

Kontext sdílení

Agent nezná vaše obchodní omezení, pokud je nesdílíte:

  • "Upgradujeme, protože Azure App Service v listopadu ruší podporu .NET 8."
  • "Jedná se o produkční službu s vysokým provozem – nulové změny chování v odpovědích rozhraní API."

Vyjádřit omezení

Řekněte agentovi, co by neměl dělat, nejen co by měl:

  • "Neměňte plochu veřejného rozhraní API – máme externí uživatele."
  • "Newtonsoft.Json ještě nemůžeme upgradovat – tým, který vlastní sdílené kontrakty, se neupgradoval."
  • "Nedotýkejte se starého modulu pro vytváření sestav—ten je přepisován samostatně."

Odeslat zpětnou vazbu

Pozitivní zpětná vazba pomáhá stejně jako opravy a potvrzuje, že agent je na správném plánu:

  • "Tento upgrade vypadá skvěle – stejný přístup pro jiný projekt úložiště."
  • "To funguje, ale dáváme přednost injekci přes konstruktor před injekcí přes vlastnosti v této kódové základně."

Stručná referenční dokumentace

Situace Co říct
Spustit novou aktualizaci Aktualizujte moje řešení na .NET 10
Pokračovat v předchozí práci "Pokračovat" nebo "Jaký je stav?"
Přepnutí do režimu s asistencí "Pozastavit" nebo "Přepnout do režimu s asistencí"
Přepnutí do automatického režimu "Přejít dopředu" nebo "Pokračovat bez dotazování"
Oprava rozhodnutí "Ve skutečnosti použijte X místo Y"
Nastavení předvolby "Vždy udělejte X pro toto řešení"
Kontrola změn "Show me what you changed" (Ukaž mi, co jste změnili) nebo zkontrolujte protokol Gitu.
Vrácení změny zpět "Vrátit poslední změnu"
Zeptejte se proč "Proč jste ho zvolili?"
Přeskočit úkol "Přeskočit tento úkol prozatím"
Získání pomoci "Co můžete dělat?"