277 lines
7.8 KiB
Markdown
277 lines
7.8 KiB
Markdown
# label-master(标签大师)
|
||
|
||
`label-master` 是中控标签知识库 skill,中文名“标签大师”。它用于帮助 Agent 理解标签体系、比较标签边界、校验数据生成目标,并把旧标签文档逐步沉淀成可维护、可检索、可校验的 Markdown 知识。
|
||
|
||
这个目录不是一个黑盒分类器。它的目标是让 Agent 像人工标注同学一样,按步骤阅读知识、收敛候选、解释依据,并在不确定时向人确认。
|
||
|
||
## 什么时候使用
|
||
|
||
适合使用这个 skill 的场景:
|
||
|
||
- 判断一个 query 应该归属哪个标签。
|
||
- 解释两个标签之间的边界。
|
||
- 校验数据集里的 `target` 是否是合法标签、function、intent 或 Agent 包装。
|
||
- 为数据生成任务确认标签定义和输出形式。
|
||
- 分析线上 badcase 为什么容易混淆。
|
||
- 维护中控标签知识、补充边界经验。
|
||
|
||
不适合使用这个 skill 的场景:
|
||
|
||
- 直接生成训练集或评测集记录。
|
||
- 导出 jsonl、csv、prompt 表格等数据格式。
|
||
- 直接查询线上数据。
|
||
- 替代人工确认尚未共识的标签迁移方案。
|
||
|
||
这些能力应由 `product-data`、`online-mining` 或其他数据开发 skill 承接。
|
||
|
||
## 核心判断流程
|
||
|
||
标签判断不要直接从关键词跳到最终标签。推荐流程是:
|
||
|
||
```text
|
||
输入理解
|
||
-> 结构维度预判:complex / 多指令 / 自动任务
|
||
-> 候选召回:按动作、对象、资源、设备缩小候选
|
||
-> 业务标签判断:读取标签卡片和高频边界
|
||
-> 输出能力判断:function / intent / object / Agent 包装
|
||
-> 组合最终 target
|
||
-> 不确定则向用户确认
|
||
```
|
||
|
||
运行时入口:
|
||
|
||
- [SKILL.md](SKILL.md):给 Agent 注入的使用协议。
|
||
- [knowledge/决策流程.md](knowledge/决策流程.md):完整判断顺序。
|
||
- [knowledge/索引/候选召回索引.md](knowledge/索引/候选召回索引.md):第一步缩小候选范围。
|
||
- [knowledge/边界/边界索引.md](knowledge/边界/边界索引.md):高频边界入口。
|
||
|
||
## 目录结构
|
||
|
||
```text
|
||
label-master/
|
||
SKILL.md
|
||
README.md
|
||
knowledge/
|
||
决策流程.md
|
||
标签总览.md
|
||
迁移记录.md
|
||
标签迁移索引.md
|
||
索引/
|
||
候选召回索引.md
|
||
标签索引.md
|
||
维度索引.md
|
||
label_manifest.json
|
||
标签/
|
||
...
|
||
边界/
|
||
README.md
|
||
边界索引.md
|
||
高频混淆/
|
||
领域概览/
|
||
判断维度/
|
||
复杂度判断.md
|
||
多指令判断.md
|
||
自动任务判断.md
|
||
标注输出形态.md
|
||
输出能力/
|
||
README.md
|
||
函数目录.md
|
||
对象目录.md
|
||
意图目录.md
|
||
输出组合规范.md
|
||
scripts/
|
||
build_label_manifest.py
|
||
validate_label_output.py
|
||
迁移_docx标签表.py
|
||
```
|
||
|
||
## 知识分层
|
||
|
||
### `判断维度/`
|
||
|
||
维护独立于业务标签的判断维度:
|
||
|
||
- `复杂度判断.md`:快慢系统、complex 维度。
|
||
- `多指令判断.md`:是否需要拆成多个 subquery。
|
||
- `自动任务判断.md`:条件触发、condition 作用域、自动化任务。
|
||
- `标注输出形态.md`:最终输出应该是 function、intent、Agent 包装,还是需要确认。
|
||
|
||
这些维度不要写进每个标签卡片里。
|
||
|
||
### `标签/`
|
||
|
||
维护业务标签卡片。每个标签卡片描述:
|
||
|
||
- 标注输出候选。
|
||
- 适用范围。
|
||
- 典型 query。
|
||
- Function / Agent 说明。
|
||
- 满足边界问题。
|
||
- 易混淆标签。
|
||
- 划分原则。
|
||
|
||
标签卡片是业务能力知识,不直接决定最终输出格式。
|
||
|
||
### `输出能力/`
|
||
|
||
维护最终可消费 target 的能力定义:
|
||
|
||
- `函数目录.md`:function 类型和参数。
|
||
- `对象目录.md`:Location、Resource、PersonalDate 等 object。
|
||
- `意图目录.md`:intent 名、承接 Agent 和范围。
|
||
- `输出组合规范.md`:如何组合 object + function、多指令 JSON、自动任务 JSON。
|
||
|
||
注意:object 只用于 function 填参,通常不单独作为最终 target。
|
||
|
||
### `边界/`
|
||
|
||
维护跨标签混淆经验:
|
||
|
||
- `高频混淆/`:人工维护的高频边界卡,运行时优先读取。
|
||
- `领域概览/`:从旧标签资料自动迁移出来的领域边界概览,只作为背景补充。
|
||
|
||
不要直接全量读取 `边界/`。先读 `边界索引.md`,再读命中的高频边界卡。
|
||
|
||
## 维护规则
|
||
|
||
### 修改标签定义
|
||
|
||
优先修改:
|
||
|
||
```text
|
||
knowledge/标签/<领域>/<标签名>.md
|
||
```
|
||
|
||
适合改这里的内容:
|
||
|
||
- 标签适用范围。
|
||
- 典型 query。
|
||
- Function / Agent 说明。
|
||
- 易混淆标签。
|
||
- 划分原则。
|
||
|
||
### 修改高频边界
|
||
|
||
优先修改:
|
||
|
||
```text
|
||
knowledge/边界/高频混淆/*.md
|
||
```
|
||
|
||
如果某类 badcase 或数据生成任务反复出现同一类混淆,应新增一张高频边界卡。
|
||
|
||
边界卡建议包含:
|
||
|
||
- 适用场景。
|
||
- 候选集合。
|
||
- 决策顺序。
|
||
- 正例。
|
||
- 反例。
|
||
- 输出建议。
|
||
- 仍需确认的问题。
|
||
|
||
### 修改输出格式
|
||
|
||
优先修改:
|
||
|
||
```text
|
||
knowledge/判断维度/标注输出形态.md
|
||
knowledge/输出能力/
|
||
```
|
||
|
||
不要在单个标签卡片里散落维护 function、intent、object 的全局规则。
|
||
|
||
### 修改索引
|
||
|
||
人工可维护:
|
||
|
||
- `knowledge/索引/候选召回索引.md`
|
||
- `knowledge/边界/边界索引.md`
|
||
|
||
脚本生成,不要手改:
|
||
|
||
- `knowledge/索引/label_manifest.json`
|
||
|
||
## 脚本
|
||
|
||
### 生成 manifest
|
||
|
||
修改 Markdown 知识后,运行:
|
||
|
||
```bash
|
||
python skills/label-master/scripts/build_label_manifest.py
|
||
```
|
||
|
||
检查 manifest 是否最新:
|
||
|
||
```bash
|
||
python skills/label-master/scripts/build_label_manifest.py --check
|
||
```
|
||
|
||
### 校验 target
|
||
|
||
校验 Agent 标签:
|
||
|
||
```bash
|
||
python skills/label-master/scripts/validate_label_output.py --target 'Agent(tag="地图导航")'
|
||
```
|
||
|
||
校验 function program:
|
||
|
||
```bash
|
||
python skills/label-master/scripts/validate_label_output.py --target $'x0=Resource(type="DOC")\nSummarize(object=x0)'
|
||
```
|
||
|
||
校验多指令或自动任务 JSON:
|
||
|
||
```bash
|
||
python skills/label-master/scripts/validate_label_output.py --target '[{"condition": null, "querys": [{"subquery": "附近有什么好吃的", "intent": "餐饮服务"}]}]'
|
||
```
|
||
|
||
批量校验 records 文件:
|
||
|
||
```bash
|
||
python skills/label-master/scripts/validate_label_output.py --file output/records.jsonl --field target
|
||
```
|
||
|
||
校验脚本只检查格式、存在性和引用关系,不负责判断 query 语义是否正确。
|
||
|
||
## 旧文件迁移状态
|
||
|
||
主体标签知识来自 `标签定义/Label定义-*.docx`,已经迁移为 Markdown 标签卡片。
|
||
|
||
暂不作为核心知识迁移:
|
||
|
||
- `标签定义/Agent技术方案汇总.docx`:主要是旧 Agent 方案、context 和统计信息,不是标签定义表。
|
||
- `标签定义/重构数据标签梳理.xlsx`:当前只有一个单元格 `老标签`,没有有效迁移内容。
|
||
|
||
旧文档只作为迁移输入和历史参考。后续维护以 `knowledge/` 下的 Markdown 为准。
|
||
|
||
## 推荐工作流
|
||
|
||
### 判断一个 query 的标签
|
||
|
||
1. 读 `knowledge/决策流程.md`。
|
||
2. 判断是否涉及 complex、多指令、自动任务。
|
||
3. 读 `knowledge/索引/候选召回索引.md`。
|
||
4. 读候选标签卡片。
|
||
5. 如命中混淆,读 `knowledge/边界/边界索引.md` 和对应高频边界卡。
|
||
6. 如需最终 target,读 `knowledge/判断维度/标注输出形态.md` 和 `knowledge/输出能力/`。
|
||
7. 输出推荐标签、候选标签、依据、排除项、输出形态和不确定点。
|
||
|
||
### 维护一次标签知识
|
||
|
||
1. 修改标签卡片或高频边界卡。
|
||
2. 如新增高频边界,更新 `knowledge/边界/边界索引.md`。
|
||
3. 如新增召回信号,更新 `knowledge/索引/候选召回索引.md`。
|
||
4. 运行 `build_label_manifest.py`。
|
||
5. 用 `validate_label_output.py` 校验关键 target。
|
||
|
||
## 注意事项
|
||
|
||
- 不要把所有规则都塞进 `SKILL.md`。`SKILL.md` 只写 Agent 如何使用知识。
|
||
- 不要把 complex、多指令、自动任务写进每个标签卡片。
|
||
- 不要默认所有标签都输出 `Agent(tag="xxx")`。
|
||
- 不要手动修改 `label_manifest.json`。
|
||
- 不要长期依赖旧 docx/xlsx,知识确认后应沉淀到 Markdown。
|