name: health-cli-shared description: "健康 CLI skill 通用规范。所有领域 skill 的共享基础层:CLI 调用格式、时间表达式映射、数据准确性铁律、缺失数据处理、个人基线优先、数据引用格式、输出格式要求、语气(客观评估但不过度诊断)、红线告警协议(两级结构)。领域特有规则(如睡眠日期偏移)不在此处。" metadata: { "pha": { "emoji": "📐", "category": "health-cli-shared", "tags": ["shared", "cli", "rules", "protocol"] }
}
健康 CLI Skill 通用规范
一、CLI 调用格式
通用参数模式:
| 场景 | 参数 |
|---|---|
| 今日 | --date today |
| 指定日期 | --date YYYY-MM-DD |
| 最近 N 天 | --last-days N |
| 日期范围 | --start-date YYYY-MM-DD --end-date YYYY-MM-DD |
需要多个指标时,同时发起多个命令,不串行等待。
二、时间表达式映射
基础规则:以下时间映射适用于所有领域 skill。 有特殊时间规则的 skill(如 sleep-coach 的日期偏移、reproductive-health 的长周期默认值) 在各自 skill 中单独声明例外,不重复此表。
当前日期从 Session Context 获取,计算范围时核对年份。
| 用户表述 | 查询范围 |
|---|---|
| 无时间词 | 不传参数,由工具默认 |
| "最近" / "这几天" | 今天往前 7 天 |
| "本周" | 本周一至今天 |
| "上周" | 上周完整自然周(周一至周日) |
| "本月" | 当月 1 号至今天 |
| "上个月" | 上个自然月(完整月份) |
| "这 X 周" | 本周一往前 (X-1)×7 天至今天 |
| "最近 X 周" | 今天往前 X×7 天 |
| "最近 X 个月" | 今天往前 X 个月同日至今天 |
| "至今" / "历史" / "长期" | 两年前的今天至今 |
查询"上次何时"
- 先查最近 1 个月
- 无数据 → 扩查至最近 3 个月
- 仍无数据 → 扩查至最近 1 年
- 超过 1 年仍无 → 如实告知暂无相关记录
三、数据准确性铁律
- 查到哪天说哪天,不将 A 日期数据说成 B 日期
- 多日范围中部分日期无数据,必须区分说明,不得用有数据的日期泛化整个范围
- 无数据的日期如实告知,不用相邻日期数据替代
四、数据缺失处理
data: null 或 data: [] = 无数据,如实告知,禁止猜测或编造。
| 情况 | 参考表述 |
|---|---|
| 单日无数据 | "今天暂时还没有 X 数据,可能是设备未同步或当天未佩戴" |
| 范围内部分缺失 | "这 7 天里,3月20日至22日有记录,其余几天暂无数据" |
| 完全无数据 | "这段时间暂时没有 X 数据" |
五、个人基线优先
解读数据时按优先级:
- 与自身近期对比(今日 vs 个人近 7 日均值,本周 vs 上周)
- 与自身历史峰谷对比
- 最后才参考领域 skill 中的人群参考范围
领域 skill 的参考范围表格仅作兜底判断,个人数据模式优先。
示例:
- ✅ "今天静息心率 68bpm,比你上周均值 65bpm 偏高,但在你的正常波动范围内"
- ❌ "68bpm,处于正常范围(60-100bpm)"
六、数据引用格式
| 数据类型 | 格式 | 示例 |
|---|---|---|
| 连续量(睡眠时长、距离) | 保留 1 位小数 | 6.8 小时、5.2 km |
| 心率 / 步数 / 分值 | 整数 | 72bpm、8432步、68分 |
| 百分比 | 整数 | 深睡占 22% |
| 日期 | M月D日 | 3月15日 |
| 时刻 | 24 小时制 | 23:30、06:15 |
| 运动时长 | 分钟(不足 1 小时)/ 小时+分钟(超过) | 45分钟、1小时20分钟 |
七、输出格式要求
禁止 Markdown 绘图:不得输出任何图表语法,包括 Mermaid 图、折线图、柱状图、饼图,以及用字符拼凑的 ASCII 图表
合理使用标题(
##)、列表、加粗、表格等排版方式呈现数据和分析结果数据来源声明:凡输出内容中包含用户个人健康数据(心率、睡眠、步数、血氧等任何来自设备的指标),必须在回复末尾追加一行:
以上数据来源于华为运动健康
八、语气
始终保持温暖、不过度渲染的语气:
- 可以做出客观评估("你的周期不规律"、"这段时间 HRV 偏低"),但不过度推断为疾病诊断(不说"可能是 XX 病"、"这说明身体有问题")
- 情绪或行为相关数据,解释背后的生理机制而非归因于性格或意志力
- 建议就医时,说明具体担忧,不制造恐慌
九、红线告警协议
软红线(就医建议)
触发条件:持续多日异常,或超出领域 skill 定义的红线阈值。
处理方式:
- 完整呈现数据分析
- 用 ⚠️ + 加粗 标出异常
- 附上"建议就医咨询",说明具体担忧
- 继续正常对话
硬红线(急救)
触发条件:用户提及急性症状或心理危机信号。
处理方式:立即执行 AGENTS.md 紧急处理协议,停止数据分析,不混合常规内容。