Agents API · Scheduled Automations

OpenAI Agents API Scheduled Automations 怎么用?

用 cron 或未来时间启动 Agent 工作,正确选择 Session 目标,并把“已送达”和“已完成”分开监控。

先给结论

应用直接调用 client.beta.agents.automations.create 即可创建计划,不必给 Agent 开启 automations 工具。重复任务用 periodic + 五段 cron + IANA 时区;单次任务用 once + 未来的 run_at。独立工作选 new_session,需要历史上下文选 existing_session。创建计划不会立即运行;一次 invocation 显示 completed 也只表示 Session 已接受任务,应用仍要跟踪 Session 事件和 Turn outcome。

官方资料(2026-11-02 核对):Scheduled automations · Sessions · Errors 与 Recovery · Observability 与 Usage

先选 schedule 与 target

问题选择必填字段注意
重复执行periodicexpression、timezone五段 cron;不要传 run_at
未来执行一次oncerun_at未来 Unix 时间戳(秒)
每次独立工作new_sessionAgent、environment、target.input每次建立新 Session
沿用历史上下文existing_sessionsession_id、target.instructions目标 Session 忙时投递会等待

两种 schedule 都可搭配两种 target。cron 是所选时区的墙上时间,不是从创建时刻开始的固定间隔;需要严格 48 小时间隔时,更适合按完成结果创建下一次 one-time 计划。

最小 JavaScript 周期任务

import OpenAI from "openai";

const client = new OpenAI();
const automation = await client.beta.agents.automations.create({
  type: "periodic",
  name: "工作日状态复查",
  expression: "0 9 * * MON-FRI",
  timezone: "Asia/Shanghai",
  target: {
    type: "existing_session",
    session_id: "sess_123",
    instructions: "复查状态;只报告新变化和证据。"
  }
});
console.log(automation.id);

SDK 会处理 Beta 请求头;cURL 需显式发送 OpenAI-Beta: agents=v1。保存 automation ID,API Key 只放服务端,并限制项目与 Scope。

cron、时区和延迟怎么理解

expression含义
0 10 * * *每天当地时间 10:00
0 */2 * * *每天 00:00、02:00、04:00……
0 9 1 * *每月 1 日 09:00
0 9 * * MON-FRI周一至周五 09:00

timezone 使用命名 IANA 时区,例如 UTC、Asia/Shanghai 或 America/New_York。周期任务可能被加入小幅随机延迟以分散负载,既有 Session 忙碌时还会等待,因此不适合作为精确到秒的硬实时调度器。

new_session 的最小结构

const automation = await client.beta.agents.automations.create({
  type: "once",
  name: "明日独立报告",
  run_at: Math.floor(Date.now() / 1000) + 24 * 60 * 60,
  target: {
    type: "new_session",
    agent_id: "agt_123",
    environment: { type: "openai_hosted" },
    input: [{
      role: "user",
      content: [{ type: "input_text", text: "生成独立状态报告。" }]
    }]
  }
});

环境中的文件、联网、密钥与工具权限仍应最小化;定时执行不会替你完成业务授权、用户确认或高影响操作审批。

Agent 自己创建计划时的边界

只有希望 Agent 为当前 Session 安排后续工作时,才把 { type: "automations" } 加到工具。它默认不存在,只能管理当前 Session 中由该 Agent 创建的计划;目标固定为当前 Session,不能启动新 Session,也不能管理其他 Session 的计划。移除工具不会删除已保存的计划。

重复工作可能让主 Session 累积大量工具输出。可让主 Agent 只保留目标、计划和简短结论,把每轮细节交给子 Agent;这不是启用 Scheduled Automations 的必需条件。

手动触发与完成状态

  1. 调用 POST /v1/agents/automations/{id}/invocations 立即测试;请求体为空。
  2. 手动调用不修改原计划、不消耗 one-time 的定时运行,暂停状态也可用。
  3. invocation 先是 queued,送达后变成 completed;session_id 可能稍后才出现。
  4. completed 只代表 Session 接受任务。用 session_id 跟踪事件,检查 Turn 的 completed、failed、cancelled 与 required actions。
  5. 应用负责展示输出、发送通知并记录业务结果;Automation 只负责安排工作。

更新、暂停、恢复和删除

操作效果
更新省略字段保持不变;提供 target 时整体替换,需保留类型并补齐必填字段
暂停阻止后续定时投递;手动 invocation 仍可用
恢复重新激活;one-time 若已错过时间,先更新未来 run_at
删除阻止未来定时与手动调用,但不删除 Session 或取消活动 Turn

更新只影响未来 invocation;已经 queued 的 invocation 仍使用创建时保存的 target 与 input 快照。

生产可靠性与安全清单

  1. 幂等:保存 automation ID、invocation ID、session_id 和业务幂等键。
  2. 状态:区分 queued、delivered、Turn terminal 与业务成功。
  3. 审批:缺少工具结果、授权或 required action 时由应用处理。
  4. 权限:服务端保存 Key,限制工具、网络、文件和第三方数据范围。
  5. 监控:记录计划/实际投递时间、等待、Turn 结果、Token、工具错误与通知。
  6. 停用:必要时取消活动 Turn,并处理已产生的外部副作用。
  7. 评测:测试 Session 忙碌、重复投递、工具失败、时区/DST 和暂停恢复。

常见问题

Scheduled Automations 的 periodic 和 once 有什么区别?

periodic 使用五段 cron expression 加命名时区,适合按日、周或月重复;once 使用未来的 Unix 秒级时间戳 run_at,只执行一次。周期任务不要同时传 run_at。

new_session 和 existing_session 怎么选?

独立工作用 new_session,并提供 Agent、environment 与 target.input;需要之前消息、发现或保存工作时用 existing_session,并提供 session_id 与 target.instructions。两种 target 都能搭配 periodic 或 once。

Agents API 定时任务会在 cron 时间精确启动吗?

不保证精确到秒。cron 按所选 IANA 时区的墙上时间解释,周期运行会有小幅随机延迟;如果 existing_session 正忙,投递还会继续等待。

invocation 显示 completed 就代表 Agent 做完了吗?

不代表。completed 只说明新 Session 接受了初始输入,或既有 Session 接受了通知和启动请求。应用还要用 invocation 的 session_id 跟踪 Session 事件与 Turn outcome。

应用创建定时任务必须给 Agent 开启 automations 工具吗?

不需要。应用可直接调用 Automations API;automations 工具默认不存在,只在需要 Agent 为当前 Session 自主管理自己的计划时启用,而且它不能创建新 Session 或管理其他 Session 的计划。

怎样在不等待 cron 的情况下测试任务?

调用 POST /v1/agents/automations/{id}/invocations 手动触发。它不改变保存的计划、不消耗一次性计划,也可在暂停状态使用;测试后仍要跟踪 Session 事件和实际输出。

暂停或删除计划会停止已经运行的 Agent 吗?

不会。暂停会阻止后续定时投递,删除会阻止未来定时与手动调用,但已送达或正在送达的工作仍可能继续;要停止当前工作需另外取消活动 Turn。

本文核对日期为 2026-11-02。Agents API Scheduled Automations 当前是 Beta;SDK、Header、cron 语义、Session、工具、限制与计费都可能变化,上线前请重新读取 Scheduled automations、Sessions、Errors 与 Observability 官方文档。

先手动触发一次只读计划

确认 invocation、Session 事件、Turn outcome、通知和幂等记录都能对账,再开放周期执行或写操作。