A GitHub Copilot modernizálásával való együttműködés

Ez a cikk bemutatja, hogyan kommunikálhat a GitHub Copilot modernizálási ügynökkel, hogyan taníthatja meg a beállításokat, kijavíthatja a hibákat, áttekintheti a munkáját, és kezelheti a frissítéseket több munkamenetben.

GitHub Copilot modernizáció egy interaktív közreműködő, aki kérdéseket tesz fel, stratégiákat javasol, alkalmazkodik a visszajelzéseihez, és idővel tanul a preferenciáiból. A legjobb eredmény eléréséhez adjon kontextust az ügynöknek. Minél többet tud a céljairól, korlátairól és preferenciáiról, annál jobban teljesít.

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

Jótanács

Nem kell minden kontextust előtérbe állítania. Ha további információra van szüksége, az ügynök további kérdéseket tesz fel.

Beszélgetés indítása

  1. Nyissa meg Copilot Chat a VS Code, Visual Studio vagy Copilot parancssori felületében.
  2. Válassza a GitHub Copilot modernizációs ügynökét .NET-hez az ügynök választóból, vagy írja be a környezetéhez illő ügynököt: @modernize-dotnet a VS Code-ban és a Copilot CLI-ben, vagy @Modernize a Visual Studioban.
  3. Írja le, hogy mit szeretne elérni természetes nyelven.

Mit kell mondani?

A természetes nyelv működik. Próbálja ki az alábbi példákat:

Mit szeretne? Mit kell mondani?
Teljes megoldás frissítése "A megoldás frissítése a .NET 10 verzióra"
Adott technológia frissítése "Segítség az EF6-ról az EF Core-ra való frissítéshez"
Az elérhető lehetőségek megtekintése "Milyen forgatókönyvek érhetők el?"
Először egy projekt frissítése "Frissítse először az API-projektet, majd a megosztott kódtárat"
Az aktuális állapot ismertetése "Mi a frissítés jelenlegi állapota?"

Mi történik ezután?

Beszélgetés indításakor az ügynök ellenőrzi, hogy van-e meglévő frissítési munka a munkaterületen:

  • Ha nincs meglévő munka, az ügynök újraindul, általában a megoldás értékelésével kezdődik.
  • Ha már folyamatban van a munka, az ügynök ott folytatja, ahol Ön abbahagyta, és megjeleníti az aktuális állapotot, például "3 a 8 feladatból teljesítve".

Folyamat mód kiválasztása

Az ügynök két olyan folyamatmódot támogat, amelyek szabályozzák, hogy az ügynök mennyi ideig szünetel a bemenethez.

Automatikus mód

Automatikus módban az ügynök a fázisokon (értékelés, tervezés, végrehajtás) dolgozik anélkül, hogy minden határnál szünetelteti a jóváhagyást. Az ügynök továbbra is megáll a valódi blokkolóknál, vagy amikor olyan döntésről van szó, amit csak Ön hozhat meg.

Tapasztalt felhasználók, egyszerű frissítések és kis megoldások esetén a legjobb.

Irányított mód

Irányított módban az ügynök a véleményezés egyes fázishatárainál szünetel:

  • Az értékelés után, a terv létrehozása előtt.
  • A tervezés után, a feladatok végrehajtása előtt.
  • Összetett feladatbontások előtt.
  • A kulcsfontosságú döntési pontokon, ahol több érvényes megközelítés létezik.

Az első felhasználók, az összetett megoldások és a folyamat megismerése esetén a legjobb.

Üzemmódok váltása munkamenet közben

Bármikor szabadon válthat a módok között:

Váltás a Mit kell mondani?
Irányított mód "Szüneteltetés" vagy "Váltás irányított módra"
Automatikus mód "Folytatás" vagy "Tovább"

Jótanács

Kezdje az első frissítés irányított módjával. Az irányított mód a legjobb módja annak, hogy megtudja, hogyan gondolkodik az ügynök, és milyen döntéseket hoz. Váltson automatikus üzemmódra, ha már jól érzi magát.

Az ügynök tanítása

Az ügynök tanul tőled. Az ügynök menti a javításokat, a preferenciákat, a beállításokat és az utasításokat scenario-instructions.md a frissítési állapot mappába. Ezek a beállítások a munkamenetek során is megmaradnak.

Hibák kijavítása

Ha az ügynök olyan döntést hoz, amellyel nem ért egyet, mondja el az ügynöknek:

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

Az ügynök frissíti a scenario-instructions.md, és nem hozza meg újra ugyanazt a döntést, még egy későbbi munkamenetben sem.

Beállítások megadása

Mondd meg proaktívan az ügynöknek, hogyan szeretnéd, hogy az ügyeket elvégezzék.

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

Feladatspecifikus utasítások megadása

Néha a beállítások csak egy adott tevékenységre vonatkoznak:

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

Az ügynök által mentett adatok

A scenario-instructions.md fájl tiszta szakaszokba van rendezve:

Szakasz Mit tartalmaz Example
Felhasználói beállítások (technikai) Csomagválasztás, keretrendszer-döntések, kódolási minták "System.Text.Json használata, nem Newtonsoft"
Felhasználói beállítások (végrehajtási stílus) Az ügynök működése "Mindig alulról felfelé haladó stratégiát használjon"
Legfontosabb döntések naplója Fontos döntések és indokaik "Az EF Core-t választotta a Dapper helyett, mert..."
Egyéni utasítások tevékenységenként Feladatspecifikus felülbírálások "Tesztek kihagyása a 3.1 feladathoz"

Jótanács

Közvetlenül is szerkeszthet scenario-instructions.md . Ez egy Markdown fájl itt: .github/upgrades/{scenarioId}/. Az ügynök minden interakció elején felolvassa a fájlt.

Munkamenet közbeni korrekciók végrehajtása

Az ügynök elegánsan kezeli a megszakításokat, és nem veszíti el a fonalat, hogy hol van vagy mit csinált volna.

Szüneteltetés és felülvizsgálat

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

Redirect

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

Visszavonás

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

A véglegesítéseket a szokásos Git-parancsokkal is visszaállíthatja. Az ügynök világos, leíró véglegesítési üzeneteket ír, hogy pontosan tudja, mi változott az egyes véglegesítések között.

Kérdéseket feltenni a folyamat közben

A kérdések feltevése nem kisiklik a munkafolyamatot:

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

Az ügynök munkájának áttekintése

Az ügynök többféleképpen is áttekintheti a munkáját.

Forrásvezérlő

Az ügynök azt javasolja, hogy dolgozzon egy külön ágon, és véglegesítse a módosításokat a működés közben. Tekintse át az ügynök módosításait szabványos Git-parancsokkal:

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

Munkafolyamat-fájlok

Az ügynök számos olyan fájlt .github/upgrades/{scenarioId}/ tart fenn, amelyek teljes átláthatóságot biztosítanak:

fájl Mit mutat ez
tasks.md A vizualizáció előrehaladásának áttekintése az összes tevékenységgel, állapotjelzőkkel (✅ kész, 🔄 folyamatban, ⬜ függőben) és egy folyamatjelzővel
execution-log.md Az ügynök által végzett minden művelet időrendi naplózásának befejezése, mikor és mi történt
assessment.md A megoldás kezdeti elemzése, beleértve a függőségeket, a kompatibilitástörő változásokat és a frissítés összetettségét
scenario-instructions.md Az Ön preferenciái és az ügynök tanult döntései
tasks/{taskId}/progress-details.md Feladatonkénti adatok: buildelési hibák, azok megoldása, teszteredmények és döntések

Megszakított munka folytatása

Zárja be a csevegést, vagy állítsa le az IDE-t. Az ügynök zökkenőmentesen kezeli ezt a helyzetet.

Az ügynök az állapot összességét a .github/upgrades/ adattárban tárolja. Amikor új beszélgetést indít, az ügynök ellenőrzi az aktuális állapotot, és azonnal tudja:

  • Melyik forgatókönyv aktív.
  • Mely tevékenységek vannak befejezve, folyamatban vagy függőben.
  • Milyen dokumentumok léteznek (értékelés, terv, feladatfájl).
  • Az, hogy a feladatok elakadtnak tűnnek-e (beragadt 🔄 állapotban egy korábbi munkamenetből).

Elavult feladatészlelés

Ha egy tevékenység egy előző munkamenetből van folyamatban, az ügynök felismeri, hogy a tevékenység elavult lehet, és lehetőséget kínál a folytatásra, az újraindításra vagy a kihagyásra.

Jótanács

Mivel az állapot az adattárban .github/upgrades/ található, a kóddal együtt halad. Húzza le az ágat egy távoli gépre, húzza le egy másik gépen, és az ügynök ott veszi fel, ahol abbahagyta.

Több munkamenet közötti munka

A nagy méretű frissítések, például egy 20 projektmegoldás, egy összetett keretrendszer frissítése vagy többlépéses modernizálás gyakran több munkamenetre terjednek ki napok vagy hetek alatt. Az ügynök természetesen kezeli a több munkamenetes munkát:

  • Állandó állapot: Minden benne .github/upgrades/van . Nincs elveszíthető memóriabeli állapot.
  • Munkamenet függetlensége: Minden csevegési munkamenet független. Az ügynök minden alkalommal rekonstruálja a környezetét a státuszfájlokból.
  • Cross-IDE támogatás: A VS Code indítása, folytatás Visual Studio vagy Copilot parancssori felületen. Az állapotmappa a megosztott szerződés.

Tippek több munkamenetes munkához

  • Véglegesítse az állapotmappát. A mappa ághoz való lefeltöltése .github/upgrades/ biztonsági mentést készít, és láthatóvá teszi azt a csapat számára.
  • Áttekintés a munkamenetek között. tasks.md és execution-log.md elolvasásával frissítse emlékezetét az utolsó munkamenet során történtekről.
  • A tanultak szerint frissítse a beállításokat. Ha talál valamit a tesztelés során, amely megváltoztathatja az ügynök megközelítését, a következő munkamenet elején tájékoztassa az ügynököt.

Segítség kérése

Nem biztos benne, hogy az ügynök mit tehet, vagy hol vannak a dolgok? Kérdez:

Amit tudni szeretne Mit kell mondani?
Elérhető frissítési forgatókönyvek "Mit tehetsz?" vagy "Milyen forgatókönyvek érhetők el?"
Aktuális folyamat "Mi az aktuális állapot?" vagy "Mutasd meg az előrehaladást"
A frissítési terv "A terv ismertetése" vagy "Útmutató a feladatokhoz"
Értékelés részletei "Mutasd meg az értékelést" vagy "Mit talált az értékelés?"
Rendelkezésre álló készségek "Milyen készségekkel rendelkezik?" vagy "A készségek listázása"
Egy konkrét döntés "Miért választotta az X-t az Y-nál?"
Kockázatok vagy aggodalmak "Milyen kockázatokkal jár ez a frissítés?"

Hatékony kommunikáció

Az interakció minősége közvetlenül befolyásolja az eredmények minőségét.

Legyen konkrét a hatókörrel kapcsolatban

"Csak a Data.Access és a Data.Models projektek frissítése a .NET 10-es verzióra" egyértelmű fókuszt biztosít az ügynök számára. A "Minden frissítése" funkció működik, de az ügynök önállóan több döntést hoz a rendezésről és a prioritásokról.

Környezet megosztása

Az ügynök csak akkor ismeri az üzleti korlátozásokat, ha ön meg nem osztja őket:

  • "Azért frissítünk, mert az Azure App Service novemberben megszünteti a .NET 8 támogatását."
  • "Ez egy nagy forgalmú éles szolgáltatás – az API-válaszokban nem változik a viselkedés."

Korlátozások kifejezése

Mondja meg az ügynöknek, hogy mit ne tegyen, nem csak azt, hogy mit kell tennie:

  • "Ne módosítsa a nyilvános API felületét – külső felhasználók is vannak."
  • "A Newtonsoft.JSON-t még nem frissíthetjük – a megosztott szerződéseket birtokoló csapat nem frissítette."
  • "Ne érintse meg az örökölt jelentéskészítési modult – ezt külön írják át."

Visszajelzés küldése

A pozitív visszajelzések ugyanúgy segítenek, mint a javítások, és megerősíti, hogy az ügynök jó úton halad:

  • "Ez a frissítés nagyszerűen néz ki – ugyanezt a megközelítést alkalmazza a másik adattárprojekt esetében is."
  • "Ez működik, de mi inkább a konstruktor injekciót részesítjük előnyben a tulajdonság injekcióval szemben ebben a kódbázisban."

Rövid összefoglalás

Helyzet Mit kell mondani?
Új frissítés indítása "A megoldás frissítése a .NET 10 verzióra"
Előző munka folytatása "Folytatás" vagy "Mi az állapot?"
Váltás irányított módra "Szüneteltetés" vagy "Váltás irányított módra"
Váltás automatikus üzemmódra "Ugrás előre" vagy "Folytatás kérdezés nélkül"
Döntés kijavítása "Valójában X-et használjon Y helyett"
Preferencia beállítása "Mindig X-et kell tenni ehhez a megoldáshoz"
Módosítások áttekintése "Mutasd meg, mit módosított" vagy ellenőrizze a Git-naplót
Módosítás visszavonása "Az utolsó módosítás visszaállítása"
Kérdezze meg, miért "Miért ezt a megközelítést választottad?"
Feladat kihagyása "Most hagyja ki ezt a feladatot"
Segítség kérése "Mit tehetsz?"