Erstellen von benutzerdefinierten GitHub Copilot-Agents in Visual Studio Code

Abgeschlossen

Benutzerdefinierte Agents sind spezielle KI-Assistenten, die Sie für bestimmte Rollen oder Workflows in Visual Studio Code konfigurieren. Jeder Agent kapselt eine Reihe von Anweisungen und Toolberechtigungen, die das Verhalten von GitHub Copilot steuern, um als spezifische Art von Experte zu fungieren. Wenn Sie einen benutzerdefinierten Agent in GitHub Copilot Chat auswählen, übernimmt die KI die Persona dieses Agenten, folgt seinen Richtlinien und verwendet nur die Tools, die Sie ihm zugewiesen haben.

Was sind benutzerdefinierte GitHub Copilot-Agents?

Ein benutzerdefinierter Agent ist eine maßgeschneiderte Konfiguration, die GitHub Copilot Chat in einen rollenspezifischen Assistenten transformiert. Anstatt sich auf ein allgemeines Verhalten zu verlassen, funktioniert ein benutzerdefinierter Agent gemäß Anweisungen und Einschränkungen, die Sie definieren. Sie können beispielsweise einen "Security Reviewer"-Agent erstellen, der Code für Sicherheitsrisiken analysiert, einen "Test Writer"-Agent, der sich auf das Generieren von Komponententests konzentriert, oder einen "Planner"-Agent, der Implementierungspläne erzeugt, ohne Dateien zu ändern.

Benutzerdefinierte Agents wurden als erweitertes Feature in Visual Studio Code eingeführt (verfügbar ab Visual Studio Code, Version 1.106, zuvor als "benutzerdefinierte Chatmodi" bezeichnet). Sie bieten Entwicklern eine differenzierte Kontrolle darüber, wie die KI in verschiedenen Entwicklungskontexten funktioniert. Jeder Agent wird im Dropdownmenü "GitHub Copilot Chat Agents" angezeigt, in dem Sie ihn auswählen können, um den KI-Modus jederzeit zu wechseln.

Benutzerdefinierte Agents können an zwei Speicherorten gespeichert werden:

  • Arbeitsbereichs-Agenten: werden im Ordner Ihres Repositorys .github/agents/ gespeichert. Diese Agents werden über die Versionssteuerung für Ihr Team freigegeben, um sicherzustellen, dass jeder im Projekt Zugriff auf dieselben spezialisierten Assistenten hat.

  • Benutzerprofil-Agents: Im Eingabeaufforderungsordner Ihres Visual Studio Code-Benutzerprofils gespeichert. Diese Agents sind persönlich und für alle Arbeitsbereiche verfügbar, was für Agents nützlich sind, die Ihre individuellen Workfloweinstellungen widerspiegeln.

Untersuchen Sie die Funktionsweise von benutzerdefinierten Agents

Ein benutzerdefinierter Agent ist eine Markdown-Datei mit einer .agent.md Erweiterung. Visual Studio Code erkennt automatisch alle .agent.md Dateien im Ordner Ihres Arbeitsbereichs .github/agents/ (oder in Ihrem Benutzerprofil) und lädt sie als verfügbare Agents in der GitHub Copilot Chat-Schnittstelle.

Jede Agentdatei besteht aus zwei Teilen:

  • Ein YAML-Frontmatter-Header: Dieser Abschnitt spezifiziert Metadaten einschließlich des Namens des Agenten, einer Beschreibung, die in der Chatschnittstelle erscheint, der Tools, die er verwenden kann, eine optionale Modellauswahl und Übergabekonfigurationen für die Verbindung mit anderen Agenten.

  • Ein Markdowntext: Dieser Abschnitt enthält die Anweisungen und den Kontext des Agents. Der Inhalt wird jedem Benutzerprompt vorangestellt, sobald der Agent aktiv ist, und leitet GitHub Copilot dabei an, wie Anfragen interpretiert und beantwortet werden. Sie schreiben diese Anweisungen in demselben Stil der natürlichen Sprache, der für benutzerdefinierte Anweisungsdateien verwendet wird.

Agent-Frontmatter-Felder

Der YAML-Frontmatter unterstützt die folgenden Felder zum Konfigurieren des Agentverhaltens:

Feld Description
description Eine kurze Beschreibung, die als Platzhaltertext in der Chateingabe angezeigt wird, wenn der Agent ausgewählt ist.
name Optionaler Anzeigename. Wird dieser Parameter nicht angegeben, wird der Dateiname (ohne .agent.md) verwendet.
tools Eine Reihe von Werkzeugen, die der Agent verwenden kann, z. B. ['read', 'edit', 'search']. Wenn Sie dieses Feld weglassen, erhalten Sie Zugriff auf alle verfügbaren Tools.
model Ein bevorzugtes KI-Modell. Dies kann eine einzelne Modell-ID-Zeichenfolge oder ein Array von Modell-IDs für Fallback sein (z. B ['o4-mini', 'gpt-4.1']. ).
agents Ein Array von Agentennamen, die von diesem Agenten als Subagenten aufgerufen werden können.
handoffs Ein Array von Übergabekonfigurationen, die Übergänge zu anderen Agents definieren (in der nächsten Einheit behandelt).
argument-hint Hinweistext, der in der Chateingabe angezeigt wird und beschreibt, was der Benutzer als Eingabe für den Agent eingeben soll.
user-invokable Ein boolescher Wert, der steuert, ob der Agent in der Dropdownliste "Agents" angezeigt wird. Legen Sie den Wert auf false fest, um Agenten zu erstellen, die nur von anderen Agenten als Subagenten aufgerufen werden können. Wird standardmäßig auf true festgelegt.
disable-model-invocation Wenn diese Einstellung truefestgelegt ist, sendet der Agent keine Eingabeaufforderungen an das Sprachmodell. Nützlich für Agents, die Aktionen ausschließlich über Tools ausführen.
target Gibt die Ausführungsumgebung für den Agenten an: client (läuft standardmäßig in Visual Studio Code) oder cloud (läuft in der Cloud).
mcp-servers Ein Objekt, das MCP-Server (Model Context Protocol) definiert, auf die der Agent Zugriff haben soll. MCP-Server erweitern die Agent-Funktionen, indem sie eine Verbindung mit externen Tools und Datenquellen herstellen.

Das folgende Beispiel zeigt die Struktur einer benutzerdefinierten Agent-Datei mit mehreren dieser Felder:

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

Wenn ein Entwickler diesen Agent in GitHub Copilot Chat auswählt, verwenden alle Interaktionen diese Anweisungen. Der Agent "weiß", dass er sich auf die Sicherheitsanalyse konzentrieren sollte und nicht versucht, Dateien zu bearbeiten, da seine Anweisungen und Tools sie auf schreibgeschützte Vorgänge beschränken.

Definieren von Agentfunktionen mit Tools

Das tools Feld im YAML-Frontmatter steuert, welche Aktionen der Agent ausführen kann. Tools bestimmen, ob der Agent Dateien lesen, Code bearbeiten, die Codebasis durchsuchen, Terminalbefehle ausführen oder auf andere Funktionen zugreifen kann. Indem Sie die Toolliste anpassen, stellen Sie sicher, dass jeder Agent nur Aktionen ausführt, die für seine Rolle relevant sind.

Zu den gängigen Tools gehören:

Werkzeug Description
read Inhalte von Dateien aus dem Arbeitsbereich lesen
edit Ändern von Dateien im Arbeitsbereich
search Arbeitsbereichsdateien durchsuchen
fetch Abrufen von Inhalten aus URLs
terminal Ausführen von Befehlen im Terminal
agent Aufrufen anderer Agents als Subagenten

Wenn Sie das tools Feld vollständig weglassen, hat der Agent standardmäßig Zugriff auf alle Standardtools. Die explizite Auflistung von Tools ist jedoch eine bewährte Methode, da sie klare Grenzen für das Verhalten des Agents erstellt. Ein Planungs-Agent, der code nicht ändern sollte, sollte nur ['search', 'read', 'fetch']angeben, während ein Implementierungs-Agent, der Code schreiben muss, enthalten ['search', 'read', 'edit', 'terminal']würde.

Hinweis

Wenn ein in der Konfiguration des Agents aufgeführtes Tool in der aktuellen Umgebung nicht verfügbar ist, wird es im Hintergrund ignoriert. Dies bedeutet, dass Sie Agents mit Tools definieren können, die möglicherweise nur in bestimmten Setups verfügbar sind, ohne Fehler zu verursachen.

Subagenten

Das agents Feld im YAML-Frontmatter ermöglicht es einem Agenten, andere Agenten als Subagenten aufzurufen. Ein Subagent ist ein Agent, den ein anderer Agent aufruft, um einen Teilvorgang zu verarbeiten, und das Ergebnis dann in seine eigene Antwort integriert. Dieses Verhalten unterscheidet sich von einer Übergabe, die die Kontrolle an den Benutzer überträgt; Ein Subagent-Aufruf erfolgt in der Verarbeitung des Agents und gibt das Ergebnis automatisch an den aufrufenden Agent zurück.

Beispielsweise könnte ein "Lead Developer"-Agent einen Subagent "Security Reviewer" aufrufen, um einen Codeausschnitt zu überprüfen, die Ergebnisse zu erhalten und diese Ergebnisse dann in seine endgültige Antwort zu integrieren – alles innerhalb einer einzigen Interaktion.

Um Subagenten zu konfigurieren, listen Sie die Namen des agents Subagenten im Feld auf:

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

Agenten, die nur als Subagenten verwendet werden sollen, können so festgelegt werden, dass user-invokable: false sie nicht in der Dropdown-Liste der Agenten angezeigt werden und die Schnittstelle sauber bleibt.

Hinweis

Um Subagenten zu verwenden, schließen Sie das agent Tool in die Liste des aufrufenden Agents tools ein (oder lassen Sie das tools Feld vollständig aus, um alle Tools zu aktivieren). Mit dem agent Tool kann ein Agent während seiner Antwort programmgesteuert eine andere aufrufen.

Agents auf Organisationsebene

Für Teams, die gemeinsam genutzte Agents in mehreren Repositorys verwalten, unterstützt GitHub Agents auf Organisationsebene. Diese Agents werden auf GitHub-Organisationsebene konfiguriert und werden automatisch zusammen mit Arbeitsbereichen und Benutzerprofil-Agents in Visual Studio Code angezeigt, wenn Sie mit Zugriff auf die Organisation bei einem GitHub-Konto angemeldet sind.

Agents auf Organisationsebene sorgen für Konsistenz in allen Teams. Beispielsweise kann ein Sicherheitsteam einen freigegebenen "Sicherheitsprüfer"-Agent veröffentlichen, den jedes Repository in der Organisation verwenden kann, um sicherzustellen, dass die gleichen Sicherheitsüberprüfungskriterien überall angewendet werden, ohne dass jedes Repository seinen eigenen Agent definieren muss.

Agentformatkompatibilität

Visual Studio Code erkennt Agentdateien im .agent.md Format als primäre Konfiguration. Darüber hinaus unterstützt Visual Studio Code Agent-Dateien im Claude-Stil, die dem Claude Code-Agent-Format folgen. Wenn Sie bereits über Agentkonfigurationen von Claude Code verfügen, funktionieren sie ohne Änderung im GitHub Copilot-Chat von Visual Studio Code. Diese kompatibilitätsübergreifende Kompatibilität vereinfacht die Migration für Teams, die mehrere KI-Tools verwenden.

Integrierte und benutzerdefinierte Agenten

Visual Studio Code enthält mehrere integrierte Agents, die allgemeine Konfigurationen für Chats bereitstellen. Zu diesen Agents gehören der Standard-Agent "GitHub Copilot" und spezialisierte Agents für allgemeine Aufgaben. Benutzerdefinierte Agents erweitern dieses System, indem Sie Ihre eigenen Rollen mit projektspezifischen Anweisungen und Toolkonfigurationen definieren können.

Benutzerdefinierte Agents werden zusammen mit den integrierten Agents im Dropdownmenü "GitHub Copilot Chat Agents" angezeigt. Sie können jederzeit zwischen jedem Agenten wechseln, um die Funktionsweise der KI zu ändern. Diese Flexibilität ermöglicht es Ihnen, zwischen verschiedenen Arbeitsmodi – Planung, Codierung, Überprüfung, Tests – zu wechseln, ohne die GitHub Copilot Chat-Schnittstelle verlassen zu müssen.

Der hauptvorteil von benutzerdefinierten Agents gegenüber integrierten Agents ist Spezifität. Ein integrierter Codeüberprüfungs-Agent wendet allgemeine bewährte Methoden an, während Ihr benutzerdefinierter "Code Reviewer"-Agent die spezifische Prüfliste Ihres Teams anwenden kann, auf die Architekturentscheidungen Ihres Projekts verweisen und sich auf die Muster und Antimuster konzentrieren kann, die in Ihrer Codebasis am wichtigsten sind.

Schritte zum Erstellen eines benutzerdefinierten Agents

Führen Sie die folgenden Schritte aus, um einen benutzerdefinierten Agent in Visual Studio Code zu erstellen:

  1. Öffnen Sie das Menü "Agents": Öffnen Sie im Bereich "GitHub Copilot Chat" die Dropdownliste "Agents" (in der Regel wird der name des aktuellen Agents angezeigt). Wählen Sie "Benutzerdefinierte Agents konfigurieren" und dann " Neuen benutzerdefinierten Agent erstellen" aus. Alternativ können Sie den Chat: New Custom Agent Befehl über die Befehlspalette (STRG+UMSCHALT+P) ausführen.

  2. Wählen Sie den Bereich aus: Wählen Sie aus, wo die Agentdatei gespeichert werden soll. Wählen Sie "Arbeitsbereich" aus, in .github/agents/ dem die Datei erstellt werden soll (indem Sie sie über die Versionssteuerung für Ihr Team verfügbar machen), oder wählen Sie "Benutzerprofil " aus, um sie für alle Arbeitsbereiche persönlich und verfügbar zu machen.

  3. Benennen Sie den Agent: Geben Sie einen beschreibenden Dateinamen für den Agent ein. Dieser Name wird als Standardname in der Dropdownliste "Agents" angezeigt. Verwenden Sie einen Namen, der eindeutig die Rolle des Agents angibt, wie z. B. planner, code-reviewer oder test-writer.

  4. Definieren Sie die Agentmetadaten: Konfigurieren Sie in der YAML-Frontmatter der neu erstellten .agent.md Datei die Eigenschaften des Agents. Legen Sie einen description fest (dieser Text wird als Platzhaltertext in der Chateingabe angezeigt, wenn der Agent ausgewählt ist), geben Sie an, auf welche tools der Agent Zugriff haben soll, und legen Sie optional einen bevorzugten model fest oder konfigurieren Sie handoffs für andere Agenten.

  5. Schreiben Sie die Anweisungen des Agents: Geben Sie im Textkörper der Datei unter dem YAML-Frontmatter die benutzerdefinierten Anweisungen für den Agent an. Diese Anweisungen definieren die Persona, das Fachwissen und die Verhaltensrichtlinien des Agenten. Schreiben Sie sie in Markdown mithilfe eindeutiger, bestimmter Sprache, die die KI angibt, wie Sie Aufgaben angehen, worauf Sie sich konzentrieren müssen, und welche Einschränkungen eingehalten werden sollen.

  6. Speichern und aktivieren: Speichern Sie die Datei. Der benutzerdefinierte Agent wird sofort im Dropdownmenü „GitHub Copilot Chat-Agents“ angezeigt (vorausgesetzt, user-invokable ist true, die Standardeinstellung). Wählen Sie den Agent aus, um mit seiner Verwendung zu beginnen.

Tipp

Sie können /agents in GitHub Copilot Chat eingeben, um schnell eine Übersicht über alle verfügbaren Agents anzuzeigen und zwischen ihnen zu wechseln, einschließlich integrierter, Arbeitsbereichs-, Benutzerprofil- und Organisationslevel-Agents.

Agent-Fähigkeiten

Agent-Skills sind ein verwandtes, aber eigenständiges Konzept im Vergleich zu benutzerdefinierten Agents. Während Agents eine Persona mit Anweisungen und Tools definieren, beschreiben Agent-Fähigkeiten (definiert in SKILL.md Dateien) bestimmte Funktionen oder Fachgebiete, auf die ein Agent zurückgreifen kann. Fähigkeiten bieten strukturierte Metadaten darüber, was ein Agent weiß und kann. Visual Studio Code unterstützt Fähigkeiten im Rahmen des umfassenderen Anpassungssystems. Fähigkeiten werden üblicherweise in Ihrem Arbeitsbereich definiert und von GitHub Copilot automatisch erkannt, um die Agent-Antworten mit spezialisierten Kenntnissen zu verbessern.

Beispiele für benutzerdefinierte Agents

Die folgenden Beispiele veranschaulichen, wie Agents für allgemeine Entwicklungsrollen definiert werden.

"Planner"-Agent

Ein Planner-Agent konzentriert sich auf die Analyse von Anforderungen und das Generieren von Implementierungsplänen, ohne Code zu ändern. Dabei werden nur schreibgeschützte Tools verwendet, und dazu gehört eine Übergabe an einen Implementierungs-Agent für den Zeitpunkt, zu dem der Plan zur Ausführung bereit ist.

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

Agent "Code Reviewer"

Ein Codeprüfer-Agent untersucht Code auf Qualitätsprobleme, Sicherheitsrisiken und einhaltung bewährter Methoden. Es verwendet Lese- und Suchtools, bearbeitet jedoch keine Dateien direkt.

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

Diese Beispiele können an die spezifischen Anforderungen Ihres Teams angepasst werden. Das Hauptprinzip besteht darin, klare Anweisungen zu definieren, die den Agent auf eine bestimmte Aufgabe konzentrieren und die Toolliste so konfigurieren, dass sie den Verantwortlichkeiten des Agents entspricht.

Zusammenfassung

Mit benutzerdefinierten Agents in Visual Studio Code können Sie spezielle KI-Personas mit maßgeschneiderten Anweisungen und Toolberechtigungen definieren. Indem Sie Dateien in Ihrem Arbeitsbereich oder Benutzerprofil erstellen .agent.md , können Sie Agents für bestimmte Entwicklungsrollen erstellen – Planung, Implementierung, Überprüfung, Tests und vieles mehr. Jeder Agent arbeitet innerhalb der von Ihnen definierten Grenzen und verwendet nur die tools, die Sie zulassen und den anweisungen folgen, die Sie angeben. Erweiterte Features wie Subagenten, Agents auf Organisationsebene und MCP-Serverintegration erweitern, was Agents erreichen können. Mit diesen Funktionen können Sie genau steuern, wie sich GitHub Copilot in verschiedenen Phasen Ihres Entwicklungsworkflows verhält.