介绍
# Diet Tracker
该技能通过自动化的膳食提醒,帮助追踪每日饮食并实现减重目标。
## 触发条件
用户可能会说: - “我午餐/晚餐吃了[食物]” - “我剩余的卡路里预算是多少?” - “我今天摄入了多少卡路里?” - “记录我的餐食” - “检查我的饮食进度”
或者由用于膳食提醒的 cron 任务自动触发。
## Cron 任务集成
该技能与自动化的 cron 任务配合工作:
- **午餐提醒**:~12:30(检查午餐是否已记录,若未记录则发送提醒) - **晚餐提醒**:~18:00(检查晚餐是否已记录,若未记录则发送提醒)
Cron 任务系统事件:`饮食记录检查:午餐` 或 `饮食记录检查:晚餐`
## 用户资料(必需)
该技能从 `USER.md` 读取: - 每日卡路里目标(默认:1650 kcal) - 宏量营养素目标(蛋白质/碳水化合物/脂肪) - 身高、体重、年龄、性别、活动水平(用于计算 TDEE)
**活动水平**: - 久坐(很少或不运动) - 轻度活动(每周 1-3 天轻度运动) - 中度活动(每周 3-5 天中度运动) - 高度活动(每周 6-7 天高强度运动) - 极高度活动(非常高强度运动 + 体力工作)
## 工作流程
### 当用户记录餐食时:
1. **从用户描述中识别食物项目** 2. **通过 `scripts/get_food_nutrition.py` 获取营养数据** - 在网上搜索卡路里/蛋白质/碳水化合物/脂肪信息 - 如有需要,回退使用 `references/food_database.json` 3. **通过 `scripts/update_memory.py` 更新每日记录** - 保存到 `memory/YYYY-MM-DD.md` - 计算单餐总量 - 更新每日累计总量 4. **向用户报告**: - 单餐营养细分 - 今日已摄入 / 剩余卡路里 - 基于盈亏预测的体重变化 - 宏量营养素进度(如果设定了目标)
### 当用户询问状态时:
1. 读取当天的 memory 文件 2. 计算已摄入总量 3. 报告: - 剩余卡路里预算 - 剩余蛋白质/碳水化合物/脂肪(如果设定了目标) - 体重变化预测
## 脚本
- `scripts/get_food_nutrition.py`:获取营养信息 + 计算 TDEE - `scripts/update_memory.py`:使用餐食数据更新每日 memory 文件 - `references/food_database.json`:常见食物的备用数据库
## 错误处理
### 常见问题
**问题**:“无法读取 USER.md”或用户数据缺失 - **原因**:未配置用户资料 - **解决方案**:询问用户的身高、体重、年龄、性别、活动水平和卡路里目标
**问题**:不常见食物的营养查询失败 - **原因**:在线数据库中未找到该食物 - **解决方案**:询问用户大概的卡路里计数,或使用数据库中的相似食物
**问题**:一餐中包含多种食物项目 - **原因**:用户说“我吃了披萨、沙拉和可乐” - **解决方案**:分别处理每个项目,汇总营养数值
## 数据格式
### 每日 Memory 条目
```markdown ## Diet Log
**Breakfast**: [food] - [X] kcal (P: [X]g, C: [X]g, F: [X]g) **Lunch**: [food] - [X] kcal (P: [X]g, C: [X]g, F: [X]g) **Dinner**: [food] - [X] kcal (P: [X]g, C: [X]g, F: [X]g)
**Daily Total**: [X] / [target] kcal **Remaining**: [X] kcal **Predicted weight change**: [-/+ X] kg ```
## 渐进式披露
- **级别 1(frontmatter)**:技能激活标准 - **级别 2(SKILL.md)**:完整工作流程说明(本文件) - **级别 3(references/)**:食物数据库和营养指南