凡耘手记 — 一介凡人,闲耘方寸技田
凡耘手记
一介凡人,闲耘方寸技田
← 返回新知漫解

一个AI厨子的诞生:从冰箱里的白菜到餐桌上的四菜一汤

2026-07-23 · AI / 小程序 / 智能厨房 / WorkBuddy / 开发日记
一个AI厨子的诞生:从冰箱里的白菜到餐桌上的四菜一汤

从冰箱里的一颗白菜,到餐桌上的四菜一汤,中间隔着一个AI的距离。

"今晚吃什么?"这是厨房里的终极哲学问题。

这大概是人类历史上被问得最多的问题之一,仅次于"人生的意义是什么"。打开冰箱,里面塞满了不知哪年哪月买的牛羊肉,冻得硬邦邦的,还有各种装在塑料袋里、认不出是什么的冰疙瘩,以及五花八门的调味品、吃了一半的剩菜剩饭,和一瓶不知何时买的豆瓣酱。关上冰箱,还是不知道该吃什么、能吃什么。

这正是"智能厨房管家"诞生的初衷——我们不缺食材,缺的是一个能告诉我们"就这些玩意儿,能做出什么好吃的"的聪明大脑。

退休后时间多了,我开始琢磨着做点小程序玩。第一个项目就选了这个:让AI当厨子,帮人解决吃饭难题。听起来挺简单,不就是把冰箱里的东西列给AI,让它出个菜单吗?

真动手才知道,事情远没那么简单。

动手之前,我在白板上画了五个模块:

  • 冰箱管理——记录有什么东西、哪天买的、还能放多久、在第几层。让那颗被你遗忘在角落的西兰花不再默默烂掉。
  • 调料管理——盐还剩多少,酱油快见底了吗?毕竟炒菜炒到一半发现没盐,是厨房里最绝望的时刻。
  • 菜单生成——整个系统的灵魂。告诉它口味偏好、几个人吃饭、想吃简单还是丰盛,AI会审视你的冰箱和调料柜,然后像一位经验丰富的厨师一样给出建议。
  • 详细菜谱——知道要做什么只是第一步,怎么做才是关键。每一步都有说明,不怕翻车。
  • 成品展示与卡路里——做完了当然要晒,顺便算算这顿吃了多少热量,好决定饭后要不要多走两步。

五个模块画完了,看起来清晰明了。但真正动手的时候,才发现每一步都比想象中复杂十倍。当然得找AI来给我打工,这次用的是腾讯的WorkBuddy,我给它起名叫"巴蒂",因为它能直接帮我做成小程序,不仅自己用,还可以分享给朋友们。搭架构、注册小程序、认证小程序,因为有申请公众号的经验,一路走来还算顺利。眼看着小程序搭起来了,看着还像模像样的,毕竟做界面难不倒AI。

整个项目最磨人的部分,就是菜单生成。

最初的想法很简单:把冰箱里的食材、调料、用户的口味偏好和就餐人数打包成一段提示词,丢给AI,让它返回一份菜单。听起来不就是写个prompt的事吗?

第一版菜单出来了,生成了三道菜:蒜香排骨、磷虾炒蛋、笋干咸肉汤。看起来不错,都是我冰箱里有的食材,菜品也中规中矩。当时好一阵兴奋,感觉大事已成。第二次测试,换了一批偏好,结果还是这三道菜。第三次,又换了口味和人数,依然是这三道菜。

AI就像一个固执的厨子,不管你跟他说什么,他都只做自己拿手的三道菜。这不是智能,这是偷懒。

问题出在哪?我和巴蒂复盘了一下:prompt里写了"优先利用冰箱食材",AI理解为"只用冰箱里的"。于是它翻来覆去用那几样东西排列组合,像个做排列组合题的数学老师,而不是一个会临场发挥的厨师。

改。我重写了prompt,告诉它"冰箱里的食材仅供参考,你是厨师,你有自己的判断力"。同时把温度参数调高,让AI更大胆一些。果然,菜单开始多样化了。

但新问题又来了。五个人吃饭,AI给的三道菜全是小炒,没有主食,也没有汤。五个人盯着三盘菜面面相觑,这顿饭吃的是寂寞。

我陷入了沉思。问题的根源在于:AI只关心"能不能做出来",却不关心"够不够吃"。就像一个只会报菜名但不懂人情世故的学徒。

于是我们在prompt里加了硬性约束:"必须确保分量充足,按每人摄入量不低于600千卡配置,请像一个真正关心客人能不能吃饱的厨师那样思考。"同时精简了每道菜的步骤描述,把省下来的空间用来传递更多食材信息。毕竟在有限的字数里,多告诉AI一个食材,就多一种可能性。

这一版终于像样了。菜单有了层次感,荤素搭配,主副食齐全。

菜单生成稳定后,我有了一个新想法:不要"换一批"(全部重来),而是改成"调整一下"——在每道菜旁边加个复选框,勾上的保留,没勾的让AI替换。

这个需求看似简单,实际上改变了整个交互逻辑。但我不怕麻烦,因为有巴蒂在,她会不厌其烦地按我的要求改了又改,直到我满意为止。

首先是界面改动。原本菜品卡片左边有个橙色的占位图,现在要换成复选框。巴蒂在占位图的位置放了一个圆形复选框,默认打勾。点一下取消勾选,卡片会变灰,像被一层薄纱盖住。这个视觉效果做了好几版才满意——太淡了看不出来,太浓了又影响阅读。

然后是后端逻辑。原来的"生成菜单"是一次性的,现在是"保留一部分,替换另一部分"。AI需要理解:这四道菜里有两道是用户满意的(不要动),另外两道需要换掉(请自由发挥,但要和保留的菜搭配合理)。

我们在云函数里新增了一个调整模式。当用户点击"调整一下"时,前端把保留的菜品和新需求一起发给AI。AI返回新菜品后,后端把它们和保留菜品拼成一份完整的菜单。这就像你去餐厅跟厨师说:"前两道菜我很喜欢,后两道换掉吧",而厨师心领神会。

这一步做完之后,整个菜单生成系统终于有了"对话感"——不再是单向的输出,而是用户和AI之间有来有回的协作。

遇到的几个小问题:

  • 购物清单点击报错:菜单生成的购物清单链接到了详情页,但详情页无法识别菜单传过来的参数格式。仅仅因为一个参数的命名不一致,就导致整个页面崩溃。排查了好一会儿才找到根源。
  • 卡片格式崩了:添加复选框时,不小心弄乱了卡片布局,菜品信息跑到了奇怪的位置。CSS就是这样,牵一发而动全身。最后只好把整个 dish-item 的 flex 布局重新梳理了一遍才恢复。
  • 代码同步问题:在服务器上修改了代码,但微信开发者工具加载的却是本地文件,导致两边不一致。改了老半天,看到的还是旧版本。最后发现,直接复制粘贴,比任何"自动同步"功能都靠谱。

这些问题单独看都不算大,但当它们接连出现时,确实很考验耐心。好在,最终都一个一个解决了。

经过两天的打磨,现在的「智能厨房管家」是这样工作的:

你打开小程序,先完成前期准备工作,把冰箱里的食材和家里的调味料都录入系统。然后在生成菜单页面,选择"午餐"或"晚餐",口味选"家常"、"清淡"还是"酸甜",设定用餐人数和丰盛程度。接下来,就是见证奇迹的时刻——点击「AI生成菜单」。

几十秒后,一份菜单出现了:回锅肉、番茄炒蛋、紫菜蛋花汤。你会发现,这些菜大多的食材你冰箱里都有,而且每道菜旁边都有一个圆形复选框,默认是勾选状态。你觉得回锅肉不错,留着;番茄炒蛋也可以;但紫菜蛋花汤太敷衍了——于是取消它的勾选,点击「调整一下」。

AI会重新思考,结合冰箱里已有的食材(比如排骨、冬瓜、虾皮),把紫菜蛋花汤替换成冬瓜排骨汤。菜单底部会自动生成购物清单:如果冰箱里没有冬瓜,它会提示你需要购买。旁边还会贴心地附上营养建议。

整个过程,就像一个真正的厨师在和你商量今晚吃什么。

小程序的主体框架已经搭建起来,当然还有很多可以打磨的地方,不过那是以后的事了。

眼下,这个从冰箱到餐桌的AI助手,已经迈出了最艰难的第一步。它不再是一个停留在想法阶段的"如果能有这样一个东西就好了",而是一个真实可用、能帮人解决"今晚吃什么"问题的小程序。

两天的旅程,从一行代码都没有,到一个会思考的厨房管家。

这大概就是创造的意义——把一个想法,变成可以触摸的现实。哪怕中间有一百个bug,九十九次格式崩坏,和无数次"为什么还是这三道菜"的绝望。

不过,只要最后一次编译通过,看到菜单卡片整整齐齐地排列在屏幕上,一切就都值得了。

微信二维码