Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

【2026飞猪AI旅行创新大赛】弹性日期省钱规划(flex-date-saver):请几天假、哪天走、怎么走最省

Offen
#185 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Anfängerfreundlichkeit
35/100
Issue-Typ
Feature
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
html, python
Bereich
ai, documentation

Rechercherichtung

Start with the project submission details and inspect the linked flex-date-saver repository, especially skill/flex-date-saver/scripts/run_plan.py, tests, and docs/test-report.md. The submission describes a working travel-planning agent with real flight, train, and hotel pricing; assess the existing implementation and its tests before identifying a bounded change. Done should be defined by a specific improvement and corresponding passing tests.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

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 点前起飞的航班,接受去程红眼航班可以解锁」。
  • 交互上一次问清楚,不反复确认:表单一次填完;用户用一句话描述时,只列出缺的项并给默认值;条件互相冲突时,一条消息把所有问题和可选改法说清楚;开始查价前先复述一遍条件,让用户确认。
  • 有 37 个单元测试,本机做了 4 个场景的真实查价,在百炼上用真实对话跑了 10 条用例并全部通过(含条件冲突追问、飞猪 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_01M5207KJ9XCM277VH0Q7J87DH;下图按该会话的真实事件流忠实渲染:左侧工具调用与耗时、右侧智能体回复均取自会话原始记录,回复原文见 docs/test-runs/sync_two_dest.md)

复述确认:

百炼控制台-复述确认

查价完成后的方案回复:

百炼控制台-方案结果

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

复述确认表:

复述确认

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

方案对比

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

方案明细

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

  • 条件:常住上海,三亚和厦门二选一,玩 2 到 3 晚,2 人;可以请 11-20、11-23、12-04、12-07 中最多 1 天;18:30 下班,只坐直飞;四五星酒店每晚 900 元以内;多玩优先,总预算 6000 元。
  • 前 3 个方案(总价只含交通 × 人数 + 第一晚住宿,其余晚数不计入并明确提示):
    1. 厦门 12-03(周四)→ 12-06(周日),请假 1 天,可玩 6 个时段,2 人总价 ¥885
    2. 三亚 11-20(周五)→ 11-22(周日),请假 1 天,可玩 6 个时段,¥3971
    3. 厦门 12-05(周六)→ 12-07(周一),请假 1 天,可玩 5 个时段,¥1425
  • 首选方案明细:
    • 去程:12-03 21:00 乘 9C8823 从虹桥飞厦门,¥200/人(下班后出发)
    • 回程:12-06 07:10 乘 9C8824 从厦门飞回虹桥,09:45 到家,¥200/人
    • 酒店:只安排第一晚,参考起价 ¥85 × 1 晚 × 1 间(其余 2 晚不计入总价,提示自行安排)
    • 推荐理由:与方案 2 同样玩 6 个时段、同样请 1 天假,但便宜 ¥3086
  • 会解释没方案的原因:智能体同时给出「各目的地最优方案」对比,并说明「下班后出发的日期赶不上 22 点前起飞的航班,放开去程红眼可解锁」「不接受中转,放开后可能更便宜」。

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

项目链接与复现方式

  • GitHub:https://github.com/thinsten/flex-date-saver
  • 在线表单:https://thinsten.github.io/flex-date-saver/web/(可直接打开填写,生成的需求单可粘贴给智能体)
  • 完整对话记录:仓库 docs/test-runs/ 下有 10 条百炼真实会话(含工具调用),不部署也能看到智能体的实际表现
  • 智能体运行位置:部署在作者的百炼 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。
Vorherrschende Sprache
HTML
Sterne
11
Forks
3
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus modelstudioai/modelstudioai.github.io

Alle Issues in modelstudioai/modelstudioai.github.io

Ähnliche Issues

Weitere Issues zu AI Infra & Agents

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.