---
name: nutrition-analyzer
description: 分析营养数据、识别营养模式、评估营养状况，并提供个性化营养建议。支持与运动、睡眠、慢性病数据的关联分析。
allowed-tools: Read, Grep, Glob, Write
risk: unknown
source: community
---

# 营养分析器技能

分析饮食和营养数据，识别营养模式，评估营养状况，并提供个性化营养改善建议。

## 功能

### 1. 营养趋势分析

分析营养素摄入的变化趋势，识别改善或需要关注的方面。

**分析维度**：
- 宏量营养素趋势（蛋白质、碳水、脂肪、纤维、卡路里）
- 微量营养素趋势（维生素、矿物质）
- 热量来源分布变化
- 餐食模式（饮食时间、频率）
- 食物类别偏好

**输出**：
- 趋势方向（改善/稳定/下降）
- 变化幅度和百分比
- 趋势显著性
- 改进建议

### 2. 营养素摄入评估

评估营养素摄入是否达到推荐标准（RDA/AI）。

**评估内容**：
- **宏量营养素评估**：
  - 蛋白质摄入量和质量
  - 碳水化合物类型分布（精制 vs 复杂碳水）
  - 脂肪类型分布（饱和/单不饱和/多不饱和/反式脂肪）
  - 膳食纤维摄入量

- **维生素评估**：
  - 维生素A、C、D、E、K
  - 维生素B族（B1、B2、B3、B6、B12、叶酸、泛酸、生物素）
  - 与RDA对比
  - 缺乏风险评估

- **矿物质评估**：
  - 常量矿物质：钙、磷、镁、钠、钾、氯、硫
  - 微量矿物质：铁、锌、铜、锰、碘、硒、铬、钼
  - 与RDA对比
  - 缺乏风险评估

- **特殊营养素评估**：
  - Omega-3脂肪酸（EPA、DHA、ALA）
  - 胆碱
  - 辅酶Q10
  - 植物化学物（类黄酮、类胡萝卜素等）

**输出**：
- 每种营养素的达成率
- 缺乏/不足/充足/过量分级
- 缺乏风险识别
- 优先改善建议

### 3. 营养状况评估

综合评估用户的营养状况。

**评估内容**：
- **整体营养质量评分**：
  - 营养密度评分
  - 食物多样性评分
  - 均衡饮食评分

- **营养模式识别**：
  - 饮食模式类型（地中海式、DASH、素食等）
  - 饮食时间模式（进食频率、进食窗口）
  - 零食和加餐模式

- **营养风险识别**：
  - 营养缺乏风险（如维生素D缺乏、铁缺乏）
  - 营养过量风险（如维生素A过量、钠过量）
  - 不健康饮食习惯（高糖、高脂、高钠）

**输出**：
- 营养状况等级（优秀/良好/一般/较差）
- 主要营养问题识别
- 风险因素列表
- 改善优先级

### 4. 相关性分析

分析营养与其他健康指标的相关性。

**支持的相关性分析**：
- **营养 ↔ 体重**：
  - 卡路里摄入与体重变化的关系
  - 宏量营养素比例与体重管理
  - 进食时间与代谢关系

- **营养 ↔ 运动**：
  - 营养摄入对运动表现的影响
  - 运动日vs休息日的营养需求
  - 蛋白质摄入与肌肉恢复

- **营养 ↔ 睡眠**：
  - 咖啡因摄入与睡眠质量
  - 晚餐时间与入睡时间
  - 特定营养素（如镁、色氨酸）与睡眠

- **营养 ↔ 血压**：
  - 钠摄入与血压
  - 钾/钠比值与血压
  - DASH饮食依从性与血压控制

- **营养 ↔ 血糖**：
  - 碳水化合物类型与血糖波动
  - 膳食纤维与血糖控制
  - 进食时间与血糖曲线

**输出**：
- 相关系数（-1到1）
- 相关性强度（弱/中/强）
- 统计显著性
- 因果关系推断
- 实践建议

### 5. 个性化建议生成

基于用户数据生成个性化营养改善建议。

**建议类型**：
- **营养素调整建议**：
  - 增加缺乏的营养素
  - 减少过量的营养素
  - 优化营养素比例

- **食物选择建议**：
  - 推荐特定食物类别
  - 食物替换建议（更健康的选择）
  - 食物搭配建议（促进吸收）

- **饮食习惯建议**：
  - 进食时间调整
  - 餐食频率调整
  - 烹饪方式建议

- **补充剂建议**（仅供参考）：
  - 基于缺乏风险的补充剂建议
  - 补充剂剂量和时机
  - 相互作用警示

**建议依据**：
- DRIs/RDA标准
- 用户营养历史数据
- 用户健康状况和目标
- 循证营养学证据

---

## 使用说明

### 触发条件

当用户请求以下内容时触发本技能：
- 营养趋势分析
- 营养素摄入评估
- 营养状况评估
- 营养改善建议
- 营养与其他健康指标的关联分析

### 执行步骤

#### 步骤 1: 确定分析范围

明确用户请求的分析类型和时间范围：
- 分析类型：趋势/评估/相关性/建议
- 时间范围：周/月/季度/自定义
- 分析深度：宏量营养素/微量营养素/全面分析

#### 步骤 2: 读取数据

**主要数据源**：
1. `data-example/nutrition-tracker.json` - 营养追踪主数据
2. `data-example/nutrition-logs/YYYY-MM/YYYY-MM-DD.json` - 每日饮食记录

**关联数据源**：
1. `data-example/profile.json` - 体重、BMI等基础数据
2. `data-example/fitness-tracker.json` - 运动数据
3. `data-example/sleep-tracker.json` - 睡眠数据
4. `data-example/hypertension-tracker.json` - 血压数据
5. `data-example/diabetes-tracker.json` - 血糖数据

#### 步骤 3: 数据分析

根据分析类型执行相应的分析算法：

**趋势分析算法**：
- 线性回归计算趋势斜率
- 移动平均平滑波动
- 统计显著性检验

**RDA达成率计算**：
```python
rda_achievement = (actual_intake / rda_value) * 100

status_classification:
- < 50%: 严重缺乏
- 50-75%: 不足
- 75-100%: 接近目标
- 100-150%: 充足（理想范围）
- > 150%: 过量（注意安全上限UL）
```

**营养密度评分**：
```python
nutrient_density_score = (
    (vitamins_achieved / total_vitamins) * 40 +
    (minerals_achieved / total_minerals) * 30 +
    (fiber_achieved / fiber_rda) * 30
)
```

**相关性分析算法**：
- Pearson相关系数计算
- 滞后相关性分析（考虑时间延迟效应）
- 多变量回归分析

#### 步骤 4: 生成报告

按照标准格式输出分析报告（见"输出格式"部分）

---

## 输出格式

### 营养趋势分析报告

```markdown
# 营养摄入趋势分析报告

## 分析周期
2025-03-20 至 2025-06-20（3个月，90天记录）

## 宏量营养素趋势

### 卡路里摄入
- **趋势**：⬇️ 下降
- **开始**：平均2100卡/天
- **当前**：平均1950卡/天
- **变化**：-150卡/天 (-7.1%)
- **解读**：卡路里摄入适度减少，与减重目标一致

**趋势线**：
```
2100 ┤ ╭╮
2050 ┤ ╭╯╰╮
2000 ┼─╯   ╰╮
1950 ┤      ╰
1900 └───────────
     3月  4月  5月  6月
```

### 蛋白质
- **趋势**：➡️ 稳定
- **平均**：82g/天（范围：70-95g）
- **目标**：80g/天
- **达标率**：93%（84/90天达标）
- **解读**：蛋白质摄入稳定，基本达标

### 膳食纤维
- **趋势**：⬆️ 改善
- **开始**：平均18g/天
- **当前**：平均22g/天
- **变化**：+4g/天 (+22%)
- **目标**：30g/天
- **解读**：纤维摄入显著增加，但仍需继续努力

### 脂肪
- **趋势**：⬇️ 下降
- **开始**：平均75g/天
- **当前**：平均68g/天
- **变化**：-7g/天 (-9.3%)
- **目标**：≤65g/天
- **解读**：脂肪摄入减少，接近目标

**脂肪类型分布变化**：
| 脂肪类型 | 开始 | 当前 | 目标 | 趋势 |
|---------|------|------|------|------|
| 饱和脂肪 | 25g | 20g | <20g | ⬇️ 改善 |
| 单不饱和 | 30g | 32g | >35g | ⬆️ 略增 |
| 多不饱和 | 15g | 12g | 15-20g | ⬇️ 需增加 |
| 反式脂肪 | 2g | 0.5g | 0g | ⬇️ 改善 |

## 维生素状况趋势

### 维生素D
- **摄入趋势**：⬆️ 增加（补充剂开始）
- **开始**：平均2μg/天（饮食来源）
- **当前**：平均52μg/天（含2000IU补充剂）
- **RDA**：15μg/天
- **血清水平变化**：
  - 基线（2025-05）：18 ng/mL
  - 当前（2025-06）：22 ng/mL
  - 目标：30-100 ng/mL
- **解读**：✅ 补充剂起效，但需继续监测

### 维生素C
- **趋势**：⬆️ 改善
- **开始**：平均65mg/天
- **当前**：平均85mg/天
- **RDA**：100mg/天
- **达标率**：从65% → 85%
- **建议**：增加柑橘类、奇异果、草莓等水果

### B族维生素
- **维生素B12**：✅ 充足（平均2.5μg，RDA 2.4μg）
- **叶酸**：⚠️ 不足（平均320μg，RDA 400μg）
- **B6**：✅ 充足（平均1.5mg，RDA 1.3mg）

## 矿物质趋势

### 钙
- **趋势**：➡️ 稳定
- **平均**：850mg/天
- **RDA**：1000mg/天
- **达标率**：85%
- **主要来源**：乳制品40%、豆腐25%、绿叶蔬菜20%

### 铁
- **趋势**：✅ 充足
- **平均**：12mg/天
- **RDA**：8mg/天（男性）
- **达标率**：150%
- **主要来源**：肉类、蛋类、豆类、绿叶蔬菜

### 钠
- **趋势**：⬇️ 改善
- **开始**：平均2800mg/天
- **当前**：平均2100mg/天
- **目标**：<2300mg/天（理想<1500mg）
- **解读**：✅ 达到一般目标，⚠️ 理想目标仍需努力

### 钾
- **趋势**：⬆️ 改善
- **开始**：平均2800mg/天
- **当前**：平均3200mg/天
- **目标**：3500-4700mg/天
- **钾/钠比值**：从1.0 → 1.5（目标>2）
- **建议**：继续增加水果和蔬菜

## 特殊营养素趋势

### Omega-3
- **趋势**：⬆️ 增加（鱼油补充剂）
- **开始**：平均150mg/天
- **当前**：平均850mg/天（含补充剂）
- **推荐量**：500-1000mg/天
- **状态**：✅ 达标

### 胆碱
- **趋势**：➡️ 稳定
- **平均**：350mg/天
- **AI（适宜摄入量）**：425mg/天
- **达标率**：82%
- **主要来源**：鸡蛋（60%）、肉类（25%）、豆类（15%）

## 饮食模式分析

### 食物类别分布
| 食物类别 | 占比 | 变化 | 评价 |
|---------|------|------|------|
| 蔬菜水果 | 35% | +8% | ✅ 增加 |
| 全谷物 | 20% | +5% | ✅ 改善 |
| 精制谷物 | 15% | -7% | ✅ 减少 |
| 蛋白质来源 | 20% | 稳定 | ✅ 充足 |
| 添加脂肪 | 8% | -3% | ✅ 减少 |
| 添加糖 | 2% | -2% | ✅ 减少 |

### 进食时间模式
- **平均进食窗口**：12.5小时（07:30 - 20:00）
- **进食频率**：平均4.2次/天
- **最常见餐食时间**：
  - 早餐：07:30（90%天数）
  - 午餐：12:15（95%天数）
  - 晚餐：18:45（98%天数）
  - 加餐：15:30（60%天数）

### 饮食质量评分
- **营养密度评分**：7.2/10（从6.5提升）
- **食物多样性评分**：6.8/10
- **均衡饮食评分**：7.5/10
- **综合评分**：7.2/10 → **良好**

## 洞察与建议

### 关键洞察

1. **膳食纤维持续改善但仍不足**
   - 从18g增至22g，但仍低于目标30g
   - 影响：饱腹感、肠道健康、血糖控制
   - 建议：每餐至少包含5g纤维

2. **脂肪质量改善**
   - 饱和脂肪减少，反式脂肪几乎消除
   - 多不饱和脂肪略低，需增加Omega-3食物
   - 建议：增加深海鱼类、坚果、亚麻籽

3. **钠摄入改善但钾/钠比仍低**
   - 钠减少33%，钾增加14%
   - 钾/钠比从1.0升至1.5，仍低于目标2.0
   - 建议：继续增加高钾食物（香蕉、橙子、土豆、菠菜）

4. **维生素D补充剂有效**
   - 血清水平从18升至22 ng/mL（4周+4ng）
   - 预计3-4个月可达目标范围
   - 建议：继续补充，定期监测

### 优先级行动计划

#### Priority 1：提升膳食纤维至30g/天（2周）

**具体行动**：
1. 早餐：全谷物（燕麦/全麦面包）+ 水果（9g）
2. 午餐：糙米/全麦面 + 2份蔬菜（8g）
3. 晚餐：红薯/杂粮 + 2份蔬菜（8g）
4. 加餐：水果 + 坚果（5g）
**总计**：30g ✅

#### Priority 2：优化钾/钠比值至2.0（4周）

**具体行动**：
1. 减少加工食品（主要钠源）
2. 每日2-3份高钾水果（香蕉、橙子、猕猴桃）
3. 蔬菜选择菠菜、土豆、蘑菇、番茄
4. 使用香料替代盐调味

#### Priority 3：维持维生素D补充（长期）

**监测计划**：
- 3个月后复查血清水平
- 目标：40-60 ng/mL
- 根据结果调整剂量

## 营养目标进度

| 目标 | 开始 | 当前 | 目标值 | 进度 | 状态 |
|------|------|------|--------|------|------|
| 卡路里 | 2100 | 1950 | 1800-2000 | 100% | ✅ 达标 |
| 蛋白质 | 75g | 82g | 80g | 100% | ✅ 达标 |
| 膳食纤维 | 18g | 22g | 30g | 73% | ⚠️ 进行中 |
| 维生素D | 18 ng/mL | 22 ng/mL | 30-100 | 20% | ⚠️ 改善中 |
| 钠摄入 | 2800mg | 2100mg | <2300 | 100% | ✅ 达标 |
| Omega-3 | 150mg | 850mg | 500-1000mg | 100% | ✅ 达标 |

---

**报告生成时间**：2025-06-20
**分析周期**：2025-03-20 至 2025-06-20（90天）
**数据记录数**：90天
**营养分析器版本**：v1.0
```

---

## 数据结构

### 饮食记录数据

```json
{
  "date": "2025-06-20",
  "meals": [
    {
      "type": "breakfast",
      "time": "07:30",
      "foods": ["鸡蛋", "牛奶", "全麦面包"],
      "calories": 450,
      "macronutrients": {
        "protein_g": 20,
        "carbs_g": 55,
        "fat_g": 15,
        "fiber_g": 5,
        "saturated_fat_g": 5,
        "monounsaturated_fat_g": 6,
        "polyunsaturated_fat_g": 3,
        "trans_fat_g": 0.1
      },
      "micronutrients": {
        "vitamin_a_mcg": 150,
        "vitamin_c_mg": 5,
        "vitamin_d_mcg": 1.5,
        "vitamin_e_mg": 1,
        "vitamin_k_mcg": 5,
        "thiamine_mg": 0.3,
        "riboflavin_mg": 0.4,
        "niacin_mg": 4,
        "vitamin_b6_mg": 0.1,
        "folate_mcg": 30,
        "vitamin_b12_mcg": 0.6,
        "calcium_mg": 250,
        "iron_mg": 2,
        "magnesium_mg": 40,
        "phosphorus_mg": 200,
        "zinc_mg": 2,
        "selenium_mcg": 10,
        "potassium_mg": 350,
        "sodium_mg": 300
      },
      "special_nutrients": {
        "omega_3_g": 0.1,
        "choline_mg": 150
      }
    }
  ],
  "daily_summary": {
    "total_calories": 2000,
    "total_macronutrients": {
      "protein_g": 80,
      "carbs_g": 250,
      "fat_g": 65,
      "fiber_g": 30
    },
    "rda_achievement": {
      "protein": 100,
      "vitamin_c": 85,
      "vitamin_d": 35,
      "calcium": 90,
      "iron": 75
    },
    "goal_achieved": true
  }
}
```

---

## 算法说明

### RDA达成率计算

```python
def calculate_rda_achievement(actual_intake, rda_value, ul_value=None):
    """
    计算RDA达成率和状态

    参数：
    - actual_intake: 实际摄入量
    - rda_value: 推荐膳食供给量
    - ul_value: 可耐受最高摄入量（可选）

    返回：
    - achievement_rate: 达成率百分比
    - status: 状态标签
    """
    achievement_rate = (actual_intake / rda_value) * 100

    if ul_value and actual_intake > ul_value:
        status = "exceeds_ul"
        category = "过量（危险）"
    elif achievement_rate < 50:
        status = "severe_deficiency"
        category = "严重缺乏"
    elif achievement_rate < 75:
        status = "insufficient"
        category = "不足"
    elif achievement_rate < 100:
        status = "approaching_target"
        category = "接近目标"
    elif achievement_rate <= 150:
        status = "adequate"
        category = "充足"
    else:
        status = "high_intake"
        category = "较高"

    return {
        'achievement_rate': round(achievement_rate, 1),
        'status': status,
        'category': category
    }
```

### 营养密度评分

```python
def calculate_nutrient_density_score(meal_data):
    """
    计算食物营养密度评分（0-10分）

    因素权重：
    - 维生素达成率：40%
    - 矿物质达成率：30%
    - 膳食纤维：20%
    - 限制性营养素（饱和脂肪、钠、添加糖）：10%
    """
    score = 0

    # 维生素评分
    vitamin_achievements = [
        meal_data['micronutrients'][v] / RDA[v]
        for v in ['vitamin_a', 'vitamin_c', 'vitamin_d', 'vitamin_e', 'vitamin_k']
    ]
    vitamin_score = min(sum(vitamin_achievements) / len(vitamin_achievements), 1.5) * 10
    score += min(vitamin_score, 10) * 0.40

    # 矿物质评分
    mineral_achievements = [
        meal_data['micronutrients'][m] / RDA[m]
        for m in ['calcium', 'iron', 'magnesium', 'zinc']
    ]
    mineral_score = min(sum(mineral_achievements) / len(mineral_achievements), 1.5) * 10
    score += min(mineral_score, 10) * 0.30

    # 膳食纤维评分
    fiber_score = min(meal_data['macronutrients']['fiber_g'] / 5, 2) * 10
    score += min(fiber_score, 10) * 0.20

    # 限制性营养素扣分
    penalty = 0
    if meal_data['macronutrients']['saturated_fat_g'] > 10:
        penalty += 2
    if meal_data['micronutrients']['sodium_mg'] > 600:
        penalty += 2
    if meal_data.get('added_sugars_g', 0) > 10:
        penalty += 2

    score = max(0, score - penalty * 0.10)

    return round(score, 1)
```

### 健康饮食指数评分

```python
def calculate_healthy_eating_index(daily_data):
    """
    计算健康饮食指数（HEI-2015改编）

    评分范围：0-100分
    """
    score = 0

    # 充足性成分（满分50分）
    # 1. 水果（5分）
    fruit_servings = daily_data['fruit_servings']
    score += min(fruit_servings, 2.5) * 2

    # 2. 蔬菜（5分）
    veg_servings = daily_data['vegetable_servings']
    score += min(veg_servings, 3) * 1.67

    # 3. 全谷物（10分）
    whole_grains_oz = daily_data['whole_grains_oz']
    score += min(whole_grains_oz, 3) * 3.33

    # 4. 乳制品（10分）
    dairy_servings = daily_data['dairy_servings']
    score += min(dairy_servings, 3) * 3.33

    # 5. 蛋白质（5分）
    protein_oz = daily_data['protein_oz']
    score += min(protein_oz, 5) * 1

    # 6. 海鲜/植物蛋白（5分）
    plant_protein_oz = daily_data['plant_protein_oz']
    score += min(plant_protein_oz, 2) * 2.5

    # 7. 脂肪酸比例（10分）
    fat_ratio = daily_data['unsaturated_fat_g'] / max(daily_data['saturated_fat_g'], 1)
    score += min(fat_ratio, 2.5) * 4

    # 适度性成分（满分40分，反向计分）
    # 8. 精制谷物（10分，越少越好）
    refined_grains_oz = daily_data['refined_grains_oz']
    score += max(10 - refined_grains_oz * 2, 0)

    # 9. 钠（10分，越少越好）
    sodium_g = daily_data['sodium_mg'] / 1000
    score += max(10 - sodium_g * 2, 0)

    # 10. 添加糖（10分，越少越好）
    added_sugars_pct = daily_data['added_sugars_g'] / (daily_data['total_calories'] / 100)
    score += max(10 - added_sugars_pct * 10, 0)

    # 11. 饱和脂肪（10分，越少越好）
    saturated_fat_pct = daily_data['saturated_fat_g'] / (daily_data['total_calories'] / 100)
    score += max(10 - saturated_fat_pct * 10, 0)

    return round(score, 1)
```

---

## 医学安全边界

⚠️ **重要声明**

本分析仅供健康参考，不构成医疗诊断或营养处方。

### 分析能力范围

✅ **能做到**：
- 营养数据统计和分析
- 趋势识别和可视化
- RDA达成率计算
- 营养缺乏风险评估
- 一般性营养建议
- 补充剂相互作用检查

❌ **不做到**：
- 诊断营养缺乏疾病
- 开具补充剂处方
- 替代注册营养师
- 处理严重营养不良
- 评估食物过敏

### 危险信号检测

在分析过程中检测以下危险信号：

1. **营养素过量**：
   - 维生素A > 3000μg（长期）
   - 维生素D > 100μg（长期）
   - 铁 > 45mg（长期）
   - 硒 > 400μg
   - 钠 > 2300mg（持续）

2. **营养素缺乏**：
   - 维生素D < 10μg/天（血清<12 ng/mL）
   - 维生素B12 < 1.5μg/天（素食者）
   - 铁 < 6mg/天（育龄女性）
   - 钙 < 500mg/天

3. **能量摄入异常**：
   - 持续<1200卡/天（可能营养不良）
   - 持续>3500卡/天（可能超重）

4. **饮食模式异常**：
   - 膳食纤维<10g/天
   - 添加糖>25%热量
   - 饱和脂肪>15%热量

### 建议分级

**Level 1: 一般性建议**
- 基于DRIs/RDA标准
- 适用于一般人群
- 无需医疗监督

**Level 2: 参考性建议**
- 基于用户数据和健康状况
- 需结合个人情况
- 建议咨询营养师

**Level 3: 医疗建议**
- 涉及疾病管理或补充剂
- 需医生确认
- 不得自行调整药物剂量

---

## 参考资源

- 中国居民膳食营养素参考摄入量 (DRIs)：http://www.cnsoc.org/
- 美国膳食指南：https://www.dietaryguidelines.gov/
- USDA FoodData Central：https://fooddatacentral.usda.gov/
- WHO营养建议：https://www.who.int/nutrition/
- 补充剂相互作用数据库：https://naturalmedicines.therapeuticresearch.com/

---

**技能版本**: v1.0
**创建日期**: 2026-01-06
**维护者**: WellAlly Tech
