主题
Run
角色
Run 表示一次由资源目标触发的执行实例,是运行态的一等对象。
v1 中 Run.resourceType 允许为 agent、tool 或 mcp_server,三类目标的输入形状不同,必须通过 tagged union 区分。Agent 对其他 Agent、Tool 或 MCP Server 的平台级调用 SHOULD 统一落成子 run,而不是隐藏在 runtime 私有状态里。
核心对象
Run- 任务根对象
Attempt- 某次具体执行
RunLink- run 之间的有类型谱系关系
Run 核心字段
runIdorgIdresourceTyperesourceIdresourceRevisionIdreleaseChannelIdthreadIdcontextIdstatusinputexecutionProfileSnapshotrunPolicySnapshotattemptscurrentAttemptIdblockingInteractionIdblockedReasonwaitingSinceopenInteractionCountdeadlineAteventSequenceversion
Attempt 要求
- 一个 run 在任一时刻
MUST只有一个活动 attempt - attempt
MUST记录开始时间、结束时间、provider、runSpaceId、sessionId、可选runtimeConnectionId与错误摘要 - runtime attach 成功后,attempt
MUST冻结该次 attach 协商得到的 SDK capability snapshot - retry 会产生新 attempt,不得覆盖旧 attempt 事实
状态要求
- v1 标准状态为:
queuedsubmittedrunningretryingcancelingsucceededfailedcanceled
- run 因审批、补充输入、鉴权或确认而等待时,
MUST NOT引入新的顶层状态;MUST通过blockingInteractionId、blockedReason、waitingSince表达阻塞覆盖层
规范要求
- run 的终态
MUST不可逆 - cancel 命令在终态上
MUST幂等 no-op resourceRevisionIdMUST冻结 run 创建时解析到的 revisionexecutionProfileSnapshotMUST冻结 run 创建时的运行画像;后续 channel 或 revision 切换不得反向修改既有 runrunPolicySnapshotMUST冻结 run 创建时的调度、重试和超时策略blockingInteractionId如存在,MUST指向同一 run 的一个open且blocking=true的 interaction- 一个 run 在任一时刻
MUST至多存在一个当前阻塞的 interaction,但MAY同时存在多个非阻塞openinteraction - run 的用户可见输出
MUST可以仅通过事件流和 input 快照重建
输入形状
resourceType=agent- 输入
MUST使用AgentRunInput - 允许消息、
callableAliases[]、additionalCallableRefs[]和ephemeralTools[]
- 输入
resourceType=tool- 输入
MUST使用ToolRunInput - 不得伪装成消息会话输入
- 输入
resourceType=mcp_server- 输入
MUST使用McpServerRunInput - 表示创建一个托管 MCP session,而不是一次性 tool 调用
- 后续 MCP request
MUST使用ContinueRunCommand(mode=mcp_server)继续输入
- 输入
子运行与谱系
- Agent 调用 Tool
SHOULD创建resourceType=tool的子 run,并通过RunLink(relationType=tool_subrun)暴露 - Agent 调用 Agent
SHOULD创建resourceType=agent的子 run,并通过RunLink(relationType=delegation | handoff)暴露 - Agent 注入 MCP server
SHOULD创建resourceType=mcp_server的子 run,并通过RunLink(relationType=mcp_session)暴露 - 子 run
MAY落在与父 run 不同的RunSpace;平台MUST NOT假设它们共用同一执行空间 - 跨组织 callable 的子 run
MAY归资源提供方组织所有;调用方的可见范围MUST由对应CallableGrant.visibilityScopes[]控制 - run 之间的 delegation、handoff、follow-up、tool subrun 和 mcp session
SHOULD通过RunLink暴露