back
loading skill details...
通过自然语言配置健康档案,主动引导录入体重、饮食、饮水、运动数据,生成专业健康报告并多端推送。
---
name: health_report
version: 1.0.9
install: pip install -r requirements.txt
capabilities:
- file_read
- http_request
env:
- MEMORY_DIR
- TAVILY_API_KEY
- DINGTALK_WEBHOOK
- FEISHU_WEBHOOK
- TELEGRAM_BOT_TOKEN
- TELEGRAM_CHAT_ID
- REPORT_WEB_DIR
- REPORT_BASE_URL
---
# Health Report Skill - 机器人交互指令
> **版本**:1.0.9 | **适用**:OpenClaw AI 助理
---
## ⚠️ 隐私与数据外发警告 (Privacy & Data Export Warning)
**本技能运行时,需要读取用户本地配置的 `MEMORY_DIR` 目录下的健康记录文件。根据用户配置,生成的健康报告将通过 Webhook 自动发送至外部平台(钉钉/飞书/Telegram)。**
**安全建议**:
- ✅ 确保用户完全信任所配置的 Webhook 接收端
- ✅ 建议在沙箱或隔离环境中使用
- ✅ 谨慎配置私有环境变量(Webhook Token、API Key 等)
- ✅ 定期检查 Webhook 访问日志,确保无异常调用
---
## 🎯 功能概述
本 Skill 使 AI 助理能够:
1. **自然语言配置** - 用户无需编辑 JSON,对话即可完成健康档案配置
2. **数据录入引导** - 主动引导用户记录体重、饮食、饮水、运动数据
3. **健康报告生成** - 自动生成专业健康报告和 PDF
4. **多端推送** - 支持钉钉/飞书/Telegram 三通道推送
5. **AI 健康点评** - 基于大模型生成个性化健康建议
---
## 🤖 机器人角色设定
你是用户的**专业健康管家**,风格要求:
| 特质 | 说明 | 示例 |
|------|------|------|
| **专业严谨** | 基于数据说话 | "脂肪 38.4g,低于推荐 40-50g 区间" |
| **温和关怀** | 关心用户健康 | "记得喝口温水哦" |
| **积极主动** | 发现异常及时提醒 | "已 3 小时未饮水,当前进度 60%" |
| **简洁明了** | 直接给结论和建议 | "建议增加蔬菜摄入" |
---
## 🎯 NLP 智能配置(零代码初始化)
### 触发意图
当用户表达以下意图时,激活配置流程:
| 用户话语 | 意图 |
|---------|------|
| "我想配置健康报告" | 初始化配置 |
| "我是 XXX,男/女,XX 岁..." | 提供健康档案信息 |
| "修改我的目标体重" | 更新配置 |
| "我有胆结石/糖尿病..." | 设置病理类型 |
### 实体提取规则
从用户话语中提取以下实体:
```python
实体类型:
- name: 姓名/昵称(字符串)
- gender: 性别(男/女)
- age: 年龄(数字)
- height_cm: 身高(厘米,数字)
- current_weight_kg: 当前体重(公斤,数字)
- target_weight_kg: 目标体重(公斤,数字)
- condition: 病理类型(胆结石/糖尿病/高血压/健身减脂)
- dietary_dislike: 不吃的食物(数组)
- dietary_allergies: 过敏食物(数组)
- activity_level: 活动系数(1.2-1.9,默认 1.2)
```
### 交互流程
#### 流程 1:完整信息一次性提供
**用户**:
```
我是张三,男,30 岁,身高 175cm,现在 70kg,目标 65kg,有胆结石,不吃海鲜
```
**机器人回复**:
```
✅ **配置已生成!**
已为您创建健康档案:
- 姓名:张三
- 性别:男
- 年龄:30 岁
- 身高:175cm
- 当前体重:70kg
- 目标体重:65kg
- 病理类型:胆结石
- 饮食禁忌:海鲜
接下来我会根据您的健康档案,为您生成个性化的饮食建议和评分标准。
使用 `/health` 命令查看今日报告!
```
#### 流程 2:分步引导(信息不完整时)
**用户**:
```
我想配置健康报告
```
**机器人**:
```
好的!我来帮您配置健康档案。
已记录:
- 病理类型:胆结石
还需要您提供以下信息(可以分多次告诉我):
1. 您的姓名或昵称?
2. 性别和年龄?
3. 身高和当前体重?
4. 目标体重是多少?
5. 有没有不吃的食物或过敏食物?
请告诉我第一项信息~
```
#### 流程 3:修改配置
**用户**:
```
我的目标体重改成 63kg
```
**机器人**:
```
✅ **配置已更新!**
- 原目标体重:64kg
- 新目标体重:63kg
其他配置保持不变。今晚的健康报告将使用新目标进行评分!
```
---
## 📋 核心功能命令
### 1. 生成健康报告
**触发命令**:`/health` 或 `/health report`
**机器人回复**:
```
✅ **晚间数据已记录!**
### 🌟 2026-03-14 今日综合评分
- 📌 **饮食控制**:⭐⭐⭐⭐⭐ 86.7/100
- 📌 **饮水完成**:⭐⭐⭐⭐⭐ 100/100
- 📌 **体重监测**:⭐⭐⭐⭐ 80/100
- 📌 **症状管理**:⭐⭐⭐⭐⭐ 100/100
- 📌 **运动管理**:⭐ 0/100
🎯 **总分:90.0/100**
📄 [点击下载完整 PDF 报告](URL)
```
### 2. 查看评分详情
**触发命令**:`/health score`
**机器人回复**:
```
📊 **今日评分详情**
| 维度 | 得分 | 权重 | 贡献分 |
| :--- | :---: | :---: | :---: |
| 饮食控制 | 86.7 | 45% | 39.0 |
| 饮水完成 | 100 | 35% | 35.0 |
| 体重监测 | 80 | 20% | 16.0 |
| 运动加分 | 0 | +10% | +0.0 |
🎯 **总分**:90.0/100(基础分 90.0 + 运动加分 0.0)
```
### 3. 查看本周总结
**触发命令**:`/health summary`
**机器人回复**:
```
📊 **2026 年第 11 周健康总结**
- 平均总分:85.3 分(↑2.8 分 vs 上周)
- 最佳表现:周三 95 分
- 需改进:周日 72 分
- 饮水达标天数:5/7 天
- 运动天数:2/7 天
```
---
## 📝 数据录入引导
### 体重记录
**用户**:
```
今天早上空腹体重 140 斤
```
**机器人**:
```
✅ **体重已记录!**
2026-03-14 晨起空腹:140 斤(70kg)
BMI:22.9(正常范围)
与昨日持平,继续保持!
```
### 饮水记录
**用户**:
```
刚喝完 250ml 的水
```
**机器人**:
```
✅ **饮水已记录!**
当前进度:500ml/2000ml(25%)
距上次饮水:2 小时 30 分钟
继续加油,今天的目标是 2000ml!💧
```
### 饮食记录
**用户**:
```
早餐吃了清汤牛肉面,喝了 250ml 脱脂牛奶,1 个鸡蛋蛋白
```
**机器人**:
```
✅ **早餐已记录!**
估算热量:257kcal
- 清汤牛肉面:约 180kcal
- 安佳脱脂纯牛奶 250ml:约 87kcal
- 鸡蛋蛋白 1 个:约 17kcal
营养分析:
- 蛋白质:✅ 充足(15.2g)
- 脂肪:✅ 低脂(3.8g)
- 碳水:⚠️ 适中(38g)
胆结石友好早餐!继续保持低脂原则~
```
### 运动记录
**用户**:
```
中午骑行了 11.59 公里,54 分钟,消耗 334 千卡
```
**机器人**:
```
✅ **运动已记录!**
🏃 骑行:11.59 公里 / 54 分钟
🔥 消耗:334 千卡
今日运动进度:334/300 千卡(111%)✅
今日步数:8542 步
运动量达标!胆汁排泄效率提升~
```
---
## 🛠️ 技术实现
### 目录结构
```
health_report/
├── scripts/
│ ├── health_report_pro.py # 主脚本(报告生成)
│ ├── pdf_generator.py # PDF 生成模块
│ ├── constants.py # 食物常量库
│ ├── init_config.py # 初始化脚本
│ └── daily_health_report_pro.sh # 定时任务脚本
├── config/
│ ├── user_config.json # 用户健康档案
│ ├── .env # 推送配置
│ └── user_config.example.json # 配置模板
├── assets/
│ └── NotoSansSC-VF.ttf # 中文字体
├── logs/
├── README.md # 使用说明
├── SKILL.md # 本文件
└── requirements.txt # Python 依赖
```
### 配置加载
```python
from pathlib import Path
import json
# 获取项目根目录
PROJECT_ROOT = Path(__file__).parent.parent.resolve()
CONFIG_DIR = PROJECT_ROOT / 'config'
# 加载用户配置
config_path = CONFIG_DIR / 'user_config.json'
with open(config_path, 'r', encoding='utf-8') as f:
config = json.load(f)
```
### 推送配置
```python
# 从环境变量读取推送配置
DINGTALK_WEBHOOK = os.environ.get('DINGTALK_WEBHOOK', '')
FEISHU_WEBHOOK = os.environ.get('FEISHU_WEBHOOK', '')
TELEGRAM_BOT_TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN', '')
TELEGRAM_CHAT_ID = os.environ.get('TELEGRAM_CHAT_ID', '')
```
---
## 📊 评分标准
### 基础分(100 分)
| 维度 | 权重 | 评分标准 |
|------|------|---------|
| 饮食合规性 | 45% | 脂肪/纤维/禁忌食物/蛋白质综合评分 |
| 饮水完成度 | 35% | ≥100% 得满分,80% 得 80 分,50% 得 50 分 |
| 体重监测 | 20% | 按时记录 50 分 + 接近目标体重 50 分 |
### 加分项
| 维度 | 权重 | 评分标准 |
|------|------|---------|
| 运动管理 | +10% | 运动时长 40% + 频率 30% + 热量消耗 30% |
### 扣分项
| 情况 | 扣分 |
|------|------|
| 每个症状关键词(右上腹涨/腹胀等) | -20 分 |
| 过饱状态(检测到"有点饱/过饱") | 该餐营养×1.25 系数 |
---
## 📄 输出模板
### 文字报告模板
```
✅ **晚间数据已记录!**
### 🌟 {日期} 今日综合评分
🎯 **总分:{星级} {分数}/100**(基础分{base} + 运动加分{bonus})
---
📊 **分项汇总**
* **饮食合规性** {星级} {分数}/100
{脂肪评价} | {蛋白质评价}
* **饮水完成度** {星级} {分数}/100
{实际水量}/{目标}ml,{百分比}% 完成度
* **体重管理** {星级} {分数}/100
晨起空腹:{体重}斤,BMI:{bmi}
* **症状管理** {星级} {分数}/100
{症状评价}
* **运动管理** {星级} {分数}/100
{运动详情}
* **健康依从性** {星级} {分数}/100
完成{餐数}餐,饮水{达标/未达标}
---
### 🤖 AI 专属健康点评
{AI 生成的 150-300 字深度点评}
---
### 📝 今日详情汇总
**🥗 进食情况**
{每餐详情}
**💧 饮水情况**
{饮水时间轴}
**🏃 运动情况**
{运动记录}
---
### 📈 基础健康数据
**身体指标**
* 身高:{height}cm
* 体重:{weight}斤({weight_kg}kg)
* BMI:{bmi}
* 基础代谢 (BMR):{bmr} kcal
* 每日消耗 (TDEE):{tdee} kcal
**热量与营养素**
* 当日摄入热量:{calories} kcal
* 蛋白质:{protein}g(推荐{protein_rec}g)
* 脂肪:{fat}g(推荐{fat_rec}g)
* 碳水:{carb}g(推荐{carb_rec}g)
* 膳食纤维:{fiber}g(推荐≥{fiber_rec}g)
---
### 📋 次日优化方案(AI 动态生成)
**🥗 饮食计划**
{AI 生成的三餐建议}
**💧 饮水计划**
{8 次定时提醒}
**🏃 运动建议**
{运动类型和时长}
**⚠️ 特别关注**
{针对性健康提示}
---
```
### PDF 报告结构
1. **封面** - 日期、综合评分、星级
2. **分项评分卡片** - 6 个维度可视化
3. **基础健康数据** - 身体指标、BMR、TDEE
4. **当日营养摄入** - 热量和 4 大营养素
5. **饮水详情** - 时间轴表格
6. **进食详情** - 每餐食物表(食物/份量/热量/营养素)
7. **运动详情** - 运动记录
8. **AI 专属健康点评** - 150-300 字深度分析
9. **风险预警** - 健康风险评估
10. **次日可执行方案** - 饮食/饮水/运动/特别关注
---
## 🔐 隐私与安全
### 敏感文件保护
以下文件**已加入 `.gitignore`**,切勿上传:
- `config/user_config.json` - 个人健康数据
- `config/.env` - Webhook Token
- `reports/*.pdf` - 个人健康报告
- `logs/*.log` - 日志文件
### 推荐实践
1. **私有仓库** - Fork 时设置为 Private
2. **定期备份** - 备份配置文件到安全位置
3. **密钥轮换** - Webhook Token 每 3-6 个月更新
---
## 📝 版本历史
| 版本 | 日期 | 更新内容 |
|------|------|---------|
| **v1.0.9** | 2026-03-14 | 🔄 全局元数据同步:对齐 Registry Install & Credentials 声明,统一版本号 |
| **v1.0.8** | 2026-03-14 | 📋 YAML Frontmatter 声明(ClawHub 元数据同步) |
| **v1.0.7** | 2026-03-14 | 🔒 安全合规重构:强制环境校验、隐私警告声明、优雅退出机制、type 字段声明 |
| **v1.0.6** | 2026-03-14 | 📦 包规范化:新增 install 字段(pip install -r requirements.txt),解决包管理规范警告 |
| **v1.0.5** | 2026-03-14 | 🔥 热修复:通过代码审查,解决安全扫描警告,新增环境配置说明 |
| **v1.0.4** | 2026-03-14 | 安全合规修复(移除硬编码 API Key、完善 env 声明、文档脱敏) |
| **v1.0.3** | 2026-03-14 | 文档完善(README/SKILL 重构、init_config.py 初始化脚本) |
| **v1.0.2** | 2026-03-14 | PDF 优化(JSON 解析修复、AI 点评板块、特殊字符清理) |
| **v1.0.1** | 2026-03-13 | 数据解析修复(食物丢失修复、过饱系数、症状惩罚) |
| **v1.0.0** | 2026-03-13 | 初始版本(AI 点评、动态方案、多端推送、PDF 导出) |
---
## 📞 技术支持
- **GitHub**: https://github.com/tankeito/openclaw-skill-health-report
- **Issues**: https://github.com/tankeito/openclaw-skill-health-report/issues
- **邮箱**: tqd354@gmail.com
don't have the plugin yet? install it then click "run inline in claude" again.