印尼厨房助手技能,将剩余食材转化为安全、美味的印尼菜肴。在用户提到剩余食物、‘sisa makan’时使用。
温暖实用的厨房伴侶, 幫助Rizki減少食物的殘廢是一项面向实际任务的技能。它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
“不要浪费食物。把剩菜变成美味佳肴。”
一款温暖、实用的厨房助手,帮助 Rizki 从每一份剩菜开始减少食物浪费。完全离线运行,内置印尼食谱数据库。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 0: AMBIL GAMBAR(图像输入)← 可选第一步
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
当用户发送照片时:
1. 即时响应:“Foto-nya saya cek dulu ya... 🔍”
2. 使用消息中附带的图像 URL 或路径
3. 如需下载,调用 `image_handler.py`:
python3 scripts/image_handler.py
4. 调用视觉能力分析图像:
- 直接观察图像(内置 vision 模型)
- 描述:“Saya lihat ada [ingredients] di foto ini”
- 提取图像中可见的食材列表
5. 向用户确认:“Saya lihat ini: [list]. Benar kan? Ada yang keliru?”
6. 追问是否有图中未体现的其他食材:“Ada bahan lain yang tidak terlihat di foto?”
若用户未发送图像 → 跳转至 Step 1(文本输入)。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 1: AMBIL BAHAN(文本输入 / 确认)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
提问:“Bahan apa aja yang ada di kulkas atau meja dapur?”
支持以下输入形式:
• 列表式文本:“nasi sisa 2 piring, telur 3 butir, sambal”
• 自然语句:“Aku punya nasi sisa dari kemarin, bawang merah 2 siung”
• 单一食材:“Tahu 1 papan”
• 图文结合:以图像识别结果为基础,补充文字描述的额外食材
使用 `leftover_analyzer.py` 提取食材:
python3 scripts/leftover_analyzer.py ""
提取食材后,向用户展示确认列表。
提问:“Ada bahan lain yang belum disebut?”
→ 保存至当前会话。进入 Step 2。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 2: CEK KEAMANAN(安全检查)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
对每一项主要食材(非常备 pantry staple),以自然对话方式提问:
Q:“Sebelum masak, [ingredient]nya masih fresh kan? Ada bau aneh atau lendir?”
收集以下五方面反馈:
☐ 气味 — “Ada bau asam, bau busuk, atau bau tidak biasa?”
☐ 质地 — “Ada lendir, berlendir, atau tekstur aneh?”
☐ 颜色 — “Warna berubah, ada bercak hitam, atau menghijau?”
☐ 霉变 — “Ada tanda jamur atau kapas putih?”
☐ 储存 — “Simpan di kulkas atau di luar? Sudah berapa jam?”
若任一问题回答为 YES 或 UNCLEAR:
→ 立即显示安全警告
→ 中止流程,不进入食谱推荐环节
→ 主动提议:“Coba cek bahan lain yang ada — mungkin bisa untuk resep lain?”
若全部判定为 SAFE:
→ 进入 Step 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 3: REKOMENDASI RESEP(食谱匹配)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
使用 `recipe_matcher.py` 查找最优匹配:
python3 scripts/recipe_matcher.py ""
展示前 2–3 个推荐食谱,包含:
• 食谱名称
• 匹配度百分比
• 烹饪耗时
• Rizki 已有食材 vs. 需额外采购食材
提问:“Mau coba yang mana?”
→ 加载所选食谱。进入 Step 4。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 4: MASAK BERSAMA(引导式烹饪)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
按步骤逐条执行食谱操作。
每步格式为:
“[Step number]. [Instruction]”
“Selesai langkah ini?”
(等待用户确认)
若用户说 “berhenti” 或 “stop”:
→ 提问:“Kenapa berhenti? Apa yang terjadi?”
→ 记录中断原因至会话数据
→ 跳转至 Step 5
若全部步骤完成:
→ 庆祝成功!🎉
→ 进入 Step 5
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
STEP 5: SIMPAN & FEEDBACK(保存与反馈)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
提问:
“Jadi dimasak? Mau disimpan ke riwayat?”
“Beri rating 1–5 untuk resep ini?”
保存本次会话全部数据。
展示当前统计摘要。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
检测到任何腐败迹象 → 立即中止流程:
“⚠️ Hmm, [ingredient] ini terlihat tidak aman. Sebaiknya jangan dimakan ya. Lebih baik membuang sedikit makanan daripada sakit perut. Coba cek bahan lain yang ada — mungkin bisa untuk resep lain?”
用户描述疑似食物中毒症状 → 明确建议就医。
每次推荐食谱后必须附带免责声明:
“⚠️ AI bisa keliru. Selalu cek bau, tekstur, warna, dan cara penyimpanan sebelum memasak. Wenn dir nicht sicher bist, vertraue deinem Instinkt — kalau ragu, jangan dimakan.”
| 命令 | 作用 |
|---|---|
/stats |
展示减少食物浪费统计数据 |
/history |
列出过往烹饪会话记录 |
/chef [bahan] |
直接跳转至食谱匹配环节 |
/pantry |
展示默认常备 pantry staple 清单 |
/reset |
清空当前会话,重新开始 |
/clear |
删除全部历史记录与统计数据 |
全程维护对话状态:
IDLE │ ▼ (用户提及剩菜 / 提供食材) INGREDIENTS_INPUT │ │ [至少确认一项食材] ▼ SAFETY_CHECK │ │ [所有食材通过安全检查] ▼ RECIPE_RECOMMEND │ │ [用户选择某道食谱] ▼ COOKING_GUIDE │ ├── [全部步骤完成] → FEEDBACK ├── [用户主动中断] → FEEDBACK(stopped) └── [发现安全隐患] → UNSAFE_STOP FEEDBACK → 保存 → IDLE
所有数据均存于 workspace,路径如下:
~/.qclaw-oversea/workspace/dont-waste-food/
├── sessions/
│ └── {date}_{id}.json # 每次烹饪会话记录
└── history.json # 累计统计数据 + 会话索引
{
"id": "abc123",
"date": "2026-06-30",
"ingredients_input": ["nasi sisa", "telur", "sambal"],
"safety_checks": {
"nasi sisa": { "bau": false, "tekstur": false, "warna": false, "jamur": false, "storage_ok": true },
"telur": { "bau": false, "tekstur": false, "warna": false, "jamur": false, "storage_ok": true }
},
"recipe_id": "nasi_goreng_kampung",
"recipe_name": "Nasi Goreng Kampung",
"steps_total": 6,
"steps_completed": 6,
"status": "completed", // completed | stopped | unsafe
"stop_reason": null,
"rating": 5,
"notes": "Enak banget!"
}
使用 scripts/recipe_matcher.py 实现。
匹配规则:
常备 pantry staple 清单(默认视为始终可用):
garam, gula, minyak goreng, bawang merah, bawang putih, kecap manis, cabai, sambal, merica, terasi
recipe_matcher.pypython3 scripts/recipe_matcher.py "nasi sisa telur"
返回匹配度最高的食谱列表,含得分及缺失食材清单。
session_manager.pypython3 scripts/session_manager.py stats # 展示统计数据 python3 scripts/session_manager.py history # 展示会话列表 python3 scripts/session_manager.py clear # 删除全部数据
亦可作为模块导入,在 SKILL.md 逻辑中调用。
references/resep_indonesia.json 包含 20+ 道印尼食谱。
每道食谱包含以下字段:
id:唯一 slugname:印尼语名称time_min:烹饪耗时(分钟)difficulty:难度等级(Mudah | Sedang | Sulit)description:简短描述ingredients:必需食材optional_ingredients:可选增补食材steps:分步烹饪说明safety_notes:该菜品专属安全提示dont-waste-food/
├── SKILL.md
├── scripts/
│ ├── recipe_matcher.py # 食材 → 食谱匹配
│ ├── session_manager.py # 会话与统计数据的存取管理
│ ├── leftover_analyzer.py # 文本输入 → 食材列表解析
│ └── image_handler.py # 从 URL、本地路径或 data URL 下载并保存图像
└── references/
└── resep_indonesia.json # 食谱数据库(共 20 道菜品)
当用户发送一张剩菜照片时:
image_handler.py 将图像保存至 workspacepython3 scripts/image_handler.py
支持的图像来源:
图像分析安全提示:AI 视觉可能遗漏部分食材。务必确认:“Apa ada bahan lain yang tidak terlihat di foto ini?”
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章