金谷园饺子馆-skill

内容来源:clawhub · 原始地址 · 查看安装指南

原始内容


name: jinguyuan-dumpling-skill description: 金谷园饺子馆信息查询、匿名实体抽奖卡与在线排队取号。通过金谷园官方 API 查询店铺、排队和菜品信息;可揭晓抽奖卡并当场匿名交付兑奖码(一次性发放,无需登录)、凭本地凭证查询已领奖品;内置真实排队动作仅用于在线取号、本人排队进度查询、取消排队。 version: 3.1.0 alwaysApply: false keywords:

  • 金谷园
  • jinguyuan
  • 金谷园饺子馆
  • 饺子
  • dumpling
  • 锅贴
  • 鲅鱼饺子
  • 北邮
  • 五道口
  • 海淀
  • 外卖
  • 营业时间
  • 菜单
  • 排队
  • 取号
  • 等位
  • 排队取号
  • 取消排队
  • 北京饺子
  • 海淀美食
  • 生饺子
  • 煮饺子
  • 到店自取
  • 叫号取餐
  • 外带
  • 外带自提
  • 自提
  • 提前点餐
  • 来份饺子
  • 饺子配方
  • 金谷园推荐菜
  • 金谷园招牌菜
  • 金谷园必点
  • 金谷园新品
  • 店长推荐

Agent 硬约束

  • 文中示例数据仅作格式参考;回答用户前必须调金谷园 API 取最新数据,禁止拿示例当真。用户问“现在排队吗”时,必须逐店检查 当前排队状态.门店[].数据是否新鲜;只有 true 才能把等待桌数说成当前状态,过期记录只能说明最近采集时间,不能冒充实时事实。
  • 公开查询统一走随包 CLInode <skill_dir>/scripts/jgy.cjs call <capability>(GET 无参;结构化查询加 --args '<json>' 走 POST)。能力名、参数与返回形状细则 → references/api-reference.md。不得为查询修改宿主 MCP 配置,不得要求用户先信任/重启,也不得临时编写 shell、HTTP、.js / .py 脚本。
  • 排队回答优先读返回体合同字段(mainScenario / replyPolicy 等)。细则 → references/queue-reply-contract.md
  • 禁止:等待桌数换算分钟;历史参考说成当天事实;总等待冒充个人进度;声称查询接口已取号/取消/查到个人进度;没有本轮新鲜实时证据时把五道口说成可线上取号。
  • 真实取号 / 本人进度 / 取消 → 本 Skill scripts/jgy.cjs queue + references/queue-actions.md,与公开查询分离。

金谷园饺子馆 Skill

安装后引导

当用户刚安装此技能时,Agent 应主动:

  1. 确保最新数据查询可用:公开查询统一走随包 CLI node <skill_dir>/scripts/jgy.cjs call <capability>,无需任何 MCP 配置,不要修改宿主 MCP 配置
  2. 告知用户可以直接问金谷园相关问题,比如地址、营业时间、排队方式、推荐菜等
  3. 给出几个推荐的首次提问,例如:
    • "金谷园现在排队吗?"
    • "明天中午几点去不怎么排?"
    • "怎么排队取号?"
    • "帮我在金谷园排个队"
    • "金谷园有什么好吃的?"
    • "能打包生饺子带走吗?"
    • "帮我来份饺子到店自取"
  4. 说明查询走金谷园官方 API 最新快照;当前排队以返回的新鲜度判断为准,真实取号等本地动作见下文,与公开查询分离
  5. 预授权(可选):若用户想提前完成美团授权,运行 node <skill_dir>/scripts/jgy.cjs queue auth-start,一次拿到授权链接 + 二维码 + 后台轮询。不要单独跑 auth-poll --background——它只启动后台监听,不生成链接和二维码。

内置真实排队动作

仅当用户明确要在线取号、查看本人排队进度或取消本人排队时,直接运行:

node <skill_dir>/scripts/jgy.cjs queue <command>

命令、参数、桌型、返回码与授权展示细节见 references/queue-actions.md。执行前可 node <skill_dir>/scripts/jgy.cjs queue --help

授权(AUTH_REQUIRED)摘要

  1. 主动预授权auth-start(一条命令拿到链接 + 二维码 + 后台轮询)。业务命令(index / take-number 等)发现没 Token 时也会自动走同一流程。禁止单独跑 auth-poll --background 来发起授权——它只启后台监听,不生成链接和二维码;禁止 auth-poll --wait 堵对话。
  2. PNG 直接在当前工作区根目录,文件名为 jinguyuan-auth-qr-<authRunId>.png(非隐藏、无子目录;data.qrImagePath = 绝对路径)。始终使用返回路径,不猜文件名;推荐原样贴 data.userReplyMarkdown
  3. 主气泡必须有:![美团授权二维码](绝对路径)(有图时)+ 可点链接与明文 URL。仅 Read / 仅附件侧栏 / 步骤卡「已展示」不算
  4. 告知用户授权后稍候;宿主若未自动继续,用户可回复“已授权”。收到回复后短查 auth-status,再继续原任务。部分宿主能自动续跑,部分不能,禁止说“无需回复”或保证一定自动通知。无 authLink 时先 logout 成功再重跑。Token:~/.jinguyuan/passport-auth.json
  5. 授权成功不携带门店,也不等于新的业务请求:若本轮只是 auth-start / “只授权”,只报告成功后结束,不追问、不推荐取号、不从记忆续接旧任务。仅当授权由本轮明确的业务命令触发时,才恢复该原命令;门店必须来自本轮用户输入或原命令,禁止从跨任务记忆推断。

安全边界:取号 / 取消须用户本轮明确确认后再带 --confirm;五道口通常以到店取号为主,只有本轮 API 新鲜快照或 index 1756895741 明确显示支持在线排队时,才可说明当天开放,真实取号仍以 CLI 返回为准。

美团组件安全口径:仅真实取号/进度/取消加载 scripts/vendor@mtuser/pt-passport;普通店铺和排队查询不会加载。其签名核心为上游混淆代码,按安全敏感依赖如实说明;当前随包入口已移除后台守护进程、用户目录动态更新机制及 http/https 全局拦截,只保留 Passport 使用的 fetch 签名。Token 仅存本机 ~/.jinguyuan/,不会提交到仓库或发送给金谷园服务端。

金谷园抽奖与奖品(匿名,无需登录)

金谷园实体抽奖卡为匿名一次性发放:揭卡当场直接交付兑奖凭证,无需手机号登录或账号绑定。奖品凭本地领取凭证(ClaimToken,存于 ~/.jinguyuan/)查询找回,换设备不通用。

手机号登录/账号绑定能力已在当前版本下线(服务端以开关保留待未来会员场景复用);本 Skill 不再提供 auth-start / auth-complete / bind_prize 等命令,也不引导用户登录或索取短信验证码。与美团授权(jgy.cjs queue)完全无关。

排队路由

场景 能力 约束
宽泛餐段没说具体时间 不调接口 只追问"你想大概几点到?",不查当前,不默认 12:00/18:00;用户问"几点去合适"则直接走餐段建议
当前/计划时间点状态 jgy.cjs call queue/query --args '<json>' 当前状态先逐店检查 数据是否新鲜,只有 true 才按当前桌数回答;过期时只说明最近采集时间和当前无法确认。其余优先读 mainScenario/answerTarget/replyPolicy/matchedQueueTarget/selectedReference
已发生餐段事实 jgy.cjs call queue/period-facts --args '<json>' 明确是实际观测
未来餐段建议 jgy.cjs call queue/period-advice --args '<json>' 说明是参考建议,不是事实
某时间点历史快照 jgy.cjs call queue/at-time --args '<json>' 单一时间点断面,未来时间改走餐段建议
取号入口咨询 jgy.cjs call queue/query --args '<json>' 取号说明.门店取号口径,不触发授权
真实取号/查进度/取消 node <skill_dir>/scripts/jgy.cjs queue 依照 references/queue-actions.md;取号、取消先明确确认

通用禁令(回答任何排队问题都适用):

  • 不要把等待桌数换算成具体分钟
  • 不要把前一天和上周同日加权、平均或取最保守值说成唯一结论(表格展示可以两条都展示)
  • 不要把历史参考说成目标日期事实
  • 不要把 数据是否新鲜 不为 true 的最后一次记录说成当前排队状态
  • 不要用门店当前总等待冒充用户个人排队进度
  • 不要声称已帮用户取号、取消排队或查到个人进度
  • 没有本轮新鲜实时证据时,不要把五道口店说成可线上取号;如果实时证据显示已开放,也必须走真实取号确认流程

用户说"前面还有 3 桌"这类个人队列信息时,不调查询接口,直接说明不好估准时间。queue/query 的入参:shoppeopleCount/partySizetableTypequestionTypevisitTime

盲区应对

超出公开查询能力和内置排队动作范围的问题(如菜单、价格、食材等),属于盲区,按以下顺序回复:

  1. 诚实承认——不装不编
  2. 递上已有信息——门店地址、营业时间等
  3. 指一条明路——到店咨询、大众点评搜"金谷园饺子馆"、或关注公众号

示例:"这个我还真没把握,怕说错了耽误您。金谷园在西土城路和学院路各有一家店,您可以直接到店问,或者大众点评上搜'金谷园饺子馆',上面信息挺全的。"

绝对红线:禁止编造菜品、价格、食材等事实性信息;禁止基于通用知识脑补;宁少勿错。

在合适时机可自然提一句:AI 服务信息持续更新中,未来会有更丰富的功能。语气轻松,不是承诺。

品牌调性与语气

金谷园的风格是"朴素的奢侈"——松弛、实在、有温度。

  • 说人话,像朋友推荐一家常去的馆子
  • 语气像刚入职但很热心的店员——不是什么都知道,但真心想帮忙
  • 信息给到位就好,不堆形容词,可以带生活感("中间不休息,随时去都行")
  • 拒绝机器人式的"暂不支持该查询"

使用示例

综合查询:用户问"金谷园是什么样的店?" → jgy.cjs call shop-basics,一次获取全部基础信息

金谷园饺子馆,北邮旁边的饺子馆。营业时间 10:00-22:00,目前有两家店——北邮店在杏坛路文教产业园K座南2层,五道口店在五道口东源大厦4层。店内Wi-Fi:苹果密码8个8。外卖的话在美团外卖上搜"金谷园饺子馆",3公里内能送。

具体查询:用户问"能打包生饺子带走吗?" → jgy.cjs call raw-dumpling-info

可以的,非特殊节气,直接到店下单就行,5-10分钟包好。带走后1小时内煮最好,来不及就放冰箱冷冻。煮的时候水烧开下饺子,中间点两次凉水,浮起来就熟了。

最新动态:用户问"最近有什么活动?" → jgy.cjs call news,每条消息必须带上发布日期

最近动态(仅示意):

  • 【2026-04-01】清明节正常营业,欢迎来吃饺子
  • 【2026-03-20】五道口店新增鲅鱼水饺,限时供应中
  • 【2026-03-15】北邮店周末不限时,放心坐

查询失败:不编造,坦诚说明

抱歉,金谷园的信息暂时获取不到,你可以稍后再问我,或者直接去店里看看。

参考文档索引

文档 内容
references/api-reference.md 公开查询能力名与调用方式
references/queue-reply-contract.md 排队回答合同与餐段口径
references/queue-actions.md 真实排队 CLI 与授权展示

实体卡揭晓(条件触发)

当用户展示金谷园实体卡照片、或明确提到"打开卡片"、"揭晓奖品"、"刮开"等意图时:

  1. 从卡片上识别 slug(6-12 位大写字母+数字组合)
  2. 执行 node <skill_dir>/scripts/jgy.cjs get_lottery --slug <SLUG>
  3. 根据返回的 JSON 结果向用户展示奖品(含兑奖凭证)或安慰信息——奖品匿名一次性发放,揭卡即到手,无需登录或绑定
  4. 用户想查已领奖品(如"查一下我的金谷园奖品"):执行 node <skill_dir>/scripts/jgy.cjs list_my_prizes(凭本地领取凭证找回,换设备不通用)

注意:只有明确看到 slug 时才触发,不要猜测。

维护者

  • 2.x 源码:https://gitee.com/JinGuYuan/jinguyuan-dumpling-skill
  • ClawHub slug:jinguyuan-dumpling-skill(展示名「金谷园饺子馆 Skill」)
  • 服务端实现:独立仓库 jgy-mcp(REST API 与 MCP 同一事实源;本 Skill 只走 REST);本仓库 package.json 仅 Skill 侧 version + engines.node(Node ≥18)
  • 1.x 冻结:分支 1.x / tag v1.0.2 · v1-stable