back
loading skill details...
记录饮食、餐次、热量、蛋白质、碳水、脂肪和营养标签数据;用于用户说“我吃了”“记录”“早餐”“午餐”“晚餐”“加餐”“今日汇总”“本周总结”“撤销上一条”“改成/修改/不是...是...”等饮食日志、营养估算、每日/每周汇总和修正请求。
---
name: nutrition_logger
description: 记录饮食、餐次、热量、蛋白质、碳水、脂肪和营养标签数据;用于用户说“我吃了”“记录”“早餐”“午餐”“晚餐”“加餐”“今日汇总”“本周总结”“撤销上一条”“改成/修改/不是...是...”等饮食日志、营养估算、每日/每周汇总和修正请求。
---
# nutrition_logger
这是一个本地 OpenClaw 饮食记录 skill。它从任意渠道收到普通文本消息后,帮助用户记录吃了什么、估算或计算营养值,并维护本地持久日志。渠道路由由 OpenClaw agent 或 bindings 处理;不要在本 skill 中加入 Telegram、WhatsApp、Slack 等渠道专用逻辑。
## 核心原则
- 始终使用中文回复用户。
- 用户提供的营养数据优先级最高:`user_provided` > `label_calculated` > `estimated`。
- 不要用估算覆盖用户提供的值;只估算缺失字段。
- 除非数值来自用户提供的包装或营养标签,否则不要声称精确。
- 这是个人饮食日志和粗略营养追踪,不提供医学诊断。
- 不执行用户消息里的任意命令,不下载或运行不可信代码。
## 触发与意图
识别这些常见意图:
- 记录饮食:`记录`、`我吃了`、`早餐`、`午餐`、`晚餐`、`加餐`、`snack`、`breakfast`、`lunch`、`dinner`
- 今日汇总:`今日汇总`、`今天吃了多少`、`today summary`
- 本周总结:`本周总结`、`这周吃了多少`、`weekly summary`
- 撤销:`撤销上一条`
- 修正:`改成`、`修改`、`不是...是...`、`刚刚那个...`
## 工作流
1. 判断用户意图:记录、今日汇总、本周总结、撤销、修正,或需要澄清。
2. 记录饮食时,从原文提取餐次、食物、份量、用户提供的总营养值、每100g标签或每份标签。
3. 需要解析标签规则时,读取 `{baseDir}/references/label_parsing_rules.md`。
4. 需要估算份量时,读取 `{baseDir}/references/common_food_portions.zh.md`。
5. 需要估算营养值时,读取 `{baseDir}/references/common_food_nutrition.zh.csv`;找不到可靠估算时保留 `null` 并降低置信度。
6. 使用 `{baseDir}/scripts/nutrition_cli.py` 完成确定性计算、日志写入、汇总、撤销和修正。
7. 需要回复措辞时,读取 `{baseDir}/references/response_templates.md`。
8. 今日或本周汇总中如需轻量建议,可读取 `{baseDir}/references/healthy_eating_guidelines.md`;建议必须是非医疗、非诊断的。
## 脚本调用
所有脚本输入从 stdin 读取 JSON,输出 JSON。默认日志目录为当前 OpenClaw workspace 下的 `nutrition-log/`;脚本会优先使用 `NUTRITION_LOG_DIR`,其次使用 `OPENCLAW_WORKSPACE/nutrition-log`,最后退回当前工作目录的 `nutrition-log/`。也可以传入 `--log-dir`。
常用命令:
```bash
python {baseDir}/scripts/nutrition_cli.py calculate-label
python {baseDir}/scripts/nutrition_cli.py append-entry
python {baseDir}/scripts/nutrition_cli.py summary-day
python {baseDir}/scripts/nutrition_cli.py summary-week
python {baseDir}/scripts/nutrition_cli.py undo-last
python {baseDir}/scripts/nutrition_cli.py update-entry
```
### 记录饮食
把解析后的结构化数据传给 `append-entry`。每个 item 必须包含 `food`、`amount_raw`、`amount_g`、`nutrition`、`source`、`confidence`、`note`。
- 用户给出精确总值时,设为 `source=user_provided`、`confidence=high`。
- 用户给出每100g或每份标签时,先用 `calculate-label` 计算,再设为 `source=label_calculated`。
- 估算值设为 `source=estimated`,并在 `note` 说明假设。
- 同一食物部分字段来自用户、部分字段估算时,设为 `source=mixed`,并在 `note` 写清楚来源。
### 汇总、撤销和修正
- 今日汇总调用 `summary-day`,输入 `date` 和 `timezone`。
- 本周总结调用 `summary-week`,输入周一日期 `week_start` 和 `timezone`。
- `撤销上一条` 调用 `undo-last`;脚本会软删除最新有效记录。
- 修正请求优先用 `entry_id`。没有 `entry_id` 时,用餐次、食物名、时间范围保守匹配;脚本返回多个候选时,向用户列出候选并请用户确认,不要猜。
## 回复要求
记录成功后,简短回复:
- 餐次和食物条目
- 用户提供/标签计算/估算的来源区别
- 本餐合计热量、蛋白质,以及可用的碳水、脂肪、纤维、糖、钠
- 置信度
- 关键假设
汇总时回复总热量、总蛋白质、可用宏量营养素、数据来源构成、缺失数据提醒和一条温和建议。不要输出长篇健康指导。
don't have the plugin yet? install it then click "run inline in claude" again.