← 返回 Skill 列表
extension
分类: 效率与办公API Key 暂未确认

高德周边步行推荐

根据城市、起点坐标和自然语言需求,使用高德地图 MCP 搜索附近地点,逐一查询同一起点的真实步行路线,按步行时间筛选并推荐最多 3 个地点。适用于“附近有什么”“步行 15 分钟内”“优先近一点”等周边探索请求;禁止用直线距离代替步行路线,禁止编造地点、路线或营业状态。

person作者: Eryu1202hubModelScope

高德周边步行推荐

目标

把一句周边探索需求转成可核验的推荐:先在高德搜索真实候选地点,再从同一个起点逐一查询步行路线,按用户的时间和偏好筛选、排序,最多推荐 3 个地点。每个推荐都必须有名称、地址、步行距离、步行时间和一句有数据依据的理由。

输入解析

从用户请求中提取:

  • 城市:用于地点搜索和消歧。
  • 起点:平台通常会给出 经度,纬度 坐标。若用户只给地名,先用 maps_geo(地址转坐标)或 maps_text_search(关键词搜地点)解析;无法唯一确定时,选择该城市内最匹配的结果,并在回答中说明解析出的起点。
  • 地点类型/关键词:咖啡馆、餐厅、公园、便利店等。
  • 步行时间上限:如“15 分钟内”;未给定时不设硬上限,但优先推荐步行时间较短的地点。
  • 推荐数量:用户要求 1~3 个时按用户数量;未指定或要求更多时最多 3 个。
  • 偏好:如“优先近一点”“适合散步”。只使用工具能提供的数据满足偏好;无法核实的偏好(安静、排队、评分等)标注“未核实”。

如果起点缺失且无法从上下文确定,先询问起点;不要用 IP 定位或猜测坐标。

工具调用流程

高德 MCP 的常见工具名为 maps_around_search、maps_text_search、maps_search_detail、maps_direction_walking、maps_geo。以平台实际提供的工具为准;工具名不同但能力对应时,按能力选择。

1. 搜索候选地点

优先使用周边搜索:

maps_around_search(
  location = "<起点经度>,<起点纬度>",
  keywords = "<地点类型或用户关键词>",
  radius   = <米>
)

半径建议:

  • 有步行时间上限时:radius = min(3000, max(800, 上限分钟 × 80))。例如 15 分钟 → 1200 米。
  • 未给时间上限时:使用 1500 米。
  • 半径只是候选范围,不是步行距离;最终是否满足时间必须由步行路线结果判断。

如果周边结果太少,可用 maps_text_search(keywords, city) 补充候选;所有候选仍必须从同一起点查询步行路线。不要只查前 1~2 个候选;对类型匹配的前 10~15 个候选逐一查询路线。

2. 逐一查询步行路线

对每个候选地点,用其坐标调用:

maps_direction_walking(
  origin      = "<起点经度>,<起点纬度>",
  destination = "<候选地点经度>,<候选地点纬度>"
)

从返回的第一条推荐路径读取:

  • 步行距离:米;
  • 步行时间:秒(展示时换算为分钟)。

不要使用 maps_distance 的直线距离模式,也不要用坐标差、地图上“看起来很近”或固定步行速度估算替代路线结果。

3. 筛选与排序

  • 时间过滤:若有上限,只保留 步行时间 ≤ 上限 的候选;超时地点不得列为符合条件的推荐。
  • 类型匹配:排除名称/类型明显不符合用户需求的候选。
  • 去重:同一地点(同名、同地址或同坐标)只保留一条。
  • 排序:
    • 默认按步行时间升序,再按步行距离升序。
    • 用户说“优先近一点”时使用同一排序,并在理由中说明。
    • 用户提出评分、价格、营业状态等偏好但工具未提供对应数据时,不要伪造;说明该维度未核实,再按步行时间排序。
  • 数量:截取前 N 个,N 为用户要求且不超过 3;用户要求更多时说明“最多推荐 3 个”。

4. 生成回答

用列表或表格输出,至少包含:

| 字段 | 要求 | | --- | --- | | 地点名称 | 高德返回的名称,不改写 | | 地址 | 高德返回的地址;缺失时写“地址未提供” | | 步行距离 | 来自步行路线结果,单位米 | | 步行时间 | 来自步行路线结果,单位分钟 | | 推荐理由 | 一句话,引用路线时间/距离/类型等已检索数据 |

示例格式(占位数据,不是真实地点):

在起点步行 15 分钟范围内,找到 2 个符合条件的地点:

| # | 地点 | 地址 | 步行距离 | 步行时间 | 推荐理由 |
| --- | --- | --- | --- | --- | --- |
| 1 | {{地点A}} | {{地址A}} | {{450}} 米 | {{6}} 分钟 | 步行 6 分钟可达,类型为{{咖啡馆}},符合“优先近一点”。 |
| 2 | {{地点B}} | {{地址B}} | {{900}} 米 | {{12}} 分钟 | 步行 12 分钟,在 15 分钟上限内,类型为{{咖啡馆}}。 |

步行距离和时间来自高德步行路线规划;营业状态、排队情况等未核实。

结尾附一句数据来源和未核实项说明。营业状态、排队、安静程度、评分等没有工具数据时,统一标注“未核实”,不能编造。

结果不足或异常处理

  • 周边搜索无结果:如实说明“在起点周边 X 米范围内没有找到符合‘关键词’的地点”,可建议扩大步行时间/半径或更换关键词;不要推荐不存在的地点。
  • 符合条件的不足 N 个:推荐实际数量,并说明“符合条件的地点只有 M 个”;不要用超时或类型不符的地点凑数。
  • 部分路线查询失败:排除失败候选,不影响其他候选;在结尾说明“有 K 个候选的步行路线查询失败,未纳入推荐”。
  • 全部路线查询失败或工具报错:说明高德路线服务暂不可用,不要用直线距离或估算值代替;可重试一次,仍失败则结束并建议稍后再试。
  • 搜索工具报错(Key 无效、配额不足、参数错误):简要说明工具调用失败及原因,不编造结果;不要暴露 Key 或内部配置。

硬性约束

  1. 每个推荐都必须从同一个起点查询过真实步行路线;未查询路线的地点不得推荐。
  2. 步行距离和步行时间只能来自路线规划结果,不能用直线距离、坐标差或经验估算代替。
  3. 不编造地点、地址、坐标、路线、营业状态、排队情况、评分或安静程度。
  4. 最多推荐 3 个;用户要求更少时按用户数量。
  5. 结果不足、查询失败或信息缺失时如实说明,不用无关地点凑数。
  6. 不输出高德 API Key、内部工具配置或与用户需求无关的调试信息。
  7. 用用户使用的语言回答,保持简洁;先给结论,再给表格和必要的说明。

回答前自检

  • [ ] 是否解析了城市、起点、地点类型、时间上限和数量?
  • [ ] 是否用周边搜索或关键词搜索拿到了真实候选?
  • [ ] 是否对每个推荐地点都从同一起点查询了步行路线?
  • [ ] 是否用路线时间过滤了超时地点,并按时间/距离排序?
  • [ ] 是否最多推荐 3 个,且每个都有名称、地址、距离、时间和有依据的理由?
  • [ ] 无结果、结果不足或工具失败时,是否如实说明而没有编造?
<!-- OB-S:BwkT5jdGCxnvQqNSGWMeuA -->