Feast - Intelligent meal planning, region and season aware shopping lists, respects dietary requirements, provides recipes, and generates immersive mealtime playlists
盛宴
一种将每周烹饪转变为文化体验的膳食规划技能。
快速开始
- 新用户?运行入门设置:说“我们来设置盛宴”或“为我开启膳食规划入门”
- 老用户?查看状态:说“膳食计划状态如何?”
- 规划日?开始规划:说“我们来计划下周的餐食”
- 烹饪日?获取揭秘:说“晚餐吃什么?”
核心文件
用户数据存储在其工作区中:

workspace/meals/
├── profile.yaml # User preferences (created during onboarding)
├── history.yaml # What they've eaten
├── favourites.yaml # Loved recipes
├── failures.yaml # Never again
└── weeks/
└── YYYY-MM-DD.md # Each week's plan (self-contained)
注意:每周计划都是完全独立的——每天的食谱、主题研究、音乐播放列表和文化背景都直接嵌入在周文件中。没有单独的食谱或主题文件。
每周节奏
默认日程(用户可配置):
| 日期 | 活动 | 触发 |
|---|---|---|
| 星期四 | 调研与起草 | “我们来计划下周的安排” |
| 周五 | 确认计划 | “确认用餐计划” |
| 周六 | 购物清单 | “生成购物清单” |
| 周日 | 购物 | 用户购物 |
| 周中 | 每日揭晓 | “晚餐吃什么?” |
| 周末 | 回顾 | “回顾本周的餐食” |
通知
Feast 在关键时间点发送提醒:计划日、确认、购物清单、每日揭晓和周度回顾。这些提醒通过 cron 作业触发独立的代理程序来发送通知。
通知渠道
用户在profile.yaml文件中配置其偏好的渠道schedule.notifications.channel:
| 通道 | 交付方式 |
|---|---|
自动 | 发送到当前会话或首个可用通道 |
telegram | 通过Telegram发送(需要在OpenClaw中配置Telegram通道) |
discord | 通过Discord发送(需要在OpenClaw中配置Discord通道) |
signal | 通过Signal发送(需要在OpenClaw中配置Signal通道) |
webchat | 输出到聊天会话 |
推送通知(可选)
对于独立于聊天通道的移动设备通知,用户可以启用推送通知:
schedule:
notifications:
push:
enabled: true
method: "pushbullet" # or "ntfy"
支持的方法:
- Pushbullet——需要
pushbullet-notify技能单独安装并配置API密钥 - ntfy— 使用 ntfy.sh(或自托管);在配置文件中配置主题
推送通知会发送作为补充,而非替代主要渠道。如果推送失败,通知仍会发送到主要渠道。
时间安排
通知通过 OpenClaw 的 cron 系统发送,采用wakeMode: "next-heartbeat"。这意味着通知会在预定时间后的心跳间隔内(通常最多 1 小时)到达。对于大多数膳食计划目的,这种轻微延迟是可接受的。
管理通知
用户可以随时调整其通知偏好:
- "将我的 Feast 通知更改为 Telegram"
- "关闭早晨提示"
- "启用 Pushbullet 通知"
更新时,使用存储的 ID 移除旧的 cron 作业,并使用更新后的设置创建新的作业。
工作流程
入门引导
阅读references/onboarding.md为了确保流程的完整性。
核心问题:
- 地点(用于季节性、计量单位、商店)
- 家庭规模与份量需求
- 周计划结构(起始日、烹饪日、放松日)
- 饮食要求与阶段
- 设备与烹饪信心
- 偏好(菜系、辣度、预算)
保存至workspace/meals/profile.yaml。
计划阶段(周四)
- 检查用户配置文件
- 回顾历史记录(避免近期重复)
- 检查即将到来的文化活动(参见references/events.md)
- 检查地点的季节性
- 选择6-7餐,需包含:
- 菜系多样性
- 食材重叠性
- 均衡营养
- 快速与耗时菜肴的搭配
- 针对每一餐,请研究并嵌入以下内容:
- 地点:确定具体的原产地(精确到省份、城市或地区)。研究区域背景、历史和当前事件。撰写一段生动的描述。
- 菜肴:研究来自本土来源的正宗食谱(使用原始语言搜索)。包括起源故事、文化意义、完整的配料和制作方法。
- 背景音乐:策划一个1-2小时的播放列表,包含该地区的当代热门歌曲 + 经典/传统音乐(参见参考资料/主题研究.md)。提供完整的曲目列表及链接。
- 场景布置:如何上菜、搭配什么饮品、氛围营造建议。
- 草拟计划至
工作空间/餐食/周次/YYYY-MM-DD.md(所有内容都嵌入此单一文件中) - 呈现摘要(仅主题,不透露完整内容)
确认(周五)
- 呈现带主题的草拟计划
- 允许修改
- 标记为确认
- 设置每日计划提醒
购物清单(周六)
- 根据确认的计划生成
- 优化:
- 按类别分组
- 合并重叠的食材
- 检查包装规格与需求是否匹配
- 标记季节性商品
- 价格核对关键食材(参见参考资料/价格核对.md):
- 识别前3-5种最昂贵的商品(通常是蛋白质类、特殊食材)
- 核对用户可用商店的价格
- 记录当前的优惠、多买折扣、会员卡价格
- 在购物清单中添加价格建议
- 建议购物策略(如果节省显著,可选择单店或分店购买)
- 提供带价格指导的清单供审阅
- 允许修改
- 标记为批准
每日揭晓
- 检查是否为烹饪日
- 揭晓内容:
- 完整食谱(使用用户单位)
- 主题档案亮点:
- 地点:区域背景、历史与特色
- 当地现状(策划期间的最新新闻/事件)
- 菜肴:起源故事、文化意义、当地食用方式
- 精选歌单:
- 该地区当代热门歌曲(当地人当前收听内容)
- 该地区经典/传统音乐
- 附链接完整曲目列表(Spotify/YouTube)
- 歌单营造的氛围与旅程感
- 场景营造:上餐建议、饮品搭配、氛围提示
- 可选晨间提示(营造期待感)
周度回顾(周末总结)
- 每餐记录:评分(1-5分)、备注
- 更新历史
- 标记最爱菜品 → 加入收藏夹
- 标记失败菜品 → 加入失败记录
- 记录系统改进
- 保存周度回顾文件
食谱区域化
所有食谱均以标准化的内部单位存储。在输出时,转换为用户偏好的单位:
- 温度:摄氏度 / 华氏度 / 燃气标记
- 重量:公制(克/千克) / 英制(盎司/磅)
- 体积:公制(毫升/升) / 杯
参见参考资料/转换.md。
真实性指南
研究菜系时:
- 尽可能使用原始语言搜索
- 寻找来自本土来源的食谱,而不仅仅是英文美食博客
- 确定具体的发源地——不仅仅是“泰国菜”,而是“泰国北部,清迈风格”
- 研究真正来自该地区的音乐:
- 寻找当代热门歌曲(当地当前的排行榜歌曲)
- 寻找经典/传统音乐(来自该地区的传奇艺术家)
- 制作一份精心策划的1-2小时播放列表——而非通用的Spotify搜索
- 参见references/theme-research.md以获取指导
- 研究该地区本身——历史、时事、社会背景、其著名之处
- 注意文化背景及任何相关事件
- 尊重饮食传统(例如,中东主题中不含猪肉)
- 将所有内容嵌入周计划中——食谱、主题、音乐和背景信息均放入单个周文件中
参见references/cuisines/获取各菜系指南
模板
- templates/profile.yaml——用户配置文件
- templates/week.md——包含嵌入式食谱、主题、音乐和购物清单的周计划
- templates/shopping-list.md——独立购物清单格式(供参考;通常嵌入周计划中)
参考文献
- references/onboarding.md— 用户入门指南
- references/theme-research.md— 如何研究文化主题并策划音乐
- references/price-checking.md— 智能购物与比价指南
- references/events.md— 用于主题规划的文化活动日历
- references/nutrition.md— 饮食阶段与均衡膳食指南
- references/conversions.md— 单位换算表
- references/cuisines/— 按菜系分类的研究指南
- references/seasonality/— 区域季节性农产品
脚本
历史记录追踪
当一餐被揭晓并烹饪后,更新历史记录:
python scripts/update-history.py \
--meals-dir ~/.openclaw/workspace/meals \
--date 2026-02-03 \
--name "Thai Green Curry" \
--cuisine "Thai" \
--region "Central Thailand" \
--week-file "2026-02-02.md" \
--rating 4 \
--notes "Great, maybe more chilli next time"
这会更新history.yaml并自动重新计算统计数据。
在进行每日揭晓时,用户确认已烹饪并可选地为餐食评分后,运行此脚本以保持历史记录为最新状态。
健康与营养
- 若用户设有目标,则追踪每餐的卡路里
- 确保每周食物种类多样化
- 遵循不同饮食阶段(如减重期=热量赤字等)
- 标记任何营养相关问题
时令感知
在推荐食材前,检查用户所在地区的季节性。时令农产品具有以下优势:
- 品质更好
- 通常更便宜
- 更环保
并非每种食材都必须是当季的,但应尽可能优先选择时令食材。
区域指南请参见references/seasonality/。


微信扫一扫,打赏作者吧~