Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo illustra come comunicare con l'agente di modernizzazione GitHub Copilot, insegnare le proprie preferenze, correggere gli errori, esaminarne il lavoro e gestire gli aggiornamenti in più sessioni.
La modernizzazione di GitHub Copilot è un collaboratore interattivo che pone domande, propone strategie, si adatta al tuo feedback e apprende dalle tue preferenze nel tempo. Per ottenere i risultati migliori, fornisci il contesto all'agente. Quanto più conosce i tuoi obiettivi, vincoli e preferenze, tanto meglio funziona.
❌ 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."
Suggerimento
Non è necessario dare tutto il contesto in anticipo. L'agente pone domande di completamento quando sono necessarie altre informazioni.
Avvia una conversazione
- Aprire Copilot Chat in VS Code, Visual Studio o interfaccia della riga di comando di Copilot.
- Seleziona l'agente di modernizzazione GitHub Copilot per .NET dalla selezione dell'agente oppure digita il nome corretto dell'agente per il tuo ambiente:
@modernize-dotnetin VS Code e Copilot CLI o@Modernizein Visual Studio. - Descrivere ciò che si vuole eseguire nel linguaggio naturale.
Cosa dire
Il linguaggio naturale funziona. Provare questi esempi:
| Cosa vuoi | Cosa dire |
|---|---|
| Aggiornare una soluzione completa | "Aggiornare la soluzione a .NET 10" |
| Aggiornare una tecnologia specifica | "Assistenza per l'aggiornamento da EF6 a EF Core" |
| Scopri cosa è disponibile | "Quali scenari sono disponibili?" |
| Aggiornare prima un progetto | "Aggiornare prima il progetto API, quindi la libreria condivisa" |
| Informazioni sullo stato corrente | "Qual è lo stato corrente dell'aggiornamento?" |
Cosa succederà dopo
Quando si avvia una conversazione, l'agente verifica il lavoro di aggiornamento esistente nell'area di lavoro:
- Se non c'è un lavoro esistente, l'agente inizia da zero, solitamente partendo da una valutazione della tua soluzione.
- Se è in corso un lavoro, l'agente riprende da dove è stato interrotto e mostra lo stato corrente, ad esempio "3 di 8 attività completate".
Scegliere una modalità di flusso
L'agente supporta due modalità di flusso che controllano la frequenza delle pause dell'agente per ricevere il tuo input.
Modalità automatica
In modalità automatica, l'agente esegue le fasi (valutazione, pianificazione, esecuzione) senza sospendere l'approvazione a ogni limite. L'agente si ferma ancora agli ostacoli reali o quando ha bisogno di una decisione che solo tu puoi prendere.
Ideale per utenti esperti, aggiornamenti semplici e soluzioni di piccole dimensioni.
Modalità guidata
In modalità guidata, l'agente si ferma a ogni confine di fase per la tua revisione.
- Dopo la valutazione, prima di creare il piano.
- Dopo la pianificazione, prima di eseguire qualsiasi attività.
- Prima delle suddivisioni complesse delle attività.
- Nei punti decisionali chiave in cui esistono più approcci validi.
Ideale per gli utenti per la prima volta, soluzioni complesse e quando si vuole apprendere il processo.
Cambia modalità a metà sessione
Passare liberamente da una modalità all'altra in qualsiasi momento:
| Per passare a | Cosa dire |
|---|---|
| Modalità guidata | "Sospendi" o "Passa alla modalità guidata" |
| Modalità automatica | "Continua" o "Vai avanti" |
Suggerimento
Iniziare con la modalità guidata per il primo aggiornamento. La modalità guidata è il modo migliore per apprendere il modo in cui l'agente pensa e quali decisioni prende. Passare alla modalità automatica una volta che si è a proprio agio.
Insegnare all'agente
L'agente apprende da te. L'agente salva le correzioni, le preferenze e le istruzioni in scenario-instructions.md nella cartella dello stato di aggiornamento. Queste preferenze vengono mantenute tra le sessioni.
Correggere errori
Quando l'agente prende una decisione con cui non sei d'accordo, dimmi all'agente:
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."
L'agente aggiorna scenario-instructions.md e non farà di nuovo la stessa scelta, anche in una sessione futura.
Impostare le preferenze
In modo proattivo, indicare all'agente come eseguire le operazioni seguenti:
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."
Fornire istruzioni specifiche dell'attività
A volte una preferenza si applica solo a un'attività specifica:
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."
Cosa salva l'agente
Il scenario-instructions.md file è organizzato in sezioni chiare:
| Sezione | Contenuto | Esempio |
|---|---|---|
| Preferenze utente (tecnico) | Scelte dei pacchetti, decisioni del framework, modelli di codifica | "Usa System.Text.Json, non Newtonsoft" |
| Preferenze utente (stile di esecuzione) | Funzionamento dell'agente | "Usare sempre la strategia dal basso verso l'alto" |
| Log delle decisioni chiave | Decisioni importanti e la loro logica | "Scelta di EF Core su Dapper perché..." |
| Istruzioni personalizzate per attività | Override specifiche del compito | "Ignorare i test per l'attività 3.1" |
Suggerimento
Modificare scenario-instructions.md anche direttamente. Si tratta di un file Markdown in .github/upgrades/{scenarioId}/. L'agente legge il file all'inizio di ogni interazione.
Apportare correzioni a metà sessione
L'agente gestisce le interruzioni normalmente e non perde traccia della posizione o delle operazioni che stava facendo.
Sospendere ed esaminare
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?"
Reindirizzare
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."
Annulla
You: "That last change broke the build. Can we revert it?"
Agent: "I'll revert the last commit (abc1234: 'Migrate auth middleware').
Reverting now."
Anche tu puoi ripristinare i commit usando i comandi Git standard. L'agente scrive messaggi di commit chiari e descrittivi in modo da sapere esattamente cosa è cambiato ogni commit.
Porre domande a metà flusso
Porre domande non disturba il flusso di lavoro.
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."
Esaminare il lavoro dell'agente
L'agente offre diversi modi per esaminarne il lavoro.
Controllo del codice sorgente
L'agente suggerisce di lavorare su un ramo separato ed esegue il commit delle modifiche man mano che funziona. Esaminare le modifiche dell'agente con i comandi Git standard:
git log --oneline -10
git diff main..<agent-branch>
File del flusso di lavoro
L'agente gestisce diversi file in .github/upgrades/{scenarioId}/ che offrono visibilità completa:
| File | Cosa mostra |
|---|---|
tasks.md |
Panoramica dello stato visivo con tutte le attività, gli indicatori di stato (✅ eseguiti, 🔄 in corso, ⬜ in sospeso) e un indicatore di stato |
execution-log.md |
Audit trail cronologico completo di ogni azione intrapresa dall'agente, inclusi il quando e cosa è successo |
assessment.md |
L'analisi iniziale della soluzione, incluse le dipendenze, le modifiche che causano un'interruzione e la complessità dell'aggiornamento |
scenario-instructions.md |
Le tue preferenze e le decisioni dell'agente basate sull'apprendimento |
tasks/{taskId}/progress-details.md |
Dettagli per attività: errori di compilazione rilevati, come sono stati risolti, risultati dei test e decisioni prese |
Riprendere il lavoro interrotto
Chiudi la chat o spegni l'IDE. L'agente gestisce facilmente questa situazione.
L'agente archivia l'intero stato all'interno .github/upgrades/ del repository. Quando si avvia una nuova conversazione, l'agente controlla lo stato corrente e riconosce immediatamente:
- Quale scenario è attivo.
- Quali attività vengono completate, in corso o in sospeso.
- Quali artefatti esistono (valutazione, piano, file di attività)?
- Indica se le attività non sono aggiornate (bloccate nello stato 🔄 di una sessione precedente).
Rilevamento attività stagnante
Se un'attività è in corso da una sessione precedente, l'agente riconosce che l'attività potrebbe essere obsoleta e offre opzioni per continuare, riavviare o ignorare.
Suggerimento
Poiché lo stato si trova nel .github/upgrades/ all'interno del tuo repository, viaggia con il tuo codice. Eseguire il push del branch su un repository remoto, eseguirne il pull su un altro computer e l'agente riprende esattamente da dove si era interrotto.
Lavorare attraverso più sessioni
Aggiornamenti di grandi dimensioni, ad esempio una soluzione di 20 progetti, un aggiornamento di framework complesso o una modernizzazione in più passaggi, spesso si estendono su più sessioni in giorni o settimane. L'agente gestisce il lavoro multisessione in modo naturale:
-
Stato persistente: Tutto si trova in
.github/upgrades/. Nessuno stato in memoria da perdere. - Indipendenza della sessione: Ogni sessione di chat è indipendente. L'agente ricostruisce il contesto dai file di stato ogni volta.
- Supporto Cross-IDE: Inizia in VS Code, continua in Visual Studio o nella CLI di Copilot. La cartella di stato è il contratto condiviso.
Suggerimenti per il lavoro multisessione
- Eseguire il commit della cartella di stato. Esegui il push
.github/upgrades/nel tuo ramo per eseguire il backup della cartella e renderla visibile al tuo team. - Rivedere fra una sessione e l'altra. Leggere
tasks.mdeexecution-log.mdper aggiornare la memoria su ciò che è successo nell'ultima sessione. - Aggiornare le preferenze durante l'apprendimento. Se si individua un elemento nel test che deve modificare l'approccio dell'agente, indicare all'agente all'inizio della sessione successiva.
Chiedere assistenza
Non sei sicuro di cosa può fare l'agente o dove si trovano le cose? Chiedi:
| Cosa vuoi sapere | Cosa dire |
|---|---|
| Scenari di aggiornamento disponibili | "Cosa puoi fare?" o "Quali scenari sono disponibili?" |
| Progresso corrente | "Qual è lo stato corrente?" o "Mostra l'avanzamento" |
| Piano di aggiornamento | "Spiegami il piano" o "Guidami attraverso le attività" |
| Dettagli della valutazione | "Mostrami la valutazione" o "Cosa ha trovato la valutazione?" |
| Competenze disponibili | "Quali competenze hai?" o "Elenca le tue competenze" |
| Una decisione specifica | "Perché hai scelto X su Y?" |
| Rischi o preoccupazioni | "Quali sono i rischi di questo aggiornamento?" |
Comunicare in modo efficace
La qualità dell'interazione influisce direttamente sulla qualità dei risultati.
Specificare l'ambito
"Aggiornare solo i progetti Data.Access e Data.Models a .NET 10" dà all'agente un chiaro obiettivo. "Aggiorna tutto" funziona, ma l'agente prende più decisioni autonomamente sull'ordinamento e le priorità.
Condividi contesto
L'agente non conosce i vincoli aziendali a meno che non vengano condivisi:
- "È in corso l'aggiornamento perché Servizio app di Azure sta eliminando il supporto .NET 8 nel mese di novembre."
- "Si tratta di un servizio di produzione ad alto traffico: nessuna modifica comportamentale nelle risposte dell'API".
Vincoli rapidi
Indicare all'agente cosa non dovrebbe fare, non solo quello che dovrebbe:
- "Non modificare l'interfaccia dell'API pubblica; abbiamo clienti esterni".
- "Non è ancora possibile aggiornare Newtonsoft.Json: il team proprietario di contratti condivisi non è stato aggiornato".
- "Non toccare il modulo report legacy, che verrà riscritto separatamente".
Inviare commenti e suggerimenti
Il feedback positivo aiuta altrettanto quanto le correzioni e conferma che l'agente è sulla giusta strada:
- "L'aggiornamento ha un aspetto fantastico, applica lo stesso approccio per l'altro progetto del repository."
- "Questo funziona, ma preferiamo l'inserimento del costruttore rispetto all'inserimento di proprietà in questa codebase".
Riferimento rapido
| Situazione | Cosa dire |
|---|---|
| Avviare un nuovo aggiornamento | "Aggiornare la soluzione a .NET 10" |
| Riprendere il lavoro precedente | "Continua" o "Qual è lo stato?" |
| Passare alla modalità guidata | "Sospendi" o "Passa alla modalità guidata" |
| Passare alla modalità automatica | "Vai avanti" o "Continua senza chiedere" |
| Correggere una decisione | "In realtà, usare X invece di Y" |
| Impostare una preferenza | "Fai sempre X per questa soluzione" |
| Verificare le modifiche | "Mostra cosa è stato modificato" o controllare il log Git |
| Annullare una modifica | "Ripristinare l'ultima modifica" |
| Chiedi perché | "Perché hai scelto questo approccio?" |
| Ignorare un'attività | "Ignora questa attività per il momento" |
| Ottenere assistenza | "Cosa puoi fare?" |
Contenuti correlati
- Che cos'è la modernizzazione di GitHub Copilot?
- Concetti fondamentali
- Procedure consigliate
- Configurare GitHub Copilot modernizzazione
- Risoluzione dei problemi della modernizzazione di GitHub Copilot