跳转到内容

desktop/src-tauri/src/otel_receiver.rs

第 1 条注释,第 1 行

desktop/src-tauri/src/otel_receiver.rs:1

//! 本地 OTLP/HTTP 接收器(M5,按需启用):仅绑定 127.0.0.1,接收

第 2 条注释,第 2 行

desktop/src-tauri/src/otel_receiver.rs:2

//! OTLP/JSON 与 OTLP/protobuf 的 /v1/traces(CodeBuddy 仅支持 protobuf;

第 3 条注释,第 3 行

desktop/src-tauri/src/otel_receiver.rs:3

//! Copilot CLI/VS Code 默认 JSON),gzip 有界解压,把逐请求 span 归一化为

第 4 条注释,第 4 行

desktop/src-tauri/src/otel_receiver.rs:4

//! otel 适配器可读的 JSONL(%APPDATA%/llm-usage-desktop/otel/spans.jsonl)。

第 5 条注释,第 5 行

desktop/src-tauri/src/otel_receiver.rs:5

//!(空行)

第 6 条注释,第 6 行

desktop/src-tauri/src/otel_receiver.rs:6

//! 约定(execution.md M5 / V22 / V25):

第 7 条注释,第 7 行

desktop/src-tauri/src/otel_receiver.rs:7

//! - 默认关闭(settings.otel_receiver_enabled);启用 = 用户显式授权本机实例;

第 8 条注释,第 8 行

desktop/src-tauri/src/otel_receiver.rs:8

//! - 仅 127.0.0.1;逐源 Bearer 令牌由当前用户的原生凭据库核验;

第 9 条注释,第 9 行

desktop/src-tauri/src/otel_receiver.rs:9

//! - 请求头 ≤ 64 KiB、body ≤ 64 MiB、gzip 解压上限 64 MiB(压缩炸弹防护);

第 10 条注释,第 10 行

desktop/src-tauri/src/otel_receiver.rs:10

//! - 仅保留逐项列出的 span 身份、时间及用量、模型和会话属性。

第 11 条注释,第 11 行

desktop/src-tauri/src/otel_receiver.rs:11

//! 不接受任意属性前缀,正文/凭据不落盘;

第 12 条注释,第 12 行

desktop/src-tauri/src/otel_receiver.rs:12

//! - 认证先于正文处理;不接受浏览器 Origin 或声明转发的请求。

第 13 条注释,第 13 行

desktop/src-tauri/src/otel_receiver.rs:13

//! - 全局每分钟最多 120 次,最多 4 个活动连接;超限 HTTP 429。

第 14 条注释,第 21 行

desktop/src-tauri/src/otel_receiver.rs:21

/// 仅保留一个本应用创建的监听器;其他进程占用端口时返回错误。

第 15 条注释,第 71 行

desktop/src-tauri/src/otel_receiver.rs:71

/// 仅在本次启动监听器时返回 true,供配置失败时回收本次创建的监听器。

第 16 条注释,第 107 行

desktop/src-tauri/src/otel_receiver.rs:107

/// body 上限。

第 17 条注释,第 109 行

desktop/src-tauri/src/otel_receiver.rs:109

/// 头区上限。

第 18 条注释,第 111 行

desktop/src-tauri/src/otel_receiver.rs:111

/// gzip 解压上限。

第 19 条注释,第 113 行

desktop/src-tauri/src/otel_receiver.rs:113

/// 已核对适配器使用的精确字段名,新增属性前必须检查。

第 20 条注释,第 142 行

desktop/src-tauri/src/otel_receiver.rs:142

/// 字符串长度上限;超长值丢弃,避免持久化正文形式的文本。

第 21 条注释,第 145 行

desktop/src-tauri/src/otel_receiver.rs:145

/// 启动接收器线程;绑定失败返回 Err(调用方展示)。线程随进程退出结束。

第 22 条注释,第 199 行

desktop/src-tauri/src/otel_receiver.rs:199

// 明确发送 FIN 并有界读取剩余输入,保留连接关闭时的响应,

第 23 条注释,第 200 行

desktop/src-tauri/src/otel_receiver.rs:200

// 适用于 Winsock 连接结束过程。

第 24 条注释,第 201 行

desktop/src-tauri/src/otel_receiver.rs:201

// 拒绝的输入不解析、不持久化。

第 25 条注释,第 249 行

desktop/src-tauri/src/otel_receiver.rs:249

/// 处理一条 HTTP 连接(单请求即关;OTLP exporter 均为短连接)。

第 26 条注释,第 255 行

desktop/src-tauri/src/otel_receiver.rs:255

// 接受自非阻塞 listener 的连接可能继承非阻塞属性:显式恢复阻塞读写。

第 27 条注释,第 260 行

desktop/src-tauri/src/otel_receiver.rs:260

// 读到头部结束或超限。

第 28 条注释,第 396 行

desktop/src-tauri/src/otel_receiver.rs:396

// 默认按 protobuf(CodeBuddy 唯一形态)。

第 29 条注释,第 405 行

desktop/src-tauri/src/otel_receiver.rs:405

// 补充日志不自动作为 span 采集,也不与原生会话用量相加。

第 30 条注释,第 657 行

desktop/src-tauri/src/otel_receiver.rs:657

/// 仅将明确允许的属性值转换为扁平字段。

第 31 条注释,第 667 行

desktop/src-tauri/src/otel_receiver.rs:667

// OTLP AnyValue 形 {stringValue/intValue/doubleValue/boolValue} → 标量。

第 32 条注释,第 704 行

desktop/src-tauri/src/otel_receiver.rs:704

/// OTLP/JSON ExportTraceServiceRequest → 归一化 span 记录。

第 33 条注释,第 745 行

desktop/src-tauri/src/otel_receiver.rs:745

/// 将 OTLP 数字 span kind 转换为名称。

第 34 条注释,第 791 行

desktop/src-tauri/src/otel_receiver.rs:791

// 保留 span 级 status 元数据,与筛选的 attributes 独立。

第 35 条注释,第 792 行

desktop/src-tauri/src/otel_receiver.rs:792

// ERROR 状态供 otel 适配器标 error_status,失败调用不能当成功入账。

第 36 条注释,第 812 行

desktop/src-tauri/src/otel_receiver.rs:812

// ---- protobuf wire 解析(ExportTraceServiceRequest)----

第 37 条注释,第 818 行

desktop/src-tauri/src/otel_receiver.rs:818

// 第 10 字节只允许 0/1(protobuf u64 编码规则);更大值是损坏数据。

第 38 条注释,第 884 行

desktop/src-tauri/src/otel_receiver.rs:884

/// protobuf KeyValue → (key, 标量值)。

第 39 条注释,第 920 行

desktop/src-tauri/src/otel_receiver.rs:920

/// OTLP/protobuf body → 归一化 span 记录。

第 40 条注释,第 989 行

desktop/src-tauri/src/otel_receiver.rs:989

// Status 子消息:#2 code(枚举;2=ERROR)。

第 41 条注释,第 1190 行

desktop/src-tauri/src/otel_receiver.rs:1190

// 保留指定的 usage.* 字段,丢弃正文和超长字符串。

第 42 条注释,第 1222 行

desktop/src-tauri/src/otel_receiver.rs:1222

// 测试 span 的 ID 为 0xab,名称 model_stream,起点为 fixed64,输入用量为 100。

第 43 条注释,第 1224 行

desktop/src-tauri/src/otel_receiver.rs:1224

// AnyValue 的 int_value 使用 protobuf 字段 3。

第 44 条注释,第 1238 行

desktop/src-tauri/src/otel_receiver.rs:1238

// Resource 字段 1 保存重复 KeyValue,其字段 1 和 2 分别为 key 和 AnyValue。

第 45 条注释,第 1241 行

desktop/src-tauri/src/otel_receiver.rs:1241

// AnyValue{field1 stringValue}:wire2 长度分隔。

第 46 条注释,第 1274 行

desktop/src-tauri/src/otel_receiver.rs:1274

// 使用由进程 ID 计算的高位端口启动接收器。

第 47 条注释,第 1294 行

desktop/src-tauri/src/otel_receiver.rs:1294

// 接收器线程异步写盘:轮询等待。

第 48 条注释,第 1303 行

desktop/src-tauri/src/otel_receiver.rs:1303

// otel 适配器扫描该文件。

第 49 条注释,第 1427 行

desktop/src-tauri/src/otel_receiver.rs:1427

// HTTP 客户端按 Content-Length 读取响应,不等待 EOF,

第 50 条注释,第 1428 行

desktop/src-tauri/src/otel_receiver.rs:1428

// 因拒绝请求中的未读输入可能导致连接重置。

第 51 条注释,第 1561 行

desktop/src-tauri/src/otel_receiver.rs:1561

// 声明很大的正文但不发送字节时,身份验证仍须立即响应。

第 52 条注释,第 1605 行

desktop/src-tauri/src/otel_receiver.rs:1605

// span status.code 透传(ERROR 供适配器标 error_status)。

第 53 条注释,第 1610 行

desktop/src-tauri/src/otel_receiver.rs:1610

// 无 status 的 span 不带该键。

第 54 条注释,第 1640 行

desktop/src-tauri/src/otel_receiver.rs:1640

// Status 字段 2 的枚举 ERROR=2 使用 varint,嵌套于 Span 字段 15。

第 55 条注释,第 1659 行

desktop/src-tauri/src/otel_receiver.rs:1659

// 第 10 字节 > 1:拒绝(不静默截断高位)。