一个给独居开发者用的一人食厨房 Skill。
它会从可信菜谱里找方案,再按你的库存、厨具、口味、预算和时间,整理成一份能照着做的下厨计划。不是灵感菜单,也不是那种看完还是不知道先切葱还是先热锅的菜谱摘要。
我做 CookGPT 的原因很简单:写了一天代码之后,决定吃什么真的很烦。
外卖方便,但连续吃几天,身体会抗议。自己做饭也不是特别难,麻烦的是前面那一串小决策:买什么、买多少、家里还有什么、这个菜谱是不是靠谱、一个人吃要减到多少量、锅够不够、会不会剩半颗洋葱在冰箱里慢慢变成考古现场。
CookGPT 想把这些琐碎决策收起来一点。
你给它一个厨房档案和当前库存,它帮你从可信来源里找菜谱,缩放成一人份,写出买菜清单、备菜顺序、火候提示和库存更新建议。你照着做就行。
- 独自生活的 Vibe Coder、开发者、设计师和创作者
- 独立创业者、OPC、小团队创始人
- 想减少外卖,但又不想把下厨变成第二份工作的人
- 刚开始做饭的新手
- 有减脂、增肌、控糖、忌口或过敏需求的人
- 偶尔想把一人食扩展成两人餐、家庭餐或一顿稍微有仪式感的晚饭的人
这个项目不打算把你训练成大厨。它更像一个厨房里的执行助理:少问你一点,少浪费一点,让你更容易吃上一顿正常饭。
CookGPT 默认不编菜谱。它会优先用这些来源:
- 本地缓存的已验证菜谱
- 你的 Obsidian 菜谱笔记
- 可信 YouTube 创作者
- 有结构化食材和步骤的菜谱网页
- 你明确加入 trusted sources 的其他来源
如果一个来源只有图片、评论、模糊描述,或者缺少食材和步骤,它不应该拿来当正式菜谱用。
很多菜谱的问题不是不好吃,是不好执行。
CookGPT 会把菜谱拆成:
- 一人份食材表
- 需要提前处理的东西
- 开火后的步骤顺序
- 每一步的火候
- 判断熟没熟的提示
- 买菜清单
- Mermaid 流程图
如果是一顿多菜,它也可以排时间线。先做能放的,最后做海鲜、牛排、意面这种容易翻车的东西。
你可以告诉它:
我买了 6 个鸡蛋、2 个番茄、一袋菠菜。
或者:
今晚用了 2 个鸡蛋和 1 个番茄。
它会维护一个简单库存。之后推荐菜谱时,优先考虑你已经有的东西。这样下厨不会每次都从零开始买,也不容易把半袋食材忘在冰箱里。
很多好菜谱在视频里,但视频不适合做饭时反复拖进度条。
CookGPT 可以用可信 YouTube 创作者的视频字幕和元数据,提取食材、顺序、火候和关键动作。默认只下载字幕和元数据,不下载视频或音频。
如果字幕太乱,或者缺少足够信息,它应该拒绝整理,而不是补一堆看起来合理的步骤。
如果你只有电饭锅、一口锅、没有烤箱,或者今天只想少洗碗,都可以写进 profile。
健康目标也可以写进去,比如减脂、增肌、高蛋白、少油、少盐、控糖。CookGPT 会按这些条件筛选和缩放菜谱。
它不是医生,也不是营养师。它做的是日常饮食执行,不做医疗判断。
晚上 8:30,一个 Vibe Coder 关掉编辑器。今天写了太多 prompt,也看了太多报错。现在的问题很朴素:饿了。
他对 CookGPT 说:
我现在冰箱里有鸡蛋、番茄、菠菜、冷冻虾仁和米饭。
今晚想吃一顿一人食,高蛋白,少油,30 分钟内完成,最好少洗锅。
CookGPT 应该给他的不是一句 "做个番茄虾仁蛋饭吧"。
更合理的输出会像这样:
- 选一个有来源的菜谱或做法基础
- 把原菜谱缩成一人份
- 标出用掉哪些库存,还缺什么
- 安排顺序:先解冻虾仁,再洗菜切番茄,最后打蛋
- 写清楚开火后的节奏:番茄先炒出汁,虾仁变色就停,蛋不要炒老
- 给出火候:中火炒番茄,小火收汁,虾仁短时间加热
- 生成一个流程图
- 最后提醒库存更新:鸡蛋 -2、番茄 -1、虾仁 -100g、菠菜 -一把
重点不是菜名。重点是把 "我现在该怎么吃饭" 变成一套能执行的动作。
个人数据不放在 skill 目录里。先创建用户数据目录:
mkdir -p ~/.codex/user-data/solo-kitchen/然后把模板复制过去:
cp user-data-template/* ~/.codex/user-data/solo-kitchen/模板文件包括:
user-data-template/
├── profile.json
├── inventory.json
├── trusted_sources.json
├── obsidian_sources.json
├── obsidian_recipes_index.json
└── recipe_knowledge.jsonl
这是你的厨房档案。至少建议填这些:
- 你在哪个城市或区域买菜
- 常用买菜渠道
- 默认一餐预算
- 忌口、过敏原、宗教或医疗限制
- 喜欢和不喜欢的口味
- 能吃辣到什么程度
- 有哪些厨具
- 有哪些常备调料
- 一顿饭最多愿意花多久
- 能接受多复杂的步骤
- 洗锅洗碗的忍耐度
- 健康目标,比如减脂、增肌、控糖
默认是一人一餐:
{
"default_serving": {
"people": 1,
"meals": 1
}
}这是库存。刚开始可以是空的:
{
"version": 1,
"items": []
}不用一次性录完。你可以边买边说,边做边扣。
这里放你信任的菜谱来源。
可以是 YouTube 频道、菜谱网站、书籍、自己的笔记,或者其他来源。CookGPT 会优先从这些地方找菜谱。
如果某个网站你不想用,也可以放进排除列表:
{
"name": "example source",
"url_pattern": "example.com",
"reason": "不作为可信菜谱来源"
}如果你有自己的 Obsidian 菜谱库,可以在这里配置 vault 和菜谱目录。
默认策略是只读。CookGPT 不应该自动写回你的 Obsidian,除非你明确说保存、同步或更新。
这是本地菜谱缓存。
它适合存已经验证过的菜谱摘要,比如来源、URL、核验日期、食材、做法摘要、火候提示和一人份适配备注。
不要把整篇菜谱原文塞进去。也不要把模型现场编的菜谱塞进去。
用 solo-kitchen 根据我的库存推荐一顿一人食,给我买菜清单和操作流程图。
我今天只有 30 分钟,想吃高蛋白、少洗锅的一人食,根据库存给我一个方案。
参考这个 YouTube 菜谱,帮我整理成一人食操作手册。
CookGPT 有几条硬规则:
- 不凭空编菜谱
- 优先用可信来源
- 默认一人一餐
- 先看真实库存
- 用户数据放在 skill 文件夹之外
- 不默认做周计划、剩菜计划或过期提醒
- 不替代医生、营养师或医疗建议
如果没有足够来源,它应该停下来问你要不要扩大来源范围,而不是假装自己知道。
.
├── skill/
│ ├── SKILL.md
│ ├── agents/
│ ├── references/
│ └── scripts/
├── user-data-template/
│ ├── profile.json
│ ├── inventory.json
│ ├── trusted_sources.json
│ ├── obsidian_sources.json
│ ├── obsidian_recipes_index.json
│ └── recipe_knowledge.jsonl
├── LICENSE
├── README.md
└── README.en.md
MIT License. See LICENSE.