| name | weekly-review-claw |
| description | 生成每周综合健康报告与趋势分析。当用户问'这周怎么样'、'周报'、'周回顾'时使用。单日概览('今天怎么样')使用 health-overview skill。本 skill 的核心价值是多日趋势识别、规律性分析和周对周对比,这些是单日概览不覆盖的。 |
| metadata | {"pha":{"emoji":"📅","category":"health-coaching-cli","layer":"domain","sections":["[Truncated]","[Truncated]","[Truncated]"],"tags":["cli","weekly-review","trends","report","cross-domain","coaching"],"requires":{"tools":"[Truncated]","skills":"[Truncated]"}}} |
周回顾 — 趋势分析与跨域综合
定位:本 skill 不重复各垂域的领域知识(参考标准、分级阈值等已在对应垂域 skill 中),专注于垂域 skill 不覆盖的三件事:多日趋势识别、规律性与一致性分析、周对周对比。
与 health-overview 的分工:weekly-review 聚焦本周趋势回顾,用上周数据作为对比基线;health-overview 聚焦单日深度分析,用近 7 天数据作为个人基线。
一、数据获取策略
全量并行,一次性发起(取 14 天:本周 + 上周作为对比基线)
get_sleep --last-days 14 # 以起床日期存储,详见 sleep-coach skill
get_naps --last-days 14
get_heart_rate --last-days 14
get_resting_heart_rate --last-days 14
get_hrv --last-days 14
get_heart_rhythm --last-days 14
get_spo2 --last-days 14
get_blood_pressure --last-days 14
get_stress --last-days 14
get_emotion --last-days 14
get_activity_data --last-days 14
get_workouts --last-days 14
get_vo2max --last-days 14
睡眠日期偏移:get_sleep 数据以起床日期存储,不是入睡日期。详见 sleep-coach skill。
全量取数后,按下方分析框架逐步处理。不要先取部分再追加。
分析焦点:报告聚焦最近 7 天(本周),前 7 天(上周)仅作为对比基线。
二、强制分析流程
拿到数据后,在输出报告前,必须在内部完成以下四步。报告中每个判断必须能追溯到这些步骤。
第一步:数据清点(防遗漏)
逐一扫描每个工具返回的数据,列出所有非空字段和数值。重点检查:
- 将 14 天数据分为本周(第 1-7 天)和上周(第 8-14 天)两组
- 统计每组中各维度有数据的天数(如"本周 7 天中有 5 天有睡眠数据")
- 午睡数据(
get_naps):若有,必须纳入总睡眠分析
- 情绪分布中愉悦 + 平静 + 低落比例之和是否为 100%(若缺平静,需计算补齐)
- 历史数据中标为
null 或空的字段,严禁描述为某个具体数值
- 标记数据缺失的维度(后续不对缺失维度做推断或评价)
数据充分性判断:
- 本周某维度有效数据不足 3 天 → 该维度分析需标注"数据有限,仅供参考"
- 上周数据不足 3 天 → 不做周对周对比,只分析本周绝对值
- 超过一半维度数据缺失 → 报告开头提示"当前可用数据有限"
第二步:数值验算(防计算错误)
对报告中将出现的每个数值判断,预先完成验算:
- 均值计算:本周均值 vs 上周均值,写出算式
- 达标天数:逐天检查是否达标,列出具体日期
- 变化幅度:(本周均值 - 上周均值) / 上周均值 × 100%
- 均值除数:计算均值时,除数为有效数据天数,不是 7。
null / 缺失天不参与计算(如 7 天中只有 5 天有睡眠数据,除以 5)
- 睡眠效率计算:若数据包含入睡时间和起床时间,计算
实际睡眠时长 / 在床时间 × 100%(注意跨午夜处理),按 sleep-coach skill 标准评估
- 趋势判断:按时间顺序列出 7 天数据点,检查是否有反向波动
第三步:因果与时序校验(防归因错误)
对报告中每个因果/关联判断,必须完成:
- 原因模式和结果模式在时间上是否一致?
- 是否存在反例(如"运动日睡眠都好"但某个运动日睡眠反而差)?
- 若无法通过校验,只描述相关性,删除归因推测
- 做归因时必须使用"可能""或许"等不确定性表达
第四步:异常汇总与基调定性
按各垂域 skill 定义的参考标准,逐维度扫描本周均值数据,标记所有触发异常的维度。需检查的维度:睡眠(平均总量、平均结构、平均效率)、血压(均值高/低、脉压差)、心率(平均静息心率)、血氧(平均值)、步数(达标天数)、压力(均分)、情绪(平均低落比例)。各维度的具体阈值以对应垂域 skill 为准。
均值计算注意:除数为有效数据天数,不是 7。null / 缺失天不参与计算。
基调定性规则:
- 无异常 → 可使用正面评价
- 有异常 → 禁止使用"完美的一周""各项指标均优秀"等正面概括;使用中性表述
- 多个维度同时恶化 → 严肃语气,优先呈现
三、跨域关联分析框架(周粒度)
周粒度的跨域分析与单日不同:不关注单个时间点的因果,而是关注跨天模式和规律性。
3.1 多指标收敛判断(周粒度)
| 收敛信号 | 结论 |
|---|
| 静息心率本周持续升高 + HRV 持续下降 + 睡眠评分下滑 + 压力均分上升 | 系统性恢复不足 — 过去一周身体未能有效恢复 |
| 步数逐日下降 + 压力逐日上升 + 情绪低落比例升高 | 身心状态持续走低 — 需温和关心 |
| 运动频率稳定 + 睡眠质量稳定 + 静息心率持平/下降 | 稳健的一周 — 肯定一致性 |
| 本周多项指标均优于上周 | 全面改善 — 肯定进步 |
| 本周多项指标均差于上周 | 多维度同时下滑 — 温和关心,引导排查原因 |
| 夜间 SpO2 多日低于 95% + 多日频繁清醒 | 持续 OSA 信号 — 比单日更需重视,建议就医 |
3.2 运动日 vs 非运动日对比
将本周 7 天按是否有运动记录分为两组,对比:
- 睡眠评分 / 深睡比例
- 次日静息心率 / HRV
- 次日压力均分
样本量不足 3 天的组别不做对比结论,仅描述数据。
3.3 作息规律性分析
- 入睡/起床时间波动:计算 7 天入睡时间和起床时间的最大差值,按 sleep-coach skill 的规律性标准评估
- 社交时差:按 sleep-coach skill 的社交时差标准评估周末与工作日的差异
- 步数一致性:7 天中达标天数比总步数更重要(5 天达标优于 1 天走 15000 步)
3.4 周对周对比
将本周(第 1-7 天)与上周(第 8-14 天)逐维度对比:
| 维度 | 对比指标 |
|---|
| 睡眠 | 平均时长、平均评分、平均深睡比例 |
| 活动 | 日均步数、达标天数、中高强度时长 |
| 心血管 | 平均静息心率、平均 HRV |
| 压力 | 平均压力均分、平均低落比例 |
| 运动 | 运动天数、总运动时长 |
| 血压 | 平均收缩压、平均舒张压(如有数据) |
对比时:
- 变化幅度不足 5% → 描述为"持平"
- 上周数据不足 3 天 → 不做周对周对比
3.5 趋势方向判断
7 天数据足以使用"趋势"一词。按时间顺序列出数据后判断:
- 连续上升(每天都比前一天高/好) → "持续上升趋势"
- 连续下降 → "持续下降趋势"
- 先升后降或先降后升 → "有波动",指出峰值/谷值日期
- 无明显方向 → "保持平稳"
四、评价一致性规则
4.1 数值与结论方向一致
- 数值升高只能描述为"上升/升高/增加",禁止描述为"下降"
- 值在参考范围内 → "在建议范围内";值超出 → "高于/低于建议范围"
4.2 分析与建议不矛盾
- 若分析说"步数已超过建议水平" → 建议不能再说"增加步数"
- 若分析说"某指标需关注" → 建议必须包含对应改善方向
- 正面分析 → 维持性建议;负面分析 → 改善性建议
4.3 泛化约束
- "7 天中有 2 天有运动记录" ≠ "运动频率为每周 2 次"(可能是数据不全)
- "无专项运动记录" ≠ "休息日"(中高强度活动量 > 0 时不可称休息日)
- 趋势稳定不等于绝对值正常 — 若绝对值本身值得关注,即使趋势稳定也需指出
4.4 结论强度与数据量匹配
| 数据点数 | 允许的表述强度 |
|---|
| 2-3 个 | 只能说"变化""波动" |
| 4-6 个 | 可以说"近期呈现某方向变化" |
| 7 个以上 | 方可使用"趋势" |
五、报告结构
确认回顾类型
| 用户说的话 | 回顾类型 | 输出详略 |
|---|
| "我这周怎么样?" | 综合回顾 | 简洁版(3-5 句话) |
| "这周和上周比怎么样" | 周期对比 | 简洁版 + 周对周对比 |
| "我有进步吗?" | 进度检查 | 简洁版 + 趋势方向 |
| "给我出个周报" | 正式报告 | 结构化版 |
简洁版(默认)
3-5 句话:
- 总体评价(一句话 — 基调由第四步异常汇总决定)
- 最强维度 + 关键数据
- 需改进的方面
- 一个具体建议
示例:"总体来说不错的一周。活动很稳定,7 天中有 5 天达到了步数目标。睡眠需要关注——平均 6.3 小时,比上周的 7.1 小时有所下降。下周试试固定起床时间。"
结构化版(用户要求正式周报)
## 本周健康总结(MM-DD ~ MM-DD)
### 一句话概括
[基调由异常汇总决定]
### 各维度评估
- 睡眠:[评级] — 平均每晚 X 小时,达标 X/7 天,比上周 [变化]
- 活动:[评级] — 日均 X 步,达标 X/7 天,比上周 [变化]
- 心率:均值 X bpm,比上周 [变化]
- 压力:均分 X,比上周 [变化]
- 运动:X 天有运动记录,总时长 X 分钟
### 本周亮点
- [最佳成就或最强维度]
### 需关注
- [最弱维度 + 具体问题 + 跨域关联分析]
### 下周建议
- [1-2 条具体可执行的建议,对应需关注的发现]
内容覆盖维度(按数据可用性选取)
- 睡眠 — 平均时长、规律性(入睡/起床波动)、结构、低于 6h 的天数、社交时差
- 活动 — 日均步数、达标天数、一致性、中高强度时长
- 心血管 — 静息心率均值与趋势、HRV 趋势、血压均值(如有)、血氧(如有)
- 压力与情绪 — 压力均分趋势、各档位时间分布、情绪低落比例变化
- 运动 — 运动天数、类型分布、总时长、恢复评估
- 恢复状态 — 综合 HRV + 静息心率 + 睡眠 + 压力的周趋势
- 规律性 — 作息波动、步数一致性
无数据的维度简要标注"暂无数据",不展开分析。根据数据中最有价值的发现动态分配篇幅。
沟通准则
- 先讲故事,再说数字 — 用自然语言串联,不要罗列指标
- 重视一致性胜过峰值 — "7 天中 6 天达标"比"有一天走了 15,000 步"更重要
- 以前瞻性结尾 — 下周具体建议
- 对不好的周也要坦诚 — 不粉饰,但要有建设性
六、输出规范
通用输出规范(数据引用格式、语气、禁止 Markdown 绘图等)见 healthy-shared skill。以下仅列出本 skill 的补充规范。
比较级表达
禁止使用任何形态的数学不等号(< > < > < >)。所有比较必须转为纯中文:"低于""高于""不超过""不低于"。
信息安全
- 禁止暴露工具名称(如
get_sleep、get_heart_rate 等)
- 禁止暴露原始错误信息(如 "data: null")
- 用自然语言转述
七、红线
| 信号 | 处理方式 |
|---|
| 多指标同时持续恶化(如静息心率连续升高 + 睡眠连续下滑 + 压力持续偏高) | 升级为紧急关注,建议就医 |
| 连续一周活动量接近零 | 温和关心,了解情况 |
| 用户过度关注单日数字 | 引导看周趋势 |
| 出现急性症状描述(胸痛、呼吸困难、晕厥) | 立即执行紧急处理协议,不继续数据分析 |
各维度的具体红线阈值见对应垂域 skill(cardiovascular、sleep-coach、mental-health 等),此处只处理跨域叠加和持续性的升级情况。