Alle Seiten
Auf dieser Seite

Cursor

Der Cursor-Provider führt Cursors Agent auf dem Rechner des Relays aus, über das Cursor Agent SDK. OAR startet einen Worker-Prozess pro Konversation. Der Agent arbeitet im Arbeitsordner der Konversation, mit den Modellen deines Cursor-Kontos. Anders als Claude verwendet er keine Anmeldung auf dem Rechner: Du gibst OAR einen Cursor-API-Key.

Diese Seite behandelt, was bei Cursor besonders ist. Der Chat, die Queue und der Dateibrowser funktionieren wie bei jedem Provider; unter Provider im Überblick steht, wie Cursor im Vergleich abschneidet.

Was du brauchst #

  • Einen Cursor-API-Key. Du fügst ihn einmal in OAR ein; siehe Einschalten.
  • Nichts zu installieren. Cursor braucht keine CLI und keine Cursor-App auf dem Rechner, daher hat der Unter-Tab Cursor keine CLI-Zeile.

Wo was liegt:

Was Wo
Der Agent Ein Worker-Prozess auf dem Rechner des Relays, einer pro Konversation, im Arbeitsordner der Konversation.
Der API-Key In der Datenbank des Relays auf diesem Rechner. Das Panel zeigt ihn nie wieder an, und er wird nicht an Browser geschickt.
Der eigene Zustand des Agents Ein Ordner pro Konversation, beim ersten Turn der Konversation angelegt. Session im Dateibrowser öffnet ihn.

Standardmäßig liegen die Zustandsordner unter cursor-agents im Datenordner des Relays: ~/.oar/data/cursor-agents (%APPDATA%\oar\data\cursor-agents unter Windows) bei einer globalen Installation, server/data/cursor-agents in einem Git-Checkout. Neu in 0.9.14 Vor 0.9.14 hielt eine globale Installation sie im Paketordner, den ein Update ersetzt, sodass eine Konversation ihren Agent verlieren konnte; eine Konversation, deren Ordner noch da ist, verwendet ihn weiter. CURSOR_AGENT_STORE_DIR verschiebt sie; siehe Umgebungsvariablen.

Einschalten #

Öffne Settings → Providers → Cursor (Einstellungen → Provider → Cursor). Das Panel trägt die Überschrift Cursor SDK.

Element Standard Was es tut
Enable Cursor for New Chat model selection (Cursor in der Modellauswahl für neue Chats aktivieren) an, sobald ein Key gespeichert ist Bietet Cursor in New Chat (Neuer Chat) an. Es lässt sich nicht ankreuzen, bevor ein Key gespeichert ist.
Cursor API key (Cursor-API-Key; das Feld zeigt Cursor API key…) leer Dein Key. Nach dem Speichern zeigt das Feld Saved API key (enter to replace). Lass es leer, um den gespeicherten Key zu behalten.
Cursor model ID (Cursor-Modell-ID) composer-2.5 Das Modell, mit dem eine neue Cursor-Konversation startet. Ein leeres Feld bedeutet composer-2.5.
Save Cursor settings (Cursor-Einstellungen speichern) Speichert den Key und das Modell. Ein neuer Key schaltet Cursor beim ersten Mal ein.
Remove saved key (Gespeicherten Key entfernen) Fragt nach einer Bestätigung, löscht dann den Key, die gefundenen Modelle und deine Auswahl in Select Models (Modelle auswählen) und schaltet Cursor aus. Die Modell-ID bleibt.

Die Statuszeile unter den Feldern sagt, wo du stehst:

Status Bedeutung
Not configured. New conversations use GitHub Copilot. Kein Key ist gespeichert.
API key saved but currently disabled. Enable it to allow Cursor selection in New Chat. Ein Key ist gespeichert und der Schalter ist aus.
Cursor is enabled. Select Cursor in New Chat to use it. Bereit.

Was das Speichern bewirkt:

  • Modellerkennung. Wenn Cursor eingeschaltet ist und du einen neuen Key speicherst, das Modell änderst oder Cursor wieder einschaltest, fragt OAR Cursor nach den Modellen, die dein Key verwenden kann, und nach den Reasoning-Optionen jedes Modells. Die Anfrage gibt nach 20 Sekunden auf. Ein Fehlschlag erscheint als Warnung im Hinweis, z. B. Cursor model discovery failed: …. Bis eine Erkennung gelingt, enthält die Liste nur das Standardmodell.
  • Den Key ändern. Das Speichern eines neuen Keys leert die gefundenen Modelle und führt, wenn Cursor an ist, die Erkennung erneut aus. War schon ein Key gespeichert, stoppt das Relay außerdem jeden Cursor-Worker, auch einen mitten in einem Turn; speichere einen neuen Key also zwischen Turns. Die Worker starten bei der nächsten Nachricht mit dem neuen Key neu.
  • Das Entfernen des Keys wird abgelehnt, solange eine Cursor-Konversation eine Nachricht gesendet oder Nachrichten eingereiht hat: Cannot remove Cursor API key while N active Cursor conversation(s) still exist. Disable Cursor for new conversations instead. So ist kein laufender Turn von einem Entfernen betroffen. Schalte Cursor stattdessen aus. Geht das Entfernen durch, wechseln Konversationen, die noch keine Nachricht gesendet haben, zurück zu Copilot. Cursor auszuschalten verschiebt sie nicht.

Starte dann eine Konversation wie gewohnt: Wähl in New Chat den Provider Cursor SDK. Siehe Eine Konversation starten.

Modelle und Effort #

Woher die Liste kommt. Von Cursor selbst, über deinen Key, zu den oben genannten Zeitpunkten. 🤗 Select Models → Cursor SDK legt fest, welche davon der Eingabebereich anbietet; 💾 Save enabled models (Aktivierte Modelle speichern) behält die Auswahl, und Refresh (Aktualisieren) führt die Erkennung erneut aus. Ohne Auswahl werden alle gefundenen Modelle angeboten. Das Modell in Cursor model ID wird immer angeboten.

Pro Nachricht. Eine Konversation kann Modell und Effort von einer Nachricht zur nächsten ändern; Cursor-Modell-IDs werden so verwendet, wie Cursor sie schreibt. Eine ID, die nicht unter den dir angebotenen Modellen ist (den aktivierten, plus Cursor model ID und dem eigenen Modell der Konversation), wird mit Cursor model "…" is not available abgelehnt.

Effort. Die Effort-Auswahl kommt vom Modell, so wie es sie auflistet. OAR kennt diese Stufen: none, low, medium, high, xhigh und max. Cursors extra-high erscheint als xhigh. Eine Stufe, die OAR nicht kennt, wird nicht angeboten.

  • none steht immer in der Liste. Kann das Modell das Reasoning abschalten, tut none das. Kann es das nicht, zeigt der Eingabebereich den Eintrag als default (Standard), und das Modell läuft wie üblich.
  • Ein Modell, das keinen Effort auflistet, hat nur none, angezeigt als default.
  • Bei einem Modell mit einem Thinking-Schalter schaltet die Wahl einer Stufe Thinking ein und none schaltet es aus.

Subagents auf anderen Modellen. Cursors eingebautes Subagent-Menü bietet nur wenige Modelle an. OAR deklariert daher einen Subagent pro Modell, das du in Select Models aktiviert hast, damit der Agent einen Task z. B. an ein Grok- oder GPT-Modell abgeben kann. Namen verwenden Bindestriche (aus grok-4.5 wird grok-4-5). Ein Subagent läuft mit der Standardvariante seines Modells: Ihm lässt sich kein Effort geben. Eine Änderung der Auswahl wirkt ab der nächsten Nachricht.

Wie OARs Funktionen bei Cursor arbeiten #

Funktion Bei Cursor
Relay-Modi plan läuft im eigenen Plan-Modus des SDK. agent ist der normale Modus. ask und autopilot setzen eine Zeile [Relay mode: …] vor deine Nachricht, wenn sich der Modus ändert. Siehe Relay-Modi.
Rückfrage-Karten Über OARs eigenes Tool ask_user, von dem der Agent gesagt bekommt, dass es der einzige Weg ist, dich etwas zu fragen. Bis zu 4 Fragen, je 2 bis 6 Optionen, optional Mehrfachauswahl. Eine Frage, die als normaler Antworttext geschrieben ist, wird keine Karte. Siehe ask_user.
Plan-Board Cursor hat keinen Schritt zum Verlassen des Plans. Im Modus plan zeigt OAR, wenn die letzte Antwort mindestens zwei Aufzählungs- oder nummerierte Zeilen hat, Plan ready for review (Plan bereit zur Prüfung) mit Implement in autopilot (Im Autopilot umsetzen), Stop here and prompt myself (Hier aufhören, ich prompte selbst) und Stop here (Hier aufhören). Ein als Fließtext geschriebener Plan bekommt kein Board.
Nachsteuern und Einreihen Kein Nachsteuern. Eine während eines Turns gesendete Nachricht wartet dahinter, und der Senden-Button zeigt Queue (Einreihen). Siehe Turns und die Queue. Stop (Stoppen) beendet den laufenden Turn, auch während der Agent auf deine Antwort auf eine Frage wartet.
Hintergrund-Tasks Keine Task-Leiste. Wenn der Agent Hintergrundarbeit startet, lautet eine Aktivitätszeile Background task <status>: ….
Subagents Jeder erscheint als Subagent mit Start und Ende, und sein Text, seine Überlegungen und Tool-Aufrufe erscheinen in der Ansicht. Nur eine Ebene: Die eigenen Subagents eines Subagents werden nicht angezeigt. Stop beendet den ganzen Turn, nicht einen einzelnen Subagent.
Anhänge Bilder bis 5 MB gehen in der Nachricht an den Agent. Größere Bilder und andere Dateien werden als Pfad in der Nachricht übergeben, die der Agent liest.
Kontextanzeige Der 🧠-Button zeigt eine Summe und einen Prozentsatz des Fensters des Modells, ohne Kategorien. Hat ein Turn mehrere Modellaufrufe gemacht, ist die Zahl eine Schätzung und sagt das. Das Fenster kommt aus der Auflistung des Modells, oder aus einer eingebauten Tabelle, wenn die Auflistung keines nennt.
Kompaktierung OAR setzt und zeigt keine automatische Kompaktierung. /compact funktioniert wie bei jedem Provider. Siehe Eine Konversation kompaktieren.
Fortsetzen Das Relay speichert die ID des Cursor-Agents und setzt diesen Agent nach einem Neustart oder nach dem Schließen des Handles des Workers fort. Lässt sich der Agent nicht fortsetzen, wird ein neuer angelegt. Siehe Neustarts und Fortsetzen.
Agent-Tools preview und relay_tool werden dem Agent als Tools gegeben. relay_tool gibt es nur, wenn das Relay gekoppelte Relays hat oder Agent-Sessions eingeschaltet sind. Siehe Agent-Tools und Agent-Sessions.

Cursors eigene Projektregeln, Subagent-Dateien und MCP-Server im .cursor-Ordner des Arbeitsordners werden nicht geladen. OAR definiert die Tools und Subagents des Agents selbst.

Ein lange untätiger Agent #

Ein Cursor-Agent, der 30 Minuten nicht verwendet wurde, wird geschlossen und bei der nächsten Nachricht wieder geöffnet, weil seine Anmeldung nach einigen untätigen Stunden verfällt. Du merkst davon nichts. Ist die Anmeldung trotzdem verfallen, baut OAR den Agent neu und sendet die Nachricht erneut, bis zu zweimal, und fügt die Aktivitätszeile Cursor session re-authenticated; retrying this message on a fresh agent handle. hinzu. Ein dritter Fehlschlag beendet den Turn mit der Anmeldemeldung unter Wenn es nicht funktioniert.

Verbrauch #

Cursor-Turns haben keine Verbrauchszeile unter der Antwort. 📊 Check Usage (Verbrauch prüfen) hat eine Cursor-Karte. Solange Cursor aus ist, zeigt sie Cursor is not enabled in provider settings. Ihre Zahlen kommen aus zwei Quellen, und die Karte sagt, welche sie verwendet hat.

Ausgaben aus OAR, eine Schätzung. Nach jedem Turn liest OAR die berechneten Ausgaben des Agents bei Cursor und bucht den Anstieg auf den aktuellen Abrechnungszeitraum. Es ordnet jeden Turn dem Pool des Modells zu, das ihn ausgeführt hat:

Pool Modelle
Cursor Models (Cursor-Modelle) Namen, die mit composer, cursor-, cheetah oder sonic beginnen oder grok enthalten.
Other Models Namen, die claude, sonnet, opus, haiku, fable, codex, gemini, deepseek, kimi, qwen, llama, mistral oder minimax enthalten oder mit gpt, glm oder o und einer Ziffer beginnen.
Unclassified (Nicht zugeordnet) auto, cost, balance, intelligence, jeder Name, der router enthält, und jeder Name, der in keinen der Pools oben passt. Nur angezeigt, wenn es Ausgaben gibt, mit einer Notiz, dass Cursor nicht sagt, welcher Pool sie bedient hat.

Der Abgleich ignoriert Groß- und Kleinschreibung, und die Router-Namen werden zuerst geprüft.

Cursor sagt dem SDK nicht, was dein Plan enthält. Das gibst du ein:

Element Standard Was es tut
Cursor Models pool (USD) (Pool Cursor Models in USD) leer Das monatliche Kontingent dieses Pools. Ein leeres Feld löscht es, und die Karte zeigt nur Ausgaben.
Other Models pool (USD) (Pool Other Models in USD) leer Dasselbe für den anderen Pool.
Billing resets on day of month (Abrechnung startet neu am Monatstag) 1 Der Tag, an dem der Zeitraum neu beginnt, 1 bis 31. In einem Monat mit weniger Tagen wird der letzte Tag des Monats verwendet.
Save allowances (Kontingente speichern) Speichert die drei Felder.
Reset tracked spend (Erfasste Ausgaben zurücksetzen) Fragt nach einer Bestätigung, speichert die drei Felder und löscht dann die Summen des aktuellen Zeitraums. Verwende es nach einem Wechsel von Plan oder Konto. OAR beginnt bei den aktuellen Summen des Agents zu zählen, sodass frühere Ausgaben nicht doppelt gezählt werden.

Die Anzeigen messen die reinen Modellkosten an deinem Kontingent. Die Karte listet auch, was Cursor tatsächlich berechnet hat, was bei im Plan enthaltener Nutzung oft null ist. Alle diese Zahlen sind Schätzungen. Kosten, die Cursor spät meldet, werden mit dem Turn gebucht, der sie sieht. Cursors eigenes Spending-Dashboard ist die maßgebliche Quelle, und die Karte verlinkt darauf.

Live-Plan-Balken aus dem Dashboard. Mit einem Dashboard-Session-Token fügt die Karte die Balken Plan usage (total) (Plan-Verbrauch, gesamt), Auto + Composer und API hinzu, live aus Cursors Dashboard gelesen, sowie den Plan-Namen, die enthaltenen und On-Demand-Ausgaben und die echten Daten des Zeitraums. Die lokalen Pool-Anzeigen rücken dann an zweite Stelle. Das Token ist ein Session-Cookie, nicht der API-Key, und der API-Key kann diese Zahlen nicht lesen.

Element Was es tut
Dashboard session token (live plan bars) (Dashboard-Session-Token, Live-Planbalken) Der Wert des Cookies WorkosCursorSessionToken aus einem angemeldeten cursor.com-Tab (in den Entwicklertools des Browsers unter Application → Cookies).
Save token (Token speichern) Speichert es. Das Feld nimmt keine Leerzeichen und höchstens 8.192 Zeichen an.
Remove (Entfernen) Fragt nach einer Bestätigung und löscht dann das Token, das du gespeichert hast. Ein Token aus der Umgebung oder der Cursor-App bleibt in Gebrauch.

OAR sucht ein Token in dieser Reihenfolge:

  1. Das, das du gespeichert hast.
  2. CURSOR_SESSION_TOKEN in der Umgebung des Relays, für Hosts ohne Cursor-App.
  3. Die Anmeldung der Cursor-App auf dem Rechner des Relays, aus ihrem lokalen Zustand gelesen, ohne Einrichtung.

Die Statuszeile unter dem Feld nennt die verwendete Quelle. Das Token bleibt auf dem Relay und wird nie an einen Browser geschickt. Akzeptiert Cursor das Token nicht, fällt die Karte auf die Schätzungen zurück und sagt, welche Quelle abgelehnt wurde oder dass kein Token gefunden wurde.

Ein Agent kann dieselben Zahlen mit der Aktion usage von relay_tool lesen.

Umgebungsvariablen #

Setz diese in der Umgebung, in der das Relay startet.

Variable Wirkung
CURSOR_SESSION_TOKEN Das Dashboard-Session-Token für die Live-Plan-Balken. Ein im Panel gespeichertes Token hat Vorrang davor; es hat Vorrang vor der Anmeldung der Cursor-App.
CURSOR_AGENT_STORE_DIR Der Ordner, der den Agent-Zustand pro Konversation enthält, statt cursor-agents im Datenordner des Relays. Der Button Session folgt ihm.
OAR_TURN_STALL_IDLE_MS, OAR_TURN_STALL_MODEL_MS, OAR_TURN_STALL_TOOL_MS Wie lange ein Cursor-Turn still sein darf, bevor er fehlschlägt: 120 s, wenn nichts läuft, 5 Minuten während einer Modellanfrage, 30 Minuten während eines Tool-Aufrufs; 0 bedeutet kein Limit. Siehe Turns und die Queue. Wird nicht an den Agent weitergereicht, wo Sessions unter tmux laufen: siehe welche Variablen die Agents erreichen.

Der API-Key lässt sich so nicht setzen: Das Relay übergibt seinen Workern den Key aus dem Panel und ignoriert einen CURSOR_API_KEY in seiner eigenen Umgebung.

Grenzen #

Über die Lücken in der Tabelle oben hinaus (kein Nachsteuern, keine Task-Leiste, keine Einstellung für die Kompaktierung, nur eine Subagent-Ebene):

  • Rückfrage-Karten hängen davon ab, dass der Agent ask_user aufruft.
  • Ausgaben und Kontingente sind Schätzungen. Nur die Dashboard-Balken kommen von Cursor.
  • Ein Nutzungslimit deines Cursor-Plans pausiert die Konversation nicht. Der Turn schlägt fehl wie jeder fehlgeschlagene Turn, und du sendest die Nachricht erneut.

Wenn es nicht funktioniert #

Was du siehst Warum, und was zu tun ist
Die Antwort sagt System note: the Cursor runtime could not authenticate (…). Set or renew the Cursor API key in provider settings, then retry. Cursor hat den Key abgelehnt, auch nachdem OAR den Agent zweimal neu gebaut hat. Füge unter Settings → Providers → Cursor einen gültigen Key ein und speichere.
New Chat hat kein Cursor, oder der Start schlägt mit Cursor API key is not configured fehl Kein Key ist gespeichert. Speichere einen.
Die Statuszeile zeigt API key saved but currently disabled. Kreuze Enable Cursor for New Chat model selection an.
Cursor model discovery failed: … oder Cursor model discovery returned no models nach dem Speichern Der Key ist falsch, oder Cursor hat nicht innerhalb von 20 Sekunden geantwortet. Prüf den Key und speichere erneut, oder verwende Refresh in 🤗 Select Models. Ein dort fehlgeschlagenes Aktualisieren sagt Cursor model discovery failed. Cached Cursor models were kept: ….
Cursor model "…" is not available Das Modell ist nicht auf der Liste für deinen Key. Aktualisiere die Liste oder wähl ein anderes Modell.
Invalid Cursor model ID Cursor model ID enthält Zeichen, die in einer Modell-ID nicht erlaubt sind. Kopiere die ID aus der Modellliste.
System note: the Cursor runtime sent nothing for Ns while a model request was running, so the relay ended the turn. Der Turn war länger still als sein Zeitfenster (siehe Umgebungsvariablen), und OAR hat ihn abgebrochen. Sende die Nachricht erneut. Siehe Turns und die Queue.
Dasselbe, … while a tool was running (…) Ein Befehl lief 30 Minuten lang still. Erhöhe OAR_TURN_STALL_TOOL_MS oder setz es auf 0 für kein Limit.
System note: the turn completed without a text reply. Der Agent hat fertig gemacht, ohne etwas zu schreiben. Frag ihn, was er getan hat.
Cannot remove Cursor API key while N active Cursor conversation(s) still exist. Archiviere oder lösche diese Konversationen, oder schalte Cursor stattdessen aus.
Die Cursor-Karte in Check Usage zeigt nur Schätzungen und sagt, es wurde kein Token gefunden Der Rechner des Relays hat keine Anmeldung der Cursor-App. Füge ein Token unter Dashboard session token ein oder setz CURSOR_SESSION_TOKEN.
Live plan bars unavailable — Cursor did not accept … Das Token ist abgelaufen. Melde dich erneut in der Cursor-App an oder speichere ein frisches Token.
That does not look like a WorkosCursorSessionToken cookie value Der eingefügte Text enthält ein Leerzeichen oder einen Zeilenumbruch oder ist länger als 8.192 Zeichen. Kopiere nur den Wert des Cookies.
Der Button Session ist ausgegraut Die Konversation hatte noch keinen Turn.