企业微信健康日记
通过 wecom-cli 操作企业微信智能表格和文档,记录饮食和身体状态,发现饮食与健康之间的隐藏关联。
首次配置(自动初始化)
执行任何操作前,先检查 memory 中是否已有健康日记配置。 如果没有,按以下流程自动创建:
步骤 1:创建智能表格
wecom-cli doc create_doc '{"doc_type": 10, "doc_name": "健康日记"}'
从返回结果中获取 docid。
步骤 2:创建子表和字段
# 创建子表1: 饮食记录
wecom-cli doc smartsheet_add_sheet '{"docid": "<DOCID>", "sheet_name": "饮食记录"}'
# 创建子表2: 身体状态
wecom-cli doc smartsheet_add_sheet '{"docid": "<DOCID>", "sheet_name": "身体状态"}'
# 创建子表3: 关联分析
wecom-cli doc smartsheet_add_sheet '{"docid": "<DOCID>", "sheet_name": "关联分析"}'
获取各子表的 sheet_id,然后为每个子表添加字段:
饮食记录字段:
wecom-cli doc smartsheet_add_fields '{"docid": "<DOCID>", "sheet_id": "<SHEET_ID>", "fields": [
{"field_title": "日期", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "餐次", "field_type": "FIELD_TYPE_SINGLE_SELECT"},
{"field_title": "食物列表", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "份量说明", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "热量估算", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "备注", "field_type": "FIELD_TYPE_TEXT"}
]}'
身体状态字段:
wecom-cli doc smartsheet_add_fields '{"docid": "<DOCID>", "sheet_id": "<SHEET_ID>", "fields": [
{"field_title": "记录时间", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "状态描述", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "严重程度", "field_type": "FIELD_TYPE_SINGLE_SELECT"},
{"field_title": "持续时长", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "备注", "field_type": "FIELD_TYPE_TEXT"}
]}'
关联分析字段:
wecom-cli doc smartsheet_add_fields '{"docid": "<DOCID>", "sheet_id": "<SHEET_ID>", "fields": [
{"field_title": "食物", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "状态", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "出现次数", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "典型时间差", "field_type": "FIELD_TYPE_TEXT"},
{"field_title": "关联强度", "field_type": "FIELD_TYPE_SINGLE_SELECT"}
]}'
步骤 3:保存配置到 memory
将以下信息保存到 memory 文件 health-diary-config.md:
---
name: health-diary-config
description: 健康日记智能表格配置信息,包含 docid、各子表 sheet_id
type: project
---
## 健康日记表配置
- docid: <DOCID>
- url: <创建时返回的URL>
- 表格名称: 健康日记
- 饮食记录 sheet_id: <SHEET_ID>
- 身体状态 sheet_id: <SHEET_ID>
- 关联分析 sheet_id: <SHEET_ID>
配置保存后,所有操作直接从 memory 读取,无需再次询问。
操作流程
以下命令中
<DOCID>和各<SHEET_ID>从 memory 的 health-diary-config 中读取。
模式 1:文字描述记录饮食
用户用自然语言描述食物,AI 记录到智能表格。
交互流程:
- 用户:"午餐吃了红烧牛肉面和一杯冰美式"
- AI 确认食物和份量
- 用户确认后写入智能表格
wecom-cli doc smartsheet_add_records '{"docid": "<DOCID>", "sheet_id": "<饮食记录SHEET_ID>", "records": [{"values": {
"日期": [{"type": "text", "text": "2026-04-02"}],
"餐次": [{"text": "午餐"}],
"食物列表": [{"type": "text", "text": "红烧牛肉面, 冰美式"}],
"份量说明": [{"type": "text", "text": "一大碗, 大杯"}],
"备注": [{"type": "text", "text": ""}]
}}]}'
模式 2:照片识别记录
用户发送食物照片到企业微信,AI 识别后记录。
交互流程:
- 用户通过企业微信发送食物照片
- AI 用多模态能力识别食物
- 确认食物和份量后写入
# 获取最近消息中的图片
wecom-cli msg get_message '{"chat_type": 1, "chatid": "<USERID>", "begin_time": "<5分钟前>", "end_time": "<现在>"}'
# 下载图片后用 Claude 视觉能力识别
# 识别完成后写入饮食记录(命令同模式1)
模式 3:记录身体状态
用户报告身体不适,AI 记录并主动检查是否有饮食关联。
交互流程:
- 用户:"下午胃有点不舒服"
- AI 查询最近饮食记录,检查是否有已知的食物-状态关联
- 如果发现风险食物,主动提醒
- 写入身体状态记录
# 写入身体状态
wecom-cli doc smartsheet_add_records '{"docid": "<DOCID>", "sheet_id": "<身体状态SHEET_ID>", "records": [{"values": {
"记录时间": [{"type": "text", "text": "2026-04-02 15:00"}],
"状态描述": [{"type": "text", "text": "胃部不适"}],
"严重程度": [{"text": "轻微"}],
"持续时长": [{"type": "text", "text": ""}],
"备注": [{"type": "text", "text": ""}]
}}]}'
# 查询最近饮食记录检查关联
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<饮食记录SHEET_ID>"}'
# 查询已有关联分析
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<关联分析SHEET_ID>"}'
主动提醒逻辑:
- 查询关联分析表中"关联强度"="高"的记录
- 比对用户最近 6 小时的饮食记录
- 如果匹配到高风险食物,发送提醒消息
模式 4:关联分析
AI 分析饮食记录和身体状态记录,发现隐藏的关联模式。
分析逻辑:
- 获取所有饮食记录和身体状态记录
- 对每条身体状态记录,回溯 6-8 小时内的饮食
- 统计"食物X → 状态Y"的出现频率
- 出现 2 次以上标记为"中",3 次以上标记为"高"
- 计算典型时间差(食物摄入到症状出现的平均时间)
# 读取所有饮食记录
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<饮食记录SHEET_ID>"}'
# 读取所有身体状态
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<身体状态SHEET_ID>"}'
# 读取已有关联分析
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<关联分析SHEET_ID>"}'
# AI 执行关联分析后,更新关联分析表
wecom-cli doc smartsheet_update_records '{"docid": "<DOCID>", "sheet_id": "<关联分析SHEET_ID>", "key_type": "CELL_VALUE_KEY_TYPE_FIELD_TITLE", "records": [{"record_id": "RECORD_ID", "values": {
"出现次数": [{"type": "text", "text": "3"}],
"关联强度": [{"text": "高"}]
}}]}'
模式 5:生成健康周报
每周生成一份健康报告,保存为企业微信文档。
报告内容:
- 饮食概览(记录天数、总餐次、饮食规律性)
- 身体状态(不适次数、主要症状)
- 关联发现(食物-状态关联表格)
- 建议(基于关联分析)
# 读取本周数据(假设 7 天)
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<饮食记录SHEET_ID>"}'
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<身体状态SHEET_ID>"}'
wecom-cli doc smartsheet_get_records '{"docid": "<DOCID>", "sheet_id": "<关联分析SHEET_ID>"}'
# AI 汇总分析后,创建报告文档
wecom-cli doc create_doc '{"doc_type": 3, "doc_name": "健康周报 2026-W14"}'
# 写入报告内容
wecom-cli doc edit_doc_content '{"docid": "<报告DOCID>", "content": "# 健康周报(3/27-4/2)\n\n## 饮食概览\n...\n\n## 身体状态\n...\n\n## 关联发现\n...\n\n## 建议\n...", "content_type": 1}'
热度分计算规则(关联强度)
| 条件 | 关联强度 |
|---|---|
| 出现 1 次 | 低 |
| 出现 2-3 次 | 中 |
| 出现 4 次以上 | 高 |
字段类型写入格式(通用规则)
完整字段类型格式说明参见 crm-schema
| 字段类型 | 写入格式 | 示例 |
|---|---|---|
| TEXT | [{"type":"text","text":"值"}] |
食物列表、日期、备注等文本字段 |
| SINGLE_SELECT | [{"text":"选项文本"}] |
餐次、严重程度、关联强度等单选字段 |
实操注意事项
常见踩坑
- 更新时不传 key_type — 字段标题无法识别,必须带
"key_type": "CELL_VALUE_KEY_TYPE_FIELD_TITLE" - API 调用失败时 — 检查错误码:301085 表示 docid 无效(改用 url);2022004 表示字段未找到(先 add_fields);2022003 表示记录不存在(先 add_records)。遇到错误先用
smartsheet_get_sheet '{"url": "<URL>"}'验证表结构。 - SINGLE_SELECT 选项不匹配 — 传的文本必须与表中已有选项完全一致
- SINGLE_SELECT 创建时 options 不生效 —
smartsheet_add_fields传入的property.options不会预创建选项,选项在首次写入记录时通过[{"text": "选项"}]自动创建。创建字段时可省略property参数,直接写"field_type": "FIELD_TYPE_SINGLE_SELECT"即可 - 日期格式 — 统一使用
YYYY-MM-DD格式,时间使用YYYY-MM-DD HH:MM - 关联分析时机 — 建议在每次记录身体状态时触发关联检查,每周日生成完整周报
- 照片识别 — 需要用户先通过企业微信发送照片,然后通过 msg get_message 获取
定时自动化建议
| 任务 | 建议时间 | Cron |
|---|---|---|
| 健康周报生成 | 每周日 20:00 | 0 20 * * 0 |
| 关联分析更新 | 每日 22:00 | 0 22 * * * |
数据联动
- 本 Skill 独立运行,不依赖其他 Skill
- 健康周报可发送到企业微信消息通知用户