Skip to content

运行时控制帧 Metadata ​

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

Control Request Metadata ​

用于 CANCEL 和 ABORT。

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_UPDATE、DEADLINE 和 EXPIRE_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_budgetu32否token 预算。
36flagsu32是见取值注册表里的 flag masks。

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

更新遵循以下规范语义:

  1. replace 与 increment 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_x100u16否0..10000;0xffff 表示未知。
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 ​

用于 BACKPRESSURE 和 CREDIT_UPDATE。

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

Capability Metadata ​

用于 CAPABILITY_NEGOTIATION 和 DEGRADE_PROFILE。

Offset字段类型必填含义
0profile_idu16是正在协商的 profile。
2capability_countu16是body 中的 capability entry 数量。
4cost_model_idu16否见取值注册表里的 cost_model_id。
6preference_ranku16否数值越低偏好越高。
8limit_bytesu64否该 profile 的聚合字节限制。
16limit_unitsu64否聚合计算或 token 限制。
24body_bytesu32是Capability 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_id、cost_model_id、preference_rank、limit_bytes、limit_units 和 flags 组成一个应用于 body 内全部 token 的 offer。不同 cost 或 limit 必须使用不同的 CAPABILITY_NEGOTIATION 帧。
  5. 接收方使用相同编码返回自己接受的子集。接受集合为空时使用 capability_count=0 和 body_bytes=0;如果硬性要求没有任何 token 被接受,还必须产生 typed capability-mismatch error。

Route Hint Metadata ​

用于 ROUTE_HINT 和 EXECUTION_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_idu64是Trace 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_scopeu32是Connection、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_idu64是Session 或 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