← 全部开发日记
2026-08-01 · 开发日记上架

27 天,我一个人做了台装在手机里的冰箱

7月5日第一个 commit,8月1日上架。中间 47 次提交、43918 行 Dart 代码。这是连载第一篇。

7 月 5 日晚上,我敲下了第一个 commit,message 是 feat: initialize Flutter project

8 月 1 日,「吃好饭」在 App Store 上架。

中间隔了 27 天、47 次提交、43918 行 Dart 代码。没有团队,没有融资,没有产品经理跟我吵架。只有一个我,和一台经常在半夜跑不动模拟器的 Mac。

配图git log 截图,首个 commit 2026-07-05 与最新 commit 2026-08-01

这是一个连载的第一篇。我打算把这件事从头到尾写清楚:为什么做、怎么定价、架构怎么选、被苹果打回多少次。今天先讲最开头的部分。

起点是一根烂掉的芹菜

我下班到家一般是八点半。

流程是固定的:打开冰箱,站着,看三十秒,关上,掏手机点外卖。

第二天、第三天,重复。

大概一周之后,我在冰箱最里层翻出来一把芹菜,叶子已经黄成半透明了。买它的那天我是有计划的——我想做个芹菜炒肉。计划在下班回家的那三十秒里蒸发了。

这个循环我过了很多年。它不是「我懒」这么简单。

真正卡住我的是那三十秒里发生的事:我打开冰箱,看到的是一堆互相之间没有关系的东西。半盒鸡蛋、两根胡萝卜、一袋不知道什么时候买的豆腐、三个西红柿。我大脑里没有一个函数能把它们映射成一道菜。

于是我放弃了。放弃的成本是三十块钱外卖,加上一周后那把芹菜。

我要解决的不是「菜谱」,是「决策」

想清楚这件事花了我挺长时间。

市面上做吃饭这件事的 App,大致分两类。

一类是纯菜谱。搜「番茄炒蛋」,给你一百个做法。问题是它不知道你家有没有番茄。你搜到的每一道菜,都可能是一次「哦,家里没有」。

另一类是纯记账。记录你今天吃了什么、花了多少、多少卡路里。它是事后的,它管的是已经发生的事。

两边都没人管中间那一段——冰箱里到底有什么,所以今晚应该吃什么

这才是真正的决策点。它发生在你站在冰箱前的那三十秒里。

所以「吃好饭」的整个结构是倒过来的:不是从菜谱出发找食材,而是从你现有的库存出发,反推出今晚能吃什么、还缺什么、周末要买什么。

冰箱是源头。菜谱是结果。买菜清单是差值。

可视化冰箱·临期过期一眼看清

27 天,我是按什么顺序做的

一个人做产品,顺序就是最大的战略。我把关键节点摘出来讲讲,每个都说一句「为什么是这时候」。

07-05 项目初始化 + 一键清空数据

第一天就做「一键清空所有数据」,看着很奇怪。

但我知道接下来一个月我要反复造假数据、反复推翻数据结构。没有清空按钮,我每天要花十分钟手动删。这是给自己修的路。

07-06 自定义菜谱 + 冰箱贴收集

内置了 300 道中式家常菜谱之后,我立刻做了自定义菜谱。因为我很清楚 300 道盖不住所有人的口味——南方人和北方人对「家常菜」的定义能差出一个省。

冰箱贴是当天顺手做的,一个收集玩法。当时只是觉得好玩,后来它变成了积分体系的出口之一。

07-07 引导流程与冰箱管理 / 海报分享

同一天做了两件事:新手引导,和海报分享。

引导是因为我把 demo 给朋友看,他打开之后第一句话是「所以我现在要干嘛」。空冰箱是最劝退的启动界面。

07-09 小票拍照识别

这是整个项目最关键的一次转折。

在这之前,录入食材全靠手动。我自己用了几天,发现我根本坚持不下来——买完菜回家还要在手机上一样一样点,谁受得了。

录入门槛不解决,后面所有功能都是空中楼阁。

07-10 数据导出导入 / 07-11 iCloud 备份

家里的冰箱不是一个人的。我老婆买的菜,我得能看到。

但我没有服务器(这个决定我会在第三篇专门讲),所以只能做导出同步码 + iCloud 备份这条路。这条路很笨,但它是我在「不建服务器」这个前提下能想到的最实在的方案。

07-17 内购服务与 Pro 付费墙

第 13 天开始想钱的事。

我见过太多独立开发者把商业化留到最后,然后发现整个数据结构里根本没有「用户买没买」这个概念,返工返到吐。

付费墙怎么划的,第二篇会详细拆。

07-23 Context 工程四阶段

记忆、摘要、分层组装。

这是我自己最满意的一块。因为我没有后端、模型是用户自带的,AI 到底聪不聪明,不取决于模型多大,取决于我给它喂什么。这块也留到第三篇。

07-29 AI 食谱生成接入真实 LLM

说个不太好听的事实:在第 25 天之前,「AI 食谱」跑的是我写的本地规则拼装。

不是骗人——那时候还没上架。但顺序上我确实排错了。我应该更早接真实模型,因为真接上之后我发现,规则时代打磨的很多东西(比如约束的表达方式)需要重写。

07-31 华为 AppGallery 支持 + 应用内更新检查

上架前两天。Android 那边渠道太碎,我得提前把更新检查做进去,不然以后没法推。

配图27 天时间线示意图,标出上述关键节点

它现在长什么样

六个模块,每个一句话。

个人档案中心。 家里几口人建几份档案,各自的忌口、过敏、基础代谢分开算,不混在一起。

可视化虚拟冰箱。 冷藏冷冻保鲜常温四个分区,拟物排布,能拖着整理,食材临期按红黄绿三色预警。

AI 智能食谱。 三重约束生成:库存优先 → 预算硬约束 → 忌口硬过滤,可以出单日、三日或一周的食谱。

自定义采购清单。 排完餐,缺口自动汇总成清单,实时算预算,超了会给平价替代方案。

记账复盘。 四个分类自动记账,日报周报月报,附带营养分析。

游戏化成长。 养一只叫青团团的小团子,好好吃饭打卡喂它「团气」,它会长大、会进化。它有几个状态的动画,会自己在屏幕上走来走去。

今晚吃什么 可视化冰箱 缺口买菜清单 买菜预算 数据只在本机 青团团养成

青团团这块我只说到这。它是整个 App 里我最不想过度包装的部分——一只小团子而已,你养着就知道了。

我没想清楚的地方

按规矩,说一个。

录入这件事,我到现在也没解决好。

小票拍照识别能覆盖超市场景。但很多人买菜是去菜市场的,散装、没有小票、老板不给条。食材拍照识别对光线和摆放也挑。

也就是说,一个「以库存为中心」的产品,它的库存来源本身还是有摩擦的。这是这个产品设计上的原罪,我现在只能靠降低单次录入成本来缓解,没有根治。

另外,43918 行代码不是什么勋章。一个人 27 天写出这个量,意味着里面有大量的复制粘贴和临时方案。我心里有一张挺长的债务清单。

接下来会写什么

这是第一篇。后面已经排好的:

我会把能公开的都公开,包括那些不好看的。build in public 如果只 build 好看的部分,那就是发广告。


吃好饭 iOS 已上架,App Store 搜「吃好饭 AI冰箱」。iPhone / iPad 都能用。

这个系列会一直写下去,欢迎在留言区骂我。

官网:https://ai-chen2050.github.io/chihaofan 有问题直接发我邮箱:blake.chen94@gmail.com