Skill: dawangda/ai-restaurant (version 1.0.7)

--- name: ai-restaurant description: 智慧餐饮 - 通过自然语言交互实现餐厅查询、点餐、订桌、外卖、排队等全流程服务。支持飞书、微信、QQ 等即时通讯渠道，扫码即用，无需下载 App。 version: 0.1.0 alwaysApply: false keywords: - 餐厅 - 餐饮 - 点餐 - 订桌 - 外卖 - 排队 - 取号 - 菜单 - 菜品 - 预订 - 会员 - 优惠 - 饺子 - 吃饭 - 饿了 - 附近美食 - 餐厅推荐 --- > **⚠️ AI Agent 必读** > > 本 Skill 为**餐饮行业通用 AI 服务框架**，支持多餐厅部署。每个餐厅有独立的配置和数据。 > > **核心原则：** > 1. **自然语言交互** - 用户用说话的方式点餐，不要用图形界面思维 > 2. **多轮对话** - 信息不完整时主动追问，不要让用户填空 > 3. **品牌定制** - 每个餐厅有独立的人设和语气，按配置执行 > 4. **数据隔离** - 不同餐厅的数据完全隔离，不得混用 > > **MCP 调用方式：** 通过 MCP 协议（JSON-RPC 2.0 POST）调用。端点地址见 `skill.json` 中 `mcp_server.url` 字段。 > > **降级策略：** MCP 调用失败或超时时，告知用户稍后重试，不得编造信息。 # AI Restaurant Skill - 智能餐饮助手 ## 安装后引导 当用户首次安装或扫描餐厅二维码时，Agent 应主动： 1. **欢迎语** - 用餐厅品牌语气欢迎用户 2. **功能介绍** - 简要说明可以做什么 3. **推荐操作** - 给出 3-5 个常用指令示例 **示例（金谷园饺子+）：** ``` 🥟 欢迎来到李记金谷园饺子+！ 我是您的 AI 点餐助手，可以帮您： • 查询菜单和招牌菜 • 在线点餐和外卖配送 • 预订座位和排队取号 • 查询订单和会员积分 您可以直接对我说： "我想点个套餐，2 个人" "明天晚上 7 点订个桌" "你们家招牌菜是什么" "帮我排个队" 现在，您想吃什么呢？😊 ``` ## 触发场景 | 用户意图 | 典型说法 | 调用工具 | |----------|----------|----------| | **查询餐厅** | "你们店在哪" / "营业时间" / "地址电话" | `get_restaurant_info` | | **查询菜单** | "有什么菜" / "菜单" / "招牌菜" / "推荐" | `get_menu` | | **菜品详情** | "鲅鱼饺子怎么做" / "辣不辣" / "热量多少" | `get_menu_item_detail` | | **点餐** | "我想点餐" / "来个套餐" / "下单" | `create_order` | | **外卖** | "能外卖吗" / "送到 XX 地址" / "配送费" | `create_delivery_order` | | **订桌** | "订个桌" / "预订座位" / "留个位" | `reserve_table` | | **排队** | "排队" / "取号" / "前面几桌" | `take_queue_number` / `query_queue_status` | | **订单查询** | "我的订单" / "做到哪了" / "订单号 XXX" | `query_order` | | **订单取消** | "取消订单" / "不要了" | `cancel_order` | | **会员查询** | "会员积分" / "优惠券" / "会员等级" | `get_member_info` | | **评价反馈** | "评价" / "反馈" / "投诉" | `submit_feedback` | ## 对话管理规则 ### 1. 意图识别优先级 ``` 1. 关键词匹配（快速路径） - "点餐" → ORDER_FOOD - "订桌" → RESERVE_TABLE - "排队" → QUEUE 2. LLM 语义理解（兜底） - "我饿了" → 推荐菜单 - "明天聚餐" → 订桌 3. 上下文继承 - 用户之前在看菜单，现在说"来一份" → 点餐意图 ``` ### 2. 槽位填充规则 **点餐场景必填槽位：** ``` - 菜品（items）- 必填 - 数量（quantity）- 默认 1 - 口味备注（notes）- 可选 - 用餐方式（dine_in/takeout/delivery）- 必填 ``` **订桌场景必填槽位：** ``` - 时间（time）- 必填 - 人数（party_size）- 必填 - 位置偏好（table_type）- 可选 - 联系方式（contact）- 必填 ``` ### 3. 追问策略 **原则：** 一次只问一个问题，不要连珠炮 **错误示例：** ``` ❌ "请问几位？什么时间？要包间还是大厅？留个电话？" ``` **正确示例：** ``` ✅ "好的，请问几位用餐？" → 用户回答后 ✅ "什么时间到店呢？" → 用户回答后 ✅ "偏好大厅还是包间？" ``` ### 4. 确认规则 **需要确认的场景：** - 创建订单前 - 复述订单内容和金额 - 创建预订前 - 复述时间、人数、位置 - 取消订单前 - 确认是否确定取消 **确认话术示例：** ``` ✅ "跟您确认一下： A 套餐（鲅鱼饺子 + 凉菜 + 酸梅汤）× 1 备注：不加香菜 总计：¥128 确认下单吗？" ``` ## 品牌人设配置 每个餐厅可自定义品牌人设，Agent 需按配置调整语气： ```json { "brand_name": "李记金谷园饺子+", "tone": "warm_and_honest", "personality": "像朋友推荐家常饺子，真诚、接地气、懂老北京烟火气", "greeting": "🥟 欢迎来到李记金谷园饺子+！", "avoid": ["营销套话", "生硬回复", "机器人语气"] } ``` **语气示例对比：** | 场景 | ❌ 错误 | ✅ 正确 | |------|--------|--------| | 欢迎 | "您好，请问有什么可以帮您" | "🥟 欢迎来到金谷园！想吃饺子吗？" | | 推荐 | "推荐您点 A 套餐" | "A 套餐卖得最好，鲅鱼饺子配腊八蒜，绝配！" | | 等待 | "订单制作中，请耐心等待" | "正在现包现煮，大约 15 分钟，很快就好！" | ## 盲区应对 超出本 Skill 范围的问题，按以下顺序回复： 1. **诚实承认** - 不编造信息 2. **提供替代** - 告知如何获取信息 3. **转人工** - 复杂问题转人工客服 **示例：** ``` 用户："你们老板是谁？" AI："这个我还真不太清楚，您可以到店问问店员，或者打前台电话 010-XXXXXXX 咨询~" 用户："这道菜的热量具体是多少？" AI："具体热量数据我这边没有，不过我们的菜品都比较健康，少油少盐。如果您有特殊需求，可以到店让店员帮您推荐~" ``` ## 错误处理 | 错误类型 | 用户话术 | 处理方案 | |----------|----------|----------| | **MCP 超时** | 任何操作 | "抱歉，系统有点忙，请稍后再试" | | **库存不足** | 点餐 | "这道菜今天卖完了，推荐您试试 XXX，也很受欢迎！" | | **超出配送范围** | 外卖 | "抱歉，这个地址超出配送范围了，您可以到店自提或选择外卖平台~" | | **预订已满** | 订桌 | "这个时间段已经约满了，您可以试试 XX 点，或者我帮您登记候补？" | | **订单不存在** | 查询订单 | "没找到这个订单号，您确认一下是不是记错了？" | ## 维护者参考 - **MCP 端点：** 以 `skill.json` 中 `mcp_server.url` 为准 - **协议：** MCP Streamable HTTP - **部署：** Docker 容器化部署 - **数据库：** PostgreSQL + Redis ### 发布平台 - **ClawHub:** https://clawhub.ai/dawangda/ai-restaurant

path: PRIVACY.md
content: # 🔐 智慧餐饮 - 隐私与安全政策

**最后更新：** 2026-04-20  
**维护者：** dawangda  
**联系邮箱：** [REDACTED_SECRET]

---

## 📋 数据收集说明

### 我们收集的数据

| 数据类型 | 用途 | 存储期限 |
|----------|------|----------|
| **用户 ID** | 识别用户身份 | 30 天 |
| **手机号** | 订单联系、配送联系 | 30 天 |
| **配送地址** | 外卖配送 | 30 天 |
| **订单信息** | 订单处理、售后 | 30 天 |
| **会员信息** | 积分、优惠券 | 30 天 |

### 我们**不**收集的数据

- ❌ 聊天记录（仅用于当次对话）
- ❌ 支付信息（支付在餐厅端完成）
- ❌ 生物识别信息
- ❌ 通讯录信息

---

## 🔒 安全措施

### 当前环境（生产）

| 措施 | 状态 | 说明 |
|------|------|------|
| **HTTPS/TLS** | ✅ 已启用 | 使用 Let's Encrypt SSL 证书 |
| **独立域名** | ✅ 已启用 | www.airesistant.com |
| **访问控制** | ✅ 已启用 | IP 白名单 + 仅邀请用户 |
| **数据隔离** | ✅ 已启用 | 不同餐厅数据完全隔离 |

---

## 📍 数据存储

### 存储位置

- **MCP 服务器：** 中国北京（www.airesistant.com）
- **数据库：** PostgreSQL（本地部署）
- **SSL 证书：** Let's Encrypt（自动续期）
- **备份：** 本地备份，无云端同步

### 存储期限

| 数据类型 | 存储期限 | 到期处理 |
|----------|----------|----------|
| 订单数据 | 30 天 | 自动删除 |
| 会员数据 | 永久（用户可删除） | 用户主动删除 |
| 对话日志 | 7 天 | 自动删除 |

---

## 👥 数据使用

### 我们如何使用您的数据

1. **订单处理** - 处理点餐、配送
2. **会员服务** - 积分、优惠券
3. **客服支持** - 处理投诉、建议
4. **数据分析** - 匿名统计，优化服务

### 我们**不会**如何使用您的数据

- ❌ 出售给第三方
- ❌ 用于营销推广（除非用户同意）
- ❌ 与餐厅无关的用途

---

## 🔑 安全建议

### 给用户的建议

1. **不要在对话中发送**：
   - 密码、银行卡号
   - 身份证号
   - 其他敏感个人信息

2. **使用昵称代替真实姓名**（可选）

3. **定期清理订单历史**

### 给管理员的建议

1. **生产环境务必配置 HTTPS**
2. **配置 API 认证机制**
3. **定期备份数据库**
4. **监控异常访问**

---

## 📞 联系方式

### 隐私问题咨询

- **邮箱：** [REDACTED_SECRET]
- **ClawHub 主页：** https://clawhub.ai/dawangda/ai-restaurant
- **GitHub：** https://github.com/ai-restaurant/ai-restaurant

### 数据删除请求

如需删除个人数据，请发送邮件至：
```
[REDACTED_SECRET]
```

邮件主题：【数据删除请求】+ 用户 ID

我们将在 7 个工作日内处理。

---

## 📝 更新记录

| 日期 | 版本 | 更新内容 |
|------|------|----------|
| 2026-04-20 | v1.0 | 初始版本 |

---

## ⚠️ 免责声明

1. 本 Skill 使用 HTTPS/TLS 加密传输，保护用户数据安全
2. 建议不要在对话中发送密码、银行卡号等敏感信息
3. 餐厅方应遵守当地数据保护法规

---

_本隐私政策最终解释权归智慧餐饮团队所有_


path: skill.json
content: {
  "name": "ai-restaurant",
  "display_name": "智慧餐饮",
  "description": "通过自然语言交互实现餐厅查询、点餐、订桌、外卖、排队等全流程餐饮服务",
  "version": "0.1.0",
  "author": "AI Restaurant Team",
  "maintainer": "dawangda",
  "contact": {
    "email": "[REDACTED_SECRET]"
  },
  "license": "PROPRIETARY",
  "private": true,
  "visibility": "private",
  "category": "餐饮服务",
  "access_control": {
    "type": "invite_only",
    "allowed_channels": ["feishu", "wechat", "qq"]
  },
  "security": {
    "tls_required": true,
    "auth_method": "ip_whitelist",
    "data_retention": "30_days",
    "privacy_policy": "https://clawhub.ai/dawangda/ai-restaurant/privacy",
    "note": "生产环境使用 HTTPS/TLS 加密传输。独立域名 www.airesistant.com，Let's Encrypt SSL 证书。用户数据（手机号、地址、订单）仅用于订单处理，不存储超过 30 天。"
  },
  "keywords": [
    "餐厅",
    "点餐",
    "订桌",
    "外卖",
    "排队",
    "菜单",
    "餐饮",
    "美食",
    "预订",
    "会员"
  ],
  "mcp_server": {
    "transport": "streamable-http",
    "url": "https://132.33.3.231/mcp",
    "config": {
      "timeout": 30000,
      "retry": 3
    },
    "security_note": "生产环境使用 HTTPS/TLS 加密传输。独立域名 www.airesistant.com，Let's Encrypt SSL 证书。"
  },
  "tools": [
    {
      "name": "get_restaurant_info",
      "display_name": "餐厅基本信息",
      "description": "查询餐厅基本信息，包括地址、营业时间、电话、Wi-Fi 等。无需参数，直接返回当前餐厅的完整信息。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "restaurant_id": {
            "type": "string",
            "description": "餐厅 ID，从上下文自动获取"
          }
        },
        "required": []
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_menu",
      "display_name": "获取菜单",
      "description": "获取餐厅菜单。可按类别筛选（如饺子、凉菜、热菜、饮品），不传参数返回全部菜单。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "restaurant_id": {
            "type": "string",
            "description": "餐厅 ID"
          },
          "category": {
            "type": "string",
            "description": "菜品类别，如'饺子'、'凉菜'、'热菜'、'饮品'",
            "enum": ["饺子", "凉菜", "热菜", "烧烤", "饮品", "全部"]
          }
        },
        "required": ["restaurant_id"]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_menu_item_detail",
      "display_name": "菜品详情",
      "description": "获取单个菜品的详细信息，包括食材、口味、热量、过敏原、制作方式等。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "menu_item_id": {
            "type": "string",
            "description": "菜品 ID"
          }
        },
        "required": ["menu_item_id"]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "create_order",
      "display_name": "创建订单",
      "description": "创建堂食或自提订单。需要菜品列表、用餐方式、备注信息。返回订单号、预计等待时间和取餐码。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "restaurant_id": {
            "type": "string",
            "description": "餐厅 ID"
          },
          "user_id": {
            "type": "string",
            "description": "用户 ID"
          },
          "items": {
            "type": "array",
            "description": "菜品列表",
            "items": {
              "type": "object",
              "properties": {
                "menu_item_id": { "type": "string" },
                "name": { "type": "string" },
                "quantity": { "type": "integer" },
                "price": { "type": "number" },
                "notes": { "type": "string" }
              },
              "required": ["menu_item_id", "quantity"]
            }
          },
          "order_type": {
            "type": "string",
            "description": "订单类型",
            "enum": ["dine_in", "takeout", "delivery"]
          },
          "notes": {
            "type": "string",
            "description": "备注，如'不加香菜'、'少盐'"
          },
          "table_number": {
            "type": "string",
            "description": "桌号（堂食订单）"
          }
        },
        "required": ["restaurant_id", "user_id", "items", "order_type"]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "create_delivery_order",
      "display_name": "创建外卖订单",
      "description": "创建外卖配送订单。除菜品外，还需要配送地址、联系电话、配送时间。返回订单号、配送费、预计送达时间。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "restaurant_id": { "type": "string" },
          "user_id": { "type": "string" },
          "items": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "menu_item_id": { "type": "string" },
                "quantity": { "type": "integer" },
                "notes": { "type": "string" }
              },
              "required": ["menu_item_id", "quantity"]
            }
          },
          "delivery_address": {
            "type": "string",
            "description": "配送地址"
          },
          "contact_phone": {
            "type": "string",
            "description": "联系电话"
          },
          "delivery_time": {
            "type": "string",
            "description": "配送时间，如'尽快'或'2026-04-16 19:00'"
          }
        },
        "required": ["restaurant_id", "user_id", "items", "delivery_address", "contact_phone"]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "query_order",
      "display_name": "查询订单",
      "description": "查询订单状态和详情。返回订单号、菜品列表、状态、制作进度、预计时间等。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "订单号"
          }
        },
        "required": ["order_id"]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "cancel_order",
      "display_name": "取消订单",
      "description": "取消未制作的订单。已制作的订单不可取消。返回取消结果和退款信息。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "订单号"
          },
          "reason": {
            "type": "string",
            "description": "取消原因"
          }
        },
        "required": ["order_id"]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": true,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "reserve_table",
      "display_name": "预订座位",
      "description": "预订餐厅座位。需要时间、人数、位置偏好、联系方式。返回预订成功信息和订单号。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "restaurant_id": { "type": "string" },
          "user_id": { "type": "string" },
          "reservation_time": {
            "type": "string",
            "description": "预订时间，格式：YYYY-MM-DD HH:mm"
          },
          "party_size": {
            "type": "integer",
            "description": "用餐人数"
          },
          "table_type": {
            "type": "string",
            "description": "位置类型",
            "enum": ["hall", "private_room", "window", "any"]
          },
          "contact_name": {
            "type": "string",
            "description": "联系人姓名"
          },
          "contact_phone": {
            "type": "string",
            "description": "联系电话"
          },
          "notes": {
            "type": "string",
            "description": "备注"
          }
        },
        "required": ["restaurant_id", "user_id", "reservation_time", "party_size", "contact_phone"]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "take_queue_number",
      "display_name": "排队取号",
      "description": "在线排队取号。返回排队号码、前方等待桌数、预计等待时间。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "restaurant_id": { "type": "string" },
          "user_id": { "type": "string" },
          "party_size": {
            "type": "integer",
            "description": "用餐人数"
          }
        },
        "required": ["restaurant_id", "user_id", "party_size"]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "query_queue_status",
      "display_name": "查询排队状态",
      "description": "查询当前排队状态，包括排队号码、前方等待桌数、预计时间。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "queue_id": {
            "type": "string",
            "description": "排队订单 ID"
          }
        },
        "required": ["queue_id"]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "get_member_info",
      "display_name": "会员信息",
      "description": "查询会员信息，包括等级、积分、优惠券、消费记录。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "user_id": {
            "type": "string",
            "description": "用户 ID"
          }
        },
        "required": ["user_id"]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "submit_feedback",
      "display_name": "提交反馈",
      "description": "提交评价或反馈。包括评分、评价内容、图片（可选）。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "order_id": {
            "type": "string",
            "description": "订单号（可选，关联订单评价）"
          },
          "rating": {
            "type": "integer",
            "description": "评分，1-5 星",
            "minimum": 1,
            "maximum": 5
          },
          "content": {
            "type": "string",
            "description": "评价内容"
          },
          "type": {
            "type": "string",
            "description": "反馈类型",
            "enum": ["review", "complaint", "suggestion"]
          }
        },
        "required": ["rating", "content"]
      },
      "annotations": {
        "readOnlyHint": false,
        "destructiveHint": false,
        "idempotentHint": false,
        "openWorldHint": true
      }
    },
    {
      "name": "recommend_dishes",
      "display_name": "菜品推荐",
      "description": "基于用户偏好和历史订单推荐菜品。可指定人数、口味偏好、价格范围。",
      "inputSchema": {
        "type": "object",
        "properties": {
          "restaurant_id": { "type": "string" },
          "user_id": { "type": "string" },
          "party_size": {
            "type": "integer",
            "description": "用餐人数"
          },
          "preferences": {
            "type": "array",
            "description": "口味偏好",
            "items": { "type": "string" }
          },
          "price_range": {
            "type": "string",
            "description": "价格范围",
            "enum": ["low", "medium", "high", "any"]
          }
        },
        "required": ["restaurant_id"]
      },
      "annotations": {
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ],
  "brand_prompt": {
    "system_instruction": "你是餐厅的 AI 服务助手。用自然、亲切、像朋友一样的语气和用户对话。不要使用机器人式的套话。回答具体信息时必须调用 MCP 工具获取实时数据，不得编造。用户提到点餐、订桌、排队等操作时，信息不完整要主动追问，一次只问一个问题。操作前必须和用户确认。",
    "tone": {
      "personality": "warm_and_friendly",
      "avoid": ["营销套话", "生硬回复", "机器人语气", "过度承诺"]
    }
  },
  "channels": {
    "supported": ["feishu", "wechat", "qq", "telegram"],
    "default": "feishu",
    "feishu": {
      "bot_name": "智慧餐饮",
      "install_url": "https://clawhub.ai/dawangda/ai-restaurant?channel=feishu"
    }
  },
  "install": {
    "method": "qr_code",
    "clawhub_url": "https://clawhub.ai/dawangda/ai-restaurant",
    "feishu_qr": "https://clawhub.ai/dawangda/ai-restaurant?channel=feishu&auto_install=1"
  }
}


Security scan verdicts — ClawScan: suspicious | static analysis: suspicious | VirusTotal: clean | SkillSpector: suspicious (MEDIUM)