← 全部开发日记
2026-09-23 · 数据做饭

我把 300 道家常菜塞进 App 后,发现中国人做饭有三个规律

300 道菜、193 种食材、22 种撑起一半。整理完这个库我才想明白,菜为什么会烂在冰箱里——不是你买多了,是你买的东西没有第二个去处。

为了给「吃好饭」做菜谱库,我整理了 300 道中式家常菜。

整理的过程非常不浪漫:一道一道敲食材、敲用量、敲步骤、敲耗时、敲成本。敲到第两百道的时候,我开始有一种强烈的既视感——怎么又是生抽、又是葱姜蒜

后来我干脆写了个脚本,把这 300 道菜全部拆成结构化数据,跑了一遍统计。

结果比我预想的有意思得多。我们做饭其实特别有规律。而且这三个规律,每一个都在解释同一件事:为什么你家的菜会烂在冰箱里

先把家底摊开。

这 300 道菜里,早餐 30 道、午餐 74 道、晚餐 196 道。按类型分:荤菜 101、素菜 70、单品(一碗解决的面 / 粥 / 饭)47、汤 32、甜品 17、地域菜 13、空气炸锅 8、火锅 6、微醺 6。

然后是几个让我坐直了的数字:

下面说三个规律。

规律一:家常菜的基本盘,小得惊人

先看 Top 25 是什么。

生抽 74、小葱 46、大蒜 43、鸡蛋 41、生姜 36、干辣椒 25、白糖 24、食用油 22、豆腐 22、青椒 21、豆瓣酱 16、鸡腿 16、淀粉 16、面条 15、土豆 15、料酒 15、陈醋 15、胡萝卜 14、大米 13、猪肉末 13、老抽 13、香菇 13、番茄 12、黄瓜 12、洋葱 12。

配图Top 25 食材出现次数横向条形图(bar chart),从生抽 74 递减到洋葱 12,调味料用一种颜色、主料用另一种颜色区分

第一眼的观感是:前排几乎全是调味料和「万能配角」

生抽、白糖、料酒、老抽、陈醋、淀粉、豆瓣酱、食用油——八个是调味品。葱、姜、蒜、干辣椒——四个是基础香料。鸡蛋、豆腐、土豆、胡萝卜、洋葱——这些是能进任何一道菜的百搭件。

真正意义上的「主料」(某块具体的肉、某种具体的菜)反而非常分散。出现最多的鸡腿也才 16 次,在 300 道菜里占 5%。

再看累计曲线:22 种食材覆盖一半,68 种覆盖八成,剩下 125 种食材加起来只贡献了最后那 20%。

配图食材累计覆盖率曲线(帕累托图 / 折线图),横轴是按频次排序的食材序号 1→193,纵轴是累计占比,在 x=22 处标虚线「50%」,x=68 处标虚线「80%」

这条曲线是典型的长尾。翻译成人话就是:

中式家常菜是一个「底座很小、上层很散」的系统。

底座是那二十来样调味料和万能配角,上层是随便你换的主料。你换一块肉、换一把菜,底座不变,菜就变了。

我顺手算了另一个角度:如果你家里只常备出现频率最高的那 50 种食材,这 300 道菜里有 85 道可以完整做出来,一样不缺。前 40 种能做 62 道,前 30 种能做 41 道。

30 样东西 → 41 道菜。这个投入产出比,比我想象中高太多了。

所以厨房囤货的重点,从来不是「买全」,是把那二十来样常备住。

调味料买齐、葱姜蒜不断货、鸡蛋豆腐土豆常年有——你的厨房就已经有底了。剩下的每次买菜只需要解决「今天吃什么主料」这一个问题。

反过来说,很多人觉得做饭难,是因为每次都在从零开始凑。少一样酱油就整道菜做不成,只好点外卖。

规律二:那 64 种只用过一次的食材,就是烂在冰箱里的那批

这是我看到统计结果时最扎心的一条。

193 种食材里,有 64 种在 300 道菜里只出现过一次。整整三分之一。

这些是什么东西?是那种「为了做某一道菜专门去买」的配料。做一次泰式风味买的柠檬叶,做一次某道汤买的一整包干货,跟着某个菜谱买的一小罐特殊酱料。

问题在于:超市不按你的用量卖东西。

菜谱说要两片,超市卖你一整包。菜谱说要一勺,超市卖你一整瓶。你做完那道菜,剩下的九成没有第二个去处——因为在你的日常菜单里,它确实没有第二道菜要用。

于是它进了冰箱最里层,进了橱柜最上格。三个月后你翻出来,它已经不能吃了。

我以前一直以为食材浪费的根源是「买多了」。整完这 300 道菜我才想明白,不是。

根源是「买了没有复用场景」。

同样是买一把香菜,如果你这周有三道菜要用,它就不叫浪费;如果只有一道,那半把从买回来的那一刻就注定要扔。买多买少不是关键,复用率才是。

这也正好解释了为什么「按菜谱买菜」这条路走不通。菜谱是单点最优——它只对那一道菜负责,不对你的冰箱负责。你照着五个不同的菜谱买五次菜,就会攒出五份边角料。

我在做 App 排餐算法的时候,绕了很久才绕到这个点上。一开始我算的是「怎么给用户推好吃的菜」,后来我发现真正该算的是另一个东西:

这几道菜安排在一起,食材的重合度有多高。

一只鸡能不能拆成三顿,一把小葱能不能进四道菜,这周买的胡萝卜有没有第二个去处——AI 排餐真正在优化的目标函数,其实是食材复用率。

规律三:中国家常菜是「快菜」,麻烦的从来不是灶台

第三个规律来自时间数据。

300 道菜的烹饪时间,中位数 18 分钟,平均 24.2 分钟。其中 143 道,也就是接近一半,15 分钟内能做完。

配图烹饪时长分布直方图(histogram),横轴 0-60+ 分钟分桶,纵轴菜品数量,在 15 分钟处画一条竖线并标注「143 道在这条线左边」

配合前面两个数字一起看:平均每道菜 3.5 种食材,平均成本 ¥11.8。

3.5 样东西、18 分钟、11 块 8。这就是一顿中式家常菜的真实规格。

那为什么所有人都觉得「做饭麻烦」?

因为麻烦的部分根本不在灶台前。

站在灶台前那 18 分钟,是整个流程里最简单、最确定、最不需要动脑子的一段。真正消耗你的是它前面那些:

下班路上想不出今晚吃什么。打开冰箱看三十秒,看到一堆互相之间没有关系的东西。想做某道菜,发现缺一样,要不要为它专门跑一趟。周末去超市,站在货架前不知道该买多少。

所有的成本都在决策和采购,不在烹饪。

而我们所有人给自己的解决方案,都是在优化烹饪那一段——买更好的锅、买预制菜、学更快的刀工。优化了半天,优化的是那个本来就只要 18 分钟的环节。

这大概是「做饭」这件事上最大的一个错配。

一句必须说的话

上面这些数字都是真的,脚本跑出来的,我没有修饰。

但样本是有偏的。这 300 道菜是我按自己理解的家常口味选的——中式为主,西式菜和烘焙基本没有,地域上也不可能覆盖全。所以以上所有结论,只在「中式家常菜」这个范围内成立。

如果你家餐桌上经常出现烤箱和黄油,这三个规律对你可能不太适用。这一点我得说清楚。

所以 AI 排餐不是玄学

写到这里,回到我做这个 App 的本行。

很多人一听「AI 帮你决定今晚吃什么」,第一反应是这玩意儿能靠谱吗,是不是随机推荐披个壳。

我可以说得很实在:不是。

它在算的,就是上面这三条规律的合成——

从你冰箱里现有的东西出发(因为基本盘就那 20 来样,命中率天然很高),优先安排快要坏的,并且让几天的菜单共享尽可能多的食材(因为浪费的根源是复用率,不是买多买少),最后把真正缺的那几样汇成一张清单,让你只跑一趟

它不负责让你成为大厨。它负责的是把那 18 分钟前面的所有摩擦拿掉。

这 300 道菜,是这套算法的原料。整理它们花了我很多个晚上,但也正是这个笨活儿,让我第一次看清楚了自己家厨房到底在发生什么。


吃好饭 iOS 已上架,App Store 搜「吃好饭 AI冰箱」。记冰箱、算临期、按现有食材配餐,数据只存在你自己手机里。

这是「一个人做 App」连载的第 7 篇。前面几篇讲了定价、0 服务器架构和被苹果打回的坑,感兴趣可以翻。

官网:https://ai-chen2050.github.io/chihaofan