Todas las páginas
En esta página

Cursor

El proveedor Cursor ejecuta el agente de Cursor en la máquina del relay, a través del Cursor Agent SDK. OAR inicia un proceso worker por conversación. El agente trabaja en la carpeta de trabajo de la conversación, con los modelos de tu cuenta de Cursor. A diferencia de Claude, no usa un inicio de sesión en la máquina: le das a OAR una clave de API de Cursor.

Esta página trata lo que es propio de Cursor. El chat, la queue y el explorador de archivos funcionan como en todos los proveedores; consulta Los proveedores de un vistazo para ver cómo se compara Cursor.

Lo que necesitas #

  • Una clave de API de Cursor. La pegas en OAR una vez; consulta Activarlo.
  • Nada que instalar. Cursor no necesita ninguna CLI ni la app de Cursor en la máquina, así que la subpestaña Cursor no tiene fila de CLI.

Dónde está cada cosa:

Qué Dónde
El agente Un proceso worker en la máquina del relay, uno por conversación, en la carpeta de trabajo de la conversación.
La clave de API En la base de datos del relay en esa máquina. El panel no vuelve a mostrarla nunca, y no se envía a los navegadores.
El estado propio del agente Una carpeta por conversación, creada en el primer turn de la conversación. Session (Sesión) en el explorador de archivos la abre.

Por defecto, las carpetas de estado están bajo cursor-agents en la carpeta de datos del relay: ~/.oar/data/cursor-agents (%APPDATA%\oar\data\cursor-agents en Windows) en una instalación global, server/data/cursor-agents en un checkout de git. Nuevo en 0.9.14 Antes de 0.9.14, una instalación global las guardaba dentro de la carpeta del paquete, que una actualización reemplaza, así que una conversación podía perder su agente; una conversación cuya carpeta sigue ahí la sigue usando. CURSOR_AGENT_STORE_DIR las traslada; consulta Variables de entorno.

Activarlo #

Abre Settings → Providers → Cursor (Ajustes → Proveedores → Cursor). El panel tiene el título Cursor SDK.

Control Predeterminado Qué hace
Enable Cursor for New Chat model selection (Activar Cursor en la selección de modelo de los chats nuevos) activado en cuanto se guarda una clave Ofrece Cursor en New Chat (Nuevo chat). No se puede marcar antes de guardar una clave.
Cursor API key (Clave de API de Cursor) (el campo muestra Cursor API key…) vacío Tu clave. Una vez guardada, el campo dice Saved API key (enter to replace). Déjalo vacío para conservar la clave guardada.
Cursor model ID (ID de modelo de Cursor) composer-2.5 El modelo con el que empieza una conversación nueva de Cursor. Un campo vacío significa composer-2.5.
Save Cursor settings (Guardar los ajustes de Cursor) Guarda la clave y el modelo. Una clave nueva activa Cursor la primera vez.
Remove saved key (Quitar la clave guardada) Pide confirmación y luego elimina la clave, los modelos detectados y tu elección en Select Models (Seleccionar modelos), y desactiva Cursor. El ID de modelo se mantiene.

La línea de estado bajo los campos dice en qué punto estás:

Estado Significado
Not configured. New conversations use GitHub Copilot. No hay ninguna clave guardada.
API key saved but currently disabled. Enable it to allow Cursor selection in New Chat. Hay una clave guardada y el interruptor está desactivado.
Cursor is enabled. Select Cursor in New Chat to use it. Listo.

Lo que hace el guardado:

  • Detección de modelos. Cuando Cursor está activado y guardas una clave nueva, o cambias el modelo, o lo vuelves a activar, OAR pregunta a Cursor qué modelos puede usar tu clave y las opciones de razonamiento de cada modelo. La solicitud se abandona a los 20 segundos. Un fallo se muestra como aviso en la notificación, por ejemplo Cursor model discovery failed: …. Hasta que una detección sale bien, la lista solo contiene el modelo predeterminado.
  • Cambiar la clave. Guardar una clave nueva borra los modelos detectados y, si Cursor está activado, vuelve a ejecutar la detección. Cuando ya había una clave guardada, el relay también detiene todos los workers de Cursor, incluido uno que esté a mitad de un turn, así que guarda una clave nueva entre turns. Los workers vuelven a arrancar con la clave nueva en el siguiente mensaje.
  • Quitar la clave se rechaza mientras alguna conversación de Cursor haya enviado un mensaje o tenga mensajes en cola: Cannot remove Cursor API key while N active Cursor conversation(s) still exist. Disable Cursor for new conversations instead. Así ningún turn en curso se ve afectado por una eliminación. En su lugar, desactiva Cursor. Cuando la eliminación se lleva a cabo, las conversaciones que aún no han enviado ningún mensaje vuelven a Copilot. Desactivar Cursor no las mueve.

Después inicia una conversación como siempre: en New Chat, elige el proveedor Cursor SDK. Consulta Iniciar una conversación.

Modelos y effort #

De dónde viene la lista. Del propio Cursor, a través de tu clave, en los momentos indicados arriba. 🤗 Select Models → Cursor SDK (Seleccionar modelos → Cursor SDK) elige cuáles de ellos ofrece el área de redacción; 💾 Save enabled models (Guardar los modelos activados) guarda la elección, y Refresh (Actualizar) vuelve a ejecutar la detección. Si no se ha elegido nada, se ofrecen todos los modelos detectados. El modelo de Cursor model ID siempre se ofrece.

Por mensaje. Una conversación puede cambiar de modelo y de effort de un mensaje al siguiente; los IDs de modelo de Cursor se usan tal como los escribe Cursor. Un ID que no está entre los modelos que se te ofrecen (los activados, más Cursor model ID y el modelo propio de la conversación) se rechaza con Cursor model "…" is not available.

Effort. Las opciones de effort vienen del modelo, tal como las lista. OAR conoce estos niveles: none, low, medium, high, xhigh y max. El extra-high de Cursor aparece como xhigh. Un nivel que OAR no conoce no se ofrece.

  • none siempre está en la lista. Si el modelo puede desactivar el razonamiento, none lo hace. Si no puede, el área de redacción muestra la entrada como default (predeterminado), y el modelo funciona como lo hace normalmente.
  • Un modelo que no lista ningún effort solo tiene none, mostrado como default.
  • En un modelo que tiene un interruptor de razonamiento, elegir un nivel activa el razonamiento y none lo desactiva.

Subagents con otros modelos. El menú de subagents integrado de Cursor solo ofrece un par de modelos. Por eso OAR declara un subagent por cada modelo que hayas activado en Select Models, para que el agente pueda pasar una tarea, por ejemplo, a un modelo Grok o GPT. Los nombres usan guiones (grok-4.5 pasa a ser grok-4-5). Un subagent ejecuta la variante predeterminada de su modelo: no se le puede dar un effort. Cambiar la selección surte efecto en el siguiente mensaje.

Cómo funcionan las funciones de OAR en Cursor #

Función En Cursor
Modos del relay plan se ejecuta en el propio modo plan del SDK. agent es el modo normal. ask y autopilot ponen una línea [Relay mode: …] delante de tu mensaje cuando cambia el modo. Consulta Modos del relay.
Tarjetas de pregunta A través de la herramienta propia de OAR ask_user, que al agente se le indica que es la única forma de preguntarte algo. Hasta 4 preguntas, de 2 a 6 opciones cada una, con selección múltiple opcional. Una pregunta escrita como texto normal de la respuesta no se convierte en tarjeta. Consulta ask_user.
Tablero del plan Cursor no tiene un paso de salida del plan. En el modo plan, cuando la respuesta final tiene al menos dos líneas con viñetas o numeradas, OAR muestra Plan ready for review (Plan listo para revisar) con Implement in autopilot (Implementar en autopilot), Stop here and prompt myself (Detenerse aquí y escribir yo el prompt) y Stop here (Detenerse aquí). Un plan escrito en prosa no recibe tablero.
Corrección del rumbo y cola No hay corrección del rumbo. Un mensaje enviado durante un turn espera detrás de él, y el botón de enviar dice Queue (Poner en cola). Consulta Los turns y la queue. Stop (Detener) termina el turn en curso, también mientras el agente espera tu respuesta a una pregunta.
Tareas en segundo plano No hay panel de tareas. Cuando el agente inicia trabajo en segundo plano, una línea de actividad dice Background task <status>: ….
Subagents Cada uno se muestra como un subagent con su inicio y su final, y su texto, sus pensamientos y sus llamadas a herramientas aparecen en el visor. Solo un nivel: los subagents de un subagent no se muestran. Stop termina todo el turn, no un solo subagent.
Adjuntos Las imágenes de hasta 5 MB llegan al agente dentro del mensaje. Las imágenes más grandes y otros archivos se dan como una ruta en el mensaje para que el agente los lea.
Indicador de contexto El botón 🧠 muestra un total y un porcentaje de la ventana del modelo, sin categorías. Cuando un turn hizo varias llamadas al modelo, la cifra es una estimación y lo indica. La ventana viene de la ficha del modelo, o de una tabla integrada cuando la ficha no la tiene.
Compactación OAR ni fija ni muestra una compactación automática. /compact funciona como en todos los proveedores. Consulta Compactar una conversación.
Reanudación El relay guarda el ID del agente de Cursor y reanuda ese agente después de un reinicio o después de que se cerrara el handle del worker. Si el agente no se puede reanudar, se crea uno nuevo. Consulta Reinicios y reanudación.
Herramientas de agente preview y relay_tool se dan al agente como herramientas. relay_tool solo está cuando el relay tiene relays emparejados o las sesiones de agente están activadas. Consulta Herramientas de agente y Sesiones de agente.

Las reglas de proyecto propias de Cursor, los archivos de subagents y los servidores MCP de la carpeta .cursor de la carpeta de trabajo no se cargan. OAR define él mismo las herramientas y los subagents del agente.

Un agente inactivo durante mucho tiempo #

Un agente de Cursor que no se ha usado durante 30 minutos se cierra y se vuelve a abrir con el siguiente mensaje, porque su inicio de sesión caduca tras unas horas de inactividad. No lo ves. Si el inicio de sesión ha caducado de todos modos, OAR reconstruye el agente y vuelve a enviar el mensaje, hasta dos veces, y añade la línea de actividad Cursor session re-authenticated; retrying this message on a fresh agent handle. Un tercer fallo termina el turn con el mensaje de inicio de sesión de Si no funciona.

Consumo #

Los turns de Cursor no tienen línea de consumo bajo la respuesta. 📊 Check Usage (Ver consumo) tiene una tarjeta Cursor. Mientras Cursor está desactivado dice Cursor is not enabled in provider settings. Sus cifras vienen de dos fuentes, y la tarjeta dice cuál ha usado.

Gasto según OAR, una estimación. Después de cada turn, OAR lee de Cursor el gasto facturado del agente y contabiliza el aumento en el ciclo de facturación actual. Asigna cada turn a la bolsa del modelo que lo ejecutó:

Bolsa Modelos
Cursor Models (Modelos de Cursor) Nombres que empiezan por composer, cursor-, cheetah o sonic, o que contienen grok.
Other Models (Otros modelos) Nombres que contienen claude, sonnet, opus, haiku, fable, codex, gemini, deepseek, kimi, qwen, llama, mistral o minimax, o que empiezan por gpt, glm, u o seguida de un dígito.
Unclassified (Sin clasificar) auto, cost, balance, intelligence, cualquier nombre que contenga router y todo nombre que no encaje en ninguna de las bolsas anteriores. Solo se muestra cuando hay gasto, con una nota de que Cursor no dice qué bolsa lo atendió.

La comparación no distingue mayúsculas de minúsculas, y los nombres de router se comprueban primero.

Cursor no le dice al SDK qué incluye tu plan. Eso lo introduces tú:

Control Predeterminado Qué hace
Cursor Models pool (USD) (Bolsa Cursor Models, USD) vacío La asignación mensual de esa bolsa. Un campo vacío la borra, y la tarjeta solo muestra el gasto.
Other Models pool (USD) (Bolsa Other Models, USD) vacío Lo mismo para la otra bolsa.
Billing resets on day of month (Día del mes en que se reinicia la facturación) 1 El día en que se reinicia el ciclo, de 1 a 31. En un mes con menos días se usa el último día del mes.
Save allowances (Guardar asignaciones) Guarda los tres campos.
Reset tracked spend (Restablecer el gasto registrado) Pide confirmación, guarda los tres campos y luego borra los totales del ciclo actual. Úsalo después de cambiar de plan o de cuenta. OAR empieza a contar desde los totales actuales del agente, así que el gasto pasado no se cuenta dos veces.

Los medidores comparan el coste bruto del modelo con tu asignación. La tarjeta también lista lo que Cursor cobró realmente, que a menudo es cero para el uso incluido en el plan. Todas estas cifras son estimaciones. Un coste que Cursor informa tarde se contabiliza con el turn que lo ve. El panel Spending de Cursor es la fuente de referencia, y la tarjeta enlaza a él.

Barras del plan en vivo, desde el panel de Cursor. Con un token de sesión del panel, la tarjeta añade las barras Plan usage (total) (Consumo del plan, total), Auto + Composer y API leídas en vivo del panel de Cursor, el nombre del plan, el gasto incluido y bajo demanda, y las fechas reales del ciclo. Los medidores locales de las bolsas pasan entonces a segundo plano. El token es una cookie de sesión, no la clave de API, y la clave de API no puede leer estas cifras.

Control Qué hace
Dashboard session token (live plan bars) (Token de sesión del panel, barras del plan en vivo) El valor de la cookie WorkosCursorSessionToken de una pestaña de cursor.com con la sesión iniciada (en las herramientas de desarrollo del navegador, en Application → Cookies).
Save token (Guardar token) Lo guarda. El campo no admite espacios y como máximo 8192 caracteres.
Remove (Quitar) Pide confirmación y luego elimina el token que guardaste. Un token del entorno o de la app de Cursor sigue en uso.

OAR busca un token en este orden:

  1. El que guardaste.
  2. CURSOR_SESSION_TOKEN en el entorno del relay, para hosts sin la app de Cursor.
  3. El inicio de sesión de la app de Cursor en la máquina del relay, leído de su estado local sin configuración.

La línea de estado bajo el campo indica la fuente en uso. El token se queda en el relay y nunca se envía a un navegador. Si Cursor no acepta el token, la tarjeta vuelve a las estimaciones y dice qué fuente se rechazó, o que no se encontró ningún token.

Un agente puede leer las mismas cifras con la acción usage de relay_tool.

Variables de entorno #

Fíjalas en el entorno en el que arranca el relay.

Variable Efecto
CURSOR_SESSION_TOKEN El token de sesión del panel para las barras del plan en vivo. Un token que guardaste en el panel de ajustes tiene prioridad sobre él; él tiene prioridad sobre el inicio de sesión de la app de Cursor.
CURSOR_AGENT_STORE_DIR La carpeta que contiene el estado del agente de cada conversación, en lugar de cursor-agents en la carpeta de datos del relay. El botón Session la sigue.
OAR_TURN_STALL_IDLE_MS, OAR_TURN_STALL_MODEL_MS, OAR_TURN_STALL_TOOL_MS Cuánto tiempo puede estar en silencio un turn de Cursor antes de fallar: 120 s sin nada en curso, 5 minutos durante una solicitud al modelo, 30 minutos durante una llamada a herramienta; 0 significa sin límite. Consulta Los turns y la queue. No se pasan al agente cuando las sesiones se ejecutan bajo tmux: consulta qué variables llegan a los agentes.

La clave de API no se puede fijar de esta forma: el relay pasa a sus workers la clave del panel de ajustes e ignora un CURSOR_API_KEY en su propio entorno.

Límites #

Además de las carencias de la tabla anterior (sin corrección del rumbo, sin panel de tareas, sin ajuste de compactación, un solo nivel de subagents):

  • Las tarjetas de pregunta dependen de que el agente llame a ask_user.
  • El gasto y las asignaciones son estimaciones. Solo las barras del panel de Cursor vienen de Cursor.
  • Un límite de uso de tu plan de Cursor no pone la conversación en pausa. El turn falla como cualquier turn fallido, y vuelves a enviar el mensaje.

Si no funciona #

Lo que ves Por qué, y qué hacer
La respuesta dice System note: the Cursor runtime could not authenticate (…). Set or renew the Cursor API key in provider settings, then retry. Cursor rechazó la clave, también después de que OAR reconstruyera el agente dos veces. Pega una clave válida en Settings → Providers → Cursor y guarda.
New Chat no tiene Cursor, o el inicio falla con Cursor API key is not configured No hay ninguna clave guardada. Guarda una.
La línea de estado dice API key saved but currently disabled. Marca Enable Cursor for New Chat model selection.
Cursor model discovery failed: … o Cursor model discovery returned no models después de guardar La clave es incorrecta, o Cursor no respondió en 20 segundos. Comprueba la clave y vuelve a guardar, o usa Refresh en 🤗 Select Models. Una actualización que falla ahí dice Cursor model discovery failed. Cached Cursor models were kept: ….
Cursor model "…" is not available El modelo no está en la lista de tu clave. Actualiza la lista, o elige otro modelo.
Invalid Cursor model ID Cursor model ID contiene caracteres que no se permiten en un ID de modelo. Copia el ID de la lista de modelos.
System note: the Cursor runtime sent nothing for Ns while a model request was running, so the relay ended the turn. El turn estuvo en silencio más allá de su ventana (consulta Variables de entorno) y OAR lo canceló. Vuelve a enviar el mensaje. Consulta Los turns y la queue.
Lo mismo, … while a tool was running (…) Un comando se ejecutó en silencio durante 30 minutos. Sube OAR_TURN_STALL_TOOL_MS, o ponlo a 0 para no tener límite.
System note: the turn completed without a text reply. El agente terminó sin escribir nada. Pregúntale qué hizo.
Cannot remove Cursor API key while N active Cursor conversation(s) still exist. Archiva o elimina esas conversaciones, o desactiva Cursor en su lugar.
La tarjeta de Cursor en Check Usage solo muestra estimaciones, y dice que no se encontró ningún token La máquina del relay no tiene un inicio de sesión de la app de Cursor. Pega un token en Dashboard session token, o fija CURSOR_SESSION_TOKEN.
Live plan bars unavailable — Cursor did not accept … El token ha caducado. Vuelve a iniciar sesión en la app de Cursor, o guarda un token nuevo.
That does not look like a WorkosCursorSessionToken cookie value El texto pegado tiene un espacio o un salto de línea, o tiene más de 8192 caracteres. Copia solo el valor de la cookie.
El botón Session aparece en gris La conversación aún no ha tenido ningún turn.