Files
zk-data-agent/skills/intervention-data/SKILL.md
T
2026-05-19 11:59:49 +08:00

137 lines
5.4 KiB
Markdown
Raw 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: intervention-data
description: 生成和校验单句精确干预、正则干预候选 TSV,复用标签大师的 target 语法校验,并从历史干预表推断 code 到下发 domain 的固定映射。
when_to_use: 当用户希望新增、检查或整理干预规则,例如给某个 query 或多轮正则生成干预条目、确认设备和标签是否合法、推断下发 domain 时使用。
aliases: intervention, rule-intervention, 干预数据
allowed_tools: read_file, write_file, edit_file, grep_search, glob_search, ask_user_question, python_exec
---
使用这个 skill 处理“query/多轮表达 -> 干预 TSV 候选 -> 合法性校验”的任务。
干预数据目前有两类:
- **单句精确干预**:一行四列,格式为 `设备\tquery\tcode\t下发domain`
- **正则干预**:一行三列,格式为 `设备\t正则\t标签`
其中单句精确干预的 `code` 和正则干预的 `标签` 使用同一套 target 语法,和 `label-master` 的输出一致,但不包含复杂度判断。校验时必须复用 `skills/label-master/scripts/validate_label_output.py` 的逻辑。
## 关键约定
- `unify` 表示全部设备。
- 设备必须优先从历史干预文件中归纳,不要随手发明设备名。
- 单句精确干预如果用户没有提供 `下发domain`,必须从历史精确干预表中按 `code -> 下发domain` 的多数映射推断。
- 正则干预支持多轮。多轮正则使用 `beforeQuery#上一轮#query#当前轮` 这种片段表达,最终通常包在 `^...$` 中。
- 默认只生成候选 TSV 和校验结果,不直接追加到历史干预文件。只有用户明确要求“追加到某个文件末尾”或“修改某个文件”时,才使用通用文件编辑能力。
- 所有产物优先写到当前会话的 `output/``scratchpad/` 下,不要写到项目根目录的 `output/`
## 推荐流程
1. 先确认用户要哪种干预方式:
- 单句精确干预:query 必须完全命中。
- 正则干预:适合一类表达、多轮上下文或需要泛化的高频 case。
2. 确认设备。用户没说设备时,必须问设备;可以提示 `unify` 表示全部设备。
3. 确认目标标签/code。它必须是完整 target,例如 `Agent(tag="地图导航")``QA()``Chat()` 或合法 function 调用。
4. 如果是单句精确干预:
- 确认 `query`
- 如果没有 `下发domain`,调用脚本根据历史数据推断。
5. 如果是正则干预:
- 确认当前轮 query。
- 如果有多轮,确认前序 query 顺序。
- 用户给了原始正则就保留;没给时由脚本生成 `^query#...$``^beforeQuery#...#query#...$`
6. 调用 `scripts/generate_intervention_candidate.py` 生成候选 TSV 和校验报告。
7. 展示时只展示必要信息:干预类型、设备、候选 TSV、校验是否通过、需要用户确认的问题。
## 脚本能力
```text
skills/intervention-data/
SKILL.md
knowledge/
type_match_agent.json
scripts/
intervention_common.py
analyze_intervention_sources.py
audit_intervention_sources.py
generate_intervention_candidate.py
validate_intervention_records.py
```
### analyze_intervention_sources.py
读取历史干预文件,输出设备枚举、`code -> 下发domain` 多数映射、常见标签,以及 `knowledge/type_match_agent.json` 中的下发表。
示例:
```bash
python skills/intervention-data/scripts/analyze_intervention_sources.py
```
### generate_intervention_candidate.py
从 JSON 输入生成候选 TSV,并自动校验。输入可以来自文件或 stdin。
### audit_intervention_sources.py
审计现有两个历史干预文件,只输出摘要,不修改文件。适合验证当前 skill 的校验规则和存量数据是否贴合。
示例:
```bash
python skills/intervention-data/scripts/audit_intervention_sources.py
```
单句精确干预示例:
```json
{
"mode": "exact",
"device": "unify",
"query": "播放周杰伦的歌",
"target": "Agent(tag=\"音乐\")"
}
```
正则多轮干预示例:
```json
{
"mode": "regex",
"device": "miCar",
"before_queries": ["第一个"],
"query": "红绿灯少的路线",
"target": "Agent(tag=\"地图导航\")"
}
```
### validate_intervention_records.py
校验候选 TSV。支持 `--mode exact``--mode regex`
规则包括:
- 列数正确。
- 设备合法。
- `code` / `标签` 优先通过 label-master 校验;如果 label-master 未收录但历史干预表中已经稳定出现,允许作为候选通过,并给出 warning 让用户确认知识库是否需要补齐。
- 单句精确干预的 `下发domain` 与历史多数映射一致,默认不一致为 warning,`--strict-domain` 时为 error。
- 单句精确干预还会用 `type_match_agent.json` 做配置校对;配置值可以是更宽泛前缀,例如 `音乐 -> contentCopilot` 可以兼容历史里的 `contentCopilot|music`
- 正则可编译,且包含 `query#` 片段。
- 与历史文件重复或冲突时给出 warning/error。
## 展示格式
生成候选后,优先用这个格式回复:
```text
我生成了一条候选干预,先不写入历史文件。
- 类型:单句精确干预 / 正则干预
- 设备:xxx
- 标签:xxx
- 校验:通过 / 有问题
候选 TSV`设备 query code 下发domain`
需要确认:是否写入某个文件,或是否调整设备/标签/正则。
```
如果校验失败,先解释失败原因,不要要求用户直接落盘。