《Cursor文檔》-智能體元數據

預覽

智能體元數據目前處於預覽階段,可能會發生變更,包括破壞性
變更。

雲端代理可在 VM 內讀取當前運行的鍵值元數據,包括智能體 ID、所有者、此輪的提交者、所用模型以及已檢出的倉庫。鉤子和安裝腳本也可以讀取這些值。

智能體通過終端工具調用此 API。您無需自行發起這些請求。

要讓智能體讀取元數據,請在提示詞中加入以下內容:

To read agent metadata, follow the instructions at
https://cursor.com/docs/cloud-agent/metadata

此 API 僅在智能體 VM 本地可用。它不是您通過 SDKCloud Agents API 創建智能體時設置的、歸調用方所有的 metadata 標籤。這些 API 使用 Cursor API 密鑰從 VM 外部管理 agents。

當 VM 外部需要驗證智能體身份時,應讓智能體改爲簽發 OIDC 身份令牌。這些 JWT 已簽名且綁定受衆。元數據不是憑證,其中可能包含當前輪次的提交者和所用模型,而令牌不應攜帶這些信息。

由 Cursor 管理的雲端代理虛擬機會通過與 OIDC 身份令牌相同的套接字提供元數據。自託管 workers 尚不提供此 API。

讀取值

智能體通過 CURSOR_AGENT_SOCKET 指定的 Unix 套接字讀取鍵。在由 Cursor 管理的 VM 上,默認值爲 /run/cursor/api.sock

curl --unix-socket "${CURSOR_AGENT_SOCKET:-/run/cursor/api.sock}" \
  http://cursor-agent/v1/meta-data/agent/id

請求通過 Unix 套接字使用 HTTP。URL 中的主機名會被忽略。

列出前綴,查看有哪些鍵:

curl --unix-socket "${CURSOR_AGENT_SOCKET:-/run/cursor/api.sock}" \
  http://cursor-agent/v1/meta-data/
agent/
owner/
turn/
workspace/

然後請求一個鍵:

curl --unix-socket "${CURSOR_AGENT_SOCKET:-/run/cursor/api.sock}" \
  http://cursor-agent/v1/meta-data/owner/user-id

請求

通過 Unix 套接字發送 GET /v1/meta-data[/<path>]。無需請求體或額外請求頭。允許使用尾部斜槓,因此列出的 agent/ 可請求爲 /v1/meta-data/agent/

缺失的鍵返回 404

響應

成功讀取的內容類型爲 text/plain; charset=utf-8。讀取鍵時,響應僅包含其文本形式的值。

類型 響應體
以 string 形式返回值。具有多個值的鍵每行顯示一個條目。
前綴 每行一個子項,按順序排列。嵌套前綴以 / 結尾。列表末尾帶有換行符。

錯誤響應爲 JSON。請參閱限流和錯誤

鍵何時出現

安裝腳本可讀取同一個套接字。鍵僅在有值時纔會出現:編碼輪次開始前不會有 turn/;運行記錄分支前不會有 workspace/branch-name。所有者、團隊和代碼倉庫鍵從智能體創建起便可用。

如果啓動後立即找不到套接字,請重試連接。

列表中會省略缺失的鍵;如果直接請求,則返回 404。列表僅包含當前實際存在的鍵。

agent/

存在條件 描述
agent/id 始終 雲端代理 ID (bcId)。
agent/name 已知時 儀表盤中顯示的名稱。
agent/source 已知時 智能體的啓動方式,例如 WEBSITEAPISLACKAUTOMATIONS
agent/runtime 始終 在由 Cursor 管理的雲端代理虛擬機上,該值爲 managed

owner/

存在條件 描述
owner/user-id 已知時 智能體所有者的 Cursor 用戶 ID,以十進制 string 表示。對於允許列表,優先使用此項而非電子郵件。
owner/user-email 已知時 所有者的小寫電子郵件。電子郵件可能會變更。
owner/service-account-id 已知時 當服務賬戶擁有該智能體時,其服務賬戶 ID。
owner/team-id 已知時 所屬團隊的 ID,以十進制 string 表示。

turn/

僅當編碼輪次處於活動狀態時,turn/ 才存在。輪次之間,這些鍵會消失。如果缺少 turn/,則沒有活動輪次。

turn/ 下的值始終反映當前輪次。請勿跨輪次緩存這些值。

存在時機 描述
turn/id 輪次期間 此編碼輪次的 ID。不同於 agent/id,後者是雲端代理 ID (bcId)。
turn/user-id 已知時 提交此輪次的人員的 Cursor 用戶 ID,以十進制 string 表示。在團隊後續操作中,這可能與 owner/user-id 不同。
turn/user-email 已知時 該人員的電子郵件地址 (小寫) 。
turn/started-at 輪次期間 輪次開始時間,以 Unix 秒錶示。
turn/model 已知時 爲此輪次提供服務的模型。如果您選擇了 Auto,這裏顯示的是提供服務的模型,而非 Auto

OIDC 身份令牌不包含輪次提交者或提供服務的模型,因爲令牌的有效期可能長於輪次。請改爲從元數據中讀取這些鍵。

workspace/

存在條件 描述
workspace/repo-url 已知時 主代碼倉庫,採用 host/path 格式,例如 github.com/acme/widgets。主機名使用小寫,不含協議、憑據、端口、查詢參數或 .git 後綴。對於多倉庫智能體,這僅表示主代碼倉庫。
workspace/repo-urls 已知倉庫集合時 工作區中的所有代碼倉庫,格式與 repo-url 相同。主代碼倉庫排在首位,其餘按排序順序排列,每行一個 URL。缺失表示倉庫集合未知,並不表示只有一個倉庫。
workspace/branch-name 已知時 主代碼倉庫的分支。
workspace/environment-id 已知時 此次運行所使用的 Cursor 環境 ID。
workspace/automation-id 用於自動化 agent/source 爲自動化時的自動化 ID。

workspace/repo-url 表示主代碼倉庫。完整集合請讀取 workspace/repo-urls

誰可以讀取元數據

任何能訪問套接字的進程都可以讀取所有鍵:智能體、它運行的代碼和鉤子。請將這些值視爲對整個運行均可見。

元數據未經簽名。要向 AWS、GCP、Vault 或你自己的服務證明身份,請讓智能體簽發 OIDC 身份令牌 並驗證 JWT。請勿將元數據值作爲憑據轉發。

限流和錯誤

每個智能體 VM 每分鐘最多可發起 120 個元數據請求,突發請求最多 20 個。套接字最多可同時接受 8 個連接。該上限與 OIDC 令牌簽發共用。

429503500502504 採用退避策略重試。將 403 視爲致命錯誤:該智能體無權讀取元數據。

404405 響應包含一個說明 API 調用方式的 usage string。限流和飽和錯誤僅返回錯誤代碼:

{ "error": "not_found", "usage": "GET /v1/meta-data[/<path>] ..." }
{ "error": "rate_limited" }
HTTP error 適用情形
404 not_found 鍵未知或缺失
405 method_not_allowed GET 請求
429 rate_limited 超出每個智能體的請求預算;請遵循 Retry-After
503 saturated 連接過多;請遵循 Retry-After
500 host_error 內部錯誤;請重試
502 / 504 backend_unreachable Cursor 無法返回元數據;請重試
Other backend_error Cursor 拒絕了請求。403 不可恢復;503 可重試

示例

智能體或鉤子可以比較本輪提交者與所有者。隊友的後續操作可以採用更嚴格的處理路徑:

SOCKET="${CURSOR_AGENT_SOCKET:-/run/cursor/api.sock}"

owner="$(curl -fsS --unix-socket "$SOCKET" \
  http://cursor-agent/v1/meta-data/owner/user-id)"
turn_user="$(curl -fsS --unix-socket "$SOCKET" \
  http://cursor-agent/v1/meta-data/turn/user-id || true)"

if [ -n "$turn_user" ] && [ "$turn_user" != "$owner" ]; then
  echo "follow-up from user $turn_user; owner is $owner"
fi

智能體或鉤子可以使用智能體 ID 和處理本輪的模型爲日誌添加標籤:

SOCKET="${CURSOR_AGENT_SOCKET:-/run/cursor/api.sock}"

agent_id="$(curl -fsS --unix-socket "$SOCKET" \
  http://cursor-agent/v1/meta-data/agent/id)"
model="$(curl -fsS --unix-socket "$SOCKET" \
  http://cursor-agent/v1/meta-data/turn/model || true)"

echo "cloud_agent_id=$agent_id model=${model:-unknown}"

列出工作區中的每個代碼倉庫。repo-urls 中每行一個 URL:

curl -fsS --unix-socket "${CURSOR_AGENT_SOCKET:-/run/cursor/api.sock}" \
  http://cursor-agent/v1/meta-data/workspace/repo-urls
github.com/acme/widgets
github.com/acme/docs

相關頁面

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜