端到端旅行计划制定助手。从"我想带家人去XX玩"一句模糊需求出发,经过需求收集→MCP驱动的方案生成(携程问道+高德)→决策辅助→订房(可跳过)→精美HTML路书交付,全流程覆盖。支持MCP缺失时WebSearch降级兜底。
Travel Planner — 旅行计划制定助手
功能概述
Travel Planner — 旅行计划制定助手是一项面向实际任务的技能,主要用于用户说出以下任一类意图时自动加载本 skill:;"帮我规划旅行""我想去 XX 玩""做个路书""亲子游怎么安排";
核心要点
- "带家人去 XX""自驾游路线""XX 日游";
- 给了目的地和时间但没说清楚需求 → 自动进入 Phase 1;
- 核心流程(6 Phase);
使用与执行
Phase 1:需求收集 🎯 弹窗式交互;目标 :通过结构化弹窗一次性收齐所有。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
结果检查与注意事项
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Travel Planner — 旅行计划制定助手
触发条件
用户说出以下任一类意图时自动加载本 skill:
- "帮我规划旅行""我想去 XX 玩""做个路书""亲子游怎么安排"
- "带家人去 XX""自驾游路线""XX 日游"
- 给了目的地和时间但没说清楚需求 → 自动进入 Phase 1
核心流程(6 Phase)
Phase 1: 需求收集 → Phase 2: 方案生成(2.0 降级决策 → MCP/WebSearch 双路径)
→ Phase 3: 决策辅助 → Phase 4: 订房(可跳过) → Phase 5: 路书交付 → Phase 6: 闭环
Phase 1:需求收集 🎯 弹窗式交互
目标:通过结构化弹窗一次性收齐所有关键信息,不回锅,避免来回拉扯。
交互方式:用 AskUserQuestion 工具分 2-3 轮弹窗,让用户"点选 + 填空",而非手写长文本:
- 点选 = 预填 2-4 个常见选项,覆盖 80% 场景
- 填空 = 选
Other走自由输入,覆盖长尾需求 - 多选 = 勾选多个标签(
multiSelect: true) - 全部 2 轮内问完,最多 3 轮(条件触发)
触发话术(开场,避免冷启动):
"行,去云南玩!先对一下基本信息——下面弹窗点几下就完事,复杂的走 Other 自由填。"
第 1 轮 · 基础信息(4 个问题,一次问完)
调用一次
AskUserQuestion抛出 4 题。
Q1 出发地:默认给一线 + 新一线城市,其他城市走 Other 填空
- 北京
- 上海
- 广州 / 深圳
- 成都 / 重庆
Q2 目的地范围(多选,云南热门组合):
- 昆明(省会 + 中转)
- 大理 + 丽江(经典北线)
- 香格里拉(高原藏区)
- 西双版纳(热带雨林)
Q3 出行月份:
- 7-8 月(暑期雨季)
- 9-10 月(秋季最佳)⭐ 推荐
- 11-12 月(冬季避寒)
- 春节 / 寒假
Q4 行程天数:
- 5-7 天(短假)
- 8-10 天(中长假)⭐ 推荐
- 11-14 天(深度游)
- 14 天以上(自驾大环线)
第 2 轮 · 人员与偏好(4 个问题,一次问完)
Q1 同行人结构:
- 情侣 / 夫妻 2 人
- 家庭带娃(孩子 3-12 岁)
- 家庭带老人(65 岁+)
- 全成人朋友聚会
Q2 交通偏好:
- 全程自驾
- 飞机到昆明 + 当地租车 ⭐ 推荐
- 火车 + 当地租车
- 全程包车
Q3 食宿预算(每人每天):
- ¥300-500(经济)
- ¥500-800(舒适)
- ¥800-1500(轻奢)⭐ 推荐
- ¥1500+(高端)
Q4 住宿偏好(多选):
- 品牌连锁(希尔顿 / IHG / 万豪等)
- 特色民宿 / 客栈
- 亲子友好
- 景观房 / 网红打卡
第 3 轮(条件触发)· 加分项
仅当 Round 2 同行人 = 家庭带娃 / 带老人,或目的地已锁定具体线路时触发。普通用户可跳过,直接进入整合输出。
Q1 必去景点 / 体验(填空,Other 必填) Q2 不想去的地方(填空,Other 可空) Q3 驾驶能力:
- 老司机,长途无压力
- 偶尔长途
- 不熟悉
- 不能开(只坐车)
Q4 旅行节奏:
- 紧凑刷景(每天 2-3 个点)
- 适中留白(每天 1-2 个点)⭐ 推荐
- 慢游发呆(半天玩半天休)
- 随性而定
整合输出:需求卡
弹窗收齐后,输出一份结构化需求卡给用户最终确认(不直接进 Phase 2):
## 需求卡 | 字段 | 你的输入 | |------|----------| | 出发地 | 北京 | | 目的地 | 大理 + 丽江 | | 出行时间 | 9-10 月 / 8 天 | | 同行人 | 家庭带娃(孩子 5 岁)| | 交通 | 飞机到昆明 + 当地租车 | | 预算 | ¥800-1500 / 人 / 天 | | 住宿 | 品牌连锁 + 亲子友好 | | 必去 | ... | | 不去 | ... | | 节奏 | 适中留白 |
用户回复"确认 / OK / 走起"后进入 Phase 2 区域扫描;如需调整则直接说改哪一项。
Phase 2:方案生成与迭代 🔗 MCP 驱动
2.0 降级决策:MCP 可用性检查
必须在进入 2.1 之前执行。 检查 ctrip-wendao 和 amap-maps 连接状态:
情况 A:两个 MCP 均已连接 ✅
→ 走标准流程(2.1 问道扫骨架 + 高德补坐标 → 2.2 问道出骨架 + 高德拉里程)
情况 B:部分或全部 MCP 未连接 ⚠️
先告知用户,同时给出选择:
"检测到以下 MCP 未连接:{缺失的 MCP 名称}。
- A 方案:先去连接器管理页面安装这些 MCP,回来继续走完整流程(精度高、体验好)
- B 方案:我先用 WebSearch 帮你跑一版,精度会打折但能快速出结果。路线里程用网络搜索估算代替高德实测,景点推荐用搜索引擎代替携程问道"
用户选 A → 等待 MCP 就绪后走标准流程。 用户选 B → 走降级流程(WebSearch 兜底),细则如下。
降级模式标志:进入降级模式后,所有里程标注为 WebSearch 估算,所有方案标注 ⚠️ 降级版(MCP 缺失)。
降级:2.1 区域扫描(WebSearch 替代 ctrip-wendao)
用 WebSearch 替代 ctrip-wendao 完成区域扫描:
- 搜索:"{目的地} 旅游攻略 必去景点 经典路线 {出行月份}"
- 搜索:"{目的地} 亲子游 自驾游 推荐"
- 从搜索结果中提取:城市/区域列表、景点梯队排名、季节适配建议
- 数据来源标注"WebSearch",非"携程问道"
降级:2.1 坐标获取(WebSearch 替代 amap-maps)
用 WebSearch 替代高德 POI 搜索获取坐标:
- 搜索:"{景点名} 经纬度" 或 "{景点名} 位置坐标"
- 从百度百科/马蜂窝等页面提取坐标信息
- 无法获取坐标的景点标注"坐标估算",在路书中使用城市中心坐标近似
- 注:降级模式下跳过营业时间获取(WebSearch 难以准确获取)
降级:2.2 方案骨架(WebSearch 替代 ctrip-wendao)
用 WebSearch 替代 ctrip-wendao 生成行程骨架:
- 搜索:"{目的地} {天数}天 自驾游路线 行程安排"
- 搜索:"{目的地} 经典环线 自驾"
- 从马蜂窝/携程攻略/穷游等结果中提取成熟的行程骨架
- 人工整理成 2-3 版方案(仿问道骨架格式)
降级:2.2 里程数据(WebSearch 替代 amap-maps)
用 WebSearch 替代高德 directionDriving 获取里程:
- 搜索:"{城市A} 到 {城市B} 自驾 多少公里 多长时间"
- 从搜索结果(百度地图网页版、马蜂窝攻略)提取距离和预估时间
- 所有里程标注为"WebSearch 估算"(非"高德实测")
- 如果搜索不到某段里程,用相近城市间直线距离 × 1.3 粗略估计,标注"粗略估算"
降级对后续 Phase 的影响
- Phase 3 决策辅助:降级模式下「事实层」和「路由层」数据源改用 WebSearch,精度下降但不影响四维决策框架
- Phase 5 路书:降级模式下的路书在封面标注
⚠️ 降级版,所有里程标注WebSearch 估算,地图仍用高德瓦片渲染(瓦片源不依赖 MCP 连接)
2.1 区域扫描 —— "问道扫骨架、搜索补血肉"
第一步:携程问道扫骨架(降级模式见 2.0)
调用 ctrip-wendao(携程问道 MCP): - 目的地全域扫描:有哪些值得去的城市/区域? - 景点梯队排名:第一梯队(必去)、第二梯队(顺路)、第三梯队(可跳过) - 口碑与季节适配:当前季节最适合什么?
第二步:高德补坐标(降级模式见 2.0)
调用 mcp__amap-maps__maps_text_search: - 对问道扫出的每个城市/景区,用 keywords=景区名+city=所在城市 搜 POI - 获取精确坐标(GCJ-02)和营业时间
第三步:搜索补血肉
用 WebSearch 补细节(小红书/马蜂窝/百度): - 最近游客真实评价(尤其亲子/老人友好度) - 小众路线、隐藏玩法 - 闭馆日/维修期/季节限制
输出:一份"全域目的地手册",含坐标、梯队、口碑、季节适配建议。
2.2 方案骨架生成 —— 里程实时拉取
第一步:携程问道出骨架(降级模式见 2.0)
调用 ctrip-wendao: - 基于需求卡 + 全域手册,生成 2-3 版行程骨架 - 每版含:城市节点序列、推荐景点、住宿城市
第二步:高德实时拉里程(关键!6.1 前置到这里)(降级模式见 2.0)
对每条骨架的相邻城市节点,调用:
mcp__amap-maps__maps_directionDriving({
origin: "起点经度,纬度",
destination: "终点经度,纬度"
})
获取:总距离(米)、预估时长(秒)、路线步骤
为什么用高德不用腾讯地图? 腾讯地图 MCP directionDriving 有约 30 分钟级并发限流冷却(实战踩坑),高德 directionDriving 无此问题,且坐标系同为 GCJ-02。
里程标注规则:
- 每段数据必须标注来源:
高德实测vs规划估算 - 生成阶段即拉实测,不留"事后修正"尾巴
第三步:出方案文档 方案文档格式:
## 方案 X:[一句话概括] **路线骨架**:城市A → 城市B → ... → 城市C **节奏**:松/紧/适中 **取舍逻辑**:为什么选这些点 | 日期 | 行程 | 住宿 | 开车 | 亮点 | |------|------|------|------|------| | D1 | A→B | B | Xkm/Yh(实测) | ... | ... **每日详情**(含景点时间建议、餐厅推荐)
2.3 迭代原则
- 用户说"太松" → 加密版(加密景点、提早出发)
- 用户说"太赶" → 拆分版(中间多住一晚)
- 每次迭代只改 1-2 个变量,不推倒重来
- 里程已实测,迭代时不需重新拉(除非改城市节点)
Phase 3:决策辅助
当用户面临二选一(如"镜泊湖 vs 伊春"),走四维决策框架:
| 维度 | 分析内容 | 数据来源 |
|---|---|---|
| 事实层 | 距离、营业时间、门票、适合年龄段、体力消耗 | 高德 POI + 搜索 |
| 口碑层 | 最近游客评价、亲子友好度 | 携程问道 + 小红书 |
| 性价比层 | 时间投入 vs 体验产出 | 综合判断 |
| 路由层 | 选了 A 对整条线路的影响 | 高德重算里程 |
输出:一份对比报告,给出推荐(带理由),不等用户做选择题。
Phase 4:订房执行 🔗 携程问道 · 可跳过
触发条件:用户确认最终方案后触发。用户可以跳过(说"酒店我自己定")。
4.1 酒店推荐
标准模式(ctrip-wendao 可用):
逐城调用 ctrip-wendao: "在[城市名]推荐3家亲子友好酒店,靠近[核心景点/区域], 预算约[预算范围]/晚,含评分、价格、特色"
降级模式(ctrip-wendao 不可用,见 2.0):
用 WebSearch 替代 ctrip-wendao 搜酒店推荐:
- 搜索:"{城市} 亲子酒店 推荐 {预算}元"
- 搜索:"{城市} {酒店名} 携程 评分"(验证评分和价格)
- 从携程/马蜂窝/大众点评结果中提取酒店信息和预订链接
输出格式:每城 3 选 1 对比表(必须含预订链接)
### [城市名]住宿推荐 | 酒店 | 评分 | 参考价/晚 | 位置 | 亲子亮点 | 预订 | |------|------|-----------|------|----------|------| | A | 4.8 | ¥XXX | ... | ... | [预订](链接) | | B | 4.6 | ¥XXX | ... | ... | [预订](链接) | | C | 4.5 | ¥XXX | ... | ... | [预订](链接) | 推荐:A,理由:...
4.2 预订链接(⚠️ 铁律:每家必须配链接)
每家推荐酒店必须附带携程预订链接,不允许出现"请在携程搜索"这类无链接输出。
调用方式:
用 WebSearch 搜索: "[酒店完整名称] 携程 预订"
从搜索结果中提取 hotels.ctrip.com/hotel/ 或 hotels.ctrip.com/hotels/ 开头的链接。
⚠️ 注意:携程问道(ctrip-wendao)不提供直接预订 URL,多次验证均返回"无法直接提供可点击的预订URL"。因此预订链接统一通过 WebSearch 获取,不依赖问道。
输出格式:每家酒店行末追加 [预订](链接)。
铁律:链接缺失 ≠ 跳过,WebSearch 搜到为止。
4.3 跳过机制
用户说以下任一句即跳过 Phase 4,直接进入 Phase 5:
- "酒店我自己定"
- "不用推荐酒店"
- "订房我自己来"
Phase 5:路书交付
5.1 受众适配
| 版本 | 适用对象 | 特点 |
|---|---|---|
| 家人版 | 同行的家人 | 文字温暖、地图直观、照片丰富 |
| 执行版 | 自己看 | 时间节点、订房链接、备选方案 |
| 长辈版 | 老人 | 大字、中文标注、无拼音 |
5.2 技术栈(固定规范)
地图:
- 引擎:Leaflet(CDN 引入)
- 瓦片源:高德
https://webrd0{s}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}(style=7,浅色底) - 子域名:1-4 轮询
- 坐标系:GCJ-02(高德、腾讯地图同系)
- 每个地图页面独立创建瓦片层(Leaflet 不能共享实例)
照片:
- 源:Wikimedia Commons(
https://commons.wikimedia.org/wiki/Special:FilePath/文件名) - 校验:请求后检查是否 404
- Fallback:占位文字"实景以现场为准"
格式:
- 单文件 HTML(免部署、手机可看、打印友好)
- 原生 CSS + JS,无框架依赖
- 吸顶导航 + 打印样式 + 手机适配
里程/时间标注:
- 标准模式:所有里程从 Phase 2 高德实测数据填入
- 降级模式:所有里程从 Phase 2 WebSearch 估算填入,统一标注
WebSearch 估算 - 每段标注"约 X 小时(含休息建议预留 Y 小时)"
5.3 路书结构
封面(标题 + 日期 + 路线概要 + [降级模式时追标 ⚠️ 降级版]) 总览页(全程路线图 + 总览表 + 亮点速览) 逐日页 D1-DN(每日路线图 + 景点照片 + 文字描述) 实用信息(天气参考、装备清单、注意事项)
5.4 生成后自检清单
- 所有 map div id 合法(不能有
/、空格等特殊字符) - 逐日地图独立验证(每个 map 能加载瓦片)
- 城市标签为中文(不能用拼音)
- 成员姓名已清除(如用户要求不显示)
- 地图瓦片能加载(高德 style=7 可用,style=6 返回 404)
- 图片不 404(有 fallback)
- 文件路径写完整绝对路径
5.5 关键技术要点
WGS-84 → GCJ-02 转换(见 references/wgs84_to_gcj02.py)
Leaflet 多地图共享瓦片实例 Bug:
// ❌ 错误:全局共享 tiles 实例,只挂到最后一个地图
var tiles = L.tileLayer(...);
tiles.addTo(map1);
tiles.addTo(map2); // 实际上不会显示
// ✅ 正确:每个地图独立创建
function initMap(mapId, ...) {
var map = L.map(mapId).setView([lat, lng], zoom);
L.tileLayer(url, opts).addTo(map); // 独立实例
...
}
HTML 生成建议:
- 用 Python f-string 模板生成(批量替换数据,避免手动拼 HTML)
- 数据字典(城市坐标、路线坐标、景点名称、图片 URL)独立维护
Phase 6:闭环
- 逐项确认:所有里程 = 实测值、所有图片可加载、所有链接有效
- 将最终路书 HTML present 给用户
- 如果用户要求订房,确认预订链接可访问
- 不需要事后补数据(Phase 2 已拉完实数)
自动化任务
如果数据拉取因 MCP 限流等外部原因中断,建一次性 automation 待冷却恢复后继续:
automation_update(mode="create", scheduleType="once", ...)
自动化 prompt 要求:
- 写清楚"不碰已实测数据"
- 写清楚"严格串行、不并发"
- 写清楚"限流时暂停 X 分钟重试,不无限循环"
- 完成后 present 更新后的路书
设计原则
| 原则 | 说明 |
|---|---|
| 先区域扫描,再生成方案 | 用户对目的地认知不完整时,先给全景视野再决策 |
| 每次迭代只改 1-2 个变量 | 不推倒重来,保护用户心智投入 |
| 里程在生成阶段即实测 | 高德实时拉,不留"事后修正"尾巴 |
| 问道扫骨架、搜索补血肉 | MCP 出结构化数据,公开搜索补口碑细节 |
| 二选一不走直觉 | 四维框架(事实/口碑/性价比/路由)辅助决策 |
| 受众决定交付形式 | 家人版 ≠ 执行版 ≠ 长辈版 |
| 路书是工程产物 | 考虑瓦片 bug、坐标偏移、图片 404、id 合法性 |
| 订房可跳过 | 用户说"酒店我自己定"即跳过 Phase 4 |
| MCP 缺失不卡流程 | 检测到 MCP 未连接时,给用户 A/B 两选(安装 MCP / WebSearch 降级),绝不卡在"请安装"不动 |
MCP 依赖
本 skill 优先依赖以下 MCP 连接器,缺失时有 WebSearch 降级方案(详见 Phase 2.0):
| MCP | 用途 | 降级方案 |
|---|---|---|
| ctrip-wendao(携程问道) | 区域扫描、行程生成、酒店推荐 | WebSearch 搜索攻略/游记/酒店推荐 |
| amap-maps(高德地图) | 驾车里程/时长、POI 坐标、天气 | WebSearch 搜索距离/坐标,标注"估算" |
前置检查:Phase 2 开始前,先确认两个 MCP 连接状态。
- 均已连接 → 走标准流程
- 缺失任一 → 执行降级决策(AskUserQuestion 让用户选 A 装 MCP 或 B 降级走 WebSearch)
- 绝不卡在"请安装 MCP"不动——用户选 B 则立刻用 WebSearch 兜底推进
热门AI工具
相关专题
本专题从实际API接口调试场景出发,讲解Postman身份认证的完整配置流程,包括常见认证协议介绍、授权参数设置、访问令牌填写、OAuth 2.0授权及认证失败排查,帮助用户正确完成接口授权与访问验证。
0
2026.11.06
围绕Postman HTTP请求头配置展开,讲解Headers选项的具体使用方式,包括Key和Value参数填写、请求头信息添加、常见Header字段设置及请求头修改方法,帮助用户解决接口调试过程中遇到的请求头配置问题。
0
2026.11.06
详细介绍Postman接口请求的创建与发送方法,涵盖GET和POST请求、URL配置、请求参数、Headers请求头、Body请求体设置以及响应结果查看,帮助用户掌握Postman接口请求的完整操作流程。
0
2026.11.06
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.8万人学习
共6课时 | 54.7万人学习
最新文章