Skip to main content

Verantwortungsvolle Nutzung des Copilot-Programmier-Agents auf GitHub.com

Hier erfährst du, wie du Copilot-Programmier-Agent auf GitHub.com verantwortungsbewusst verwendest, indem die Zwecke, Funktionen und Einschränkungen erläutert werden.

Informationen zu Copilot-Programmier-Agent auf GitHub.com

Copilot-Programmier-Agent ist ein autonomer und asynchroner Softwareentwicklungs-Agent, der in GitHub integriert ist. Der Agent kann eine Aufgabe von einem Issue oder aus Copilot Chat übernehmen, einen Pull Request erstellen und dann als Reaktion auf Kommentare den Pull Request durchlaufen.

Copilot-Programmier-Agent kann angemessene Änderungen basierend auf deiner Beschreibung und Konfiguration generieren, einschließlich Aufgaben wie Fehlerbehebungen, Implementieren inkrementeller neuer Features, Prototyperstellung, Dokumentation und Pflege der Codebasis. Nachdem der anfängliche Pull Request erstellt wurde, kann der Agent basierend auf deinen Feedback und deinen Rezensionen mit dir iterieren.

Während der Arbeit an deiner Aufgabe hat der Agent Zugriff auf seine eigene kurzlebige Entwicklungsumgebung, in der er Änderungen an deinem Code vornehmen, automatisierte Tests durchführen und Linter ausführen kann.

Der Agent wurde für eine Vielzahl von Programmiersprachen ausgewertet, wobei Englisch als primär unterstützte Sprache verwendet wird.

Der Agent arbeitet mit einer Kombination aus Verarbeitung natürlicher Sprache und maschinellem Lernen, um deine Aufgabe zu verstehen und Änderungen an einer Codebasis vorzunehmen, um die Aufgabe abzuschließen. Dieser Prozess kann in eine Reihe von Schritten unterteilt werden.

Promptverarbeitung

Die Aufgabe, die Copilot über ein Issue, einen Pull-Request-Kommentar oder eine Copilot Chat-Nachricht erhält, wird mit anderen relevanten, kontextbezogenen Informationen kombiniert, um einen Prompt zu erstellen. Dieser Prompt wird zur Verarbeitung an ein großes Sprachmodell gesendet. Eingaben sind in Form von einfacher natürlicher Sprache, Codeausschnitten oder Bildern möglich.

Sprachmodellanalyse

Der Prompt wird dann über ein großes Sprachmodell übergeben. Dabei handelt es sich um ein neuronales Netz, das mit einer großen Menge an Daten trainiert wurde. Das Sprachmodell analysiert den Prompt, um den Agent bei Rückschlüssen für die Aufgabe und der Verwendung der erforderlichen Tools zu unterstützen.

Antwortgenerierung

Das Sprachmodell generiert basierend auf seiner Analyse des Prompts eine Antwort. Diese Antwort kann in Form von Vorschlägen in natürlicher Sprache und Codevorschlägen erfolgen.

Ausgabeformatierung

Sobald der Agent die erste Ausführung abgeschlossen hat, aktualisiert er die Beschreibung des Pull Requests mit den vorgenommenen Änderungen. Der Agent kann zusätzliche Informationen zu Ressourcen angeben, auf die er nicht zugreifen konnte, und Vorschläge zu den notwendigen Schritten machen.

Du kannst dem Agent Feedback geben, indem du Kommentare im Pull Request machst oder den Agent explizit erwähnst (@copilot). Der Agent sendet dieses Feedback dann erneut an das Sprachmodell zur weiteren Analyse. Sobald der Agent Änderungen basierend auf dem Feedback vorgenommen hat, antwortet er mit den Änderungen auf deinen Kommentar.

Copilot soll dir die relevanteste Lösung für die Aufgabenbewältigung liefern. Es ist jedoch möglicherweise nicht immer die Antwort, die du suchst. Du bist dafür verantwortlich, die von Copilot generierten Antworten auf Richtigkeit und Angemessenheit zu prüfen.

Darüber hinaus wendet GitHub im Rahmen unseres Produktentwicklungsprozesses Read Teaming (Tests), um die Sicherheit des Agents zu verstehen und zu verbessern.

Informationen zur Verbesserung der Leistung findest du unter Verbesserung der Leistung für Copilot-Programmier-Agent weiter unten.

Anwendungsfälle für Copilot-Programmier-Agent

Du kannst in vielen Szenarios eine Aufgabe an Copilot delegieren, einschließlich, aber nicht beschränkt auf:

  • Pflege der Codebasis: sicherheitsbezogene Fixes, Abhängigkeitsupgrades und gezieltes Refactoring
  • Dokumentation: Aktualisieren und Erstellen neuer Dokumentationen
  • Featureentwicklung: Implementieren inkrementeller Featureanfragen
  • Verbesserung der Testabdeckung: Entwicklung zusätzlicher Testsuites für das Qualitätsmanagement
  • Prototyperstellung neuer Projekte: Greenfielding neuer Konzepte

Verbessern der Leistung für Copilot-Programmier-Agent

Copilot-Programmier-Agent kann verschiedenste Aufgaben unterstützen. Um die Leistung zu verbessern und einige der Einschränkungen des Agenten zu beheben, gibt es verschiedene Maßnahmen, die du treffen kannst.

Weitere Informationen zu Einschränkungen findest du unter Einschränkungen von Copilot-Programmier-Agent weiter unten.

Sicherstellen von klar definierten Aufgabenbereichen

Copilot-Programmier-Agent nutzt deinen Prompt als Schlüsselkontext beim Generieren eines Pull Requests. Je klarer und übersichtlicher der Prompt ist, den du dem Agent zuweist, desto besser sind die Ergebnisse. Ein ideales Issue enthält:

  • Eine klare Beschreibung des zu lösenden Problems oder der erforderlichen Arbeit
  • Vollständige Akzeptanzkriterien für eine gute Lösung (sollte es z. B. Komponententests geben?)
  • Hinweise oder Indikatoren, welche Dateien geändert werden müssen

Anpassen mit zusätzlichem Kontext

Copilot-Programmier-Agent nutzt deinen Prompt, Kommentare und den Code des Repositorys als Kontext, wenn vorgeschlagene Änderungen generiert werden. Um die Leistung von Copilot zu verbessern, solltest du benutzerdefinierte Copilot-Anweisungen implementieren, damit der Agent dein Projekt und das Vornehmen, Testen und Überprüfen der Änderungen besser versteht. Weitere Informationen findest du unter „Hinzufügen von benutzerdefinierten Anweisungen zu deinem Repository“ unter Best practices for using Copilot to work on tasks.

Informationen zu anderen Anpassungen für Copilot-Programmier-Agent findest du unter:

Copilot-Programmier-Agent als Tool verwenden, nicht als Ersatz

Copilot-Programmier-Agent kann zwar ein leistungsfähiges Tool zum Generieren von Code und Dokumentation sein, es ist aber wichtig, es als Hilfsmittel und nicht als Ersatz für die menschliches Programmieren zu verwenden. Du solltest die vom Agent generierten Inhalte immer überprüfen und testen, um sicherzustellen, dass sie deine Anforderungen erfüllt und vor dem Mergen frei von Fehlern oder Sicherheitsproblemen sind.

Methoden für die sichere Programmierung und Code Reviews verwenden

Obwohl Copilot-Programmier-Agent syntaktisch korrekten Code generieren kann, ist dieser möglicherweise nicht immer sicher. Du solltest immer bewährte Methoden für die sichere Programmierung befolgen und beispielsweise hartcodierte Kennwörter oder Sicherheitsrisiken durch Einschleusung von SQL vermeiden. Zudem solltest du dich an die bewährten Methoden für Code Reviews halten, um die Einschränkungen des Agents zu berücksichtigen. Du solltest immer die gleichen Vorsichtsmaßnahmen treffen wie bei selbstgeschriebenem Code, der Material verwendet, das du nicht unabhängig bezogen hast, einschließlich solcher Vorsichtsmaßnahmen, um dessen Eignung zu gewährleisten. Diese Vorsichtsmaßnahmen umfassen strenge Tests, IP-Überprüfungen und Suchen nach Sicherheitsrisiken.

Feedback geben

Wenn Probleme oder Einschränkungen mit Copilot-Programmier-Agent für GitHub.com auftreten, empfehlen wir, Feedback zu geben, indem du unter jeder Agent-Antwort auf Daumen-runter-Symbol klickst. Dies kann Entwickler*innen dabei helfen, das Tool zu verbessern und alle Probleme oder Einschränkungen zu behandeln. Darüber hinaus kannst du Feedback im Communityforum geben.

Auf dem Laufenden bleiben

Copilot-Programmier-Agent ist eine neue Technologie und wird sich wahrscheinlich im Laufe der Zeit weiterentwickeln. Sie sollten sich über alle neuen Sicherheitsrisiken sowie neu entwickelte bewährte Methoden auf dem Laufenden halten.

Sicherheitsmaßnahmen für Copilot-Programmier-Agent

Standardmäßig sind in Copilot-Programmier-Agent verschiedene Vorsichtsmaßnahmen integriert, um sicherzustellen, dass deine Daten und die Codebasis sicher sind. Obwohl Vorsichtsmaßnahmen vorhanden sind, solltest du weiterhin bewährte Methoden für die Sicherheit implementieren und die Einschränkungen des Agents sowie deren Auswirkung auf deinen Code kennen.

Vermeidung der Rechteausweitung

Copilot-Programmier-Agent reagiert nur auf Interaktionen (z. B. das Zuweisen des Agents oder Kommentars) von Benutzern mit Repositoryschreibzugriff.

GitHub Actions-Workflows, die als Reaktion auf Pull Requests ausgelöst wurden, die von Copilot-Programmier-Agent erstellt wurden, erfordern eine Genehmigung von einem Benutzer mit Repositoryschreibzugriff, bevor sie ausgeführt werden.

Der Agent filtert ausgeblendete Zeichen, die nicht auf GitHub.com angezeigt werden, was Benutzern andernfalls das Ausblenden schädlicher Anweisungen in Kommentaren oder das Ausgeben von Textkörperinhalten ermöglicht. Dies schützt vor Risiken wie Jailbreaks.

Einschränken der Copilot-Berechtigungen

Copilot hat nur Zugriff auf das Repository, in dem ein Pull Request erstellt wird, und kann nicht auf andere Repositorys zugreifen.

Die Berechtigungen sind darauf eingeschränkt, Code zu pushen und andere Ressourcen zu lesen. Integrierte Schutzmaßnahmen bedeuten, dass Copilot nur an Branches pushen kann, deren Namen mit copilot/ beginnen. Dies bedeutet, dass Copilot nicht an deinen Standardbranch (z. B. main) pushen kann.

Copilot-Programmier-Agent hat während der Laufzeit keinen Zugriff auf Organisations- oder Repositoryschlüssel oder -variablen von Actions. Nur Geheimnisse und Variablen, die speziell zur copilot-Umgebung hinzugefügt werden, werden an den Agent übergeben.

Verhindern der Datenexfiltration

Standardmäßig ist für Copilot-Programmier-Agent eine Firewall aktiviert, um die Exfiltration von Code oder anderen vertraulichen Daten zu verhindern, entweder versehentlich oder aufgrund von böswilligen Benutzereingaben.

Weitere Informationen finden Sie unter Customizing or disabling the firewall for Copilot coding agent.

Einschränkungen von Copilot-Programmier-Agent

Abhängig von Faktoren wie Codebasis und Eingabedaten kann sich bei der Verwendung von Copilot-Programmier-Agent die Leistung unterscheiden. Die folgenden Informationen sind dazu ausgelegt, dich dabei zu unterstützen, Systemeinschränkungen und wichtige Konzepte zur Leistung nachzuvollziehen, die für den Copilot-Programmier-Agent gelten.

Eingeschränkter Gültigkeitsbereich

Das von Copilot-Programmier-Agent verwendete Sprachmodell wurde mit einer großen Codemenge trainiert, verfügt aber dennoch über einen begrenzten Anwendungsbereich und kann bestimmte Codestrukturen oder unbekannte Programmiersprachen nicht verarbeiten. Für jede Sprache hängt die Qualität der Vorschläge, die du erhältst, von der Menge und Vielfalt der Trainingsdaten für diese Sprache ab.

Potenzielle Verzerrungen

Das Sprachmodell, das von den Schulungsdaten und dem Kontext von Copilot-Programmier-Agent verwendet wird, die vom großen Sprachmodell gesammelt werden, kann Bias und Fehler enthalten, die ggf. vom Tool übernommen werden. Außerdem kann der Copilot-Programmier-Agent auf bestimmte Programmiersprachen oder Programmierstile ausgerichtet sein, was zu suboptimalem oder unvollständigen Vorschlägen führen kann.

Sicherheitsrisiken

Copilot-Programmier-Agent generiert Code und natürliche Sprache basierend auf dem Kontext eines Issues oder Kommentars innerhalb eines Repositorys, wodurch vertrauliche Informationen offengelegt oder Sicherheitsrisiken entstehen können, wenn sie nicht sorgfältig verwendet werden. Achte darauf, alle vom Agent generierten Ausgaben vor dem Mergen gründlich zu überprüfen.

Ungenauer Code

Momenten wird es für Copilot-Programmier-Agent nicht unterstützt, dass GitHub Copilot Vorschläge macht, die öffentlich verfügbarem Code entsprechen. Weitere Informationen finden Sie unter Suchen von öffentlichem Code, der mit GitHub Copilot-Vorschlägen übereinstimmt.

Copilot-Programmier-Agent kann Code generieren, der funktionstüchtig zu sein scheint, aber möglicherweise nicht semantisch oder syntaktisch korrekt ist oder die Absicht des Entwicklers nicht genau widerspiegelt.

Um das Risiko von ungenauem Code zu minimieren, solltest du den generierten Code sorgfältig überprüfen und testen, insbesondere bei kritischen oder vertraulichen Anwendungen. Darüber hinaus solltest du sicherstellen, dass der generierte Code den bewährten Methoden und Entwurfsmustern entspricht und in die allgemeine Architektur und den Stil der Codebasis passt.

Benutzer müssen potenzielle rechtliche und behördliche Verpflichtungen berücksichtigen, wenn du KI-Dienste und -Lösungen verwendest. Diese sind möglicherweise nicht für die Verwendung in jeder Branche oder in jedem Szenario geeignet. Darüber hinaus sind KI-Dienste oder -Lösungen nicht dafür konzipiert, auf eine Weise verwendet zu werden, die gegen die geltenden Nutzungsbedingungen und Verhaltensregeln verstößt, und dürfen nicht solchermaßen eingesetzt werden.