数据不出设备!HarmonyOS 5 端侧大模型问答实战

作者:张大鹏 | 大鹏AI教育 | 2026-05-20

标签:HarmonyOS 端侧AI ArkTS 大模型 隐私计算



📖 阅读提示

这篇不聊"端侧 AI 概念",只回答一个开发者更关心的问题:

用户的笔记、通讯录、企业资料不想上传云端,鸿蒙 App 能不能做一个本地问答助手?

结论:可以做,但要承认边界。 端侧问答适合隐私、短上下文、低延迟场景;复杂推理和多工具编排,仍建议和上一篇的 MCP Agent 混合。

你会拿到:

  • 一条端侧问答的数据流
  • 云端 API vs 端侧模型的选型表
  • ArkTS 工程模块拆分
  • 一个 EdgeLLMService.ets 的服务层骨架
  • 发布前必须做的真机检查清单

前言:为什么鸿蒙开发者开始谈「端侧大模型」?

问卷、会议纪要、个人笔记、企业通讯录,这些数据都有一个共同点:能不出设备,就不要出设备。

云端大模型能力很强,但并不适合所有 App。特别是下面三类场景:

  • 用户明确要求离线可用
  • 公司合规要求原文不上传
  • 交互必须低延迟,比如本地知识问答、表单辅助填写

华为开发者网站已经给出 基于端侧问答模型实现智能问答 的 Codelab 路径。开发者要做的不是喊"端侧大模型来了",而是把模型加载、会话管理、UI 渲染和资源控制拆清楚。

1. 端侧大模型在鸿蒙上可行吗?

1.1 结论先说

可行,但有边界。 适合:

  • 3B~7B 量级量化模型(视设备 NPU/内存而定)
  • 短上下文问答、摘要、分类
  • 强隐私、弱网、低延迟交互

不适合:

  • 超长文档一次吞掉
  • 复杂多工具 Agent
  • 高强度长时间推理
  • 对准确率要求极高且需要联网知识的场景

这里的 3B~7B 只是常见量级参考,具体能不能跑,要看机型、运行时、量化方案、内存峰值和散热表现。不要在产品文案里承诺"所有设备都能流畅运行"。

1.2 官方能力入口

华为开发者网站 Codelabs 提供「基于端侧问答模型实现智能问答」教程(HarmonyOS 5+),核心演示:

  • 端侧模型加载与推理接口
  • ArkUI 对话界面
  • 基本多轮上下文管理

建议先跑通官方 Demo,再改业务 UI。


2. 架构:数据怎么走,哪里不能乱写?

复制代码
用户输入 (ArkUI)
    ↓
会话管理(历史裁剪、token 控制)
    ↓
端侧推理引擎(Native / AI Kit)
    ↓
返回答案 → List 渲染

这条链路看起来简单,实际容易踩坑的是三处:

  1. 模型文件 随 HAP 打包或首次启动下载到沙箱,注意包体体积
  2. 推理线程 不要阻塞 UI 线程
  3. 内存峰值 要在真机测,模拟器往往不准

推荐目录结构如下:

text 复制代码
entry/src/main/ets/
├── pages/
│   └── ChatPage.ets
├── service/
│   ├── EdgeLLMService.ets
│   └── SessionStore.ets
├── model/
│   └── Message.ets
└── utils/
    └── PromptTemplate.ets

页面避免直接碰模型。页面只负责状态展示,推理统一收口到 EdgeLLMService


3. 云端 vs 端侧:怎么选?

维度 云端 API 端侧模型
隐私 需传输原文 数据不出设备
延迟 受网络影响 毫秒~秒级(看机型)
能力上限 强模型、长上下文 受算力约束
成本 按 token 计费 一次性集成与包体
与 Agent 工具链 MCP 生态成熟 需自建或混合架构

推荐组合(2026 常见做法):

  • 默认 端侧 处理敏感问答
  • 用户显式开启「增强模式」再走云端
  • 复杂任务跳转 001 篇 的 MCP Agent 服务

4. ArkTS 工程模块清单:按这个拆,后期好维护

模块 职责
pages/ChatPage.ets 消息列表、输入框、加载态
service/SessionStore.ets 多轮历史持久化
service/EdgeLLMService.ets 封装推理调用、错误码
model/Message.ets 角色、内容、时间戳
utils/PromptTemplate.ets 系统提示词、安全拒答

4.1 Message.ets:先统一消息结构

typescript 复制代码
export type MessageRole = 'user' | 'assistant' | 'system';

export interface Message {
  id: string;
  role: MessageRole;
  content: string;
  createdAt: number;
}

消息结构越早统一,后面做持久化、导出、联网增强都省事。

4.2 EdgeLLMService.ets:页面避免直接调模型

下面是服务层骨架,重点是接口边界,并非具体 SDK 名称。

typescript 复制代码
import type { Message } from '../model/Message';

export interface GenerateOptions {
  maxTokens?: number;
  temperature?: number;
  signal?: AbortSignal;
}

export class EdgeLLMService {
  private ready: boolean = false;

  async init(): Promise<void> {
    // 1. 检查模型文件
    // 2. 初始化端侧推理运行时
    // 3. 做一次轻量 warmup
    this.ready = true;
  }

  async generate(messages: Message[], options: GenerateOptions = {}): Promise<string> {
    if (!this.ready) {
      await this.init();
    }

    const prompt = this.buildPrompt(messages);

    // 示意:这里替换为官方 Codelab / AI Kit 对应的推理调用
    const result = await this.callLocalModel(prompt, options);
    return result.trim();
  }

  private buildPrompt(messages: Message[]): string {
    return messages
      .slice(-8)
      .map(item => `${item.role}: ${item.content}`)
      .join('\\n');
  }

  private async callLocalModel(prompt: string, options: GenerateOptions): Promise<string> {
    // TODO: 接入端侧问答模型推理接口
    return '这里返回端侧模型生成结果';
  }
}

这个服务层至少解决三件事:

  • UI 不关心模型初始化细节
  • 会话历史可以统一裁剪
  • 后续切换云端增强模式时,接口不用大改

4.3 UI 侧注意

  • 长回答用 LazyForEach,避免一次渲染过长文本卡顿
  • 推理中展示 可取消 按钮(用户切后台时释放资源)
  • 首次启动说明 「本地处理,不上传对话」,建立信任

4.4 与 Agent(001)协作

端侧模型可做 意图路由

  • 「查天气 / 设闹钟」→ 本地工具或系统 Ability
  • 「分析这份 PDF」→ 若超限,提示切换云端或 MCP 工具
  • 「总结本地笔记」→ 优先端侧处理,必要时只上传脱敏摘要

一个实用策略是:

输入类型 默认策略
本地隐私文本 端侧模型
公开资料搜索 云端 / MCP 工具
写入日程、任务 本地工具 + 二次确认
超长文档分析 分块摘要,必要时提示增强模式

5. 实测与发布前检查

不要只跑模拟器。端侧 AI 的体验,必须在真机上看。

检查项 为什么重要
连续 10 轮对话 看内存峰值、发热、降频
飞行模式问答 验证核心能力是否真的离线
首次加载耗时 影响用户第一印象
模型文件升级 决定包体与后续维护方式
敏感问题兜底 避免本地模型胡答、越权
切后台 / 锁屏 确认推理任务是否释放资源

我建议发布前至少记录这 4 个指标:

text 复制代码
首次模型加载耗时:
单轮平均响应时间:
连续 10 轮后内存峰值:
连续 10 轮后机身温度 / 主观发热:

6. 下一步怎么做

HarmonyOS 5 的端侧问答并非单纯概念,官方 Codelab 已经给出可参考路径。实际决定体验的,是工程拆分:

ChatPage 只管交互,SessionStore 管历史,EdgeLLMService 管推理,PromptTemplate 管边界。

端侧模型最适合解决"数据不出设备"的问题;MCP Agent 适合复杂工具编排。两者不是替代关系,而是组合关系:

  • 端侧:隐私、弱网、低延迟
  • 云端:强模型、长上下文、开放知识
  • MCP:工具调用、业务系统连接、多步骤任务

如果你正在做鸿蒙 AI 应用,建议先跑通一个本地问答闭环,再考虑云端增强和 MCP 工具链。


📚 参考来源

  1. 基于端侧问答模型实现智能问答 - 华为 Codelabs
  2. 鸿蒙系统中,端侧本地部署大模型是否具备可行性?
  3. 华为开发者大会:HarmonyOS 6 与智能体框架相关报道

作者 :张大鹏|来源 :大鹏AI教育
标签 :AI · 鸿蒙 · 端侧大模型 · ArkTS
原创内容,转载需授权

相关推荐
小陶来咯6 小时前
机器人旋转变形逻辑分析
机器人
kyle~7 小时前
ros_gz_bridge---底层通信的实现
c++·机器人·仿真·ros2
2zcode7 小时前
基于STM32的智能扫地机器人设计与实现
stm32·嵌入式硬件·机器人
砺星Leetx7 小时前
砺星伺服压机整线18台落地某头部新能源车企电驱动产线,轴承压装CT从13秒降至8秒
机器人·自动化·汽车·制造
数智工坊8 小时前
【UniT论文阅读】:用统一物理语言打通人类与人形机器人的知识壁垒
论文阅读·人工智能·深度学习·算法·机器人
XMAIPC_Robot10 小时前
RK3588+ZYNQ+ROS2 机器人 “强实时控制 + AI 感知 + 边缘计算” 三位一体核心控制器
人工智能·机器人·边缘计算
鲁邦通物联网11 小时前
架构实战:不改控制柜实现机器人与电梯精准联动状态机设计
机器人·机器人梯控·agv梯控·机器人乘梯·机器人自主乘梯
kyle~11 小时前
ros_gz_sim --- ROS 2 与 Gazebo 仿真的桥梁
人工智能·机器人·自动驾驶
数智工坊11 小时前
【DACS论文阅读】跨域混合采样如何让语义分割模型从合成数据无缝迁移到真实世界
论文阅读·人工智能·算法·机器人·无人机