diff --git a/skills/label-master/knowledge/决策流程.md b/skills/label-master/knowledge/决策流程.md index fc927ce..9074b14 100644 --- a/skills/label-master/knowledge/决策流程.md +++ b/skills/label-master/knowledge/决策流程.md @@ -55,11 +55,12 @@ ### complex -complex 是快慢系统判断,独立于业务标签。它可以先粗判,但建议在业务标签和输出形态判断后再最终确认。 +complex 是复杂度判断,独立于业务标签。它可以先粗判,但建议在业务标签和输出形态判断后再最终确认。 读取: -- `判断维度/复杂度判断.md` +- `判断维度/复杂度/复杂度判断.md` +- 如果 query 涉及地图导航、POI 搜索、路线偏好、终点附近、沿途、顺路或多轮路线约束,继续读取 `判断维度/复杂度/地图导航.md`。这是 complex 维度下的专项条件表,不是新的结构维度;最终仍只输出 `complex=false/true`。 ## 3. 业务标签候选 diff --git a/skills/label-master/knowledge/判断维度/README.md b/skills/label-master/knowledge/判断维度/README.md index 2acb8d1..a108626 100644 --- a/skills/label-master/knowledge/判断维度/README.md +++ b/skills/label-master/knowledge/判断维度/README.md @@ -5,7 +5,8 @@ 当前维度: - `标注输出形态.md`:判断最终监督标签应该使用 Agent 包装、Function 形式,还是需要用户确认。 -- `复杂度判断.md`:判断是否是 complex / 慢系统任务。 +- `复杂度/复杂度判断.md`:判断 complex 维度;地图导航等专项规则也从这里进入。 + - `复杂度/地图导航.md`:complex 维度下的地图导航专项条件表,不是独立维度。 - `多指令判断.md`:判断 query 是否需要拆成多个子任务,以及如何切分和改写。 - `自动任务判断.md`:判断 query 是否是条件触发任务,以及 condition 和 action 的作用域。 diff --git a/skills/label-master/knowledge/判断维度/复杂度/地图导航.md b/skills/label-master/knowledge/判断维度/复杂度/地图导航.md new file mode 100644 index 0000000..4761beb --- /dev/null +++ b/skills/label-master/knowledge/判断维度/复杂度/地图导航.md @@ -0,0 +1,195 @@ +# 地图导航复杂度判断 + +本文件是 [复杂度判断](复杂度判断.md) 的专项条件表,父维度是 `complex` / 复杂度判断。 + +它只回答一个问题:当前地图导航、POI 搜索、路线偏好相关 query 应该是 `complex=false` 还是 `complex=true`。 + +它不引入新的维度字段,不替代业务标签判断;业务标签仍需要结合地图导航、地图问答、餐饮服务、旅游等标签卡片和边界卡。 + +## 维度归属 + +- 父维度:`complex` / 复杂度判断。 +- 输出字段:仍然只输出 `complex=false` 或 `complex=true`。 +- 使用位置:读取 `复杂度/复杂度判断.md` 后,如果 query 涉及导航、路线规划、POI 搜索、终点附近、沿途、顺路、路线偏好、单 POI 筛选或多轮路线约束,再读取本文件。 +- 不要把“地图导航复杂度判断”当成和 complex、多指令、自动任务并列的新维度。 + +## 总体原则 + +- `complex=false`:用户目标可以由地图、导航或 POI 检索链路直接处理,虽然可能带有简单定语、路线偏好、上下文修正或单个 POI 约束。 +- `complex=true`:用户要求系统做综合规划、主观筛选、避坑判断、跨信息源验证、复杂比较,或需要先理解隐含知识再定位到可导航 POI。 +- 单 POI 是强 `complex=false` 信号,但不是绝对信号;如果单 POI 带有复杂筛选、评价推理、外部事实验证或“帮我挑一个最合适”的综合决策,则转为 `complex=true`。 +- 多轮导航中的次轮路线限制、沿途/顺路找点、目的地附近找点,通常仍是导航链路内的短链路操作,默认 `complex=false`。 + +## complex=false + +以下类型默认 `complex=false`。 + +### 1. 导航到终点附近某类地点 + +用户希望在当前终点、目的地或路线附近找一个明确类型的 POI 并导航过去,属于导航链路内的 POI 搜索。 + +示例: + +- 导航到终点附近最便宜的停车场。 +- 导航到目的地附近的充电站。 +- 去终点附近的服务区。 + +判断要点: + +- “终点附近 / 目的地附近 / 沿途附近”不自动导致 `complex=true`。 +- 如果只是明确 POI 类型加简单筛选,仍是 `complex=false`。 + +### 2. 规划路线和路线偏好 + +用户要求规划路线,或者指定路线偏好、避让条件,属于地图导航的直接能力。 + +示例: + +- 给我规划一条不走高速只走国道的路线。 +- 我不想走收费路而且别太绕。 +- 我想少走隧道尽量走地面路。 +- 优先走快速路别进小路。 +- 我赶时间尽量走最快路线。 + +判断要点: + +- “规划路线”本身不等于 `complex=true`。 +- “不走高速 / 只走国道 / 不走收费路 / 少走隧道 / 走地面路 / 快速路 / 最快路线”等路线偏好默认 `complex=false`。 + +### 3. 找一个某类地方,目标是单 POI + +用户要求找一个地点或一个可去的地方,只要目标是单 POI,且没有复杂综合评价,默认 `complex=false`。 + +示例: + +- 找一下景区边上能停车又能吃饭的地方。 +- 帮我找一个附近能停车的商场。 +- 找一个离我最近的洗车店。 + +判断要点: + +- “找一个 xxx 的地方”如果最终目标是一个 POI,默认 `complex=false`。 +- 能停车、能吃饭、附近、最近、最大、最便宜、有停车场等简单约束,不单独触发 `complex=true`。 + +### 4. 多轮导航中的次轮限制条件 + +上一轮已经处在导航、路线、目的地或 POI 选择上下文中,当前轮只是补充路线限制或偏好,默认 `complex=false`。 + +示例: + +- 我不想走收费路而且别太绕。 +- 我想少走隧道尽量走地面路。 +- 优先走快速路别进小路。 +- 我赶时间尽量走最快路线。 + +判断要点: + +- 这类 query 可能没有显式 POI,但依赖上一轮路线上下文。 +- 只是在当前导航任务上加约束,不视为新的复杂规划任务。 + +### 5. 单 POI + 简单筛选条件 + +目标是一个 POI,筛选条件是地图或 POI 检索可直接处理的简单属性,默认 `complex=false`。 + +示例: + +- 帮我导航去附近最近的星巴克,要有停车场的。 +- 帮我找一个现在还开着的洗车店,停车方便的。 +- 带我去一个能买到户外运动装备的店,最好品牌多一点的。 +- 帮我找一个附近有 ATM 机的商场,选一个最方便的过去。 + +简单筛选条件包括: + +- 距离:附近、最近、顺路、沿途、目的地附近。 +- 路线:不走高速、只走国道、少收费、别太绕、最快。 +- 设施:有停车场、停车方便、有 ATM、现在开着。 +- 基础排序:最大、最近、最便宜、评分高。 + +判断要点: + +- 简单条件可以多个并列;只要不要求复杂综合推理,仍是 `complex=false`。 +- “选一个最方便的过去”如果只是结合距离、停车、路线等直接地图属性,仍可为 `complex=false`。 + +### 6. 单 POI 改口、纠错、模糊表达、取消 + +用户在导航中改口、纠错、口语重复或取消导航,不需要复杂规划。 + +示例: + +- 导航去春日樱花不是樱花园牡丹园不也不是牡丹园。 +- 导航去解放路夜市哎不对呃那个不是不是不是停停停别导航。 +- 导航去翡翠城什么什么楼亚朵。 + +判断要点: + +- 改口和模糊不等于复杂。 +- 如果最终仍是单 POI 纠错或取消动作,默认 `complex=false`。 + +### 7. 多轮里的沿途、顺路、中间找点 + +在已有导航路线、目的地或行程上下文中,用户要求沿途、顺路、中间找某类 POI,默认 `complex=false`。 + +示例: + +- 中间找个充电站。 +- 帮我找一个最顺路的停车场。 +- 跟刚才的道路不重复。 +- 我要沿途的顺路的。 + +判断要点: + +- “沿途 / 顺路 / 中间”是导航链路可直接利用的约束。 +- “跟刚才道路不重复”属于路线约束,默认 `complex=false`。 + +## complex=true + +以下类型默认 `complex=true`。 + +### 1. 单 POI 但筛选条件需要复杂综合判断 + +用户不是简单找一个 POI,而是要求系统综合营业时间、便利性、评价、风险、拥挤程度、冷门程度、出餐速度、名人打卡事实等信息后做推荐。 + +示例: + +- 附近牙科晚上营业的牙科诊所有哪些,给我推荐一个最方便去的。 +- 去上海鹿晗打卡过的邮筒,具体在哪儿,你帮我定位到能导航的地方。 +- 导航去一家评分很高但比较冷门的小馆子我不想踩雷。 +- 导航去一家很受欢迎的面馆最好出餐快别排太久。 +- 我想去看展,但不想踩雷,你帮我在附近挑个停车方便、人别太挤的展馆或商场,直接导航过去。 + +判断要点: + +- “有哪些 + 推荐一个”通常需要先召回候选再综合比较,偏 `complex=true`。 +- “不想踩雷 / 冷门但评分高 / 很受欢迎但别排太久 / 人别太挤 / 出餐快”等属于主观质量和实时状态综合判断,偏 `complex=true`。 +- “某人打卡过的地点 / 网络热点地点 / 隐含事实定位”需要外部事实验证后才能导航,偏 `complex=true`。 + +### 2. 多条件跨信息源综合决策 + +如果 query 同时要求地图属性、评价属性、实时状态、内容理解或外部事实,并要求系统帮用户做最终决策,通常是 `complex=true`。 + +判断要点: + +- 是否需要先分析候选集合。 +- 是否需要比较多个方案。 +- 是否需要解释为什么选这个。 +- 是否需要外部知识或线上内容验证。 + +## 不要误判为 `complex=true` 的情况 + +以下表达不要单独作为 `complex=true` 触发条件: + +- 出现“规划路线”。 +- 出现“终点附近 / 目的地附近 / 沿途 / 顺路 / 中间”。 +- 出现路线偏好:不走高速、只走国道、不收费、别太绕、少隧道、走地面路、走快速路、最快。 +- 单 POI 带简单定语:最近、最大、最便宜、附近、有停车场、停车方便、现在开着。 +- 口语改口、重复、否定、取消导航。 + +## 推荐判断模板 + +```text +complex 判断: +- 推荐:false/true +- 原因:单 POI + 简单筛选 / 路线偏好 / 多轮沿途找点 / 复杂综合筛选 +- 复杂度依据:引用本文件中的具体条目 +- 业务标签:另按地图导航、地图问答、餐饮服务等标签判断 +``` diff --git a/skills/label-master/knowledge/判断维度/复杂度/复杂度判断.md b/skills/label-master/knowledge/判断维度/复杂度/复杂度判断.md new file mode 100644 index 0000000..7a497d1 --- /dev/null +++ b/skills/label-master/knowledge/判断维度/复杂度/复杂度判断.md @@ -0,0 +1,41 @@ +# 复杂度判断 + +complex 维度是独立维度,不属于业务标签本身。业务标签负责判断“是什么能力”,复杂度负责判断“是否需要规划、推理或多步骤处理”。 + +## 维度定位 + +- 本维度只输出 `complex=false` 或 `complex=true`。 +- 本维度可以有通用判断条件,也可以有业务场景专项条件。 +- 专项条件不是新的维度,只是 complex 维度下更细的判定规则。 +- 业务标签、输出形态、多指令、自动任务需要分别判断,不要混成一个结论。 + +## 当前临时定义 + +- `complex=false`:原子化、短链路、可直接执行或直接回答的请求。 +- `complex=true`:需要规划、分析、推理、组合多个步骤、跨信息源综合,或需要长上下文处理的请求。 + +## 判断原则 + +- 不要因为某个标签天然复杂就直接设为 complex,需要看本次 query 的任务形态。 +- 明确的一步控制、一步查询、一步导航通常是 `complex=false`。 +- 需要制定计划、比较多方案、总结长文本、生成复杂内容、连续推理通常是 `complex=true`。 +- 当复杂度边界和业务标签边界同时存在歧义时,先分别判断,再说明组合结果。 + +## 判断条件组织 + +| 条件层级 | 使用场景 | 读取文件 | +| --- | --- | --- | +| 通用条件 | 所有 query 的基础复杂度判断 | 本文件 | +| 地图导航专项条件 | query 涉及导航、路线规划、POI 搜索、终点附近、沿途、顺路、路线偏好、单 POI 筛选或多轮路线约束 | [地图导航复杂度判断](地图导航.md) | + +使用方式: + +1. 先用本文件做通用判断。 +2. 如果命中专项场景,再读取对应专项条件表。 +3. 最终仍只输出 `complex=false` 或 `complex=true`。 + +## 待维护问题 + +- 哪些标签默认偏 `complex=false`。 +- 哪些标签在特定参数或上下文下转为 `complex=true`。 +- complex 输出格式和最终标签表达如何组合。 diff --git a/skills/label-master/knowledge/判断维度/复杂度判断.md b/skills/label-master/knowledge/判断维度/复杂度判断.md deleted file mode 100644 index 57eba15..0000000 --- a/skills/label-master/knowledge/判断维度/复杂度判断.md +++ /dev/null @@ -1,21 +0,0 @@ -# 复杂度判断 - -complex / 快慢系统是独立维度,不属于业务标签本身。业务标签负责判断“是什么能力”,复杂度负责判断“是否需要规划、推理或多步骤处理”。 - -## 当前临时定义 - -- `complex=false`:原子化、短链路、可直接执行或直接回答的请求。 -- `complex=true`:需要规划、分析、推理、组合多个步骤、跨信息源综合,或需要长上下文处理的请求。 - -## 判断原则 - -- 不要因为某个标签天然复杂就直接设为 complex,需要看本次 query 的任务形态。 -- 明确的一步控制、一步查询、一步导航通常是 `complex=false`。 -- 需要制定计划、比较多方案、总结长文本、生成复杂内容、连续推理通常是 `complex=true`。 -- 当复杂度边界和业务标签边界同时存在歧义时,先分别判断,再说明组合结果。 - -## 待维护问题 - -- 哪些标签默认偏快系统。 -- 哪些标签在特定参数或上下文下转为慢系统。 -- complex 输出格式和最终标签表达如何组合。 diff --git a/skills/label-master/knowledge/复杂度判断.md b/skills/label-master/knowledge/复杂度判断.md deleted file mode 100644 index bb3e80d..0000000 --- a/skills/label-master/knowledge/复杂度判断.md +++ /dev/null @@ -1,23 +0,0 @@ -# 复杂度判断 - -> 本文件保留在根目录用于兼容早期入口。后续优先维护 `判断维度/复杂度判断.md`。 - -complex / 快慢系统是独立维度,不属于业务标签本身。业务标签负责判断“是什么能力”,复杂度负责判断“是否需要规划、推理或多步骤处理”。 - -## 当前临时定义 - -- `complex=false`:原子化、短链路、可直接执行或直接回答的请求。 -- `complex=true`:需要规划、分析、推理、组合多个步骤、跨信息源综合,或需要长上下文处理的请求。 - -## 判断原则 - -- 不要因为某个标签天然复杂就直接设为 complex,需要看本次 query 的任务形态。 -- 明确的一步控制、一步查询、一步导航通常是 `complex=false`。 -- 需要制定计划、比较多方案、总结长文本、生成复杂内容、连续推理通常是 `complex=true`。 -- 当复杂度边界和业务标签边界同时存在歧义时,先分别判断,再说明组合结果。 - -## 待维护问题 - -- 哪些标签默认偏快系统。 -- 哪些标签在特定参数或上下文下转为慢系统。 -- complex 输出格式和最终标签表达如何组合。 diff --git a/skills/label-master/knowledge/索引/label_manifest.json b/skills/label-master/knowledge/索引/label_manifest.json index f05c95d..3b80797 100644 --- a/skills/label-master/knowledge/索引/label_manifest.json +++ b/skills/label-master/knowledge/索引/label_manifest.json @@ -221,9 +221,15 @@ }, "description": "标签大师的中控标签知识库机器索引;由 scripts/build_label_manifest.py 从 Markdown 生成。", "dimensions": [ + { + "name": "地图导航复杂度判断", + "output_field": "仍然只输出 `complex=false` 或 `complex=true`。", + "parent_dimension": "`complex` / 复杂度判断。", + "path": "knowledge/判断维度/复杂度/地图导航.md" + }, { "name": "复杂度判断", - "path": "knowledge/判断维度/复杂度判断.md" + "path": "knowledge/判断维度/复杂度/复杂度判断.md" }, { "name": "多指令判断", diff --git a/skills/label-master/knowledge/索引/维度索引.md b/skills/label-master/knowledge/索引/维度索引.md index 4d7248a..53b30c3 100644 --- a/skills/label-master/knowledge/索引/维度索引.md +++ b/skills/label-master/knowledge/索引/维度索引.md @@ -5,7 +5,7 @@ | 维度 | 何时读取 | 文件 | | --- | --- | --- | | 标注输出形态 | 需要生成训练/评测 target,或卡片中同时存在旧 tag 与 Function 定义时 | [标注输出形态](../判断维度/标注输出形态.md),并继续读取 [输出能力](../输出能力/README.md) | -| 复杂度判断 | 需要判断 complex / 快慢系统,或 query 可能需要规划、推理、多步骤处理时 | [复杂度判断](../判断维度/复杂度判断.md) | +| 复杂度判断 | 需要判断 complex 维度,或 query 可能需要规划、推理、多步骤处理时;如果 query 涉及导航、路线规划、POI 搜索、终点附近、沿途、顺路、路线偏好、单 POI 筛选或多轮路线约束,先读复杂度总规则,再继续读其专项条件表 | [复杂度判断](../判断维度/复杂度/复杂度判断.md),[地图导航复杂度判断](../判断维度/复杂度/地图导航.md) | | 多指令判断 | query 包含多个动作、并列连接、多个设备/位置/方向,或需要拆分 subquery 时 | [多指令判断](../判断维度/多指令判断.md) | | 自动任务判断 | query 包含“当/如果/时候/之后/到达/每/一...就”等条件触发结构,或涉及超级任务/提醒/自动化时 | [自动任务判断](../判断维度/自动任务判断.md) | @@ -13,5 +13,6 @@ 1. 先读 `决策流程.md`,判断是否需要结构维度。 2. 如果只是普通标签边界,不一定读取维度文件。 -3. 如果 query 结构复杂,按需读取 `复杂度判断.md`、`多指令判断.md`、`自动任务判断.md`。 -4. 如果要写最终 target,必须读取 `标注输出形态.md` 和 `输出能力/输出组合规范.md`。 +3. 如果 query 结构复杂,按需读取 `复杂度/复杂度判断.md`、`多指令判断.md`、`自动任务判断.md`。 +4. 如果读取 `复杂度/复杂度判断.md` 后发现 query 属于某个专项场景,例如地图导航/POI/路线偏好,再读取该维度下的专项条件表;专项条件表不产生新的维度字段。 +5. 如果要写最终 target,必须读取 `标注输出形态.md` 和 `输出能力/输出组合规范.md`。 diff --git a/skills/label-master/knowledge/输出能力/输出组合规范.md b/skills/label-master/knowledge/输出能力/输出组合规范.md index 177dad4..e6a5baa 100644 --- a/skills/label-master/knowledge/输出能力/输出组合规范.md +++ b/skills/label-master/knowledge/输出能力/输出组合规范.md @@ -10,7 +10,7 @@ 业务标签:这句话属于哪个能力范围 输出能力:最终 target 写 function、intent 还是 Agent 包装 结构维度:是否多指令、是否自动任务 -复杂度维度:是否 complex / 慢系统 +复杂度维度:是否输出 `complex=false` 或 `complex=true` ``` ## function program diff --git a/skills/label-master/scripts/build_label_manifest.py b/skills/label-master/scripts/build_label_manifest.py index 8587fd9..9e41dd4 100755 --- a/skills/label-master/scripts/build_label_manifest.py +++ b/skills/label-master/scripts/build_label_manifest.py @@ -250,11 +250,18 @@ def parse_dimension_files() -> list[dict[str, str]]: if not root.exists(): return [] files: list[dict[str, str]] = [] - for path in sorted(root.glob("*.md")): - if path.name == "README.md": + for path in sorted(root.rglob("*.md")): + if path == root / "README.md": continue text = read_text(path) - files.append({"name": first_heading(text, path.stem), "path": rel(path)}) + item = {"name": first_heading(text, path.stem), "path": rel(path)} + parent_dimension = extract_bullet_value(text, "父维度") + output_field = extract_bullet_value(text, "输出字段") + if parent_dimension: + item["parent_dimension"] = parent_dimension + if output_field: + item["output_field"] = output_field + files.append(item) return files