爱意满满的作品展示区。
shenyin

WorkBuddy × 麦当劳,程序员创意开发大赛(求 Star Orz ..

  •  
  •   shenyin · 1 day ago · 828 views

    一、先说活动:WorkBuddy × 麦当劳,程序员创意开发大赛

    WorkBuddy 联合麦当劳发起了 「麦当劳程序员创意开发大赛」。玩法很直接:参赛者基于麦当劳官方 MCP 能力,用 WorkBuddy 开发一个创意 Skill ,把点子变成能跑的东西。

    麦当劳程序员创意开发大赛

    奖励部分:

    奖项 内容
    前三名 巨无霸免费多次兑换券 + 10240 WorkBuddy 积分
    前 100 名 程序员节实体徽章、汉堡回车键
    专项奖励 使用 WorkBuddy 开发参赛,额外 +3000 积分

    我觉得这个命题挺有意思的地方在于:麦当劳 MCP 把营养表、门店菜单、订单查询、优惠券、报价下单都开放成了原子接口,但这些接口单独拎出来都很"碎"。真正有意思的不是调一次接口,而是怎么把这些原子能力编排成一条用户愿意每天用的闭环。于是就有了下面这个项目。


    二、我的参赛作品:热麦卡路里

    麦当劳订单热量估算与餐段档位套餐推荐 · Agent Skill · 麦当劳程序员节创意开发大赛参赛作品

    热麦卡路里 · 像素风封面

    一句话:给它一个订单号,它告诉你这单多少热量、落在哪个档位、想轻一点该怎么换;说一个目标(减脂 / 控盐 / 省钱…),它按场景帮你配餐;确认金额后还能代你下单(支付仍由你自己完成)。

    点餐流程演示页首屏 <sub>▲ 演示页首屏(模拟数据 · 纯代码 SVG 静态重绘,无 JS / 无外部资源)</sub>


    三、它能干什么

    底层能力全部来自麦当劳中国官方 MCP 服务 M-China/mcd-mcp-server;热量计算则是本地纯 Python 脚本完成的,不联网、无第三方依赖。

    能力 你说 它做 依赖
    A. 订单热量估算 「这单多少热量?订单号 xxx 」 展开套餐 → 逐项匹配营养表 → 整单合计 + 档位结论 query-order
    B. 档位推荐 「想吃 300 大卡左右的早餐」 取该餐段实时菜单 → 枚举组合 → ±12% 筛选 → Top 3–4 query-meals
    C. 替换建议 「昨天那单偏高,今天来点轻的」 高于标准档则切标准档 → 输出更轻组合 + 少多少 kcal query-meals
    G. 目标场景推荐 「减脂吃什么」「想控盐」「今天还剩 600 卡」 13 个场景自动切换档位 / 排序 / 硬上限 / 关键词排除 query-meals + mcd_goal.py
    D. 一键导入历史订单 「导入我的历史订单分析热量」 order-list 原始响应 → 自动脱敏落盘 → 逐单算热量 → 排行与汇总 order-list + mcd_import.py
    D2. 历史订单复盘 「我最近都吃了些什么」 已脱敏样本逐单算热量、按餐段比对、出排行(跳过脱敏) mcd_import.py --no-deidentify
    E. 安全下单 「就按推荐第 1 组帮我下单」 查券(只标注)→ 报价 → 确认闸门 → 创建订单 calculate-price / create-order
    F. 全量目录(离线兜底) —(后台能力) 多份菜单快照聚合为 catalog.json + 营养缺口清单 query-meals 快照
    数据自更新( v0.8 ) —(随推荐自动生效) 餐品 100% 取当次 query-meals 实时可售(上新/下架/调价即时生效);规格证据五级分级,仅 A 级补录别名表 mcd_spec_evidence.py

    实际对话长这样

    算一单

    用户:这单多少热量?订单号 9900004064
    WorkBuddy:
       [订单估算] 订单 SAMPLE-20261009-01 · 餐段 午餐 · 档位 标准(目标 750 kcal )
       ✓ 板烧鸡腿堡       391 kcal |钠 1041mg
       ✓ 中薯条           289 kcal |钠  165mg
       ✓ 可乐中杯         147 kcal |钠    0mg
       整单:827 kcal
       结论:落在本餐段标准档范围内,合适
    

    说个目标就行

    用户:午餐想控盐,钠低一点
    WorkBuddy:
       [推荐 · 午餐 · 轻量 · 低钠控盐] 目标 500 kcal (区间 440–560 ,命中 34 组)
       场景策略:整组钠不超上限,钠越低越靠前|生效约束:钠 ≤1000mg
       1. 麦香鱼 + 苹果片 + 100% 苹果汁(盒装)   445 kcal |蛋白 16g |钠 556mg |≈¥41.0
       2. 麦香鱼 + 苹果片 + 咖啡阿芙佳朵        496 kcal |蛋白 20g |钠 605mg |≈¥44.0
       3. 麦香鱼 + 咖啡阿芙佳朵                464 kcal |蛋白 20g |钠 605mg |≈¥37.0
    

    翻旧账

    用户:导入我的历史订单分析热量
    WorkBuddy:
       [历史订单一键导入 · 热量分析报告] (原始响应已自动脱敏落盘)
       下单时间             餐段   项数   热量    标准档  结论
       2025-11-22 18:28    晚餐    8    2243     750   偏高 +1493
       2025-10-11 13:26    午餐    5    1470     750   偏高  +720
       2026-03-20 18:32    晚餐    5     987     750   偏高  +237
       …
       订单数 8 |平均 1085.6 kcal |超标准档 6 单|最重 2243 kcal
       商品项 39 |热量未知 4 项( 10.3%)|歧义待选 0 项
    

    四、口径设计:餐段 × 档位 × 目标场景

    档位目标值( kcal ),筛选区间为目标值 ±12%:

    餐段 轻量 标准 吃饱 兜底时段
    早餐 300 450 600 05:00–10:30
    午餐 500 750 1000 10:30–15:30
    随便吃吃(下午茶) 150 300 450 15:30–17:59
    晚餐 500 750 1000 18:00–22:00
    宵夜(单列档) 300 450 600 22:00–23:59 、00:00–05:59

    补充规则:宵夜单列,不并入晚餐;门店时段实测优先(各店营业餐段不同,query-meals 需传 reservationDate,接口并没有 daypart 字段);档位内无解时提示换档位,**绝不偷偷放宽 ±12%**;历史订单的餐段取订单自带时间,而不是当前时刻。

    目标场景( G ):第三个维度

    「目标场景」是叠在「餐段 × 档位」之上的第三层(mcd_goal.py 策略层)。每个场景 = 一套营养策略描述符,自动切换推荐档位 / 热量容差 / 硬上限 / 关键词排除 / 排序评分,用户不用自己算。场景键就是对话触发词(比如「减脂吃什么」→ cut)。

    # 场景键 场景名 推荐档位 核心策略 场景入参
    1 cut 减脂 轻量 蛋白密度优先 + 钠偏低 + 剔甜品、小食 ≤1 ( min_protein 15g ) —
    2 bulk 增重 吃饱 蛋白与碳水双高 + 小食 ≤2 、允许甜品( min_protein 20g ) —
    3 post 练后餐 标准 蛋白总量优先 + 必含主食回补碳水( min_protein 20g ) —
    4 cheat 放纵餐 吃饱(容差 ±15%) 热量上浮 + 允许甜品 + 性价比排序 —
    5 low-sodium 低钠控盐 轻量 钠硬上限 ≤1000mg + 钠升序 --sodium-max
    6 high-protein 高蛋白增肌 标准 蛋白密度优先 + 蛋白总量(日常版,min_protein 25g ) —
    7 low-carb 低糖低碳水 轻量 碳水硬上限 ≤60g + 碳水升序 --carb-max
    8 low-fat 低脂清淡 轻量 脂肪硬上限 ≤30g + 脂肪升序 --fat-max
    9 vegetarian 素食 / 蛋奶素 轻量 排除肉类水产(蛋奶可食)关键词粗筛;无主食时拼小食达档 —
    10 kids 儿童 / 小份量 轻量(×0.85 ) 热量下浮 + 单组最多 2 件 --max-items
    11 daily-budget 热量预算日控 按剩余预算 用满预算但不超;区间 [0.7B, B] --budget
    12 allergen 过敏原规避 标准 按过敏原关键词排除(花生 / 坚果 / 乳制品 / 麸质 / 海鲜等,粗筛带告警) --allergens
    13 value 性价比 / 省钱 标准 价格硬上限 + 价格升序 --price-max
    3 replies  •  2026-10-10 14:37:51 +08:00
    413420
        1
    413420  
       1 day ago via iPhone   ❤️ 1
    为赋新词强说愁
    IwfWcf
        2
    IwfWcf  
       1 day ago
    有这种需求的客户真的会选麦当劳吗?
    heyjei
        3
    heyjei  
       1 day ago
    真需求是:同样的一个汉堡加薯条,不同的渠道、不同的优惠券点单的价格可能差了好几倍,怎么帮我以最优惠的方式下单
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2917 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 78ms · UTC 09:20 · PVG 17:20 · LAX 02:20 · JFK 05:20
    ♥ Do have faith in what you're doing.