Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

【2026飞猪AI旅行创新大赛】弹性日期省钱规划(flex-date-saver)

Aperta
#182 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
12/100
Tipo di issue
Documentazione
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
html, python
Ambito
ai, documentation

Direzione di ricerca

This is a contest entry submission, not a defined change to the repo. The payload names the project repo, the test report at docs/test-report.md, and the test runs under docs/test-runs/, which can be read to check the claims. Done would mean a maintainer confirms the entry is valid and handles it, which the payload does not spell out. Treat it as review work for maintainers rather than a first-timer task.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

2026飞猪AI旅行创新大赛 showcase

参赛项目名称

弹性日期省钱规划(flex-date-saver):请几天假、哪天走、怎么走最省

团队 / 作者与奖品领取人

  • 团队名称:easy travel
  • 主要提交人 GitHub ID(仅 1 位,必填):thinsten
  • 其他成员(可选,仅用于署名):无

旅行场景与目标用户

场景:出行日期决策,涉及交通和酒店。手里只有一两天年假,想在一段时间内出去玩一趟,需要决定哪天走、请哪天假、坐哪班车或飞机、住哪里。

目标用户:上下班时间固定、年假有限的上班族,尤其是常住城市没有合适航班、要先坐动车到邻近枢纽再起飞的人,比如苏州、嘉兴、昆山、廊坊、东莞的用户。

痛点:

  • 拼假、错峰省钱需要在「请哪天假 × 哪天出发 × 坐什么 × 住哪里」之间反复比价,往往要来回查十几次。
  • 还要自己算清楚:下班赶不赶得上航班,几点能到家,回来第二天要不要请假。
  • 通用 AI 搜索给不出跨日期的总价比较。我们实测问飞猪 AI 搜索:「10 月 20 日到 11 月 10 日之间,从上海去三亚玩 3 晚,算出往返机票加五星酒店总价最低的出发日期」,它直接回复「无法完成」。

我做了什么

用户在表单里点选自己的约束(也可以直接用一句话描述),智能体基于飞猪的真实机票、火车、酒店报价,算出前 3 个出发方案。每个方案都给出:

  • 总价拆分
  • 在目的地能玩几个完整时段
  • 要请哪几天假
  • 风险提示
  • 每一段的飞猪预订链接

创新点

  1. 精确考虑个人约束:用下班时间、到各个车站/机场的通勤时间和安检缓冲,推算出最早赶得上的航班。可请假的日期在日历上勾选,系统自动区分周末和法定假日(2027 年元旦、春节按预估计算并标注)。回程按「最晚几点到家」倒推。
  2. 邻近城市出发:比如常住苏州,系统会自动尝试「苏州坐动车到上海 → 车站换乘到机场 → 上海起飞」,并校验火车到站、换乘和登机这几段时间能不能衔接上。
  3. 按「完整时段」衡量能玩多久:上午 8–12 点、下午 12–17 点、晚上 18–24 点,只有完整落在「落地后 1 小时」到「返程起飞前 2 小时」之间的时段才算 1 个。这样一眼就能比较哪个方案真的玩得更多。
  4. 特种兵模式:可以接受红眼航班、末班车,回来当天早班机直接上班;凌晨 2 点后落地的那一晚不订酒店。
  5. 三种目标一句话切换:省钱优先、多玩优先、兼顾(按每个可玩时段花多少钱来比)。切换时只重新排序,不重新查价。

完整度

  • 所有价格、时段数、请假天数都由脚本根据飞猪的真实返回计算,模型只负责理解需求和解释结果,不自己估算数字。同一输入多次运行,结果完全一致。
  • 没有可行方案时会说明卡在哪条约束、怎么放宽。例如:「下班后出发的日期都赶不上 22 点前起飞的航班,接受去程红眼航班可以解锁」。
  • 交互上一次问清楚,不反复确认:表单一次填完;用户用一句话描述时,只列出缺的项并给默认值;条件互相冲突时,一条消息把所有问题和可选改法说清楚;开始查价前先复述一遍条件,让用户确认。
  • 有 35 个单元测试,本机做了 4 个场景的真实查价,在百炼上用真实对话跑了 8 条用例并全部通过(含条件冲突追问、飞猪 Key 失效时的兜底)。测试报告见仓库 docs/test-report.md。

业务价值:每个方案都对应一组可以直接下单的「机票 / 火车 + 酒店」。错峰推荐还能把需求从高峰日引到平峰日。

百炼使用说明(必填)

  • 百炼能力 / 模型:Managed Agent(托管智能体运行时)+ 通义千问 qwen3.8-max(单次完整规划约 13 万输入 token);Skill:自建的 flex-date-saver 和百炼官方的 flyai;云端运行环境(预装 @fly-ai/[email protected],网络策略为 unrestricted)。
  • 调用方式:百炼 Managed Agents API(/files、/skills、/environments、/agents、/sessions)。仓库里的 tools/deploy_bailian.py 一条命令完成打包上传 Skill、创建运行环境、创建智能体和冒烟测试。
  • 使用环节与输入输出:用在运行时链路,流程如下:
    1. 用户发消息:表单生成的「规划需求单」,或者一句话描述
    2. 智能体理解需求、补齐缺项,并复述条件请用户确认
    3. 智能体调用自建 Skill 里的 Python 脚本:校验需求 → 生成候选日期 → 按限流规则调用 flyai-cli 查询机票、火车、酒店 → 计算并排序
    4. 脚本输出 plan.json
    5. 智能体据此生成方案对比表、每个方案的明细和预订链接,用户之后可以一句话切换目标或修改条件
  • Skill 名称:flex-date-saver(自建,脚本和配置都放在 Skill 内)、flyai(百炼官方)
  • 其他工具 / 技术栈:Python 3(无第三方依赖)、飞猪 flyai-cli、单文件 HTML 表单(部署在 GitHub Pages)、unittest

效果展示

1. 表单页:点选约束,一键生成需求单(即下面百炼会话中粘贴的那份需求单:上海出发,三亚 vs 厦门)

表单页

2. 百炼控制台实拍(会话 sesn_01M4ZD54N24D2E6X316F7Z1B6N,左侧为工具调用记录,右侧为智能体回复)

复述确认:

百炼控制台-复述确认

查价完成后的方案回复:

百炼控制台-方案结果

3. 智能体回复全文(控制台右侧面板较窄,下面是同一会话中两条回复的原文渲染,内容未做任何修改)

复述确认表:

复述确认

方案对比与各目的地最优:

方案对比

方案 1 明细(含预订链接)与不可行原因:

方案明细

一个真实案例(2026-10-15 百炼智能体 + 飞猪实时报价,即上面截图中的会话)

  • 条件:常住上海,三亚和厦门二选一,玩 2 到 3 晚,2 人;可以请 11-20、11-23、12-04、12-07 中最多 1 天;18:30 下班,只坐直飞;四五星酒店每晚 900 元以内;多玩优先,总预算 6000 元。
  • 前 3 个方案:
    1. 厦门 11-21(周六)→ 11-23(周一),请假 1 天,可玩 6 个时段,2 人总价 ¥1834
    2. 厦门 12-05(周六)→ 12-07(周一),请假 1 天,可玩 5 个时段,¥1524
    3. 三亚 11-20(周五)→ 11-22(周日),请假 1 天,可玩 5 个时段,¥3468
  • 首选方案明细:
    • 去程:11-21 14:05 乘 9C8807 从虹桥飞厦门,¥380/人
    • 回程:11-23 20:10 乘 FM9262 从厦门飞回虹桥,22:45 到家,¥445/人
    • 酒店:每晚参考起价 ¥92 × 2 晚
    • 推荐理由:比方案 2 贵 ¥310,但多玩 1 个时段(请假的周一能玩到下午)
  • 会解释没方案的原因:智能体同时给出「各目的地最优方案」对比,并说明「周五下班后出发的日期赶不上 22 点前起飞的航班,放开去程红眼可解锁」「不接受中转,放开后可能更便宜」。

其他场景的真实结果(苏州经上海联程出发、特种兵模式、跨春节预估假期)见 docs/test-report.md。

项目链接与复现方式

  • GitHub:https://github.com/thinsten/flex-date-saver
  • 在线表单:https://thinsten.github.io/flex-date-saver/web/(可直接打开填写,生成的需求单可粘贴给智能体)
  • 完整对话记录:仓库 docs/test-runs/ 下有 8 条百炼真实会话(含工具调用),不部署也能看到智能体的实际表现
  • 智能体运行位置:部署在作者的百炼 Managed Agent 上(智能体 flex-date-saver);评委如需亲自体验,可按下面「部署到百炼」一条命令部署到自己的百炼工作空间
  • 本地真实查价:
    npm i -g @fly-ai/[email protected]
    flyai config set FLYAI_API_KEY <你的Key>
    cd skill/flex-date-saver
    python3 scripts/run_plan.py --request ../../tests/requests/sample_suzhou_sanya.json --out /tmp/plan.json
    
  • 不联网回放(使用仓库里录好的真实返回):上面最后一条命令加上 --cache-dir ../../docs/demo-cache/flyai --replay
  • 部署到百炼:在 ~/.flex-date-saver.env 里写入百炼 API Key 和 workspace,然后执行
    python3 tools/deploy_bailian.py --form-url <表单地址> --smoke
    
    创建会话时,在会话环境变量里填写 FLYAI_API_KEY。

踩坑记录(可选)

  1. 飞猪 Key 没生效却不报错
    • 现象:查询调用量一直不下降。
    • 原因:flyai-cli 读不到 Key 时,会静默改用内置的试用 Key,返回结果末尾带「体验模式」,不扣自己的额度。
    • 解法:每次部署后检查返回结果里有没有「体验模式」。
  2. 百炼密钥库导致 401
    • 原因:密钥库会在出网时替换 Authorization 请求头,而 flyai-cli 会对这个请求头做签名,替换后签名对不上。
    • 解法:改用会话环境变量传 FLYAI_API_KEY。
  3. CLI 版本不一致
    • 现象:旧版本 1.0.5 没有火车查询命令,酒店命令名也不同。
    • 解法:运行环境固定安装 1.0.16。
  4. 限流和风控
    • 官方限流是 QPS 2。此外安全侧还有基于行为的风控:短时间内频繁、规律的调用会被判为脚本,返回 HTTP 451;同一个 Key 一天内多次被封,冷却时间会越来越长。
    • 解法:先实测出一套稳妥节奏(请求间隔 2.5 到 4 秒随机,每分钟不超过 20 次,每 10 分钟不超过 40 次,单次规划 20 次),后来联系飞猪给参赛 Key 加白,改为只限 QPS ≤2;同时保留 30 分钟查询缓存和风控熔断(一旦触发,所有进程一起暂停 20 分钟)。未加白的 Key 可以切回稳妥节奏,参数在 config/defaults.json。
  5. 服务端缓存忽略时段参数
    • 现象:5 分钟内查询同一航线、同一天,会拿到之前按起飞时段筛过的结果,甚至是空的。
    • 解法:航班查询不带时段参数,起飞和到达时间在本地筛选。
  6. 接口行为与文档不一致
    • 往返查询在正式 Key 下返回空,改为两段单程价格相加。
    • 火车座席参数不生效,余票字段为空,改为在本地按座席过滤。
    • 酒店的区域关键词不生效,品牌字段也不可靠,改为按酒店名称里的品牌词识别连锁。
    • 详细记录见 docs/api-notes.md。
  7. 百炼账户与会话配置
    • 在控制台新建会话时如果没填环境变量 FLYAI_API_KEY,智能体会用公共试用 Key,额度很快用完并被限流;会话要在「环境变量」里填 Key。
    • 账户余额不足时,会话接口返回 403「AccessDenied.Unpurchased」,充值后恢复。
  8. 百炼部署
    • 上传的 zip 要等文件审核变为 available 后才能创建 Skill。
    • 和官方 Skill 同名会被拒绝。
    • 更新智能体时要带上当前版本号。
    • 会话会锁定创建时的智能体版本,改了智能体要新建会话才生效。
    • 沙箱闲置后会被回收,代码要及时推到 GitHub。
Lingua principale
HTML
Stelle
11
Fork
3
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di modelstudioai/modelstudioai.github.io

Tutte le issue di modelstudioai/modelstudioai.github.io

Issue simili

Altre issue su AI Infra & Agents

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.