# 复杂度判断

complex 维度是独立维度，不属于业务标签本身。业务标签负责判断“是什么能力”，复杂度负责判断“是否需要规划、推理或多步骤处理”。

## 维度定位

- 本维度只输出 `complex=false` 或 `complex=true`。
- 本维度可以有通用判断条件，也可以有业务场景专项条件。
- 专项条件不是新的维度，只是 complex 维度下更细的判定规则。
- 业务标签、输出形态、多指令、自动任务需要分别判断，不要混成一个结论。

## 当前临时定义

- `complex=false`：原子化、短链路、可直接执行或直接回答的请求。
- `complex=true`：需要规划、分析、推理、组合多个步骤、跨信息源综合，或需要长上下文处理的请求；**或者用户在表达需求时叠加了自身感受/状态/场景/约束等"表达复杂度"信号——只要存在这类信号，整条 query 即视为 `complex=true`，不因为同一句中又给出了具体动作而降级**。

## 判断原则

- 不要因为某个标签天然复杂就直接设为 complex，需要看本次 query 的任务形态。
- 明确的一步控制、一步查询、一步导航通常是 `complex=false`。
- 需要制定计划、比较多方案、总结长文本、生成复杂内容、连续推理通常是 `complex=true`。
- 当复杂度边界和业务标签边界同时存在歧义时，先分别判断，再说明组合结果。

## 判断流程

进行复杂度判断时，按下面顺序推进，不要直接凭某个关键词下结论：

1. **确认输入形态**：当前 query 是单轮完整请求，还是依赖上一轮上下文的多轮续写；如果没有提供上一轮，不要假设存在上一轮。
2. **确认业务场景**：先粗判 query 涉及哪个领域，例如地图导航、文档总结、数据生成、问答、控制等；业务场景只用于选择专项条件表，不直接决定 complex。
3. **先看强 `complex=true` 信号**：是否需要规划、比较多方案、跨信息源综合、主观评价、外部事实验证、多个步骤组合。
4. **再看强 `complex=false` 信号**：是否是原子化的一步执行、一步查询、一步控制、单一可直接满足的导航或检索。
5. **读取专项条件表**：如果命中特定业务场景，继续读取该场景的专项条件表；专项条件优先于通用经验。
6. **处理多轮继承**：如果专项规则依赖上一轮结果，必须明确上一轮的任务和 complex 判断；没有上一轮结果时，不做继承。
7. **输出判断依据**：最终只输出 `complex=false` 或 `complex=true`，同时说明命中的通用条件或专项条件。

## 冲突处理

- 明确命中专项 `complex=true` 条件时，不要被“单 POI”“一步导航”“简单关键词”等泛化经验覆盖。
- 明确命中专项 `complex=false` 条件时，不要因为业务标签看起来复杂就升为 `complex=true`。
- 多轮场景里，当前轮是否继承上一轮复杂度，必须由专项条件表定义；不要默认所有多轮都继承。
- 无法确认上下文时，按当前 query 自身可见信息判断，并在结果里说明缺少上下文。

## 判断条件组织

| 条件层级 | 使用场景 | 读取文件 |
| --- | --- | --- |
| 通用条件 | 所有 query 的基础复杂度判断 | 本文件 |
| 地图导航专项条件 | query 涉及导航、路线规划、POI 搜索、终点附近、沿途、顺路、路线偏好、单 POI 筛选或多轮路线约束 | [地图导航复杂度判断](地图导航.md) |
| 垂域专项条件 | query 涉及车控、IoT 设备控制、生活服务、系统控制、应用控制、图片问答、媒体资源播放，并出现感受/场景/约束/跨应用/视觉推理/模糊资源推断等复杂样式 | [垂域专项复杂度判断](垂域专项.md) |
| 简单数学问题专项条件 | 业务标签判断为 `简单数学问题`，需要按公式计算、单位转换、汇率换算、称谓计算、数列计算等非复杂任务清单分流 | [简单数学问题复杂度判断](简单数学.md) |

使用方式：

1. 先用本文件做通用判断。
2. 如果命中专项场景，再读取对应专项条件表。
3. 最终仍只输出 `complex=false` 或 `complex=true`。

## 待维护问题

- 哪些标签默认偏 `complex=false`。
- 哪些标签在特定参数或上下文下转为 `complex=true`。
- complex 输出格式和最终标签表达如何组合。
