Skip to content
likangkangkangPublic

About

No description, website, or topics provided.

Resources

Stars

56 stars

Watchers

0 watching

Forks

Latest commit

 

History

24 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🔮 麦麦塔罗牌 · McDonald's Tarot

今天该吃什么麦当劳?让塔罗替你抽一张,顺便被温柔地接住一下。

一个把「塔罗牌的仪式感」和「麦当劳的餐盘」缝在一起的 WorkBuddy Skill:78 张牌做确定性每日抽签,每张牌落到你账号可见的真实餐品与价格上,再出一张把汉堡画成塔罗圣像的牌面和一段像朋友说的话。默认多给套餐、顺手叠加立减与满减券;用户说「就它」时,还能走完核对价格 → 下单 → 支付链接的完整流程(付款永远由用户本人完成)。

麦麦塔罗牌示例牌面:隐者 → 咖啡双人套餐

牌面由 scripts/tarot_art.py + scripts/tarot_card.py 纯代码绘制:深靛夜空、旧金双线框、拱形画窗、罗马数字、月相与星点。主画面把一份汉堡画成披着生菜披风、头顶光环、张臂托着法器的圣像;大阿卡纳各有自己的法器与天空(愚者的太阳、正义的天平与餐刀、世界的花环),小阿卡纳则把薯条/可乐/餐刀/汉堡币按张数串成一道半圆光环。逆位时圣像整体倒置。不再把商品照贴进画框,需要时用 --photo 在底部小票旁加一枚圆形餐品章。

⚡ 安装(可直接转发)

装上我,你就能预测自己的今日运势。 🃏🍔 每天抽一张麦麦塔罗牌,牌面是一幅把汉堡画成圣像的塔罗画,落点是你今天该吃的那一份。

方式一:上传技能包(推荐,云端版也能用)

  1. 下载技能包:mcd-tarot-skill.zip (Release v1.0.0 附件,179 KB)。
  2. 打开 WorkBuddy 左侧【专家 · 技能 · 连接器】→ 技能 → 添加技能 → 上传技能, 选中这个 zip,系统自动完成配置,不用再操作别的。
  3. 启用【连接器】mcd-mcp(模板见 assets/mcp-config.example.json),然后对它说「今日运势」。

为什么不是 git clone:云端版 WorkBuddy 出于安全不会帮你克隆并安装第三方仓库(它会明确拒绝)。 「上传技能包」是官方支持的分享方式,一次导入即可用。git clone 只适合你自己在桌面版手动部署。

方式二:本地命令行(桌面版 / 自己的电脑)

git clone https://github.com/likangkangkang/mcd-tarot.git ~/.workbuddy/skills/mcd-tarot

Windows(PowerShell):

git clone https://github.com/likangkangkang/mcd-tarot.git "$HOME\.workbuddy\skills\mcd-tarot"

想让它出现在公开的「技能市场」

按开放平台规范把技能包 zip 提交审核即可(详见 open.workbuddy.cn/docs/skill); 解析失败可邮件联系 openworkbuddy@tencent.com。

装好后对它说一句「今日运势」——它会先自我介绍、问你要不要开始,你回「是」就够了。


它解决什么

点外卖最难的从来不是「吃什么」,而是「今天我值得被怎么对待」。 这个 Skill 把那个模糊的问题,变成一次有仪式感、又真能落到一份具体汉堡上的小事:

  • 确定性抽签 —— 按日期播种,同一天随时来抽都一样,像一份每日心情灵感,不是随机噪音。
  • 真实菜单映射 —— 走麦当劳 MCP(mcd-mcp)拉当日菜单,建议是具体单品/套餐 + 价格,不是空泛鸡汤。
  • 知道你爱吃什么 —— 读历史订单与券包,得出常点品类、口味倾向、各时段习惯(早餐爱组合还是单品)、手上有什么券,再在牌意范围内优先推你爱吃的。
  • 跟着饭点走 —— 按当前时间判定早餐/午餐/下午茶/晚餐/夜宵,同一张牌在早上和深夜给的建议不一样。
  • 多给套餐,还会叠券 —— 默认套餐优先:套餐吃得更完整,也更容易吃到「划线价立减 + 满减券」这层叠加。只有当菜单里真有对应套餐、且这份套餐值得时才会升级,夜宵碰到清简牌意又没有优惠就保持轻盈,不硬塞。
  • 套餐不藏内容 —— 抽到套餐时,名字下方直接写明里面每样餐品和数量(「麦辣鸡腿汉堡 ×1 | 薯条(中) ×1 | 可乐(中) ×1」),牌面小票上也会印出来;优先用官方明细,没有就按件数结合本店真实单品名推断,并标注「参考配置」。
  • 图在前、文在后 —— 牌面直接呈现在对话框里(不靠附件卡片),每次抽牌只出一张牌面图;文字部分不再重复图里已有的餐品/明细/价格,只留一段细腻的感官解读和「就它」这个下一步。
  • 解读有体温 —— 78 张牌每张都配了感官短句(热汽扑脸、冰块撞杯壁、芝士拉丝…)和正/逆位各一句低语,写的是「你今天怎样」,不是干巴巴的关键词。
  • 顺势省一点 —— 只说「这道刚好能用哪张券、省多少」,不为了用券改推荐,也不做凑单比价。
  • 快 —— 抽牌本身 5 毫秒;scripts/quick.py 走全本地缓存,不联网、不下图、不开浏览器,通常百毫秒内出结果(实测含出图 30ms)。
  • 永远可演示 —— 没配 Token 也能跑(自动回退示例菜单),体验不打折。

玩法(全部是「一张图预测」)

玩法 适合 张数
today 今日宜吃 一句话决定今天吃啥(按日期确定性抽签) 1
--question "你关心的问题" 塔罗预测 抛出一个问题,牌作为回答 1

每次抽牌都只出一张牌、一张图。同一问题同日结果稳定,不同问题会抽到不同牌。 正逆位都会给:逆位不做恐吓,落点永远是「允许、休息、被看见」。

快速开始

在 WorkBuddy 里用(推荐)

  1. 把本目录放进技能目录(用户级为 ~/.workbuddy/skills/mcd-tarot/)。
  2. 在【连接器】启用 mcd-mcp(配置模板见 assets/mcp-config.example.json)。
  3. 直接说:
    • 「用麦麦塔罗牌帮我抽今天的」→ 今日宜吃 + 牌面图
    • 「帮我抽一张:明天面试能顺利吗」→ 牌作为这个问题的回答 + 牌面图

命令行 / 脚本(纯标准库,无需第三方依赖)

python3 scripts/tarot_engine.py --mood "加班到很晚,有点丧"
python3 scripts/tarot_engine.py --question "明天面试能顺利吗"
python3 scripts/tarot_engine.py --card-svg card.svg                      # 出一张牌面
python3 scripts/tarot_engine.py --lean                                   # 精简文字(清单/价格交给牌面图)
python3 scripts/tarot_engine.py --inline -                              # 牌面 SVG 打 stdout(内联对话框用)
python3 scripts/tarot_engine.py --at "2026-10-20 12:30"                 # 模拟午餐时段
python3 scripts/tarot_engine.py --single-only                           # 关掉套餐优先

# 最快的一条路:读本地缓存直接出牌,不联网不下图(缓存缺失时先跑一次连接器)
python3 scripts/quick.py --mood "想被哄一下" --svg card.svg --timing
python3 scripts/quick.py --question "今天会发财吗" --inline --lean      # 按问题抽一张预测

# 想接真实菜单(需要 Token):
export MCD_MCP_TOKEN=你的Token
python3 scripts/tarot_engine.py --spread today

未配置 Token 或网络失败时自动回退示例菜单,命令照样跑。

为什么快,慢在哪

抽牌本身只要 5ms——慢的从来不是塔罗,而是串行的网络往返(门店→菜单→订单→券包→可领券→积分)和图片渲染。所以:

优化 效果
quick.py 只读本地缓存 全流程 30ms(含出牌面 SVG)
菜单按「门店 + 日期」缓存 同一天第二次抽牌 0 网络
口味画像 6 小时 TTL(profile.is_stale) 不用每次重拉 4 个接口
牌面不再下载/内联商品图 SVG 从 200KB+ 降到 21–27KB,渲染快且可秒传
PNG 改为按需(--png 才启 Chrome) 平常只出 SVG,省 1–2 秒

一次抽牌发生了什么

门店(有缓存就不问) → 口味画像(订单/券包,6 小时内复用) → 当日菜单(当天只拉一次)
        ↓
确定性抽签(date 播种) → 牌 → 关键词打分映射真实餐品
        ↓
套餐优先(同品类套餐 → 随心配兜底) + 按饭点调形态 + 按画像挑更合口味的那道
        ↓
叠加优惠:套餐划线价立减 + 满减券;单品券不越界抵扣套餐
        ↓
牌面 SVG(汉堡圣像 + 法器,纯代码绘制) + 文字解读(牌意 → 为什么适合你 → 怎么买更省)
        ↓
用户说「就它」 → calculate-price 核价 → create-order → 支付链接交给用户自己付

目录结构

mcd-tarot/
├── SKILL.md                    # 技能定义与工作流(连接器优先 + 缓存优先 + 下单红线)
├── scripts/
│   ├── tarot_deck.py           # 78 张牌 + 麦当劳映射 + 情绪寄语 + 份量倾向 + 品类
│   ├── tarot_engine.py         # 抽签(今日宜吃 / 按问题预测)、时段/形态/套餐升级、卡片入口
│   ├── tarot_art.py            # 牌面图形元件:汉堡圣像、法器、星月、四色花色
│   ├── tarot_sense.py          # 细腻文案层:每张牌的感官短句 + 正/逆位低语
│   ├── tarot_card.py           # 牌面排版:夜空 + 拱窗 + 罗马数字 + 小票(SVG/PNG,单张牌面,--inline 内联对话框)
│   ├── mcp_client.py           # 标准库 mcd-mcp 客户端 + 口味/券/套餐匹配打分
│   ├── profile.py              # 口味画像:历史订单 → 常点/口味/时段;券包 → 优惠索引
│   ├── menu_from_connector.py  # query-meals → 引擎菜单(保留图片/划线价/套餐标记)
│   ├── combo_detail.py         # 套餐明细:官方明细缓存 → 按名推断,标注参考配置
│   ├── cache.py                # 门店记忆 + 当日菜单缓存
│   ├── quick.py                # 零网络快速抽牌(全本地缓存,30ms 级)
│   ├── selfcheck.py            # 换季自检:价格覆盖 / 误映射 / 重复牌
│   └── order.py                # 下单确认卡 + 订单记录(不代付)
├── tests/                      # 单元测试(52 项)
│   └── test_tarot_engine.py
├── references/                 # 安装维护 / MCP 集成 / 示例解读 / 参赛声明
├── assets/                     # 连接器配置模板、requirements、示例牌面
└── 运行时数据在 ~/.cache/mcd-tarot/(门店、当日菜单、口味画像、订单,不入库)

自检与维护

python3 tests/test_tarot_engine.py   # 52 项单测
python3 scripts/selfcheck.py                 # 换季自检,非零退出说明要修关键词
python3 scripts/cache.py clear --all         # 缓存坏了就重建
python3 scripts/profile.py clear             # 用户说「别记我」

当前状态:78/78 张牌有价、关键词命中 78/78;确定性抽签,同日复现稳定;菜单里各品类都有套餐时,套餐占比可达 98%,平均每单省约 ¥9。

安全与合规

  • 仓库不含任何真实 Token / 密钥,配置一律用 ${MCD_MCP_TOKEN} 占位。
  • 抽牌只读菜单与个人订单/券包;下单只在用户明确要求时发生,付款永远由用户本人完成,不代付、不索要验证码。
  • 口味画像只存在本机 ~/.cache/mcd-tarot/profile.json,不上传、不入库,随时可清。
  • 本技能不做占卜、不算命、不预测运势,只借塔罗意象做情绪陪伴与选餐建议。
  • 参赛作品,非麦当劳官方产品;餐品、价格、供应以麦当劳官方实时结果为准。

更多

文档 内容
SKILL.md 完整工作流与下单红线
references/INSTALL.md 安装、单一真源与更新方式
references/MCP_INTEGRATION.md MCP 工具与调用流程
references/sample_reading.md 一份完整解读示例

About

No description, website, or topics provided.

Resources

Stars

56 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages