Lulu's Fridge(食光管家)是一套端到端的家庭餐厨 Physical AI 系统。固定在冰箱内的视觉模块与噜噜 Master 持续维护可信库存;iPhone App 把库存、临期、家庭偏好与菜谱连接起来;Hermes 负责自然交互;确定性业务核心负责库存差分、过敏原过滤、缺料计算、伴做状态和高影响操作确认。
🌐 官方网站: lulufridge.me — 浏览 Lulu's Fridge 的产品理念、噜噜 Master,以及从冰箱感知到家庭烹饪的完整体验。
项目面向 香港 Physical AI Hackathon 2026 · Sense & Reason ·「贾维斯走进现实」,当前仓库包含可运行的板端服务、iOS 正式客户端、品牌官网、API 契约、设计资产、测试与物理部署脚本。
一句话闭环: 冰箱关门后自动看见变化,App 告诉你现在能做什么,噜噜陪你完成烹饪,并把真正缺少的食材整理成可确认的购物清单。
flowchart LR
A["冰箱开关门 / 手动扫描"] --> B["相机连拍 + VLM 观测"]
B --> C["库存协调器:新增 / 取出 / 数量 / 效期"]
C --> D["可信库存与家庭档案"]
D --> E["菜谱排序与过敏原硬过滤"]
E --> F["语音伴做、计时与状态提示"]
F --> G["完成记录、成就与偏好学习"]
E --> H["净缺料清单"]
H --> I["用户确认后跳转官方零售渠道"]
G --> D
| 模块 | 能力 |
|---|---|
| 感知与库存 | 板载相机、VLM 结构化识别、置信度与证据、库存差分、待确认变化、临期提醒、持久化库存 |
| iOS 冰箱 | 扫描、分区浏览、批次详情、手动 CRUD、36 个常用产品、10 个细分类、别名搜索与批量添加 |
| 菜谱决策 | 可直接做 / 补少量食材、份量缩放、临期优先、过敏与忌口硬过滤、导入食谱统一参与排序 |
| 噜噜伴做 | “下一步 / 重复 / 计时”确定性指令、上下文问答、暂停恢复、绝对计时、本地通知、语音播报 |
| 记忆与个性化 | 家庭档案、烹饪历史、替代记录、口味偏好、多样性排序、版本化成就、XP 与连续日 |
| 购物清单 | 按份量与真实库存计算净缺料;逐项确认;美团、京东、HKTVmall 等官方搜索入口;零售报价沙箱 |
| 设备与连接 | 公开健康探测、短期凭证、Keychain 恢复、事件流、重试退避、ADB 本地链路与公网备用链路 |
| 品牌官网 | Vue 3 + Vite 双入口站点、CSS 3D 冰箱、噜噜动画、产品闭环、Master 详情与响应式页面 |
| 交付工程 | OpenAPI 契约、XcodeGen 工程、TestFlight 检查脚本、riscv64 source-only 部署与自动回滚 |
flowchart TB
subgraph IOS["Lulu's Fridge · iOS 17+"]
UI["SwiftUI 功能页面"]
MODEL["AppModel / Router"]
REPO["Typed Repositories"]
STORE["Keychain + Local Stores"]
UI --> MODEL --> REPO
MODEL --> STORE
end
subgraph MASTER["噜噜 Master · riscv64 / Linux"]
API["/v1 Board API + Event Stream"]
CORE["Inventory / Recipe / Cooking / Profile / Achievement"]
ADAPTER["ASR · TTS · VLM · LLM Adapters"]
CAMERA["Camera / Door / Button"]
API --> CORE --> ADAPTER
CAMERA --> ADAPTER
end
subgraph WEB["品牌官网"]
VUE["Vue 3 + Vite"]
end
REPO <-->|"HTTPS / Bearer / revision / idempotency"| API
ADAPTER --> EDGE["端侧模型"]
ADAPTER -. "可选受控代理" .-> CLOUD["兼容模型服务"]
- 确定性核心,模型负责感知与表达。 库存变化、过敏过滤、份量、缺料与确认门控由可测试规则处理。
- 板端是家庭数据事实源。 iOS View 不伪造业务成功;库存、食谱、伴做、档案和成就经 Repository 与 Board API 同步。
- 事件驱动而非持续上传视频。 关门或按钮触发短时观测;图像尽量在端侧处理,业务层保存结构化事实。
- 高影响操作必须确认。 对外分享、库存争议与零售动作遵循“复述 → 确认 → 执行”。
- 官方渠道完成结算。 系统负责净缺料、匹配和确认,不保存商超账号或支付凭证。
- 连接可恢复。 短期凭证保存在 Keychain,状态使用 revision、幂等键、事件序列和退避重试保持一致。
HKPhysical26/
├── jarvis-kitchen/ # 板端 Agent、业务核心、/v1 API、适配器、语音与部署脚本
├── ShiguangKitchen-iOS/ # iOS 17+ SwiftUI App、测试、设计系统、品牌与发布配置
├── landing-page/ # Vue 3 + Vite 官网与 Master 详情页
├── 食光管家-iOS交接/ # OpenAPI / BLE / REST 契约与技术交接
├── 家庭餐厨管家-项目计划书/ # LaTeX 计划书及 PDF
├── 食材识别图片库/ # VLM 食材识别评测图片与审核记录
├── 0803识图/ # 10 类基础蔬菜、250 张固定拆分与重建脚本
├── Transparent/ # 三组透明底家常菜图标素材
├── research/ # 模型、语音与 Physical AI 调研
├── docs/images/ # README 使用的脱敏精选截图
└── *.md # 参赛方案、深度方案、平台跳转与赛前规划
核心业务刻意以 Python 标准库为主,便于在 riscv64 设备上运行。
git clone https://github.com/qybaihe/HKPhysical26.git
cd HKPhysical26/jarvis-kitchen
python3 -m unittest discover -s tests -v
python3 tests/test_pipeline.py
python3 scripts/smoke_http.py
python3 main.py --script demo本地模型服务或云端兼容接口通过环境变量注入:
cp .env.example .env
# 仅编辑本机 .env;该文件不会进入 Git
JARVIS_LLM=cloud JARVIS_VLM=cloud python3 main.py --script demo要求:macOS、Xcode、iOS 17+ Simulator;如需重建工程,先安装 XcodeGen。
cd ShiguangKitchen-iOS
xcodegen generate --spec project.yml
open ShiguangKitchen.xcodeproj命令行构建示例:
xcodebuild test \
-project ShiguangKitchen.xcodeproj \
-scheme ShiguangKitchen \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro'默认运行正式 Composition Root;Mock 与 Preview 必须显式选择,详见 ShiguangKitchen-iOS/README.md。
cd landing-page
pnpm install
pnpm dev
# 生产验证
pnpm build
pnpm preview/:品牌 Landing Page/master/:噜噜 Master 产品详情
手动添加页提供 36 个可检索产品,但目录本身只是选择元数据;用户确认并成功写入 Board API 后才成为真实库存。
| 分类 | 示例 |
|---|---|
| 叶菜 | 菠菜、生菜、小白菜、大白菜 |
| 根茎 | 土豆、胡萝卜、洋葱、红薯、莲藕 |
| 瓜果蔬菜 | 番茄、西兰花、黄瓜、红椒、青椒 |
| 菌菇 | 香菇、金针菇 |
| 肉蛋豆 | 鸡蛋、豆腐、鸡胸肉、牛腩、猪里脊 |
| 水产 | 虾仁、三文鱼 |
| 乳品 | 牛奶、酸奶、芝士 |
| 水果 | 苹果、香蕉、橙子、柠檬、葡萄 |
| 主食干货 | 大米、面条、面包 |
| 葱姜调味 | 大蒜、生姜 |
目录支持中英文 ID、常用别名和分类搜索,例如“西红柿”“娃娃菜”“鲑鱼”“番薯”。
GET /v1/health
GET /v1/device
GET /v1/snapshot
GET /v1/events
POST /v1/scans
GET /v1/inventory
POST /v1/inventory/items
PUT /v1/inventory/items/{id}
DELETE /v1/inventory/items/{id}
GET /v1/recipes
POST /v1/cooking-sessions
POST /v1/cooking-sessions/{id}/commands
POST /v1/cooking-sessions/{id}/assistant/messages
GET /v1/cooking-history
GET /v1/household/profile
GET /v1/achievements
POST /v1/recipe-import/generate
POST /v1/recipe-import/analyze-images
完整契约见 食光管家-iOS交接/contracts/board-api.openapi.yaml。
仓库默认采用“本地可运行、远端不含凭证”的配置方式:
- 本机
jarvis-kitchen/.env保持原有配置并被 Git 忽略;远端只提交空值模板.env.example。 - iOS 客户端不包含模型供应商密钥;模型调用通过板端受控代理完成。
- Debug 临时 token 从进程环境注入,成功鉴权后进入 Keychain;Release 不读取环境 token。
.pem、.key、构建归档、测试结果、模型缓存、相机原始输出和本地运行数据均不进入版本库。- 提交前使用 Gitleaks 扫描 Git 历史与待提交内容。
如需增加新配置,请只在模板中提交变量名与说明,不提交真实值。
# Python 单元与业务闭环
cd jarvis-kitchen
python3 -m unittest discover -s tests -v
python3 tests/test_pipeline.py
python3 scripts/smoke_http.py
# Landing Page 生产构建
cd ../landing-page
pnpm build
# iOS
cd ../ShiguangKitchen-iOS
xcodegen generate --spec project.yml
xcodebuild test -project ShiguangKitchen.xcodeproj -scheme ShiguangKitchen \
-destination 'platform=iOS Simulator,name=iPhone 16 Pro'仓库同时包含物理 riscv64 部署、健康检查、回滚、公网隧道、Keychain 重启恢复和 TestFlight 产物检查脚本。运行产生的证据保留在本地 TestResults/,不会推送到远端。
本次推送前的本地回归结果:Python unittest 46/46、业务闭环 9/9、HTTP smoke 61/61;iOS 单元/契约 61 executed、60 passed、1 个显式外部集成 skip、0 failed;Landing Page 生产构建通过。
- iOS 开发、连接、测试与 TestFlight
- 板端服务与适配器说明
- 平台 Deep Link 与官方搜索跳转
- OpenAPI 契约
- 参赛方案
- 项目计划书 PDF
- 抖音视频导入食谱 iOS 深度方案
- VLM 食材识别素材库
- 10 类基础蔬菜分类数据集
- 相机 / VLM → 库存差分 → 持久化事实
- iOS 库存、菜谱、伴做、清单、设备与个人档案
- 36 产品 / 10 分类手动库存目录
- 食谱导入、上下文助手、历史、成就与家庭硬约束
-
/v1API、鉴权、事件、幂等与 OpenAPI 契约 - riscv64 source-only 部署、测试与回滚
- Vue 品牌官网与 Master 详情页
- 持续扩充真实冰箱场景 VLM 基准
- 完成更多端侧模型性能与功耗测量
- App Store / Skill Store 正式发布流程




