跳到主要内容

帮我规划一趟旅行:多技能联动的复合任务拆解与编排技巧

"我想去东莞玩 3 天,帮我规划一下" —— 这句话触发了景点搜索、餐厅推荐、路线规划、天气查询、行程编排五个技能的联动。本文拆解复合任务的编排逻辑,分享让 Agent 规划得更好的技巧。

场景画像

高频指令

  • "我想去东莞玩 3 天,帮我规划一下"
  • "这周末去哪里玩比较好"
  • "帮我查一下从松山湖到虎门怎么走"
  • "东莞有什么好吃的推荐"

为什么这个场景最能体现 Agent 价值

旅行规划是一个典型的多步骤、多信息源、需要综合判断的任务。人工完成需要:打开高德地图搜景点 → 打开大众点评搜餐厅 → 打开天气 App 查预报 → 打开备忘录编排行程。Agent 可以在一次对话中完成所有这些步骤。

场景拆解:五个技能的联动

步骤一:景点搜索

# 搜索东莞景点(风景名胜 + 博物馆),返回 20 个候选
python3 skills/map/scripts/map.py attractions --city 东莞 --page-size 20 --json

返回数据包含:景点名称、地址、评分、类型、经纬度。

步骤二:餐厅推荐

# 搜索东莞美食(自动排除快餐),返回 20 个候选
python3 skills/map/scripts/map.py restaurants --city 东莞 --page-size 20 --json

步骤三:天气查询

# 查询东莞未来 3 天天气预报
python3 skills/weather/scripts/weather.py forecast 东莞 --json

天气数据直接影响行程安排——如果第二天有雨,Agent 会把室内景点(博物馆)安排在那天。

步骤四:路线规划

# 关键景点间的驾车路线
python3 skills/map/scripts/map.py driving \
--origin "旗峰公园" --destination "可园博物馆" \
--origin-city 东莞 --dest-city 东莞

# 公交路线
python3 skills/map/scripts/map.py transit \
--origin "东莞火车站" --destination "松山湖" \
--city1 0769 --city2 0769

步骤五:LLM 综合编排

Agent 拿到所有数据后,由 LLM 进行智能编排:

  • 根据景点位置聚类,减少跨区奔波
  • 根据天气安排室内/室外活动
  • 在景点之间插入餐厅推荐
  • 计算每段路线的耗时,确保行程合理

提示词技巧:让规划更贴心

技巧一:提供约束条件

无约束版本:

帮我规划东莞 3 天行程

有约束版本:

帮我规划东莞 3 天行程:
- 出行方式:自驾
- 住宿区域:松山湖附近
- 偏好:自然风光 > 人文历史 > 商业购物
- 餐饮:喜欢粤菜和海鲜,预算人均 100-200
- 每天不要安排太满,下午留 1-2 小时休息
- 如果有雨天,安排室内活动

技巧二:分阶段规划

不要一次性要求完整行程,而是分阶段:

第一步:帮我搜一下东莞有什么值得去的景点,列个清单

看完清单后:

我对旗峰公园、可园、松山湖感兴趣,帮我把这三个安排到行程里,
再推荐每个景点附近的餐厅。

最后:

帮我查一下这三天的天气,如果有雨天就调整一下顺序。
然后算一下每段路线的驾车时间。

这种分阶段方式让你在每一步都有控制权,避免 Agent 一次性生成一个你不满意的完整行程。

技巧三:利用记忆实现个性化

如果你经常让 Agent 规划旅行,可以建立旅行偏好记忆:

记住我的旅行偏好:
- 不喜欢人多的景点
- 喜欢自然风光和历史古迹
- 吃饭偏好粤菜,不吃辣
- 出行方式通常是自驾
- 每天行程不要超过 3 个景点

技巧四:行程输出为网页

行程规划好之后,帮我做成一个精美的旅行攻略网页,
包含每天的行程卡片、景点图片占位、路线时间、天气信息,
然后部署到线上,我好分享给朋友。

这会触发 web-design 技能,生成一个带 Tailwind CSS 排版的 HTML 行程页面。

技巧五:实时调整

旅行中遇到变化?直接告诉 Agent:

第二天下雨了,帮我把室外的旗峰公园换成室内的东莞科技馆,
重新算一下路线。

Agent 会调用 map 技能重新规划路线,并更新行程。

技术细节:AgentLoop 的多轮编排

旅行规划是 AgentLoop 迭代次数最多的场景之一,通常需要 6-10 轮:

第 1 轮:加载 map 技能 SKILL.md
第 2 轮:搜索景点(map attractions)
第 3 轮:搜索餐厅(map restaurants)
第 4 轮:查询天气(weather forecast)
第 5 轮:计算路线 A→B(map driving)
第 6 轮:计算路线 B→C(map driving)
第 7 轮:LLM 综合编排,生成行程表
(可选)第 8-9 轮:生成 HTML + 部署

AgentLoop 的 max_iterations 默认为 10,刚好覆盖这个场景。如果行程更复杂(5 天以上、多城市),可能需要使用子代理(spawn)来处理。

边界与局限

  • 景点信息有限:高德 API 返回的是 POI 基础信息(名称、地址、评分),不包含详细介绍和图片
  • 餐厅推荐无评价:只有名称和地址,没有用户评价和菜品推荐
  • 公交路线需要城市编码:不是所有用户都知道自己城市的编码(东莞是 0769)
  • 不支持酒店预订:只能推荐区域,不能直接预订

小结

旅行规划是 AI Agent 多技能联动的典型场景——它需要 map(景点+餐厅+路线)、weather(天气)、memory(偏好)、web-design(行程页面)四个技能的协同工作。关键技巧是:提供明确的约束条件、分阶段规划保持控制权、利用记忆系统积累个人偏好。当 Agent 了解你的旅行风格后,一句"帮我规划周末出游"就能得到高度个性化的行程方案。