OA0 = Omni AI 0
OA0 是一个探索 AI 的论坛
现在注册
已注册用户请  登录
OA0  ›  技能包  ›  skanetrafiken:瑞典斯考内省 (Skåne) 公共交通规划

skanetrafiken:瑞典斯考内省 (Skåne) 公共交通规划

 
  migration ·  2026-02-05 00:29:06 · 3 次点击  · 0 条评论  

名称: skanetrafiken
描述: 瑞典斯科讷省公共交通行程规划工具(Skånetrafiken)。规划巴士/火车行程,包含实时延误信息。支持车站、地址、地标以及前往哥本哈根的跨境行程。
许可证: MIT
compatibility: 需要 curl 和 jq。适用于 Claude Code 及兼容的智能体。
元数据:
author: rezkam
version: "1.2.0"
region: sweden


Skånetrafiken 行程规划器

使用实时出发信息规划瑞典斯科讷省的公共交通行程。

命令

1. 搜索地点

搜索车站、地址或兴趣点。

./search-location.sh <查询词> [数量限制]
参数 描述
查询词 要搜索的地点名称
数量限制 显示的结果数量(默认:3,最大:10)

输出包含:
- ID - 地点标识符(在行程搜索中使用)
- 名称 - 地点官方名称
- 类型 - STOP_AREA(车站)、ADDRESS(地址)或 POI(兴趣点)
- 区域 - 地区/市镇
- 坐标 - 纬度,经度

何时增加数量限制:
- 第一个结果不符合用户意图
- 用户查询词有歧义(例如,“station”、“centrum”)
- 需要向用户展示多个选项以供选择

2. 行程搜索

使用地点 ID 规划两个地点之间的行程。

./journey.sh <起点ID> <起点类型> <终点ID> <终点类型> [日期时间] [模式]
参数 描述
起点ID 起点地点 ID(来自搜索)或坐标(纬度#经度
起点类型 STOP_AREAADDRESSPOILOCATION(用于坐标)
终点ID 终点地点 ID 或坐标
终点类型 终点类型
日期时间 可选:"18:30""tomorrow 09:00""2026-01-15 09:00"
模式 可选:"depart"(默认)或 "arrive"

重要提示: 行程 API 仅接受 STOP_AREALOCATION 类型。对于 ADDRESSPOI 结果,请使用坐标作为 纬度#经度,类型为 LOCATION


理解用户时间意图

在搜索之前,请理解用户的需求:

意图类型

用户表述 意图 如何查询
"现在"、"下一班车"、"我怎么去" 立即出行 不使用日期时间参数
"30分钟后"、"1小时后"、"午饭后" 稍后出发 计算时间,使用 depart 模式
"15:00左右"、"下午某个时间" 大约时间 使用偏移时间查询(见下文)
"18:00前到达"、"需要在9点到达" 在指定时间前到达 使用 arrive 模式
"明天早上"、"周五10点" 未来时间 使用具体的日期时间

处理“大约时间”查询

当用户想要“大约”某个时间的选项时,提前 15-30 分钟查询以显示前后的选项:

# 用户:"我想在15:00左右出行"
# 在14:30查询以获取跨越14:30-16:00+的选项
./journey.sh ... "14:30" depart

相对时间计算

将相对时间转换为绝对时间:

用户表述 当前:14:00 查询时间
"30分钟后" "14:30"
"1小时后" "15:00"
"2小时后" "16:00"

LLM 响应格式

向用户呈现行程结果时,请使用以下表情符号和格式指南。

表情符号参考

表情符号 用途
🚂 火车(Pågatåg、Öresundståg)
🚌 巴士
🚇 地铁(哥本哈根)
🚋 有轨电车
⛴️ 渡轮
🚶 步行路段
⏱️ 时间/时长
🕐 出发时间
🏁 到达时间
📍 站点/车站
🏠 起点(家/起点)
🎯 目的地
⚠️ 延误或中断
准点
🔄 换乘/转车
🛤️ 站台/轨道

响应结构

始终包含工具输出中的这些关键要素:

  1. 何时出发 - 用户需要开始的实际时间(包括步行)
  2. 步行路段 - 任何步行的距离和时间
  3. 交通工具出发 - 巴士/火车实际离开的时间
  4. 到达时间 - 用户到达目的地的时间
  5. 任何延误 - 显示与时刻表的偏差

响应格式示例

对于简单的直达行程:

🏠 **09:00 从家出发**

🚶 步行 450 米至 Möllevångstorget(5 分钟)

📍 **Möllevångstorget** → 🎯 **Malmö C**
🚌 5 路巴士 09:07 从 Möllevångstorget 出发
🏁 09:18 到达 Malmö C

⏱️ 总计:18 分钟

对于包含换乘的行程:

🏠 **08:45 出发**

🚶 步行 300 米至 Västra Hamnen(4 分钟)

📍 **Västra Hamnen** → 🔄 **Malmö C** → 🎯 **Lund C**

**第一段:**
🚌 2 路巴士 08:51 出发 [🛤️ 站台 A]
🏁 09:05 到达 Malmö C

🔄 在 Malmö C 换乘(6 分钟)

**第二段:**
🚂 Pågatåg 09:11 出发 [🛤️ 4 号轨道]
🏁 09:23 到达 Lund C

⏱️ 总计:38 分钟 | 🔄 1 次换乘

包含延误:

🕐 **14:30 从 Triangeln 出发**

🚂 Öresundståg 1042 → København H
⚠️ 延误 +8 分钟(预计 14:38 而非 14:30)
🏁 约 15:25 到达(正常为 15:17)

步行路段详情

关键:始终显示工具输出中的步行详情:

  • 以米为单位的距离(来自 line.distance
  • 在“出发时间”计算中包含步行时间
  • 在行程的开始和结束都显示步行

工具输出示例:

→ WALK 450m from Kalendegatan to Möllevångstorget

格式化为:

🚶 步行 450 米至 Möllevångstorget(约 5 分钟)

步行时间估算:约 100 米/分钟(正常步行速度)

呈现多个选项

在显示行程选项时,请清晰地说明时间:

我为您找到了 3 个选项:

**选项 1 - 现在出发(09:00)** ✅ 推荐
🚶 5 分钟步行 → 🚌 5 路巴士 09:07 → 09:25 到达
⏱️ 总计:25 分钟

**选项 2 - 15 分钟后出发(09:15)**
🚶 5 分钟步行 → 🚌 5 路巴士 09:22 → 09:40 到达
⏱️ 总计:25 分钟

**选项 3 - 30 分钟后出发(09:30)**
🚶 5 分钟步行 → 🚂 火车 09:37 → 09:48 到达
⏱️ 总计:18 分钟 | 更快但出发更晚

时间偏移表示法

对出发时间使用清晰的表示法:

表示法 含义
"现在" 立即
"15分钟后" 从现在起 15 分钟
"1小时后" 从现在起 1 小时
"14:30" 特定时间

LLM 工作流程:如何规划行程

当用户请求行程时,请遵循此工作流程:

步骤 1:理解时间意图

解析用户的需求:
- "我怎么去..." → 立即出行
- "我需要在 18:00 到达那里" → 到达模式
- "大约下午 3 点左右" → 查询 14:30,显示时间范围
- "大约一小时后" → 从当前时间计算

步骤 2:搜索两个地点

分别搜索起点和目的地:

./search-location.sh "Malmö C"
./search-location.sh "Emporia"

步骤 3:验证搜索结果

仔细检查每个结果:

  1. 完全匹配还是接近匹配? - 如果名称与用户询问的匹配,则继续。
  2. 返回了多个结果? - 脚本最多显示 10 个匹配项。如果第一个结果明显不正确,请询问用户确认。
  3. 名称差异很大? - 如果用户询问“Hyllie 附近的商场”而结果显示“Emporia”,请向用户确认:“我找到了 Hyllie 附近的 Emporia 购物中心。是这个吗?”
  4. 未找到结果? - 尝试替代策略(见下文)。

步骤 4:处理模糊或失败的搜索

当结果不匹配或模糊时,请提出澄清性问题:

我搜索了“centrum”并找到了多个地点:
1. Malmö Centrum(巴士站)
2. Lund Centrum(巴士站)
3. Helsingborg Centrum(巴士站)

您指的是哪一个?

当未找到结果时,请尝试以下策略:

  1. 尝试为地址添加城市名:
    bash # 如果“Storgatan 10”失败,请尝试: ./search-location.sh "Storgatan 10, Malmö"

  2. 尝试官方车站名称:
    bash # 如果“Malmö station”失败,请尝试: ./search-location.sh "Malmö C"

  3. 仅尝试地标名称(不带城市):
    bash # 如果“Emporia, Malmö”失败,请尝试: ./search-location.sh "Emporia"

  4. 最后手段:使用坐标:

    • 如果您知道大致位置,请直接使用 纬度#经度 格式
    • 询问用户:“我找不到该地点。您能提供地址或坐标吗?”

步骤 5:为行程 API 转换类型

行程 API 仅接受:
- STOP_AREA - 巴士/火车站(直接使用 ID)
- LOCATION - GPS 坐标作为 纬度#经度

如果搜索返回 ADDRESS 或 POI:
- 使用搜索结果中的坐标
- 格式化为 纬度#经度,类型为 LOCATION

示例:

# 搜索结果:ID: 123,类型:ADDRESS,坐标:55.605, 13.003
# 在行程中使用:
./journey.sh "55.605#13.003" LOCATION 9021012080000000 STOP_AREA

步骤 6:执行行程搜索

一旦您确认了两个地点的 ID/坐标:

./journey.sh <起点ID> <起点类型> <终点ID> <终点类型> [日期时间] [模式]

步骤 7:使用表情符号格式化响应

使用上面的表情符号指南清晰地呈现结果。始终使用工具输出中的实际数字 - 切勿推测或估算。


查询格式规则

搜索 API 对格式敏感。请遵循以下规则:

地标和兴趣点:仅使用名称

使用地标名称,不带城市名。

# 正确
./search-location.sh "Emporia"
./search-location.sh "Triangeln"
./search-location.sh "Turning Torso"

# 错误 - 城市名会破坏兴趣点搜索
./search-location.sh "Emporia, Malmö"        # 可能返回错误地点!
./search-location.sh "Triangeln, Malmö"      # 不必要,可能失败

街道地址:包含城市名

包含城市名以提高准确性。

# 正确
./search-location.sh "Kalendegatan 12, Malmö"
./search-location.sh "Storgatan 25, Lund"
./search-location.sh "Drottninggatan 5, Helsingborg"

# 有风险 - 可能有歧义
./search-location.sh "Kalendegatan 12"       # 如果无歧义则有效

火车站:使用官方名称

对中央车站使用“C”后缀。

# 正确
./search-location.sh "Malmö C"
./search-location.sh "Lund C"
./search-location.sh "Helsingborg C"
./search-location.sh "Malmö Hyllie"
./search-location.sh "Malmö Triangeln"

# 错误
./search-location.sh "Malmö"                 # 有歧义!
./search-location.sh "Malmö Central"         # 非官方名称
./search-location.sh "Lund station"          # 非官方名称

哥本哈根(跨境)

使用丹麦语名称或常见替代名称。

# 都有效
./search-location.sh "København H"
./search-location.sh "Nørreport"
./search-location.sh "Copenhagen Airport"
./search-location.sh "Köpenhamn"

示例

示例 1:立即出行

用户:“我怎么从 Malmö C 到 Lund C?”

./search-location.sh "Malmö C"
./search-location.sh "Lund C"
./journey.sh 9021012080000000 STOP_AREA 9021012080040000 STOP_AREA

响应:

🏠 **现在从 Malmö C 出发**

📍 **Malmö C** → 🎯 **Lund C**
🚂 Öresundståg 1324 09:04 出发 [🛤️ 2b 号轨道]
🏁 09:16 到达 Lund C [🛤️ 1 号轨道]

⏱️ 总计:12 分钟 | ✅ 直达,无需换乘

示例 2:包含步行的地址

用户:“我需要从马尔默的 Kalendegatan 12 去 Emporia”

./search-location.sh "Kalendegatan 12, Malmö"
./search-location.sh "Emporia"
./journey.sh "55.595#13.001" LOCATION "55.563#12.973" LOCATION

响应:

🏠 **10:05 出发**

🚶 步行 320 米至 Möllevångstorget(约 3 分钟)

📍 **Möllevångstorget** → 🎯 **Emporia**
🚌 32 路巴士 10:10 出发
🏁 10:28 到达 Emporia

🚶 步行 150 米至目的地(约 2 分钟)

⏱️ 总计:25 分钟

示例 3:在指定时间前到达

用户:“我需要在明天 18:00 前到达哥本哈根中央车站”

./search-location.sh "Malmö C"
./search-location.sh "København H"
./journey.sh 9021012080000000 STOP_AREA 9921000008600626 STOP_AREA "tomorrow 18:00" arrive

响应:

🎯 **18:00 前到达** København H

📍 **Malmö C** → 🎯 **København H**
🚂 Öresundståg **17:21** 出发 [🛤️ 1 号轨道]
🏁 **17:56** 到达 ✅ 4 分钟缓冲时间

⏱️ 行程:35 分钟

💡 请在 17:21 前从 Malmö C 出发以准时到达!

示例 4:大约时间查询

用户:“我想在 15:00 左右去隆德”

# 提前 30 分钟查询以显示 15:00 左右的选项
./journey.sh 9021012080000000 STOP_AREA 9021012080040000 STOP_AREA "14:30"

响应:

Malmö C → Lund C 在 15:00 左右的选项:

**选项 1 - 14:34 出发**(25 分钟后)
🚂 Pågatåg → 14:52 到达
⏱️ 18 分钟

**选项 2 - 14:49 出发**(40 分钟后)
🚂 Öresundståg → 15:01 到达
⏱️ 12 分钟

**选项 3 - 15:04 出发**(55 分钟后) ✅ 最接近 15:00
🚂 Pågatåg → 15:22 到达
⏱️ 18 分钟

哪个最适合您?

示例 5:相对时间

3 次点击  ∙  0 人收藏  
登录后收藏  
0 条回复
About   ·   Help   ·    
OA0 - Omni AI 0 一个探索 AI 的社区
沪ICP备2024103595号-2
Developed with Cursor