所有頁面
本頁內容

Cursor

Cursor 供應商透過 Cursor Agent SDK,在中繼所在的機器上執行 Cursor 的 agent。OAR 會為每個對話啟動一個 worker 處理程序。agent 在對話的工作資料夾中工作,使用你 Cursor 帳戶的模型。和 Claude 不同,它不使用機器上的登入:你要提供 OAR 一個 Cursor API 金鑰。

本頁說明 Cursor 特有的部分。對話、佇列和檔案瀏覽器的運作方式和其他供應商相同;Cursor 和其他供應商的比較見供應商一覽。

你需要什麼 #

  • 一個 Cursor API 金鑰。只要在 OAR 中貼上一次;見啟用。
  • 不需要安裝任何東西。Cursor 不需要 CLI,機器上也不需要 Cursor app,所以 Cursor 子分頁沒有 CLI 列。

各項內容的存放位置:

項目 位置
agent 中繼所在機器上的 worker 處理程序,每個對話一個,在對話的工作資料夾中執行。
API 金鑰 存在該機器上中繼的資料庫中。面板不會再顯示它,也不會把它送到瀏覽器。
agent 自己的狀態 每個對話一個資料夾,在對話的第一個回合建立。可從檔案瀏覽器中的 Session 開啟。

狀態資料夾預設位於中繼資料目錄下的 cursor-agents:全域安裝時是 ~/.oar/data/cursor-agents(Windows 上是 %APPDATA%\oar\data\cursor-agents),git 檢出則是 server/data/cursor-agents。0.9.14 新增 0.9.14 之前,全域安裝會把它們放在套件資料夾內,而更新會取代整個套件資料夾,因此對話可能失去它的 agent;資料夾仍在的對話會繼續使用它。CURSOR_AGENT_STORE_DIR 可以變更它們的位置;見環境變數。

啟用 #

開啟 Settings → Providers → Cursor(設定 → 供應商 → Cursor)。面板標題是 Cursor SDK。

控制項 預設 作用
Enable Cursor for New Chat model selection(在新對話的模型選擇中啟用 Cursor) 儲存金鑰後即開啟 在 New Chat(新對話)中提供 Cursor。儲存金鑰之前無法勾選。
Cursor API key(Cursor API 金鑰),欄位內顯示 Cursor API key… 空白 你的金鑰。儲存後,欄位會顯示 Saved API key (enter to replace)。欄位留空即保留已儲存的金鑰。
Cursor model ID(Cursor 模型 ID) composer-2.5 新 Cursor 對話一開始使用的模型。欄位留空等同 composer-2.5。
Save Cursor settings(儲存 Cursor 設定) 儲存金鑰和模型。第一次儲存新金鑰時會啟用 Cursor。
Remove saved key(移除已儲存的金鑰) 先請你確認,然後刪除金鑰、探索到的模型和你在 Select Models(選擇模型)中的選擇,並停用 Cursor。模型 ID 會保留。

欄位下方的狀態行會顯示目前的狀態:

狀態 意義
Not configured. New conversations use GitHub Copilot. 尚未儲存金鑰。
API key saved but currently disabled. Enable it to allow Cursor selection in New Chat. 已儲存金鑰,但開關是關閉的。
Cursor is enabled. Select Cursor in New Chat to use it. 已就緒。

儲存時會做的事:

  • 模型探索。 在 Cursor 已啟用的情況下,當你儲存新金鑰、變更模型或重新啟用時,OAR 會向 Cursor 查詢你的金鑰可用的模型,以及每個模型的推理選項。請求在 20 秒後放棄。失敗時會在通知中顯示警告,例如 Cursor model discovery failed: …。探索成功之前,清單中只有預設模型。
  • 變更金鑰。 儲存新金鑰會清除已探索的模型;若 Cursor 已啟用,則會重新探索。如果之前已儲存過金鑰,中繼還會停止所有 Cursor worker,包括正在執行回合的 worker,所以請在回合之間儲存新金鑰。worker 會在下一則訊息時以新金鑰重新啟動。
  • 移除金鑰在任何 Cursor 對話已送出訊息或有排入佇列的訊息時會被拒絕:Cannot remove Cursor API key while N active Cursor conversation(s) still exist. Disable Cursor for new conversations instead. 因此移除金鑰不會影響任何執行中的回合。請改為停用 Cursor。移除成功時,尚未送出訊息的對話會移回 Copilot。停用 Cursor 則不會移動它們。

接著照常開始對話:在 New Chat 中選擇 Cursor SDK 供應商。見開始對話。

模型與 reasoning effort #

清單的來源。 清單來自 Cursor 本身,透過你的金鑰,在上述時機取得。🤗 Select Models → Cursor SDK(選擇模型 → Cursor SDK)決定輸入區要提供其中哪些模型;💾 Save enabled models(儲存已啟用的模型)會保存這個選擇,Refresh(重新整理)則重新執行探索。沒有做任何選擇時,會提供所有探索到的模型。Cursor model ID 中的模型一律會提供。

以訊息為單位。 對話可以在每則訊息之間變更模型和 reasoning effort;Cursor 模型 ID 照 Cursor 的寫法使用。不在你可用模型(已啟用的模型,加上 Cursor model ID 和對話本身的模型)之中的 ID,會被拒絕並顯示 Cursor model "…" is not available。

Reasoning effort。 可選的 effort 等級來自模型本身列出的內容。OAR 認得這些等級:none、low、medium、high、xhigh 和 max。Cursor 的 extra-high 會顯示為 xhigh。OAR 不認得的等級不會提供。

  • none 一定會在清單中。如果模型可以關閉推理,none 就會關閉推理。如果不行,輸入區會把這個項目顯示為 default(預設),模型則照平常的方式執行。
  • 沒有列出任何 effort 的模型只有 none,顯示為 default。
  • 在有思考開關的模型上,選擇任一等級會開啟思考,選 none 則會關閉思考。

使用其他模型的 subagent。 Cursor 內建的 subagent 選單只提供少數幾個模型。因此 OAR 會為你在 Select Models 中啟用的每個模型各宣告一個 subagent,讓 agent 可以把任務交給例如 Grok 或 GPT 模型。名稱使用連字號(grok-4.5 會變成 grok-4-5)。subagent 會以其模型的預設變體執行:無法指定 effort。變更選擇會在下一則訊息生效。

OAR 功能在 Cursor 上的運作方式 #

功能 在 Cursor 上
中繼模式 plan 使用 SDK 自己的計畫模式執行。agent 是一般模式。ask 和 autopilot 會在模式變更時,在你的訊息前面加上一行 [Relay mode: …]。見中繼模式。
提問卡片 透過 OAR 自己的 ask_user 工具;agent 會被告知這是向你提問的唯一方式。最多 4 個問題,每題 2 到 6 個選項,可選擇是否多選。以一般回覆文字寫出的提問不會變成卡片。見 ask_user。
計畫看板 Cursor 沒有結束計畫的步驟。在 plan 模式下,當最終回覆至少有兩行項目符號或編號清單時,OAR 會顯示 Plan ready for review(計畫已就緒,待審閱),並附上 Implement in autopilot(以 autopilot 實作)、Stop here and prompt myself(到此為止,我自己下提示)和 Stop here(到此為止)。以段落文字寫成的計畫不會產生看板。
導正與佇列 不支援導正。回合進行中送出的訊息會排在它後面,傳送按鈕會顯示 Queue(加入佇列)。見回合與佇列。Stop(停止)會結束執行中的回合,即使 agent 正在等你回答提問也一樣。
背景任務 沒有任務面板。agent 啟動背景工作時,活動行會顯示 Background task <status>: …。
Subagent 每個 subagent 都會顯示開始與結束,其文字、思考和工具呼叫會出現在檢視器中。只支援一層:subagent 自己的 subagent 不會顯示。Stop 會結束整個回合,而不是單一 subagent。
附件 5 MB 以內的圖片會包含在訊息中送給 agent。更大的圖片和其他檔案則以路徑寫在訊息中,由 agent 自行讀取。
上下文顯示 🧠 按鈕會顯示總量以及占模型視窗的百分比,沒有類別明細。當一個回合呼叫了多次模型時,數字是估算值,並會註明。視窗大小來自模型的清單資訊,清單沒有提供時則取自內建表格。
壓縮 OAR 不設定也不顯示自動壓縮。/compact 和在其他供應商上一樣可用。見壓縮對話。
繼續 中繼會儲存 Cursor agent 的 ID,並在重新啟動後或 worker 的 handle 關閉後繼續使用該 agent。如果無法繼續,會建立新的 agent。見重新啟動與繼續。
Agent 工具 preview 和 relay_tool 會以工具的形式提供給 agent。只有在中繼有配對的中繼或已開啟 agent session 時,才會提供 relay_tool。見 Agent 工具和 Agent session。

工作資料夾中 .cursor 資料夾裡的 Cursor 專案規則、subagent 檔案和 MCP 伺服器都不會載入。agent 的工具和 subagent 由 OAR 自行定義。

閒置很久的 agent #

30 分鐘沒有使用的 Cursor agent 會被關閉,並在下一則訊息時重新開啟,因為它的登入在閒置幾個小時後就會失效。你不會察覺到這件事。如果登入還是失效了,OAR 會重建 agent 並重新傳送訊息,最多兩次,並加上活動行 Cursor session re-authenticated; retrying this message on a fresh agent handle. 第三次失敗時,回合會結束,並顯示無法正常運作時中的登入訊息。

用量 #

Cursor 回合的回覆下方沒有用量行。📊 Check Usage(檢查用量)中有一張 Cursor 卡片。Cursor 停用時,卡片會顯示 Cursor is not enabled in provider settings. 卡片的數字有兩個來源,卡片會註明用的是哪一個。

OAR 的花費估算。 每個回合結束後,OAR 會從 Cursor 讀取 agent 的計費花費,並把增加的部分記入目前的計費週期。每個回合會歸入執行它的模型所屬的額度池:

額度池 模型
Cursor Models(Cursor 模型) 名稱以 composer、cursor-、cheetah 或 sonic 開頭,或包含 grok。
Other Models(其他模型) 名稱包含 claude、sonnet、opus、haiku、fable、codex、gemini、deepseek、kimi、qwen、llama、mistral 或 minimax,或以 gpt、glm 開頭,或以 o 加數字開頭。
Unclassified(未分類) auto、cost、balance、intelligence、任何包含 router 的名稱,以及不符合上述兩個額度池的所有名稱。只有在有花費時才會顯示,並附註說明 Cursor 沒有告知是由哪個額度池支付。

比對時不分大小寫,且會先檢查 router 名稱。

Cursor 不會告訴 SDK 你的方案包含哪些內容。這部分由你自己輸入:

控制項 預設 作用
Cursor Models pool (USD)(Cursor Models 額度池,USD) 空白 該額度池的每月額度。欄位留空會清除它,卡片就只顯示花費。
Other Models pool (USD)(Other Models 額度池,USD) 空白 另一個額度池的同一項設定。
Billing resets on day of month(每月計費重設日) 1 計費週期重新開始的日期,1 到 31。若該月天數較少,則使用當月最後一天。
Save allowances(儲存額度) 儲存這三個欄位。
Reset tracked spend(重設已記錄的花費) 先請你確認,儲存這三個欄位,然後清除目前週期的總計。變更方案或帳戶後使用。OAR 會從 agent 目前的總計開始計算,因此過去的花費不會重複計算。

計量條是以原始模型費用對比你的額度。卡片也會列出 Cursor 實際收取的費用,方案內含的用量通常為零。這些數字都是估算值。Cursor 較晚回報的費用,會記入發現它的那個回合。Cursor 自己的 Spending 儀表板才是權威來源,卡片上也有它的連結。

來自儀表板的即時方案進度條。 有了儀表板 session token,卡片會加上即時讀取自 Cursor 儀表板的 Plan usage (total)(方案用量,總計)、Auto + Composer 和 API 進度條,以及方案名稱、方案內含與隨用隨付的花費,和計費週期的實際日期。本機的額度池計量條則退居次要。這個 token 是 session cookie,不是 API 金鑰,而 API 金鑰無法讀取這些數字。

控制項 作用
Dashboard session token (live plan bars)(儀表板 session token,即時方案進度條) 已登入的 cursor.com 分頁中 WorkosCursorSessionToken cookie 的值(在瀏覽器開發人員工具的 Application → Cookies 下)。
Save token(儲存 token) 儲存 token。欄位不接受空格,最多 8192 個字元。
Remove(移除) 先請你確認,然後刪除你儲存的 token。來自環境變數或 Cursor app 的 token 仍會繼續使用。

OAR 依以下順序尋找 token:

  1. 你儲存的 token。
  2. 中繼環境中的 CURSOR_SESSION_TOKEN,適用於沒有 Cursor app 的主機。
  3. 中繼所在機器上 Cursor app 的登入,從它的本機狀態讀取,不需要任何設定。

欄位下方的狀態行會顯示目前使用的來源。token 只留在中繼上,絕不會送到瀏覽器。如果 Cursor 不接受這個 token,卡片會改回顯示估算值,並說明哪個來源被拒絕,或是找不到 token。

agent 可以用 relay_tool 的 usage 動作讀取同樣的數字。

環境變數 #

在中繼啟動時所用的環境中設定這些變數。

變數 作用
CURSOR_SESSION_TOKEN 供即時方案進度條使用的儀表板 session token。你在面板中儲存的 token 優先於它;它則優先於 Cursor app 的登入。
CURSOR_AGENT_STORE_DIR 存放各對話 agent 狀態的資料夾,取代中繼資料目錄中的 cursor-agents。Session 按鈕會跟著它。
OAR_TURN_STALL_IDLE_MS、OAR_TURN_STALL_MODEL_MS、OAR_TURN_STALL_TOOL_MS Cursor 回合在失敗前可以沉默多久:沒有進行中的請求時為 120 秒,模型請求期間為 5 分鐘,工具呼叫期間為 30 分鐘;0 表示沒有上限。見回合與佇列。session 在 tmux 下執行時,這些變數不會傳給 agent:見哪些變數會傳到 agent。

API 金鑰無法用這種方式設定:中繼會把面板中的金鑰傳給 worker,並忽略它自己環境中的 CURSOR_API_KEY。

限制 #

除了上表中的不足之處(不支援導正、沒有任務面板、沒有壓縮設定、subagent 只有一層):

  • 提問卡片取決於 agent 是否呼叫 ask_user。
  • 花費和額度都是估算值。只有儀表板進度條的數字來自 Cursor。
  • Cursor 方案的用量上限不會讓對話暫停。回合會像其他失敗的回合一樣失敗,你需要重新傳送訊息。

無法正常運作時 #

你看到的 原因與處理方式
回覆顯示 System note: the Cursor runtime could not authenticate (…). Set or renew the Cursor API key in provider settings, then retry. Cursor 拒絕了金鑰,即使 OAR 已重建 agent 兩次也一樣。在 Settings → Providers → Cursor 中貼上有效的金鑰並儲存。
New Chat 中沒有 Cursor,或開始時失敗並顯示 Cursor API key is not configured 尚未儲存金鑰。請儲存一個。
狀態行顯示 API key saved but currently disabled. 勾選 Enable Cursor for New Chat model selection。
儲存後出現 Cursor model discovery failed: … 或 Cursor model discovery returned no models 金鑰錯誤,或 Cursor 沒有在 20 秒內回應。檢查金鑰後重新儲存,或使用 🤗 Select Models 中的 Refresh。在那裡重新整理失敗時會顯示 Cursor model discovery failed. Cached Cursor models were kept: …。
Cursor model "…" is not available 這個模型不在你的金鑰可用的清單中。重新整理清單,或選擇其他模型。
Invalid Cursor model ID Cursor model ID 含有模型 ID 不允許的字元。請從模型清單複製 ID。
System note: the Cursor runtime sent nothing for Ns while a model request was running, so the relay ended the turn. 回合沉默的時間超過容許範圍(見環境變數),OAR 取消了它。重新傳送訊息。見回合與佇列。
同上,但顯示 … while a tool was running (…) 某個指令沉默執行了 30 分鐘。調高 OAR_TURN_STALL_TOOL_MS,或設為 0 取消上限。
System note: the turn completed without a text reply. agent 完成了,但沒有寫出任何內容。問它做了什麼。
Cannot remove Cursor API key while N active Cursor conversation(s) still exist. 封存或刪除那些對話,或改為停用 Cursor。
Check Usage 中的 Cursor 卡片只顯示估算值,並說找不到 token 中繼所在的機器上沒有 Cursor app 的登入。在 Dashboard session token 下貼上 token,或設定 CURSOR_SESSION_TOKEN。
Live plan bars unavailable — Cursor did not accept … token 已過期。重新登入 Cursor app,或儲存新的 token。
That does not look like a WorkosCursorSessionToken cookie value 貼上的文字含有空格或換行,或超過 8192 個字元。只複製 cookie 的值。
Session 按鈕呈灰色 這個對話還沒有任何回合。