refactor: layer fast slow routing knowledge
This commit is contained in:
@@ -1,191 +1,140 @@
|
||||
---
|
||||
name: label-fast-slow-routing
|
||||
description: 依据 XA4.1 2026.6 新标准,对单条或批量 query、带会话上下文的请求和快慢分流评测数据进行“快 / 慢 / 模糊”三档可解释打标,给出默认路由、原因码、证据、置信度和复核标记,并在需要时兼容旧 FAST_DIRECT / SLOW_* 评测标签。用于快慢系统策略标注、旧评测集重标、边界 case 仲裁、标注 Prompt 编写、标签一致性检查和 badcase 分析;可结合相邻 label-master skill 判断业务领域、候选标签、复杂度、多指令和自动任务,但不得把这些辅助维度直接等同于快慢标签。
|
||||
description: 依据 2026.7 产品标准,对单条或批量 query 进行“快 / 慢 / 模糊”三档可解释打标。先用精简标签知识召回垂域,再优先应用垂域规则;未覆盖时依次使用多指令、自动任务等结构规则和产品核心原则,并输出决策层级、规则 ID、证据、冲突和能力承接状态。用于快慢分流标注、评测、边界仲裁和 badcase 分析。
|
||||
---
|
||||
|
||||
# 快慢分流打标
|
||||
|
||||
## 目标
|
||||
|
||||
按用户对响应速度和结果质量的预期判断语义标签,不按当前系统能力反推标签。始终分开输出:
|
||||
按用户对响应速度和结果质量的预期判断 `快`、`慢`、`模糊`。业务垂域、结构信号和当前系统能力只参与解释与路由,不代替语义标签。
|
||||
|
||||
- `label`:`快`、`慢`、`模糊`。
|
||||
- `default_route`:三档标签的默认系统策略。
|
||||
- `fast_system_pending`:已确认的快系统能力缺口。
|
||||
- 业务标签及 `complex`、多指令、自动任务等辅助维度。
|
||||
## 渐进加载
|
||||
|
||||
## 加载知识
|
||||
每条 case 按下面顺序读取,命中后及时停止,不要加载整个 `references/`:
|
||||
|
||||
1. 每次打标前读取 [references/policy.md](references/policy.md)。
|
||||
2. 处理边界 case、校准标注员或编写 Prompt 时,再读取 [references/golden-examples.md](references/golden-examples.md)。
|
||||
3. 迁移旧评测集、输出 `FAST_DIRECT` / `SLOW_*`、设计评测集或做质检时,再读取 [references/legacy-eval-and-quality.md](references/legacy-eval-and-quality.md)。
|
||||
4. 需要业务领域、业务标签、候选标签或结构维度时,按“结合 label-master”一节渐进加载相邻知识;不要一次读取整个知识库。
|
||||
1. 第一动作读取 [references/index.md](references/index.md),完成垂域召回和结构信号预判;垂域不明显或命中召回边界时,再读取 [references/preclassification.md](references/preclassification.md)。
|
||||
2. 读取一个主垂域卡;只有主垂域确实无法确定时,才读取第二个候选垂域卡。
|
||||
3. 出现多指令或自动任务信号时,再读取对应结构卡。自动任务还要读取自动化垂域卡。
|
||||
4. 垂域和结构卡都没有明确覆盖时,才读取 [references/core-policy.md](references/core-policy.md)。
|
||||
5. 命中标记为冲突的规则,或做规则维护时,再读取 [references/policy-conflicts.md](references/policy-conflicts.md)。
|
||||
6. 处理边界样本或校准时,按需读取 [references/golden-examples.md](references/golden-examples.md)。
|
||||
|
||||
## 遵守真源优先级
|
||||
普通 case 通常只需读取索引和一个垂域卡。不要运行时读取相邻 `label-master`;本 Skill 已包含所需的精简知识快照。
|
||||
|
||||
按以下顺序处理冲突:
|
||||
## 决策优先级
|
||||
|
||||
1. 用户在当前任务中明确给出的已批准新口径。
|
||||
2. 《【XA4.1】快慢分流新标准-2026.6》最终汇总(物理页 7–10)。
|
||||
3. 同文档的垂域调研细则(物理页 2–7),仅补充最终汇总未覆盖的场景。
|
||||
4. 《快慢系统分发-评测集构建》的旧八类标签,仅用于原因解释、旧数据迁移和评测方法。
|
||||
5. `label-master` 的业务标签与正交维度,仅用于辅助理解。
|
||||
按以下优先级裁决:
|
||||
|
||||
明确处理以下冲突:
|
||||
1. 用户当前任务明确给出的已批准口径。
|
||||
2. 2026.7 产品文档中的明确垂域规则。
|
||||
3. 2026.7 跨垂域结构规则。
|
||||
4. 2026.7 产品核心原则。
|
||||
5. 快系统能力状态,只记录承接情况,不修改语义标签。
|
||||
|
||||
- 把“导航去附近评分 4.5 以上的泰国菜”标为 `快`,不要沿用旧的筛选即慢。
|
||||
- 把“那个压线噔噔的声音关掉”标为 `快`,前提是功能可唯一识别且动作明确。
|
||||
- 把纯静态产品知识、故障诊断、设备或环境状态查询标为 `模糊`,不要直接沿用旧的快或慢。
|
||||
- 把多个全部明确的设备控制动作标为 `快`;不要仅因多指令就标慢。
|
||||
- 不要使用“长度不超过 5 字默认快”。它只是旧候选挖掘捷径,不是语义规则。
|
||||
垂域规则和核心原则冲突时,以垂域规则为最终结论,并记录 `policy_conflict=true` 和冲突证据。
|
||||
|
||||
## 执行工作流
|
||||
## 工作流
|
||||
|
||||
### 1. 整理输入
|
||||
1. 提取当前 query、前轮、设备、端侧、时间窗口和已提供的能力清单。
|
||||
2. 使用索引输出一个主垂域、最多两个候选垂域,以及多指令、自动任务、上下文依赖信号。
|
||||
3. 读取主垂域卡并查找明确规则。命中时设置 `decision_level="domain"`。
|
||||
4. 未命中垂域规则时检查结构卡。命中时设置 `decision_level="structure"`。
|
||||
5. 仍未命中时使用核心原则,设置 `decision_level="core"`。
|
||||
6. 做反证检查,说明为什么没有选择其他档位。
|
||||
7. 只在有明确能力清单或验证结果时填写 `fast_system_pending`;未检查时填 `null`。
|
||||
8. 需要完整落盘时,按 schema 输出并运行校验脚本。
|
||||
|
||||
提取并保留:
|
||||
## 输出
|
||||
|
||||
- 当前 `query`。
|
||||
- 已提供的前轮、系统回复、时间窗口、设备、端侧和场景。
|
||||
- 用户要求的输出格式和旧标签兼容要求。
|
||||
- 已提供的快系统能力清单;没有清单时不要猜测能力支持状态。
|
||||
默认返回简短结论:
|
||||
|
||||
只使用可见上下文。缺少会改变结论的上下文时,保留不确定点并设置 `review_required=true`。
|
||||
```text
|
||||
标签:慢
|
||||
判断层级:导航/生服垂域
|
||||
命中规则:NAV_SLOW_CONDITIONED_POI
|
||||
依据:单地点规划带明确筛选条件,命中导航垂域慢规则。
|
||||
```
|
||||
|
||||
### 2. 判断业务与结构辅助信息
|
||||
如果外层评测协议只接受 `prediction`、`reason` 等通用字段,把层级和规则 ID
|
||||
写在 `reason` 开头,例如:
|
||||
|
||||
需要时使用 `label-master` 判断:
|
||||
```text
|
||||
[domain:NAV_SLOW_CONDITIONED_POI] 单地点规划带明确筛选条件,按导航垂域给慢。
|
||||
```
|
||||
|
||||
- 业务领域和 2–5 个候选业务标签。
|
||||
- 是否为多指令、自动任务或 `complex`。
|
||||
- 当前轮是否真正依赖上文。
|
||||
|
||||
保持这些结果与快慢标签正交。特别注意:
|
||||
|
||||
- `complex=true` 不自动等于 `慢`。
|
||||
- 多指令不自动等于 `慢`。
|
||||
- 自动任务要结合端侧专项策略。
|
||||
- 业务标签不自动决定快慢。
|
||||
|
||||
### 3. 按三档策略裁决
|
||||
|
||||
使用 [references/policy.md](references/policy.md) 的完整决策树。执行以下最小顺序:
|
||||
|
||||
1. 先区分纯信息获取和带副作用的执行请求。
|
||||
2. 对执行请求,先检查是否必须反推意图、映射场景、消歧、补槽、依赖上下文或规划多步;命中则倾向 `慢`。
|
||||
3. 再检查动作和目标能否直接识别、是否无需先决定“做什么”;满足则标 `快`。
|
||||
4. 对纯闲聊、开放问答、产品知识、故障诊断、设备或环境状态查询标 `模糊`。
|
||||
5. 无法可靠归入快或慢、或速度和质量预期同时明显存在时标 `模糊`,不要把“模型自己不确定”伪装成确定标签。
|
||||
6. 聚合多个子请求时使用 `慢 > 模糊 > 快`;多个全部明确的设备控制动作使用 `快`特例。
|
||||
|
||||
同时做反证检查:说明为什么没有选择另外两档。不要只凭关键词命中一个规则。
|
||||
|
||||
### 4. 确定默认路由和能力状态
|
||||
|
||||
按固定映射填写:
|
||||
|
||||
- `快` → `default_route="快系统"`。
|
||||
- `慢` → `default_route="慢系统"`。
|
||||
- `模糊` → 默认 `default_route="慢系统"`;只有用户另给细分部署策略时才在下游覆盖,语义标签保持 `模糊`。
|
||||
|
||||
仅在有明确能力清单或验证结果证明“语义上应为快,但当前快系统尚不支持”时填写 `fast_system_pending=true`。没有检查能力时填 `null`,不要填 `false` 假装已验证。
|
||||
|
||||
### 5. 生成可审查结果
|
||||
|
||||
默认每条样本输出一个符合 [schemas/label-record.schema.json](schemas/label-record.schema.json) 的 JSON 对象:
|
||||
需要落盘、批量评测或用户要求完整记录时,输出符合 [schemas/label-record.schema.json](schemas/label-record.schema.json) 的对象:
|
||||
|
||||
```json
|
||||
{
|
||||
"query": "太冷了,调一下空调",
|
||||
"label": "快",
|
||||
"default_route": "快系统",
|
||||
"primary_reason_code": "DIRECT_ACTION",
|
||||
"reason_codes": ["DIRECT_ACTION"],
|
||||
"reason": "用户明确给出调节动作和空调对象,无需反推要操作什么。",
|
||||
"evidence": ["“调一下空调”同时包含动作和可识别对象"],
|
||||
"counterevidence": ["含感受词“太冷”,但感受词不覆盖明确执行目标"],
|
||||
"domain_label": "设备控制",
|
||||
"candidate_domain_labels": ["设备控制", "车载控制"],
|
||||
"query": "导航去附近评分4.5以上的泰国菜",
|
||||
"label": "慢",
|
||||
"default_route": "慢系统",
|
||||
"domain": "导航/生服",
|
||||
"candidate_domains": ["导航/生服"],
|
||||
"decision_level": "domain",
|
||||
"decision_rule_id": "NAV_SLOW_CONDITIONED_POI",
|
||||
"decision_source": "references/domain-navigation-life.md",
|
||||
"decision_path": [
|
||||
"preclassification:导航/生服",
|
||||
"domain:NAV_SLOW_CONDITIONED_POI"
|
||||
],
|
||||
"reason": "单地点规划带明确筛选条件,命中导航垂域慢规则。",
|
||||
"evidence": ["“评分4.5以上”是明确筛选条件"],
|
||||
"counterevidence": ["核心快规则把目标明确的简单条件操作视为快"],
|
||||
"structural_signals": {
|
||||
"complex": null,
|
||||
"multi_instruction": false,
|
||||
"auto_task": false
|
||||
"auto_task": false,
|
||||
"context_dependent": false
|
||||
},
|
||||
"context_used": false,
|
||||
"fast_system_pending": null,
|
||||
"legacy_eval_label": "FAST_DIRECT",
|
||||
"route_override": null,
|
||||
"policy_conflict": true,
|
||||
"conflict_refs": ["CONFLICT_NAV_CONDITIONED_POI"],
|
||||
"confidence": "high",
|
||||
"review_required": false,
|
||||
"uncertainties": [],
|
||||
"policy_version": "XA4.1-2026.6"
|
||||
"policy_version": "FAST-SLOW-2026.7"
|
||||
}
|
||||
```
|
||||
|
||||
使用 `null` 表示未评估,不要用猜测值补齐辅助字段。用户只要求简表时至少保留 `query`、`label`、`primary_reason_code`、`reason` 和 `review_required`;落盘数据仍使用完整契约。
|
||||
使用 `null` 表示未评估,不要猜测端侧、上下文、能力状态或复杂度。
|
||||
|
||||
### 6. 校验后再落盘
|
||||
## 校验
|
||||
|
||||
对单条结果执行:
|
||||
单条记录:
|
||||
|
||||
```bash
|
||||
python skills/label-fast-slow-routing/scripts/validate_label.py \
|
||||
--record '{"query":"开空调","label":"快","default_route":"快系统","primary_reason_code":"DIRECT_ACTION","reason_codes":["DIRECT_ACTION"],"reason":"动作和对象明确。","evidence":["开+空调"],"context_used":false,"fast_system_pending":null,"confidence":"high","review_required":false,"uncertainties":[],"policy_version":"XA4.1-2026.6"}'
|
||||
python scripts/validate_label.py --record '<JSON object>'
|
||||
```
|
||||
|
||||
对 JSON、JSONL 文件执行:
|
||||
JSON 或 JSONL:
|
||||
|
||||
```bash
|
||||
python skills/label-fast-slow-routing/scripts/validate_label.py \
|
||||
--file output/fast_slow_labels.jsonl
|
||||
python scripts/validate_label.py --file output/fast_slow_labels.jsonl
|
||||
```
|
||||
|
||||
出现 `valid=false` 时先修正结构和不变量,再写入训练集或评测集。校验器只保证结构和跨字段一致性,不能替代语义复核。
|
||||
|
||||
## 结合 label-master
|
||||
|
||||
需要业务标签时按以下最短路径读取:
|
||||
|
||||
1. 读取 `../label-master/knowledge/决策流程.md`。
|
||||
2. 读取 `../label-master/knowledge/索引/候选召回索引.md` 和 `../label-master/knowledge/标签总览.md`。
|
||||
3. 从 `../label-master/knowledge/索引/标签索引.md` 召回 2–5 个候选。
|
||||
4. 命中高频混淆时读取对应边界卡,再读取候选标签卡。
|
||||
5. 只在任务需要时读取复杂度、多指令或自动任务文件。
|
||||
|
||||
复用它的“候选召回 → 边界比较 → 排除理由 → 不确定点”方法,不复用它的 `Agent` / function target 作为快慢输出。
|
||||
|
||||
当 `label-master` 与本策略冲突时:
|
||||
|
||||
- 保留其业务标签与结构维度结论。
|
||||
- 按本 skill 的真源优先级独立重算快慢标签。
|
||||
- 在 `counterevidence` 中记录冲突,不静默覆盖。
|
||||
|
||||
## 批量与评测集要求
|
||||
|
||||
- 保留原始 ID、query、上下文和来源,不修改原始数据。
|
||||
- 逐条执行完整语义判断,不按字数、关键词或既有类别比例直接定标。
|
||||
- 对同一 session 使用相同的上下文截取规则;缺上下文样本单独标记。
|
||||
- 把 `模糊` 保留为语义标签;需要二值评测时另派生默认路由,不要覆盖原标签。
|
||||
- 旧八类标签只写入 `legacy_eval_label`;无法无损映射时填 `null` 并解释。
|
||||
- 对高流量、高分歧、高风险误分样本优先双人盲标并仲裁。
|
||||
- 分别统计三档标签、垂域、端侧和方向性错误;不要只看总准确率。
|
||||
校验器会检查字段不变量、决策层级、知识来源文件和规则 ID。结构通过不代表语义正确。
|
||||
|
||||
## 复核门禁
|
||||
|
||||
满足任一情况时设置 `review_required=true`:
|
||||
|
||||
- 缺少会改变标签的前轮、设备或端侧信息。
|
||||
- 快慢规则同时有强证据,且优先级无法消解。
|
||||
- 只能依赖未确认的系统能力或白名单。
|
||||
- 旧标签无法无损迁移到新三档。
|
||||
- 缺少会改变垂域或标签的前轮、端侧或设备信息。
|
||||
- 两个同优先级规则给出不同结论。
|
||||
- 自动任务端侧未知,且不同端侧策略不同。
|
||||
- 只能依赖未确认的能力清单。
|
||||
- `confidence="low"`。
|
||||
|
||||
`模糊` 不自动等于需要人工复核。产品知识或状态查询可以高置信地标为 `模糊`。
|
||||
已由优先级解决的产品文档冲突只需记录,不自动要求人工复核。
|
||||
|
||||
## 禁止事项
|
||||
|
||||
- 不要因快系统当前不支持而把 `快`改成 `慢`。
|
||||
- 不要把 `complex=true`、长 query、联网、搜索、排序、模糊词或多轮中的任一项当成单独硬触发器。
|
||||
- 不要把非标准叫法等同于真实歧义;先判断对象能否唯一识别。
|
||||
- 不要脑补前轮、设备位置、说话人位置或能力清单。
|
||||
- 不要把旧评测集的样本占比当成先验配额。
|
||||
- 不要输出没有证据或排除理由的裸标签。
|
||||
- 不按字数、句长、关键词数量或既有标签比例直接定标。
|
||||
- 不因快系统当前不支持而把 `快`改成`慢`。
|
||||
- 不把 `complex=true` 直接等同于`慢`。
|
||||
- 不把所有多指令或自动任务无条件判慢,必须检查专项例外。
|
||||
- 不使用 2026.6、`FAST_DIRECT` 或 `SLOW_*` 旧策略。
|
||||
- 不输出没有规则 ID、证据和判断层级的裸标签。
|
||||
|
||||
Reference in New Issue
Block a user