Le quattro superfici di GitHub Copilot

GitHub Copilot non è un singolo prodotto ma una famiglia di superfici che condividono i modelli sottostanti ma differiscono per interfaccia, tipo di interazione e modalità di consumo del contesto. Conoscere quale superficie usare in quale scenario è centrale nell’esame GH-300: la scelta sbagliata è tecnicamente “possibile” ma inefficiente, e le domande sono costruite proprio su questa distinzione.

Inline completions (ghost text)

Le inline completions sono la superficie originaria: mentre scrivi nell’editor, Copilot propone in ghost text (testo grigio in linea) il completamento della riga o dell’intero blocco. Sono:

  • Predittive e implicite: il contesto è dedotto automaticamente dal file aperto, dai tab vicini e dalla posizione del cursore — non fornisci un prompt esplicito.
  • A bassa latenza, pensate per non interrompere il flusso di scrittura del codice.
  • Accettate con Tab, scartate con Esc; le varianti si scorrono con le scorciatoie dell’editor.

Sono ideali quando sai già cosa vuoi scrivere e ti serve accelerare: boilerplate, implementazioni ovvie, pattern ripetitivi, test simili tra loro.

Copilot Chat

Copilot Chat è la superficie conversazionale. A differenza delle completions, qui l’interazione è esplicita: poni una domanda in linguaggio naturale e, soprattutto, fornisci contesto in modo deliberato tramite le chat variables (#file, #selection, #codebase) e i slash command (/explain, /fix, /tests, /doc). È disponibile nell’IDE (VS Code, Visual Studio, JetBrains), su github.com, in GitHub Mobile e via @-partecipant per estenderla ad altri domini.

Usa la chat quando l’obiettivo è capire, ragionare o trasformare:

  • Spiegare codice legacy o un errore.
  • Refactor guidato di una selezione.
  • Generare test o documentazione con controllo sul risultato.
  • Domande architetturali sull’intero repository (#codebase).

Copilot nel CLI

Copilot in the CLI (via l’estensione gh copilot) porta l’assistenza nel terminale. Serve a chi vive nella shell:

gh copilot suggest "trova i file più grandi di 100MB"
gh copilot explain "git rebase -i HEAD~3"

suggest traduce l’intento in un comando (shell, gh o git) che puoi eseguire, copiare o rifinire; explain descrive in linguaggio naturale un comando complesso. È la superficie giusta quando il “codice” è una riga di comando e non vuoi lasciare il terminale.

Copilot coding agent

Il Copilot coding agent è la superficie asincrona e autonoma. Gli deleghi un task — tipicamente assegnandogli una issue o invocandolo da chat/PR — e lui lavora in background in un ambiente effimero (GitHub Actions): esplora il repository, applica le modifiche su un branch e apre una pull request che tu revisioni. Non è interattivo in tempo reale: è pensato per compiti ben delimitati e delegabili (correggere un bug circoscritto, aggiornare dipendenze, implementare una piccola feature descritta bene).

Spaces come contesto condiviso

I Copilot Spaces sono contenitori di contesto curato (file, repository, testo libero, istruzioni) che rendi disponibile a Copilot Chat per grounding coerente e riutilizzabile tra più conversazioni e membri del team — utili quando le risposte devono basarsi su conoscenza organizzativa specifica.

Quando usare cosa

  • Completions → sei nel flusso di scrittura e conosci la direzione: velocità inline.
  • Chat → devi chiedere, spiegare o refactoring controllato con contesto esplicito.
  • CLI → l’output desiderato è un comando da terminale.
  • Coding agent → il task è delegabile e asincrono e sfocia in una PR da revisionare.

Trappole tipiche d’esame

  • Scenario: uno sviluppatore vuole accelerare la scrittura di codice ripetitivo mentre digita → risposta giusta: inline completions (ghost text), non Copilot Chat. Le completions sono predittive e implicite; la chat è conversazionale ed esplicita. Non confonderle.
  • Scenario: “spiegami cosa fa questa funzione e proponi un refactor” → Copilot Chat con /explain o #selection, non le completions.
  • Scenario: si vuole assegnare a Copilot un’intera issue perché lavori da solo e produca una pull request → Copilot coding agent (asincrono), non chat interattiva né completions.
  • Scenario: serve tradurre un intento in un comando shell/git dal terminale → Copilot in the CLI (gh copilot suggest), non l’IDE.
  • Scenario: le risposte della chat devono basarsi su documentazione interna riutilizzabile tra colleghi → Copilot Spaces come contesto curato, non incollare tutto nel prompt ogni volta.