Skip to content

运行时控制与对象

Python Preview 4 API 固定 Rust core 已发布的运行时控制、对象引用和 WebSocket 二进制帧语义。后续 SDK 实现必须保持这里的函数名和字段名,不再用实现完成后回填文档的方式调整公开接口。

导入

python
from nnrp import MessageType
from nnrp.runtime import (
    decode_runtime_control_metadata,
    decode_runtime_object_metadata,
    decode_websocket_binary_frame,
    decode_websocket_binary_frame_batch,
    encode_runtime_control_metadata,
    encode_runtime_object_metadata,
    encode_websocket_binary_frame,
)
from nnrp.runtime.types import ProgressMetadata, RuntimeFrameHeader

encode_runtime_control_metadata

编码一个 Preview 4 控制面 metadata。

参数类型必填说明
message_typeMessageTypeCANCELABORTPRIORITY_UPDATEDEADLINEEXPIRE_ATSUPERSEDEBUDGET_UPDATEPROGRESSPARTIAL_RESULTBACKPRESSURECREDIT_UPDATECAPABILITY_NEGOTIATIONDEGRADE_PROFILEROUTE_HINTEXECUTION_HINTTRACE_CONTEXTRESULT_DROP_REASONERROR_RECOVERABLERETRY_AFTER
metadata运行时控制 metadatamessage_type 匹配的数据结构。
tailbytes扩展字节、诊断字节、进度 body 或 partial result body。
返回
bytes
python
payload = encode_runtime_control_metadata(
    MessageType.PROGRESS,
    ProgressMetadata(operation_id=42, progress_sequence=1, stage_code=2, percent_x100=2500, object_id=0, body_bytes=0),
)

decode_runtime_control_metadata

解码一个 Preview 4 控制面 metadata payload。

参数类型必填说明
message_typeMessageType决定 metadata 布局的消息类型。
payloadbytesmetadata 字节和声明的 tail。
返回
DecodedRuntimeControlMetadata,包含 metadatatail

encode_runtime_object_metadata

编码对象、对象引用、对象增量、缓存引用和缓存 miss metadata。

参数类型必填说明
message_typeMessageTypeOBJECT_DECLAREOBJECT_REFOBJECT_RELEASEOBJECT_PATCHOBJECT_DELTACACHE_REFERENCECACHE_MISS
metadata运行时对象 metadatamessage_type 匹配的数据结构。
tailbytes扩展字节、诊断字节或 delta payload。
返回
bytes

decode_runtime_object_metadata

解码一个运行时对象或缓存 metadata payload。

参数类型必填说明
message_typeMessageType决定 metadata 布局的消息类型。
payloadbytesmetadata 字节和声明的 tail。
返回
DecodedRuntimeObjectMetadata,包含 metadatatail

高层 Runtime Frame 契约

上面的 codec 函数属于高级协议 helper。普通应用通过 NativeRuntimeSessionNativeRuntimeServerSession 上的具名方法发送 Preview4 frame,不需要自行编码 payload、选择 message type 或调用 control()

SDK 在这些具名方法内部校验 metadata 与 message 的配对关系、编码完整 payload,并只执行一次 粗粒度 native 调用。这个与角色无关的 frame-send 原语属于内部 binding 边界,不属于公开 session API。协议扩展应增加 typed metadata model 和具名 SDK 方法,而不是向应用暴露原始 frame 构造能力。

NativeRuntimeFrameEvent

Runtime-frame polling 返回已经解码的 NativeRuntimeFrameEvent,而不是原始 control code 和 byte buffer。冻结字段为 typemessage_typemetadatabodydiagnosticmetadata_bodydeltaconnectionsessionoperationframe_idnative_diagnostic。不适用于当前消息的 byte 字段为 b""

type 使用 JavaScript runtime event 表中的 kebab-case 名称;metadata 是匹配消息类型的 typed metadata。Object patch 和 delta event 把 tail 拆成 metadata_bodydelta;其他 声明 tail 以 bodydiagnostic 暴露。Binding 返回 event 前必须复制并释放 native owned payload。

NativeRuntimeEvent.to_runtime_frame() 对 Preview4 runtime frame 返回 NativeRuntimeFrameEvent,对 submit/result/lifecycle event 返回 NoneNativeRuntimeConnection.poll_runtime_frames()iter_runtime_frames() 跳过非 runtime event, 直接返回解码后的类型。

encode_websocket_binary_frame

构造 WebSocket 传输层使用的二进制帧。

参数类型必填说明
headerRuntimeFrameHeadermeta_lenbody_len 之外的 header 字段;函数从 buffer 长度推导这两个值。
metadatabytesmetadata payload。
bodybytesbody payload。
返回
bytes

decode_websocket_binary_frame

拆分一个 WebSocket 二进制帧。

参数类型必填说明
framebytes一个完整 WebSocket binary message。
返回
DecodedRuntimeFrame

decode_websocket_binary_frame_batch

解码本地 buffer 或测试夹具里的连续二进制帧。

参数类型必填说明
batchbytes连续帧。
limitint最大解码帧数;0 表示不限制。
返回
list[DecodedRuntimeFrame]

运行时控制 Metadata

类型消息类型冻结字段
ControlRequestMetadataCANCEL, ABORToperation_id, control_sequence, reason_code, source_role, flags, diagnostic_bytes
SchedulingMetadataPRIORITY_UPDATE, DEADLINE, EXPIRE_AToperation_id, control_sequence, priority_class, priority_delta, deadline_unix_ms, flags
SupersedeMetadataSUPERSEDEold_operation_id, new_operation_id, control_sequence, drop_reason_code, flags, diagnostic_bytes
BudgetMetadataBUDGET_UPDATEoperation_id, compute_budget_units, memory_budget_bytes, bandwidth_budget_bytes, token_budget, flags
ProgressMetadataPROGRESSoperation_id, progress_sequence, stage_code, percent_x100, object_id, body_bytes
PartialResultMetadataPARTIAL_RESULToperation_id, result_sequence, object_id, delta_sequence, body_bytes, flags
PressureMetadataBACKPRESSURE, CREDIT_UPDATEscope_id, credit_window, pressure_level, pressure_reason, retry_after_ms, flags
CapabilityMetadataCAPABILITY_NEGOTIATION, DEGRADE_PROFILEprofile_id, capability_count, cost_model_id, preference_rank, limit_bytes, limit_units, body_bytes, flags
RouteHintMetadataROUTE_HINT, EXECUTION_HINToperation_id, route_id, executor_class, affinity_class, deadline_unix_ms, body_bytes, flags
TraceContextMetadataTRACE_CONTEXTtrace_id, span_id, parent_span_id, stage_code, flags, body_bytes
ResultDropReasonMetadataRESULT_DROP_REASONoperation_id, result_sequence, drop_reason_code, source_role, flags, diagnostic_bytes
RecoverableErrorMetadataERROR_RECOVERABLEerror_code, error_scope, recovery_action, source_role, flags, retry_after_ms, related_session_id, related_frame_id, related_view_id, diagnostic_bytes
RetryAfterMetadataRETRY_AFTERscope_id, control_sequence, retry_after_ms, jitter_ms, reason_code, source_role, flags, diagnostic_bytes

运行时对象 Metadata

类型消息类型冻结字段
ObjectDescriptorMetadataOBJECT_DECLAREobject_id, object_kind, producer_role, consumer_role, session_id, byte_size, compute_cost_units, memory_location_hint, ownership_hint, lifetime_hint_ms, metadata_bytes
ObjectReferenceMetadataOBJECT_REFobject_id, operation_id, object_version, offset, length, flags, metadata_bytes
ObjectReleaseMetadataOBJECT_RELEASEobject_id, operation_id, release_reason, source_role, flags, diagnostic_bytes
ObjectDeltaMetadataOBJECT_PATCH, OBJECT_DELTAobject_id, delta_sequence, region_offset, region_bytes, delta_bytes, flags, metadata_bytes
CacheReferenceMetadataCACHE_REFERENCEcache_key_hi, cache_key_lo, profile_id, reuse_scope, lease_id, producer_trace_id, expiration_hint_ms, metadata_bytes, flags
CacheMissMetadataCACHE_MISScache_key_hi, cache_key_lo, miss_reason, profile_id, diagnostic_bytes

运行时枚举

枚举成员
RuntimeObjectKindUNSPECIFIED, TENSOR, TOKEN_BLOCK, IMAGE_TILE, FEATURE_MAP, TOOL_RESULT, TRACE_SEGMENT, OPAQUE_BYTES, DOCUMENT_CHUNK, AUDIO_CHUNK, VIDEO_CHUNK, ROUTE_PLAN, CACHE_MANIFEST
RuntimeRoleUNSPECIFIED, CLIENT, SERVER, RUNTIME, SUBAGENT, TOOL, SCHEDULER, CONFORMANCE_RUNNER
MemoryLocationHintUNSPECIFIED, HOST_MEMORY, DEVICE_MEMORY, SHARED_MEMORY, REMOTE_MEMORY, MMAP_FILE, OBJECT_STORE
OwnershipHintUNSPECIFIED, PRODUCER_OWNED, CONSUMER_OWNED, SESSION_OWNED, BORROWED, TRANSFER_ON_REF, RELEASE_ON_DROP
ObjectReleaseReasonCOMPLETED, CANCELLED, EXPIRED, REPLACED, INVALIDATED, OWNER_CLOSED, LEASE_EXPIRED, CONFORMANCE_INJECTION
CacheReuseScopeOPERATION, SESSION, CONNECTION, GLOBAL, TENANT, PROFILE
CacheMissReasonUNKNOWN, NOT_FOUND, EXPIRED, INVALIDATED, SCHEMA_MISMATCH, PRODUCER_UNAVAILABLE, LEASE_REQUIRED, PERMISSION_DENIED

RuntimeFrameHeader

字段类型说明
message_typeMessageType帧消息类型。
flagsHeaderFlagsHeader flags。
session_idintSession id。
generationintSession generation。
frame_idintFrame id。

NNRP Documentation