back
loading skill details...
行程规划助手,支持往返/单程行程规划。触发词:规划行程、高铁查询、航班查询、机场周边、时间安排、出行方案、当天往返。 涵盖:航班/高铁时刻查询、中转方案、时间约束筛选、详细时间线生成。
--- name: trip-planner version: 1.0.0 description: > 行程规划助手,支持往返/单程行程规划。触发词:规划行程、高铁查询、航班查询、机场周边、时间安排、出行方案、当天往返。 涵盖:航班/高铁时刻查询、中转方案、时间约束筛选、详细时间线生成。 license: MIT --- # Trip Planner Skill 行程规划助手,支持往返行程(当天/隔天/多天)和单程行程规划。 ## 前置条件 本技能使用DuMate自带的携程connector查询交通信息,无需额外安装依赖。 **可选配置**: - `BMAP_WEBAPI_AK` - 百度地图API密钥,用于驾车时间查询(如未配置将使用估算值) ## 可用工具 | 工具 | 功能 | 数据源 | |------|------|--------| | `___query_flight` | 查询航班 | 携程 | | `___query_train` | 查询高铁/火车 | 携程 | | `___query_hotel` | 查询酒店 | 携程 | | `___query_ticket` | 查询景点门票 | 携程 | ## 触发场景 用户需要规划行程,涉及飞机、高铁、驾车等交通方式的选择和组合。 ## 行程类型 - **往返**:可能是当天往返,也可能是隔天或多天 - **单程**:按"可以出发的时间"或"需要到达的时间"推算 ## 核心规则 ### 一、硬性约束(必须满足) - 明确了出发时间 → 不能比那个时间更早出发 - 明确了到达时间 → 不能比那个时间更晚到达 - 停留时间 → 必须满足 - 说了"当天往返" → 必须找当天往返的方案(定义:早上6:30可以从出发地出发,晚上23:00前回到出发地) ### 二、软性约束(尽量满足) - 用户说"早去早回" → 在满足硬性约束下尽量早出发、早返回 ### 三、时间预留 - 国内航班:提前1小时到机场 - 高铁:提前30分钟到站 - 中转:预留足够时间(建议30分钟以上) ### 四、交通方式选择 - 优先直达 - 无直达时,考虑出发地或目的地周边城市的机场/火车站 - 选择标准:总时长最短(从最初出发地到最终目的地) ### 五、驾车限制 - 驾车时间不超过2.5小时 - 例外情况:没有其他交通方式可选,或替代方案(飞机/高铁)比驾车多出1小时以上 ### 六、不考虑价格因素 时间最关键,不因价格差异改变推荐方案。 ## 航班查询规则(携程) ### 1. 打开页面 - 访问携程航班搜索页面 - 等待页面加载完成(sleep 3-5秒) ### 2. 按时间排序 - 点击"起飞时间早-晚"排序 - 便于后续筛选 ### 3. 滚动加载完整数据(关键!) 携程等网站使用懒加载,必须滚动到底部才能获取所有航班。 **操作步骤**: 1. 获取初始快照 2. 滚动页面:`playwright-cli mousewheel 0 500` 3. 等待2秒让数据加载 4. 获取新快照 5. 重复步骤2-4,直到页面不再加载新内容 **判断是否加载完成**: - 快照中的航班数量不再增加 - 页面底部出现"没有更多"提示 - 滚动后快照内容与上次相同 **常见错误**: - 只获取第一屏数据就停止 → 遗漏后面的航班 - 假设数据已完整 → 实际还有更多航班未加载 **实际案例**: - 查询烟台→北京返程航班时,第一屏只显示到14:00的航班 - 继续滚动后,发现19:30起飞的航班(这才是当天往返的关键) ### 4. 数据提取 - 提取所有直飞航班 - 区分虹桥机场(SHA)和浦东机场(PVG) - 区分直飞、经停、中转 - 标注次日到达(+1) **携程connector数据解析规则**: 使用 `___query_flight` 工具时,返回的 `routeList` 中每个 `route` 包含 `flights` 数组: - **直飞**:`flights` 数组长度为1,且 `aport.name` 为目标机场 - **经停**:`flights` 数组长度为1,但 `stops` 不为空 - **中转**:`flights` 数组长度大于1 筛选直飞航班时,必须同时满足: 1. `len(flights) == 1` 2. `flights[0].aport.name == 目标机场名称` **错误示例**:只按 `len(flights) == 1` 筛选,未检查到达机场,导致遗漏部分直飞航班 ### 5. 数据完整性验证 - 提取后,对比"应该有多少航班"vs"实际提取了多少" - 关键决策前,抽查几个航班确认数据准确 - **验证方法**:用户提及某个航班时,立即在原始数据中搜索确认是否存在 ### 6. 出发机场优先 - 优先选择离用户出发地最近的机场 - 例如:用户在浦东,优先选浦东机场出发的航班 ## 高铁查询规则(12306) ### 1. 查询实时数据 - 使用浏览器自动化访问12306 ### 2. 未开售处理 - 如目标日期未开售,查询历史同期/相近日期的时刻表作为参考 - 标注"参考历史时刻表,实际以开售后为准" ## 穷尽周边机场 ### 触发条件 - 目的地城市进出港航班较少(如小城市、县城) - 目的地没有机场或机场航班选择有限 ### 操作方法 1. 确定目的地具体位置 2. 在地图上搜索周边200-300km范围内的所有机场 3. 不能凭印象列举,要系统性地排查 4. 逐一查询每个机场的航班 ### 优先级 - 先查最近的机场 - 航班选择少时,再查周边更远的机场 ### 示例 - 郎酒庄园(古蔺县二郎镇)→ 周边机场:泸州、遵义、重庆、贵阳、宜宾、昭通 - 龙口(山东烟台下辖县级市)→ 周边机场:烟台、青岛、潍坊 ## 综合排序 - 不是按价格排序,而是按"总耗时"排序 - 总耗时 = 出发地到机场/车站时间 + 候机/候车时间 + 航班/高铁时间 + 机场/车站到目的地时间 - 输出时只输出筛选后的方案,不输出完整列表 ## 驾车时间查询 - 使用百度地图 webapi(需配置 `BMAP_WEBAPI_AK` 环境变量) - 如未配置,可使用估算值并标注 ## 工作流程 ### 1. 明确需求 - 出发地、目的地 - 出发日期 - 行程类型(往返/单程) - 时间约束(出发时间/到达时间/停留时间) - 其他偏好(如"早去早回") ### 2. 确定目的地位置 - 查询目的地具体位置 - 搜索周边机场(200-300km范围) ### 3. 调研交通方式 - 查询各机场航班时刻表 - 查询高铁时刻表 - 查询驾车时间(如适用) - 查询目的地到机场/车站的交通时间 ### 4. 生成方案 - 根据约束条件筛选可行方案 - 计算每个方案的总耗时 - 按总耗时排序 ### 5. 呈现方案 - 方案对比表 - 最优方案详细时间线 - 注意事项 ## 输出格式 ### 方案对比表 | 方案 | 出发时间 | 到达时间 | 总耗时 | 交通方式 | 备注 | |------|----------|----------|--------|----------|------| | 方案A | XX:XX | XX:XX | X小时 | XX→XX→XX | 简要说明 | | 方案B | XX:XX | XX:XX | X小时 | XX→XX→XX | 简要说明 | ### 最优方案详细时间线 ``` 06:30-08:10 北京首都机场 值机、安检、候机 08:10-09:35 北京首都机场 → 烟台蓬莱机场 乘坐SC5069航班 09:35-10:30 烟台机场 → 龙口 打车 ... ``` ### 注意事项 - 航班号、航站楼信息 - 中转交通建议 - 到达时间较晚时的提醒 ### 输出前自洽性检查(必须!) 时间线输出前,逐行检查: **1. 时间段长度与耗时说明一致** - 例:写"05:50-06:08"则时长为18分钟,不能写"地铁30分钟" - 例:写"地铁30分钟"则时间段必须跨越30分钟 **2. 每个交通节点预留候车/候机时间** - 高铁发车前必须预留30分钟到站检票 - 航班起飞前必须预留1小时到机场值机 - 例:高铁14:09发车 → 最晚13:39到站 → 出发时间往前推 - 错误示例:写"12:30-14:09 打车到威海站"然后"14:09高铁发车"——没有预留候车时间 ## 常见错误 1. **只查去程不查返程**:导致返程时间不合适 2. **忽略机场/车站到目的地的交通时间**:导致实际停留时间不足 3. **不考虑值机时间**:导致赶不上航班 4. **不区分机场/车站**:导致用户跑错地方 5. **违反硬性约束**:推荐了不满足用户时间要求的方案 6. **航班数据提取不完整**:只获取了部分航班,遗漏更优方案 7. **凭印象列举周边机场**:遗漏更近的机场 8. **只按价格排序**:忽略了出发机场、总耗时等因素 9. **时间线自相矛盾**:时间段长度与耗时说明不一致(如写"05:50-06:08"但说明"地铁30分钟") 10. **数据解析错误**:携程connector返回了完整数据,但解析时筛选条件不正确,遗漏了部分航班(如只按 `len(flights)==1` 筛选,未检查到达机场是否为目标机场) ## 示例 **用户需求**:4月25日从上海浦东去泸州郎酒庄园,9:30后出发 **目的地位置分析**: - 郎酒庄园位于泸州市古蔺县二郎镇,地处川黔交界 - 周边机场:泸州云龙(100km)、遵义新舟(150km)、重庆江北(200km)、贵阳龙洞堡(280km) **调研结果**: - 上海→泸州:仅1班直飞(MF8857,16:25-19:30,虹桥T1) - 上海→重庆:多班航班,CA4576(12:05-14:55,浦东T2)较优 - 上海→遵义:需查询 - 上海→贵阳:多班航班 **方案对比**: | 方案 | 出发时间 | 到达庄园时间 | 总耗时 | 航班价格 | 驾车距离 | |------|----------|-------------|--------|---------|---------| | A(泸州直飞) | 14:25 | 21:30 | 约7小时 | ¥740 | 100km | | B(重庆转车) | 10:00 | 18:30 | 约7小时 | ¥900 | 200km | **推荐**:方案B,从浦东出发更方便,到达时间更早。
don't have the plugin yet? install it then click "run inline in claude" again.