--- name: online-replay-diff description: 处理线上流量回放产生的 diff Excel 文件;当用户要处理线上系统回放 diff、计算 car/phone/glass 等回放数据 diff 率、整理 is_same=False 待标注样本,或复用 data-diff 的 fix_excel / diff_all / select_false 流程时使用。 metadata: short-description: 计算线上回放 diff 率并输出待标注 False 样本 --- 使用这个 skill 处理线上流量回放导出的 Excel diff 文件:把 `.xls/.xlsx` 清洗成稳定表头,计算 `is_same`,统计 diff 率,并输出待人工标注的数据。 ## 输入形态 常见输入是线上回放导出的老式 `.xls`: - 第 1 行是标题,例如 `DiffCase数据`。 - 第 2 行是真实表头。 - 必须包含 `Query`、`Preview环境domain`、`Ptr环境domain`。 - 常见文件名:`car_random.xls`、`car_top.xls`、`phone_random.xls`、`glass_top.xls`。 脚本也兼容已经清洗过的 `.xlsx`,会在前 10 行自动寻找真实表头。 ## 处理口径 - `is_same=True`:`Preview环境domain` 与 `Ptr环境domain` 完全相同,或落在同一等价组。 - `is_same=False`:两边 domain 不同且不在等价组内,进入待标注输出。 - diff 率:`is_same=False 行数 / 总行数`。 默认等价组在 `knowledge/equivalence_groups.json`: - `CalendarQA` / `time` / `TimeDistance` - `Chat` / `QA` / `dialogCopilot` - `controlCopilot` / `soundboxControl` / `smartMiot` / `smartApp:defaultApp` / `smartApp:app-commander` / `camera` - `music` / `station` 如果用户给出新的等价关系,优先更新或另存一个 JSON,通过 `--equiv-config` 传入;不要直接在脚本里临时写死。 ## 推荐流程 1. 确认输入文件和输出目录。用户没指定时,优先在当前工作目录下找 `.xls/.xlsx`,输出到 `output/`。 2. 确认依赖可用: ```bash python - <<'PY' import pandas, openpyxl, xlrd print("excel deps ok") PY ``` 缺依赖时,在项目虚拟环境里安装:`pip install pandas openpyxl xlrd==2.0.1`。 3. 运行脚本: ```bash python /Users/wuyang/Project/claw-code-agent/skills/online-replay-diff/scripts/process_replay_diff.py \ car_random.xls car_top.xls \ --output-dir output \ --prefix car ``` 4. 检查控制台 JSON 或 `*_summary.md`,向用户汇报每个文件和总体 diff 率。 5. 把 `*_待标注_仅False.xlsx` 作为待标注数据交付。 ## 脚本 ```text skills/online-replay-diff/ SKILL.md knowledge/ equivalence_groups.json scripts/ process_replay_diff.py ``` ### process_replay_diff.py 参数: - 位置参数:输入 `.xls/.xlsx` 文件或目录。 - `--input-dir`:输入目录;和位置参数目录等价。 - `--glob`:目录扫描通配符,默认 `*.xls*`。 - `--output-dir`:输出目录,默认 `output`。 - `--prefix`:输出文件名前缀,默认 `replay_diff`。 - `--equiv-config`:domain 等价规则 JSON。 输出: - `normalized/.xlsx`:每个输入文件清洗首行标题后的单表。 - `_汇总结果.xlsx`:每个输入文件一个 sheet,补齐固定列并追加 `is_same`。 - `_待标注_仅False.xlsx`:只保留 `is_same=False` 的待标注数据。 - `_summary.json`:机器可读统计。 - `_summary.csv`:每文件统计表。 - `_summary.md`:可粘贴到在线文档的处理摘要。 ## 汇报格式 处理完优先这样回复: ```text 已处理 N 个回放 diff 文件。 - car_random:总行数 7,285,diff 416,diff 率 5.7104% - car_top:总行数 12,260,diff 485,diff 率 3.9560% - 总体:总行数 19,545,diff 901,diff 率 4.6099% 待标注数据:/abs/path/output/car_待标注_仅False.xlsx 汇总结果:/abs/path/output/car_汇总结果.xlsx ``` 如果脚本失败,先检查: - 是否缺 `xlrd`,老式 `.xls` 必须用它读。 - 是否找不到真实表头;前 10 行必须能看到 `Query`、`Preview环境domain`、`Ptr环境domain`。 - 是否输入了脚本刚产出的汇总文件,导致重复处理输出文件。