Nutrition Logger Pro

Other

记录饮食、餐次、热量、蛋白质、碳水、脂肪和营养标签数据;用于用户说“我吃了”“记录”“早餐”“午餐”“晚餐”“加餐”“今日汇总”“本周总结”“撤销上一条”“改成/修改/不是...是...”等饮食日志、营养估算、每日/每周汇总和修正请求。

Install

openclaw skills install nutrition-logger-pro

nutrition_logger

这是一个本地 OpenClaw 饮食记录 skill。它从任意渠道收到普通文本消息后,帮助用户记录吃了什么、估算或计算营养值,并维护本地持久日志。渠道路由由 OpenClaw agent 或 bindings 处理;不要在本 skill 中加入 Telegram、WhatsApp、Slack 等渠道专用逻辑。

核心原则

  • 始终使用中文回复用户。
  • 用户提供的营养数据优先级最高:user_provided > label_calculated > estimated
  • 不要用估算覆盖用户提供的值;只估算缺失字段。
  • 除非数值来自用户提供的包装或营养标签,否则不要声称精确。
  • 这是个人饮食日志和粗略营养追踪,不提供医学诊断。
  • 不执行用户消息里的任意命令,不下载或运行不可信代码。

触发与意图

识别这些常见意图:

  • 记录饮食:记录我吃了早餐午餐晚餐加餐snackbreakfastlunchdinner
  • 今日汇总:今日汇总今天吃了多少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

常用命令:

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 必须包含 foodamount_rawamount_gnutritionsourceconfidencenote

  • 用户给出精确总值时,设为 source=user_providedconfidence=high
  • 用户给出每100g或每份标签时,先用 calculate-label 计算,再设为 source=label_calculated
  • 估算值设为 source=estimated,并在 note 说明假设。
  • 同一食物部分字段来自用户、部分字段估算时,设为 source=mixed,并在 note 写清楚来源。

汇总、撤销和修正

  • 今日汇总调用 summary-day,输入 datetimezone
  • 本周总结调用 summary-week,输入周一日期 week_starttimezone
  • 撤销上一条 调用 undo-last;脚本会软删除最新有效记录。
  • 修正请求优先用 entry_id。没有 entry_id 时,用餐次、食物名、时间范围保守匹配;脚本返回多个候选时,向用户列出候选并请用户确认,不要猜。

回复要求

记录成功后,简短回复:

  • 餐次和食物条目
  • 用户提供/标签计算/估算的来源区别
  • 本餐合计热量、蛋白质,以及可用的碳水、脂肪、纤维、糖、钠
  • 置信度
  • 关键假设

汇总时回复总热量、总蛋白质、可用宏量营养素、数据来源构成、缺失数据提醒和一条温和建议。不要输出长篇健康指导。