所有托管智能体 API 请求都需要
managed-agents-2026-04-01 Beta 请求头。SDK 会自动设置该 Beta 请求头。创建计划部署
创建部署时,除了schedule 之外,您还需要传递执行所需的会话配置。
- 部署需要智能体配置和环境配置,并可选择性地接受文件、GitHub、记忆存储和密钥库。
- 部署还需要至少一个初始事件(
user.message或user.define_outcome),用于启动每个会话的工作。 - 在
schedule中,您需要定义一个 cronexpression和一个timezone。支持的最大粒度为分钟级别。
schedule.upcoming_runs_at,列出接下来即将触发的时间,以便您确认计划设置正确。
Cron 和时区语义
- 表达式: 标准 POSIX cron(
minute hour day-of-month month day-of-week)。您可以在 OMA 控制台中生成和验证这些 cron 表达式。 - 时区: IANA 时区标识符(例如
"America/Los_Angeles")。 - 夏令时(DST): Cron 计划使用字面挂钟时间匹配,因此在
America/New_York时区中的"0 20 * * *"会在当地时间晚上 8触发,无论当前是 EST 还是 EDT。
在春季调快时钟当天不存在的挂钟时间(例如凌晨 2 点)不会被触发。在秋季调慢时钟当天出现两次的挂钟时间会触发两次。如果无法接受遗漏或重复执行,请将计划安排在当地时间凌晨 1–3 点窗口之外,或使用 UTC。
为每次运行设置预算
在创建或更新部署时传递可选的budget 对象。它的结构与会话预算相同。部署会将该上限复制到它启动的每个会话上,因此该预算分别限制每次运行,而不是作为跨多次运行的累计上限:上限为 "2000" 的部署在每次运行中最多可花费约 20 美元。
由部署启动的会话的行为与任何其他设置了预算的会话完全相同:当其自身的标价成本达到上限时,会以 budget_reached 状态暂停。更改部署的预算仅适用于此后启动的运行;已在运行的会话会保留其启动时的上限,您可以通过会话本身进行更改。与会话预算不同,部署的预算可以通过 "budget": null 移除,并在之后重新设置。
以下示例为现有部署设置预算:
cURL
部署运行
部署可能因多种原因而无法触发:例如,environment 资源已被归档,或会话创建受到速率限制。每次执行部署的尝试都会生成一条部署运行(deployment run)记录,使您能够独立于会话生命周期来跟踪成功和失败情况。
成功的部署会生成活动会话,成功的部署运行包含关联的 session_id。要跟踪会话的生命周期,请通过事件流或 webhook 跟踪会话事件。部署生命周期变更以及每次定时运行的结果也会作为 webhook 事件传递,列在支持的事件类型的”部署 events”和”部署 run events”选项卡中。
按如下方式列出某个部署的所有部署运行:
error,其中的 type 描述了会话创建被拒绝的原因(例如 environment_archived_error、agent_archived_error 或 session_rate_limited_error)。有关所有筛选参数和响应架构,请参阅列出部署运行参考文档。
GET /v1/deployment_runs/{deployment_run_id}。deployment_run webhook 事件会将运行 ID 作为其 data.id 携带。
管理部署生命周期
每次生命周期变更都会发出一个 webhook 事件,因此您无需轮询即可对已暂停、已恢复或已归档的部署作出响应;请参阅”部署 events”选项卡。 暂停(Pause)会在此后抑制定时触发;来自先前部署运行的正在运行的会话会继续执行。暂停期间仍允许通过run 端点进行手动运行。暂停会将 paused_reason 设置为 {"type": "manual"};取消暂停会将其清除。
失败行为
会话创建的速率限制响应会立即记录为session_rate_limited_error 运行,不会重试;计划会在下一个计划的触发时间点再次尝试。会话内底层 API 调用的速率限制由会话本身处理。
如果部署的智能体已被归档,则该部署会在同一操作中自动归档。如果智能体已被删除,则下一次定时触发会检测到缺失的智能体并自动归档该部署。在这两种情况下都不会记录部署运行。如果智能体引用的子智能体已被归档,则下一次触发会记录一次失败的运行,其 error.type: "agent_archived_error",并且部署会自动暂停,以便您更新智能体并恢复。其他不可恢复的会话创建错误(例如已归档的环境或密钥库)的行为相同:触发会记录一次失败的运行,并且部署会自动暂停。部署的 paused_reason.error.type 与失败运行的 error.type 保持一致。
触发手动运行
要在计划之外运行部署,请调用run 端点。这会立即创建一个会话,并写入一条 trigger_context.type: "manual" 的部署运行记录。这使您可以在正式启用计划之前测试部署。