---
name: label-master
description: 标签大师：读取和使用中控标签知识库，辅助标签边界理解、候选标签比较、数据生成目标校验和标签知识问答。
when_to_use: 当用户要求判断 query 应该归属哪个标签、解释标签边界、校验数据生成目标中的 target、整理标签知识或分析标签混淆时使用。
aliases: label-knowledge, 标签大师, 标签知识, label, 标签体系
allowed_tools: read_file, write_file, edit_file, grep_search, glob_search, ask_user_question, python_exec, bash
---

使用这个 skill 作为“标签知识理解和标签边界分析”的入口。它不直接把标签判断收敛成一个黑盒分类工具，而是指导 Agent 逐步阅读知识、比较候选、解释依据，并在不确定时向用户确认。

## 知识入口

长期维护入口在本 skill 的 `knowledge/` 目录：

- `knowledge/标签总览.md`：标签体系总览、领域索引和推荐阅读路径。
- `knowledge/决策流程.md`：完整判断顺序，覆盖结构维度、业务标签、输出能力和最终组合。
- `knowledge/索引/候选召回索引.md`：根据 query 的动作、对象、资源和设备快速缩小候选范围。
- `knowledge/索引/标签索引.md`：Agent 第一阶段使用的轻量索引，包含领域、标签、旧 tag、Agent 候选、Function 候选和知识卡片路径。
- `knowledge/索引/维度索引.md`：Agent 第一阶段判断是否需要加载标注输出、complex、多指令、自动任务等维度知识。
- `knowledge/输出能力/`：维护 object、function、intent 和最终 target 组合规范。
- `knowledge/判断维度/`：独立维护标注输出形态、complex、多指令、自动任务等非业务标签维度。
- `knowledge/标签/`：按标签维护的知识卡片，文件名使用中文。
- `knowledge/边界/边界索引.md`：高频混淆边界入口。
- `knowledge/边界/高频混淆/`：人工维护的高频边界卡，运行时优先读取。
- `knowledge/边界/领域概览/`：旧资料自动迁移出的领域边界概览，只作为补充背景。
- `knowledge/迁移记录.md`：仅记录从旧文档迁移到 Markdown 知识库的过程，不作为运行时主要依据。

如果用户问单个标签，优先读 `knowledge/索引/标签索引.md` 定位对应卡片，再读 `knowledge/标签/*.md`。如果用户问边界、分类或最终 target，先读 `knowledge/决策流程.md`，再按流程读取 `候选召回索引.md`、候选标签、`边界索引.md`、高频混淆卡、判断维度和输出能力文件。

## 决策流程

处理标签判断、边界解释、目标校验或数据 target 确认时，按下面流程工作：

1. 提取用户 query、上下文、设备、已有候选标签、用户给出的标签假设。
2. 读取 `knowledge/决策流程.md`，按“结构维度 -> 业务标签 -> 输出能力 -> 组合结果”的顺序推进。
3. 先判断是否涉及自动任务、多指令或 complex；必要时读取 `knowledge/索引/维度索引.md` 和 `knowledge/判断维度/`。
4. 再读取 `knowledge/索引/候选召回索引.md`、`knowledge/标签总览.md`、`knowledge/索引/标签索引.md`，找出 2-5 个候选领域或候选标签。
5. 如果命中高频混淆，读取 `knowledge/边界/边界索引.md` 和 `knowledge/边界/高频混淆/` 下对应文件。
6. 读取候选标签卡片，重点看“标注输出”“适用范围”“不适用范围”“易混淆标签”“划分原则”。
7. 如果仍然不清楚，再读取 `knowledge/边界/领域概览/` 下对应领域文件作为补充。
8. 如任务涉及最终 target 输出，读取 `knowledge/判断维度/标注输出形态.md` 和 `knowledge/输出能力/` 下对应文件。
9. 输出判断时必须包含：
   - 推荐标签
   - 候选标签
   - 判断依据
   - 排除哪些标签以及原因
   - 输出形式判断：function program、intent、Agent 包装，或需要用户确认
   - complex 判断（如任务需要）
   - 不确定点或需要用户确认的问题

不要只给一个标签名。标签判断应该可解释、可 review。不要一开始读取整个 `标签/`、`边界/` 或 `输出能力/` 目录；先读索引，再读候选文件。

## 输出形式约束

旧标签资料中同时存在 `tag标签`、`Function及参数定义`、object、function、intent 和承接 Agent。不要默认把所有标签都写成 `Agent(tag="...")`。需要判断输出格式时，先读取 `knowledge/判断维度/标注输出形态.md` 和 `knowledge/输出能力/输出组合规范.md`。

阅读标签卡片时，必须区分：

- `旧 tag 标签`：旧表里的标签名。
- `Agent 形式候选`：如果当前任务仍使用 tag 体系，可能写成 `Agent(tag="xxx")`。
- `Function 形式候选`：如果当前任务使用 function 体系，需要参考卡片中的函数、参数或满足方式。
- `object`：只在 function 需要参数时抽取，例如 `Location`、`PersonalDate`、`Resource`。
- `intent`：业务意图输出，可以直接作为 intent target，也可以按任务要求包装为 Agent。
- `当前最终输出`：没有明确迁移状态时，一律视为待确认。

当用户要生成训练/评测数据，且没有明确说明使用 function program、intent 还是 Agent 包装时，必须先确认 target 输出格式，不要自行选择。

## 脚本化能力

本 skill 提供两个确定性脚本。脚本只负责知识索引、格式检查和合法性校验，不负责替代 Agent 做 query 语义判断。

### 生成知识索引

当标签知识 Markdown 被新增或修改后，调用：

```bash
python skills/label-master/scripts/build_label_manifest.py
```

脚本会读取 `knowledge/标签/`、`knowledge/输出能力/`、`knowledge/判断维度/` 和 `knowledge/边界/`，生成：

```text
skills/label-master/knowledge/索引/label_manifest.json
```

这个 manifest 是 Agent 和校验脚本使用的机器索引。人工维护仍以 Markdown 为准，不要直接手改 manifest。需要检查 manifest 是否同步时，调用：

```bash
python skills/label-master/scripts/build_label_manifest.py --check
```

### 校验标签输出

当 Agent 已经给出 target、function program、intent、Agent 包装、多指令 JSON 或自动任务 JSON 后，在写入数据集前调用：

```bash
python skills/label-master/scripts/validate_label_output.py --target 'Agent(tag="地图导航")'
```

常见示例：

```bash
python skills/label-master/scripts/validate_label_output.py --target 'Agent(tag="餐饮服务")'
python skills/label-master/scripts/validate_label_output.py --target $'x0=Resource(type="DOC")\nSummarize(object=x0)'
python skills/label-master/scripts/validate_label_output.py --target '[{"condition": null, "querys": [{"subquery": "附近有什么好吃的", "intent": "餐饮服务"}]}]'
```

批量校验 JSON/JSONL 文件中的 target 字段：

```bash
python skills/label-master/scripts/validate_label_output.py --file output/records.jsonl --field target
```

校验结果会输出 JSON：

```json
{
  "valid": true,
  "detected_type": "agent",
  "normalized_output": "Agent(tag=\"地图导航\")",
  "errors": [],
  "warnings": [],
  "references": []
}
```

如果 `valid=false`，必须先根据 `errors` 修正输出，再继续生成、落盘或导出数据。

## 和数据开发 skill 的关系

`product-data`、`online-mining` 等数据开发 skill 在需要确认 target、比较标签边界、生成边界样本或分析 badcase 时，可以读取本 skill 的知识文件。

本 skill 只负责标签知识、边界判断和 target 合法性校验，不负责生成 dataset draft，不负责导出 canonical records。需要生成数据时，继续使用数据开发 skill 的 review 和 records 工具链。

## 维护规则

- 新增或修改标签知识时，优先修改 `knowledge/标签/*.md` 和 `knowledge/边界/高频混淆/*.md`。
- 不要要求 Agent 长期回读旧 docx。旧 docx 只作为迁移输入。
- complex、多指令、自动任务等维度只写在 `knowledge/判断维度/`，不要写进每个标签卡片。
- object、function、intent 和 Agent 承接关系写在 `knowledge/输出能力/`，不要散落到标签卡片里重复维护。
- 标签卡片文件名使用中文，便于人工维护。
- 标签输出表达必须保留完整形式。Agent 形式例如 `Agent(tag="地图导航")`；Function 形式必须按已确认的 function 格式写，不要只写标签名。
- 修改标签、function、intent、object 或边界知识后，运行 `scripts/build_label_manifest.py` 更新 manifest。
