Skip to content

运行时控制与对象

C# Preview 4 API 固定 NNRP/1 托管侧必须实现的运行时控制和对象引用接口。命名采用 C# 风格, 热路径使用 ReadOnlySpan<byte>,语义与 Rust metadata 保持一致。

导入

csharp
using Nnrp.Core;
using Nnrp.Runtime;

NnrpRuntimeControl.Encode

编码一个 Preview 4 控制面 metadata。

参数类型必填说明
messageTypeMessageTypePreview 4 控制消息类型。
metadata运行时控制 metadatamessageType 匹配的数据结构。
tailReadOnlySpan<byte>扩展字节、诊断字节、进度 body 或 partial result body。
返回
byte[]
csharp
var payload = NnrpRuntimeControl.Encode(
    MessageType.Progress,
    new ProgressMetadata(
        OperationId: 42,
        ProgressSequence: 1,
        StageCode: 2,
        PercentX100: 2500,
        ObjectId: 0,
        BodyBytes: 0));

NnrpRuntimeControl.Decode

解码一个控制面 metadata payload。

参数类型必填说明
messageTypeMessageType决定 metadata 布局的消息类型。
payloadReadOnlySpan<byte>metadata 字节和声明的 tail。
返回
DecodedRuntimeControlMetadata

NnrpRuntimeObject.Encode

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

参数类型必填说明
messageTypeMessageTypeObjectDeclareObjectRefObjectReleaseObjectPatchObjectDeltaCacheReferenceCacheMiss
metadata运行时对象 metadatamessageType 匹配的数据结构。
tailReadOnlySpan<byte>扩展字节、诊断字节或 delta payload。
返回
byte[]

NnrpRuntimeObject.Decode

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

参数类型必填说明
messageTypeMessageType决定 metadata 布局的消息类型。
payloadReadOnlySpan<byte>metadata 字节和声明的 tail。
返回
DecodedRuntimeObjectMetadata

NnrpWebSocketFrameCodec.Encode

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

参数类型必填说明
headerRuntimeFrameHeader除 metadata/body 长度之外的 header 字段;函数从 buffer 长度推导。
metadataReadOnlySpan<byte>metadata payload。
bodyReadOnlySpan<byte>body payload。
返回
byte[]

NnrpWebSocketFrameCodec.Decode

拆分一个 WebSocket 二进制帧。

参数类型必填说明
frameReadOnlySpan<byte>一个完整 WebSocket binary message。
返回
DecodedRuntimeFrame

NnrpWebSocketFrameCodec.DecodeBatch

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

参数类型必填说明
batchReadOnlySpan<byte>连续帧。
limitint最大解码帧数;0 表示不限制。
返回
IReadOnlyList<DecodedRuntimeFrame>

运行时控制 Metadata

类型消息类型冻结属性
ControlRequestMetadataCancel, AbortOperationId, ControlSequence, ReasonCode, SourceRole, Flags, DiagnosticBytes
SchedulingMetadataPriorityUpdate, Deadline, ExpireAtOperationId, ControlSequence, PriorityClass, PriorityDelta, DeadlineUnixMs, Flags
SupersedeMetadataSupersedeOldOperationId, NewOperationId, ControlSequence, DropReasonCode, Flags, DiagnosticBytes
BudgetMetadataBudgetUpdateOperationId, ComputeBudgetUnits, MemoryBudgetBytes, BandwidthBudgetBytes, TokenBudget, Flags
ProgressMetadataProgressOperationId, ProgressSequence, StageCode, PercentX100, ObjectId, BodyBytes
PartialResultMetadataPartialResultOperationId, ResultSequence, ObjectId, DeltaSequence, BodyBytes, Flags
PressureMetadataBackpressure, CreditUpdateScopeId, CreditWindow, PressureLevel, PressureReason, RetryAfterMs, Flags
CapabilityMetadataCapabilityNegotiation, DegradeProfileProfileId, CapabilityCount, CostModelId, PreferenceRank, LimitBytes, LimitUnits, BodyBytes, Flags
RouteHintMetadataRouteHint, ExecutionHintOperationId, RouteId, ExecutorClass, AffinityClass, DeadlineUnixMs, BodyBytes, Flags
TraceContextMetadataTraceContextTraceId, SpanId, ParentSpanId, StageCode, Flags, BodyBytes
ResultDropReasonMetadataResultDropReasonOperationId, ResultSequence, DropReasonCode, SourceRole, Flags, DiagnosticBytes
RecoverableErrorMetadataErrorRecoverableErrorCode, ErrorScope, RecoveryAction, SourceRole, Flags, RetryAfterMs, RelatedSessionId, RelatedFrameId, RelatedViewId, DiagnosticBytes
RetryAfterMetadataRetryAfterScopeId, ControlSequence, RetryAfterMs, JitterMs, ReasonCode, SourceRole, Flags, DiagnosticBytes

运行时对象 Metadata

类型消息类型冻结属性
ObjectDescriptorMetadataObjectDeclareObjectId, ObjectKind, ProducerRole, ConsumerRole, SessionId, ByteSize, ComputeCostUnits, MemoryLocationHint, OwnershipHint, LifetimeHintMs, MetadataBytes
ObjectReferenceMetadataObjectRefObjectId, OperationId, ObjectVersion, Offset, Length, Flags, MetadataBytes
ObjectReleaseMetadataObjectReleaseObjectId, OperationId, ReleaseReason, SourceRole, Flags, DiagnosticBytes
ObjectDeltaMetadataObjectPatch, ObjectDeltaObjectId, DeltaSequence, RegionOffset, RegionBytes, DeltaBytes, Flags, MetadataBytes
CacheReferenceMetadataCacheReferenceCacheKeyHi, CacheKeyLo, ProfileId, ReuseScope, LeaseId, ProducerTraceId, ExpirationHintMs, MetadataBytes, Flags
CacheMissMetadataCacheMissCacheKeyHi, CacheKeyLo, MissReason, ProfileId, DiagnosticBytes

运行时枚举

枚举成员
RuntimeObjectKindUnspecified, Tensor, TokenBlock, ImageTile, FeatureMap, ToolResult, TraceSegment, OpaqueBytes, DocumentChunk, AudioChunk, VideoChunk, RoutePlan, CacheManifest
RuntimeRoleUnspecified, Client, Server, Runtime, Subagent, Tool, Scheduler, ConformanceRunner
MemoryLocationHintUnspecified, HostMemory, DeviceMemory, SharedMemory, RemoteMemory, MmapFile, ObjectStore
OwnershipHintUnspecified, ProducerOwned, ConsumerOwned, SessionOwned, Borrowed, TransferOnRef, ReleaseOnDrop
ObjectReleaseReasonCompleted, Cancelled, Expired, Replaced, Invalidated, OwnerClosed, LeaseExpired, ConformanceInjection
CacheReuseScopeOperation, Session, Connection, Global, Tenant, Profile
CacheMissReasonUnknown, NotFound, Expired, Invalidated, SchemaMismatch, ProducerUnavailable, LeaseRequired, PermissionDenied

RuntimeFrameHeader

属性类型说明
MessageTypeMessageType帧消息类型。
FlagsHeaderFlagsHeader flags。
SessionIduintSession id。
GenerationuintSession generation。
FrameIduintFrame id。

NNRP Documentation