Skip to content

Run

角色

Run 表示一次由资源目标触发的执行实例,是运行态的一等对象。

v1 中 Run.resourceType 允许为 agenttoolmcp_server,三类目标的输入形状不同,必须通过 tagged union 区分。Agent 对其他 Agent、Tool 或 MCP Server 的平台级调用 SHOULD 统一落成子 run,而不是隐藏在 runtime 私有状态里。

核心对象

  • Run
    • 任务根对象
  • Attempt
    • 某次具体执行
  • RunLink
    • run 之间的有类型谱系关系

Run 核心字段

  • runId
  • orgId
  • resourceType
  • resourceId
  • resourceRevisionId
  • releaseChannelId
  • threadId
  • contextId
  • status
  • input
  • executionProfileSnapshot
  • runPolicySnapshot
  • attempts
  • currentAttemptId
  • blockingInteractionId
  • blockedReason
  • waitingSince
  • openInteractionCount
  • deadlineAt
  • eventSequence
  • version

Attempt 要求

  • 一个 run 在任一时刻 MUST 只有一个活动 attempt
  • attempt MUST 记录开始时间、结束时间、provider、runSpaceIdsessionId、可选 runtimeConnectionId 与错误摘要
  • runtime attach 成功后,attempt MUST 冻结该次 attach 协商得到的 SDK capability snapshot
  • retry 会产生新 attempt,不得覆盖旧 attempt 事实

状态要求

  • v1 标准状态为:
    • queued
    • submitted
    • running
    • retrying
    • canceling
    • succeeded
    • failed
    • canceled
  • run 因审批、补充输入、鉴权或确认而等待时,MUST NOT 引入新的顶层状态;MUST 通过 blockingInteractionIdblockedReasonwaitingSince 表达阻塞覆盖层

规范要求

  • run 的终态 MUST 不可逆
  • cancel 命令在终态上 MUST 幂等 no-op
  • resourceRevisionId MUST 冻结 run 创建时解析到的 revision
  • executionProfileSnapshot MUST 冻结 run 创建时的运行画像;后续 channel 或 revision 切换不得反向修改既有 run
  • runPolicySnapshot MUST 冻结 run 创建时的调度、重试和超时策略
  • blockingInteractionId 如存在,MUST 指向同一 run 的一个 openblocking=true 的 interaction
  • 一个 run 在任一时刻 MUST 至多存在一个当前阻塞的 interaction,但 MAY 同时存在多个非阻塞 open interaction
  • 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 暴露

白皮书与规范内容以仓库真源为准。