Skip to main content
Schedules

Schedule 数据结构

Forward Schedule API 复用的 Schedule 和 Schedule Run 响应结构。

Schedule 对象

创建、查询、列表、更新、归档、暂停和恢复接口返回该结构。
字段类型说明
idstringSchedule ID,前缀为 sched_。
sourcestring权威创建方式,当前为 api 或 tool。详见创建来源。
source_session_idstring | null创建来源 Session。api 来源为 null,tool 来源为非空 sess_*。
identity_idstringSchedule 所属 Forward Identity ID。
template_idstringSchedule 执行使用的 Forward Template ID。
namestringSchedule 名称。
descriptionstringSchedule 描述;未设置时为空字符串。
statusstringactive 或 paused;归档状态通过 archived_at 表达。
paused_reasonobject | null暂停原因;未暂停时为 null。
initial_eventsarray每次执行时注入的初始事件。
initial_events_versioninteger只读输入内容版本,从 1 开始;递增规则见输入版本。
executionobject执行策略,字段见执行策略。
trigger_policyobject触发策略,字段见触发策略。
environment_idstring执行环境 ID。
sinksarray结果推送目标;未配置时为 []。
metadataobject调用方业务元数据。
archived_atstring | null归档时间,RFC 3339;未归档时为 null。
created_atstring创建时间,RFC 3339。
updated_atstring最后更新时间,RFC 3339。

执行策略

字段类型说明
session_modestringnew_session 或 reuse_session。
max_concurrent_runsinteger同一 Schedule 最大并发 Run 数。
max_attemptsinteger单个 Run 的最大尝试次数,当前为 1 或 2。
timeout_msinteger单次尝试超时时间,单位毫秒。

触发策略

字段类型说明
typestringcron、once、interval 或 manual。
expressionstring触发表达式;manual 时为空字符串或省略。
timezonestringIANA timezone;不适用时为空字符串或省略。
start_atstring可选执行窗口开始时间,RFC 3339。
stop_atstring可选执行窗口结束时间,RFC 3339。
upcoming_runs_atarray后续触发时间,UTC ISO 8601;当前返回 [] 或最多一个时间。
last_run_atstring | null最近一次触发时间。
sinks 的公开格式和约束见创建 Schedule。

Schedule Run 对象

手动运行、查询 Run 和列出 Runs 接口返回该结构。
字段类型说明
idstringSchedule Run ID,前缀为 srun_。
sourcestring父 Schedule 的权威创建方式,当前为 api 或 tool。详见创建来源。
source_session_idstring | null父 Schedule 的创建来源 Session。
schedule_idstring所属 Schedule ID。
identity_idstringForward Identity ID。
template_idstringForward Template ID。
session_idstring | null本次执行创建或使用的 Session。
statusstringpending、running、completed、failed 或 skipped。
trigger_contextobject本次 Run 的触发方式,详见 Trigger Context。
errorobject | null失败或跳过时的结构化错误。
result_payloadstring | null主流程文本结果。
error_messagestring | null便于展示的错误信息;结构化信息保留在 error。
push_sinkstring | null本次 IM 投递使用的 Sink 类型;未配置时为 null。
push_statusstringIM 投递状态:pending、succeeded、failed 或 skipped。
push_finished_atstring | nullIM 投递结束时间。
attemptinteger当前或最终实际执行到第几次,从 1 开始。
initial_events_versioninteger(可选)当前执行尝试所选输入的版本;尚未选择或无法确认时省略,见输入版本。
initial_eventsarray(可选)仅在获取单条 Run 且传 include_initial_events=true 时,返回当前尝试已绑定的输入快照;未知时省略,详见查询输入快照。
triggered_atstring触发时间,RFC 3339。
started_atstring | null开始执行时间,RFC 3339。
completed_atstring | null结束时间,RFC 3339。
duration_msinteger | null执行耗时,单位毫秒。
created_atstring记录创建时间,RFC 3339。
主流程 status 与 IM 投递 push_status 相互独立。Schedule 配置 execution.max_attempts=2 时,同一个 Run 最终可能返回 attempt=2。

Identity 启停与排期

Identity 停用期间不启动新的 Schedule 执行,尚未开始的 Run 可能被记录为 skipped;已接受的执行及结果投递会自然完成。重新启用后,周期任务从未来的触发点继续,不补跑停用期间错过的触发;已经过期的一次性触发保留 skipped Run 并按正常规则归档。手动暂停、已归档或已删除的 Schedule 不会因 Identity 启用而恢复,详见启用 Identity。

输入版本

initial_events_version 由服务端维护,无需在创建或更新请求中传入。新建 Schedule 为 1;只有规范化后的 initial_events 实际改变时才递增。相同内容更新、修改名称或执行/触发策略不递增;改回曾经使用的内容仍会生成新的版本。存量 Schedule 的当前输入以 1 为基线,不追溯历史版本。 Run 创建时尚未绑定输入;在本次 attempt 首次发送输入前,执行器将匹配的内容和版本绑定到 Run。同一 attempt 的发送重试和恢复沿用该绑定,新的 attempt 可以选用更新后的输入。因此应结合 attempt 理解 Run 的版本,版本存在仅表示已选择输入,不代表运行时已经接收或执行成功。 尚未选择输入的 pending、skipped Run,以及无法确认执行输入的历史 Run,会省略该字段;未知版本不返回 0,也不能用当前 Schedule 的版本补齐。接入方应兼容新增字段,并将缺失版本视为未知。 接入方可在创建或更新 Schedule 后保存 schedule_id、initial_events_version 与输入内容的对应关系,再按 Run 或 Webhook 回调中的版本关联执行输入。当前 Schedule 返回的是最新配置,可能与已经开始执行的 Run 不同。 可通过获取 Schedule Run并传 include_initial_events=true 回查该次所选输入,无需依赖当前 Schedule 的配置。

创建来源

source 和 source_session_id 是只读字段,在 v1/v2 的完整 Schedule 和 Schedule Run 响应中始终存在。
sourcesource_session_id含义
apinull通过公开 Schedule API 创建。
tool非空 sess_*通过 Forward 托管工具创建,关联发起创建工具调用的交互 Session。
来源由服务端记录,不能通过创建或更新请求设置,也不支持按来源筛选。metadata.source 只是可修改的业务元数据,不代表权威来源。 Schedule Run 继承父 Schedule 的来源,与本次手动或自动触发、是否配置 sinks 无关;历史 Run 和已归档 Schedule 的 Run 同样适用。Run 的 session_id 表示本次执行 Session,trigger_context.type 表示本次触发方式。来源 Session 不表示 reuse_session 的执行绑定,内部来源结果投递目标也不作为公开来源。 来源字段是兼容新增的 JSON 字段,客户端应容忍未知字段。服务部署后,历史 Schedule 和 Run 的查询响应也返回来源字段,不需要数据回填。

Trigger Context

type说明
schedule系统根据 Schedule 触发策略自动触发;包含 scheduled_at。
manual调用运行 Schedule 接口手动触发。

Run Error

status=failed 或 status=skipped 时可能返回 error;status=completed 时为 null。
error.type说明
concurrency_limit_reached同一个 Schedule 已达到最大并发 Run 数,本次触发已记录但不会执行。
session_creation_failed创建或绑定 Forward Session 失败。
execution_failedTemplate 执行失败。