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-:全域安裝時是 ~/.(Windows 上是 %APPDATA%\),git 檢出則是 server/。0.9.14 新增 0.9.14 之前,全域安裝會把它們放在套件資料夾內,而更新會取代整個套件資料夾,因此對話可能失去它的 agent;資料夾仍在的對話會繼續使用它。CURSOR_ 可以變更它們的位置;見環境變數。
啟用 #
開啟 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- |
新 Cursor 對話一開始使用的模型。欄位留空等同 composer-。 |
| Save Cursor settings(儲存 Cursor 設定) | 儲存金鑰和模型。第一次儲存新金鑰時會啟用 Cursor。 | |
| Remove saved key(移除已儲存的金鑰) | 先請你確認,然後刪除金鑰、探索到的模型和你在 Select Models(選擇模型)中的選擇,並停用 Cursor。模型 ID 會保留。 |
欄位下方的狀態行會顯示目前的狀態:
| 狀態 | 意義 |
|---|---|
Not configured. New conversations use Git |
尚未儲存金鑰。 |
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- 會顯示為 xhigh。OAR 不認得的等級不會提供。
none一定會在清單中。如果模型可以關閉推理,none就會關閉推理。如果不行,輸入區會把這個項目顯示為 default(預設),模型則照平常的方式執行。- 沒有列出任何 effort 的模型只有
none,顯示為 default。 - 在有思考開關的模型上,選擇任一等級會開啟思考,選
none則會關閉思考。
使用其他模型的 subagent。 Cursor 內建的 subagent 選單只提供少數幾個模型。因此 OAR 會為你在 Select Models 中啟用的每個模型各宣告一個 subagent,讓 agent 可以把任務交給例如 Grok 或 GPT 模型。名稱使用連字號(grok- 會變成 grok-)。subagent 會以其模型的預設變體執行:無法指定 effort。變更選擇會在下一則訊息生效。
OAR 功能在 Cursor 上的運作方式 #
| 功能 | 在 Cursor 上 |
|---|---|
| 中繼模式 | plan 使用 SDK 自己的計畫模式執行。agent 是一般模式。ask 和 autopilot 會在模式變更時,在你的訊息前面加上一行 [Relay mode: …]。見中繼模式。 |
| 提問卡片 | 透過 OAR 自己的 ask_ 工具;agent 會被告知這是向你提問的唯一方式。最多 4 個問題,每題 2 到 6 個選項,可選擇是否多選。以一般回覆文字寫出的提問不會變成卡片。見 ask_。 |
| 計畫看板 | 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 不設定也不顯示自動壓縮。/ 和在其他供應商上一樣可用。見壓縮對話。 |
| 繼續 | 中繼會儲存 Cursor agent 的 ID,並在重新啟動後或 worker 的 handle 關閉後繼續使用該 agent。如果無法繼續,會建立新的 agent。見重新啟動與繼續。 |
| Agent 工具 | preview 和 relay_ 會以工具的形式提供給 agent。只有在中繼有配對的中繼或已開啟 agent session 時,才會提供 relay_。見 Agent 工具和 Agent session。 |
工作資料夾中 . 資料夾裡的 Cursor 專案規則、subagent 檔案和 MCP 伺服器都不會載入。agent 的工具和 subagent 由 OAR 自行定義。
閒置很久的 agent #
30 分鐘沒有使用的 Cursor agent 會被關閉,並在下一則訊息時重新開啟,因為它的登入在閒置幾個小時後就會失效。你不會察覺到這件事。如果登入還是失效了,OAR 會重建 agent 並重新傳送訊息,最多兩次,並加上活動行 Cursor session re- 第三次失敗時,回合會結束,並顯示無法正常運作時中的登入訊息。
用量 #
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 分頁中 Workos cookie 的值(在瀏覽器開發人員工具的 Application → Cookies 下)。 |
| Save token(儲存 token) | 儲存 token。欄位不接受空格,最多 8192 個字元。 |
| Remove(移除) | 先請你確認,然後刪除你儲存的 token。來自環境變數或 Cursor app 的 token 仍會繼續使用。 |
OAR 依以下順序尋找 token:
- 你儲存的 token。
- 中繼環境中的
CURSOR_,適用於沒有 Cursor app 的主機。SESSION_ TOKEN - 中繼所在機器上 Cursor app 的登入,從它的本機狀態讀取,不需要任何設定。
欄位下方的狀態行會顯示目前使用的來源。token 只留在中繼上,絕不會送到瀏覽器。如果 Cursor 不接受這個 token,卡片會改回顯示估算值,並說明哪個來源被拒絕,或是找不到 token。
agent 可以用 relay_ 的 usage 動作讀取同樣的數字。
環境變數 #
在中繼啟動時所用的環境中設定這些變數。
| 變數 | 作用 |
|---|---|
CURSOR_ |
供即時方案進度條使用的儀表板 session token。你在面板中儲存的 token 優先於它;它則優先於 Cursor app 的登入。 |
CURSOR_ |
存放各對話 agent 狀態的資料夾,取代中繼資料目錄中的 cursor-。Session 按鈕會跟著它。 |
OAR_、OAR_、OAR_ |
Cursor 回合在失敗前可以沉默多久:沒有進行中的請求時為 120 秒,模型請求期間為 5 分鐘,工具呼叫期間為 30 分鐘;0 表示沒有上限。見回合與佇列。session 在 tmux 下執行時,這些變數不會傳給 agent:見哪些變數會傳到 agent。 |
API 金鑰無法用這種方式設定:中繼會把面板中的金鑰傳給 worker,並忽略它自己環境中的 CURSOR_。
限制 #
除了上表中的不足之處(不支援導正、沒有任務面板、沒有壓縮設定、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_,或設為 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_。 |
Live plan bars unavailable — Cursor did not accept … |
token 已過期。重新登入 Cursor app,或儲存新的 token。 |
That does not look like a Workos |
貼上的文字含有空格或換行,或超過 8192 個字元。只複製 cookie 的值。 |
| Session 按鈕呈灰色 | 這個對話還沒有任何回合。 |