mcpField
D
didi-ride

didi-ride

github.com/acedatacloud其他1786 次安装今天更新
代码仓库

关于 didi-ride

didi-ride 是通过 DiDi MCP 服务操作用户滴滴账户的技能,支持估价、叫车、订单跟踪与取消,以及路线和地点查询;叫车和取消须先预览并获得明确确认。

主要功能

  1. 01估算车费并创建行程
  2. 02查询和取消订单
  3. 03搜索地点并解析地址
  4. 04规划驾车、公交、步行和骑行路线
  5. 05确认前预览受控操作

适用场景

  1. 01叫车前估算费用
  2. 02确认行程信息后预约车辆
  3. 03查看司机和订单状态
  4. 04查找附近地点或比较路线

MCP 相关

该技能通过 `didi` BYOC 连接器及其注入的 `DIDI_MCP_KEY` 连接 DiDi MCP 服务。辅助脚本使用 MCP Streamable-HTTP 列出并调用可用工具。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/acedatacloud/skills --skill didi-ride

安装后在 Claude Code 中输入/didi-ride确认已加载。

附带文件references/api_references.mdscripts/didi.py

详细介绍

滴滴出行(滴滴出行)

通过滴滴 MCP 服务操作用户的 滴滴出行(滴滴出行) 账户: 叫车、估算费用、追踪订单、取消订单和规划路线。

didi BYOC 连接器会向沙盒注入一个环境变量:

  • DIDI_MCP_KEY — 用户的滴滴 MCP 密钥。机密信息 — 切勿回显、打印或记录。

如果缺少 DIDI_MCP_KEY,请告知用户前往 studio.acedata.cloud/console/connectors 连接滴滴连接器 (用户可通过扫描滴滴出行 App 中的二维码获取密钥,或访问 https://mcp.didichuxing.com/claw 获取)。

CLI

此技能提供了一个仅依赖标准库的辅助脚本,用于通过 MCP Streamable-HTTP 协议与滴滴通信。请在下方每个 Bash 代码块开头运行此解析器 — 每次 Bash 调用都会启动一个全新的 Shell,而 $SKILL_DIR 指向本轮最后加载的技能,因此请定位到我们自己的脚本:

DIDI="$SKILL_DIR/scripts/didi.py"; [ -f "$DIDI" ] || DIDI=$(find /tmp -maxdepth 8 -path '*/skills/*/scripts/didi.py' 2>/dev/null | head -1)
[ -f "$DIDI" ] || { echo "didi-ride script not found (SKILL_DIR=$SKILL_DIR)" >&2; exit 1; }

两个命令:

python3 $DIDI list                        # list tools + their JSON input schemas
python3 $DIDI call <tool> '<json-args>'   # call any tool

调用前,请务必查看 references/api_references.md,确认准确的工具和参数名称。 不确定时,运行 python3 $DIDI list — 它会直接从滴滴返回每个工具的权威输入架构。不要猜测参数名称(常见错误:keyword → keywords、region → city、四个坐标字段 → 六个 from_name/from_lat/from_lng/to_name/to_lat/to_lng)。

所有参数值都必须是字符串(包括坐标和 product_category),例如 {"product_category":"1"},而不是 {"product_category":1}。

写入操作的确认门槛(真实费用 / 真实司机)

taxi_create_order 和 taxi_cancel_order 受到确认门槛限制:如果不加末尾的 --confirm,辅助脚本只会进行试运行,不会做任何更改。先在不加 --confirm 的情况下运行一次以预览,待用户批准后,再将 --confirm 作为最后一个参数重新运行:

python3 $DIDI call taxi_create_order '{"estimate_trace_id":"...","product_category":"1"}' --confirm
  • 即使用户说“打车”或“取消订单”,也要先确认具体信息 (叫车时确认起终点和车型;取消时确认订单),然后才能添加 --confirm。
  • 表达取消意图 ≠ 确认取消 — 务必先询问“确认取消吗?”

叫车流程(最小可执行)

  1. 解析地址 — 使用 maps_textsearch(绝不要编造坐标;不要复用之前对话中的坐标 — 用户可能已经移动)。
    • 如果用户提到你不知道的地址别名(家 / 公司 / 等),请询问用户;此技能不会存储偏好设置。
  2. 确认起点和终点 — 如果 maps_textsearch 返回 ≥2 个候选项,至少列出排名前三的选项并让用户选择;如果只有一个准确匹配项,则无需确认。
  3. 估价 — 使用 taxi_estimate;记录返回的 traceId / estimate_trace_id。该 ID 会过期(-32021)— 如果已过期,请重新估价。
  4. 选择车型 — 以用户当前消息为准(“叫快车”→product_category 1,“专车”→8);否则请询问。仅使用 taxi_estimate 响应中包含的类别;绝不要擅自替换为不同服务级别(快车 1 ≠ 特惠快车 201)。
  5. 创建订单 — 使用最新的 estimate_trace_id 调用 taxi_create_order(试运行 → 确认 → --confirm)。
  6. 告知结果 — 提供订单 ID、起终点、车型和预估费用。告知用户可以发送「查询订单」来查看状态。

查询订单

订单 ID 按以下优先级获取:用户消息 → 本次对话中最近创建的订单 → 否则询问用户。

python3 $DIDI call taxi_query_order '{"order_id":"ORDER_ID"}'

状态码(code):

code含义输出
0匹配中⏳ 正在为您匹配司机
1司机已接单展示司机姓名、车型、车牌、电话、距离与预计到达时间
2司机已到达🔔 司机已到达上车点
4行程进行中🚗 行程已开始
5订单完成✅ 行程结束(展示费用,如有)
6系统取消❌ 订单已被系统取消
7已取消❌ 订单已取消
3 / 8-12其他终态显示对应状态描述

路线与地点(无需订单)

python3 $DIDI call maps_direction_driving  '{"from_name":"...","from_lat":"...","from_lng":"...","to_name":"...","to_lat":"...","to_lng":"..."}'
python3 $DIDI call maps_direction_transit  '{...}'   # 公交
python3 $DIDI call maps_direction_walking  '{...}'   # 步行
python3 $DIDI call maps_direction_bicycling '{...}'  # 骑行
python3 $DIDI call maps_place_around '{"keywords":"咖啡","lat":"...","lng":"..."}'
python3 $DIDI call maps_regeocode '{"lat":"...","lng":"..."}'

注意事项

  • 切勿打印密钥或原始端点 URL——辅助程序会处理传输,并将密钥保存在内部。
  • taxi_create_order 只接受 estimate_trace_id、product_category 和可选的 caller_car_phone。不要传入估价中的坐标或名称字段。
  • 不保存偏好设置:此技能不会记住家庭/工作地址或车型——请询问用户,或在更高层接入更丰富的记忆功能。
  • 身份验证失败会显示为 -32002(或 HTTP 401/403):密钥缺失或已过期 → 让用户重新连接连接器。

**设置:**请参阅身份验证。此技能使用 didi 连接器注入的 DIDI_MCP_KEY,而非 ACEDATACLOUD_API_TOKEN。

评论

支持 Markdown