Duffel 航班预订技能
用途 Duffel 用于搜索、预订、支付和管理航班。它面向用户提供航班搜索与预订能力,并支持对已预订航班进行持续的票价监控。该技能通过命令行界面(CLI)暴露一组公开命令,供上层流程调用。
主要能力
- 航班搜索:支持单程、往返和多城市行程。可指定出发地、目的地、出发日期、返回日期、乘客组合(成人、儿童、婴儿)、最大中转次数、排序方式(如时长)等。
- 座位选项:可查询可预订座位。
- 预订校验:通过 validate-booking 校验报价,直到 ready_to_book 为 true。
- 预订:使用 book 命令完成预订,需选择返回的 Stripe Link 支付方式。
- 预订状态:查询已预订航班的状态。
- 取消报价与取消预订:获取取消报价并执行取消。
- 票价监控:对已预订航班进行持续价格监控,在满足条件时提醒用户。
使用方式 公开 CLI 命令包括:search、seat-options、validate-booking、book、booking-status、cancellation-quote、cancel-booking。
搜索示例: duffel search --origin SFO --destination LAX --departure-date 2026-09-30 --limit 300 duffel search --origin SFO --destination LAX --departure-date 2026-09-30 --return-date 2026-10-04 --adults 2 --child-age 8 --lap-infants 1 --limit 300 duffel search --leg SFO:LAX:2026-09-30 --leg LAX:JFK:2026-10-03 --adults 2 --limit 300 duffel search --origin SFO --destination LAX --departure-date 2026-09-30 --max-connections 0 --sort duration --limit 300
搜索时建议使用 --limit 300 以便比较,但若 CLI 或提供商返回更低的上限,则使用其返回的完整结果,不要仅为达到 300 而重试。每次搜索应直接输出到独立的临时 JSON 文件,不要通过 head 或解析器管道处理,以免隐藏错误或必要报价数据。
预订流程
- 先搜索完整行程和准确的乘客组合。
- 通过原生航班组件展示候选列表。
- 可选展示座位选项并收集可预订座位。
- 收集必要的乘客详情及用户希望关联的忠诚度账户。
- 根据规则选择原生路径或航空公司网站。若选择航空公司网站,则遵循浏览器预订流程。
- 否则继续原生路径,运行 validate-booking 直到 ready_to_book: true,选择返回的 Stripe Link 支付方式,并使用相同的报价、预订文档和座位调用 book 一次。
- 成功后报告每个承运商的确认参考号/PNR 和机票状态。
票价监控 当用户直接要求对已预订航班进行持续监控,或运行时移交了已验证的自动预订来源时,可创建票价监控任务。需收集准确的带日期行程、乘客组合、已预订舱位或票价类型、包含的行李、中转模式、已支付总价、货币以及已知的取消、变更或重新预订费用。将最小机器可读的票价状态存储在 ~/workspace/goals/<goal-slug>/hidden_files/travel/flight.json。每次票价 cron 运行仅执行一次 Duffel 搜索,使用 --limit 30,搜索完整行程和乘客组合。仅保留与已预订航班号、机场、乘客数量、舱位或票价类型、包含行李、中转模式及重大退款或变更限制匹配的结果。计算扣除已知取消、变更和重新预订费用后的可操作净节省。
适用场景
- 用户需要搜索和比较航班选项。
- 用户需要预订航班并完成支付。
- 用户需要管理已预订航班,如查询状态或取消。
- 用户需要对已预订航班进行持续票价监控。
限制
- 仅使用上述公开 CLI 命令,不得调用未文档化的端点或暴露内部标识符(如 off_、ord_、ore_)。
- 不得请求支付卡数据或账户凭证。
- 不得在聊天中显示 Duffel 命令或敏感值,除非预订 JSON、validate-booking 或 book 在当前结账中接受它们。
- 搜索结果应视为实时快照,而非价格监控循环。不得在 shell 循环中刷新相同搜索或在后台启动重复搜索。
- 对于重复搜索、进行中搜索、终止搜索或预算耗尽等情况,有相应的处理规则。
- 乘客定价在搜索时固定,儿童年龄按行程最后旅行日期计算,婴儿需区分是否占座。
- 该集成无法可靠地为两岁以下婴儿预订独立座位,此类情况应引导至航空公司。
- 不得从一次广泛搜索结果中推断 Duffel 不支持某航空公司或某航线不存在。
- 机场代码需使用精确的三字 IATA 代码,不使用都市代码(如 NYC)。
- 票价品牌、舱位、行李、退款性和可变更性为可选的提供商事实,缺失时应渲染为“未说明”,不得渲染为“无”、“不允许”或“不可退款”。
- 机场本地时间不得在没有明确机场时区的情况下进行时区转换。
- --refundable 表示出发前可退款且无明确正向罚金,而非“随时取消”。
- 不得推断行李或航空公司标准费用。
- 对于多城市行程,优先使用一个合并的 Duffel 报价和预订;若无法合并或用户明确要求分开出票,需在首次预订前征得同意。
- 每个预订有各自的确认、票价条件、审批和支付;后续报价不会在先前购买期间被保留。
- 原生提供商库存是一个实时来源,并非覆盖所有航空公司渠道的详尽数据。
以上内容基于提供的技能文档整理,未提供的信息暂未说明。