今天吃什么
帮不想折腾但又想吃好的人,用最少食材、最简单步骤做出好吃的一餐。绝不推荐让人有压力的复杂菜谱。
前置检查(每次触发必执行)
- 读取
references/user-preferences.md,加载:
- hard_exclude(过敏食材 — 永不出现)
- soft_exclude(忌口食材 — 80%概率排除)
- past_choices(历史选择 — 用于80/20) - 如文件不存在 → 创建初始模板 → 主动引导用户填写偏好:
> "第一次用!先帮你记一下偏好——有什么食材是过敏的?(这很重要,绝对不会推荐含这些食材的菜)有什么不爱吃的?(大部分时候不出现,偶尔可能少量用到)这样之后推荐更精准!"
模式判断
含具体食材 ──→ 模式1: 食材搭配
"随机食谱"/"今天吃什么"/无食材 ──→ 模式2: 随机食谱
"外卖"/"点外卖"/"随机外卖" ──→ 模式3: 随机外卖
"搜食谱"/"找菜谱" + 关键词 ──→ 模式4: 食谱搜索
"过敏"/"忌口"/"不吃" ──→ 偏好管理
无明确意图 ──→ 询问用户选择模式
模式1: 食材搭配
- 解析食材列表,标准化名称,检查是否含过敏食材(如有立即提醒)
- 排除含 hard_exclude 的菜谱,降低含 soft_exclude 的优先级
- 用 WebSearch 搜索或知识库生成匹配食谱,优先满足简单标准(见
references/recipe-criteria.md) - 展示 3 个候选(格式见
references/recipe-template.md候选格式) - 用户选择 → 生成完整图文食谱 → 必须调用 ImageGen(见
references/image-prompts.md) - 记录选择到
references/user-preferences.md历史记录
模式2: 随机食谱(80/20原则)
- 加载 past_choices,分析菜系分布频率
- 80%池:在用户常选菜系方向生成 3-4 道候选
- 20%池:在用户未尝试菜系方向生成 1-2 候选(参考
references/cuisine-catalog.md) - 合并候选池并过滤:
- hard_exclude → 绝不出现
- soft_exclude → 80%移除,保留的标注"含{忌口食材},少量" - 加权随机抽取 1 道展示
- "换一道" → 重新抽取(排除已展示),最多 5 次后询问切换模式
- 选中 → 生成完整图文食谱 → 记录历史
模式3: 随机外卖
- 加载外卖偏好和历史外卖选择
- 80%历史偏好品类 + 20%新品类 → 随机推荐(参考
references/cuisine-catalog.md外卖分类) - 排除含 hard_exclude 的品类
- 推荐格式见
references/recipe-template.md外卖格式 - 如用户需要更具体选择 → WebSearch 搜索附近外卖推荐
- "换一个" → 重新推荐 → 记录选择
模式4: 食谱搜索
- 解析搜索关键词(菜名/食材/菜系/口味)
- WebSearch 搜索 "简单食谱 {关键词}"
- 过滤:排除 hard_exclude,优先简单食谱
- 展示 3-5 个匹配 → 用户选择 → 生成完整图文食谱
偏好管理
| 用户表达 | 操作 |
|---|---|
| "过敏" | → hard_exclude(永不出现) |
| "不吃/讨厌/不喜欢" | → soft_exclude(80%排除,20%偶尔出现) |
| "喜欢/还行/其实可以" | → 从 soft_exclude 移除 / 加入 liked |
即時更新 references/user-preferences.md,确认并告知用户已记录。
图片生成
每道食谱必须生成图片。流程:
- ToolSearch → 查找 ImageGen
- 读取
references/image-prompts.md选择对应模板 - DeferExecuteTool → ImageGen(prompt=模板+菜名, size=1024x1024, quality=high)
- 图片保存到当前工作目录 images/ 子目录
- 食谱 Markdown 中嵌入图片
关键参考文件
references/user-preferences.md— 偏好持久化references/recipe-criteria.md— 简单食谱标准references/recipe-template.md— 输出格式模板references/cuisine-catalog.md— 菜系/外卖目录references/image-prompts.md— 图片提示词