排程部署
使用 Claude API 建立與管理部署:依週期性 cron 排程執行代理程式,並檢視其執行歷史記錄。
**「Scheduled deployment」(排程部署)**讓代理程式能夠自主啟動工作階段,以可預測的節奏完成任務。您可以透過 Deployments API(Claude API 的一部分)來建立與管理部署。
如需了解發布背景以及各團隊在排程上執行哪些工作的範例,請參閱部落格文章 Claude Managed Agents 中的排程部署與保管庫。
建立排程部署
建立部署時,除了 schedule 之外,您還需傳入執行所需的工作階段設定。
- 部署需要代理程式設定與環境設定,並可選擇性地接受檔案、GitHub、記憶體儲存區以及保管庫。以自行託管環境為目標的部署可以附加記憶體儲存區;
file與github_repository資源則需要雲端環境。Claude Console 的部署表單目前不為自行託管環境提供記憶體儲存區選項;請改為透過 API 或 SDK 附加。 - 部署也需要至少一個初始事件(
user.message或user.define_outcome),用以啟動每個工作階段的工作。 - 在
schedule中,您需定義 cronexpression與timezone。支援的最大精細度為分鐘層級。
DEPLOYMENT_ID=$(ant beta:deployments create <<YAML | jq -er '.id'
name: Weekly compliance scan
agent: $AGENT_ID
environment_id: $ENVIRONMENT_ID
initial_events:
- type: user.message
content:
- type: text
text: Run the weekly compliance scan.
schedule:
type: cron
expression: "0 20 * * 5"
timezone: America/New_York
YAML
)回應中包含一個部署物件,其 schedule.upcoming_runs_at 已填入接下來的觸發時間,以便您確認排程設定正確。
{
"id": "depl_01xyz",
"status": "active",
"paused_reason": null,
"schedule": {
"type": "cron",
"expression": "0 20 * * 5",
"timezone": "America/New_York",
"last_run_at": null,
"upcoming_runs_at": [
"2026-05-09T00:00:00Z",
"2026-05-16T00:00:00Z",
"2026-05-23T00:00:00Z"
]
}
}即將執行的時間戳記反映的是所設定的確切排程。然而,為了分散負載,實際執行時會套用抖動(jitter),幅度最多為兩次執行間隔的 15%,最少 5 秒、最多 9 分鐘。
每個組織最多支援 1,000 個排程部署。若您需要更多,請聯絡 Anthropic 支援團隊。
完整參數與回應結構描述請參閱建立部署參考文件。
Cron 與時區語意
- **Expression:**標準 POSIX cron(
minute hour day-of-month month day-of-week)。您可以在 Claude Console 中產生並驗證這些 cron 運算式。 - **Timezone:**IANA 時區識別碼(例如
"America/Los_Angeles")。 - **DST:**Cron 排程採用字面上的掛鐘時間比對,因此
America/New_York中的"0 20 * * *"會在當地時間晚上 8:00 觸發,無論當時採用的是 EST 或 EDT。
為每次執行設定預算
在建立或更新部署時傳入選用的 budget 物件。其結構與工作階段預算相同。部署會將此上限複製到它所啟動的每個工作階段,因此預算是分別限制每次執行,而非作為跨執行的累計上限:上限為 "2000" 的部署在每次執行中最多可花費約 $20。
由部署啟動的工作階段,其行為與任何其他設有預算的工作階段完全相同:當其自身的定價成本達到上限時,會以 budget_reached 暫停。變更部署的預算會套用至之後啟動的執行;已在執行中的工作階段會保留其啟動時的上限,您可以透過該工作階段本身進行變更。與工作階段預算不同的是,部署的預算可以透過 "budget": null 移除,並於之後再次設定。
以下範例為現有部署設定預算:
curl --fail-with-body -sS "https://api.anthropic.com/v1/deployments/$DEPLOYMENT_ID?beta=true" \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "anthropic-beta: managed-agents-2026-04-01" \
-H "content-type: application/json" \
-d @- <<'EOF'
{
"budget": {
"type": "limit",
"max_list_cost": {"amount": "2000", "currency": "USD"}
}
}
EOF部署執行
部署可能因各種原因而無法觸發:例如 environment 資源已被封存,或工作階段建立受到速率限制。每次嘗試執行部署都會產生一筆**「deployment run」(部署執行)**記錄,讓您能夠獨立於工作階段生命週期之外追蹤成功與失敗。
成功的部署會產生作用中的工作階段,而成功的部署執行會包含相關聯的 session_id。若要追蹤工作階段的生命週期,請透過事件串流或 webhook 追蹤工作階段事件。部署生命週期的變更以及每次排程執行的結果也會以 webhook 事件的形式傳送,列於支援的事件類型中的「Deployment events」與「Deployment run events」分頁。
依下列方式列出某個部署的所有部署執行:
ant beta:deployment-runs list --deployment-id "$DEPLOYMENT_ID"您還可以進一步篩選出發生錯誤的部署執行:
ant beta:deployment-runs list --deployment-id "$DEPLOYMENT_ID" --has-error失敗的執行會包含一個 error,其 type 說明工作階段建立被拒絕的原因(例如 environment_archived_error、agent_archived_error 或 session_rate_limited_error)。所有篩選參數與回應結構描述請參閱列出部署執行參考文件。
{
"type": "deployment_run",
"id": "drun_01abc124",
"deployment_id": "depl_01xyz",
"trigger_context": { "type": "schedule", "scheduled_at": "2026-05-09T00:00:00Z" },
"session_id": null,
"error": {
"type": "environment_archived_error",
"message": "environment `env_01abc` is archived"
},
"agent": { "type": "agent", "id": "agent_01ghi789", "version": 3 },
"created_at": "2026-05-09T00:00:01Z"
}若要依 ID 擷取單一執行,請呼叫 GET /v1/deployment_runs/{deployment_run_id}。deployment_run webhook 事件會以其 data.id 攜帶執行 ID。
管理部署生命週期
每次生命週期變更都會發出一個 webhook 事件,因此您無需輪詢即可對已暫停、已取消暫停或已封存的部署做出反應;請參閱「Deployment events」分頁。
**暫停(Pause)**會自此之後抑制排程觸發;先前部署執行所產生、仍在執行中的工作階段會繼續執行。暫停期間仍允許透過 run 端點進行手動執行。暫停會將 paused_reason 設為 {"type": "manual"};取消暫停則會將其清除。
ant beta:deployments pause --deployment-id "$DEPLOYMENT_ID"**取消暫停(Unpause)**會從下一個排程時間點恢復排程。錯過的觸發不會補執行。
ant beta:deployments unpause --deployment-id "$DEPLOYMENT_ID"封存(Archive)與暫停不同,是終結性的操作:排程會終止,且部署無法再修改。
ant beta:deployments archive --deployment-id "$DEPLOYMENT_ID"失敗行為
工作階段建立的速率限制回應會立即記錄為一筆 session_rate_limited_error 執行,不會重試;排程會在下一個排程時間點再次嘗試。工作階段內部底層 API 呼叫的速率限制則由工作階段本身處理。
若部署的代理程式已被封存,該部署會在同一操作中自動封存。若代理程式已被刪除,下一次排程觸發會偵測到代理程式遺失,並自動封存該部署。這兩種情況都不會記錄部署執行。若代理程式所參照的子代理程式已被封存,下一次觸發會記錄一筆 error.type: "agent_archived_error" 的失敗執行,且部署會自動暫停,以便您更新代理程式後再恢復。其他無法復原的工作階段建立錯誤(例如環境或保管庫已封存)行為相同:觸發會記錄一筆失敗執行,且部署會自動暫停。部署的 paused_reason.error.type 會與失敗執行的 error.type 一致。
觸發手動執行
若要在排程之外執行部署,請呼叫 run 端點。這會立即建立一個工作階段,並寫入一筆 trigger_context.type: "manual" 的部署執行。這讓您能在正式採用排程之前先測試部署。
ant beta:deployments run --deployment-id "$DEPLOYMENT_ID"Was this page helpful?