Add label master skill

This commit is contained in:
wuyang6
2026-05-09 17:49:53 +08:00
parent 84b715a293
commit 010dc1a88d
166 changed files with 13099 additions and 3 deletions
@@ -0,0 +1,17 @@
# 判断维度
这里维护和业务标签树并列的判断维度。它们不是 `Agent(tag="xxx")` 的子标签,也不应该混入具体标签卡片。
当前维度:
- `标注输出形态.md`:判断最终监督标签应该使用 Agent 包装、Function 形式,还是需要用户确认。
- `复杂度判断.md`:判断是否是 complex / 慢系统任务。
- `多指令判断.md`:判断 query 是否需要拆成多个子任务,以及如何切分和改写。
- `自动任务判断.md`:判断 query 是否是条件触发任务,以及 condition 和 action 的作用域。
推荐顺序:
1. 先做结构维度预判:自动任务、多指令、complex。
2. 再做业务标签候选。
3. 再判断标注输出形态。
4. 最后组合为当前任务所需的数据格式。
@@ -0,0 +1,21 @@
# 复杂度判断
complex / 快慢系统是独立维度,不属于业务标签本身。业务标签负责判断“是什么能力”,复杂度负责判断“是否需要规划、推理或多步骤处理”。
## 当前临时定义
- `complex=false`:原子化、短链路、可直接执行或直接回答的请求。
- `complex=true`:需要规划、分析、推理、组合多个步骤、跨信息源综合,或需要长上下文处理的请求。
## 判断原则
- 不要因为某个标签天然复杂就直接设为 complex,需要看本次 query 的任务形态。
- 明确的一步控制、一步查询、一步导航通常是 `complex=false`
- 需要制定计划、比较多方案、总结长文本、生成复杂内容、连续推理通常是 `complex=true`
- 当复杂度边界和业务标签边界同时存在歧义时,先分别判断,再说明组合结果。
## 待维护问题
- 哪些标签默认偏快系统。
- 哪些标签在特定参数或上下文下转为慢系统。
- complex 输出格式和最终标签表达如何组合。
@@ -0,0 +1,116 @@
# 多指令判断
多指令是独立维度,不属于业务标签树。它用于判断一个 query 是否需要拆成多个可独立执行的子任务,以及每个子任务对应的业务标签或 intent。
## 输出目标
推荐结构:
```json
[
{
"condition": null,
"querys": [
{"subquery": "关闭卧室的灯", "intent": "设备控制"},
{"subquery": "定一个明天下午四点的闹钟", "intent": "闹钟"}
]
}
]
```
其中 `condition` 由自动任务维度负责判断;没有条件时为 `null`
## 单意图
以下情况通常不要拆分:
- 简单单意图:只有一个核心动作或询问目标。
- 子句存在强执行依赖:拆分会导致参数丢失、顺序错误或重复执行。
- 同品类单操作:同一动作作用于同一功能品类的多个位置或实例。
- 多查询:多个查询类目标可以作为一个查询意图处理。
- 内容播放 + 播放控制:播放具体内容并设置上一首、下一首、循环等,通常视为单个播放意图。
- 顺序执行操作:多个连续步骤共同完成单一任务,例如打开应用、搜索内容、点击结果。
- 改口重复:口误、重复词或重说只保留一次核心意图。
- 相反操作:同一设备或功能连续相反动作,通常视为单意图或口语修正。
## 需要切分
以下情况通常需要拆成多个子任务:
- 并列连词:和、并、然后、再、顺便、同时、并且。
- 明显语义独立的动作或查询目标。
- 同属一个意图类别但语义完整且可独立执行的子句。
- 同一设备或部件存在多个不同方向调整,例如“后视镜往里往前调”。
## 切分原则
- 每个子句必须能独立构成一个完整意图。
- 不可过度细分,导致子句无法理解。
- 拆分后需要继承必要动作、位置或设备信息。
## 改写规则
### 动作继承
“打开空调和电视”应改写为:
```json
[
{
"condition": null,
"querys": [
{"subquery": "打开空调", "intent": "设备控制"},
{"subquery": "打开电视", "intent": "设备控制"}
]
}
]
```
### 无 trigger 的位置继承
“打开客厅电视和吸顶灯”应改写为:
```json
[
{
"condition": null,
"querys": [
{"subquery": "打开客厅电视", "intent": "设备控制"},
{"subquery": "打开客厅吸顶灯", "intent": "设备控制"}
]
}
]
```
### 设备继承
“客厅吸顶灯调到最亮色温调到最大”应改写为:
```json
[
{
"condition": null,
"querys": [
{"subquery": "客厅吸顶灯调到最亮", "intent": "设备控制"},
{"subquery": "客厅吸顶灯色温调到最大", "intent": "设备控制"}
]
}
]
```
## 典型单意图例子
- 打开空调调到二十六度。
- 扫地机设置为又扫又拖清理一下客厅。
- 打开网易云音乐播放青花瓷。
- 关闭主驾和后排车窗。
- 明天武汉和北京的天气。
- 播放张杰的天下并调成单曲循环模式。
## 典型多指令例子
- 关闭所有的座椅加热然后声音放到十三。
- 将能量回收调到柔和并打开氛围灯。
- 关闭卧室的灯定一个明天下午四点的闹钟。
- 关闭 QQ 音乐打开网易云音乐。
- HUD 角度往左往上偏一点。
@@ -0,0 +1,73 @@
# 标注输出形态
这个维度用于判断最终监督标签应该写成 function program、intent,还是 `Agent(tag="xxx")` 包装。详细 object、function、intent 定义见 `../输出能力/`
它和业务标签不同:
- 业务标签回答“query 属于哪个能力范围”。
- 输出形态回答“训练/评测数据里的 target 应该怎么写”。
## 输出能力目录
需要详细判断时,读取:
- `../输出能力/对象目录.md`
- `../输出能力/函数目录.md`
- `../输出能力/意图目录.md`
- `../输出能力/输出组合规范.md`
## 基本原则
1. 不要默认把所有旧 `tag标签` 包装成 `Agent(tag="xxx")`
2. object 只作为 function 参数,不单独作为最终 target。
3. function 可以是多行 program,允许先构造 object 再调用 function。
4. intent 可以直接作为 target,也可以按任务要求包装成 `Agent(tag="xxx")`
5. Agent 字段表示承接方,是知识维度,不等于最终 target。
6. 如果当前数据任务没有明确要求 function、intent 还是 Agent 包装,必须向用户确认,不要自行决定。
7. 对 QA 子类尤其要保守:`医疗问答``百科``美食问答` 等可能只是知识分类,最终输出可能是 `QA()`,不一定是 `Agent(tag="医疗问答")`
## 常见 Function 形态
| 形态 | 例子 | 说明 |
| --- | --- | --- |
| 通用问答 | `QA()` / `QA()` | 多个通用问答子类可能最终不区分子类,统一输出 QA。 |
| 图片问答 | `VisionQA` | 图片、拍照、屏幕问答等视觉理解类能力。 |
| 金融问答 | `FinanceQA()` | 股票、黄金、期货等金融查询。 |
| 时间问答 | `CalendarQA` / `timeDistance` | 日历、节假日、时间距离等时间工具能力。 |
| 文档总结 | `Summarize()` | 文档、URL 总结和问答。 |
| 天气问答 | `WeatherQA()` | 近期天气、温度、湿度、空气质量等。 |
| 翻译 | `Translate` / `TranslateQA` | 外语翻译、翻译问答、词典类能力。 |
| 垂域动作 | `SearchAction` / `ActivateAction` / `OpenAction` | 旧三级语义或 function 定义里经常出现,不等同于最终数据 target,但需要保留为候选。 |
## Agent 包装形态
当任务明确是规划模型的 Agent 标签数据,或者用户明确给出 `Agent(tag="xxx")`,可以使用 Agent 包装形态。
例子:
```text
Agent(tag="地图导航")
Agent(tag="餐饮服务")
Agent(tag="设备控制")
```
如果用户只说“地图导航标签”但没有说明输出格式,标签知识可以推荐业务标签,但生成数据前仍要确认最终 target。
## 推荐输出
做标签判断时建议输出:
```text
业务标签:地图导航
输出形态候选:
- AgentAgent(tag="地图导航")
- FunctionSearchRoute / Navigation / 其他地图 function 候选
推荐:待用户确认,当前需求未说明使用 Agent 还是 Function
```
做数据生成时,如果 target 不明确,必须先问:
```text
这批数据最终 target 是使用 function program、intent
还是使用 Agent 包装,例如 Agent(tag="地图导航")
```
@@ -0,0 +1,266 @@
# 自动任务判断
自动任务是独立维度,不属于业务标签树。它用于判断 query 是否包含“条件触发 + 动作”的结构,以及如何抽取 condition 和 action。
## 输出目标
推荐结构:
```json
[
{
"condition": "上车时",
"querys": [
{"subquery": "打开空调", "intent": "设备控制"}
]
}
]
```
`condition` 可以是:
- 具体条件文本,例如 `上车时``电量低于20%时`
- `default`:无条件管理超级任务或无条件创建/修改/查询/删除备忘录类信息。
- `null`:普通无条件单意图或非 default 的无条件动作。
## 条件定义
常见触发事件:
- `……时候`
- `当……时`
- `如果……就`
- `把……就`
- `在……之后`
- `到达……时`
- `一……就`
- `每……`
常见时间条件:
- 时间段,例如“上午”。
- 时间点,例如“14点”。
- 持续或延迟时间,例如“开十分钟”“二十分钟后”。
## 复合条件完整性
`就` 作为动作分隔标记时,`就` 之前的所有内容整体构成 condition,禁止截断。
`且` 连接的多个状态全部是 condition 的组成部分,不可将其中任意部分误识别为 action。
例子:
```text
晚饭前20分钟后转向灯关闭就风量调高
condition = 晚饭前20分钟后转向灯关闭
action = 风量调高
```
```text
关闭后排空调且副驾座椅加热开启时打开副驾座椅通风
condition = 关闭后排空调且副驾座椅加热开启时
action = 打开副驾座椅通风
```
## 条件作用域
### 默认向右绑定
条件默认只作用于其后最近的动作序列,直到出现新的条件或语义结束。
### 不向左回溯
条件不影响其前面的动作。
```text
播放音乐上车时打开空调
```
应解析为:
```json
[
{"condition": null, "querys": [{"subquery": "播放音乐", "intent": "音乐播放"}]},
{"condition": "上车时", "querys": [{"subquery": "打开空调", "intent": "设备控制"}]}
]
```
### 多个条件各自作用域
```text
上车时打开空调下车时关闭空调
```
应解析为:
```json
[
{"condition": "上车时", "querys": [{"subquery": "打开空调", "intent": "设备控制"}]},
{"condition": "下车时", "querys": [{"subquery": "关闭空调", "intent": "设备控制"}]}
]
```
### `或` 连接多个触发条件
`或` 连接多个触发条件时,视为同一自动任务的多触发项,整体保留为单一 condition,不拆成多个 group,不重复输出动作。
```text
主驾有人上车时或车内温度低于10度时或主驾系上安全带时打开空调
```
应解析为:
```json
[
{
"condition": "主驾有人上车时或车内温度低于10度时或主驾系上安全带时",
"querys": [{"subquery": "打开主驾空调", "intent": "车载控制"}]
}
]
```
## default 场景
`default` 表示无条件自动任务管理或无条件备忘录类信息管理,不等同于 `null`
适用:
- 无条件打开、关闭、创建、删除、修改、查询、编辑超级任务。
- 超级任务别称包括:自定义习惯、智能习惯、智能场景、自动化、小米任务等。
- 无条件创建、修改、查询、删除备忘录类信息,包括日程、提醒、备忘录、便签、安排、事项等。
例子:
```json
[
{"condition": "default", "querys": [{"subquery": "删除自定义习惯", "intent": "系统控制"}]}
]
```
```json
[
{"condition": "default", "querys": [{"subquery": "提醒我去买菜", "intent": "提醒"}]}
]
```
反例:
- `打开提醒`:这是普通无条件单意图,`condition=null`intent 为提醒,不属于 default。
- `创建长途驾驶前检查水和食物的提醒`:包含明确触发条件,condition 应为 `长途驾驶前`,不属于 default。
## 改写规则
### 持续时间
符合条件抽取的持续时间统一改写为 `持续+时间`。若同时存在触发事件,则改写为 `触发条件+持续+时间`
例子:
```text
座椅加热十分钟
```
```json
[
{"condition": "持续十分钟", "querys": [{"subquery": "打开座椅加热", "intent": "车载控制"}]}
]
```
### 提醒改写
条件不为空时,播报、提示、叫我、喊我、通知我、告诉我、报告、念一下等表述统一改写为 `提醒我`
例子:
```text
电量低于20%时通知我立刻充电
```
```json
[
{"condition": "电量低于20%时", "querys": [{"subquery": "提醒我立刻充电", "intent": "提醒"}]}
]
```
### 超级任务
当用户 query 明确包含超级任务相关关键词,或明确修改/删除/取消某个已命名习惯或规则时,需要新增对应管理动作子句,intent 为 `系统控制`
关键词包括:
- HyperTask
- HyperMind
- 超级任务
- 小米任务
- 小米任务大师
- 智能任务
- 任务大师
- 自动化
- 自动化任务
- 自动化场景
- 智能场景
- 自定义场景
- 自定义习惯
- 智能习惯
反例:如果只是直接描述条件触发控制,例如“学校放学时段开启警示灯”,且没有超级任务关键词,不添加管理 Agent。
### 带 trigger 的位置继承
当 condition 中包含位置,如主驾、副驾、后排,后续无明确位置的动作子句需要继承 condition 中的位置。
继承模式:
- 继承 trigger 全部位置:动作语义上作用于所有位置时拆分。
- 就近继承:动作更适合绑定最近位置时只继承最近位置。
- 不继承:动作本身已有位置、提醒类动作、或动作语义不区分位置。
### 提醒我说
条件不为空且用户子句语义为提醒时,如果提醒内容中还包含时间词,不把提醒内容里的时间额外抽为 condition,而是改写为 `提醒我说...`
例子:
```text
明天八点提醒我后天晚上去露营
```
```json
[
{"condition": "明天八点", "querys": [{"subquery": "提醒我说后天晚上去露营", "intent": "提醒"}]}
]
```
### 执行一次
当用户子句中包含“执行一次 / 只执行一次 / 仅一次 / 单次执行”等限定词时,将其拼接到条件中,格式为 `执行一次+原始条件`
### 纯条件句
如果 input 仅包含触发条件,没有具体动作,则输出条件和空 `querys`,禁止凭空生成动作。
```json
[
{"condition": "停车超过90分钟时", "querys": []}
]
```
## 条件负例
以下表达虽然包含“时”等触发词,但更像车辆/系统内置功能、状态描述或固定安全能力,不一定应当当作用户创建自动任务:
- 走远时车门上锁
- 锁车时关闭车窗
- 车辆解锁时鸣笛
- 倒车时后视镜自动下翻
- 停车时后视镜自动折叠
- 离车时打开哨兵模式
- 车辆超速时提醒我
- 并线时打开后向来车辅助
- 低速行驶时提示我
- 红绿灯时提醒我
- 车道偏离时打开辅助
- 上车时打开冰箱
- 雨天时打开雾灯建议
- 安全带未系时提醒我
- 超速时打开告警限速