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:拒绝(不静默截断高位)。