Einleitung
Wenn Sie mit der Arbeit an einer unbekannten Codebasis beginnen oder aufgefordert werden, einen Teil einer großen Codebasis zu ändern, die Sie noch nie berührt haben, benötigen Sie in der Regel einen Fachexperten (SME), um Sie schnell zu beschleunigen. Das KMU ist in der Regel ein erfahrenerer Entwickler im Team, der weiß, wie der Code zusammenpasst und Ihre Fragen beantworten kann. KMU sind nicht immer verfügbar – sie befinden sich möglicherweise in einer anderen Zeitzone, beschäftigt mit ihrer eigenen Arbeit oder gar nicht mehr im Team.
Wenn Sie eine unbekannte Codebasis verstehen müssen, verlassen Sie sich in der Regel auf einen Teamkollegen, der den Code kennt. Wenn diese Person nicht verfügbar ist, kann Copilot CLI die Lücke füllen. In diesem Tutorial werden Sie Copilot CLI Fragen zum Code eines Repositorys stellen, Prompting-Techniken kennenlernen, die im Code verankerte Antworten liefern, und das nötige Vertrauen gewinnen, um erste Änderungen vorzunehmen.
Wann verwende ich einen KI-KMU (oder sogar wann verwende ich einen KI-KMU?)
Dieses Lernprogramm ist jederzeit nützlich, wenn Sie eine Codebasis schneller verstehen müssen. Beispiel:
- Sie sind gerade einem Team oder einem Open Source Projekt beigetreten und müssen schnell auf dem Laufenden bleiben.
- Sie müssen einen Bereich einer großen Codebasis ändern, in der Sie noch nie gearbeitet haben.
- Sie haben einen Dienst oder eine Bibliothek geerbt, den die ursprünglichen Autoren nicht mehr beibehalten.
Das Lernprogramm geht davon aus, dass Sie in einem Terminal arbeiten und Code in der sprache lesen, die vom Projekt verwendet wird, das Sie erkunden. Sie benötigen keine vorherigen Erfahrungen mit Copilot CLI.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie folgendes haben:
- Ein GitHub Copilot Abonnement. Siehe Pläne für GitHub Copilot.
- Copilot CLI installiert und authentifiziert. Siehe Erste Schritte mit GitHub Copilot CLI.
- Ein lokaler Klon des Repositorys, das Sie erkunden möchten. Siehe Ein Repository klonen.
1. Starten einer Sitzung im Repository
Öffnen Sie ein Terminal, und wechseln Sie in das Stammverzeichnis des Repositorys, das Sie kennenlernen möchten. Wird Copilot CLI im Stammverzeichnis des Repositorys gestartet, steht ihm die gesamte Codebasis als Kontext zur Verfügung.
cd PATH/TO/YOUR/REPOSITORY copilot
cd PATH/TO/YOUR/REPOSITORY
copilot
Sie befinden sich jetzt in einer interaktiven Copilot CLI Sitzung. Alles, was Sie an der Eingabeaufforderung eingeben, wird an das Modell gesendet, das Dateien im Repository lesen, Shellbefehle wie git log oder grep, ausführen und Ihre Fragen basierend auf dem Gefundenen beantworten können.
Tipp
- Wenn Sie Copilot CLI vertrauen, Befehle ohne Anforderung einer Genehmigung auszuführen, wobei Dateiänderungen blockiert werden, beginnen Sie mit
copilot --deny-tool='write' --allow-all-tools. Siehe Zulassen und Verweigern der Verwendung von Tools. - Wenn Sie in einer sehr großen Codebasis arbeiten, erhalten Sie möglicherweise bessere Ergebnisse, indem Sie mit dem entsprechenden Unterverzeichnis beginnen Copilot CLI . Dadurch wird der Kontext auf die relevantesten Dateien beschränkt.
2. Grundantworten im Code, nicht die Dokumente
Die meisten Repositorys enthalten eine Mischung aus Code und Dokumentation: README-Dateien, Entwurfsnotizen, Architekturdiagramme usw. Die Dokumentation ist nützlich, um sich über ein Projekt zu informieren, aber es ist möglicherweise veraltet. Wenn Sie Copilot CLI eine Frage dazu stellen, wie sich der Code verhält, und es die Antwort aus einer veralteten Markdown-Datei bezieht, erhalten Sie eine selbstsichere, aber falsche Antwort.
Bevor Sie mit dem Stellen von Fragen beginnen, bitten Copilot CLI Sie, ihre Antworten auf den Code selbst zu basieren und alle Unsicherheiten zu kennzeichnen, anstatt Lücken auszufüllen. Beispiel:
For the rest of this session, when I ask how something works, base your answer on the code in this repository, not on documentation files such as README.md or files under docs/. If a documentation file conflicts with the code, treat the code as the source of truth. If you can't find a definitive answer in the code, say so - don't guess.
For the rest of this session, when I ask how something works, base your answer on the code in this repository, not on documentation files such as README.md or files under docs/. If a documentation file conflicts with the code, treat the code as the source of truth. If you can't find a definitive answer in the code, say so - don't guess.
Sie können diese Art von Präambel in eine benutzerdefinierte Anleitungsdatei einfügen und sie in Sitzungen wiederverwenden, sodass Sie sie nicht jedes Mal erneut eingeben müssen. Siehe Hinzufügen von benutzerdefinierten Anweisungen für GitHub Copilot-CLI.
3. Verschaffen Sie sich einen Überblick über die Codebasis
Beginnen Sie mit allgemeinen Fragen, um eine mentale Karte des Projekts zu erstellen. Das Ziel besteht darin, die Form des Codes zu verstehen (wo die Einstiegspunkte sind, welche Verzeichnisse was enthalten und wie die Hauptteile zusammenpassen), bevor Sie einen Drilldown zu einem bestimmten Feature durchführen.
Probieren Sie Eingabeaufforderungen aus, z. B.:
Give me an overview of this codebase. What does the application do, what are the main components, and how do they communicate? Cite the files you used as evidence.
Give me an overview of this codebase. What does the application do, what are the main components, and how do they communicate? Cite the files you used as evidence.
What are the entry points for this application? For each entry point, tell me which file contains the entry point and which directories contain the code it calls into.
What are the entry points for this application? For each entry point, tell me which file contains the entry point and which directories contain the code it calls into.
Das Verlangen nach Zitaten und Beweisen ist wichtig. Wenn Copilot CLI Ihnen sagt: „Das wird in src/auth/middleware.ts behandelt“, können Sie diese Datei öffnen und die Antwort selbst überprüfen. Wenn die Quellenangabe nicht mit dem übereinstimmt, was Sie herausfinden, ist das ein nützliches Signal, nachzuhaken und weiterführende Fragen zu stellen.
4. Näher auf eine bestimmte Funktion eingehen
Sobald Sie einen Überblick haben, können Sie sich auf den Bereich eingrenzen, den Sie ändern müssen. Behandeln Sie dies als Unterhaltung, nicht als einzelne Abfrage. Jede Antwort enthält Begriffe, Dateinamen und Konzepte, die Sie in Ihrer nächsten Frage verwenden können.
Es empfiehlt sich, ähnliche Fragen zu stellen, die sich einem Thema aus unterschiedlichen Blickwinkeln nähern. Dies hilft Ihnen, sicherzustellen, dass Sie das Gesamtbild erhalten, und gibt Ihnen die Gewissheit, dass Copilot nicht missverstanden hat, was Sie herausfinden möchten, und kein wichtiges Detail übersehen hat.
Nehmen wir zum Beispiel an, Sie wurden aufgefordert, für einen bestimmten API-Endpunkt eine Ratenbegrenzung zu implementieren, und Sie haben zuvor noch nie an diesem Teil des Codes gearbeitet; dann könnten Sie mit Fragen beginnen wie:
Is there any existing rate limiting in this codebase? If so, where is it implemented, and how is it configured?
Is there any existing rate limiting in this codebase? If so, where is it implemented, and how is it configured?
If I wanted to add per-user rate limiting to the /api/v1/upload endpoint, which files would I most likely need to change, and which existing patterns in the codebase should I follow?
If I wanted to add per-user rate limiting to the /api/v1/upload endpoint, which files would I most likely need to change, and which existing patterns in the codebase should I follow?
Wenn Sie innerhalb derselben CLI-Sitzung Anschlussfragen stellen, können Sie tiefer in die Details einer Funktion einsteigen und Copilot den nötigen Kontext geben, um Ihnen konkrete Antworten zu liefern, mit denen Sie genau die Informationen erhalten, die Sie benötigen.
5. Untersuchen Sie das Verhalten und Randfälle
Der Lesecode teilt Ihnen mit, was der Code tut. Häufig wird ihnen nicht mitgeteilt, was der Code tun soll oder wie er sich in ungewöhnlichen Situationen verhält. Dies sind die Fragen, bei denen ein menschlichen KMU am wertvollsten ist – und wo Copilot CLI Sie helfen können, wenn kein Mensch verfügbar ist.
Einige Beispiele für Verhaltensfragen und Fragen zu Randfällen, die Sie möglicherweise stellen könnten:
What happens if the database connection drops while a request is being processed? Walk me through the error handling, based on the code.
What happens if the database connection drops while a request is being processed? Walk me through the error handling, based on the code.
The `getUser` function takes a `userId` parameter. What validation is performed on it before it reaches the database query? Are there any code paths where an unvalidated value could reach the query?
The `getUser` function takes a `userId` parameter. What validation is performed on it before it reaches the database query? Are there any code paths where an unvalidated value could reach the query?
Wenn Sie eine Antwort erhalten, folgen Sie "Mir den Code anzeigen" oder "in welcher Datei haben Sie dies gefunden?" falls dies noch nicht zitiert wurde. Dadurch haben Sie eine Möglichkeit, die Antwort nachzusehen und zu überprüfen.
6. Verwenden des Git-Verlaufs als andere Quelle
Viele nützliche Kontexte befinden sich im Git-Verlauf und nicht im aktuellen Code: Warum eine Funktion so geschrieben wurde, wie sie war, als ein Fehler zuletzt behoben wurde, der ursprünglich ein Modul hinzugefügt hat.
Copilot CLI kann git Befehle für Sie ausführen und die Ausgabe verwenden, um Fragen zu beantworten, die sich nicht allein durch das Lesen des Codes leicht beantworten lassen.
Probieren Sie Eingabeaufforderungen aus, z. B.:
When was the `PaymentProcessor` class introduced, and what was the original commit message? Has it been substantially refactored since then?
When was the `PaymentProcessor` class introduced, and what was the original commit message? Has it been substantially refactored since then?
Look at the last 20 commits that touched files under `src/billing/`. Summarize what kinds of changes have been made recently.
Look at the last 20 commits that touched files under `src/billing/`. Summarize what kinds of changes have been made recently.
Who has made the most commits to `src/auth/`? Use that information to suggest the best person on this team to ask about authentication.
Who has made the most commits to `src/auth/`? Use that information to suggest the best person on this team to ask about authentication.
7. Überprüfen, bevor Sie vertrauen
Copilot CLI ist ein leistungsfähiger KMU, aber es ist nicht unfehlbar. Es kann Code falsch lesen, ähnlich aussehende Dateien miteinander verwechseln oder sich gelegentlich Dinge ausdenken. Behandeln Sie ihre Antworten so, wie Sie Ratschläge von einem hilfreichen, aber falliblen Kollegen behandeln: nützlich als Ausgangspunkt, aber es lohnt sich zu überprüfen, bevor Sie auf etwas Wichtiges reagieren.
Ein paar Gewohnheiten helfen Ihnen, Ärger zu vermeiden:
- Überprüfen Sie die zitierten Dateien. Wenn Copilot CLI auf eine bestimmte Datei bzw. Zeilennummer verweist, öffnen Sie sie und prüfen Sie dies. Wenn das Zitat falsch ist, behandeln Sie die restliche Antwort mit mehr Skepsis.
- Führen Sie Dinge selbst aus. Wenn Copilot CLI Ihnen sagt, dass eine Funktion bei leerer Eingabe
nullzurückgibt, schreiben Sie einen kurzen Test oder einen REPL-Aufruf, der sie mit einer leeren Eingabe aufruft, und prüfen Sie das. - Von Menschen gegenprüfen lassen. Wenn die Antwort wichtig ist (Sicherheit, Datenintegrität, alles, wobei es Ihnen peinlich wäre, in der Produktion falschzuliegen), verwenden Sie Copilot CLIs Antwort als Ausgangspunkt und prüfen Sie sie mit einem menschlichen Fachexperten oder einem Code-Review.
Conclusion
In diesem Lernprogramm haben Sie als Ihr persönliches KMU verwendet Copilot CLI , um:
- Verschaffen Sie sich einen Überblick über eine unbekannte Codebasis, die in echten Dateien verankert ist.
- Tauchen Sie tiefer in eine bestimmte Funktion ein, damit Sie wissen, welche Dateien Sie ändern müssen und welchen Mustern Sie folgen sollten.
- Untersuchen Sie das Verhalten, Randfälle und den Git-Verlauf.
- Überprüfen Sie Die Antworten, damit Sie sich darauf verlassen können, wenn es wichtig ist.
Auf diese Weise Copilot CLI ersetzt man nicht die menschlichen KMU, aber es macht Sie weniger abhängig von ihnen für die täglichen Fragen, die während der Arbeit entstehen. Ihre menschlichen Teamkollegen können ihre Zeit auf die Fragen verwenden, die tatsächlich ihre Erfahrung erfordern, und Sie können weitermachen, wenn sie nicht da sind.
Nächste Schritte
- Speichern Sie Ihre nützlichsten Prompt-Einleitungen als benutzerdefinierte Anweisungen, damit Sie sie sitzungs- und projektübergreifend wiederverwenden können. Siehe Hinzufügen von benutzerdefinierten Anweisungen für GitHub Copilot-CLI.
- Sobald Sie den Codebereich verstanden haben, den Sie ändern möchten, verwenden Sie Copilot CLI, um die Änderung durchzuführen. Siehe Umgestalten von Code mit GitHub Copilot und Schreiben von Tests mit GitHub Copilot.
- Erfahren Sie, wie Sie steuern, welche Tools Copilot CLI während einer Sitzung ausgeführt werden können. Siehe Zulassen und Verweigern der Verwendung von Tools.