---
name: MT-Paotui-For-Client
description: 美团跑腿下单助手，通过直接调用地址提单等接口实现用户跑腿需求。支持场景：① 帮取送（A地取件送到B地，支持品类：餐饮、文件、生鲜、蛋糕、鲜花、数码、服饰、快递、五金、汽配等）② 帮买（代购商品）③ 帮取号（餐厅取号、医院挂号、其他取号）④ 帮搬装/帮扔杂物/其他帮忙（骑手到指定地址帮忙）。触发词：跑腿、下跑腿单、美团跑腿、同城配送、取号、挂号、排号、排队、帮搬、帮买、帮扔、帮忙、扔垃圾、寄文件、叫骑手、骑手帮忙、送东西、帮取、配送、帮送、买东西。
---

# 美团跑腿下单 Skill

> ⚠️ **输出规范**：
> 1. **严禁向用户展示任何技术细节**，包括但不限于：英文字段名（如 `businessType`、`bizTypeSceneTag`、`goodTypes`、`goodsWeight`）、JSON 结构、命令行内容、脚本路径、技术参数。执行过程中的中间状态（构造参数、调用接口）不展示，只展示用户需要知道的结果。
> 2. **只展示用户意图相关的信息**：地址摘要（"从 xxx 送到 xxx"）、物品名称、费用卡片、预计时效、操作结果。费用卡片按固定模板逐行展示（见 Step 5）。
> 3. **所有输出必须格式化展示，严格换行**：每个字段独占一行，用空行分隔。禁止将多条信息挤在一行。
> 4. **手机号不脱敏**：地址簿返回的脱敏号码（如 `123****4567`）原样展示，不做额外处理。

> ⚠️ **强制重读**：每次会话第一次触发时，必须重新读取本文件，不得依赖历史记忆。

## When to Use

帮取送、帮买、餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。用户说出"跑腿"、"帮我送"、"帮我取"、"同城配送"等意图时触发。

## When NOT to Use

询问其他业务场景，跨城市配送或者用户明确表示不下单时。

## 风险提示与免责声明：

本 Skill 运行在用户自行选择的独立AI 助手环境中，由用户自行选择的大模型驱动。美团仅提供跑腿相关接口和 Skill 定义，不对 AI 助手的运行环境、大模型安全合规性承担任何责任。

• 用户应确保所使用的 AI 助手已在中国大陆完成安全备案，并符合相关法律法规要求

• 用户应审慎评估 AI 对需求的理解偏差风险，使用本人账号授权操作，确认订单预览后再提交

• 如发现异常订单或 AI 行为异常，请立即联系美团客服处理
---

## 场景识别与分流

收到用户请求后，首先判断属于以下哪种场景，后续流程按对应分支执行：

- **帮取送**：从 A 地取件送到 B 地，需要取件地址 + 收件地址 + 物品信息
- **帮买**：骑手代购商品，需要购买地址 + 收件地址 + 购买物品
- **帮忙**（以下场景统一归为帮忙）：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙。只需一个地址，不涉及物品信息

---

## 安全门控

> ⚠️ 跑腿下单是**真实消费、不可逆操作**：

1. **强制两步确认**：先预览展示费用卡片，等用户明确回复"确认"后才加 `--confirm` 提交。
2. **信息完整性**：取件地址、收件地址缺一不可。电话优先级：用户明确指定的电话 > 地址簿的 `phone` 字段 > 登录账号的手机号。
3. **金额异常拦截**：费用 > 100 元时需额外向用户确认。

---

## 工作流程

**Step 0：登录授权检查**（首次使用或 Token 失效时执行）

1. 执行 `login` 命令检查登录状态（快速返回，不阻塞）：
   ```bash
   sh dist/run.sh login
   ```
2. 检查输出：
   - **输出 `✅ 已登录`** → 直接进入 Step 1
   - **输出 `AUTH_LINK`** → 未登录，需要用户授权
   - **任何接口返回 `code: 10000`**（Token 服务端过期） → 执行 `login --force` 强制重新获取授权链接
3. 当输出 `AUTH_LINK` 时，按以下格式展示给用户：

> 需要先授权美团账号，请完成以下操作后告诉我：
>
> 📱 **手机端**：直接点击下方链接，跳转美团 App 完成授权
> [点击授权]({授权链接})
>
> 💻 **电脑端**：将以下链接复制到手机浏览器打开，再用美团 App 完成授权（链接 10 分钟内有效）：
> `{授权链接}`

4. 用户完成授权后，执行 `confirm_auth` 完成授权：
   ```bash
   sh dist/run.sh confirm_auth
   ```
   - 输出 `✅ 授权成功` → 进入 Step 1
   - 超时或失败 → 提示用户重新执行 `login --force`

> ⚠️ **Token 服务端过期检测**：当业务接口返回 `code: 10000` 时，即使本地缓存存在也应视为 Token 已失效，必须使用 `login --force` 强制刷新。

**Step 1：信息预收集**（静默，不等用户回复）

从对话中提取已知信息（场景/物品/地址），判断场景分流，直接进入 Step 2，**严禁**在登录检查前追问用户任何信息。

**Step 2：拉取地址簿**

登录确认后立即拉取地址簿。

- 用户提到具体地址 → 地址簿模糊匹配，匹配不到再调用 POI 搜索
- 用户未提地址 → 按 `lastUseTime` 降序展示前 3 条，格式：

```
① 地址1-门牌号1
　　王 · 123****4567

② 地址2-门牌号2
　　王 · 134****6789

还有 XX 条地址，可以说关键词筛选
```

询问用户：**"请问用哪个地址？（可以直接说序号或关键词，比如1送到2，也可以直接说新地址）"**

> ⚠️ 地址列表展示也必须格式化，每个地址独占一块（含换行），不得堆砌在一行。

**Step 3：地址确认**

- 选序号 → 直接使用地址簿的坐标和电话，跳过 POI 搜索
- 说关键词 → 地址簿模糊匹配，匹配不到才调用 `search_poi`
- 新地址 → 调用 `search_poi`，电话按以下优先级填入：用户明确说了电话 → 使用用户指定的；未说 → 使用登录账号的手机号，**不追问**
- 用户在任意时刻明确说了取件人或收件人电话 → 覆盖已有电话，使用用户指定的
- 两个地址均需 POI 搜索时 → **并行发起**两条 `search_poi`

**帮取送场景**：需要取件地址 + 收件地址，两个地址都确认后进入 Step 4。

**帮买场景**：先确认收件地址，再询问购买地址：
- 若用户已提供购买地址 → 将该地址填入 `--sender`
- 若用户未提供 → 询问："请问有指定地址购买还是就近购买？"
  - 用户提供地址 → 将该地址填入 `--sender`
  - 用户说"就近购买" → `--sender` 传收件地址，使用 `--business-type-tag 1`

**帮忙场景**：只确认一个地址（帮忙地址），取件地址和收件地址在接口层均填该地址，**不向用户说明这个逻辑**。

**Step 4：物品信息与参数构造**

**帮取送场景**：
- Step 1 已收集物品信息 → 直接使用
- 用户有模糊描述（如"一些东西"、"食物"）→ 直接根据描述匹配最接近的品类，无法匹配的按"其他"处理，**不追问**
- 完全没有任何物品信息 → 追问："请问送什么东西？"
- 根据物品类型查阅 [references/params.md](references/params.md) 的「物品 JSON」章节，得到类型代码、名称和重量默认值（用户告知具体重量时以实际数值为准）

**帮买场景**：
- Step 1 已收集购买物品 → 直接使用
- 未收集 → 追问："请问需要购买什么物品？"
- 帮买场景**不需要对应品类**，物品名称直接使用用户描述

**帮忙场景**：
- **不询问、不收集、不展示任何物品信息**
- 将用户描述的帮忙内容（如"帮扔垃圾"、"帮取号"等）填入 `--remark` 备注字段，让骑手了解具体需求
- 直接进入 Step 5

根据场景查阅 [references/params.md](references/params.md) 的「业务参数」章节，确认服务类型对应的参数组合。**严禁使用旧格式参数。**

如有特殊要求（如备注信息），填入订单备注字段。

**Step 5：预览 → 确认 → 提交**

调用 `preview_and_submit`（不带 `--confirm`）展示费用卡片，用户确认后加 `--confirm` 提交。

**第一步：预览（只展示费用，不提交）**

调用 `preview_and_submit`（不带 `--confirm`），从接口返回结果中提取实际值，按以下模板逐行展示。**所有字段的值必须来自预览接口的实际返回，严禁使用示例值或硬编码值。**

> ⚠️ 模板中用 `{字段名}` 表示占位，展示时必须替换为接口返回的真实数据。

---

### 帮取送 预览模板

🛵 **服务类型** 帮取送

📦 **取件地址** {接口返回的取件地址} · {取件电话}

🏠 **收件地址** {接口返回的收件地址} · {收件电话}

🎁 **物品** {接口返回的物品名称}

📍 **距离** {接口返回的距离}

💰 **配送费** {接口返回的配送费用}

🕐 **预计时效** {接口返回的预计时效}

💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)

---

### 帮买 预览模板

🛵 **服务类型** 帮买

🏪 **购买地址** {用户指定了购买地址时展示接口返回的取件地址；就近购买时直接展示"就近购买"，不展示发件地址}

🏠 **收件地址** {接口返回的收件地址} · {收件电话}

🛍️ **物品** {用户描述的购买物品}

📍 **距离** {接口返回的距离}

💰 **配送费** {接口返回的配送费用}

🕐 **预计时效** {接口返回的预计时效}

💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)

---

### 帮忙 预览模板

（适用于：餐厅取号、医院帮忙、其他取号、帮搬装、帮扔杂物、其他帮忙）

🛵 **服务类型** {接口返回的服务类型，如：帮扔杂物}

📍 **帮忙地址** {接口返回的帮忙地址} · {联系电话}

💰 **帮忙服务费用** {接口返回的费用}

🕐 **预计帮忙时间** {接口返回的预计时效}

💬 **使用反馈** [点击填写问卷有机会获得无门槛红包哦～](https://v.wjx.cn/vm/mBfHfGS.aspx#)

---

然后询问用户：**确认下单吗？**

**第二步：用户确认后，不换参数，直接加确认标识重新提交**。所有参数（取件地址、收件地址、物品名称、物品重量档位、服务类型）必须与预览时完全一致，不得修改任何参数。

下单成功后直接提示：📬 订单已提交！请在 15 分钟内打开美团 App → 我的订单 完成支付 💳，支付成功后骑手才会来取件 🛵

> ⚠️ 费用卡片必须严格按上述模板逐行换行展示，每个字段独占一行，禁止省略或压缩到一行。

---

## 详细参考文档

- [references/commands.md](references/commands.md) — 所有命令及参数（执行方式：`sh dist/run.sh <command>`）
- [references/params.md](references/params.md) — 地址JSON、物品JSON、businessType、城市表
- [references/errors.md](references/errors.md) — 错误码与异常处理
