- 每日检查:若当前目录下的
.version_check不存在或记录日期非今天,静默请求远端SKILL.md(地址拼接规则:将元数据中的{repository}域名替换为raw.githubusercontent.com,并在末尾追加/main/skills/{name}/SKILL.md)对比version字段。若远端有更新,在回复开头提示用户更新。无论成败,均将今日日期YYYY-MM-DD写入.version_check。- 更新命令:
请运行 npx skills update {name} 更新技能包。
如果本地环境未安装 rgh 命令,可以通过以下三种方式之一进行安装:
方式一:通过 npm 安装(推荐) 如果环境中有 Node.js 和 npm,请执行:
bash
npm install -g @rollinggo/hotel@latest
方式二:通过 Python 自动脚本安装(免 Node.js 环境)
如果环境中有 Python,可以直接在 Skill 目录下运行我们提供的自动化安装脚本,它将自动检测您的操作系统并下载最新版的 rgh 独立二进制程序到本地 bin 文件夹:
bash
python scripts/install.py
方式三:手动下载独立可执行文件(免 Node/Python 环境)
如果环境中既没有 npm 也没有 Python,请从以下 Release 页面下载对应的单文件程序(Windows: rgh-win.exe / rgh-windows.exe, Mac: rgh-macos, Linux: rgh-linux):
https://github.com/RollingGo-AI/oauth-hotel-cli/releases/latest
下载后将其重命名为 rgh(Windows下为 rgh.exe),赋予执行权限,并放入系统环境变量 PATH 或技能目录的 bin 文件夹中。
⚠️ 自动升级拦截原则:
CLI 工具内置了版本检测。当你在执行任何 rgh 命令时,如果控制台输出中出现 📦 有新版本可用! 或 运行以下命令更新 的提示, 你必须立即暂停当前操作,先使用上述三种方式之一将工具升级到最新版,升级成功后再重新执行刚才中断的命令。 这样可避免由于服务端接口过期而导致的预订失败。
⚠️ 输出规范:
- 严禁向用户展示任何技术细节,包括但不限于:工具名(如
search-hotels、hotel-detail)、JSON 字段名(如hotelId、ratePlanId、referenceNo)、命令行内容、技术参数。- 只展示用户关心的信息:酒店名称、星级、价格、距离、核心设施、标签、预订链接。
- 结果必须格式化展示,每家酒店独占一个卡片,关键信息换行分隔,禁止堆砌在一行。
- 价格说明:搜索结果中的价格为参考展示价,实际下单价以价格确认为准,展示时注明"参考价"。
- 登录授权:用户通过 Agent 对话时看不到终端输出,执行
rgh login后必须从输出中提取授权链接并回复给用户,不要展示二维码文本。
用户涉及酒店住宿相关的任何意图时均应触发本 Skill,包括但不限于以下场景:
搜索与发现:
查询与对比:
预订与订单:
触发词覆盖: 找酒店、订酒店、搜酒店、酒店推荐、酒店查询、附近酒店、五星酒店、民宿、度假村、查房价、看房型、入住、住哪、住宿、出差住宿、旅游住宿、亲子酒店、带泳池的酒店、含早餐酒店、商务酒店、情侣酒店、温泉酒店、海景房、江景房。
⚠️ 酒店预订是 真实消费操作:
referenceNo 有效期约 15-30 分钟,过期需重新调用价格确认。Step 0:登录授权检查(首次使用或 Token 失效时执行)
执行 rgh whoami 检查登录状态:
✅ 已登录 → 直接进入 Step 1❌ 未登录 → 执行 rgh login,进入授权流程授权流程:
⚠️
rgh login必须以异步/后台模式运行(如WaitMsBeforeAsync=2000),同步执行会永久卡死线程!
从后台输出中提取 https://rollinggo.store/s/xxx 格式或者 原始oauth格式 的授权链接,回复给用户:
text
请点击以下链接完成授权:[点击授权](https://rollinggo.store/s/xxx)
授权成功后请告诉我,我将继续为您预订。
用户确认授权成功后进入 Step 1。
Step 1:信息收集(静默判断,不打断用户)
从对话中提取以下信息,能推断的直接用,缺关键信息再追问:
信息是否必须默认值目的地(城市/景点/地址)✅ 必须无,需追问入住日期建议有明天入住晚数建议有1 晚成人数可选2 人星级偏好可选不限预算上限可选不限特殊需求(标签)可选无
目的地是唯一必须确认的信息。其他信息缺失时使用默认值,不要逐一追问。
Step 2:获取标签字典(按需执行)
用户提到特定设施或特色(如"带泳池"、"含早餐"、"亲子"、"宠物")时,先执行:
bash
rgh hotel-tags
从返回结果中找到精确的标签名称,再用于搜索。常见对应关系:
用户说法常见标签名带泳池、有游泳池户外泳池 / 室内恒温泳池含早餐、有早餐含早餐亲子、带孩子亲子友好宠物友好宠物友好免费停车免费停车场不要某类型对应标签必须有某设施对应标签(硬过滤)
Step 3:搜索酒店
调用 rgh search-hotels,将用户需求转化为命令行参数:
bash
rgh search-hotels \
--origin-query "<用户原始表达>" \
--place "<地点名称>" \
--place-type "<类型>" \
[--check-in-date YYYY-MM-DD] [--stay-nights N] \
[--star-ratings min,max] \
[--preferred-brand "品牌名"] \
[--preferred-tag "标签名"] [--required-tag "标签名"] \
[--max-price-per-night N] \
--size 5
placeType 选择规则(必须精确匹配):
用户描述--place-type城市名(北京、三亚、曼谷)城市机场(首都机场、浦东机场)机场景点/地标(外滩、西湖、迪士尼)景点火车站(虹桥站、北京南站)火车站地铁站地铁站酒店名称酒店区/县/商圈(亚龙湾、朝阳区)区/县具体街道地址详细地址
搜索结果展示模板(每家酒店一个卡片):
(【极其重要】:你必须使用标准的 Markdown 图片语法  来渲染 imageUrl,且必须将图片展示在模板末尾。若 imageUrl 中包含未编码的空格,需手动将空格替换为 %20,或使用尖括号将其包裹如 ,否则会导致宿主平台无法渲染图片!绝对禁止使用 HTML <img> 标签,绝对禁止使用纯文本 URL!)
markdown
🏨 {酒店名称}
⭐ {星级}星 *(仅当返回了 distanceInMeters 字段时展示:📍 距{搜索地点}{距离}米)*
💰 参考价 ¥{最低价}/晚
🏷️ {标签1} · {标签2} · {标签3}
🔗 [查看详情 & 预订]({bookingUrl})

返回 3-5 家酒店后,询问用户:"想了解哪家的详细房型和价格?"
Step 4:查询房型与实时价格(用户选定酒店后)
从搜索结果中提取 hotelId,调用:
bash
rgh hotel-detail \
--hotel-id <hotelId> \
--check-in-date <入住日期> \
--check-out-date <离店日期> \
--adult-count <成人数> \
--room-count <房间数>
房型展示模板(每个房型一条):
text
🛏️ {房型中文名}({床型描述})
💰 总价 ¥{totalPrice}(¥{均价}/晚) 剩余 {inventoryCount} 间
📋 取消政策:{取消政策描述}
展示 3-5 个推荐房型后,提供预订链接: "如需预订,可点击 前往预订页 完成下单。"
Step 5:价格确认与下单(用户选定房型后)
rgh price-confirm 锁定价格(获取 referenceNo)。注意参数是 --rooms 和 --adults:bash
rgh price-confirm \
--hotel-id <hotelId> \
--rate-plan-id <ratePlanId> \
--rooms <房间数> \
--check-in-date <入住日期> \
--check-out-date <离店日期> \
--adults <成人数>
rgh book 创建订单:bash
rgh book \
--reference-no "<上一步获取的referenceNo>" \
--first-name "<拼音/英文名>" \
--last-name "<拼音/英文姓>" \
--email "<邮箱>"
alipayUrl 或其他支付链接返回给用户。待支付订单展示模板: (【极其重要】:绝不能臆造或编造支付方式(如“自动识别环境,支持支付宝或微信”)。必须严格按照以下模板输出,绝不允许自行添加任何关于支付环境或支付方式的说明!)
text
📝 订单已生成,等待支付!
确认号:**{orderNo}**
酒店:{酒店名}
房型:{房型名}
入住:{入住日期} | 离店:{离店日期}
总价:¥{价格}
📋 取消政策:{取消政策描述}
💳 请在30分钟内完成支付:{支付链接}
Step 6:查询订单(用户询问时)
bash
rgh orders
展示订单列表时,请清晰提取出: 酒店名、入离日期、订单状态、总价,如果是待支付状态,附上继续支付的链接。
按以下顺序放宽条件重试:
--star-ratings 限制--distance-in-meter 10000--required-tag 改为 --preferred-tag--size 10景点,不是 城市;"北京"配 城市