Erstmal: Was ist ein Kontextfenster? Und wie hängt das damit zusammen, mit Cursor effektiv zu coden? Um kurz rauszuzoomen: Ein Large Language Model (LLM) ist ein KI-Modell, das darauf trainiert ist, Text vorherzusagen und zu generieren, indem es Muster aus großen Datensätzen lernt. Es treibt Tools wie Cursor an, indem es deine Eingaben versteht und basierend auf dem, was es schon gesehen hat, Code oder Text vorschlägt. Tokens sind die Ein- und Ausgaben dieser Modelle. Das sind Textstücke, oft Fragmente eines Wortes, die ein LLM nacheinander verarbeitet. Modelle lesen nicht ganze Sätze auf einmal; sie sagen das nächste Token basierend auf den vorherigen vorher. Wenn du sehen willst, wie Text tokenisiert wird, kannst du einen Tokenizer wie diesen hier verwenden. Tokenizer

Was ist Kontext?

Wenn wir in Cursor einen Codevorschlag generieren, bezieht sich „Kontext“ auf die Informationen, die dem Modell bereitgestellt werden (in Form von „Input-Tokens“), die das Modell dann nutzt, um die folgenden Informationen vorherzusagen (in Form von „Output-Tokens“). Es gibt zwei Arten von Kontext:
  1. Intent-Kontext definiert, was du vom Modell bekommen willst. Zum Beispiel dient ein System-Prompt normalerweise als übergeordnete Anleitung dafür, wie sich das Modell verhalten soll. Das meiste „Prompting“ in Cursor ist Intent-Kontext. „Mach diesen Button von blau zu grün“ ist ein Beispiel für formulierten Intent; er ist präskriptiv.
  2. State-Kontext beschreibt den aktuellen Zustand. Cursor Fehlermeldungen, Console-Logs, Bilder und Code-Snippets zu geben, sind Beispiele für Kontext, der sich auf den State bezieht. Er ist deskriptiv, nicht präskriptiv.
Zusammen wirken diese beiden Arten von Kontext, indem sie den aktuellen Zustand und den gewünschten zukünftigen Zustand beschreiben und Cursor so ermöglichen, nützliche Codevorschläge zu machen.

Kontext in Cursor bereitstellen

Je mehr relevanten Kontext du einem Modell gibst, desto nützlicher ist es. Wenn in Cursor nicht genug Kontext vorhanden ist, versucht das Modell, das Problem ohne die nötigen Informationen zu lösen. Das führt typischerweise zu:
  1. Halluzinationen, bei denen das Modell versucht, Muster zu erkennen (obwohl es keine gibt) und dadurch unerwartete Ergebnisse produziert. Das kann bei Modellen wie claude-3.5-sonnet häufig passieren, wenn sie nicht genug Kontext bekommen.
  2. Der Agent versucht, Kontext selbst zu sammeln, indem er den Code durchsucht, Dateien liest und Tools aufruft. Ein starkes Thinking-Modell (wie claude-3.7-sonnet) kann damit ziemlich weit kommen, und der richtige initiale Kontext legt dabei die Richtung fest.
Die gute Nachricht ist, dass Cursor von Grund auf mit Kontextbewusstsein entwickelt wurde und so ausgelegt ist, dass du nur minimal eingreifen musst. Cursor zieht automatisch die Teile deines Codebase heran, die das Modell als relevant einschätzt, etwa die aktuelle Datei, semantisch ähnliche Stellen in anderen Dateien und weitere Informationen aus deiner Session. Es gibt jedoch sehr viel potenziellen Kontext. Deshalb hilft es, den Kontext, von dem du weißt, dass er für die Aufgabe relevant ist, manuell anzugeben, um die Modelle in die richtige Richtung zu lenken.

@-Symbol

Der einfachste Weg, expliziten Kontext bereitzustellen, ist das @-Symbol. Das ist super, wenn du genau weißt, welche Datei, welcher Ordner, welche Website oder welches andere Stück Kontext einbezogen werden soll. Je spezifischer du bist, desto besser. Hier ist eine Übersicht, wie du Kontext noch gezielter einsetzen kannst:
SymbolBeispielAnwendungsfallNachteil
@code@LRUCachedFunctionDu weißt, welche Funktion, Konstante oder welches Symbol für die Ausgabe relevant istErfordert viel Wissen über die Codebase
@filecache.tsDu weißt, welche Datei gelesen oder bearbeitet werden soll, aber nicht genau wo darinKann je nach Dateigröße viel irrelevanten Kontext für die aktuelle Aufgabe enthalten
@folderutils/Alles oder der Großteil der Dateien in einem Ordner ist relevantKann viel irrelevanten Kontext für die aktuelle Aufgabe enthalten
Context Menu

Regeln

Denk an Regeln wie an ein Langzeitgedächtnis, auf das du und dein Team jederzeit zugreifen könnt. Das Festhalten von domänenspezifischem Kontext – inklusive Workflows, Formatierung und anderer Konventionen – ist ein super Startpunkt, um Regeln zu erstellen. Regeln lassen sich auch aus bestehenden Unterhaltungen mit /Generate Cursor Rules generieren. Wenn du eine lange Unterhaltung mit viel Prompting hattest, gibt es wahrscheinlich hilfreiche Direktiven oder allgemeine Regeln, die du später wiederverwenden willst. Regeln

MCP

Der Model Context Protocol ist eine Erweiterungsschicht, mit der du Cursor die Fähigkeit gibst, Aktionen auszuführen und externen Kontext einzubinden. Je nach Entwicklungssetup willst du vielleicht unterschiedliche Arten von Servern nutzen, aber zwei Kategorien, die sich als besonders nützlich erwiesen haben, sind:
  • Interne Dokumentation: z. B. Notion, Confluence, Google Docs
  • Projektmanagement: z. B. Linear, Jira
Wenn du bereits Tools hast, um per API auf Kontext zuzugreifen und Aktionen auszuführen, kannst du dafür einen MCP-Server bauen. Hier ist eine kurze Anleitung zum Erstellen von MCP-Servern. MCP

Kontext selbst sammeln

Ein leistungsstarkes Pattern, das viele Nutzer übernehmen, ist, den Agenten kurzlebige Tools schreiben zu lassen, die er anschließend ausführt, um mehr Kontext zu sammeln. Das ist besonders effektiv in Human‑in‑the‑Loop‑Workflows, bei denen du den Code prüfst, bevor er ausgeführt wird. Zum Beispiel verschafft es dem Modell Zugang zu dynamischem Kontext, den es statisch nicht ableiten könnte, wenn du Debug‑Statements zu deinem Code hinzufügst, ihn ausführst und das Modell die Ausgabe inspizieren lässt. In Python kannst du das erreichen, indem du den Agenten bittest:
  1. Füge print(“debugging: …”)‑Statements an relevanten Stellen im Code hinzu
  2. Führe den Code oder die Tests im Terminal aus
Der Agent liest die Terminalausgabe und entscheidet, was als Nächstes zu tun ist. Die Kernidee ist, dem Agenten Zugriff auf das tatsächliche Laufzeitverhalten zu geben – nicht nur auf den statischen Code. Kontext selbst sammeln

Takeaways

  • Kontext ist die Grundlage effektiven AI-Codings und besteht aus Intent (was du willst) und State (was vorhanden ist). Wenn du beides bereitstellst, kann Cursor präzise Vorhersagen treffen.
  • Verwende gezielten Kontext mit @-Symbolen (@code, @file, @folder), um Cursor präzise zu steuern, statt dich nur auf automatisches Kontext-Gathering zu verlassen.
  • Lege wiederverwendbares Wissen als Regeln fest, damit das ganze Team davon profitiert, und erweitere Cursors Fähigkeiten mit dem Model Context Protocol, um externe Systeme anzubinden.
  • Zu wenig Kontext führt zu Halluzinationen oder Ineffizienz, während zu viel irrelevanter Kontext das Signal verwässert. Finde die richtige Balance für optimale Ergebnisse.