从 0 到可安装 iPhone App:我做了一个 AI 心理疗愈助手 MindHeal AI
这次挑战赛中,我完成了一个 iPhone App:MindHeal AI。它是一个面向情绪陪伴、心理疏导和正念练习的 AI 应用,目标不是替代专业心理咨询,而是在用户日常情绪波动、焦虑、压力较大时,提供一个温和、低门槛、随时可用的陪伴工具。
整个实践过程不仅包含 UI 设计、SwiftUI 开发、AI 接口接入,也包括真机打包、模拟器测试、隐私安全和交互细节优化。
一、项目目标
MindHeal AI 的核心目标是做一个“轻量但有温度”的 AI 心理陪伴工具。
主要功能包括:
-
AI 对话陪伴
用户可以像聊天一样表达情绪,AI 会以温和、共情的方式回应。 -
场景化疗愈
支持职场压力、亲密关系、社交焦虑、失眠情绪、自我内耗等不同场景。 -
紧急平复
当用户处在焦虑或情绪崩溃状态时,可以快速获得呼吸引导和稳定练习。 -
情绪记录
用户可以记录当下情绪,帮助自己观察情绪变化。 -
正念工具
包括呼吸练习和白噪音助眠等辅助疗愈工具。 -
多模型配置
支持 MiniMax、GPT、Claude、Gemini、豆包、通义千问等模型配置,当前已成功跑通 MiniMax API。
二、技术选型
这次项目主要使用:
-
SwiftUI:完成 iOS 原生界面开发
-
Xcode / iOS Simulator:进行构建和调试
-
MiniMax API:提供 AI 对话能力
-
Keychain:安全保存用户 API Key
-
UserDefaults:保存本地会话、情绪记录和配置
-
Supabase Swift:作为后续云同步和账户能力的基础
我选择 SwiftUI 是因为它非常适合快速构建 iOS 原生应用,尤其在响应式状态管理、弹窗、导航和组件复用方面效率很高。
三、UI 设计优化
项目初版 UI 偏深色、科技感较强,但心理疗愈类应用更需要轻松、舒适、柔和的氛围。因此我后续将整体风格调整为“小清新”方向。
主要调整包括:
-
色彩从深色科技风改为浅色疗愈风
使用浅绿、薄荷色、柔和白色作为主色调,减少视觉压迫感。 -
背景从强动画改为柔和渐变
避免过度炫技,让用户更容易沉浸在对话和情绪表达中。 -
卡片和按钮更轻盈
降低边框和阴影强度,让界面更干净。 -
聊天气泡更温和
用户消息使用清晰主色,AI 消息使用浅色卡片,整体更接近陪伴类产品。 -
修复浅色主题下可读性问题
例如模型选择页中部分文字颜色过浅,已统一调整为适合浅色背景的文本颜色。
四、核心功能实现
1. AI 对话
AI 对话的核心流程是:
用户输入内容
→ 本地保存用户消息
→ 调用 MiniMax Chat Completion 接口
→ 解析 AI 回复
→ 保存并展示 AI 消息
在测试中发现,MiniMax 的正确中国区 endpoint 是:
模型名使用:
MiniMax-M2.7
修正之后,API 测试成功,App 内也可以正常连接 AI。
2. 隐藏 think 内容
接入 AI 后发现,有些模型会在回答中输出 … 这类思考内容。对于用户来说,最终只需要看到自然、简洁的回复,不应该看到模型推理过程。
因此我在服务层做了统一清洗:
-
移除 …
-
移除 …
-
移除 think 代码块
-
只展示最终回答
同时也在系统提示词里明确要求模型不要输出思考过程。
3. API Key 安全存储
一开始 API Key 如果直接放在配置文件或 UserDefaults 中,会有安全风险。后续我改为使用 iOS Keychain 保存 API Key。
这样做的好处是:
-
API Key 不会明文保存在普通本地配置中
-
用户退出或清理配置时可以删除
-
更符合 iOS 安全实践
4. 场景化对话
原来点击场景后只是关闭弹窗,没有真正改变对话状态。后续我修复为:
选择场景
→ 创建对应场景会话
→ 自动生成场景引导语
→ 用户可以直接开始表达问题
例如选择“职场压力”后,App 会提示用户可以先说出当前最困扰的工作问题。
5. 紧急平复兜底
如果用户还没配置 AI 模型,点击“紧急平复”原本没有明显反馈。这个体验非常不好,因为紧急平复恰恰是高压力场景下最需要稳定反馈的功能。
我加入了本地兜底引导:
-
双脚踩地
-
4 秒吸气、2 秒停顿、6 秒呼气
-
说出眼前能看到的 3 样东西
-
如有自伤或伤害他人风险,立即联系真实的人和紧急服务
这样即使 AI 暂时不可用,App 也不会让用户无助地卡住。
五、测试过程中发现的问题
这次我没有只停留在“能编译”,而是实际用模拟器跑了一遍核心路径,发现并修复了多个问题。
主要问题包括:
-
App 初始黑屏
修复了 Info.plist 和 Bundle ID 相关配置问题。 -
未配置模型时发送消息无反馈
现在会显示明确系统提示。 -
场景选择没有实际效果
现在会创建场景对话并显示引导语。 -
呼吸练习弹窗白屏
原因是 SwiftUI sheet 状态竞争,已改为 sheet(item:)。 -
白噪音需要重复选择
现在点击白噪音卡片后会直接进入对应声音播放器。 -
模型选择页浅色主题文字不可见
已修复可读性。 -
MiniMax API 默认地址和模型名不匹配
已改为可用的中国区 endpoint 和模型名。 -
AI 返回 think 内容
已在服务层做统一清洗。
六、最终打包结果
项目最终已经成功构建并导出 iOS 安装包。
需要注意的是,iPhone 不能安装 Android 的 .apk,iOS 对应的是 .ipa。
本次导出的包为 development 签名包,可以用于开发者账号允许范围内的真机安装。
七、实践收获
这次实践最大的收获不是单点功能,而是完整跑通了一个 iOS AI App 从开发到可安装包的闭环:
-
从产品目标出发设计功能
-
用 SwiftUI 完成原生 App
-
接入真实 AI 模型 API
-
处理密钥安全和隐私问题
-
在模拟器中实际测试交互路径
-
根据测试结果修复体验问题
-
最终完成 iOS archive 和 ipa 导出
过程中也让我意识到,AI App 的关键不只是“能不能调用模型”,而是模型失败、网络异常、用户情绪敏感场景下,产品是否仍然有清晰、稳定、负责任的反馈。
八、总结
MindHeal AI 是一次完整的 AI 原生应用实践。它结合了心理陪伴场景、AI 对话能力、正念工具和 iOS 原生体验。
目前项目已经完成基础可用版本,后续还可以继续优化:
-
增加真实账户体系和云同步
-
完善情绪趋势图表
-
增加更专业的危机干预提示
-
支持更多模型的稳定适配
-
做真机长期体验测试
-
上架 TestFlight 或 App Store
这次挑战赛让我更完整地体验了一次从创意、开发、调试到打包交付的全过程。对我来说,MindHeal AI 不只是一个 Demo,而是一个真正可以继续打磨成产品的起点。