Install
openclaw skills install @narol1024/pb-module-triageAnalyze BrainNode protobuf recordings from this autonomous-driving project against a natural-language problem description, identify the most likely faulty module, and produce an evidence-based module analysis. Use for .pb/TotalDataCore/DataCoreFrame recordings, PB replay or dump analysis, localizati
openclaw skills install @narol1024/pb-module-triageUse this skill to turn a reported autonomous-driving symptom plus one or more protobuf recordings into a bounded module diagnosis. Read the recording first, find the earliest upstream evidence that explains the symptom, and separate observed facts from hypotheses.
Normalize the request
.pb recordings
and state which files were selected.Identify the recording shape
TotalDataCore as the primary container.DataCoreFrame, PerceptorFrame, TaskerFrame,
Controller, DataCahssisFrame, ContextInfo, StateManagement,
DiagnosticsFrame, DataStormFrame, and CameraPerceptorFrame files.semantic_map.pb, reference_route*.pb, or submap_*.pb as
vehicle runtime logs unless the user explicitly asks for map analysis.Run deterministic PB triage
From the project root, run:
python3 ~/.codex/skills/pb-module-triage/scripts/pb_module_triage.py \
PB_FILE_OR_DIR \
--issue "PROBLEM DESCRIPTION" \
--repo-root /home/jamin/Enjoo_pro \
--max-files 20
Use --json --output report.json when a machine-readable report is useful.
For very large recordings, first use --max-files, --max-file-bytes, or
split_total_datacore_pb.py to narrow the clip. Never load a multi-gigabyte
PB into Python just to inspect its filename.
Inspect flagged evidence
alignment_valid, map_accepted, match confidence,
map residual, map-to-odom pose;Cross-check the pipeline
DataCoreFrame timestamps to downstream buffers.Assign module and confidence
high: direct error/state field or a consistent upstream-to-downstream
chain supports one module, with no stronger competing explanation.medium: evidence supports a module but the recording lacks a needed
upstream or execution buffer.low: only keyword, timing, or indirect correlation is available.Produce the result
Write the final analysis in Chinese unless the user asks for another language:
# 问题模块分析
## 结论
- 问题描述:...
- 首要怀疑模块:`module`(置信度:高/中/低)
- 受影响模块:...
- 结论边界:已观测事实 / 仍需验证...
## 证据摘要
| 时间/帧范围 | PB字段或统计 | 观察结果 | 解释 |
|---|---|---|---|
| ... | ... | ... | ... |
## 模块分析
| 模块 | PB证据 | 当前判断 | 置信度 |
|---|---|---|---|
| DataCore/传感器 | ... | ... | ... |
| Perception/感知 | ... | ... | ... |
| Localization/Contextor | ... | ... | ... |
| Planning/Tasker | ... | ... | ... |
| Control/Controller | ... | ... | ... |
| Chassis/底盘 | ... | ... | ... |
## 最小验证动作
1. ...
2. ...
Do not output a module score as if it were a measured probability. Explain why the primary module outranks alternatives. If the PB is DataCore-only, explicitly say that planning/control/chassis cannot be directly exonerated or blamed from that file alone.
Use the existing tools when the initial report is insufficient:
python3 brainnode_toolkit/pb_view/pb_size_viewer.py FILE.pb \
--type TotalDataCore --decode-total-buffers
python3 brainstorm_mapper_git/tools/pb_dumper.py INPUT.pb --output OUTPUT_DIR
python3 brainnode_perceptor/tools/split_total_datacore_pb.py INPUT.pb \
--parts 4 --output-dir OUT
brainnode_tasker-tasker_dr5t_rc0725/run_pb_tasker_rerun.bash INPUT.pb --offline
Use pb_size_viewer.py for schema/field-size inspection, pb_dumper.py for
recovering raw GPS/IMU/image/env data, the splitter for isolating a time range,
and tasker replay for a reproducible planning check. Do not run replay merely
because a keyword matched; first establish that the required input buffers and
task context exist.