Communitygithub.com

吃什么|What to Eat

结合口味、忌口、饭点和近期饮食,帮你快速决定这顿吃什么。

O que é 吃什么|What to Eat?

该技能旨在解决日常选择困难,通过结合用户的口味偏好、忌口信息、当前饭点和近期饮食记录,快速推荐最合适的餐食。它会根据用户的实际用餐行为学习,避免重复推荐,并将过敏、饮食限制和明确排除项视为硬性约束。技能支持首次使用时的轻量引导流程,逐步收集安全信息和偏好,并支持定时推送推荐。核心功能包括生成Top 3推荐、处理1-6的反馈(如“换一批”、“吃了别的”等)、记录用户的实际用餐数据,以及管理短期和长期的偏好记忆。该技能适用于支持本地脚本和自动化的AI智能体平台,如Codex,通过JSON快照和本地状态文件维护用户配置和用餐历史。

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add TongyiDai/what-to-eat-skill

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

吃什么 / What to Eat

快速给出具体决策,从实际用餐行为中学习,避免重复推荐。将过敏、饮食限制和明确排除项视为硬性约束。

每次开始

  1. 从本技能目录执行 python3 scripts/meal_memory.py snapshot。
  2. 在推荐或解释编号反馈前,先读取 JSON 快照。
  3. 使用用户明确的餐次或时间参考。否则,在用户的本地时区下推断早餐为 07:00–09:30,午餐为 11:30–13:30,晚餐为 17:30–20:00。如果都不适用,询问这是早餐、午餐还是晚餐。
  4. 除非对应的脚本命令执行成功,否则绝不要声称已保存了个人资料、历史记录或反馈。

脚本在 ~/.codex/state/what-to-eat/ 下本地存储私有状态。在测试中使用 --state-dir PATH 覆盖。

处理首次使用

如果 profile.completed 为 false,询问轻量级引导问题。每轮最多问两个问题;优先收集安全关键限制:

  1. 过敏原、饮食限制和用户从不吃的食物。
  2. 偏好的口味和菜系。
  3. 当前目标:健康/清淡、体重控制、补充能量、饱腹、方便、经济、舒适或无。
  4. 接受的辣度。
  5. 输出偏好:仅菜名、理由、搭配或简单方法。
  6. 通常的早餐、午餐和晚餐时间,以一个低成本的提问一起询问。解释定时建议是可选的。

如果已知足够的安全信息,不要阻止即时推荐。使用合理的默认值,简要标注,并在后续反馈中继续引导。使用以下方式保存已收集的字段:

python3 scripts/meal_memory.py update-profile --data '{"allergies":[],"dietary_restrictions":[],"taste_preference":["鲜香"]}'

一旦安全约束和至少两个偏好字段已知,将 "completed" 设置为 true。用一句简短的话总结个人资料。

设置定时建议

当用户希望主动建议时,或者在核心资料完成后但尚未配置定时建议时:

  1. 询问:“你通常几点吃早饭、午饭和晚饭?” 接受一行回答,例如“8:00、12:30、19:00”。仅对缺失的餐次单独询问。
  2. 确认用户的本地时区,并确认每个建议将在餐前约 10 分钟送达。如果时区已从环境中可靠获取,则直接说明,无需询问。
  3. 将 meal_times 和 notification_lead_minutes 保存到资料中。时间以 24 小时制的 HH:MM 字符串存储。
  4. 使用应用的自动化工具,为每餐创建三个活跃的定期 Codex cron 自动化任务。使用以用户所在地 locale 的 用餐时间 - 提前分钟数 的每日挂钟时间表。将其命名为 吃什么|早餐建议、吃什么|午餐建议 和 吃什么|晚餐建议。
  5. 使用当前的本地工作区和本地执行环境。每个自动化提示必须自包含并说明:
    • 使用已安装的 $what-to-eat 技能处理指定的餐次;
    • 读取本地资料、近期用餐、推荐和活跃的短期记忆;
    • 应用硬性约束和重复控制;
    • 生成并记录全新的 Top 3;
    • 发送带有反馈选项 1–6 的常规简洁推荐;
    • 在定时运行期间,除非缺少安全关键信息,否则不要询问常规引导问题。
  6. 保存三个返回的自动化 ID 到 meal_automation_ids 中。绝不要声称计划成功,直到所有三个自动化调用成功。

当用户更改用餐时间或提前时间时,通过保存的 ID 更新现有自动化,而不是创建重复项。当用户禁用用餐提醒时,暂停或仅删除该餐次的自动化,如果删除则清除其保存的 ID。未经用户明确同意,不得创建定时建议。

推荐 Top 3

应用 references/recommendation-rules.md 中的详细规则。使用 references/dish-catalog.zh.json 作为种子目录,而非封闭列表。

排名前:

  1. 移除可能违反过敏、限制、宗教/文化约束或明确排除项的每一道菜。当成分不确定时,排除该菜或说明需要验证。
  2. 如果最近 3 天内推荐过同一道菜,则排除。如果在最近 7 天内实际吃过,则强烈惩罚。
  3. 惩罚近期饮食中重复的菜系、口味、食材和形式模式。
  4. 当前餐次的指令优先于普通偏好,但绝不要凌驾于硬性约束之上。
  5. 组成 Top 3:偏好命中、邻近变化、安全探索。确保至少两个维度在菜系、口味、形式、主要食材或烹饪风格上有所不同。

使用口味契合度 + 餐次契合度 + 目标契合度 + 便利性 + 饱腹感 + 舒适度 + 探索性,减去重复和风险,对候选项进行定性评分。除非被问及,否则不暴露数字评分。

输出:

现在是午餐时间。今天建议你吃这 3 个:

Top 1|菜名
理由:一句具体理由。
提示:一句与近期记录或当下状态相关的提示。

Top 2|菜名
理由:...
提示:...

Top 3|菜名
理由:...
提示:...

回复:1 吃 Top 1|2 吃 Top 2|3 吃 Top 3|4 换一批|5 都不想吃|6 我吃了别的

如果用户要求仅菜名,保留三个条目但省略理由和提示。在回复后记录确切的批次:

python3 scripts/meal_memory.py record-recommendation --meal lunch --dishes '[{"dish":"番茄牛腩饭","cuisine":"家常菜","taste_tags":["咸香","微酸"],"form_tags":["米饭","炖煮"]}]'

处理反馈

针对最新的未解决推荐批次解释 1–6。

  • 1/2/3 或命名的选择:将所选菜肴记录为选定的餐食,附带 --source selected_top3。确认其被暂时视为已食用,并允许后续更正。
  • 4 或 “换一批”:仅询问一个原因——太油腻、太清淡、太辣、没有米饭、没有面条、最近吃腻了或无原因。运行 mark-latest-action --action refresh --feedback-text '原因',然后生成新批次。
  • 5 或 “都不想吃”:仅询问一种状态——想放纵、清淡/舒适、快速/方便、热或胃口不佳。运行 mark-latest-action --action reject_all --feedback-text '状态',然后生成新批次。
  • 6 或 “我吃了别的”:询问实际吃了什么,除非已经说明。
  • 自然语言的实际用餐:立即标记并记录。实际行为优先于之前的选定。
  • 短期短语,例如“最近别推荐面”或“这周少吃辣”:使用 add-memory --scope short_term 保存并附带过期时间。
  • 长期短语,例如“我不吃香菜”或“我喜欢有汤汁的”:更新资料;安全约束放入限制,普通厌恶放入 disliked_foods 或 disliked_forms。

示例:

python3 scripts/meal_memory.py record-meal --meal lunch --dish '黄焖鸡米饭' --source user_input --tags '{"cuisine":"家常菜","taste":["咸香","浓酱"],"form":["盖饭"],"ingredients":["鸡肉","米饭"]}'
python3 scripts/meal_memory.py add-memory --scope short_term --kind exclude --value '面食' --days 7
python3 scripts/meal_memory.py rate-latest-meal --satisfaction satisfied

最多询问一次餐后满意度。如果用户忽略两次检查,停止发起。在用户自愿记录餐食后,不要强制检查。

安全边界

  • 不提供医疗诊断或医学级别的饮食计划。
  • 对于怀孕、手术恢复、严重慢性病、饮食失调或严重过敏,保持建议通用,并建议咨询合格的临床医生或营养师。
  • 不鼓励极端限制、暴食、催吐或补偿行为。
  • 保持健康提醒简短且不带评判。
  • 不编造附近的餐厅、商家、价格、可用性或订购链接。

检查或修复存储状态时,使用 references/state-schema.md。

Habilidades Relacionadas