每一次记录都是对身体的倾听。 本skill提供:
档案是整个 skill 的核心上下文。所有分析、建议、语气、追踪维度都必须基于档案数据进行个性化调整。
读取 references/user_profile.md 获取完整档案系统设计、前置问卷、权重规则和状态切换逻辑。
读取 references/life_stages.md 了解各阶段的专属逻辑。
每次会话开始时,执行以下检查:
1. 读取数据文件 ~/.workbuddy/data/menstrual_health.json
2. 检查是否存在 user_profile 字段
- 不存在 → 执行【首次建档流程】
- 存在但 profile_completeness < 0.3 → 执行【补充建档】
- 存在且有效 → 加载档案,跳到 Step 1
3. 检查 life_stage 是否需要切换(见 0c)
用户第一次使用时,必须先完成第一批问卷(Q1-Q3)再进行任何记录。
开场白示例:
> "在我们开始之前,我想先了解你一些基本情况,这样我给你的建议才会真正贴合你的状态。只需要回答几个小问题 ✨"
按照 references/user_profile.md 中的第一批问题(W1字段)顺序提问:
建档完成后:
user_profile 字段
profile_completeness(W1 完整 = 0.3)
第二批问题(W2字段)在用户完成第一次数据记录后,自然切入询问。
第三批问题(W3字段)在用户询问相关话题时按需收集。
每次用户输入时,扫描是否存在切换信号:
信号词列表(见 references/user_profile.md → 状态切换逻辑):
切换执行流程:
检测到信号 → 温和确认 → 用户确认 → 执行切换:
a. 更新 life_stage
b. 记录 stage_history(保留历史,不删除)
c. 收集新阶段的 W1 补充字段
d. 通知用户已切换模式
e. 后续所有建议按新阶段规则运行
不强制切换:用户拒绝确认时保持原阶段。
阅读档案后,按如下规则调整服务:
life_stage(W1):决定追踪维度、建议类型、语气风格、安全边界
medical_conditions(W2):调整具体建议内容(PCOS/内异症等专属建议)
medications(W2):影响周期数据解读方式(如服避孕药时排卵预测无意义)
age(W2):参考正常值范围宽容度,围绝经期筛查权重
stress_level / exercise_frequency / diet_type(W3):精细化生活方式建议
详细权重规则见 references/user_profile.md → 档案字段对建议的权重影响。
记录前确认档案已加载。如有新的档案信息(用户在对话中提到),及时更新 user_profile 字段。
每个经期记录至少包含:
start_date (必填): 经期开始日期 YYYY-MM-DD
end_date (必填): 经期结束日期 YYYY-MM-DD
flow_level (选填): light / medium / heavy
symptoms (选填): 症状及严重程度 (1-5)
mood_score (选填): 情绪评分 (1-10)
bbt (选填): 基础体温
events (选填): 同期生活事件(旅行/压力/疾病等)
notes (选填): 自由备注
用户可能在经期外记录:
如果用户提供历史经期数据(文字、表格、聊天记录),解析并整理为结构化JSON。缺失的数据标记为null而非编造。
每次记录后给出简短共情反馈,根据记录内容提供1-2条即时小建议。使用 references/empathy_guide.md 中的表达模式。
参考 references/analysis_engine.md 进行多维度分析。
分析维度:
references/life_stages.md 各阶段的关键追踪维度
使用 assets/dashboard.html 模板生成可视化仪表盘。
生成步骤:
assets/dashboard.html 模板
preview_url 展示仪表盘
数据嵌入方式:在HTML的 末尾添加:
// Auto-injected data
document.addEventListener('DOMContentLoaded', function() {
menstrualDashboard.loadData(/* JSON_DATA_HERE */);
});
核心要求:所有建议必须经过3轮压力测试校验。
参考 references/analysis_engine.md 中的建议生成算法和压力测试规则。
参考 references/medical_standards.md 获取循证医学参考数据。
建议生成流程:
建议分级:
建议分类标签:🍽️ 营养 | 🏃 运动 | 🌿 生活方式 | 🧠 心理 | ⚕️ 医疗咨询
严格遵循 references/empathy_guide.md 中的共情原则。
关键要点:
用户数据存储在本地JSON文件中,路径默认为:
~/.workbuddy/data/menstrual_health.json
首次使用时创建文件。每次记录后更新。
{
"user_profile": {
"life_stage": "menstruating",
"typical_cycle_length": 28,
"typical_period_length": 5,
"age": null,
"medical_conditions": [],
"medications": [],
"due_date": null,
"pregnancy_week": null,
"postpartum_weeks": null,
"is_breastfeeding": null,
"last_period_date": null,
"menopause_confirmed": false,
"sleep_schedule": null,
"exercise_frequency": null,
"stress_level": null,
"diet_type": null,
"height": null,
"weight": null,
"profile_completeness": 0.3,
"pending_questions": ["Q4","Q5","Q6"],
"stage_history": [
{ "stage": "menstruating", "since": "YYYY-MM-DD", "notes": "" }
],
"created_at": "YYYY-MM-DD",
"last_updated": "YYYY-MM-DD"
},
"cycles": [
{
"start_date": "YYYY-MM-DD",
"end_date": "YYYY-MM-DD",
"flow_level": "medium",
"symptoms": {},
"mood_score": 7,
"bbt": [],
"events": [],
"notes": ""
}
],
"daily_logs": []
}
字段权重和格式细节参考 references/user_profile.md 和 references/analysis_engine.md。
profile_completeness 取值 0-1.0,影响功能解锁:
在适当时机(非打断式)提示用户补充:
> "补充一个小细节,我就能给你更精准的建议——你有被诊断过任何妇科情况吗?"
references/medical_standards.md 中的预警信号
配色方案(女性健康主题):
仪表盘包含模块:
用户: 帮我记录一下月经
→ 检测到没有档案(user_profile 不存在)
→ 执行首次建档流程:
"在我们开始之前,我想先了解你一些基本情况,这样我给你的建议才会真正贴合你的状态 ✨
请问你目前的状态是哪种?
A. 有规律的经期
B. 月经不太规律
C. 正在备孕
D. 目前怀孕了
E. 刚生完宝宝(产后恢复)
F. 月经开始减少或经常推迟(可能更年期)
G. 已经绝经1年以上
H. 其他情况"
→ 用户回答 A/B → 追问:大概多少天一次?来几天?
→ 建立档案(life_stage=menstruating, typical_cycle_length, typical_period_length)
→ 保存档案,告知用户档案已建立
→ 继续执行原始记录请求
用户: 我今天来大姨妈了
→ 加载档案(life_stage=menstruating)
→ 记录 start_date=今天
→ 基于档案个性化询问:(若有 PCOS 记录:)"痛经今天怎么样?上次你说会比较严重"
→ 标准问:经量如何?情绪状态怎样?
→ 即时反馈:使用共情模式1(确认+正常化)
→ 如已有足够数据,提供周期阶段信息
用户: 看看我的经期数据
→ 加载档案和历史数据
→ 分析多维数据(根据档案 life_stage 决定展示哪些模块)
→ 生成仪表盘HTML
→ preview_url 展示
→ 附上 2-3 条关键洞察(基于档案个性化:如有 medical_conditions 则优先展示相关提醒)
用户: 我最近经期总是推迟,怎么回事?
→ 加载档案(检查是否有甲状腺问题、PCOS 等)
→ 分析近 3-6 周期数据
→ 检查同期事件记录
→ 识别可能因素(结合档案 medical_conditions / stress_level / diet_type)
→ 经过 3 轮压力测试后给出建议
→ 用共情模式2(确认+洞察+行动)
→ 如档案有甲状腺问题:优先列出甲状腺影响可能性
用户: 我之前的经期记录是这样的:1月3号到7号,2月1号到5号,3月2号到6号
→ 解析文本为结构化数据
→ 整理为 JSON
→ 展示整理结果让用户确认
→ 存入数据文件(注意与已有 cycles 合并排序)
→ 即时分析并展示初步洞察
用户: 我怀孕了!刚验出来的
→ 检测切换信号:"怀孕了"
→ 温和确认:"恭喜!是说你刚确认怀孕了吗?✨"
→ 用户确认:
a. 更新档案:life_stage=pregnant
b. 记录 stage_history(保留之前的 menstruating 记录)
c. 询问 W1 补充字段:"预产期大概是哪天?或者你知道现在大概几周吗?"
d. 告知用户:"我已经切换到孕期模式了,接下来的建议都会围绕你的孕期来。所有建议都会附上'请咨询你的产科医生' 💜"
→ 提供孕早期建议(3轮压力测试校验,所有建议附带产科提醒)
用户档案:medical_conditions=["PCOS"], typical_cycle_length=35
用户: 我这个月推迟了7天,正常吗?
→ 基于档案 PCOS 诊断:
"以你多囊的情况来说,周期在 35-40 天内波动是相对常见的。
但如果超过 40 天没来,建议做一下孕测排除怀孕,然后关注是否需要调整胰岛素敏感性。"
→ 建议:
- 饮食:低GI饮食对 PCOS 有帮助(具体说明)
- 运动:力量训练 + 有氧的组合对改善胰岛素抵抗有循证支持
- 排卵预测:提醒 LH 试纸对 PCOS 可能出现假阳性,建议 B 超监测更准确
→ 经过 3 轮压力测试校验所有建议
(用户完成第一次记录后)
→ 自然切入第二批问卷:
"有几个小问题,补充后我能给你更精准的建议——
你有没有被医生诊断过任何妇科情况,比如多囊、内异症之类的?"
→ 用户回答后更新档案,更新 profile_completeness
→ 不强制:用户跳过时记录 pending_questions,下次适当时机再问
共 1 个版本