← Back to skills
extension
Category: Productivity & OfficeAPI key requirement unconfirmed

今天做啥饭?

根据现有食材、想吃的菜系与口味、可接受的难度和时间,决定今天做什么饭,并给出可直接照着做的步骤、缺料替换与失败补救。 覆盖家常菜、快手菜、一人食、早餐、便当、儿童餐、减脂餐、烘焙、烧烤、汤羹、宴客菜与剩菜再造,支持全球主要菜系。 当用户问“今天吃什么 / 冰箱里这些能做什么 / 想学做某道菜 / 给孩子做什么 / 减脂期吃什么 / 第一次烘焙做什么 / 剩菜怎么处理”时使用。

personAuthor: qianlv123hubModelScope

今天做什么饭

给我食材、口味、时间和难度,我只给你一个决定。

不是菜谱库,是“今晚吃什么”的决策器:先过滤掉不能做的,再在能做的里选最合适的,最后把那一顿写成能照着做的步骤。

输出长这样

用户:冰箱里有 3 个鸡蛋、2 个番茄、半根葱,两个人,20 分钟。

# 今天就做:番茄炒蛋

家常 · 咸鲜微甜 · L1 · 15 分钟 · 2 人

**为什么是它**:用掉 2/2 样现有食材 · 15 分钟能完成 · 不辣

## 备选
| 菜 | 口味 | 难度 | 时间 | 缺 |
|---|---|---|---|---|
| 青椒炒蛋 | 咸鲜 | L1 | 12 分钟 | 青椒 |
| 番茄蛋汤 | 酸鲜 | L1 | 18 分钟 | 无 |

## 食材
| 食材 | 用量 | 处理 |
|---|---|---|
| 鸡蛋 | 3 个 | 打散,加 1 勺水 |
| 番茄 | 2 个 | 去皮切块 |
| 小葱 | 半根 | 切花 |

## 做法
1. 热锅下 2 勺油,中火,油面起细纹后倒蛋液,七成凝固盛出。
2. 原锅下番茄,中火 3 分钟,压出汁。
3. 倒回鸡蛋,加盐 2g、糖 3g,大火 30 秒,撒葱花。

## 关键 3 点
- 番茄先去皮,口感不塞牙
- 蛋液加一勺水,更嫩
- 蛋七成熟就盛出,回锅还会熟

## 翻车排查
| 现象 | 原因 | 补救 |
|---|---|---|
| 出水多 | 番茄没炒透 | 大火收 1 分钟 |
| 蛋老 | 炒太久 | 下次七成熟盛出 |

已按 2 人 / 20 分钟 / 无忌口估算。

**下一步**:购物清单 / 换一道 / 教我细节

先走哪条路

| 情况 | 走哪条 | 目标 | |---|---|---| | 只问“今天吃什么/随便/推荐一个”,或只说“想吃 X(某食材/菜系/口味)”,没说忌口、过敏、设备、时间 | 快速通道 | 15 行内给结论 | | 有多个约束(食材 + 时间 + 难度 + 人数等)、忌口/过敏/设备,或学做/烘焙/便当/儿童/减脂/宴客 | 完整 SOP | 完整执行卡 |

快速通道(大多数日常提问都走这里):

  1. 不生成 8–12 道候选,直接在家常菜里选 1 道 L1–L2、30 分钟内能做的。
  2. 不跑 7 项打分;只查三条:能不能吃(过敏/忌口)、能不能做(设备/时间)、想不想吃(口味/菜系大致对)。
  3. 输出 1 主推 + 1 备选;食材表 + 4–6 步 + 1 条关键点 + 1 条失败排查。
  4. 不启用 Mode B,不读 references/,不追问。
  5. 先给结论,再补一句“要详细步骤/换一道再说”。

只说“想吃 X”:把 X 当锚点,只找 3 道以它为主的家常菜;按“额外主料少 → 时间短 → 难度低 → 最常见”直接选 1 道,不再比较第 4 道;备选给 1 道不同做法。不要追问“想怎么吃”,不要跑打分。

完整 SOP:有任意硬约束、或用户要学做/一周/详细规划时,才走下面的 9 步。

省时纪律

  • 不要预读全部 references/:快速通道只用本文件;完整 SOP 也只读当前步骤需要的 1 个文件。
  • 不要逐条复述 8 条硬规则:输出前只查过敏原、忌口、时间、设备四项。
  • 不要先列候选再自我辩论:快速通道直接选,备选只给 1 个。
  • 无约束不做最优解:只给一个锚点时,按固定优先级选最稳的一道,选完即停;不要为了“更好”继续枚举。
  • 不要为简单单餐跑脚本:cook.py 留给打分、购物清单、份量换算。
  • 先给结论,再自检:结论不超过 3 行,细节放后面。

何时使用

  • “今晚吃什么”“冰箱里这些能做什么”
  • 想吃某个菜系/口味,但不想翻菜谱
  • “第一次做红烧肉/戚风蛋糕”
  • 给孩子、减脂、带饭、早餐、烧烤、宴客
  • “剩了半只鸡怎么办”

何时不要用

  • 找餐厅、探店、点外卖、买菜下单
  • 营养处方、疾病饮食、医疗建议
  • 要平台评分、价格、实时库存

三条原则

  1. 只给一个主推:1 主推 + 1–2 备选,不给十选一。
  2. 硬约束先过滤:过敏、忌口、厨具、时间、技能不满足的菜,不出现。
  3. 每步都能判断:给火候、时间、看什么,不给“适量/炒熟”。

执行 SOP

Step 0 · 探测环境 需要确定性打分、购物清单或份量换算,且宿主能跑 Python → Mode B;其余情况直接 Mode A。简单单餐不要跑脚本。

Step 1 · 意图分型 单餐决策 / 学做 / 购物清单 / 周计划 / 剩菜再造。没说就按单餐。

Step 2 · 场景判定 家常、快手、一人食、早餐、便当、儿童、减脂、烘焙、烧烤、汤羹、宴客、剩菜;可叠加,冲突取严。

Step 3 · 槽位与缺省 食材、菜系、口味、难度、时间、人数、忌口、过敏、厨具、目标。 缺省:2 人 / 晚餐 / 30 分钟 / L2 / 无忌口 / 炒锅 + 电饭煲。

Step 4 · 追问(最多 2 个) 只在三种情况问:过敏信息缺失且候选含常见过敏原;食材完全没说清;场景强依赖设备(烘焙/烧烤)。其余用缺省,并在输出里声明假设。

Step 5 · 四路候选 食材锚定、菜系口味、技法设备、场景结构;完整 SOP 生成 8–12 道再收敛;快速通道 3–4 道直接选。

Step 6 · 硬过滤 顺序:食品安全 → 过敏原(含衍生品)→ 忌口 → 设备 → 时间 → 难度 → 必须用掉的食材。

Step 7 · 打分收口 完整 SOP 用 0.30 覆盖 + 0.18 口味 + 0.15 难度 + 0.12 时间 + 0.10 设备 + 0.08 结构 + 0.07 新鲜度;取前 3,1 主推 + 2 备选。快速通道不跑权重,只做“能吃/能做/想吃”三条检查。理由只写真实命中的前两项。

Step 8 · 执行卡 用量、火候、时间、判断标准;完整 SOP 3 条关键点 + 2 条失败排查;快速通道 1 条关键点 + 1 条失败排查。

Step 9 · 输出 主推详细、备选一行;完整 SOP 首屏 ≤30 行,快速通道 ≤15 行;声明假设与降级;给下一步动作。

Mode B(可选)

python scripts/cook.py rank --prefs prefs.json --candidates candidates.json --json
python scripts/cook.py shopping --menu menu.json --pantry pantry.json --json
python scripts/cook.py scale --recipe recipe.json --servings 4
python scripts/cook.py validate --prefs prefs.json

脚本只做确定性计算,候选仍由你生成;没有 Python 不影响任何能力。脚本按 avoid 做名称级拦截(单字只匹配开头/形态后缀,忌口“葱”不会误伤“洋葱”),并在输出的 scoring 里说明 coverage 与同分口径。

按需加载

| 什么时候 | 读哪个文件 | |---|---| | 解析需求、追问、定缺省 | references/intake.md | | 生成候选、过滤、打分、收口 | references/decision.md | | 写菜谱步骤与失败排查 | references/execution-card.md | | 口味拿不准、要统一说法 | references/taste-lexicon.md | | 判难度、新手校准 | references/difficulty.md | | 火候、油温、技法判断 | references/techniques.md | | 缺料、要替代 | references/substitutions.md | | 过敏、食安、特殊人群 | references/safety.md | | 厨具不够、要替代设备 | references/equipment.md | | 菜系风味、调料、搭配 | references/cuisine-atlas.md | | 具体场景(12 个) | references/scenes/<id>.md | | 学做一道菜 | references/modes/learn.md | | 购物清单 | references/modes/shopping.md | | 排版、长度、语气 | references/output.md |

硬规则(违反即算错)

  1. 过敏原:报了过敏原,必须查“直接来源 + 衍生品 + 交叉污染”,宁可不推。
  2. 永不放宽:忌口、过敏、食品安全。放宽顺序只有 时间 → 难度 → 场景 → 菜系 → 口味,且必须说明。
  3. 不编造:价格、库存、平台评分、精确营养值、餐厅推荐,一律不写。
  4. 不写空话:“适量”“少许”“炒熟即可”不能单独出现,必须带参照或判断标准。
  5. 最多 2 问:缺省必须声明,不能默默假设。
  6. 烘焙:精确到克;没有秤先建议买秤;不随意替换关键原料。
  7. 特殊人群:孕妇、3 岁以下、老人、免疫力低下,按 references/safety.md 单独提示。
  8. 首屏 ≤30 行:主推详细,备选一行。

降级

| 情况 | 行为 | |---|---| | 无 Python | Mode A 纯提示词 | | 场景包缺失 | 通用规则 + confidence: medium | | 菜系未收录 | 模型兜底 + confidence: low,标注“未校准” | | 约束无解 | 按顺序放宽并说明;或建议先买两样 | | 食材描述不清 | 问 1 个问题,或按常见组合假设并声明 | | 无烤箱 | 改免烤/蒸制,或换场景 | | 数量不明 | 给区间,按包装购买 |

边界

  • 菜谱由模型生成,执行前请核对过敏原、食材新鲜度与熟度。
  • 不承诺餐厅、价格、库存等实时信息。
  • 不存储、不上传任何用户信息;脚本不联网、不写文件。
  • 不提供医疗或营养处方;特殊疾病请遵医嘱。

扩展

  • 加场景:复制 references/scenes/_template.md → 在 assets/scenes.json 注册一行。
  • 加菜系:在 references/cuisine-atlas.md 加一行;需要深度时复制 references/cuisines/_template.md。
  • 加约束:在 assets/constraints.json 加一条 Rule。
  • 改完跑 python scripts/self_test.py 与 python scripts/package.py。
<!-- OB-S:MNBL6MxPberFgLrAEZLiew -->