Cursor Fortgeschrittene Techniken und Problembehandlung
Autor: Programmer NEO Original-Link
Als Praktiker im Bereich KI und intensiver Nutzer von KI-unterstützter Programmierung.
Die folgenden Sätze sind meiner Meinung nach das Wichtigste, was Sie wissen müssen und was Ihnen am meisten helfen wird. Selbst wenn Sie die unten stehenden Techniken nicht durchgehen, empfehle ich Ihnen, sich ein paar Sekunden Zeit zu nehmen, um dies zu lesen.
- Der Kontext von LLM ist begrenzt, und je mehr Kontext vorhanden ist, desto schwieriger ist es für ihn, Ihre Absicht zu erfassen.
- Die Ausgabe von LLM ist
stark
begrenzt, wobei das derzeit übliche Maximum8192
Tokens beträgt. - Ob es sich um Cursor, Windsurf, Copilot oder Cline handelt, sie sind alle nur Ihre Assistenten. Beteiligen Sie sich vollständig und behalten Sie die Kontrolle und Entscheidungsbefugnis während des gesamten Prozesses.
Die derzeit neueste Version von Cursor ist 0.44.10.
Cursor Verwendungstipps
Agent-Modus Verwendungstipps
Suchen statt Angeben
- Entfernen Sie die Kontextangabe, um die automatische Suche im Agent-Modus auszulösen.
Wie im obigen Bild gezeigt, ist die Kontextangabe leer, wodurch die automatische Suche im Agent-Modus ausgelöst wird.
Gleichzeitig ändern Sie die Beschreibung in:
- Klare Methodennamen
- Wichtige Klassennamen
- Verwandte Variablennamen
- Spezifische Funktionsbeschreibungen
Lassen Sie mich Ihnen ein Beispiel geben:
请帮我实现一个方法,功能是将一个字符串转换为大写,方法名为 `toUpperCase`,类名为 `StringUtils`,字符串变量名为 `str`。
Dokumentenverarbeitung
Grund: Dokumente sind zusätzliche Informationen; bitte behalten Sie in CHAT nur die wichtigsten Anweisungen und Leitinformationen. Zu viele Informationen können das Verständnis des Modells für Ihre Bedürfnisse beeinträchtigen.
Funktionsmodul: Cursor-Einstellungen -> Funktionen -> Dokumente:
Vermeiden Sie direktes Einfügen:
- Fügen Sie keine großen Mengen an Dokumenten direkt in das Bearbeitungsfeld ein; fügen Sie die Dokumente stattdessen zur Dokumentenkonfiguration hinzu und verwenden Sie dann das
@
-Symbol im Bearbeitungsfeld, um die Dokumentenkonfiguration auszulösen.
- Nutzen Sie die Dokumentenkonfigurationsfunktion.
Dokumentenspezifikation:
- Teilen Sie nur notwendige Daten für das Projekt, anstatt alle Dokumente jedes Projekts zu teilen.
- Es wird empfohlen, nur Inhalte hinzuzufügen, die nicht durch Trainingsdaten abgedeckt werden können, wie z.B.: neuere Bibliotheksdokumentation, Entwickler-Schnittstellendokumentation usw.
- Am besten schreiben Sie die Dokumente selbst (die Anforderung ist, prägnant zu sein und einen starken persönlichen Codierungsstil zu haben), indem Sie nur Methodenanwendungstutorials und kurze Textbeschreibungen bereitstellen, um einfaches Schneiden und Indizieren zu ermöglichen.
Methode zur Konfiguration von Dokumentenlinks:
https://github.com/username/repo/blob/main/docs/doc.md
- Nutzen Sie GitHub-Repositorys, um Dokumentation für einfache Verwaltung und Aktualisierungen zu speichern.
- Sie können auch Cloud-Speicherdienste (wie Alibaba Cloud OSS) verwenden.
Um lokale Dokumente anzugeben, aktivieren Sie lokale Dokumente in den Cursor-Einstellungen -> Beta -> Notepads:
Fügen Sie Dokumente im Abschnitt Notepads am unteren Rand der linken Seitenleiste hinzu:
Kontextverwaltung
Grund: Cursor ist ein Assistent, kein Entscheidungsexperte. Manchmal übersteigt die menschliche Fähigkeit zu denken und Entscheidungen zu treffen seinen Rahmen.
- Vermeiden Sie übermäßige Dokumentation, die zu einem Kontextüberlauf führt.
- Stellen Sie sicher, dass kritische Anweisungen nicht übersehen werden.
- Priorisieren Sie die Bereitstellung notwendiger Kontextinformationen anstelle aller Informationen.
- Fantasieren Sie nicht, dass ein einzelner CHAT alle Probleme lösen kann; lernen Sie, Probleme aufzuteilen und für jedes Problem einen CHAT zu verwenden.
Lint-Konfiguration
Grund: Einige Projekte können zu unnötigen Korrekturen führen, die Zeit verschwenden. In den meisten Fällen kann ein Mensch das Problem auf einen Blick erkennen.
- Es wird empfohlen, automatisches Linting zu deaktivieren.
- Verwenden Sie @lint, um manuell auszulösen, wenn nötig, und vermeiden Sie Störungen durch übermäßige Automatisierung.
Hinweise für Frontend-Entwickler
Wenn Sie sich mit Cursor über UI-Bugs streiten, kann es effektiver sein, einfach einen Screenshot der Oberfläche zu teilen; Sie könnten unerwartete Erkenntnisse gewinnen.
Cursor-Regel
- Nutzen Sie die Cursor-Regel gut; Sie können eine
.cursorrules
-Datei im Projektstammverzeichnis erstellen, auf die Cursor inchat/composer
verweist. - Geben Sie alle im Projekt verwendeten Bibliotheken (falls nötig), UI-Stile, Codierungsstandards, Projektmoduldefinitionen usw. in der Cursor-Regel an.
Viele Regeln finden Sie unter https://cursor.directory/, und Sie können auch eigene definieren.
Häufige Problembehandlung
Was tun, wenn Zeichensalat auftritt? Fehlerbeispiel (aus einem Chat-Screenshot eines Freundes):
Bitte verwenden Sie global utf-8
.
Gemischter Text aus Chinesisch, Englisch und Japanisch; 46 Stellen wurden bearbeitet, ohne Zeichensalat.
Angehängt ist ein Screenshot des gegebenen Zeichensalats und dessen automatische Korrektur zum richtigen Inhalt.
Ungenaue Suche:
- Geben Sie präzisere Schlüsselwörter an und vermeiden Sie vage Beschreibungen.
- Verwenden Sie vollständige Methodennamen/Klassennamen/Variablennamen usw.
Wie verwendet man den Agent-Modus?
Wenn Ihre Version dies unterstützt, finden Sie Optionen (normal und agent) in der unteren rechten Ecke des Chat-Feldes auf der Composer-Seite oder im Popup. Wenn Agent ausgewählt ist, wird er weiß angezeigt, und beim Darüberfahren wird angezeigt, dass Sie den Agent-Modus verwenden.
- Werden Checkpoints nicht zurückgesetzt?
Neben jedem Checkpoint befindet sich ein restore
-Button. Ein Klick darauf kehrt zu diesem Zustand zurück.
Was tun, wenn es zu viele Checkpoints gibt und ich nicht weiß, zu welchem ich zurückkehren soll? Gilt dies für Versionen ohne Checkpoints oder Restore-Buttons?
Wenn Sie Nachricht A senden und der Cursor Ihnen bei den Aufgaben 1, 2 und 3 hilft, um die Sie sich nicht mehr kümmern möchten, dann müssen Sie nur noch auf Nachricht A doppelklicken, erneut auf "Submit" klicken, und ein Popup wird Sie wie oben gezeigt erinnern. Wählen Sie "Continue" und "Revert", und der Cursor wird die Anfrage basierend auf Ihrer Nachricht A erneut senden. Wenn Sie dies nicht benötigen, klicken Sie einfach auf "Cancel" in der Oberfläche.
Wie konfiguriere ich ein benutzerdefiniertes Modell für den Composer (mit eigenem Key)?
Ja, aber nur mit einem offiziellen Key.
Was ist mit inoffiziellen Keys und Relais-Stationen? Gibt es keine Möglichkeit?
Der Composer des Cursors wird keine benutzerdefinierten Endpunkte verwenden, die vom Nutzer konfiguriert wurden. Wenn Sie diesen Anwendungsfall benötigen, versuchen Sie es mit Cline, einem sehr nützlichen Agent (Nachteil: keine Checkpoints, zeilenweise Verarbeitung führt dazu, dass man nicht alles auf einmal mit Strg + Z rückgängig machen kann, was bedeutet, dass während des Änderungsprozesses viele "dirty versions" in der Timeline zurückbleiben; das ist der Aspekt, den ich am wenigsten mag).
Neue Features implementieren, aber der Code ist über mehrere Dateien verteilt?
Sie müssen keinen Kontext bereitstellen; geben Sie einfach die Dateinamen und notwendige Schnittstellenbeschreibungen zusammen mit der Beschreibung des neuen Features im Chat-Fenster unter dem Agenten-Modus an (bitte geben Sie keinen unnötigen Kontext an, insbesondere wenn Dateien hunderte oder tausende Zeilen lang sind).
Wenn ich möchte, dass die KI ein Projekt zusammenfasst und einen Entwicklungsleitfaden generiert, aber den Code nicht ändern soll, was soll ich tun?
- Zunächst müssen wir klarstellen, dass der LLM-Kontext und die Ausgabe begrenzt sind, daher kann der übliche Chat-Modus nicht verwendet werden, weil Sie nicht den gesamten Code auf einmal bereitstellen können; er kann auch keine zehntausenden Zeilen lange Entwicklungsleitfäden für Sie generieren.
- Daher müssen wir Tools mit Agentenfunktionalität verwenden, wie z.B. den Agent-Modus in Cursor Compose oder das cline-Tool. Diese Tools bestehen im Wesentlichen aus einem Entscheidungsträger und mehreren Ausführern. Der Entscheidungsträger ist dafür verantwortlich, die Schritte zur Erledigung der Aufgabe zu formulieren, die dann von den Ausführern umgesetzt werden. Sowohl die Entscheidungsfindung als auch die Ausführung erfolgen in separaten Chat-Sitzungen.
Der Ansatz ist recht einfach.
- Beschaffe die Projektdateiverzeichnis-Schnittstelle und lasse den Entscheidungsträger eine Leseanleitung generieren, die vergleichbar damit ist, wie dein Vorgesetzter dir beibringt, das Projekt zu lesen.
- Lasse die Ausführer jede Datei gemäß der vom Entscheidungsträger generierten Leseanleitung lesen und Zusammenfassungen der Dateiinhalte sowie Funktionsschnittstellen erstellen. Die Leseergebnisse sollten in
md
-Dateien unter derselben Struktur im/docs
-Verzeichnis gespeichert werden (z.B.src/hello/prompt.py
(stellt einige Prompt-Konstanten bereit) =>docs/src/hello/prompt.md
,src/hello/fillPrompt.py
(stellt einige Hilfsfunktionen zur Manipulation von Variablen und Informationen bereit, die im Prompt definiert sind) =>docs/src/hello/fillPrompt.md
). - Nachdem alle Ausführer das Lesen abgeschlossen haben, werden die Ergebnisse an den Denker übergeben, der jeden Ordner zusammenfasst und konsolidiert (z.B. wenn unter
docs/src/hello/
sowohlprompt.md
als auchfillPrompt.md
vorhanden sind, führt die Ausrichtung und Zusammenfassung zudocs/src/hello.md
). Dieser Prozess wird rekursiv fortgesetzt, bis wir das finaledocs.md
erhalten, welches die benötigte Projektentwicklungsanleitung darstellt. - Implementierung: (Fortsetzung folgt, da noch viel Inhalt vorhanden ist; weitere Ausführungen werden bei Bedarf ergänzt.) Falls du cline verwendest, erstelle ein
MCP
-Tool, um die Projektverzeichnis- und Dateistruktur zu erhalten, und es sollte in der Lage sein, bereits durchgesehene und zusammengefasste Dateien zu annotieren und abzurufen.