Creare agenti Di GitHub Copilot personalizzati in Visual Studio Code

Completato

Gli agenti personalizzati sono assistenti di intelligenza artificiale specializzati configurati per ruoli o flussi di lavoro specifici in Visual Studio Code. Ogni agente incapsula un set di istruzioni e autorizzazioni degli strumenti che guidano il comportamento di GitHub Copilot per fungere da tipo specifico di esperto. Quando si seleziona un agente personalizzato in GitHub Copilot Chat, l'intelligenza artificiale adotta la personalità dell'agente, segue le linee guida come da istruzioni e utilizza solo gli strumenti assegnati ad esso.

Che cosa sono gli agenti Di GitHub Copilot personalizzati?

Un agente personalizzato è una configurazione personalizzata che trasforma GitHub Copilot Chat in un assistente specifico del ruolo. Invece di basarsi sul comportamento generico, un agente personalizzato opera in base alle istruzioni e ai vincoli definiti dall'utente. Ad esempio, è possibile creare un agente "Revisore della sicurezza" che analizza il codice per individuare le vulnerabilità, un agente "Test Writer" incentrato sulla generazione di unit test o un agente "Planner" che produce piani di implementazione senza modificare alcun file.

Gli agenti personalizzati sono stati introdotti come funzionalità avanzata in Visual Studio Code (disponibile a partire dalla versione 1.106 di Visual Studio Code, nota in precedenza come "modalità chat personalizzate"). Offrono agli sviluppatori un controllo granulare sul funzionamento dell'intelligenza artificiale in contesti di sviluppo diversi. Ogni agente viene visualizzato nell'elenco a discesa Agenti di Chat di GitHub Copilot, in cui è possibile selezionarlo per cambiare la modalità di intelligenza artificiale in qualsiasi momento.

Gli agenti personalizzati possono essere archiviati in due posizioni:

  • Agenti dell'area di lavoro: archiviati nella .github/agents/ cartella del repository. Questi agenti vengono condivisi con il team tramite il controllo della versione, assicurandosi che tutti gli utenti del progetto dispongano degli stessi assistenti specializzati.

  • Agenti del profilo utente: archiviati nella cartella prompt del profilo utente di Visual Studio Code. Questi agenti sono personali e disponibili in tutte le aree di lavoro, utili per gli agenti che riflettono le preferenze dei singoli flussi di lavoro.

Esaminare il funzionamento degli agenti personalizzati

Un agente personalizzato è un file Markdown con estensione .agent.md . Visual Studio Code rileva automaticamente tutti i file .agent.md nella cartella dell'area di .github/agents/ lavoro (o nel profilo utente) e li carica come agenti disponibili nell'interfaccia chat di GitHub Copilot.

Ogni file agente è costituito da due parti:

  • Intestazione frontmatter YAML: questa sezione specifica i metadati, tra cui il nome dell'agente, una descrizione visualizzata nell'interfaccia della chat, gli strumenti che può usare, una preferenza di modello facoltativa e configurazioni handoff per la connessione ad altri agenti.

  • Un corpo Markdown: questa sezione contiene le istruzioni e il contesto dell'agente. Il contenuto viene anteponeto a ogni richiesta dell'utente ogni volta che l'agente è attivo, guidando il modo in cui GitHub Copilot interpreta e risponde alle richieste. Queste istruzioni vengono scritte nello stesso stile del linguaggio naturale usato per i file di istruzioni personalizzati.

I campi di frontmatter dell'agente

Il frontmatter YAML supporta i campi seguenti per la configurazione del comportamento dell'agente:

Campo Descrzione
description Breve descrizione visualizzata come testo segnaposto nell'input della chat quando l'agente è selezionato.
name Nome visualizzato facoltativo. Se omesso, viene usato il nome file (senza .agent.md).
tools Una matrice di strumenti che l'agente può usare, ad esempio ['read', 'edit', 'search']. L'omissione di questo campo consente l'accesso a tutti gli strumenti disponibili.
model Modello di intelligenza artificiale preferito. Può essere una singola stringa ID modello o una matrice di ID modello per il fallback (ad esempio, ['o4-mini', 'gpt-4.1']).
agents Matrice di nomi degli agenti che possono essere richiamati come subagenti da questo agente.
handoffs Matrice di configurazioni di handoff che definiscono le transizioni ad altri agenti (descritte nell'unità successiva).
argument-hint Testo dell'hint visualizzato nell'input della chat, che indica cosa l'utente dovrebbe digitare come input per l'agente.
user-invokable Valore booleano che controlla se l'agente viene visualizzato nel menu a tendina degli agenti. Impostare su false per creare agenti che possono essere chiamati solo come subagenti da altri agenti. Il valore predefinito è true.
disable-model-invocation Se impostato su true, l'agente non invia richieste al modello linguistico. Utile per gli agenti che eseguono azioni esclusivamente tramite strumenti.
target Specifica l'ambiente di esecuzione per l'agente: client (viene eseguito in Visual Studio Code, l'impostazione predefinita) o cloud (viene eseguito nel cloud).
mcp-servers Oggetto che definisce i server MCP (Model Context Protocol) a cui l'agente deve accedere. I server MCP estendono le funzionalità degli agenti connettendosi a strumenti esterni e origini dati.

L'esempio seguente illustra la struttura di un file dell'agente personalizzato usando diversi di questi campi:

---
description: Reviews code for security vulnerabilities and suggests improvements
tools: ['search', 'read']
---
# Security Reviewer

You are a senior security engineer. When the user provides code or asks you to review files, analyze the code for common security vulnerabilities including:

- SQL injection
- Cross-site scripting (XSS)
- Authentication and authorization flaws
- Insecure data handling
- Hardcoded credentials or secrets

Provide your findings as a structured list with severity levels (Critical, High, Medium, Low). For each finding, explain the vulnerability, show the affected code, and suggest a secure alternative.

Do not modify any files. Your role is advisory only.

Quando uno sviluppatore seleziona questo agente in GitHub Copilot Chat, tutte le interazioni usano queste istruzioni. L'agente "sa" deve concentrarsi sull'analisi della sicurezza e non tenterà di modificare i file perché le istruzioni e il set di strumenti lo limitano alle operazioni di sola lettura.

Definire le funzionalità dell'agente con gli strumenti

Il tools campo nel frontmatter YAML controlla le azioni che l'agente può eseguire. Gli strumenti determinano se l'agente può leggere i file, modificare il codice, eseguire ricerche nella codebase, eseguire comandi del terminale o accedere ad altre funzionalità. Personalizzando l'elenco degli strumenti, assicurarsi che ogni agente esegua solo azioni rilevanti per il proprio ruolo.

Gli strumenti comuni includono:

Strumento Descrzione
read Leggere il contenuto dei file dall'area di lavoro
edit Modificare i file nell'area di lavoro
search Eseguire ricerche tra i file dell'area di lavoro
fetch Recuperare il contenuto dagli URL
terminal Eseguire comandi nel terminale
agent Richiamare altri agenti come subagenti

Se si omette completamente il tools campo, per impostazione predefinita l'agente ha accesso a tutti gli strumenti standard. Tuttavia, elencare in modo esplicito gli strumenti è una procedura consigliata perché crea limiti chiari per il comportamento dell'agente. Un agente di pianificazione che non deve modificare il codice deve specificare solo ['search', 'read', 'fetch'], mentre un agente di implementazione che deve scrivere codice includerebbe ['search', 'read', 'edit', 'terminal'].

Annotazioni

Se uno strumento elencato nella configurazione dell'agente non è disponibile nell'ambiente corrente, viene ignorato automaticamente. Ciò significa che è possibile definire agenti con strumenti che potrebbero essere disponibili solo in determinate configurazioni senza causare errori.

Subagenti

Il agents campo nel frontmatter YAML consente a un agente di richiamare altri agenti come subagenti. Un subagent è un agente che un altro agente chiama per gestire una sottoattività, quindi incorpora il risultato nella propria risposta. Questo comportamento è diverso da un handoff, che trasferisce il controllo all'utente; Una chiamata subagente viene eseguita all'interno dell'elaborazione dell'agente e restituisce automaticamente il risultato all'agente chiamante.

Ad esempio, un agente "Lead Developer" potrebbe richiamare un sottoagente "Revisore della sicurezza" per controllare un frammento di codice, ricevere i risultati e quindi incorporare tali risultati nella risposta finale, tutto all'interno di una singola interazione.

Per configurare i subagenti, elencare i nomi dei subagenti nel agents campo:

---
description: Lead developer agent that coordinates with specialists
tools: ['search', 'read', 'edit']
agents: ['security-reviewer', 'test-writer']
---

Gli agenti destinati solo all'uso come subagenti possono impostare user-invokable: false in modo che non vengano visualizzati nell'elenco a discesa degli agenti, mantenendo pulita l'interfaccia.

Annotazioni

Per usare i subagenti, includere lo agent strumento nell'elenco dell'agente tools chiamante (o omettere completamente il tools campo per abilitare tutti gli strumenti). Lo agent strumento consente a un agente di chiamare un altro a livello di codice durante la risposta.

Agenti a livello di organizzazione

Per i team che gestiscono agenti condivisi tra più repository, GitHub supporta gli agenti a livello di organizzazione. Questi agenti vengono configurati a livello di organizzazione GitHub e vengono visualizzati automaticamente insieme agli agenti dell'area di lavoro e del profilo utente in Visual Studio Code quando si è connessi a un account GitHub con accesso all'organizzazione.

Gli agenti a livello di organizzazione garantiscono la coerenza tra i team. Ad esempio, un team di sicurezza può pubblicare un agente condiviso "Revisore della sicurezza" che ogni repository dell'organizzazione può usare, garantendo che gli stessi criteri di revisione della sicurezza vengano applicati ovunque senza richiedere a ogni repository di definire il proprio agente.

Compatibilità del formato dell'agente

Visual Studio Code riconosce i file dell'agente nel formato .agent.md come configurazione primaria. Visual Studio Code supporta anche i file dell'agente in stile Claude che seguono il formato dell'agente Claude Code. Se si dispone già di configurazioni dell'agente da Claude Code, queste funzionino in GitHub Copilot Chat di Visual Studio Code senza alcuna modifica. Questa compatibilità incrociata semplifica la migrazione per i team che usano più strumenti di intelligenza artificiale.

Agenti integrati vs. agenti personalizzati

Visual Studio Code include diversi agenti predefiniti che forniscono configurazioni per utilizzo generico per la chat. Questi agenti includono l'agente predefinito "GitHub Copilot" e gli agenti specializzati per le attività comuni. Gli agenti personalizzati estendono questo sistema consentendo di definire ruoli personalizzati con istruzioni e configurazioni degli strumenti specifiche del progetto.

Gli agenti personalizzati vengono visualizzati nell'elenco a discesa Agenti di Chat di GitHub Copilot insieme agli agenti predefiniti. È possibile passare da qualsiasi agente in qualsiasi momento per modificare il funzionamento dell'intelligenza artificiale. Questa flessibilità consente di spostarsi tra diverse modalità di lavoro, ovvero pianificazione, codifica, revisione, test, senza uscire dall'interfaccia Di Chat di GitHub Copilot.

Il vantaggio principale degli agenti personalizzati rispetto agli agenti predefiniti è la specificità. Un agente di revisione del codice predefinito applica le procedure consigliate generali, mentre l'agente personalizzato "Revisore del codice" può applicare l'elenco di controllo di revisione specifico del team, fare riferimento alle decisioni architetturali del progetto e concentrarsi sui modelli e sugli anti-pattern più importanti nella codebase.

Passaggi per creare un agente personalizzato

Seguire questa procedura per creare un agente personalizzato in Visual Studio Code:

  1. Aprire il menu agenti: nel riquadro Chat di GitHub Copilot aprire l'elenco a discesa degli agenti ( che in genere mostra il nome dell'agente corrente). Selezionare Configura agenti personalizzati e quindi scegliere Crea nuovo agente personalizzato. In alternativa, eseguire il Chat: New Custom Agent comando dal riquadro comandi (CTRL+MAIUSC+P).

  2. Scegliere l'ambito: selezionare dove archiviare il file dell'agente. Scegliere Area di lavoro per creare il file in .github/agents/ (rendendolo disponibile al team tramite il controllo della versione) oppure scegliere Profilo utente per renderlo personale e disponibile in tutte le aree di lavoro.

  3. Assegnare un nome all'agente: immettere un nome di file descrittivo per l'agente. Questo nome viene visualizzato come nome predefinito nell'elenco a discesa agenti. Usare un nome che indica chiaramente il ruolo dell'agente, ad esempio planner, code-reviewero test-writer.

  4. Definire i metadati dell'agente: nel frontmatter YAML del file appena creato .agent.md configurare le proprietà dell'agente. Impostare un description (questo testo viene visualizzato come testo segnaposto nell'input della chat quando l'agente è selezionato), specificare a cosa l'agente tools deve avere accesso e, opzionalmente, impostare un model preferito o configurare handoffs per altri agenti.

  5. Scrivere le istruzioni dell'agente: nel corpo del file sotto il frontmatter YAML specificare le istruzioni personalizzate per l'agente. Queste istruzioni definiscono la persona, l'esperienza e le linee guida comportamentali dell'agente. Scriverli in Markdown usando un linguaggio chiaro e specifico che indica all'intelligenza artificiale come affrontare le attività, su cosa concentrarsi e sui vincoli da seguire.

  6. Salvare e attivare: salvare il file. L'agente personalizzato viene visualizzato immediatamente nell'elenco a discesa GitHub Copilot Chat agents (presupponendo user-invokable che sia true, che è l'impostazione predefinita). Selezionare l'agente per iniziare a usarlo.

Suggerimento

Puoi digitare /agents in GitHub Copilot Chat come collegamento rapido per visualizzare e passare tra tutti gli agenti disponibili, inclusi quelli predefiniti, dell'area di lavoro, del profilo utente e a livello di organizzazione.

Competenze dell'agente

Le competenze dell'agente sono un concetto correlato ma distinto dagli agenti personalizzati. Mentre gli agenti definiscono un utente con istruzioni e strumenti, le competenze dell'agente (definite nei SKILL.md file) descrivono funzionalità specifiche o aree di competenza che un agente può trarre. Le competenze forniscono metadati strutturati su ciò che un agente conosce e può fare. Visual Studio Code supporta competenze come parte del sistema di personalizzazione più ampio. Le competenze vengono in genere definite nell'area di lavoro e rilevate automaticamente da GitHub Copilot per migliorare le risposte degli agenti con conoscenze specializzate.

Esempi di agenti personalizzati

Negli esempi seguenti viene illustrato come definire gli agenti per i ruoli di sviluppo comuni.

Agente "Planner"

Un agente di Planner è incentrato sull'analisi dei requisiti e sulla generazione di piani di implementazione senza modificare alcun codice. Usa solo strumenti di sola lettura e include un passaggio a un agente di implementazione per quando il piano è pronto per essere eseguito.

---
description: Generates high-level implementation plans without writing code
tools: ['search', 'read', 'fetch']
handoffs:
  - label: Start Implementation
    agent: implementer
    prompt: Now implement the plan outlined above.
    send: false
---
# Planner

You are a senior software architect. When the user describes a feature or change, analyze the request and generate a detailed implementation plan.

Your plan should include:
1. A summary of the feature requirements.
2. A list of files that need to be created or modified.
3. Step-by-step implementation tasks in logical order.
4. Any potential risks or considerations.

Do not write or modify any code. Focus on planning only. Ask clarifying questions if the requirements are ambiguous.

Agente "Revisore del codice"

Un agente revisore del codice esamina il codice per individuare problemi di qualità, vulnerabilità di sicurezza e conformità alle procedure consigliate. Usa strumenti di lettura e ricerca, ma non modifica direttamente i file.

---
description: Reviews code for bugs, security issues, and style compliance
tools: ['search', 'read']
---
# Code Reviewer

You are an experienced code reviewer. When the user asks you to review code, examine it for:

- Bugs and logical errors
- Security vulnerabilities (SQL injection, XSS, authentication flaws)
- Performance issues
- Naming convention violations
- Missing error handling
- Code duplication

Present your findings as a structured review with severity levels. For each issue, explain the problem, show the affected code, and suggest an improvement. End with an overall assessment of code quality.

Questi esempi possono essere adattati in base alle esigenze specifiche del team. Il principio chiave consiste nel definire istruzioni chiare per concentrare l'agente su un'attività specifica e configurare l'elenco degli strumenti in modo che corrisponda alle responsabilità dell'agente.

Riassunto

Gli agenti personalizzati in Visual Studio Code consentono di definire utenti di intelligenza artificiale specializzati con istruzioni personalizzate e autorizzazioni per gli strumenti. .agent.md Creando file nell'area di lavoro o nel profilo utente, è possibile creare agenti per ruoli di sviluppo specifici, ovvero pianificazione, implementazione, revisione, test e altro ancora. Ogni agente opera entro i limiti definiti, usando solo gli strumenti consentiti e seguendo le istruzioni fornite. Le funzionalità avanzate, ad esempio i subagenti, gli agenti a livello di organizzazione e l'integrazione del server MCP, estendono le operazioni che gli agenti possono eseguire. Queste funzionalità offrono un controllo preciso sul comportamento di GitHub Copilot in diverse fasi del flusso di lavoro di sviluppo.