Skip to content

运行时控制帧 Metadata

本页定义 runtime.control 帧的固定 metadata。多取值字段统一使用运行时控制取值注册表

Control Request Metadata

用于 CANCELABORT

Offset字段类型必填含义
0operation_idu64目标 operation。0 表示 session 级控制。
8control_sequenceu64发送方内单调递增序号。
16reason_codeu16见取值注册表里的 reason_code
18source_roleu8见取值注册表里的 role codes。
19flagsu8见取值注册表里的 flag masks。
20diagnostic_bytesu32可选诊断 body 长度。
24reservedu64必须为零。

Scheduling Metadata

用于 PRIORITY_UPDATEDEADLINEEXPIRE_AT

Offset字段类型必填含义
0operation_idu64目标 operation。
8control_sequenceu64发送方内单调递增序号。
16priority_classu16PRIORITY_UPDATE 必填新优先级。
18priority_deltai16相对优先级调整。
20deadline_unix_msu64DEADLINE / EXPIRE_AT 必填非零的绝对 Unix 毫秒 deadline 或过期时间戳;0 表示非法或未设置。
28flagsu32见取值注册表里的 flag masks。

Supersede Metadata

用于 SUPERSEDE

Offset字段类型必填含义
0old_operation_idu64迟到结果可被丢弃的旧 operation。
8new_operation_idu64替代 operation。
16control_sequenceu64发送方内单调递增序号。
24drop_reason_codeu16见取值注册表里的 drop_reason_code
26flagsu16见取值注册表里的 flag masks。
28diagnostic_bytesu32可选诊断 body 长度。

Budget Metadata

用于 BUDGET_UPDATE

Offset字段类型必填含义
0operation_idu64目标 operation,或 0 表示 session 级预算。
8compute_budget_unitsu64协商成本模型下的计算单元预算。
16memory_budget_bytesu64内存预算。
24bandwidth_budget_bytesu64传输预算。
32token_budgetu32token 预算。
36flagsu32见取值注册表里的 flag masks。

BUDGET_UPDATE 携带的是可执行的剩余消耗硬上限,不是调度建议。接收方把更新应用到自己为目标 operation 执行的工作。operation_id0 时更新会话默认值,只影响此后进入 admission 的 operation;已经进入 admission 的 operation 只有在使用其非零 operation id 定向更新时才会变化。

更新遵循以下规范语义:

  1. replaceincrement flag 必须且只能设置一个。两者同时设置或均未设置都属于语义错误, 即使固定 metadata 布局在结构上仍然可以解码。
  2. 数值字段为零表示该预算维度保持不变。replace 模式下,每个非零字段替换剩余上限; increment 模式下,每个非零字段增加剩余上限,溢出属于错误。
  3. compute_budget_units 使用通过 CAPABILITY_NEGOTIATION 接受的 cost model。接收方没有具体 cost model 时不得声明支持 compute budget。
  4. memory_budget_bytes 限制更新后该 operation 新增持有的活跃内存; bandwidth_budget_bytes 限制更新后接收方向发送方输出的 NNRP payload 字节; token_budget 使用当前 profile 的 token unit。对 openai-compatible/1,它限制更新被接受后 生成的 output token 数。
  5. 每个非零预算都是硬上限。接收方必须停止、丢弃,或在上限内完成。只有提交请求的预算策略 允许对应降级,并且兼容的 DEGRADE_PROFILE 已被接受时,接收方才可以降级;降级不能放宽 当前预算上限。
  6. 超出上限必须产生终态 RESULT_DROP_REASON,其中 drop_reason_code=budget_exceeded;如果 profile 要求先发送 profile 终态事件,则该事件之后 仍必须留下同一个可观测终态原因。

Progress Metadata

用于 PROGRESS

Offset字段类型必填含义
0operation_idu64正在报告的 operation。
8progress_sequenceu64单调递增进度序号。
16stage_codeu16见取值注册表里的 stage_code
18percent_x100u160..100000xffff 表示未知。
20object_idu64该进度事件附带的运行时对象。
28body_bytesu32可选 progress payload 长度。

Partial Result Metadata

用于 PARTIAL_RESULT

Offset字段类型必填含义
0operation_idu64正在报告的 operation。
8result_sequenceu64单调递增结果序号。
16object_idu64被引用的运行时对象。
24delta_sequenceu64对象 delta 序号。
32body_bytesu32内联 body 长度。
36flagsu32见取值注册表里的 flag masks。

Pressure Metadata

用于 BACKPRESSURECREDIT_UPDATE

Offset字段类型必填含义
0scope_idu64Session 或 operation scope。
8credit_windowu64CREDIT_UPDATE 必填新发送窗口。
16pressure_levelu16BACKPRESSURE 必填见取值注册表里的 pressure_level
18pressure_reasonu16见取值注册表里的 pressure_reason
20retry_after_msu32发送方等待时间。
24flagsu32见取值注册表里的 flag masks。
28reservedu32必须为零。

Capability Metadata

用于 CAPABILITY_NEGOTIATIONDEGRADE_PROFILE

Offset字段类型必填含义
0profile_idu16正在协商的 profile。
2capability_countu16body 中的 capability entry 数量。
4cost_model_idu16见取值注册表里的 cost_model_id
6preference_ranku16数值越低偏好越高。
8limit_bytesu64该 profile 的聚合字节限制。
16limit_unitsu64聚合计算或 token 限制。
24body_bytesu32Capability entry body 长度。
28flagsu32见取值注册表里的 flag masks。

capability body 使用紧凑二进制序列,不是 JSON,也不包含外层 array 或 object envelope。每个 entry 采用以下布局:

Offset字段类型含义
0token_bytesu16capability token 的字节长度,必须非零。
2tokenASCII byte span已注册 capability token 的规范拼写。

entry 连续紧密排列,不带 padding,并遵循以下规范规则:

  1. capability_count 必须等于 entry 数量,body_bytes 必须等于所有 entry 的精确总字节数。count 为零时 body 必须为空;count 非零时 body 必须非空。
  2. token 使用当前 capability registry 中的规范小写 ASCII 拼写。未知、格式错误、空 token 或 private token 必须拒绝,除非双方另行协商的 extension registry 明确允许。
  3. 每个 token 只能出现一次,并按无符号字节升序排列。重复或非规范顺序属于语义错误。
  4. profile_idcost_model_idpreference_ranklimit_byteslimit_unitsflags 组成一个应用于 body 内全部 token 的 offer。不同 cost 或 limit 必须使用不同的 CAPABILITY_NEGOTIATION 帧。
  5. 接收方使用相同编码返回自己接受的子集。接受集合为空时使用 capability_count=0body_bytes=0;如果硬性要求没有任何 token 被接受,还必须产生 typed capability-mismatch error。

Route Hint Metadata

用于 ROUTE_HINTEXECUTION_HINT

Offset字段类型必填含义
0operation_idu64被路由的 operation。
8route_idu32首选 route。
12executor_classu16见取值注册表里的 executor_class
14affinity_classu16见取值注册表里的 affinity_class
16deadline_unix_msu64路由级 deadline。
24body_bytesu32可选 hint body 长度。
28flagsu32见取值注册表里的 flag masks。

Trace Context Metadata

用于 TRACE_CONTEXT

Offset字段类型必填含义
0trace_idu64Trace ID,尽量与公共头一致。
8span_idu64当前 span。
16parent_span_idu64父 span。
24stage_codeu16见取值注册表里的 stage_code
26flagsu16见取值注册表里的 flag masks。
28body_bytesu32可选 trace attribute body 长度。

TRACE_CONTEXT 冻结为两种关联作用域:

  • header.frame_id == 0 表示更新 session 级 trace context。
  • 非零 header.frame_id 表示更新与该 submit frame 绑定的 operation。该 frame ID 必须指向 active operation,并且必须等于该 operation 记录的 FRAME_SUBMIT frame ID。

Metadata 不重复携带 operation_id。Role 级 SDK 接受可选 operation identity,在编码公共头 之前通过 active operation_id / frame_id 配对完成解析。SDK 不得为 TRACE_CONTEXT 分配 无关的新 frame ID。接收方必须拒绝非零但未知或配对不一致的 frame ID。公共头 trace_id 非零时,必须等于 TraceContextMetadata.trace_id

Result Drop Metadata

用于 RESULT_DROP_REASON

Offset字段类型必填含义
0operation_idu64被丢弃的 operation 或 result。
8result_sequenceu64被丢弃的 result 序号。
16drop_reason_codeu16见取值注册表里的 drop_reason_code
18source_roleu8见取值注册表里的 role codes。
19flagsu8见取值注册表里的 flag masks。
20diagnostic_bytesu32可选诊断 body 长度。
24reservedu64必须为零。

Recoverable Error Metadata

用于 ERROR_RECOVERABLE

Offset字段类型必填含义
0error_codeu32当前错误注册表中的错误码。
4error_scopeu32Connection、session 或 frame 作用域。
8recovery_actionu16见取值注册表里的 reason_code
10source_roleu8见取值注册表里的 role codes。
11flagsu8见取值注册表里的 flag masks。
12retry_after_msu32建议重试延迟;0 表示无显式延迟。
16related_session_idu32相关 session id。
20related_frame_idu32相关 frame 或 operation id 的低位。
24related_view_idu32相关 view id。
28diagnostic_bytesu32可选诊断 body 长度。

Retry After Metadata

用于 RETRY_AFTER

Offset字段类型必填含义
0scope_idu64Session 或 operation 作用域;0 表示 connection。
8control_sequenceu64发送方内单调递增序号。
16retry_after_msu32最小重试等待时间,单位毫秒。
20jitter_msu32可选 jitter 窗口,单位毫秒。
24reason_codeu16见取值注册表里的 reason_code
26source_roleu8见取值注册表里的 role codes。
27flagsu8见取值注册表里的 flag masks。
28diagnostic_bytesu32可选诊断 body 长度。

NNRP Documentation