7.0 KiB
小米汽车 OneTrack 端侧埋点
小米汽车小爱端侧上报的全量埋点(端到端可用性、ASR 状态、全离线日志、性能指标等)。与 NLP 服务端日志正交:从车端上报的客户端事件流。
索引
onetrack_xiaoai_micar*(c3log 独立集群),单日 ~300GB——必须传--date YYYYMMDD。
tip 体系
一个 request_id 对应多条记录,每条对应一个 tip 埋点点位。先 --fields tip,tip_name 看一眼有哪些 tip:
python elk_query.py <rid> --preset micar --date 20260424 \
--fields request_id,tip,tip_name,tip_module_name,event_name
主要点位:
| tip | tip_name | tip_module_name | event_name | 含义 |
|---|---|---|---|---|
1024.1.1.1.23177 |
小爱端到端可用性 | 性能类 | execute | 全链路时序埋点(wakeup → asr → nlp → exec) |
1024.1.2.1.23176 |
小爱全离线日志 | 日志类 | execute | 离线模型相关日志 |
1024.1.2.1.34496 |
离线NLP结果 | — | state | 离线 NLP 出参 |
1024.4.1.1.25631 |
ASR识别状态 | ASR识别 | state | ASR 中间状态 |
1024.1.1.1.33610 |
第三方接口调用 | — | execute | — |
1024.1.3.1.23520 / 23521 |
小爱指令开始 / 结束 | — | start / — | — |
⚠️ 不同 tip 的负载 schema 不统一:
- 23177 → 负载在顶层
key_value - 23176 → 负载在顶层
request_infos[]/response_infos[]/other_infos(不在key_value) - 34496 → 负载在
key_value.instructions - 25631 →
key_value为 null,看event_name/other_infos
23177 — 端到端可用性
负载在顶层 key_value(脚本自动解析)。常用字段:
唤醒:wakeup_received_event / wakeup_ball_appear
ASR 时序:asr_first_partial / asr_first_text / asr_first_same_final / asr_final / asr_first_pack_sent
NLP 时序:nlp_start_answer / nlp_finish_answer
结果:state_result_type(success / ...)/ state_exec_result / state_cancel_msg
指令统计:state_exec_ins_total / state_exec_ins_success / state_exec_ins_failed / state_exec_ins_filtered
异常:state_nlp_unknown_instructions (list) / state_nlp_exceptions / state_vad_end_type
链路:state_duplex / state_request_id / state_asr_final_size
python elk_query.py <rid> --preset micar --date 20260424 \
--fields request_id,tip,key_value.state_result_type,key_value.state_exec_result,key_value.wakeup_received_event,key_value.asr_final,key_value.nlp_finish_answer
23176 — 全离线日志 ⭐ 离线模型核心
⚠️ schema 与其他 tip 不同:负载在顶层 request_infos[] / response_infos[] / other_infos(list,长度通常为 1,但每个 list 都有大量信息),不在 key_value。
request_infos[0] — 送给离线引擎的入参
- 引擎/模型版本:
engine_id/engine_model(如3.2.30-claw)/offline_model_ver(如2026012201)/miai_ver/app_version - 请求形态:
request_type/request_state_type/is_wakeup_req/is_llm/duplex/origin - 链路环境:
srv_env/network/network_nlp/network_type/off_asr_avail - 设备:
device_id/car_type/car_config/is_driving/zone_info/is_login/has_token/isInternal context_offline(list) — 离线引擎拿到的全部 context payload(含Nlp.OfflineSession/Map.MapState/UIController.InteractionInfoList等 namespace)。研究模型行为时务必看这一段- 其他:
ua/transaction_id/request_id/timeout_reason
response_infos[0] — 引擎返回的产物
⚠️ 不止 nlp_debug_info,三块都要看:
instructions[] — 引擎下发的全部指令序列。每条 header.namespace.name + header.is_offline(true/false 标识离/在线判决)+ header.dialog_id / id / transaction_id + payload。常见 namespace.name:
System.Heartbeat/System.AbortOffline.CloudStop(current_round_used_audio_duration/next_round_rid/stop_audio_duration)SpeechRecognizer.RecognizeResult(is_final/results[].text/confidence/is_nlp_request/is_key_word_free_request)Nlp.StartAnswer/Nlp.FinishAnswer/Nlp.IntentsWithRelation(payload.intent)Template.Query(text)Dialog.Reject(query/reject_type如NON_HUMAN) /Dialog.Finish
nlp_debug_info ⭐ 离线 NLP 模型自身的调试输出(模型日志打点)。研究模型决策为什么这样做的核心:
Arbitrate— 仲裁器决策:query/logits(list[float], 各类目原始打分) /label_id/category(如Info)/predict/label(如baike#person)/domains(候选 domain)/time- 各阶段耗时:
Rewrite.time/PreTrain.time(bertAvailable)/EdgeIntentExecutor.time/GeneralParse.time/lookAndTalk.time - 候选 domain:
domain_confidence(list) /domain_parsers(list) - 各 domain parser 子模块(如
music/phonecall/mapApp):每个 parser 块下含time/score/parser_version+ 子模块耗时(如music.MusicKvParserCost/MusicJsgfParserCost/MusicIcsfModelParserCost/MusicGlobalCost) nlp_model_version(dict) — 各模型 checkpoint 版本(如arbitrator-l1: 20241205_offline/phonecall-icsf: 240205_offline/mapapp-icsf-single: 241224_offline)nlp_edge_version— 边端 NLP 引擎整体版本edge_track— 上下文/能力 capability 追踪:capabilitiesVersion/contexts(用到的 context namespace list)/arbitrator_priorityllm_wait— 是否等待 LLM
other_infos — 其他辅助信息(list)
命令模板
# 整条全离线日志(含 request_infos[0]、response_infos[0]、other_infos)
python elk_query.py <rid> --preset micar --date 20260424 \
--fields request_id,tip,tip_name,request_infos,response_infos,other_infos
# 只看模型自身打的 debug 日志
python elk_query.py <rid> --preset micar --date 20260424 \
--json-path response_infos.0.nlp_debug_info
# 模型版本 + 仲裁结果速览
python elk_query.py <rid> --preset micar --date 20260424 \
--fields request_id,tip,response_infos.0.nlp_debug_info.Arbitrate,response_infos.0.nlp_debug_info.nlp_model_version,response_infos.0.nlp_debug_info.nlp_edge_version,request_infos.0.engine_model,request_infos.0.offline_model_ver
# 引擎全部指令(看 is_offline 区分离/在线)
python elk_query.py <rid> --preset micar --date 20260424 \
--json-path response_infos.0.instructions
34496 — 离线NLP结果
key_value 顶层就是 {instructions: [...]},结构和 23176 的 response_infos[0].instructions 一致,但只是 NLP 部分的指令子集(不含 SpeechRecognizer / System / Offline 等)。没有 nlp_debug_info、没有 request_infos——想看模型决策细节去 23176。
字段 schema
完整 schema 见 ../INDEX_CATALOG.md 中 onetrack_xiaoai_micar* 一节。