Files

108 lines
4.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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/<stem>.xlsx`:每个输入文件清洗首行标题后的单表。
- `<prefix>_汇总结果.xlsx`:每个输入文件一个 sheet,补齐固定列并追加 `is_same`。
- `<prefix>_待标注_仅False.xlsx`:只保留 `is_same=False` 的待标注数据。
- `<prefix>_summary.json`:机器可读统计。
- `<prefix>_summary.csv`:每文件统计表。
- `<prefix>_summary.md`:可粘贴到在线文档的处理摘要。
## 汇报格式
处理完优先这样回复:
```text
已处理 N 个回放 diff 文件。
- car_random:总行数 7,285diff 416diff 率 5.7104%
- car_top:总行数 12,260diff 485diff 率 3.9560%
- 总体:总行数 19,545diff 901diff 率 4.6099%
待标注数据:/abs/path/output/car_待标注_仅False.xlsx
汇总结果:/abs/path/output/car_汇总结果.xlsx
```
如果脚本失败,先检查:
- 是否缺 `xlrd`,老式 `.xls` 必须用它读。
- 是否找不到真实表头;前 10 行必须能看到 `Query`、`Preview环境domain`、`Ptr环境domain`。
- 是否输入了脚本刚产出的汇总文件,导致重复处理输出文件。