初中生做了一个学习 App|StudyPulse|AI 分析|追踪身体状态|【 iOS SwiftUI HealthKit 】

0 阅读13分钟

StudyPulse-7ad0187版本海报.001.jpeg

项目地址:github.com/Gao-Chenkai…

从一个学生的需求开始

我是一名学生,也是一名独立开发者。

在平时学习过程中,我一直有一个困惑:为什么我们每天花大量时间学习,却很难真正知道自己的学习状态?

我们会记录错题,会制定计划,会使用各种学习工具,但很多时候,这些工具只是帮助我们“记录过去”,却无法帮助我们“决定未来”。

错题越来越多,却不知道哪些值得优先复习;Todo 列了一大堆,却不知道今天到底应该完成什么;学习时间记录了很久,却不知道这些努力有没有带来实际提升。

作为一个每天都在面对这些问题的学生,我开始思考:

如果我自己做一个学习 App,它应该是什么样?

于是,StudyPulse 诞生了。


从想法到一个真正运行的 App

StudyPulse 并不是一个为了练手而制作的小项目。

从最初的想法,到设计界面、规划功能、编写代码,整个过程都是我独立完成的。

我选择使用 Swift 和 SwiftUI 开发,因为我一直对 Apple 生态很感兴趣,自己也是 Apple 生态长久以来的全家桶用户,所以希望能够利用 iPhone、Apple Watch 以及系统提供的能力,打造一个更加贴近学生日常生活的工具。

开发过程中,我不断思考一个问题:

学习 App 到底应该解决什么?

如果只是添加一个 Todo 列表,市面上已经有很多优秀的产品。

如果只是记录学习时间,也有大量工具可以做到。

真正困难的是:

如何让这些数据产生价值?


StudyPulse 想解决的问题

传统学习工具更多关注:

“你完成了吗?”

而 StudyPulse 更希望关注:

“你现在应该做什么?”

StudyPulse-7ad0187版本海报.001.jpeg

学习状态每天都在变化。

有时候:

  • 睡眠不足导致效率下降;
  • 临近考试任务突然增加;
  • 某些知识点即将遗忘;
  • 某个科目长期没有提升。

一个固定计划并不能适应所有情况。

因此,StudyPulse 通过学习数据、健康数据以及 AI 技术,让学习计划更加动态。


它现在有哪些功能?

将身体状态融入学习管理

StudyPulse-7ad0187版本海报.001.jpeg

在开发 StudyPulse 的过程中,最让我感到有价值、也是我耗费最多时间探索的方向,是将身体状态数据与学习过程结合1

很多学习工具默认一个前提:用户每天都有相同的精力,只要安排好时间,就一定能够完成计划。但现实并不是这样。同样学习两个小时,有些时候效率很高,有些时候却很难集中注意力,而这种差异往往来自学习之外的因素,例如睡眠质量、身体状态和长期疲劳。

因此,StudyPulse 尝试利用 Apple 生态中的健康能力,将学习记录和身体状态联系起来。通过结合 HealthKit 提供的数据,例如睡眠、心率变异性(HRV)2、活动情况等信息,帮助用户从另一个角度理解自己的学习表现。

例如,当用户发现某一天学习效率明显下降时,系统不仅关注“今天完成了多少任务”,还可以结合当天的身体状态,帮助用户分析可能的原因;当用户长期处于疲劳状态时,也可以提醒用户调整学习安排,而不是简单地要求完成更多任务。

我认为,未来的学习工具不应该只关注用户投入了多少时间,更应该关注用户是否处于适合学习的状态。真正智能的学习系统,不应该让学生不断适应固定计划,而应该理解学生每天的变化,并根据实际情况提供更加合理的建议。

这也是 StudyPulse 与传统学习管理工具最大的不同之一:它尝试连接“学习数据”和“人的状态”,让学习管理从单纯的任务记录,变成一个更加完整的个人成长系统。


学习准备度分析

StudyPulse 可以记录学习任务、课程进度、考试成绩等信息,并通过趋势分析帮助用户了解自己的学习变化3

相比简单记录完成情况,它更关注:

这些学习行为有没有帮助你进步?

压力值

除 HRV 外,归一化分数按照阈值转换为压力值:

stress(s)={+1,s<0.340,0.34s<0.701,s0.70stress(s)= \begin{cases} +1, & s<0.34 \\ 0, & 0.34\leq s<0.70 \\ -1, & s\geq0.70 \end{cases}

含义是:

  • +1:增加压力
  • 0:中性
  • -1:恢复或表现良好

HRV 直接按类别映射:

stressHRV={1,excellent0,normal+1,lowstress_{HRV}= \begin{cases} -1, & \text{excellent} \\ 0, & \text{normal} \\ +1, & \text{low} \end{cases}

运动额外采用规则:30~120 分钟视为减压,超过 120 分钟视为过度运动,低于 30 分钟保持中性。

学习强度决策

HRV 较低时,最低只能安排轻量学习:

>Intensity={Recovery,StressHRV1Stresstotal3Light,StressHRV1Stresstotal<3Peak,StressHRV0Stresstotal3DeepFocus,Stresstotal1Steady,Stresstotal=0Light,1Stresstotal2Recovery,Stresstotal>2 > Intensity= \begin{cases} Recovery, & Stress_{HRV}\geq1 \land Stress_{total}\geq3 \\ Light, & Stress_{HRV}\geq1 \land Stress_{total}<3 \\ Peak, & Stress_{HRV}\leq0 \land Stress_{total}\leq-3 \\ DeepFocus, & Stress_{total}\leq-1 \\ Steady, & Stress_{total}=0 \\ Light, & 1\leq Stress_{total}\leq2 \\ Recovery, & Stress_{total}>2 \end{cases}

详细文档:github.com/GaoChenkai/…


智能错题管理

很多学生都有错题本,但最大的问题是:

整理容易,坚持复习困难。

StudyPulse 希望让错题不只是一个收藏夹,而是一个可以主动提醒你的系统。

StudyPulse 通过遗忘规律,为每道错题估算记忆周期(SM-2 间隔重复)4,在可能遗忘之前安排复习。

SM-2 间隔重复算法:

下一次复习日期

下一次复习日期以当天零点为基准,加上最终间隔,并统一安排在上午 9:00:

D=StartOfDay(now)+I 天+09:00D' = \operatorname{StartOfDay}(now) + I''\text{ 天} + 09{:}00

这样可以避免用户在深夜完成复习后收到深夜提醒。

队列与统计

只有 nextReviewDate <= now 且已经加入 SRS 的错题才属于到期错题:

Due={mm.reviewStatenilm.nextReviewDatenow}\text{Due} = \{m \mid m.reviewState \neq nil \land m.nextReviewDate \leq now\}

系统同时统计未来 7 天内到期的错题,提供 SRS 总览。

详细文档:github.com/GaoChenkai/…


AI 智能自测

StudyPulse-7ad0187版本海报.001.jpeg

StudyPulse 中另一个让我非常重视的方向,是 AI 智能自测系统5。传统学习方式中,学生通常需要等到一次考试结束后,才能知道自己哪些知识点掌握不足。但在这个过程中,很多问题可能已经积累了很久,直到考试失分后才被发现。

因此,StudyPulse 希望利用 AI 改变这种被动反馈模式。通过结合用户平时记录的学习数据、课程内容、错题情况以及掌握程度,AI 可以帮助学生生成更加个性化的自测内容,让检测学习效果成为日常学习的一部分。

与传统题库随机抽题不同,StudyPulse 的 AI 智能自测更关注“为什么测试”。它可以根据用户近期的学习情况,主动发现可能存在薄弱的知识点,并生成针对性的练习。例如,如果某个知识点近期出现多次错误,或者长时间没有进行复习,系统可以优先安排相关测试,帮助用户及时发现遗忘和理解不足的问题。

同时,AI 自测不仅关注答案是否正确,也关注学习过程中的反馈。通过分析用户的答题情况,系统可以进一步帮助用户了解:

  • 哪些知识点已经掌握;
  • 哪些内容仍然存在漏洞;
  • 哪些错误属于概念理解问题;
  • 下一步应该如何复习。

AI 智能导图

StudyPulse-7ad0187版本海报.001.jpeg

在学习过程中,我发现很多学生并不是没有学习内容,而是缺少将零散知识连接起来的能力。课本上的章节、课堂笔记、错题记录往往都是独立存在的,但真正理解一个知识点,需要建立完整的知识网络。

因此,StudyPulse 加入了 AI 智能导图功能6,利用人工智能帮助学生自动整理和构建知识体系。

传统思维导图通常需要学生手动创建结构,将重点内容一个个整理进去。这种方式虽然有效,但成本较高,很多学生在学习压力较大的情况下很难长期坚持。AI 智能导图降低了整理成本,让学生可以快速将学习内容转化为结构化知识。

例如,用户输入一章数学知识、一段课堂笔记,或者上传学习资料后,AI 可以帮助提取其中的重要概念,分析知识之间的关联,并生成对应的知识结构图。学生不仅可以看到“有哪些知识点”,还可以看到它们之间的关系,例如基础概念、核心公式、常见错误以及实际应用。

同时,StudyPulse 将智能导图与学习数据结合,而不是单纯生成一张漂亮的图。导图中的知识节点可以关联:

  • 用户的错题记录;
  • 掌握程度;
  • 最近复习时间;
  • 考试中的表现。

这样,一张知识导图不仅是学习笔记,更可以成为一个动态变化的知识地图。当某个知识点长期出错时,系统可以在导图中突出显示,提醒用户重点复习;当某个模块已经掌握后,也可以逐渐形成更加完整的知识体系。


考试成绩分析

StudyPulse-7ad0187版本海报.001.jpeg

一次考试不应该只是一个分数。

通过长期记录每次考试的原卷,StudyPulse 希望帮助学生看到:

自己的优势在哪里,薄弱点在哪里,以及学习方法是否有效。


AI Coach (Beta)

StudyPulse-7ad0187版本海报.001.jpeg

我认为 AI 在教育中的价值,并不是替学生完成作业,也不是简单地提供一个“提问—回答”的工具。真正有价值的方向,是让 AI 能够理解学生长期的学习过程,成为一个了解用户、分析问题并提供反馈的智能学习伙伴。

基于这个理念,StudyPulse 实现了 AI Coach7 功能。它不会只根据用户当前输入的问题进行回答,而是结合用户长期积累的学习数据,包括学习记录、考试成绩、错题情况、学习目标以及身体数据变化,建立更加完整的学习状态画像。

例如,当用户向 AI Coach 咨询近期学习情况时,它不仅可以看到当前的问题,还能够结合历史数据进行分析。如果发现某个科目近期成绩下降、相关错题数量增加,同时用户近期睡眠质量下降、学习状态波动明显,AI Coach 可以从多个维度分析可能原因,并提供更加符合实际情况的建议。

相比传统 AI 助手,StudyPulse 中的 AI Coach 更关注“这个学生是谁”和“他正在经历什么”。它能够理解用户过去的学习轨迹,知道哪些知识点曾经反复出错,了解哪些学习方法曾经有效,并根据当前阶段的目标提供个性化反馈。

例如,在考试临近时,AI Coach 可以根据用户近期考试数据和复习进度,帮助分析当前最需要投入时间的方向;当学习状态出现变化时,它可以结合身体数据波动,提醒用户适当调整学习节奏,而不是简单建议增加学习时间。

StudyPulse 的 AI Coach 正是在探索这样一种可能:让 AI 从一个回答问题的工具,变成一个真正理解学生学习过程的智能助手。


为什么选择开源?

作为一个学生开发者,我希望这个项目不仅停留在自己的电脑里。

学习工具本身就是一个需要不断交流的领域。

不同学生有不同需求:

有人需要更好的错题系统;

有人需要更智能的计划;

有人希望通过数据了解自己。

所以我选择把 StudyPulse 开源,希望能够听到更多人的反馈。


写在最后

开发 StudyPulse 的过程让我发现:

做一个 App,最难的不是写代码。

真正困难的是找到一个值得解决的问题。

作为一名学生,我每天都在使用自己开发的产品,也会不断发现新的问题。

StudyPulse 可能还不完美,但它代表了一个学生开发者对于未来学习方式的一次探索。

如果未来有一天,一个学习工具真的能够理解学生,而不是让学生适应工具,我希望 StudyPulse 能成为其中的一部分。

项目地址:

github.com/Gao-Chenkai…

欢迎 Star ⭐,也欢迎提出建议。


技术参考


StudyPulse 遵循 Apple 生态的数据隐私理念。健康数据属于高度敏感信息,相关数据访问需要经过用户明确授权。应用不会在未经允许的情况下读取或使用用户健康数据。

StudyPulse 开源的目的不仅是分享代码,也是希望和更多学生、开发者一起探索 AI 与教育结合的可能性。如果你发现功能问题、算法优化方向或者有新的想法,欢迎通过 GitHub Issue 进行交流。


Footnotes

  1. StudyPulse 的身体状态分析主要基于 Apple HealthKit 提供的数据。用户授权后,应用可以读取相关健康指标,并经过归一化处理,用于评估当前学习准备度(Study Readiness)。该功能并非医疗诊断工具,而是帮助用户从日常数据中更好地理解自己的学习状态。

  2.  关于 HRV(心率变异性)
    HRV(Heart Rate Variability,心率变异性)反映连续心跳之间时间间隔的变化情况,通常被用于观察恢复状态和压力水平趋势。StudyPulse 使用 HRV 作为学习准备度分析中的参考指标之一,并结合其他数据综合判断,而不是单独根据某一个指标做决定。

  3. StudyPulse 的学习准备度(Study Readiness)并不是简单地计算学习时间,而是综合考虑身体状态、压力水平、任务负荷等多个因素,通过规则模型生成当前推荐学习强度。

  4.  关于 SM-2 间隔重复算法
    StudyPulse 的错题复习系统参考了 SuperMemo SM-2 间隔重复算法。该算法通过用户每次复习后的反馈调整下一次复习时间,使高频错误内容得到更多关注,而已经掌握的内容逐渐降低复习频率。

  5.  关于 AI 智能自测
    AI 智能自测并不是简单随机生成题目,而是结合用户已有的学习数据,例如错题记录、知识点掌握情况以及近期学习内容,生成更符合当前学习阶段的测试内容。AI 生成内容仍需要用户结合实际教材和考试要求进行判断。

  6.  关于 AI 智能导图
    AI 智能导图的目标不是替代学生整理笔记,而是降低知识结构化的成本。系统通过大语言模型分析输入内容,提取关键概念和关联关系,帮助用户快速建立知识框架。大语言模型并不会每次都获取所有的历史错题,而是在原有导图上进行更改(更改存储在本地)。

  7.  关于 AI Coach
    AI Coach 已经上线 Beta 版本。它通过结合用户在 StudyPulse 中产生的数据,为用户提供个性化学习建议。由于学习过程具有高度个体差异,AI 提供的建议主要作为辅助参考,而不是替代教师或专业指导。