name: clawcoach-food
description: >
ClawCoach:食物照片分析与餐食记录功能
只需发送一张餐食的照片,即可通过Claude Vision系统立即获得餐食中各种营养成分(如碳水化合物、蛋白质、脂肪等)的详细分析结果。
emoji: "\U0001F4F8"
user-invocable: true
homepage: https://github.com/clawcoach/clawcoach
metadata:
openclaw: {"requires": {"env": ["ANTHROPIC_API_KEY"]}}
ClawCoach 食物管理功能 — 食物照片分析与饮食记录
该功能通过 Claude Vision 技术进行食物照片分析,支持基于文本的饮食记录,并提供确认流程。
何时激活该功能
- 用户发送照片时(默认假设照片中的内容为食物,除非上下文另有说明);
- 用户输入食物描述时(例如:“我早餐吃了2个鸡蛋和吐司”);
- 用户说出“记录这顿饭”或“我吃了[某食物]”时;
- 用户想要编辑或删除之前的饮食记录时。
数据存储
所有饮食记录存储在 ~/.clawcoach/food-log.json 文件中,文件结构如下:
{
"meals": [
{
"id": "2026-02-22-lunch-001",
"date": "2026-02-22",
"type": "lunch",
"status": "confirmed",
"items": [
{
"name": "grilled chicken breast",
"portion": "6 oz",
"calories": 280,
"protein_g": 52,
"fat_g": 6,
"carbs_g": 0
}
],
"total_calories": 520,
"total_protein_g": 62,
"total_fat_g": 14,
"total_carbs_g": 48,
"source": "photo",
"timestamp": "2026-02-22T12:35:00Z"
}
]
}
食物照片分析流程
当用户发送照片时:
分析照片:利用视觉技术识别照片中的所有食物成分。对于每种食物成分,需估算以下信息:
- 名称(具体明确,例如“烤鸡胸肉”而非“鸡肉”);
- 份量(使用常见单位,如盎司、杯、片等);
- 热量及营养成分(蛋白质、脂肪、碳水化合物的克数)。
可参考已知的营养数据。如果对份量不确定,应保守估计。
以用户设定的语音方式呈现分析结果:
- 列出每种食物及其份量和营养成分;
- 显示整餐的总热量;
- 显示当天的累计摄入量(已摄入/目标摄入量/剩余量);
- 提示用户:“确认吗?(确认/编辑/重新拍摄)”。
处理用户的反馈:
- 如果用户选择“确认”,则将饮食记录写入
~/.clawcoach/food-log.json文件,并标记为“已确认”状态; - 如果用户提供修正信息(例如“米饭其实是糙米”或“份量大概是8盎司”),则重新计算并更新显示结果;
- 如果用户选择“重新拍摄”,则要求用户重新发送照片或提供更详细的文字描述。
- 如果用户选择“确认”,则将饮食记录写入
确认后,系统会始终显示更新后的每日摄入总量。
基于文本的饮食记录
当用户通过文字描述食物时:
- 从描述中解析食物成分并估算其份量;
- 根据营养数据计算每种成分的热量及营养成分;
- 遵循与照片分析相同的确认流程。
饮食类型自动分类
系统会根据时间自动分类饮食:
- 10:00 之前:早餐
- 10:00 - 14:00:午餐
- 14:00 - 17:00:零食
- 17:00 之后:晚餐
用户也可以手动指定饮食类型,例如:“将这顿饭记录为零食”。
编辑与删除记录
- 用户可以删除某顿饭的记录(例如:“删除我的午餐记录”);
- 如果用户认为摄入的热量有误,可以更新相应的记录;
- 用户可以查询当天的所有已确认饮食记录。
日摄入总量计算
每次饮食记录确认后,系统会计算并显示以下数据:
- 从
~/.clawcoach/profile.json中读取用户的营养目标; - 将当天所有已确认的饮食记录的热量、蛋白质、脂肪、碳水化合物总量相加;
- 显示:
- 已摄入量:X 卡路里 | X 克蛋白质 | X 克脂肪 | X 克碳水化合物;
- 目标摄入量:X 卡路里 | X 克蛋白质 | X 克脂肪 | X 克碳水化合物;
- 剩余摄入量:X 卡路里 | X 克蛋白质 | X 克脂肪 | X 克碳水化合物。
特殊情况处理
- 照片模糊不清:系统会提示用户“照片太模糊,无法识别食物,请重新拍摄或提供更清晰的描述”;
- 非食物图片:系统会提示用户“这不是食物,请发送正确的食物照片或输入食物名称”;
- 未知食物:系统会请求用户确认具体食物种类;
- 食物成分难以识别:系统会询问用户具体成分(例如“我看到鸡肉和其他东西,这是米饭还是意大利面?”);
- 无法识别份量:系统会使用标准份量进行估算,并提示用户确认实际份量。
常见食物的营养成分参考(每100克)
以下数据可作为参考,根据实际摄入量进行调整:
| 食物 | 热量(卡路里) | 蛋白质(克) | 脂肪(克) | 碳水化合物(克) |
|---|---|---|---|---|
| 烤鸡胸肉 | 165 | 31 | 3.6 | 0 |
| 烤三文鱼 | 208 | 20 | 13 | 0 |
| 煮白米饭 | 130 | 2.7 | 0.3 | 28 |
| 煮糙米饭 | 123 | 2.7 | 1.0 | 26 |
| 煮意大利面 | 131 | 5 | 1.1 | 25 |
| 蒸西兰花 | 35 | 2.4 | 0.4 | 7 |
| 大鸡蛋(约50克) | 155 | 13 | 11 | 1.1 |
| 鳄梨 | 160 | 2 | 15 | 9 |
| 烤红薯 | 90 | 2 | 0.1 | 21 |
| 希腊酸奶(原味) | 59 | 10 | 0.7 | 3.6 |
| 香蕉(约120克) | 89 | 1.1 | 0.3 | 23 |
| 煮燕麦 | 68 | 2.4 | 1.4 | 12 |
| 白面包(每片约30克) | 265 | 9 | 3.2 | 49 |
| 切达奶酪 | 403 | 25 | 33 | 1.3 |
| 杏仁 | 579 | 21 | 50 | 22 |
| 橄榄油(1汤匙约14毫升) | 884 | 0 | 100 | 0 |
| 比萨(意大利辣香肠) | 298 | 12 | 14 | 30 |
- 汉堡(含面包) | 约550克 | 30 | 30 | 40 |
- 牛排(西冷牛排) | 206 | 26 | 11 | 0 |
- 豆腐(硬豆腐) | 144 | 17 | 9 | 3 |
- 煮扁豆 | 116 | 9 | 0.4 | 20 |
- 全脂牛奶(250毫升) | 61 | 3.2 | 3.3 | 4.8 |
- 蛋白质奶昔(1勺) | 约120 | 25 | 1.5 | 3 |
对于列表中未包含的食物,系统会依据用户的营养知识进行估算。
注意事项:
- 所有营养成分数据均四舍五入到整数;
- 确认饮食记录后,系统会立即显示当天的累计摄入总量;
- 所有语音提示均来自
clawcoach-core,请确保所有响应中使用统一的语音风格; - 未经用户确认,系统不会记录任何饮食记录;
- 系统会为每顿饭生成唯一的记录ID,格式为
{日期}-{饮食类型}-{顺序号}。