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

5.4 KiB
Raw Blame History

name, description, when_to_use, aliases, allowed_tools
name description when_to_use aliases allowed_tools
intervention-data 生成和校验单句精确干预、正则干预候选 TSV,复用标签大师的 target 语法校验,并从历史干预表推断 code 到下发 domain 的固定映射。 当用户希望新增、检查或整理干预规则,例如给某个 query 或多轮正则生成干预条目、确认设备和标签是否合法、推断下发 domain 时使用。 intervention, rule-intervention, 干预数据 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、校验是否通过、需要用户确认的问题。

脚本能力

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 中的下发表。

示例:

python skills/intervention-data/scripts/analyze_intervention_sources.py

generate_intervention_candidate.py

从 JSON 输入生成候选 TSV,并自动校验。输入可以来自文件或 stdin。

audit_intervention_sources.py

审计现有两个历史干预文件,只输出摘要,不修改文件。适合验证当前 skill 的校验规则和存量数据是否贴合。

示例:

python skills/intervention-data/scripts/audit_intervention_sources.py

单句精确干预示例:

{
  "mode": "exact",
  "device": "unify",
  "query": "播放周杰伦的歌",
  "target": "Agent(tag=\"音乐\")"
}

正则多轮干预示例:

{
  "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。

展示格式

生成候选后,优先用这个格式回复:

我生成了一条候选干预,先不写入历史文件。
- 类型:单句精确干预 / 正则干预
- 设备:xxx
- 标签:xxx
- 校验:通过 / 有问题

候选 TSV`设备	query	code	下发domain`

需要确认:是否写入某个文件,或是否调整设备/标签/正则。

如果校验失败,先解释失败原因,不要要求用户直接落盘。