【OpenHarmony/HarmonyOs 】端侧 AI 与元服务能力集成:物理视界的智能学习助手设计

本文基于我的 OpenHarmony/HarmonyOS 项目「物理视界 PhysicsVision」整理。项目当前已经具备 28 个物理模型、物理公式计算器、知识挑战、收藏、最近浏览和成就系统。
这一篇重点讨论:在不破坏隐私边界的前提下,如何把端侧 AI、元服务能力、人脸识别开放能力等方向,设计成一个真正服务学习的智能助手。🤖

一、先说清楚:当前项目没有做人脸识别和云端 AI

为了避免误导,先说明项目现状:

  • 当前没有接入人脸识别;
  • 当前没有接入拍照识题;
  • 当前没有调用云端大模型;
  • 当前没有网络请求;
  • 当前的智能推荐主要来自本地学习状态。

这并不是缺点。对教育类 App 来说,本地优先是一种很稳的架构:低延迟、少权限、隐私压力小,也更容易离线使用。

本文会基于当前项目,设计几个可以逐步接入的方向:

  • 端侧 AI:学习推荐、错题解释、公式提示;
  • 元服务:把高频模型做成免安装轻量入口;
  • 人脸识别开放能力:只讨论可选登录/家长确认等边界场景;
  • 本地学习画像:利用已有收藏、浏览、挑战数据进行个性化。

二、当前项目已经有“端侧智能”的雏形

项目虽然没有接入 AI SDK,但已经有本地推荐逻辑。
例如实验室页会根据用户是否访问过模型,优先推荐未探索的基础模型:

getRecommended(): number[] {
  let result: number[] = []
  for (let i = 0; i < this.names.length; i++) {
    if (!this.isVisited(i) && this.difficulties[i] === '基础') {
      result.push(i)
      if (result.length >= 4) break
    }
  }
  if (result.length < 4) {
    for (let i = 0; i < this.names.length; i++) {
      if (!this.isVisited(i) && this.difficulties[i] === '进阶') {
        result.push(i)
        if (result.length >= 4) break
      }
    }
  }
  return result
}

这就是最朴素的端侧智能:

  • 数据在本地;
  • 规则可解释;
  • 不需要联网;
  • 不需要上传学习记录;
  • 推荐结果和学生当前进度相关。

未来如果接入端侧 AI,可以把这个逻辑升级为更细的学习路径规划。

三、学习画像:从收藏、浏览、挑战中提取信号

项目中有四类关键学习状态:

PersistentStorage.persistProp('favorites', '')
PersistentStorage.persistProp('highScore', 0)
PersistentStorage.persistProp('totalPlayed', 0)
PersistentStorage.persistProp('visitedModels', '')

这些状态可以形成一个轻量学习画像:

数据 可以推断什么
收藏模型 用户认为重要或薄弱的知识点
最近浏览 用户当前学习主题
已探索数量 学习覆盖度
挑战次数 练习频率
最高正确率 掌握程度
题目分类 薄弱学科方向

注意,这些数据不需要实名,也不需要上传云端。端侧 AI 可以直接在本机利用这些信号做推荐。

四、端侧 AI 方向一:个性化模型推荐

当前项目的推荐规则是“未探索 + 基础优先”。如果加入端侧 AI,可以进一步考虑:

  • 用户收藏了很多电磁学模型,说明近期关注电磁学;
  • 用户挑战正确率低,优先推荐基础模型;
  • 用户访问了“光的干涉”,可以推荐“凸透镜成像”“光的反射”;
  • 用户很久没做挑战,可以推荐 5 道轻量复习题。

示例设计:

interface LearningProfile {
  favoriteCount: number
  visitedCount: number
  highScore: number
  totalPlayed: number
  recentCategories: string[]
}

interface ModelRecommendation {
  modelIndex: number
  reason: string
}

推荐结果不只是“给你一个模型”,还要告诉用户为什么:

  • “你最近学习了光学,建议继续观察凸透镜成像。”
  • “你的挑战正确率还不高,先从基础力学模型开始。”
  • “你收藏了电磁学内容,可以复习库仑定律和电场线分布。”

这种解释比黑盒推荐更适合教育场景。

五、端侧 AI 方向二:公式计算器智能提示

项目中的物理公式计算器已经结构化定义了公式、输入项和计算函数:

{
  name: '牛顿第二定律',
  formula: 'F = m · a',
  inputs: [
    { label: '质量 (m)', unit: 'kg', defaultValue: '1.0' },
    { label: '加速度 (a)', unit: 'm/s²', defaultValue: '9.8' }
  ],
  calculate: (v) => `合外力 F = ${(v[0] * v[1]).toFixed(2)} N`
}

计算时会校验输入并即时输出结果:

doCalculate() {
  const calc = this.calculators[this.selectedIndex]
  const nums: number[] = []
  for (let i = 0; i < calc.inputs.length; i++) {
    const val = parseFloat(this.inputValues[i])
    if (isNaN(val)) {
      this.result = '请输入有效数值'
      return
    }
    nums.push(val)
  }
  this.result = calc.calculate(nums)
}

端侧 AI 可以在这里做三件事:

  1. 判断输入是否明显异常,例如质量为负数、速度过大;
  2. 根据公式生成解释,例如“质量越大,在相同加速度下合外力越大”;
  3. 根据结果推荐相关模型,例如计算了库仑力后推荐“电场线分布”。

这样 AI 不是替代计算器,而是让计算器更像老师。

六、端侧 AI 方向三:挑战后的错因分析

挑战模块已经有题目、答案、分类、年级和解析:

interface QuizQuestion {
  question: string
  optionA: string
  optionB: string
  optionC: string
  optionD: string
  answer: number
  category: string
  grade: string
  explanation: string
}

选择答案后,会记录得分和连对:

selectOption(index: number): void {
  if (this.answered) return
  this.stopQuestionTimer()
  this.selectedAnswer = index
  this.answered = true
  const q = this.currentQuestions[this.currentQ]
  if (index === q.answer) {
    this.score++
    this.streak++
    if (this.streak > this.maxStreak) this.maxStreak = this.streak
  } else {
    this.streak = 0
  }
}

端侧 AI 可以根据错题分类生成学习建议:

  • “你在力学题中错得较多,建议复习匀变速直线运动和平抛运动。”
  • “你对电磁学公式掌握不稳定,建议先看库仑定律模型。”
  • “你在限时模式下错误率升高,可以先取消限时练准确率。”

这类分析不需要上传真实身份,完全可以基于本地题目和作答结果完成。

七、元服务方向:把高频模型变成轻量入口

「物理视界」有很多适合做成元服务入口的功能:

  • 打开“公式计算器”;
  • 打开“今日 5 题挑战”;
  • 打开“最近浏览模型”;
  • 打开“光的干涉演示”;
  • 打开“收藏模型列表”。

元服务的价值是低门槛:用户不一定要完整进入 App,也可以快速完成一个学习动作。

比较适合拆出的元服务卡片:

元服务入口 适合场景
今日物理挑战 课间 3 分钟刷题
公式速算 做作业时快速算结果
最近模型 延续上次学习
光学演示 老师课堂快速展示
我的收藏 考前复习

项目中每个模型已经有路由:

private routes: string[] = [
  'pages/SoundPropagation',
  'pages/LightReflection',
  'pages/SeriesParallelCircuit',
  'pages/UniformAcceleration'
]

这意味着做元服务入口时,可以直接把高频功能映射到已有页面。

八、人脸识别开放能力:教育 App 要慎用

人脸识别是敏感能力。对于「物理视界」这种学习工具,我不建议把人脸识别放进核心学习链路。

如果未来确实要接入,也应该只用于低频、明确、可替代的场景:

  • 家长确认进入某些管理页;
  • 多学生共用设备时切换本地学习档案;
  • 老师端确认身份后查看班级学习数据。

不建议用于:

  • 打开 App 必须刷脸;
  • 学生答题过程刷脸监控;
  • 用人脸推断学习能力;
  • 把人脸数据和成绩强绑定。

一个更克制的设计是:优先使用本地档案选择,只有用户主动开启时,才考虑人脸识别,而且必须提供密码或手动切换作为替代方式。

九、AI 与隐私的边界

如果做端侧 AI,我会坚持这几个原则:

  1. 默认关闭高敏感能力;
  2. 不做拍照识题;
  3. 不上传学生图像;
  4. 不上传完整学习记录;
  5. AI 推荐必须可解释;
  6. 用户可以清除本地学习画像;
  7. AI 只辅助理解,不直接替代学习过程。

教育产品的 AI 不应该变成“答案机器”,而应该变成“引导机器”。
它应该告诉学生为什么、怎么学、下一步看什么,而不是绕过思考。

十、可以逐步落地的路线图

结合当前项目,我建议按这个顺序升级:

第一阶段:规则推荐增强

基于收藏、浏览、挑战正确率,给出推荐理由。
不接入任何外部 AI,先把本地规则做扎实。

第二阶段:本地学习报告

在成就页或设置页增加“学习报告”:

  • 已探索模型数量;
  • 薄弱分类;
  • 收藏偏好;
  • 挑战表现;
  • 下周推荐学习路径。

第三阶段:端侧 AI 解释

对公式计算器、错题解析、模型观察生成简短解释。
重点是帮助理解,而不是直接给标准答案。

第四阶段:元服务入口

把高频功能拆成轻量入口,例如今日挑战、公式速算、最近模型。
让用户在更短路径中完成学习任务。

第五阶段:可选身份能力

如果有多用户或家长控制需求,再考虑身份能力。
人脸识别必须是可选项,而不是学习的前置门槛。

结语

「物理视界」现在已经有一个很好的基础:学习内容结构化、数据状态本地化、交互模型清晰。
在这个基础上接入端侧 AI 和元服务,不应该追求“炫”,而应该追求“更懂学习过程”。

我理想中的智能学习助手,是这样的:

  • 它知道我刚学过什么;
  • 它知道我哪里容易错;
  • 它能推荐下一步;
  • 它能解释公式含义;
  • 它不偷看我的照片;
  • 它不强迫我上传数据。

这也是我认为 OpenHarmony/HarmonyOS 教育应用很值得探索的方向:用端侧能力把学习体验做聪明,同时把隐私边界守住。🚀

img

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐