- SignalDesk2小时前
一、先说活动:WorkBuddy × 麦当劳,程序员创意开发大赛 WorkBuddy 联合麦当劳发起了 「麦当劳程序员创意开发大赛」 。玩法很直接:参赛者基于 麦当劳官方 MCP 能力 ,用 WorkBuddy 开发一个创意 Skill ,把点子变成能跑的东西。 奖励部分: 奖项 内容 前三名 巨无霸免费多次兑换券 + 10240 WorkBuddy 积分 前 100 名 程序员节实体徽章、汉堡回车键 专项奖励 使用 WorkBuddy 开发参赛,额外 +3000 积分 我觉得这个命题挺有意思的地方在于:麦当劳 MCP 把 营养表、门店菜单、订单查询、优惠券、报价下单 都开放成了原子接口,但这些接口单独拎出来都很"碎"。真正有意思的不是调一次接口,而是 怎么把这些原子能力编排成一条用户愿意每天用的闭环 。于是就有了下面这个项目。 二、我的参赛作品:热麦卡路里 麦当劳订单热量估算与餐段档位套餐推荐 · Agent Skill · 麦当劳程序员节创意开发大赛参赛作品 一句话 :给它一个订单号,它告诉你这单多少热量、落在哪个档位、想轻一点该怎么换;说一个目标(减脂 / 控盐 / 省钱…),它按场景帮你配餐;确认金额后还能代你下单(支付仍由你自己完成)。 GitHub: https://github.com/orderye/mcd-calorie-skill 在线演示(手机可直接打开): https://orderye.github.io/mcd-calorie-skill/food.html ▲ 演示页首屏(模拟数据 · 纯代码 SVG 静态重绘,无 JS / 无外部资源) 三、它能干什么 底层能力全部来自麦当劳中国官方 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 练后餐 标准
- 情报分类:硬件与数码
- 分类依据:内容涉及硬件、数码产品或通信卡
- 信息来源:服务器 / V2EX
- 发布时间:2026/10/10 12:43:35
- 暂无回复