本节目标

  • 理解 HarmonyOS 端侧 AI 的三层开放架构,掌握 MindSpore Lite、CANN Kit、格物推理服务的定位与协作关系
  • 掌握端侧大模型的部署策略,能够在推理框架选型、模型量化压缩、内存与线程管理之间做出合理权衡
  • 掌握意图框架的核心机制,能够通过配置文件或装饰器将应用功能注册为系统可调度的意图
  • 掌握 Skill 框架与端侧 A2A 框架的适用场景,能够根据业务复杂度选择正确的智能体协同机制
  • 理解 AgentCard 与动态脚本引擎的架构思想,能够设计具备状态持久化与动态加载能力的智能体卡片
  • 了解 AI 驱动动态 UI(生成式 UI)的前沿框架与实现路径
  • 能够为应用设计从端侧推理 → 意图注册 → 智能体协同 → 动态 UI 呈现的完整 AI 能力链路

一、端侧 AI 架构与推理框架

1.1 HarmonyOS 端侧 AI 的三层开放架构

HarmonyOS 的端侧 AI 能力由上层到底层分为三个层次,各层分工明确:

MindSpore Lite Kit(推理引擎层)
HarmonyOS 内置的轻量化 AI 引擎,提供统一的模型推理和训练接口,内置通用硬件高性能算子库,原生支持 Neural Network Runtime Kit 使能 AI 专用芯片加速推理。使能手机、PC/2in1、TV 等全场景智能应用。

CANN Kit(硬件加速层)
面向 Kirin 芯片平台,为各种 AI 模型和算法提供统一的接入和运行环境。通过离线模型转换将 Caffe、TensorFlow、ONNX、MindSpore 模型转换为 CANN Kit 平台支持的格式,并可按需进行 AIPP 图像预处理和量化操作。通过协同调度 NPU、CPU 等硬件资源实现高效的设备端智能计算性能优化。

格物推理服务(QoS 调度层)
API 20 引入的 QoS 感知推理加速和资源管理优化服务。通过动态按需加载推理模型资源、结合 QoS 等级进行调度优化,在保障用户体验不卡顿的前提下实现端侧高效推理。

1.2 端侧推理的挑战与策略

端侧推理具有保障用户数据隐私、部署成本低、时延低、不受网络影响的高可用性等优点,但也面临内存资源受限、算力受限、对功耗敏感等挑战。工程上通常分三块来应对:

推理框架选型:选择能编译到 HarmonyOS/ohos arm64 的 native 方案,如 MNN、ONNX Runtime、llama.cpp 等。

模型文件管理:放 rawfile 或首次启动复制到沙箱,注意包体、内存和加载时间。

线程与体验:推理放 Worker/native 线程,做流式输出、取消、温控和低内存保护。不要假设任意模型都能直接走 NPU,先用 CPU/可用后端跑通小模型,再评估端侧性能。

1.3 模型压缩技术

在端侧部署大模型时,模型压缩是核心技术:

量化:把 FP32 模型转化为低 bit 模型(如 INT8、INT4),以节约网络存储空间、降低传输时延以及提高运算执行效率。量化是最常用的压缩手段,通常能减少 75% 的模型体积,推理速度提升 2-4 倍。

剪枝:移除模型中不重要的连接或神经元,减小模型规模。结构化剪枝可以直接减少计算量,非结构化剪枝需要专用硬件支持。

知识蒸馏:用大模型(教师模型)指导小模型(学生模型)训练,让小模型获得接近大模型的性能。

NAS(神经网络架构搜索) :自动搜索最优的模型结构,在给定约束下找到性能最优的架构。

移动端部署建议:优先选择小参数量、量化后的模型,建议使用 1B 以下的模型如 qwen0.5b、hunyuan0.6b 等。

1.4 MindSpore Lite 推理实战

以下是一个完整的端侧图像分类器实现:

import { mindSporeLite } from '@kit.MindSporeLiteKit';
import { common } from '@kit.AbilityKit';

export class ImageClassifier {
  private model: mindSporeLite.Model | null = null;
  private context: mindSporeLite.Context | null = null;

  async loadModel(abilityContext: common.UIAbilityContext): Promise<void> {
    try {
      // 配置推理后端,优先使用 NPU
      const contextConfig: mindSporeLite.Context = {
        deviceType: mindSporeLite.DeviceType.NPU,
        threadNum: 2,
        precisionMode: mindSporeLite.PrecisionMode.PRECISION_MODE_AUTO
      };
      this.model = await mindSporeLite.loadModelFromFile(
        abilityContext, contextConfig, 'model.ms');
    } catch (err) {
      console.error('模型加载失败:', err);
    }
  }

  async classify(imageBytes: ArrayBuffer): Promise<number> {
    if (!this.model) throw new Error('模型未加载');
    const inputs: mindSporeLite.MSTensor[] = this.model.getInputs();
    inputs[0].setData(imageBytes);
    const outputs: mindSporeLite.MSTensor[] = await this.model.predict(
      inputs, this.context);
    const outputData = new Float32Array(outputs[0].getData());
    return outputData.indexOf(Math.max(...outputData));
  }

  release(): void {
    this.model = null;
    this.context = null;
  }
}

核心原则:Context 和 Model 是长生命周期的对象,应在应用启动时初始化、在应用退出时释放,不要在每次推理时重复创建和销毁。

流式推理:适用于需要实时展示生成过程的场景,开启后推理结果分多次通过回调逐步返回,每次返回部分内容,仅最后一次携带非空的停止原因。用户可以更快看到部分结果,感知延迟大幅降低。

开发方式选择:ArkTS API 方式适合快速验证效果;Native API 方式适合需要精细控制推理过程的场景(自定义算子、多线程推理、内存复用等)。

二、意图框架与智能体协同

2.1 ArkAF 方舟智能开发框架

ArkAF(Ark Agentic Framework)是面向智能体时代的应用能力开发框架,提供意图框架、Skill 框架和端侧 A2A 框架三种能力开放机制,帮助开发者将应用能力外化给系统智能体调用,实现应用与智能体的无缝协同。

ArkAF 工作流程分为四个阶段:

  1. 开发接入:开发者选择合适框架将能力标准化封装。
  2. 系统注册:能力注册到 ArkAF 供系统智能体发现和索引。
  3. 智能匹配:用户通过自然语言发出请求,系统智能体解析意图并匹配最佳应用能力。
  4. 能力执行:系统智能体调用应用能力执行任务并返回结果。

2.2 三种框架的选型边界

框架适用场景典型示例执行方式
意图框架单一明确的能力调用播放音乐、导航到某地系统智能体唤醒执行
Skill 框架复杂场景功能"导航回家"等多步骤任务上架后被系统智能体识别调用
端侧 A2A 框架应用端侧智能体开发跟踪股票信息的智能体与系统智能体双向通信协商

2.3 意图框架核心机制

意图框架是 HarmonyOS 级的意图标准体系,将应用/元服务内的业务功能智能分发到各系统入口,包括小艺对话、小艺搜索、小艺建议。开发者通过两种方式定义意图:

接入标准意图:当应用功能符合系统预定义的标准意图时(如播放音乐、导航),可直接接入标准意图,避免重复定义规范。

创建自定义意图:当标准意图无法覆盖应用功能时,开发者可自定义意图。自定义意图需要包含大语言模型描述(自然语言描述意图功能,供系统入口解析语义)、参数类型定义(符合 Json Schema 规范)和结果类型定义。

配置文件开发意图:通过 insight_intent.json 配置文件定义意图,声明意图执行器的代码路径、绑定的 Ability 组件等意图信息;实现 InsightIntentExecutor 继承类并实现对应的意图执行逻辑。

以下是一个意图配置示例:

{
  "insightIntents": [
    {
      "domain": "MusicDomain",
      "intentName": "PlayMusic",
      "intentVersion": "1.0.1",
      "srcEntry": "./ets/insightintentexecutor/PlayMusicExecutor.ets",
      "uiAbility": {
        "ability": "EntryAbility",
        "executeMode": ["background", "foreground"]
      }
    }
  ]
}

装饰器快速接入:从 DevEco Studio 6.0.0 Beta2 开始,CodeGenie 支持生成五类意图装饰器:

  • @InsightIntentLink:在 class 头部或内部唤起,用于应用链接跳转。
  • @InsightIntentPage:基于 Navigation 的子页面使用。
  • @InsightIntentFunction:在类中静态方法区域唤起,用于函数调用。
  • @InsightIntentForm:在继承 FormExtensionAbility 的 class 中使用。
  • @InsightIntentEntry:在直接继承 InsightIntentEntryExecutor 的 class 中使用。

使用约束:需要 API 20 及以上版本,仅支持团队账号登录时添加意图插件,应用需在 AGC 已注册。

2.4 智能体开发与 Skill 管理

小艺智能体平台允许开发者构建智能体,提供LLM 模式(大语言模型驱动)、工作流模式(可视化流程编排)、A2A 模式(直连三方智能体)三大核心开发模式。平台配备端到端工具链,覆盖从智能体开发、多端调试到部署上架的全生命周期。

Skill 的开发采用 ArkTS 脚本化方式。系统新增了专用于脚本管理的模块(如 ScriptManager),应用可以不再将所有功能绑定在预编译的 UIAbility 或 ExtensionAbility 中,而是通过脚本的形式注册 Skill。系统层支持获取指定包名和分身索引的应用名称,从而将意图精准路由到对应的独立沙箱环境中去执行脚本。

Skill 上架流程:开发者通过小艺开放平台完成 Skill 开发与测试,提交上架申请,系统经过审核后完成发布。开发好的 Skills 可以申请上架小艺 Skills 市场,小艺根据用户意图主动识别、组合、调用。

三、AgentCard 与动态 UI 生成

3.1 AgentCard 的核心设计

HarmonyOS 7.0 在 Ability Kit 中引入了与智能体深度绑定的 AgentCard,区别于传统的桌面卡片,AgentCard 更像是一个"轻量级的微服务 UI 端点",拥有独立的解析和状态持久化机制。

核心特性:系统提供了对卡片节点状态树的序列化存储接口,当卡片被销毁或宿主退出时,AgentCard 可以自我保存其操作上下文,下次被唤醒时能够瞬间恢复之前的操作状态——例如输入框里的半截文字,或者翻到的第二页商品列表。

3.2 动态脚本引擎的工作流

动态脚本引擎将核心功能解耦为可动态加载的脚本,并通过 AgentCard 直接在多宿主环境中完成渲染和交互。当系统向后台脚本引擎发送一个 Skill 意图时(如"查询最近订单"),系统并没有拉起任何全屏的 UIAbility,而是通过底层的脚本执行流,直接在一张被唤起的 AgentCard 上渲染出高保真的订单数据,并且支持双向的数据持久化。

工程目录结构:

entry/src/main/
├── ets/
│   ├── entryability/
│   │   └── EntryAbility.ets
│   ├── agentcards/              // AgentCard 核心目录
│   │   ├── OrderAgentCard.ets
│   │   └── CardStateConfig.ts
│   ├── scripts/                 // ArkTS 动态脚本池
│   │   └── queryOrderSkill.ts
│   └── pages/
└── resources/

核心价值:这套机制允许将核心功能解耦为可动态加载的脚本,避免包体积膨胀,也避免了任何小意图修改都需要走完整发版流程的问题。

3.3 生成式 UI 前沿框架

AGenUI 是高德与阿里千问 C 端应用团队联合发布的首个覆盖 iOS、Android、HarmonyOS 三端的端云一体原生 A2UI 开源框架,基于 Google 的 A2UI 协议构建,以 C++ 跨平台引擎为核心,将 AI 大模型生成的界面意图直接转化为鸿蒙原生组件渲染,只需一套通用界面协议就能无缝适配鸿蒙手机、平板、车机、智慧屏、穿戴等多种终端设备。

DeclarUI 智能生成系统 能够直接从 UI 设计图生成可编译、可运行、且具备多设备自适应能力的 ArkUI 代码,编译成功率达到 92%,平均迭代次数仅 1.6 次。

四、综合实战:端侧智能问答应用

以下示例综合运用 MindSpore Lite、AgentCard 和意图框架,实现一个端侧智能问答应用:

import { mindSporeLite } from '@kit.MindSporeLiteKit';
import { common } from '@kit.AbilityKit';

@Entry
@ComponentV2
struct SmartQAPage {
  @Local question: string = '';
  @Local answer: string = '';
  @Local isGenerating: boolean = false;
  private model: mindSporeLite.Model | null = null;
  private context = this.getUIContext().getHostContext() as common.UIAbilityContext;

  async aboutToAppear(): Promise<void> {
    const contextConfig: mindSporeLite.Context = {
      deviceType: mindSporeLite.DeviceType.NPU,
      threadNum: 2
    };
    this.model = await mindSporeLite.loadModelFromFile(
      this.context, contextConfig, 'qa_model.ms');
  }

  aboutToDisappear(): void {
    this.model = null;
  }

  async generateAnswer(): Promise<void> {
    if (!this.model || !this.question.trim()) return;
    this.isGenerating = true;
    this.answer = '';

    try {
      // 流式推理:逐步展示生成结果
      await this.model.predictAsync(this.question, (partial: string, isFinished: boolean) => {
        this.answer += partial;
        if (isFinished) {
          this.isGenerating = false;
        }
      });
    } catch (err) {
      console.error('推理失败:', err);
      this.isGenerating = false;
    }
  }

  build() {
    Column({ space: 16 }) {
      Text('端侧智能问答').fontSize(24).fontWeight(FontWeight.Bold)

      TextArea({ placeholder: '输入你的问题...', text: this.question })
        .width('100%')
        .height(100)
        .onChange((value: string) => { this.question = value; })

      Button(this.isGenerating ? '生成中...' : '生成回答')
        .width('100%')
        .height(48)
        .enabled(!this.isGenerating && this.question.trim().length > 0)
        .onClick(() => this.generateAnswer())

      if (this.answer) {
        Scroll() {
          Text(this.answer)
            .fontSize(16)
            .lineHeight(24)
            .width('100%')
        }
        .layoutWeight(1)
        .width('100%')
        .padding(16)
        .backgroundColor('#F5F7FA')
        .borderRadius(12)
      }
    }
    .width('100%')
    .height('100%')
    .padding(20)
  }
}

性能优化要点:

  • 模型加载放在 aboutToAppear 中异步执行,避免阻塞首帧渲染。
  • 使用流式推理逐步展示结果,感知延迟大幅降低。
  • 推理完成后及时释放中间资源,避免内存泄漏。
  • 对于连续推理场景,复用同一个 Model 实例,避免重复加载。

五、多元化习题

习题 1(判断题)

题目:在 HarmonyOS 端侧 AI 架构中,格物(Gewu)推理服务通过动态按需加载推理模型资源和 QoS 感知调度优化,在保障用户体验不卡顿的前提下实现端侧高效推理。

答案:正确

解读:格物(Gewu)是 API 20 引入的 QoS 感知推理加速和资源管理优化服务,通过动态按需加载推理模型资源、结合 QoS 等级进行调度优化,应对端侧设备内存资源受限、算力受限、对功耗敏感等挑战。

习题 2(单选题)

题目:以下哪种意图能力开放机制适用于"导航回家"这类需要多步骤协同的复杂场景功能?

A. 意图框架(Intents Kit)
B. Skill 框架
C. 端侧 A2A 框架
D. MindSpore Lite Kit

答案:B

解读:Skill 框架提供标准化 Skill 接入与管理,上架后被系统智能体识别并调用,适用于复杂场景功能(如"导航回家")。意图框架适用于单一明确的能力调用(如播放音乐、导航),端侧 A2A 框架适用于应用端侧智能体的开发,MindSpore Lite Kit 是推理引擎而非意图框架。

习题 3(多选题)

题目:关于端侧大模型部署的策略,以下说法正确的有(多选):

A. 移动端内置本地大模型通常优先选择小参数量、量化后的模型
B. 可以将任意 7B/8B 级别的模型直接放入普通应用中
C. 推理应放在 Worker 或 native 线程中执行,做流式输出和低内存保护
D. 模型文件可以放在 rawfile 或首次启动时复制到沙箱

答案:A、C、D

解读:移动端内置本地大模型通常优先选择小参数量、量化后的模型,而不是直接塞 7B/8B 级别模型进普通应用,选项 A 正确,选项 B 错误。推理放 Worker/native 线程,做流式输出、取消、温控和低内存保护,选项 C 正确。模型文件放 rawfile 或首次启动复制到沙箱,注意包体、内存和加载时间,选项 D 正确。

习题 4(代码填空题)

题目:请补全以下 MindSpore Lite 代码,配置推理后端为 NPU 并加载模型。

import { mindSporeLite } from '@kit.MindSporeLiteKit';
import { common } from '@kit.AbilityKit';

async function loadModel(context: common.UIAbilityContext): Promise<mindSporeLite.Model> {
  const contextConfig: mindSporeLite.Context = {
    deviceType: mindSporeLite.DeviceType.______________,
    threadNum: 2
  };
  const model = await mindSporeLite.______________(context, contextConfig, 'model.ms');
  return model;
}

答案:NPU、loadModelFromFile

解读:mindSporeLite.DeviceType.NPU 指定使用 NPU 作为推理后端。mindSporeLite.loadModelFromFile 方法用于从文件加载模型,需要传入应用上下文、推理配置和模型文件路径。

习题 5(代码改错题)

题目:以下意图配置代码存在错误,请指出问题并修正。

{
  "insightIntents": [
    {
      "domain": "MusicDomain",
      "intentName": "PlayMusic",
      "intentVersion": "1.0.1"
    }
  ]
}

答案:意图配置缺少 srcEntry 字段,该字段用于声明意图执行器的代码路径。修正如下:

{
  "insightIntents": [
    {
      "domain": "MusicDomain",
      "intentName": "PlayMusic",
      "intentVersion": "1.0.1",
      "srcEntry": "./ets/insightintentexecutor/PlayMusicExecutor.ets"
    }
  ]
}

解读:通过 insight_intent.json 配置文件定义意图时,需要声明意图执行器的代码路径(srcEntry)、绑定的 Ability 组件等意图信息,否则系统无法找到并执行对应的意图逻辑。

习题 6(简答题)

题目:简述 HarmonyOS 端侧 AI 的三层开放架构,以及各层的职责与核心能力。

答案:HarmonyOS 端侧 AI 由上层到底层分为三层。MindSpore Lite Kit 是 HarmonyOS 内置的轻量化 AI 引擎,提供统一的模型推理和训练接口,内置通用硬件高性能算子库,原生支持 Neural Network Runtime Kit 使能 AI 专用芯片加速推理。CANN Kit 面向 Kirin 芯片平台,为各种 AI 模型和算法提供统一的接入和运行环境,通过离线模型转换将 Caffe、TensorFlow、ONNX、MindSpore 模型转换为平台支持的格式,并支持 AIPP 图像预处理和量化操作。格物(Gewu)推理服务是 API 20 引入的 QoS 感知推理加速和资源管理优化服务,通过动态按需加载推理模型资源、结合 QoS 等级进行调度优化,在保障用户体验不卡顿的前提下实现端侧高效推理。

解读:三层架构各司其职:MindSpore Lite 面向开发者提供易用的推理接口,CANN Kit 负责硬件层面的模型转换与优化,格物服务在系统层面进行资源调度和 QoS 保障,共同支撑端侧 AI 的高效运行。

习题 7(简答题)

题目:简述 AgentCard 与动态脚本引擎的核心设计思想,以及它们如何改变智能体能力的交付方式。

答案:AgentCard 区别于传统桌面卡片,更像是一个"轻量级的微服务 UI 端点",拥有独立的解析和状态持久化机制。系统提供了对卡片节点状态树的序列化存储接口,当卡片被销毁或宿主退出时可以自我保存操作上下文,下次被唤醒时能够瞬间恢复之前的操作状态。动态脚本引擎将核心功能解耦为可动态加载的脚本,通过 AgentCard 直接在多宿主环境中完成渲染和交互。当系统发送 Skill 意图时,不会拉起全屏 UIAbility,而是通过脚本执行流直接在 AgentCard 上渲染出高保真数据。这种设计改变了智能体能力的交付方式:从"预编译的全屏 UIAbility"变为"可动态加载的轻量脚本 + 具备状态记忆的微服务卡片",降低了包体积膨胀风险,避免了任何小意图修改都需要走完整发版流程的问题。

解读:AgentCard 和动态脚本引擎的结合,本质上是将智能体能力从"重"的预编译模式转变为"轻"的脚本化模式。核心价值在于动态加载、状态持久化和多宿主渲染,使智能体能力的分发更加灵活和高效。

习题 8(简答题)

题目:简述 ArkAF 三种能力开放机制的选型边界,以及各自的适用场景。

答案:ArkAF 提供三种能力开放机制。意图框架提供标准化意图接入能力和意图调度管理能力,适用于单一明确的能力调用,如播放音乐、导航到某地,由系统智能体唤醒执行。Skill 框架提供标准化 Skill 接入的能力和管理能力,适用于复杂场景功能,如"导航回家"这类需要多步骤协同的任务,开发者上架 Skill 后可被系统智能体识别并调用。端侧 A2A 框架提供标准化智能体接入能力和智能体调度管理能力,适用于应用端侧智能体的开发,如跟踪股票信息的智能体,应用智能体与系统智能体双向通信协商完成复杂任务。三种机制覆盖从简单到复杂的全部能力开放需求。

解读:三种框架的选型核心在于业务复杂度。单一能力调用用意图框架,多步骤协同用 Skill 框架,需要自主决策和双向通信用端侧 A2A 框架。开发者应根据业务场景选择最合适的机制,避免过度设计。

六、本节知识点总结

端侧 AI 三层架构
由上层到下层分别为 MindSpore Lite Kit(轻量化推理引擎,提供统一接口和多后端加速)、CANN Kit(面向 Kirin 芯片的离线模型转换与 AIPP/量化优化)、格物推理服务(QoS 感知推理加速与资源管理)。三层协同支撑端侧 AI 的高效运行。

端侧大模型部署策略
推理框架选型(MNN、ONNX Runtime、llama.cpp)、模型压缩(量化、剪枝、知识蒸馏、NAS)、线程与体验管理(Worker/native 线程、流式输出、温控与低内存保护)。建议使用 1B 以下量化模型,先在 CPU 上跑通再评估 NPU。

意图框架
HarmonyOS 级的意图标准体系,将应用功能智能分发到小艺对话、小艺搜索、小艺建议等系统入口。通过 insight_intent.json 定义意图,实现 InsightIntentExecutor 执行逻辑。支持通过装饰器(@InsightIntentLink、@InsightIntentPage 等)快速接入。

智能体协同机制
ArkAF 提供意图框架(单一能力调用)、Skill 框架(复杂场景功能)、端侧 A2A 框架(应用端侧智能体开发)三种能力开放机制。小艺智能体平台支持 LLM 模式、工作流模式、A2A 模式三大开发模式。

AgentCard 与动态脚本引擎
AgentCard 是具备状态持久化能力的轻量级微服务 UI 端点。动态脚本引擎将功能解耦为可动态加载的脚本,通过 AgentCard 在多宿主环境中渲染和交互,避免包体积膨胀和频繁发版。

生成式 UI
AGenUI 是首个覆盖 iOS、Android、HarmonyOS 三端的端云一体原生 A2UI 开源框架,将 AI 大模型生成的界面意图直接转化为鸿蒙原生组件渲染。DeclarUI 能从 UI 设计图直接生成可编译的 ArkUI 代码。

下节预告

第15课将进入 ArkUI 应用架构的最终演进方向——从 Agentic UI 到意图即服务的全面转型,涵盖意图经济、智能体市场分发、AI 原生应用的设计范式以及开发者角色的重新定义。

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐