108 lines
4.0 KiB
Markdown
108 lines
4.0 KiB
Markdown
---
|
||
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,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`。
|
||
- 是否输入了脚本刚产出的汇总文件,导致重复处理输出文件。
|