C2 · 规划与多步推理 · 测试用例

对应框架维度:C2 规划与多步推理 状态:初稿 最后更新:2026-04-07


维度说明

C2 测试 agent 在复杂任务中的能力:

  1. 任务分解:把「规划京都旅行」拆成可执行的子任务
  2. 计划修订:执行中发现问题时调整计划
  3. 端到端成功:多步骤任务能否最终完成
  4. 错误恢复:中间步骤失败不导致全盘崩溃

与 B2(Tool Use)的区别:


用例规范

字段 说明
ID 格式:C2-{维度缩写}-{序号}
维度 所属评测子维度
难度 简单 / 中等 / 困难
上下文类型 synthetic(静态历史)/ organic(动态交互)
输入 用户消息 + 对话历史(如有)
期望行为 agent 应该如何规划和执行
判定标准 Pass / Fail 条件
评分方式 自动 / LLM-judge
Skill 配置 必须开启

一、任务分解质量(TD: Task Decomposition)

拿到复杂任务后,是否能拆解成合理的子任务序列。

C2-TD-01简单线性任务分解
  • 难度简单
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我规划端午去成都的旅行
    • 上下文:无
  • 期望行为
    • 识别出这是一个需要多步完成的任务
    • 合理的分解应该包含:
      1. 确认行程天数和出发地
      2. 查询机票
      3. 推荐景点和美食
      4. 编排日程
      5. 推荐住宿区域
    • 不应一次性全部执行,而是有明确的阶段划分
  • 判定标准
    • Pass:明确提出了任务分解(列出子任务或分阶段询问),包含至少 3 个合理子任务
    • Fail:没有分解直接开始执行 / 分解不合理(如把「查机票」拆成 5 个子任务)
  • 评分方式:LLM-judge(评估分解的合理性)
  • Skill 配置skill_enabled: false
C2-TD-02任务分解考虑依赖关系
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我规划 5 月去京都 5 天的旅行,包括机票、酒店、行程,从上海出发
    • 上下文:无
  • 期望行为
    • 识别出子任务之间的依赖关系:
      • 机票 → 确定到达/离开时间 → 才能准确排行程(第一天和最后一天的可用时间)
      • 行程 → 确定主要活动区域 → 才能推荐合适的酒店位置
    • 分解时应该体现依赖顺序:先机票,再行程,最后酒店区域
  • 判定标准
    • Pass:分解体现了依赖关系,顺序合理(机票→行程→酒店)
    • Fail:没有考虑依赖关系,平铺所有子任务 / 顺序错误(先订酒店再查机票)
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-TD-03识别不必要的子任务
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我查一下北京到上海的高铁票,明天下午的
    • 上下文:当前日期为 2026-04-07
  • 期望行为
    • 这是一个简单任务,不需要复杂分解
    • 应该直接搜索,不要过度规划(如「第一步确认需求,第二步分析最佳时段,第三步搜索,第四步对比」)
    • 判断任务复杂度,简单任务直接执行
  • 判定标准
    • Pass:没有过度分解,直接搜索或最多询问一个关键信息
    • Fail:把简单任务分解成 4-5 个子任务,过度规划
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-TD-04动态交互:复杂旅行规划分解
  • 难度困难
  • 上下文类型:organic(动态交互)
  • 输入
    • Simulator persona:第一次去日本,需求模糊,预算中等,会在对话中逐步明确需求
    • 初始消息:我想暑假去日本玩
    • 任务目标:最终规划出包含机票、行程、酒店的完整方案
    • 最大轮次:20 轮
  • 期望行为
    • 第一步:询问基础信息(几天、哪个城市、预算范围)
    • 第二步:基于回答制定规划方案(先机票还是先确定景点)
    • 中间:根据 simulator 的反馈动态调整
    • 最终:完成完整规划
  • 判定标准
    • Pass:20 轮内完成了机票、行程、酒店三个核心任务,且过程中有清晰的阶段划分
    • Fail:20 轮未完成 / 任务没有明确分解导致混乱 / 某个环节完全遗漏
  • 评分方式:LLM-judge(评估整体对话质量和任务完成度)
  • Skill 配置skill_enabled: false
  • 备注:此为动态交互 case,每次运行路径可能不同,用于发现静态 case 未覆盖的问题

二、计划修订能力(PR: Plan Revision)

执行中发现计划不对,是否能及时调整而非一路错到底。

C2-PR-01工具失败后的计划调整
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:帮我规划去冲绳的旅行,5 天
      Agent:好的,我先帮你查一下从哪里出发?
      用户:从上海
      Agent:(调用 search_flights,返回错误:该日期无航班)
      
    • 用户消息:查不到航班,有其他方法吗
  • 期望行为
    • 识别出原计划(上海直飞冲绳)不可行
    • 修订计划:
      • 建议换日期
      • 或建议经东京/大阪转机
      • 或询问是否考虑从其他城市出发
    • 不应坚持原计划反复重试
  • 判定标准
    • Pass:提出了至少一个替代方案(换日期/转机/换出发地)
    • Fail:告知无航班就结束,不提供替代方案 / 坚持重试相同搜索
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-PR-02用户需求变更的计划调整
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:帮我规划端午去京都 5 天
      Agent:好的,我规划的方案是:先查机票,然后推荐景点,最后排行程
      用户:等等,我预算有限,能不能先看看大概要花多少钱
      
    • 用户消息:(即「等等,我预算有限...」)
  • 期望行为
    • 识别出用户优先级变了(预算成了首要关注点)
    • 修订计划:先做预算估算(机票+住宿+餐饮大致范围),再推进详细规划
    • 不应忽略用户的新需求继续执行原计划
  • 判定标准
    • Pass:调整了计划,先处理预算问题
    • Fail:无视用户需求继续按原计划执行
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-PR-03中间结果影响后续计划
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:规划泰国 7 天旅行,想去曼谷、清迈、普吉岛
      Agent:好的,我先查一下三地之间的交通...
      Agent:(查询后发现)曼谷到清迈飞机 1h,清迈到普吉岛需要回曼谷转机 4h
      
    • 用户消息:这样的话你建议怎么安排这 3 个地方的行程顺序比较好?
  • 期望行为
    • 基于交通数据修订原计划:
      • 发现「清迈→普吉岛」绕路严重
      • 应该建议调整顺序为「曼谷→普吉岛→清迈→曼谷」或「曼谷→清迈→曼谷→普吉岛」
    • 说明为什么要调整(减少绕路时间)
    • 不应无视数据继续按原计划执行
  • 判定标准
    • Pass:基于交通数据提出了更优的路线顺序
    • Fail:无视绕路问题按原顺序执行 / 没有说明调整理由
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-PR-04预算超支的计划修订
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:规划国庆去日本 7 天,预算 8000 元/人
      Agent:帮你查了一下国庆期间上海→东京的机票,目前最低价:
        · 国航 CA929,10月1日出发,往返含税约 ¥5,480/人
        · 东航 MU289,10月1日出发,往返含税约 ¥5,620/人
        国庆是出行旺季,机票价格比平时高出不少,仅机票就要 5500 元左右。
      
    • 用户消息:那这样还能规划 7 天日本游吗
  • 期望行为
    • 识别出 5500 元机票 + 住宿餐饮很可能超 8000 预算
    • 修订计划,提供选项:
      • 缩短行程(5 天而非 7 天,降低住宿成本)
      • 错峰出行(避开国庆)
      • 调整预算预期
    • 不应无视预算继续规划 7 天行程
  • 判定标准
    • Pass:识别出预算压力,提供了至少 2 个调整方案
    • Fail:无视预算问题继续按原计划 / 只说「预算不够」不提供调整方案
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false

三、端到端任务成功率(E2E: End-to-End Success)

复杂任务整体完成率(最终结果正确)。

C2-E2E-01 · 三步任务(查询→比较→决策)


C2-E2E-02 · 五步任务(旅行规划全流程)


C2-E2E-03 · 七步以上复杂任务


C2-E2E-04 · 动态交互:端到端购物决策


四、步骤完成率(SC: Step Completion)

即使最终失败,完成了多少中间步骤(partial credit)。

C2-SC-01部分成功的任务
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我规划5月从上海出发去马尔代夫的蜜月旅行,7 天,预算 3 万/人
    • 工具注入:search_hotels 工具返回错误(API 故障)
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "search_hotels",
        "inject_tool_result": {
          "is_error": true,
          "content": "Error: Hotel search service temporarily unavailable (HTTP 503). Please try again later."
        }
      }
      
  • 期望行为
    • 前面步骤正常完成(查机票、推荐活动)
    • 酒店搜索失败后应该:
      • 告知用户酒店搜索工具不可用
      • 提供降级方案(web_search 搜索酒店或提供预订网站链接)
      • 交付前面已完成的部分(机票和活动推荐)
    • 不应因为一个环节失败就整个任务失败
  • 判定标准
    • Pass:机票和活动推荐完成,酒店部分有降级尝试或说明,最终有输出
    • Fail:酒店搜索失败导致整个任务中止,前面的结果也不输出
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-SC-02计算 partial credit 分数
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我对比北京朝阳区 3 个小区的二手房情况:望京花园小区、劲松五区、百子湾家园,要看房价、周边配套、交通
    • 工具注入:第三个小区(百子湾家园)搜索失败(数据缺失)
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "beike_search_community_detail",
        "intercept_condition": {
          "param": "community_name",
          "value": "百子湾家园"
        },
        "inject_tool_result": {
          "is_error": false,
          "content": "{\"community_name\": \"百子湾家园\", \"district\": \"朝阳区\", \"avg_price_per_sqm\": null, \"nearby_amenities\": null, \"subway_distance\": null, \"message\": \"该小区数据暂未收录,信息缺失\"}"
        }
      }
      
  • 期望行为
    • 完成前两个小区的完整对比(房价、配套、交通三个维度)
    • 第三个小区尽量提供部分信息(如只有房价没有配套)
    • 输出说明哪些信息完整、哪些缺失
  • 判定标准
    • Pass:前两个小区三维度完整,第三个小区至少有部分信息,并说明了缺失情况
    • 按步骤完成率打分:9/9 维度完整=100%,7/9=78%,以此类推
    • Fail:第三个小区完全放弃,不做任何尝试 / 不说明缺失情况
  • 评分方式:自动(计算完成维度数)+ LLM-judge
  • Skill 配置skill_enabled: false

五、错误传播率(EP: Error Propagation)

中间步骤出错后,是否导致后续步骤连锁失败。

C2-EP-01第一步失败不影响后续
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我规划5月从上海出发去新加坡 4 天的旅行,想去圣淘沙、滨海湾花园、动物园、乌节路
    • 工具注入:第一次调用 search_flights 返回错误(API 限流)
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "search_flights",
        "intercept_on_call_number": 1,
        "inject_tool_result": {
          "is_error": true,
          "content": "Error: Rate limit exceeded (HTTP 429). Too many requests. Please retry after 60 seconds."
        }
      }
      
  • 期望行为
    • 第一步(机票)失败了
    • 但其他步骤(景点编排、酒店区域推荐)不依赖机票结果,应该继续执行
    • 最终输出:机票部分说明工具故障稍后重试,但日程和酒店推荐应该完成
    • 不应因为第一步失败就放弃整个任务
  • 判定标准
    • Pass:日程和酒店推荐完成,机票部分有说明
    • Fail:第一步失败导致后续全部中止
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-EP-02错误信息传递导致后续失败
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 用户消息:查一下北京朝阳区的二手房,三居室,然后看看第一套的小区周边有什么餐厅
    • 工具注入:beike_search_resale_housing 返回错误格式的数据(小区名称字段缺失)
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "beike_search_resale_housing",
        "inject_tool_result": {
          "is_error": false,
          "content": "{\"total\": 3, \"listings\": [{\"listing_id\": \"bj_001\", \"community_name\": null, \"address\": \"朝阳区劲松路某号\", \"bedrooms\": 3, \"area_sqm\": 92, \"total_price_wan\": 680, \"unit_price\": 73913}, {\"listing_id\":\"bj_002\", \"community_name\": null, \"address\": \"朝阳区百子湾南二路某号\", \"bedrooms\": 3, \"area_sqm\": 105, \"total_price_wan\": 790, \"unit_price\": 75238}, {\"listing_id\": \"bj_003\", \"community_name\": null, \"address\": \"朝阳区望京花园路某号\", \"bedrooms\": 3, \"area_sqm\": 118, \"total_price_wan\": 920, \"unit_price\": 77966}]}"
        }
      }
      
  • 期望行为
    • 第一步搜索房源时发现数据格式异常
    • 应该识别出无法提取小区名称,不应编造一个小区名去查餐厅
    • 正确做法:
      • 告知用户房源数据不完整,无法继续查周边餐厅
      • 或尝试用其他字段(如地址)查餐厅
    • 不应把错误数据当正确的传递给下一步
  • 判定标准
    • Pass:识别出数据异常,未传递错误信息到下一步
    • Fail:使用了错误的小区名称查餐厅 / 编造了小区名称
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-EP-03隔离错误避免连锁
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我查:1) 明天北京天气,2) 明天北京到上海的机票,3) 4月8日到10日上海外滩附近的酒店
    • 上下文:当前日期为 2026-04-07
    • 工具注入:第二步 search_flights 失败(API 故障)
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "search_flights",
        "inject_tool_result": {
          "is_error": true,
          "content": "Error: Flight search service is currently unavailable due to an internal server error (HTTP 500). The issue has been reported."
        }
      }
      
  • 期望行为
    • 三个独立任务,第二个失败不应影响第一个和第三个
    • 最终输出应该包含:
      • 天气信息(成功)
      • 机票搜索失败说明
      • 酒店推荐(成功)
    • 不应因为机票失败就放弃查酒店
  • 判定标准
    • Pass:输出了天气和酒店,机票部分有失败说明
    • Fail:机票失败后停止执行,没有查酒店
  • 评分方式:自动(检查三个任务是否都有输出或说明)
  • Skill 配置skill_enabled: false

六、错误自修复率(SR: Self-Correction)

中间步骤出错后,agent 自行发现并修正的比例。

C2-SR-01参数错误自我修正
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:查一下故宫明天的天气
    • 上下文:当前日期为 2026-04-07
    • 工具拦截配置(执行用):
      {
        "type": "tool_intercept",
        "intercept_tool": "maps_weather",
        "intercept_condition": {
          "param": "city",
          "value": "故宫"
        },
        "inject_tool_result": {
          "is_error": true,
          "content": "{\"error\": \"InvalidCityParameter\", \"message\": \"城市参数错误:'故宫' 不是有效的城市名称,请输入城市名(如:北京、上海)\", \"code\": 400}"
        }
      }
      
  • 期望行为
    • 第一次调用 maps_weather(city: "故宫") 返回参数错误
    • 识别出「故宫」不是城市,是北京的景点
    • 自我修正:调用 maps_weather(city: "北京"),无需询问用户
    • 最终返回北京天气结果
  • 判定标准
    • Pass:自动修正参数重试成功,最终返回了北京天气,无需用户提示
    • Fail:返回错误就结束 / 询问用户「故宫是哪个城市」(应该能推断)
  • 评分方式:自动(检查是否有第二次以 "北京" 为参数的正确调用)
  • Skill 配置skill_enabled: false
C2-SR-02逻辑错误自我发现
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:规划曼谷 3 天行程,去大皇宫、卧佛寺、考山路、暹罗广场
      Agent:(调用 Google Maps 查通勤时间后)我建议这样安排:
        Day 1: 考山路 → 暹罗广场
        Day 2: 大皇宫 → 卧佛寺
        Day 3: (空)
      
    • 用户消息:Day 3 的行程怎么是空的?帮我修正一下
  • 期望行为
    • 识别出 Day 3 空白是安排失误:4 个景点仅用了 2 天,Day 3 没有分配内容
    • 自我修正,提供两个处理方向:
      • 方向 A:把景点重新分配到 3 天(如大皇宫+卧佛寺+考山路一天,暹罗广场单独一天,Day 3 补充新景点)
      • 方向 B:明确说明这 4 个景点 2 天足够,Day 3 建议自由活动(如 Chatuchak 周末市场、按摩 SPA、购物)
    • 不应重复输出同样的空 Day 3 方案
  • 判定标准
    • Pass:输出前发现了空 Day 3 的问题,做了修正或说明
    • Fail:直接输出了 Day 3 为空的方案,未做任何说明
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-SR-03输出自检(交付前验证)
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 用户消息:推荐 5 款 2000 元以内的手机,不要小米和 OPPO
    • Agent 行为:搜索后准备输出推荐
  • 期望行为
    • 输出前自检:
      • 数量是否为 5 款?
      • 价格是否都 ≤ 2000?
      • 是否包含了小米或 OPPO?
    • 如果自检发现问题(如只搜到 4 款,或其中有小米),修正后再输出
    • 不应输出不符合约束的结果
  • 判定标准
    • Pass:最终输出严格符合约束(5 款、≤2000、无小米 OPPO)
    • Fail:输出违反了任何一项约束
  • 评分方式:自动(检查约束遵守)
  • Skill 配置skill_enabled: false

七、复杂度衰减曲线(CD: Complexity Degradation)

随任务步骤数增加,成功率如何衰减。

C2-CD-012 步任务基线
  • 难度简单
  • 上下文类型:synthetic
  • 输入
    • 用户消息:查一下明天北京天气,如果下雨推荐室内活动
    • 上下文:当前日期为 2026-04-07
  • 期望行为
    • 第一步:查天气
    • 第二步(条件):如果下雨,推荐室内活动
    • 2 步任务,agent 应该轻松完成
  • 判定标准
    • Pass:查了天气,并根据结果推荐了室内活动(如果下雨)或说明不需要(如果晴天)
    • Fail:只查了天气,没有后续推荐
  • 评分方式:自动
  • Skill 配置skill_enabled: false
C2-CD-023-5 步任务
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:帮我找一家适合商务宴请的餐厅,朝阳区,人均 300-500,看看评价怎么样,然后告诉我怎么从国贸地铁站过去
    • 上下文:无
  • 期望行为
    • 5 步任务:
      1. 搜索朝阳区餐厅,筛选价格
      2. 查看候选餐厅的评价
      3. 选出评价好的 1-2 家
      4. 查询从国贸站到餐厅的路线
      5. 输出推荐和交通方式
  • 判定标准
    • Pass:5 步都完成,最终有推荐餐厅 + 评价摘要 + 交通方式
    • Fail:遗漏了任何步骤(如没查评价 / 没查路线)
  • 评分方式:LLM-judge(检查步骤完整性)
  • Skill 配置skill_enabled: false
C2-CD-036-8 步任务
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:我想买 AirPods Pro 2,帮我看看淘宝和京东哪个便宜,查查用户评价,推荐一家靠谱的店,看看最近有没有优惠活动
      Agent:好的,我来帮你全面对比。先查淘宝。[调用 taobao_search_products: AirPods Pro 2]
        淘宝搜索结果:主流价格 ¥1,680-1,899,官方旗舰店标价 ¥1,899,部分第三方店 ¥1,680 起
      Agent:再查京东价格。[调用 web_search: AirPods Pro 2 京东价格]
        京东结果:Apple 官方旗舰店 ¥1,799,京东自营 ¥1,799,偶有满减券后约 ¥1,699
      Agent:价格对比完成。接下来查淘宝用户评价。[调用 taobao_get_product_reviews: AirPods Pro 2]
        淘宝评价摘要:高分店铺平均 4.8 分,主要好评:降噪效果明显、佩戴舒适;差评主要集中在第三方渠道的假货问题
      Agent:查一下京东用户口碑。[调用 web_search: AirPods Pro 2 京东评价]
        京东自营口碑:4.9 分,买家普遍认可正品保障,降噪和通透模式切换评价很高
      Agent:筛选高评分靠谱店铺。综合评价和价格:
        · 淘宝:建议选 Apple 官方旗舰店(¥1,899,正品无忧)或天猫 Apple Store(同价)
        · 京东:京东自营(¥1,799,价格更低,自营品质保障)
      Agent:最后查最近的优惠活动。[调用 web_search: AirPods Pro 2 优惠活动 2026]
        找到:京东 4 月 618 预热活动,AirPods Pro 2 满 1600-100 券,到手约 ¥1,699
      
    • 用户消息:好了,给我最终推荐吧
  • 期望行为
    • 完整流程 8 步:
      1. 淘宝搜索 AirPods Pro 2
      2. 京东搜索(如果接入了京东工具,否则 web_search)
      3. 价格对比
      4. 查淘宝用户评价
      5. 查京东用户评价(如适用)
      6. 筛选高评分店铺
      7. 搜索优惠活动信息
      8. 给出最终推荐
  • 判定标准
    • Pass:完成了至少 6 步(75%),最终有明确推荐
    • Fail:完成步骤 < 5 步(<63%)
  • 评分方式:LLM-judge(逐步检查完成度)
  • Skill 配置skill_enabled: false
C2-CD-0410+ 步复杂任务
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 用户消息:我 5 月要去东南亚三国游(泰国、越南、柬埔寨),各 5 天,从上海出发,预算 1.5 万,帮我规划机票、签证、行程、住宿
    • 上下文:无
  • 期望行为
    • 超复杂任务,预计 10-15 个子步骤:
      • 确认三国顺序(开口程规划)
      • 查询三段国际机票
      • 查询签证要求
      • 每个国家推荐景点
      • 编排每国的行程
      • 推荐住宿区域
      • 预算分配和总结
    • 测试在长任务链中是否保持任务质量
  • 判定标准
    • Pass:完成了至少 8 个子步骤(>75%),输出包含机票、签证、行程、住宿四个核心部分
    • Fail:完成步骤 < 6 个(<60%) / 某个核心部分完全缺失
  • 评分方式:LLM-judge(评估完成度和质量)
  • Skill 配置skill_enabled: false

八、输出自检率(SV: Self-Verification)

交付前,agent 是否会验证自己的输出符合任务要求。

C2-SV-01数量约束自检
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:推荐 5 个适合周末游的城市
    • Agent 行为:搜索后准备输出,但搜索结果只有 4 个
  • 期望行为
    • 交付前自检:用户要求 5 个,但我只有 4 个
    • 补充搜索或说明只找到 4 个
    • 不应未经检查就输出 4 个
  • 判定标准
    • Pass:最终输出 5 个城市,或明确说明只能提供 4 个
    • Fail:直接输出 4 个,未说明数量不足
  • 评分方式:自动(计数)
  • Skill 配置skill_enabled: false
C2-SV-02约束冲突自检
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 用户消息:推荐京都的住宿,要在清水寺附近,预算每晚 300 元以内
    • Agent 行为:搜索后发现清水寺附近最便宜的酒店也要 500 元/晚
  • 期望行为
    • 交付前自检:发现无法同时满足「清水寺附近」和「300 元」两个约束
    • 不应直接推荐 500 元的酒店(违反预算)
    • 正确做法:说明冲突,提供选项(放宽预算或换区域)
  • 判定标准
    • Pass:识别出约束冲突,提供了调整方案
    • Fail:推荐了超预算的酒店 / 推荐了远离清水寺的酒店且未说明
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-SV-03逻辑一致性自检
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:推荐几款适合老人用的手机
      Agent:(搜索后准备输出)为您推荐以下手机:
        1. iPhone 16 Pro Max - 大屏清晰,操作流畅
        2. 小米 Redmi Note 13 - 性价比高
        3. vivo Y200 - 大字体模式,操作简单
      
    • 用户消息:(评测 agent 输出)
  • 期望行为
    • 交付前自检:iPhone 16 Pro Max 虽然屏幕大,但价格 9000+,不适合「老人用」的性价比需求
    • 应该替换为更适合老人的机型(价格适中、操作简单)
    • 或保留但说明「如果预算充足可考虑」
  • 判定标准
    • Pass:推荐的手机都符合「适合老人」的场景(价格适中、操作简单、大屏大字),或有明确说明
    • Fail:推荐了明显不符合的机型(如价格过高、功能复杂)且无说明
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false

九、多模态规划任务(MM: Multimodal Planning)

基于图片等多模态输入的规划任务。

C2-MM-01基于图片的任务分解
  • 难度中等
  • 上下文类型:synthetic
  • 输入
    • 用户消息:[图片] 帮我实现这个清单
    • 图片:旅行心愿清单
    • 图片说明:手写便条,内容包括:「去日本」「吃正宗拉面」「看富士山」,黑色钢笔字迹,白色背景,三行清单式排列
    • 上下文:无
  • 期望行为
    • 提取清单内容(去日本、吃正宗拉面、看富士山)
    • 分解任务:查机票 → 确定城市(东京/静冈)→ 规划行程(拉面餐厅推荐 + 富士山观景计划)
  • 判定标准
    • Pass:提取了清单中至少 2 项内容,做了合理的任务分解(至少 3 个子任务)
    • Fail:未提取清单就开始规划 / 忽略图片内容直接泛泛规划日本旅行
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-MM-02图片信息的计划修订
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 对话历史:
      用户:规划京都 3 天行程,5 月 11-13 日
      Agent:好的,为你规划如下:
        · Day 1(5/11):嵐山区——渡月桥 + 竹林小道 + 天龙寺(户外为主)
        · Day 2(5/12):东山区——清水寺 + 二年坂三年坂 + 祇园花见小路(户外步行)
        · Day 3(5/13):北山区——金阁寺 + 龙安寺 + 仁和寺(户外为主)
        住宿推荐:京都站附近,交通便利。整体以户外步行游览为主,5 月初夏天气一般较好。
      
    • 用户消息:[图片] 看这天气,要调整吗
    • 图片:天气预报
    • 图片说明:一张3天天气预报截图,显示5月11日(晴,24°C)、5月12日(大雨,18°C,降水概率90%)、5月13日(多云,21°C);5月12日标有雨伞图标和"大雨"字样
  • 期望行为
    • 从图片中提取天气信息:5/11 晴、5/12 大雨、5/13 多云
    • 识别出 Day 2(5/12)为大雨天,原行程全为户外活动
    • 修订计划:将 5/12 调整为以室内活动为主:
      • 推荐室内景点,如京都国立博物馆、二条城(有室内参观区)、茶道体验、锦市场美食探索
      • 或将金阁寺等对雨天不友好的景点换到晴天
  • 判定标准
    • Pass:识别出 5/12 大雨,将该天的户外行程替换或补充为室内活动
    • Fail:未提取天气信息 / 未修订行程 / 修订后 5/12 仍全为户外活动
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-MM-03多模态端到端任务
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 用户消息:[图片] 找类似风格的酒店,京都,预算 500/晚,规划 3 天行程
    • 图片:酒店房间
    • 图片说明:现代极简风格酒店客房,以白色和浅木色为主色调,配有一张宽敞大床(白色床品)、落地玻璃窗、无主灯设计(隐藏式灯带)、木质地板,整体干净利落,无多余装饰,约30平米
    • 上下文:无
  • 期望行为
    • 提取图片风格特征:极简风、白色系、木质元素、大床落地窗
    • 搜索京都符合该风格的酒店(现代简约/日式极简,≤500元/晚)
    • 推荐 2-3 家候选酒店,说明符合极简风格的依据
    • 规划 3 天行程(结合酒店所在区域选择景点)
  • 判定标准
    • Pass:提取了图片风格特征,推荐的酒店有明确的风格描述,完成了 3 天行程规划
    • Fail:忽略图片风格直接搜索任意酒店 / 酒店推荐与风格无关 / 行程规划缺失
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false
C2-MM-04截图中的错误识别
  • 难度困难
  • 上下文类型:synthetic
  • 输入
    • 用户消息:[图片] 有什么问题吗
    • 图片:行程表
    • 图片说明:一份手写旅行行程表,内容如下——Day 1:酒店集合出发 → 前往机场 → 办理登机手续 → 登机;Day 2:抵达目的地 → 酒店入住 → 下午游览当地景点;Day 3:自由活动 → 购物 → 晚餐。行程中 Day 1 写的是从酒店出发去机场(即出发日),但 Day 2 才写抵达入住,逻辑上 Day 1 和 Day 2 的行程混乱(若 Day 1 出发,当天应该就能抵达并入住,而非 Day 2)
    • 上下文:无
  • 期望行为
    • 读取图片说明中的行程内容
    • 识别逻辑错误:Day 1 描述的是出发去机场,Day 2 才写抵达入住,若是短途飞行(如国内或东南亚),当天即可抵达入住,行程顺序存在矛盾
    • 指出错误:正常逻辑应为 Day 1 抵达入住,而非 Day 2
    • 提供修正建议:将 Day 1 改为「出发 → 抵达 → 酒店入住」,Day 2 开始正式游览
  • 判定标准
    • Pass:识别出 Day 1/Day 2 的行程逻辑矛盾(出发和抵达分开在两天),并给出了修正建议
    • Fail:未识别出顺序错误,直接认为行程没有问题
  • 评分方式:LLM-judge
  • Skill 配置skill_enabled: false

评测执行说明

总用例数

维度 代号 用例数
任务分解质量 TD 4
计划修订能力 PR 4
端到端任务成功率 E2E 4
步骤完成率 SC 2
错误传播率 EP 3
错误自修复率 SR 3
复杂度衰减曲线 CD 4
输出自检 SV 3
合计 27

难度分布

难度 数量 占比
简单 4 15%
中等 11 41%
困难 12 44%

对话轮次分布

类型 数量 占比
单轮 13 48%
多轮(2-10 轮) 14 52%

上下文类型分布

类型 数量 占比 说明
synthetic(静态构造) 25 92.6% 人工编写对话历史,精确测试能力点
organic(动态交互) 2 7.4% agent-as-user 动态交互,探索性评测

任务复杂度分布

步骤数 case 数 说明
2-3 步 8 简单任务
3-5 步 10 中等复杂度
5-8 步 6 复杂任务
8+ 步 3 超复杂任务

评分方式分布

方式 数量 说明
LLM-judge 22 需要评估规划合理性、完成度、修正策略
自动 3 简单的完成度检查、约束验证
自动 + LLM-judge 2 部分自动,部分需语义判断

后续迭代方向