Informationen zum Kontextfenster
Wenn Sie GitHub Copilot verwenden, werden jede von Ihnen gesendete Nachricht, jede Antwort von Copilot, jeder Toolaufruf und dessen Ergebnis sowie die Systeminstruktionen, die das Verhalten von Copilot definieren, alle in einem Kontextfenster gehalten. Das Kontextfenster ist die Gesamtmenge der Informationen, die das KI-Modell beim Generieren einer Antwort gleichzeitig berücksichtigen kann.
Das Kontextfenster hat eine feste Größe, gemessen in Token, die je nach Modell variiert. Token bestehen in der Regel aus kurzen, häufig verwendeten Wörtern und Fragmenten von mehrsiligen Wörtern. Wenn Ihre Unterhaltung fortschreitet, füllt sich das Kontextfenster mit:
- Systemanweisungen und Tooldefinitionen: Die integrierten Anweisungen, die angeben Copilot , wie sie sich verhalten, sowie die Schemas aller verfügbaren Tools. Diese sind immer vorhanden und belegen einen festen Teil des Kontextfensters.
- Ihre Nachrichten: Jede Aufforderung, die Sie senden.
- CopilotAntworten: Alles, was Copilot Ihnen zurücksagt.
- Toolaufrufe und -ergebnisse: Wenn Copilot Sie Dateien lesen, Befehle ausführen oder Ihre Codebasis durchsucht, werden sowohl die Anforderung als auch die Ausgabe dem Kontext hinzugefügt. Toolergebnisse können besonders groß sein, z. B. wenn ein Tool eine lange Datei liest oder einen Befehl ausführt, der umfangreiche Ausgabe erzeugt.
All dies wird im Kontextfenster angesammelt. In einer langen oder komplexen Sitzung kann sich das Kontextfenster füllen.
Warum das Kontextfenster wichtig ist
Das Kontextfenster ermöglicht Copilot es, frühere Teile einer Unterhaltung zu berücksichtigen, wenn es entscheidet, wie auf eine Eingabeaufforderung reagiert werden soll. Alles innerhalb des Kontextfensters steht Copilot zur Verfügung, um darauf Bezug zu nehmen, wenn es an einer Aufgabe arbeitet.
Dies bedeutet, dass Copilot in einer sehr langen Sitzung möglicherweise nicht in der Lage ist, den gesamten Unterhaltungsverlauf auf einmal zu speichern. Copilot verfügt daher über Kontextverwaltungsfeatures, mit denen Sie eine Unterhaltung so lange wie nötig fortsetzen können.
Überprüfen der Kontextnutzung
Die Steuerelemente für die Kontextverwendung variieren je nach Client und Bereich. Beispiele:
- In
/contextund Copilot CLI verwenden Sie GitHub Copilot app, um die Verwendung für die aktuelle Sitzung zu überprüfen. - Suchen Sie in unterstützten IDEs nach einer Kontextfensteranzeige im oder unterhalb des Copilot Chateingabebereichs. Zum Beispiel ist in Visual Studio Code der Indikator ein kleiner Kreis. In einigen anderen IDEs wird die Verwendung im Sitzungsinformationsdialogfeld angezeigt, das von Copilot Extension bereitgestellt wird.
Sie können die Kontextnutzung überprüfen, wenn:
- Sie befinden sich in einer langen Sitzung und möchten wissen, wie viel Platz übrig bleibt.
- Copilot scheint frühere Teile der Unterhaltung zu vergessen.
- Sie möchten verstehen, ob die Komprimierung aufgetreten ist oder bald auftreten wird. Siehe Komprimierung.
Verwalten des Kontextfensters
Sie können Ihr Kontextfenster verwalten, indem Sie die Verwendung überwachen, alte Nachrichten komprimieren und große Toolausgaben steuern.
Hinweis
Verfügbare Steuerelemente unterscheiden sich je nach Client und Oberfläche.
Wenn Sie Ihr Kontextfenster nicht effektiv über die verfügbaren Befehle und Einstellungen verwalten können, müssen Sie möglicherweise alternative Strategien in Betracht ziehen, z. B. das Aufteilen Ihrer Unterhaltung in kleinere Sitzungen oder das Verringern der Größe der Toolausgabe, indem Sie Copilot auffordern, sie zu kürzen oder zusammenzufassen. Außerdem kann Copilot Arbeit an Subagenten delegieren, die über vom Haupt-Agenten getrennte Kontextfenster verfügen. Dies kann dazu beitragen, den Kontext des Haupt-Agents fokussiert zu halten.
Verwendung von Kontext mithilfe des Befehls /context
In einigen Oberflächen können Sie den /context Slash-Befehl verwenden, um die aktuelle Kontextfensterverwendung zu visualisieren. Die erste Zeile der Ausgabe zeigt das aktive Modell und die Anzahl der Token an, die derzeit aus der Gesamtkapazität des Modellkontextfensters verwendet werden. Der Rest der Ausgabe zeigt die Token-Nutzung und den Prozentsatz des Kontextfensters für:
- Systemaufforderung: die System-Basisaufforderung.
- Benutzerdefinierte Anweisungen: Ihre geladenen benutzerdefinierten Anweisungen (nur angezeigt, wenn vorhanden).
- Systemtools: integrierte Tooldefinitionen.
- MCP-Tools: Von MCP-Servern beigetragene Tooldefinitionen.
- Mitteilungen: Ihr Konversationsverlauf.
- Freier Speicherplatz: Nicht verwendeter Kontext ist weiterhin verfügbar.
- Puffer: Kapazität, die für die Antwort und den Kopfraum des Modells reserviert ist.
Verwalten der Ausgabe großer Tools für Copilot CLI
Um zu verhindern, dass eine einzelne Toolantwort zu viel des Kontextfensters verbraucht, wird die Toolausgabe, die größer als 20 KiB ist, standardmäßig in einer temporären Datei gespeichert. Das Modell empfängt den Dateipfad und eine Vorschau anstelle der vollständigen Ausgabe. Dies gilt für alle Tools, einschließlich Tools, die von MCP-Servern bereitgestellt werden.
Um den Grenzwert zu ändern, setzen Sie COPILOT_LARGE_OUTPUT_THRESHOLD_BYTES vor dem Starten der CLI auf eine positive Anzahl von UTF-8-Bytes fest. Wenn Sie den Grenzwert erhöhen, bleibt weniger Kontext für die Unterhaltung und nachfolgende Toolaufrufe verfügbar.
Komprimierung
Verdichtung ist der Prozess, der es Copilot ermöglicht, langlaufende Sitzungen zu unterstützen, ohne die Grenzen des Kontextfensters zu erreichen.
Die Verfügbarkeit, das Verhalten und die Steuerelemente für die Komprimierung variieren je nach Client und Oberfläche. Beispiele:
- In Copilot CLI und GitHub Copilot app kann die Komprimierung automatisch erfolgen, oder Sie können sie mit
/compactauslösen. - In Visual Studio Code und JetBrains IDEs können Sie eine Sitzung manuell mit Copilot Extension komprimieren.
Wenn Komprimierung stattfindet
Die genauen Schwellenwerte und das Verhalten für die Kompaktierung variieren je nach Client und Konfiguration.
Für den Copilot CLI gilt: Wenn Ihre Unterhaltung ungefähr 80 % der Kapazität des Kontextfensters erreicht, Copilot CLI beginnt automatisch, den Kontext im Hintergrund zu komprimieren. Dadurch bleibt ein Puffer von ca. 20%, sodass Toolaufrufe weiterhin ausgeführt werden können, während die Komprimierung ausgeführt wird. Wenn der Kontext auf ungefähr 95 % gefüllt ist, bevor die Komprimierung abgeschlossen ist, pausiert Copilot CLI kurz, um darauf zu warten, dass die Komprimierung abgeschlossen wird, bevor der Vorgang fortgesetzt wird.
In Copilot CLI und GitHub Copilot app können Sie die Komprimierung jederzeit manuell auslösen, indem Sie den Befehl /compact eingeben. Dies ist nützlich, wenn Sie eine neue Phase der Arbeit beginnen und kontextbezogene Räume proaktiv freigeben möchten. Drücken Sie ESC , um eine manuelle Komprimierung abzubrechen, wenn Sie Ihre Meinung ändern.
Wo die Komprimierung stattfindet
Die Komprimierung ist in den meisten unterstützten Clients verfügbar, einschließlich Copilot CLI, , GitHub Copilot app, Copilot cloud agent, Visual Studio Code, Visual Studio, JetBrains IDEsund Eclipse, aber nicht in der Xcode-IDE.
Was die Komprimierung bewirkt
Beim Kompaktiervorgang: Copilot
- Erstellt eine Momentaufnahme des aktuellen Unterhaltungsverlaufs.
- Sendet die vollständige Unterhaltung mit einer speziellen Eingabeaufforderung an das KI-Modell, die sie auffordert, eine strukturierte Zusammenfassung zu generieren. Die Zusammenfassung erfasst die Ziele der Unterhaltung, was getan wurde, wichtige technische Details, wichtige Dateien und geplante nächste Schritte.
- Ersetzt den alten Unterhaltungsverlauf durch eine Zusammenfassung, einschließlich der ursprünglichen Benutzeranweisungen und des aktuellen Status aller Pläne oder Aufgabenlisten.
- Behält alle Nachrichten bei, die während der Komprimierung im Hintergrund hinzugefügt wurden.
Das Ergebnis ist, dass der Gesprächsverlauf in eine viel kleinere Zusammenfassung komprimiert wird, wodurch der Großteil des Kontextfensters für neue Aufgaben freigegeben wird. Copilot verwendet diese Zusammenfassung, um die Kontinuität aufrechtzuerhalten – es weiß, was diskutiert wurde, was entschieden wurde und was als Nächstes zu tun ist – auch wenn die ursprünglichen Nachrichten ersetzt wurden.
Was die Komprimierung nicht behält
Komprimierung ist ein Zusammenfassungsprozess, so dass einige Details zwangsläufig verloren gegangen sind. Die Zusammenfassung erfasst die wichtigsten Punkte, aber detaillierte Details wie der genaue Wortlaut jeder Nachricht, die vollständige Ausgabe jedes Befehls oder kleinere Entscheidungen, die früh in einer langen Unterhaltung getroffen wurden, sind möglicherweise nicht berücksichtigt. Wenn Sie Copilot ein sehr spezifisches Detail aus einem deutlich früheren Zeitpunkt der Sitzung zurückrufen müssen, enthält es diese Informationen möglicherweise nach der Verdichtung nicht.
Sie können eine abgeschlossene Komprimierung nicht rückgängig machen.
Was passiert ohne Komprimierung?
Ohne Komprimierung müsste, nachdem das Kontextfenster gefüllt ist, Copilot darauf zurückgreifen, alte Nachrichten einfach aus dem Gesprächsverlauf zu entfernen – ohne Zusammenfassung oder Aufzeichnung. Dies würde bedeuten, dass der Kontext abrupt verloren geht, ohne die Möglichkeit Copilot zu wissen, was in den gelöschten Nachrichten war. Der Prozess der Verdichtung verhindert dies, indem er den Verlauf durch eine intelligente Zusammenfassung ersetzt, anstatt ihn zu verwerfen.
Kontrollpunkte
Ein Prüfpunkt kann eine gespeicherte Zusammenfassung sein, die durch Kompaktierung erzeugt wird, ein Wiederherstellungspunkt für Dateibearbeitungen und/oder ein Punkt, von dem aus Sie eine Unterhaltung verzweigen können. Dies sind unterschiedliche Funktionen, und ihre Verfügbarkeit und Aktionen variieren je nach Client und Oberfläche.
Im restlichen Teil dieses Artikels bezieht sich ein Checkpoint auf eine gespeicherte Kompaktierungszusammenfassung, z. B. die nummerierten, betitelten Dateien, die im Copilot CLI erstellt wurden.
Wenn Prüfpunkte nützlich sind
- Überprüfen, was passiert ist: Nach einer langen Sitzung mit mehreren Komprimierungen befinden sich frühere Phasen der Unterhaltung nicht mehr im aktiven Kontext. Mit Prüfpunkten können Sie die Aktionen von Copilot bei jeder Verdichtung zurückverfolgen.
- Überprüfen der Kontinuität: Wenn Sie sicherstellen möchten, dass die Zusammenfassung Ihrer früheren Arbeit genau erfasst wurde, bevor Sie fortfahren, können Sie den neuesten Kontrollpunkt ansehen.
- Fehlerbehebung bei Verwirrungen: Wenn Copilot Sie eine Entscheidung vergessen oder in eine Richtung einschlagen, die früheren Arbeiten widerspricht, können Prüfpunkte aufzeigen, was während der Komprimierung erhalten geblieben ist und was anders zusammengefasst wurde, als Sie erwartet haben.
Hinweis
In den meisten Clients, einschließlich Copilot CLI, werden Prüfpunktzusammenfassungen automatisch erstellt. Sie müssen sie nicht verwalten – sie sind dort, wenn Sie sie benötigen. Für die meisten Sitzungen müssen Sie sich überhaupt keine Prüfpunkte ansehen.
Anzeigen von Prüfpunkten für Copilot CLI
Um alle Prüfpunkte in Ihrer aktuellen Sitzung anzuzeigen, geben Sie Folgendes ein:
/session checkpoints
/session checkpoints
Dadurch werden alle Prüfpunkte mit ihrer Nummer und ihrem Titel aufgelistet:
Checkpoint History (3 total):
3. Refactoring authentication module
2. Implementing user dashboard
1. Initial planning and setup
Verwenden Sie die Prüfpunktnummer, um den vollständigen Inhalt eines Prüfpunkts anzuzeigen. Geben Sie beispielsweise Folgendes ein, um den Prüfpunkt 2 anzuzeigen:
/session checkpoints 2
/session checkpoints 2
Verwendung von langen Sitzungen
Mit der automatischen Komprimierung können Sie weiterhin in einer langen Sitzung arbeiten, ohne sich Gedanken darüber zu machen, dass die Grenzen des Kontextfensters erreicht werden. Es gibt Zeiten, in denen dies sehr nützlich ist, und andere Zeiten, in denen Sie es vorziehen, eine neue Sitzung zu starten.
Wenn lange Sitzungen nützlich sind
Lange laufende Sitzungen funktionieren gut, wenn:
- Sie arbeiten an einer mehrstufigen Aufgabe, z. B. beim Erstellen eines Features, das Gerüst, Implementierung, Tests und anschließendes Erstellen einer Pullanforderung erfordert.
- Sie arbeiten an einem Problem und möchten Copilot den Kontext dessen beibehalten, was versucht wurde und was nicht funktioniert hat.
- Sie leisten explorative Arbeit in einer Codebasis und bauen Copilot im Laufe der Zeit gemeinsames Verständnis auf.
Wann eine neue Sitzung gestartet werden soll
Das Starten einer neuen Sitzung ist besser, wenn:
- Sie wechseln zu einer nicht verknüpften Aufgabe. Copilot benötigt nicht den Kontext Ihrer vorherigen Arbeit, und ein übersichtliches Kontextfenster bedeutet mehr Platz für die neue Aufgabe.
- Die Unterhaltung hat viele Komprimierungen durchlaufen, und Sie spüren, dass im Zusammenfassungsprozess ein wichtiger Kontext verloren geht.
- Sie möchten einen reinen Neuanfang – z. B. wenn die Arbeit in eine falsche Richtung gegangen ist und Sie lieber von vorn beginnen, als zu versuchen, frühere Entscheidungen mit einem neuen Ansatz in Einklang zu bringen.
In einigen Clients und Oberflächen können Sie eine vorherige Sitzung fortsetzen, um mit dem vorhandenen Unterhaltungskontext fortzufahren, anstatt neu zu starten. Fortsetzungsmethoden und die Verfügbarkeit von Checkpoints variieren je nach Client und Oberfläche.