健康管理助手:基于 HarmonyOS ArkTS 的 AI 健康顾问开发实践
健康管理助手:基于 HarmonyOS ArkTS 的 AI 健康顾问开发实践
本文基于 HarmonyOS 6.0 + ArkTS + DevEco Studio,从零构建一个覆盖六大健康场景的 AI 对话应用。涵盖 @Entry/@Component/@Builder 声明式 UI、@State 响应式状态管理、router 多页面导航、三层架构设计,以及 AI 健康建议的体系化生成策略,适合鸿蒙应用开发者参考。

一、项目背景
“熬最深的夜,敷最贵的面膜”——当代年轻人的健康焦虑并非空穴来风。饮食不规律、久坐不动、睡眠不足、压力过大,这些"现代病"困扰着越来越多人。然而,健康管理不是一朝一夕的事,而是每天的小选择累积的结果。
本项目基于 HarmonyOS 6.0 平台,构建了一个 「健康管理助手」 AI 对话应用。应用集成了六大健康话题——饮食建议、运动计划、睡眠改善、压力管理、体检解读、习惯养成——每个话题都基于医学和营养学共识,提供科学、可执行的健康方案。
鸿蒙特色亮点:
@Entry+@Component+@Builder声明式组件化 UI@State响应式状态驱动 UI 自动刷新router.pushUrl实现首页卡片到聊天页的无缝导航ForEach+Scroll高性能渲染消息列表
二、核心架构
2.1 三层架构
entry/src/main/ets/
├── models/
│ └── JiankangModel.ets # 数据模型:消息、话题、健康档案
├── services/
│ └── JiankangService.ets # 业务服务:AI 回复、关键词匹配
└── pages/
└── JiankangPage.ets # UI 页面:聊天界面、话题栏、输入区
2.2 鸿蒙 ArkTS 装饰器速查
| 装饰器 | 作用 | 本应用中的使用 |
|---|---|---|
@Entry |
页面入口标记 | JiankangPage 作为独立路由页面 |
@Component |
自定义组件声明 | 所有 struct 结构体 |
@State |
响应式状态 | messages、inputText、isLoading、selectedTopic |
@Builder |
UI 构建器方法 | buildHeader()、buildTopicBar()、buildMessageBubble() 等 |
2.3 数据模型(JiankangModel.ets)
export enum MessageRole { USER = 'user', ASSISTANT = 'assistant' }
export enum JiankangTopic {
DIET = '饮食建议', EXERCISE = '运动计划', SLEEP = '睡眠改善',
STRESS = '压力管理', CHECKUP = '体检解读', HABIT = '习惯养成'
}
export class ChatMessage {
role: MessageRole; content: string; timestamp: number
constructor(role: MessageRole, content: string) {
this.role = role; this.content = content; this.timestamp = Date.now()
}
}
export class HealthProfile {
age: number; gender: string; height: number; weight: number
activityLevel: string; sleepHours: number; goals: string[]
// 为个性化推荐预留的数据结构
}
设计亮点: HealthProfile 类包含年龄、性别、身高、体重、运动水平、睡眠时长、健康目标,为后续的个性化推荐、BMI 计算、进度追踪提供了数据基础。
三、AI 服务层:六大健康话题
3.1 系统提示词设计
private systemPrompt: string =
'你是一个健康管理专家,精通营养学、运动科学、睡眠医学、心理健康等领域的知识。\n\n' +
'回答原则:\n' +
'- 科学性:基于医学和营养学共识,不推荐极端方法\n' +
'- 个性化:根据用户的年龄、性别、身体状况定制建议\n' +
'- 可执行:给出具体可操作的行动方案\n' +
'- 安全性:涉及疾病时提醒就医,不做医疗诊断'
3.2 六大话题内容结构
| 话题 | 核心方法论 | 可量化目标 |
|---|---|---|
| 饮食建议 | 211 饮食法 | 第1周:每天吃够5种颜色食物 |
| 运动计划 | 运动金字塔 + 四周渐进 | 第4周:完成一次5公里跑 |
| 睡眠改善 | R90 睡眠周期法 | 第3周:实现5个睡眠周期(7.5h) |
| 压力管理 | 4-7-8 呼吸法 + 感官锚定 | 第1周:每天做1次呼吸法 |
| 体检解读 | 关键指标正常范围 | 标记异常指标,对比3年趋势 |
| 习惯养成 | 提示-行为-奖励循环 | 21天后:每天打卡3个习惯 |
每个话题的回复遵循"核心原理 → 具体步骤 → 可量化目标"三层结构,并包含安全声明(体检解读标注"仅供参考,不能替代医生诊断")。
四、鸿蒙 UI 组件化实现
4.1 组件树
JiankangPage (主页面)
├── buildHeader() # 标题栏:🌿 + "健康管理助手"
├── buildTopicBar() # 横向滚动话题标签
├── Scroll + ForEach # 消息列表
│ ├── buildMessageBubble() # 消息气泡
│ └── buildLoadingBubble() # 加载中
└── buildInputArea() # 底部输入区
4.2 @State 驱动 UI 刷新
@State messages: ChatMessage[] = [] // 聊天记录 → ForEach 自动渲染
@State inputText: string = '' // 输入内容 → 发送按钮状态联动
@State isLoading: boolean = false // 加载状态 → 显示加载气泡
@State selectedTopic: string = '' // 选中话题 → 高亮切换
4.3 发送逻辑:异步模拟 + 滚动优化
private onSend(): void {
this.messages.push(new ChatMessage(MessageRole.USER, text))
this.inputText = ''; this.isLoading = true
setTimeout(() => { this.scroller.scrollEdge(Edge.Bottom) }, 200)
setTimeout(() => {
const reply = this.service.generateMockReply(text)
this.messages.push(reply)
this.isLoading = false
setTimeout(() => { this.scroller.scrollEdge(Edge.Bottom) }, 100)
}, 1500)
}
五、首页整合与路由导航
应用首页 [Index.ets](file:///c:/Users/l/DevEcoStudioProjects/MyApplication/entry/src/main/ets/pages/Index.ets) 通过 router.pushUrl 实现卡片点击跳转:
import { router } from '@kit.ArkUI'
.onClick(() => {
router.pushUrl({ url: 'pages/JiankangPage' })
})
路由注册在 [main_pages.json](file:///c:/Users/l/DevEcoStudioProjects/MyApplication/entry/src/main/resources/base/profile/main_pages.json):
{
"src": [
"pages/Index",
"pages/LvxingPage",
"pages/XuexiPage",
"pages/JiankangPage",
"pages/ShiCiChuangZuo"
]
}
六、绿色主题配色
| 用途 | 色值 | 语义 |
|---|---|---|
| 页面背景 | #F0FDF4 |
极浅绿色,干净清爽 |
| 主色调 | #16A34A |
标准绿色,代表健康、自然、生机 |
| 边框 | #BBF7D0 |
浅绿色,柔和分隔 |
| 强调色 | #EA580C |
橙色,与绿色形成对比,用于"清除"按钮 |
所有颜色定义为页面级 const 常量,独立于其他应用,互不干扰。
七、鸿蒙 + AI 核心亮点
亮点一:@State 响应式状态管理
ArkTS 的核心理念是"状态驱动 UI"。只需修改 @State 变量,框架自动触发 UI 重新渲染。4 个 @State 变量覆盖了消息列表、输入框、加载状态、选中态的完整交互闭环。
亮点二:@Builder 声明式组件化
@Builder 让 UI 逻辑从 build() 方法中抽离,每个 @Builder 方法对应一个独立 UI 区块。组件树结构清晰,新增功能只需添加新的 @Builder 方法。
亮点三:三层架构的跨项目复用
Model(数据定义)→ Service(业务逻辑)→ View(UI 渲染),职责清晰。同一套 UI 代码可复用于其他 AI 应用,只需替换 Service 和 Model。
亮点四:AI 回复的可量化目标设计
不是泛泛而谈的"多运动"“早睡觉”,而是给出分阶段、可衡量的目标。例如"第1周每天步行8000步 → 第2周每周运动3次 → 第4周完成5公里跑"。这种设计借鉴了行为心理学的"渐进式目标设定"理论。
亮点五:安全边界的责任声明
在体检解读模块中,明确标注"仅供参考,不能替代医生诊断"。作为健康类应用,设定正确的用户预期、避免误导用户将 AI 建议等同于医疗诊断,是产品设计中不可忽视的伦理问题。
亮点六:HealthProfile 扩展预留
数据模型中预留了 HealthProfile 类,为后续的个性化推荐、BMI 计算、进度追踪等功能提供了数据基础,无需重构现有代码。
八、总结
健康管理助手是 HarmonyOS ArkTS + AI 在健康领域的实践。核心经验:
- @State + @Builder 是 ArkTS 的核心范式:状态驱动 UI,声明式描述界面
- AI 回复需要"可量化":不是讲道理,而是给目标、给时间表、给数据
- 三层架构解耦:Model / Service / View 分离,降低维护成本
- router 路由整合:多 AI 应用共存于同一 App
- 安全边界不可忽视:健康类应用需要明确的责任声明
🌿 健康不是一朝一夕的事,而是每天的小选择累积的结果。希望这篇文章能为你的鸿蒙 AI 应用开发提供一些启发。
更多推荐

所有评论(0)