同程程心 Tongcheng Chengxin Travel Search
v0.6.0同程程心 Skill - 基于同程旅行大模型(程心)的在线旅游搜索能力。提供更专业的机票、火车票、酒店、度假产品(自由行/跟团游)、旅游攻略、行程规划、特价机票、汽车票、长途汽车、景区、门票等的查询能力,基于同程官方数据,更加实时准确可靠,一键进入预订页面,让旅行更简单,更快乐。
Like a lobster shell, security has layers — review code before you run it.
Runtime requirements
CHENGXIN_API_KEYrequired— 同程程心 API Keychengxin - 同程程心 Skill
同程旅行官方旅游助手
✅ 执行前自检清单
调用本技能前,大模型必须确认:
- 已读取用户查询的完整文本(包含日期、时间、人数等)
- 已确定正确的意图类型或查询方式
- 已从 Inbound Context 获取
channel和surface参数 - 准备调用正确的专用脚本(见「何时使用」与各节示例)
- 准备输出脚本的查询结果,以及预订链接
🎯 何时使用
| 意图类型 | 用户示例 | 调用方式 |
|---|---|---|
| 机票查询 | "北京到上海的机票"、"明天飞广州的航班" | flight-query.js |
| 特价机票 | "上海到北京的特价机票"、"北京出发的特价机票"、"从上海飞哪里便宜" | flight-query.js --low-price(可与 --destination 同时使用) |
| 火车票查询 | "北京到上海的高铁"、"苏州到上海的火车票" | train-query.js |
| 酒店查询 | "上海外滩附近的酒店"、"下周一北京的五星级酒店" | hotel-query.js |
| 长途汽车 / 汽车票 | "北京到上海的长途汽车"、"苏州到上海的大巴"、"苏州到南京的汽车票"、"买张苏州到北京客运票" | bus-query.js |
| 度假产品 / 跟团游 / 自由行 / 行程规划 | "云南旅游团"、"三亚自由行"、"帮我规划北京三日游"、"从苏州出发到杭州玩三天" | travel-query.js |
| 交通查询 | "北京到上海怎么走"、"去苏州有什么交通方式"、"苏州到南京" | traffic-query.js |
| 景区查询 | "苏州有哪些景区"、"上海迪士尼门票"、"杭州有什么好玩的景点" | scenery-query.js |
⚠️ 路由规则:上表每一类意图只通过对应的
*-query.js调用 API;参数不足时引导用户补齐后再执行脚本,不使用其它入口替代。
🚗 交通资源智能查询 (traffic-query.js)
🚨 智能推荐:当用户未明确指定交通方式时使用此接口!
智能交通查询能力,同时返回机票、火车票、汽车票等多种交通方式,方便用户对比选择。
使用场景
| 场景 | 示例 | 推荐接口 |
|---|---|---|
| 用户明确说"火车票" | "北京到上海的火车票" | train-query.js ✅ |
| 用户明确说"机票" | "明天飞北京的航班" | flight-query.js ✅ |
| 用户明确说"汽车票/大巴/客运"(公路) | "苏州到南京的汽车票"、"买大巴票" | bus-query.js ✅ |
| 用户未指定交通方式 | "北京到上海怎么走" | traffic-query.js ✅ |
合法参数组合
| 组合 | 参数示例 | 说明 |
|---|---|---|
| 出发地 + 目的地 | --departure "北京" --destination "上海" | 按城市查询 |
参数说明
| 参数 | 说明 |
|---|---|
--departure <城市> | 出发地城市(必填) |
--destination <城市> | 目的地城市(必填) |
--extra <补充信息> | 额外信息(日期、偏好等) |
extra 参数示例
"明天"- 明天的班次"自驾"- 偏好自驾路线"明天 高铁优先"- 多条件组合
调用示例
# 北京到上海,智能推荐交通方式
node scripts/traffic-query.js --departure "北京" --destination "上海" --channel webchat --surface webchat
# 明天出发
node scripts/traffic-query.js --departure "北京" --destination "上海" --extra "明天" --channel webchat --surface webchat
# 包含自驾偏好
node scripts/traffic-query.js --departure "苏州" --destination "南京" --extra "自驾" --channel webchat --surface webchat
输出结果
同时展示多种交通方式:
- 🚄 火车票
- ✈️ 机票
- 🚌 汽车票
每种交通方式都包含:
- 完整班次/航班信息
调用优先级
⚠️ 重要:
traffic-query.js的调用优先级低于专用查询接口!
正确用法:
- 用户说"火车票" → 使用
train-query.js - 用户说"机票" → 使用
flight-query.js - 用户说"汽车票" → 使用
bus-query.js - 用户未指定交通方式 → 使用
traffic-query.js
✈️ 机票专用查询 (flight-query.js)
🚨 优先级最高:查询机票时,必须优先使用此方法!
更精准的机票查询能力,支持航班号精确查询、特价机票查询、多列表推荐。
合法参数组合
| 组合 | 参数示例 | 说明 |
|---|---|---|
| 出发地 + 目的地 | --departure "北京" --destination "上海" | 按城市查询 |
| 航班号 | --flight-number "CA1234" | 精确查航班 |
| 出发地 + lowPrice | --departure "北京" --low-price | 特价/低价(未指定目的地时,可查多地低价推荐) |
| 出发地 + 目的地 + lowPrice | --departure "上海" --destination "北京" --low-price | 指定航线上的特价/低价查询 |
参数说明
| 参数 | 说明 |
|---|---|
--departure <城市> | 出发地城市 |
--destination <城市> | 目的地城市 |
--flight-number <航班号> | 航班号 (如 CA1234) |
--extra <补充信息> | 额外信息 (日期、偏好等) |
--low-price | 特价/低价查询;可与 --destination 同用(指定航线),也可仅出发地(多地低价推荐) |
lowPrice 参数说明
--low-price 表示用户要特价、低价、便宜等优惠向机票,有两种常见说法:
- 已说明出发地与目的地(如「上海到北京的特价机票」):同时传
--departure、--destination与--low-price,查该航线上的低价/特价结果。 - 只说了出发地或未点明目的地(如「从北京出发哪里便宜」):仅传
--departure与--low-price,由接口返回从该地出发的低价推荐(含目的地推荐)。
触发关键词:
- "特价机票"、"低价机票"、"便宜机票"
- "A 到 B 的特价票"、"XX 飞 YY 最便宜"
- "从 XX 出发哪里便宜"、"XX 出发的优惠机票"
- "清明节/五一/春节 特价机票"(节假日低价推荐)
示例场景:
| 用户查询 | 调用方式 | 说明 |
|---|---|---|
| "上海到北京的特价机票" | --departure "上海" --destination "北京" --low-price | 指定航线特价/低价 |
| "北京出发的特价机票" | --departure "北京" --low-price | 北京出发低价航线/推荐 |
| "清明节北京出发的特价机票" | --departure "北京" --low-price --extra "清明节" | 带节假日条件 |
| "从上海飞哪里便宜" | --departure "上海" --low-price | 查询低价目的地推荐 |
| "周末从广州出发哪里好玩" | --departure "广州" --low-price --extra "周末" | 带时间偏好 |
引导话术(仅出发地、未说目的地时):
💡 您只提供了出发地,没有指定目的地。
您可以:
1. 补充目的地 (如:北京到上海),需要特价可加 --low-price
2. 或继续用 --low-price 查看从该地出发到全国各地的低价推荐
调用示例
# 北京到上海,明天的机票
node scripts/flight-query.js --departure "北京" --destination "上海" --extra "明天" --channel webchat --surface webchat
# 查询特定航班
node scripts/flight-query.js --flight-number "CA1234" --channel webchat --surface webchat
# 指定航线特价(上海 → 北京)
node scripts/flight-query.js --departure "上海" --destination "北京" --low-price --channel webchat --surface webchat
# 从北京出发的特价/低价推荐(未指定目的地)
node scripts/flight-query.js --departure "北京" --low-price --channel webchat --surface webchat
# 清明节北京出发的特价/低价
node scripts/flight-query.js --departure "北京" --low-price --extra "清明节" --channel webchat --surface webchat
参数不完整时的处理
若用户只提供出发地、未提供目的地:提示用户要么补充目的地(可加 --low-price 查该航线特价),要么使用 --low-price 查从该地出发的低价推荐。
无结果时的备选策略(临近出发机场 / 空铁联运)
当 flight-query.js 无航班、脚本输出「无结果」或 API code 为 1(见 references/error-handling.md)时,可引导用户尝试「从临近枢纽机场所在城市出发」的空铁联运思路。原则:不编造航班、价格与预订链接;航班与链接只能来自脚本输出,地面段车次、班次与链接只能来自对应脚本输出。
- 说明与备选出发地:告知用户当前出发地直飞无合适结果,可尝试从区域枢纽机场所在城市等临近点出发;结合地理常识给出 1~2 个备选城市即可,在脚本返回前不要写出该城市出发的具体航班、价格或链接。
- 重查机票(替代出发地):对每个备选出发城市再次执行
flight-query.js:将--departure改为该临近城市,保持--destination、--extra与用户原查询一致,并沿用相同--channel/--surface,完整输出脚本结果。
node scripts/flight-query.js --departure "<临近城市>" --destination "<原目的地>" [--extra "<原日期/偏好>"]及相同的--channel/--surface - 地面衔接:若需展示用户常住地/原出发城市 → 临近出发城市的衔接,通过
train-query.js、traffic-query.js或必要时bus-query.js查询,仅采用脚本返回的车次、班次与链接。 - 换乘与时间:结合脚本给出的出发/到达时刻提示预留换乘与进站时间;值机、安检与建议到达机场时间属出行常识,非 API 实时数据,仅作缓冲说明并提醒以航司、机场与出票信息为准。国内线可提示常见不晚于起飞前约 1.5~2 小时到机场办理乘机手续,国际线或大型枢纽宜更久。
🏨 酒店专用查询 (hotel-query.js)
🚨 优先级最高:查询酒店时,必须优先使用此方法!
更精准的酒店查询能力,支持位置偏好、日期指定等多列表推荐。
合法参数组合
| 组合 | 参数示例 | 说明 |
|---|---|---|
| 目的地城市 | --destination "上海" | 按城市查询 |
| 目的地 + 位置偏好 | --destination "上海" --extra "外滩附近" | 指定区域 |
| 目的地 + 入住日期 | --destination "上海" --extra "明天入住" | 指定日期 |
参数说明
| 参数 | 说明 |
|---|---|
--destination <城市> | 目的地城市(必填) |
--extra <补充信息> | 额外信息(日期、位置偏好等) |
extra 参数示例
"明天入住"- 明天入住"外滩附近"- 外滩附近区域"明天入住 外滩附近"- 多条件组合
调用示例
# 上海酒店,明天入住
node scripts/hotel-query.js --destination "上海" --extra "明天入住" --channel webchat --surface webchat
# 上海外滩附近的酒店
node scripts/hotel-query.js --destination "上海" --extra "外滩附近" --channel webchat --surface webchat
# 简单查询(仅目的地)
node scripts/hotel-query.js --destination "上海" --channel webchat --surface webchat
参数不完整时的处理
如果用户没有提供目的地:提示用户补充目的地城市。
🏞️ 景点专用查询 (scenery-query.js)
🚨 优先级最高:查询景点时,必须优先使用此方法!
更精准的景点查询能力,支持特色筛选、类型推荐等多列表推荐。
合法参数组合
| 组合 | 参数示例 | 说明 |
|---|---|---|
| 目的地城市 | --destination "杭州" | 按城市查询 |
| 目的地 + 特色 | --destination "杭州" --extra "适合亲子" | 指定特色 |
| 目的地 + 类型 | --destination "苏州" --extra "园林 5A 景区" | 指定类型 |
参数说明
| 参数 | 说明 |
|---|---|
--destination <城市> | 目的地城市(必填) |
--extra <补充信息> | 额外信息(特色、类型等) |
extra 参数示例
"适合亲子"- 亲子游景点"5A 景区"- 5A 级景区"适合亲子 5A 景区"- 多条件组合
调用示例
# 杭州景点,适合亲子
node scripts/scenery-query.js --destination "杭州" --extra "适合亲子" --channel webchat --surface webchat
# 苏州园林景点
node scripts/scenery-query.js --destination "苏州" --extra "园林" --channel webchat --surface webchat
# 简单查询(仅目的地)
node scripts/scenery-query.js --destination "杭州" --channel webchat --surface webchat
参数不完整时的处理
如果用户没有提供目的地:提示用户补充目的地城市。
🧳 旅行资源专用查询 (travel-query.js)
🚨 度假产品/跟团游/自由行专属接口:当用户提到旅游团、跟团游、自由行、度假、玩几天、几日游、规划行程时,必须使用此接口!
⚠️ 与 scenery-query.js 的边界:
- 用户说"云南旅游团"、"三亚自由行"、"玩三天" →
travel-query.js✅(要的是旅游产品/套餐)- 用户说"三亚有哪些景点"、"上海迪士尼门票" →
scenery-query.js✅(要的是景点列表/门票)
专业的度假产品查询能力,支持自由行、跟团游等多种旅游产品推荐。
使用场景
| 场景 | 示例 | 推荐接口 |
|---|---|---|
| 用户查询"三亚自由行" | "三亚自由行套餐" | travel-query.js ✅ |
| 用户查询"云南旅游团" | "云南6天5晚跟团游" | travel-query.js ✅ |
| 用户有明确意向 | "我想去三亚玩" | travel-query.js ✅ |
| 用户要行程规划 | "帮我规划北京三日游" | travel-query.js ✅ |
| 用户说"玩几天" | "苏州到杭州玩三天" | travel-query.js ✅ |
典型用户说法(看到这些关键词直接用 travel-query.js)
| 用户说法 | 关键词 | 调用 |
|---|---|---|
| "云南旅游团"、"跟团游" | 旅游团、跟团 | travel-query.js |
| "三亚自由行"、"自由行套餐" | 自由行 | travel-query.js |
| "玩三天"、"几日游"、"规划行程" | 天数、行程 | travel-query.js |
| "从苏州出发到杭州玩" | 出发地 + 玩 | travel-query.js |
| "度假"、"度假产品" | 度假 | travel-query.js |
合法参数组合
| 组合 | 参数示例 | 说明 |
|---|---|---|
| 目的地 | --destination "三亚" | 按城市/地区查询 |
| 出发地 + 目的地 | --departure "苏州" --destination "杭州" | 含往返交通规划 |
| 出发地 + 目的地 + 天数 | --departure "苏州" --destination "杭州" --extra "3天2晚" | 含行程规划 ⭐ |
| 目的地 + 天数 + 类型 | --destination "云南" --extra "6天5晚 自由行" | 指定行程 |
参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
--departure <城市> | 可选 | 出发地城市,提供后可触发 AI 推荐往返交通+完整行程规划 |
--destination <城市/地区> | ✅ | 目的地城市或地区 |
--extra <补充信息> | 可选 | 额外信息(假期、天数、类型、行程规划请求等) |
extra 参数示例
"五一假期"- 五一期间"3天2晚"/"6天5晚"- 行程天数"自由行"/"跟团游"- 自由行产品、跟团游产品"帮我规划南京三日游行程"- 触发 AI 行程规划(推荐配合 departure 使用)"苏州到杭州 3天2晚 自由行"- 出发地+天数+类型组合"五一假期 6天5晚 自由行"- 多条件组合
调用示例
# 经典场景:从某地出发到某地玩几天(推荐);返回:交通推荐 + 酒店 + 景区 + 行程规划 + 度假产品 + UGC攻略
node scripts/travel-query.js --departure "苏州" --destination "杭州" --extra "3天2晚" --channel webchat --surface webchat
# 仅目的地查询
node scripts/travel-query.js --destination "三亚" --channel webchat --surface webchat
# 带假期条件
node scripts/travel-query.js --destination "三亚" --extra "五一假期" --channel webchat --surface webchat
# 指定天数和类型
node scripts/travel-query.js --destination "云南" --extra "6天5晚 自由行" --channel webchat --surface webchat
🚌 长途汽车专用查询 (bus-query.js)
🚨 优先级最高:查询长途汽车时,必须优先使用此方法!
更精准的长途汽车查询能力,支持站到站精确查询、多列表推荐。
使用场景与同义词
| 用户常怎么说 | 说明 |
|---|---|
| 汽车票、大巴票、客运、长途汽车、班车 | 均指公路客运班次,全部路由到本节 bus-query.js |
合法参数组合
| 组合 | 参数示例 | 说明 |
|---|---|---|
| 出发地 + 目的地 | --departure "北京" --destination "上海" | 按城市查询 |
| 出发站 + 到达站 | --departure-station "北京六里桥客运站" --arrival-station "上海长途汽车客运站" | 精确站点查询 |
参数说明
| 参数 | 说明 |
|---|---|
--departure <城市> | 出发地城市 |
--destination <城市> | 目的地城市 |
--departure-station <站> | 出发站(精确) |
--arrival-station <站> | 到达站(精确) |
--extra <补充信息> | 额外信息(日期、偏好等) |
extra 参数示例
"明天"- 明天的班次"上午"- 上午出发的班次"明天 上午"- 多条件组合
调用示例
# 北京到上海,明天的长途汽车
node scripts/bus-query.js --departure "北京" --destination "上海" --extra "明天" --channel webchat --surface webchat
# 站到站精确查询
node scripts/bus-query.js --departure-station "北京六里桥客运站" --arrival-station "上海长途汽车客运站" --channel webchat --surface webchat
# 简单查询(仅城市)
node scripts/bus-query.js --departure "北京" --destination "上海" --channel webchat --surface webchat
参数不完整时的处理
如果用户只提供了部分参数:提示用户补充参数。
🚂 火车票专用查询(train-query.js)
🚨 优先级最高:查询火车票时,必须优先使用此方法!
更精准的火车票查询能力,支持站到站、车次精确查询。
为什么优先使用:
- ✅ 调用专用 API 接口(
/gateway/trainResource) - ✅ 返回更丰富的车次选择
- ✅ 支持结构化参数(出发地、目的地、车次号、偏好等)
- ✅ 参数不完整时会明确提示用户补齐
合法参数组合
| 组合 | 参数示例 | 说明 |
|---|---|---|
| 出发地 + 目的地 | --departure "北京" --destination "上海" | 按城市查询 |
| 车次号 | --train-number "G1234" | 精确查车次 |
| 出发站 + 到达站 | --departure-station "北京南站" --arrival-station "上海虹桥站" | 精确站点查询 |
参数说明
| 参数 | 说明 |
|---|---|
--departure <城市> | 出发地城市 |
--destination <城市> | 目的地城市 |
--departure-station <站> | 出发站(精确) |
--arrival-station <站> | 到达站(精确) |
--train-number <车次> | 车次号(如 G1234) |
--extra <补充信息> | 额外信息(日期、偏好等) |
extra 参数示例
"明天"- 明天的车次"高铁"- 只查高铁"动车"- 只查动车"一等座"- 优先一等座"明天 高铁 赏花专线"- 多条件组合
参数不完整时的处理
如果用户只提供了部分参数,必须提醒用户补齐:
⚠️ 参数不完整,请提供以下组合之一:
1. 出发地 + 目的地
2. 车次号
3. 出发站 + 到达站
🚀 标准执行流程
步骤 1:保留完整 query
包括日期、时间、人数等所有信息:
- ✅
"3 月 29 日苏州到上海火车票" - ✅
"明天北京到上海的机票" - ✅
"下周一南京夫子庙附近酒店"
步骤 2:调用专用脚本(唯一数据源)
按「何时使用」选择 scripts/ 下对应的 *-query.js,传入结构化参数与 channel、surface。示例(火车票):
node scripts/train-query.js --departure "北京" --destination "上海" --extra "明天 高铁" --channel webchat --surface webchat
步骤 3:原样输出脚本结果
必须完整输出脚本返回的所有内容:
- 表格或卡片格式。逻辑由
scripts/lib/output-mode.js的resolve_output_mode实现。 - 底部引导语
禁止:
- ❌ 修改表格格式
- ❌ 省略底部引导语
- ❌ 添加脚本未返回的信息
🎁 如何获取 API Key (CHENGXIN_API_KEY)
当鉴权失败或需要配置 API Key 时,请按以下方式申领:
- 打开 同程旅行 APP 或 同程旅行小程序(微信 - 我 - 服务 → 火车票机票/酒店民宿)
- 在顶部搜索栏中搜索「程心激活码」
- 按页面提示完成申领即可获取 API Key
- 将激活码配置到环境变量或
config.json文件中。环境变量与本地config.json的配置方式、示例与注意事项详见references/config.md。
💡 快捷方式:也可以直接回复「帮我把 xxxxx(激活码)配置到 chengxin 这个 skill 上」,助手会自动帮你完成配置。
⚠️ 错误处理
API Key 未配置或无效
展示申领引导(见 references/error-handling.md)
错误码处理
| Code | 处理方式 |
|---|---|
0 | 正常解析并输出结果 |
1 | 告知用户未找到相关资源,建议调整搜索词 |
3 | 检查是否为鉴权问题,展示对应引导 |
详细错误处理指南:见 references/error-handling.md
📞 客服支持
使用过程中遇到问题?同程旅行提供 7×24 小时服务:
- 📞 旅行者热线:95711
- 💬 在线客服:https://www.ly.com/public/newhelp/CustomerService.html
📚 参考文档
references/output-format.md- 输出格式示例(表格/卡片)references/error-handling.md- 错误处理指南references/api-examples.md- API 调用示例
同程旅行 · 让旅行更简单,更快乐
Comments
Loading comments...
