← 返回 Skill 列表
extension
分类: 开发与工程API Key 暂未确认

周边去哪儿

根据起点坐标和一句话需求,用高德周边搜索与步行路线规划推荐最多 3 个地点。

person作者: AbysswordhubOpenAPI

周边去哪儿

根据用户给出的城市、起点和自然语言需求,推荐附近适合步行前往的地点。一次任务完成「理解需求 → 查询高德 → 筛选 → 回答」。各地点都从同一个起点单独出发,不把它们串成多站行程。

适用场景:用户想在某个起点附近找咖啡馆、餐厅、公园或其他明确类型的地点,并想知道步行能不能在限定时间内到达。调用方会给出明确的起点坐标,不需要做设备定位。

使用的高德工具

使用已经配置好的高德 MCP Server,不要在回答里索要或填写 Key。

| 工具 | 用途 | 关键参数 | | --- | --- | --- | | maps_around_search | 按起点和地点类型做周边搜索 | keywords、location(经度,纬度)、radius(米,可省略) | | maps_direction_walking | 查询从起点到候选地点的步行路线 | origin、destination,均为「经度,纬度」 | | maps_search_detail | 周边结果缺少地址时补全详情 | id(周边搜索返回的 POI ID) | | maps_geo | 只有地名、没有坐标时,把起点转成坐标 | address、city |

步行距离和步行时间只取 maps_direction_walking 返回的 paths 中的 distance(米)和 duration(秒)。不要用直线距离、周边搜索自带的距离、maps_distance 或自行估算来代替步行时间。

步骤

  1. 从用户输入中提取这些字段。缺了就按括号中的默认值处理:
    • 地点类型或搜索关键词(没有类型时,不要猜测一个无关类型)
    • 起点坐标,格式为「经度,纬度」
    • 城市(有坐标时只用于说明;没有坐标时才需要)
    • 步行时间上限,单位分钟(没有上限时不按时间淘汰)
    • 推荐数量,默认 3,最多 3
    • 是否要求优先更近
  2. 起点只有地名时,先调用 maps_geo。地理编码失败就停止推荐,说明起点没有解析成功。
  3. 调用 maps_around_search。keywords 使用用户要的地点类型,例如「咖啡馆」。location 使用起点坐标。设置了步行时间上限时,radius 取 min(50000, 上限分钟数 × 100) 米,只用来扩大候选范围;这个半径不是步行时间。
  4. 周边搜索没有返回地点时,直接进入「结果不足」的回答,不要编造地点。
  5. 候选超过 8 个时,先保留周边结果里距离起点更近的 8 个,再对这 8 个逐个调用 maps_direction_walking。origin 是起点坐标,destination 是该地点的 location。某个地点没有坐标,或步行规划失败,就跳过该地点,并在说明里写明它未能核实步行路线。
  6. 读取每条成功路线的 distance 和 duration。有步行时间上限时,只保留 duration 不超过上限的地点。把秒换成分钟时向上取整到整数分钟,距离换算成千米时保留一位小数。
  7. 用户要求「优先近一点」或没有其他排序要求时,按步行 duration 从短到长排序。步行时间相同再按 distance 从短到长排序。
  8. 取排序后的前 N 个,N 为用户要求的数量且不超过 3。结果里的名称、地址、距离、时间必须来自上述工具返回值。地址为空时,用该地点的 POI ID 调用 maps_search_detail 补一次;仍然没有地址就写「地址未返回」,不要补写一个看起来合理的地址。
  9. 安静程度、排队、口味、营业状态、评分等工具结果里没有的信息,一律不要写成事实。用户提到这些方面时,在推荐理由里标注「未核实」。

回答格式

先用一句话说明起点和筛选条件,再给出表格:

| 地点名称 | 地址 | 预计步行距离 | 预计步行时间 | 推荐理由 | | --- | --- | --- | --- | --- | | 来自高德的名称 | 来自高德的地址 | 由步行路线 distance 换算 | 由步行路线 duration 换算 | 说明它为何符合类型、时间或「更近」 |

推荐理由只引用已经返回的数据,例如「步行 8 分钟,是符合 15 分钟上限里更近的一家咖啡馆」。

结果不足、信息缺失和调用失败

  • 符合条件的地点少于要求数量时,只返回真实符合条件的地点,并写明「符合条件的只有 N 家」。不要为了凑满 3 家加入超时地点,也不要把超时地点放进表格后再声称它符合条件。
  • 一家都没有时,表格可以只有表头。说明是搜索没有结果,还是有结果但步行时间都超过上限。可以建议放宽时间或更换地点类型。
  • maps_around_search 或起点地理编码失败时,不输出任何推荐地点,说明哪一次调用失败,并建议稍后重试或放宽条件。
  • 步行规划部分失败时,只推荐规划成功且符合条件的地点,并说明有候选地点因为没有拿到步行路线而未推荐。
  • 任何情况下都不要编造地点名称、地址、坐标、步行距离或步行时间。
<!-- OB-S:vgoKlqfrKH4VqPkwfQK_0Q -->