Skip to Content
概念限制與配額

限制與配額

以下是前端 API 實際會碰到的限制(取自 src/components/sandbox/constants.py、storage.py 與 schema)。Context 上傳的 staging 配額對 company manager 是租戶面。

分頁

項目值
page_sizege=1,le=100(MAX_PAGE_SIZE),預設 20 或 50(依端點)
page_token不透明字串,max_length=512

輸入與腳本大小

項目值
執行輸入 JSON≤ 1 MiB、深度 ≤ 64、節點 ≤ 100,000、無 NUL、無重複 key
startup / work 腳本各 ≤ 1 MiB(MAX_SCRIPT_UTF8_BYTES)
環境變數≤ 100 個名稱、每項 ≤ 64 KiB
提交 body(Content-Length)過大先回 413 request_too_large

逾時

項目值
預設 work 逾時1800 秒(DEFAULT_WORK_TIMEOUT_SECONDS)
最大 work 逾時≈ 7 天(168 小時 − finalization envelope)
timeout_seconds 欄位ge=1,le=604680(MAX_CUSTOMER_WORK_TIMEOUT_SECONDS)。公司 timeout_ceiling_seconds(預設 86400)只在發布任務版本時檢查——任務版本發布與 quick-run(會發布隱藏的 v1)超過即 422 timeout_exceeds_ceiling;POST .../runs 與 Agent submit 上的 timeout_seconds 覆寫不會再對公司天花板檢查。
提案 TTL1800s(PROPOSAL_TTL_SECONDS)
Turn-receipt TTL600s(TURN_RECEIPT_TTL_SECONDS)
Agent wait_seconds0..60(MAX_STATUS_WAIT_SECONDS)
下載 capability5 分鐘(_DOWNLOAD_CAPABILITY_TTL)
Context 上傳 capability15 分鐘(DEFAULT_CAPABILITY_TTL_SECONDS)
Run 的 runner 憑證(manifest、進度與完成回報、結果上傳)認領起算 timeout_seconds + 120 秒(FINALIZATION_ENVELOPE_SECONDS),所以最多 604800 秒。v5.21.0 之前這兩把憑證用的是平台預設的 600 秒。

Context 上傳(company manager)

項目值
封存大小≤ 1 GiB(MAX_DECLARED_OBJECT_BYTES)
Live staging slots20(MAX_STAGING_SLOTS)
宣告 staging 位元組20 GiB(MAX_STAGING_DECLARED_BYTES)
每公司每分鐘 init5(MAX_UPLOAD_INITS_PER_MINUTE)——計 context 上傳與腳本/任務包上傳;run input 與 runner 自己的結果物件不計(後端 ≥ #1140)
模式只有 single_part
格式zip/tar/tar.gz
Dockerfile FROM任何公開映像,含 scratch——2026-08-25 起沒有固定允許清單

429 staging_slot_exhausted/upload_rate_limited。413 context_too_large。未完成的上傳會佔住一個 live slot(與其宣告位元組),直到被 abort 或該 session 過期(UPLOAD_SESSION_TTL_SECONDS = 24 小時);已 complete 的 session 會立刻釋放 slot。20 個佔滿時,連 scan report 的 staging lease 也開不出來。

產出物

項目值
單一 run 產出物檔案數≤ 1000(MAX_ARTIFACT_FILES)
Agent 產出物頁≤ 20 列(ARTIFACT_LIST_PAGE_SIZE)
Agent output 預覽≤ 64 KiB(MAX_OUTPUT_PREVIEW_UTF8_BYTES)
Agent log 預覽≤ 16 KiB head+tail(MAX_LOG_PREVIEW_UTF8_BYTES)
Idempotency-Key1..128 字元,禁 NUL
Ordinary env 序列化≤ 64 KiB(MAX_ORDINARY_ENV_SERIALIZED_UTF8_BYTES)
Ordinary + secret env≤ 256 KiB(MAX_ORDINARY_PLUS_SECRET_ENV_UTF8_BYTES)

每公司政策上限(SandboxCompanyPolicy)

由後端政策決定、可經 PUT /settings(部分)調整或屬營運範圍:

  • active_environment_limit:可用環境數上限。預設 30(DEFAULT_ACTIVE_ENVIRONMENT_LIMIT)。
  • capacity_retained_version_limit:營運端設定的輸入值,預設 100。實際生效上限是 min(設定值, floor(0.10 × 各 active region 中最小的已確認 Cloud Run Job 配額));任一 active region 配額未知、或完全沒有 active region 時即為 0。計數是整間公司的 capacity-retained 版本數;超過就 409 version_allocation_exhausted,所以實際可用的版本數常遠低於 100。
  • 預設公司 run 併發 50、queued-run 上限 100、active-build 上限 2、queued-build 上限 20。queued-run 上限把關 REST 提交、重試、Agent 提交與自訂表格 trigger;Quick Run 不受它檢查。
  • 地端部署另有兩個 operator 設定的等待 run 上限(v5.10.11):每公司 SANDBOX_ONPREM_MAX_QUEUED_PER_COMPANY(預設 20;實際的公司上限取它與政策上限中較小者,Quick Run 也適用)與整個 fleet 的 SANDBOX_ONPREM_MAX_QUEUED(預設 200 → 429 queue_full,帶 Retry-After: 60)。託管雲端兩者皆無。
  • run_content_retention_days:1..365(可設定;預設 30)。
  • unreferenced_image_retention_days:1..90(可設定;預設 30)。
  • 執行期 profile(SandboxResourceProfile):
ProfilevCPU顧客記憶體Workspace租戶可選
standard11280 MiB512 MiB是(預設)
performance22560 MiB1024 MiB是
large45120 MiB2048 MiB是
xlarge810240 MiB4096 MiB否 — 只有營運端可開

確認集合:GET /public/info/sandbox/profiles。

提交/佇列建置的定價拒絕:403 budget_reservation_exceeded(envelope 塞不進配額;不建列)或 422 no_active_region/missing_price/invalid_envelope/missing_window。queued-run 上限 → 429 sandbox_queued_run_limit(body 含 limit);地端 fleet 佇列已滿 → 429 queue_full(limit、retry_after_seconds、Retry-After)。因為沒有已確認的區域 Job 配額而版本上限為 0 → 409 version_allocation_exhausted。平台 stage-image 輪替期間(全平台、非單一公司的限制),POST .../builds 與 POST .../retry-build 會回 503 build_admission_fenced,body 帶 retry_after_seconds(同值也在 Retry-After header)——此時什麼都沒排進佇列,依 Retry-After 重試即可(通常數分鐘);Redis 不可用時 fence 會 fail-open 放行。

第一次 GET /settings 可能插入一列預設 SandboxCompanyPolicy(get_or_create_company_policy 然後 commit)。把它當成一次可能寫入預設值的讀取。

超過相關上限時,對應端點回錯誤(多為 409/422,未授權為 404)。錯誤碼見 錯誤碼對照表。

Last updated on