名称: body-shape-manager(形体管理)
定位: 管理你的饮食与锻炼,全方位体型管理助手
核心功能:
数据存储:所有用户数据存储在 references/user_profile.json 和 memory/YYYY-MM-DD.md,完全不依赖外部文件。
当用户发送以下内容时,激活本技能:
| 类别 | 关键词 |
|---|---|
| ------ | -------- |
| 体型相关 | "我的体型"、"身材怎么样"、"体脂" |
| 饮食记录 | "记录饮食"、"吃了"、"今天吃了xxx"或者直接发送食物图片 |
| 查看进度 | "今天吃够了吗"、"我还能吃多少热量"、"这段时间吃的合格吗" |
| 目标设置 | "想增肌"、"想减脂"、"重新设置目标" |
| 首次触发 | "开始形体管理"、"形体管理" |
body-shape-manager/
├── SKILL.md # 本文件
├── references/
│ ├── user_profile.json # 用户档案
│ ├── food_database.json # 食物营养数据库(~60种食物)
│ └── nutrition_guide.md # 营养学参考
├── scripts/
│ ├── init_profile.py # 用户引导问卷
│ ├── nutrition_calculator.py # 核心计算模块
│ └── diet_logger.py # 饮食日志模块
└── memory/
└── YYYY-MM-DD.md # 每日饮食日志
用户消息 → 判断状态
│
├─ 有 "user_profile.json" 且 calculated 字段有数据?
│ ├─ 是 → 已初始化用户
│ └─ 否 → 未完成初始化(需引导)
│
└─ 处理消息
└─ 文字 → 饮食记录流程
触发条件:用户档案不存在或未初始化
引导问卷(共6问,一次性问完):
🍄 欢迎使用形体管理助手!
请依次回答以下问题:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1️⃣ 你的身高和体重是多少?
输入示例:175cm / 70kg
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
2️⃣ 你的年龄是?
输入数字,例如:28
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
3️⃣ 你的性别是?
A. 男 B. 女
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
4️⃣ 你平时运动多吗?
A. 几乎不运动,上班坐着为主
B. 偶尔散散步或轻度活动
C. 每周运动 2-3 次(跑步、健身等)
D. 每周运动 4-5 次,运动量比较大
E. 每天都在运动,健身爱好者
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
5️⃣ 你现在的目标是什么?
A. 减肥(减少脂肪)
B. 增肌(增加肌肉)
C. 维持现状,保持健康
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
6️⃣ 你的目标体重是多少?(单位:kg)
直接输入数字,例如:65
处理逻辑:
init_profile.py 的 process_answer() 逐题验证nutrition_calculator.py 的 calculate_all() 计算update_user_profile() 保存结果输出示例:
========================================
🍄 形体管理 - 个人档案
========================================
📋 基础信息
身高: 175.0cm
体重: 75.0kg
年龄: 28岁
性别: 男
活动水平: 每周2-3次运动
🎯 目标
类型: 减脂
目标体重: 65.0kg
📊 计算结果
基础代谢(BMR): 1707.0 kcal
每日总消耗(TDEE): 2645.8 kcal
每日目标热量: 2020.8 kcal
🥩 每日营养素目标
蛋白质: 143.0g
碳水: 223.3g
脂肪: 61.7g
📅 目标分段计划
第1阶段: 75.0kg → 67.0kg
变化: 8.0kg | 每周: 0.5kg | 预计: 16.0周
(快速减重期)
第2阶段: 67.0kg → 65.0kg
变化: 2.0kg | 每周: 0.4kg | 预计: 5.0周
(平台期巩固)
========================================
🎉 初始化完成!输入「今天吃了xxx」开始记录饮食吧~
触发条件:用户已初始化,发送文字食物记录
处理流程:
用户输入 → 解析食物列表 → 查询营养数据库
→ 数据库有:直接记录
→ 数据库无:AI根据常识估算营养值 → 记录(标记AI估算)
→ 显示实时反馈
解析规则:
"米饭 200g, 鸡蛋 60g, 西兰花 100g", / 和输入示例:
今天吃了:米饭 200g,鸡蛋 2个(每个60g),西兰花 150g,青菜200g
解析结果:
已识别食物:
- 米饭(熟) 200g → 232.0 kcal(数据库)
- 鸡蛋(大) 120g → 186.0 kcal(数据库)
- 西兰花 150g → 51.0 kcal(数据库)
- 青菜 200g → ~30 kcal(AI估算:青菜≈小白菜,约15kcal/100g)
输出格式:
📝 已记录午餐:
| 食物 | 份量 | 热量 | 蛋白质 | 碳水 | 脂肪 |
|------|------|------|--------|------|------|
| 米饭(熟) | 200g | 232kcal | 5.2g | 51.2g | 0.6g |
| 鸡蛋(大) | 120g | 186kcal | 16.0g | 1.3g | 13.2g |
| 西兰花 | 150g | 51kcal | 4.2g | 10.5g | 0.6g |
🥩 本餐小计:469 kcal
📊 今日累计:
热量: 469 / 2020.8 kcal (23%)
蛋白质: 25.4g | 碳水: 63.0g | 脂肪: 14.4g
💡 智能建议:
✅ 今日摄入正常,继续保持!
触发关键词:"今天吃够了吗"、"我还能吃多少热量"、"这段时间吃的合格吗"、"今天吃了什么"
处理逻辑:
load_today_log() 读取对应日期日志format_log_summary() 格式化generate_advice() 生成建议输出格式:
📊 今日饮食汇总 (2026-04-01)
| 指标 | 今日摄入 | 目标 | 进度 |
|------|----------|------|------|
| 热量 | 1200 kcal | 2020 kcal | ██████░░░░ 59% |
| 蛋白质 | 85g | 143g | ██████░░░░ 59% |
| 碳水 | 120g | 223g | ████░░░░░░ 54% |
| 脂肪 | 40g | 62g | ██████░░░░ 65% |
🍽️ 各餐记录:
早餐: 米饭(熟)、鸡蛋(大) - 325kcal
午餐: 鸡胸肉、青菜(AI)、米饭(熟) - 432kcal
晚餐: 牛肉、蔬菜沙拉(AI) - 375kcal
加餐: 牛奶 - 68kcal
💡 智能建议:
⚠️ 热量缺口较大,建议晚餐后补充一些碳水
✅ 蛋白质摄入良好,继续保持!
根据用户目标类型,生成不同建议:
减脂场景 (cut):
| 情况 | 建议 |
|---|---|
| ------ | ------ |
| 热量缺口 > 500kcal | ⚠️ 缺口过大,可能影响代谢 |
| 碳水剩余 > 100g | 🍚 碳水摄入较多,建议减少主食 |
| 脂肪超标 > 15g | 🫙 油脂摄入偏高,注意控制 |
| 蛋白质不足 | 🥩 蛋白质还差 Xg,建议加餐补充 |
增肌场景 (bulk):
| 情况 | 建议 |
|---|---|
| ------ | ------ |
| 热量缺口 > 300kcal | ⚠️ 增肌需要热量盈余! |
| 蛋白质不足 | 🥩 蛋白质还差 Xg,肌肉生长需要蛋白 |
| 碳水不足 | 🍚 碳水不足,建议加餐补充能量 |
# 初始化引导
from scripts.init_profile import process_answer, is_profile_initialized
if not is_profile_initialized():
# 进入引导流程
# 营养计算
from scripts.nutrition_calculator import calculate_all, format_profile_summary
result = calculate_all(user_data)
# 饮食记录
from scripts.diet_logger import (
add_food_entry,
load_today_log,
format_log_summary,
generate_advice,
search_food
)
result = add_food_entry("午餐", "米饭", 200)
用户档案 (user_profile.json):
{
"created_at": "2026-04-01",
"basic_info": {
"height_cm": 175,
"weight_kg": 75,
"age": 28,
"gender": "male",
"activity_level": "moderately_active"
},
"goal": {
"type": "cut",
"target_weight_kg": 65
},
"calculated": {
"bmr": 1707,
"tdee": 2645.8,
"daily_calorie_target": 2020.8,
"protein_g": 143,
"carbs_g": 223.3,
"fat_g": 61.7,
"goal_stages": [...]
}
}
每日日志 (memory/YYYY-MM-DD.md):
# 🍄 饮食日志 - 2026-04-01
## 📊 累计汇总
| 指标 | 今日摄入 | 目标 | 进度 |
|------|----------|------|------|
| 热量 | 1200 | 2020 | ██████░░░░ 59% |
...
## 午餐
| 食物 | 份量 | 热量 | 蛋白质 | 碳水 | 脂肪 |
|------|------|------|--------|------|------|
| 米饭(熟) | 200g | 232kcal | 5.2g | 51.2g | 0.6g |
| 青菜 | 200g | Nonekcal | Noneg | Noneg | Noneg |
...
| 阶段 | 内容 | 状态 |
|---|---|---|
| ------ | ------ | ------ |
| Phase 1 | 目录结构 | ✅ |
| Phase 2 | 数据基础层 | ✅ |
| Phase 3 | 核心计算模块 | ✅ |
| Phase 4 | 用户引导模块 | ✅ |
| Phase 5 | 饮食记录模块 | ✅ |
| Phase 6 | SKILL.md 主流程 | ✅ |
| Phase 7 | 测试与优化 | ✅ |
最后更新:2026-04-01
共 1 个版本