个人健康助手的高频入口设计:从 App、通知到 Agent 闭环的工程拆解
个人健康助手是否能被持续使用不能只看模型能不能回答问题。对于睡眠、运动、体重、复查提醒、家庭照护等场景用户更常遇到的是零散记录、周期提醒、资料整理和任务跟进。如果系统只有一个聊天入口用户问完一次后后续事件很难沉淀提醒发出后系统也不知道用户是否完成生成内容如果没有依据和状态记录后续复盘、审计和风险控制都会变得困难。本文从业务问题拆解和工程落地角度分析个人健康助手如何围绕 App、通知、Timeline、规则引擎和 Agent 编排形成闭环。本文只讨论产品架构与工程实现不提供诊断、治疗、分诊、疗效判断或用药建议。文中出现的提醒规则、阈值、任务流程均为技术示例真实项目需要结合合规要求、专业审核和具体业务场景确认。1. 业务问题健康助手为什么难以形成高频使用个人健康管理覆盖的内容很多例如睡眠、运动、饮食、体重、体检摘要、复查提醒、家庭照护记录等。但这些需求通常不是“每天主动打开 App 提问”而是分散在不同时间点用户早上可能记录睡眠午后可能收到饮水、运动或日程提醒一段时间后可能想看趋势复查前可能需要整理最近记录家庭成员照护场景下还可能需要多人协同查看任务状态。如果健康助手只提供一个聊天入口容易遇到三个工程问题。1.1 缺少持续触发机制用户完成一次问答后系统不知道下一次应该在什么时间、基于什么事件再次触达。例如用户记录了一次睡眠但系统没有任务表、提醒表和反馈表就无法判断是否需要晚间复盘也无法根据用户行为调整提醒频率。1.2 回答缺少可追溯依据如果模型直接根据对话生成内容后续很难确认它引用了哪些记录、哪些规则和哪些用户授权数据。在健康相关场景中可追溯性不仅影响体验也影响风控、客诉处理和内容审核。1.3 建议无法进入任务状态生成一段文本后如果没有确认、提醒、完成、忽略、撤回等状态系统无法判断这次交互是否产生了实际闭环。因此个人健康助手的工程重点不应只放在大模型问答上而应先建立长期运行的事件系统。2. 系统边界能做健康管理辅助不能替代医疗判断在设计这类系统时边界需要先于功能确定。面向消费者的健康助手可以围绕“记录、提醒、整理、复盘”展开但不应在缺少资质、审核和责任机制的情况下输出医疗结论。一个较稳妥的能力分层如下。2.1 记录层负责接收用户输入、设备同步、日历任务、手动打卡、文件摘要等数据。典型功能包括睡眠时长记录体重变化记录运动完成情况饮食备注复查日期提醒用户自行上传资料的结构化整理。2.2 理解层负责把自然语言、表单和设备数据转换成统一事件。例如“昨晚睡了 6 个小时中间醒了两次”可以被转成睡眠记录事件“下周三复查”可以被转成日历提醒事件“最近想整理一下体检项目”可以被转成资料整理任务。这里的重点是结构化不是直接下结论。2.3 行动层负责把事件转成可执行任务例如提醒用户补充记录生成一段趋势摘要整理待确认问题清单生成复查前资料清单将任务写入日历或待办系统。2.4 安全层负责处理内容边界、权限校验、人工确认、日志审计和风险拦截。工程上可以把能力划分为允许记录、提醒、趋势展示、资料整理、用户问题清单生成谨慎处理基于规则的异常信息标记、需要人工确认的内容、用户上传资料的摘要不直接输出诊断结论、治疗方案、用药调整、疗效承诺、替代就医建议。这种边界划分可以让系统职责更清晰也便于后续接入内容审核、合规评估和权限控制。3. 架构设计高频入口依赖事件闭环个人健康助手可以从以下几个核心模块开始设计Consumer AppEvent CollectorUser Health TimelineRule EngineContext IndexNotification SchedulerLLM Context BuilderAssistant ResponseUser ActionAnalytics Feedback这套架构里有两个关键设计点。3.1 Timeline 是主存储不是聊天记录健康类交互最终应尽量落到时间线上而不是只保存在对话历史里。时间线需要记录事件类型发生时间数据来源用户确认状态置信度是否属于敏感信息是否触发过提醒后续任务是否完成。聊天记录可以作为交互材料保存但不应成为唯一事实来源。对于设备同步、用户手动输入、文件解析等不同来源的数据也需要保留来源字段避免后续把“模型推断结果”误当成“用户确认事实”。3.2 通知系统需要写回反馈通知不是简单推送一条消息。对健康助手来说通知系统至少要记录为什么触发触发依据是什么用户是否打开用户是否完成用户是否忽略用户是否关闭该类提醒下次是否需要调整频率。如果通知没有反馈写回系统就无法判断“提醒是否有效”也无法做个性化调度。4. 数据模型用事件和任务承载长期状态一个简化的健康事件可以这样表示{user_id:u_1001,event_id:evt_20260601_001,event_type:sleep_record,source:manual_input,occurred_at:2026-06-01T07:30:0008:00,payload:{sleep_hours:6.5,note:昨晚醒了两次},confidence:0.9,status:user_confirmed,medical_boundary:wellness_tracking}这个结构主要解决三个问题。第一数据来源可追踪。系统需要知道数据来自用户手动输入、设备同步还是文件解析。第二用户确认状态可追踪。自动解析的数据不应默认等同于事实应保留待确认状态。第三内容边界可追踪。例如medical_boundary字段可以标记事件属于日常健康记录、资料整理还是需要更严格审核的场景。任务表可以单独设计{task_id:task_20260601_001,user_id:u_1001,task_type:review_sleep_record,created_from_event:evt_20260601_001,status:pending_user_confirm,scheduled_at:2026-06-01T20:30:0008:00,last_action:null}事件表负责记录事实任务表负责记录行动状态。两者分离后后续做提醒、撤回、统计和审计都会更清晰。5. 上下文记忆不要把所有内容直接塞进向量库如果系统接入向量检索不建议把全部用户数据无差别写入向量库。更稳妥的做法是分层管理。可以拆成四类索引事件摘要索引用于召回近期记录例如最近一周的睡眠、运动、体重变化。用户偏好索引记录用户的提醒时间、语言偏好、是否接受某类通知。长期目标索引例如用户自己设置的习惯目标或周期性任务。反馈索引记录用户对提醒的忽略、完成、关闭、修改等行为。但事实判断不应只依赖向量召回。比较稳妥的方式是向量库负责召回可能相关的上下文结构化数据库负责提供可核对事实规则引擎负责控制触发条件LLM 负责把结果组织成易读表达安全层负责拦截越界内容。在实现上还需要注意索引内容的最小化。例如睡眠复盘只需要召回睡眠时长、用户备注、提醒反馈等字段就不应默认拉取用户上传的所有资料。健康相关数据越集中权限边界、脱敏策略和审计记录越重要。6. 示例代码可配置提醒规则引擎下面是一个最小化的 Python 示例用于演示“事件进入规则引擎再生成待确认提醒”的流程。该示例不代表医学建议。阈值、触发条件和消息文案均为工程演示真实项目需要按照业务规范和专业审核确定。fromdataclassesimportdataclassfromdatetimeimportdatetimefromtypingimportDict,OptionaldataclassclassHealthEvent:user_id:strevent_type:stroccurred_at:datetime payload:Dict status:strdataclassclassReminder:user_id:strtitle:strmessage:strreason:strrequire_user_confirm:boolTrueclassRuleEngine:def__init__(self,config:Dict):self.configconfigdefevaluate_sleep_event(self,event:HealthEvent)-Optional[Reminder]:ifevent.event_type!sleep_record:returnNoneifevent.status!user_confirmed:returnNonesleep_hoursevent.payload.get(sleep_hours)ifsleep_hoursisNone:returnNonemin_sleep_hoursself.config.get(example_min_sleep_hours,6)ifsleep_hoursmin_sleep_hours:returnReminder(user_idevent.user_id,title睡眠记录复盘提醒,message(你记录的睡眠时长低于当前配置值。可以补充记录影响因素便于后续查看趋势。),reasonexample_rule_sleep_hours_below_config,require_user_confirmTrue)returnNoneif__name____main__:engineRuleEngine(config{example_min_sleep_hours:6})eventHealthEvent(user_idu_1001,event_typesleep_record,occurred_atdatetime.now(),payload{sleep_hours:5.5},statususer_confirmed)reminderengine.evaluate_sleep_event(event)ifreminder:print(reminder)这个例子里没有设计“风险等级”“疾病判断”或“处理建议”。它只做三件事判断事件类型校验用户确认状态根据配置生成复盘提醒。对于消费级健康助手这类提醒可以引导用户补充信息、查看趋势或整理问题清单但不应直接替代专业判断。7. 通知系统高频不等于高打扰个人健康助手如果想承载高频使用通知系统必须具备细粒度控制能力。至少需要支持以下能力通知类型配置用户级频控静默时段重复提醒合并忽略次数统计用户主动关闭某类提醒触达结果回写灰度实验文案版本记录。一个简单的通知调度结构可以这样设计{notification_id:noti_20260601_001,user_id:u_1001,task_id:task_20260601_001,channel:app_push,template_id:sleep_review_v1,scheduled_at:2026-06-01T20:30:0008:00,send_status:pending,frequency_control:{daily_limit:2,quiet_hours:[22:30,07:30]}}通知触达后还需要写回行为数据{notification_id:noti_20260601_001,user_action:opened,acted_at:2026-06-01T20:42:0008:00,follow_up_status:record_updated}高频入口不是增加推送数量而是让触达更接近用户当前任务并且允许用户随时调整。通知系统还应处理失败和撤回场景推送失败后是否重试用户关闭权限后是否改为站内提醒规则变更后是否撤回待发送任务用户删除相关记录后是否同步取消提醒触达文案是否保留版本号便于后续审计。8. Agent 的位置放在任务编排层更可控在个人健康助手中Agent 不适合一开始就拥有过多自主操作权限。更可控的做法是把 Agent 放在任务编排层让它负责整理、生成候选动作再经过规则、权限和用户确认。例如“整理复查前资料”可以拆成以下步骤读取用户授权范围内的近期记录汇总用户主动标记的问题按时间线生成摘要标记缺失信息生成待用户确认的资料清单用户确认后导出或保存。在这个流程中Agent 的职责是降低资料整理成本而不是给出诊断或治疗判断。每一步都应保留输入来源生成时间模型版本规则版本用户确认状态导出记录撤回记录。这样后续出现内容争议时系统可以追溯“这段摘要从哪里来、经过了哪些规则、用户是否确认”。Agent 编排层建议采用“候选动作 用户确认”的方式候选摘要允许用户编辑后保存候选提醒允许用户确认、延后、关闭候选资料清单允许用户勾选导出范围候选问题清单只作为用户整理材料使用不替代专业判断候选任务写入待办前需要明确授权。9. 指标设计用闭环数据评估产品是否可持续如果只看单次问答满意度很难判断健康助手是否能长期使用。更适合的指标包括7 日内有效触达次数用户主动记录频次提醒打开率提醒完成率提醒忽略率某类提醒关闭率生成内容被用户编辑比例生成内容被撤回比例安全拦截次数需要人工确认的任务比例任务从创建到完成的平均时长。这些指标可以帮助团队判断哪些提醒确实有用哪些触达造成打扰哪些内容生成不稳定哪些场景需要更强规则约束哪些任务适合继续自动化。指标设计也要避免诱导系统过度触达。例如提醒打开率升高不一定代表体验变好可能只是推送频率过高。需要结合忽略率、关闭率、投诉反馈、任务完成率一起看。10. 原型落地建议先做单场景闭环如果要做一个可验证的原型不建议一开始覆盖所有健康场景。可以先选择一个边界清晰、数据结构简单、医疗风险较低的场景。例如睡眠记录复盘体重趋势记录运动打卡提醒复查资料整理家庭照护待办提醒。以“睡眠记录复盘”为例最小闭环可以包括用户手动记录睡眠系统写入 Timeline规则引擎判断是否需要复盘提醒通知系统按频控发送用户打开后补充影响因素系统更新事件和任务状态后续生成趋势摘要用户查看摘要并确认是否保存系统记录摘要版本、引用事件和生成时间用户可以编辑、删除或撤回该摘要系统根据用户反馈调整后续提醒频率运营或审核侧可以查看脱敏后的规则命中和触达效果。这个闭环里睡眠数据不用于诊断也不输出治疗建议只用于记录、复盘、趋势展示和提醒调度。一个可落地的最小版本可以只保留四张核心表health_event记录用户确认过的睡眠事件health_task记录复盘任务状态notification_log记录提醒触达和反馈assistant_output记录摘要内容、引用来源和用户确认状态。这样可以在较小范围内验证以下问题用户是否愿意持续记录提醒频率是否合适摘要是否需要频繁编辑哪些字段对复盘有帮助哪些触达会造成打扰安全拦截和用户撤回是否能正常工作。流程跑通后再扩展到体重趋势、运动打卡、资料整理等场景会比一开始做全量健康助手更可控。11. 数据隐私与审计健康数据要按敏感信息处理健康相关数据通常包含较强个人属性工程设计中需要把隐私保护放在基础能力层而不是上线前补一个弹窗。可以从以下几个方面处理。11.1 用户授权系统需要明确区分不同数据的授权范围手动输入数据设备同步数据日历或待办数据用户上传文件家庭成员共享数据通知触达和行为反馈数据。授权粒度建议尽量贴近功能而不是一次性获取所有权限。例如用户只使用睡眠记录复盘就不应默认授权读取运动、饮食或上传资料。11.2 数据最小化功能需要什么字段就采集什么字段。睡眠复盘场景可能只需要睡眠时长、入睡时间、醒来次数、用户备注和提醒反馈不一定需要采集更宽泛的健康资料。对于 LLM 调用也应控制上下文范围不传入无关历史记录不传入未授权资料对展示无必要的身份信息做脱敏对模型输出保留引用来源避免生成内容和原始事实混淆。11.3 日志审计日志不只记录接口成功或失败还需要记录关键业务动作谁访问了哪些数据使用了什么授权范围哪条规则触发了提醒哪个模型版本生成了摘要用户是否确认、编辑、删除或撤回管理后台是否查看过敏感记录。审计日志需要防篡改、可查询并设置合理的保留周期。对于调试日志要避免把完整健康记录、身份证明信息、联系方式等敏感内容直接写入普通日志。11.4 权限与隔离家庭照护、多人协作、运营审核等场景需要特别注意权限隔离。常见控制点包括用户本人、家庭成员、运营人员、审核人员使用不同角色家庭成员只能查看被授权范围内的数据后台查看敏感数据需要二次确认或工单记录导出文件需要记录导出人、导出时间和导出范围用户撤回授权后后续任务和提醒需要同步停止或降级。总结个人健康助手要成为稳定入口关键不只是模型问答能力而是事件、任务、通知、上下文和安全边界能否形成可追溯闭环。从工程落地看可以优先建设五个基础能力以 Timeline 为核心的事件模型可配置、可审计的规则引擎支持频控和反馈写回的通知系统分层管理的上下文记忆有权限、有日志、有用户确认的 Agent 编排。在医疗健康相关场景中系统边界需要持续约束产品形态。把记录、提醒、资料整理和复盘做好同时明确不替代专业医疗判断更有利于长期迭代、用户信任和工程风险控制。本文文献检索、文献挖掘以及文献翻译采用的是【超能文献| AI文献检索|AI文档翻译】。