
网罗开发 (小红书、快手、视频号同名)
大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。
图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG
我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验 。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。
展菲:您的前沿技术领航员
👋 大家好,我是展菲!
📱 全网搜索"展菲",即可纵览我在各大平台的知识足迹。
每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。
文章目录
-
- 引言
- [一、为什么普通 AI 聊天框没有价值](#一、为什么普通 AI 聊天框没有价值)
- [二、真正的 AI 助手架构](#二、真正的 AI 助手架构)
- [三、第一层:Assistant Runtime](#三、第一层:Assistant Runtime)
- [四、第二层:Intent Engine](#四、第二层:Intent Engine)
- [五、第三层:Task Center](#五、第三层:Task Center)
- [六、第四层:Tool Center](#六、第四层:Tool Center)
- [七、鸿蒙 App 中如何设计 Tool](#七、鸿蒙 App 中如何设计 Tool)
- [八、鸿蒙 ArkUI 接入助手](#八、鸿蒙 ArkUI 接入助手)
- [九、增加 Memory](#九、增加 Memory)
-
- [Memory 架构](#Memory 架构)
- [十、增加 State](#十、增加 State)
- 十一、一个完整课程助手实战
- [十二、AI Native 鸿蒙 App 的推荐目录](#十二、AI Native 鸿蒙 App 的推荐目录)
- 十三、为什么未来会从页面驱动变成助手驱动
- 十四、结合鸿蒙分布式能力
- 十五、总结
引言
过去几年,大模型接入 App 的方式其实非常简单:
text
输入问题
↓
调用 API
↓
返回答案
很多鸿蒙项目也是这样做的:
ts
const result = await llm.chat(prompt)
然后把结果展示到页面,看起来:
text
AI 已经接入成功
但很快你会发现:
text
只能聊天
不能做事
例如用户说:
text
帮我预约今天下午的课程
AI 返回:
text
您可以点击课程页面进行预约
用户会觉得:
text
那我为什么要问你?
真正的 AI 助手应该是:
text
用户说需求
↓
AI理解意图
↓
调用业务能力
↓
完成任务
↓
返回结果
而不是:
text
用户提问
↓
AI聊天
↓
结束
所以:
AI 助手不是一个聊天窗口,而是一套新的应用架构。
一、为什么普通 AI 聊天框没有价值
很多项目的第一版:
text
ArkUI
↓
LLM API
↓
Answer
例如:
ts
Button("发送")
.onClick(async () => {
const result =
await llm.chat(input)
this.answer = result
})
架构:
text
UI
↓
Model
↓
Text
问题,AI 永远只能:
text
说
不能:
text
做
所以:
text
无法和业务结合
最终变成:
text
一个套壳 ChatGPT
二、真正的 AI 助手架构
推荐结构:
text
UI
↓
Assistant
↓
Intent Engine
↓
Task Center
↓
Tool Center
↓
System
↓
Repository
这里:
text
Assistant
成为整个应用的新入口。
三、第一层:Assistant Runtime
Assistant 是整个 AI 助手的大脑,职责:
text
理解用户
管理上下文
调度任务
示例:
ts
export class Assistant {
async run(text: string) {
const intent =
await this.parseIntent(text)
return await taskCenter.run(intent)
}
}
调用:
ts
await assistant.run(
"帮我预约英语课程"
)
四、第二层:Intent Engine
Intent Engine 负责:
text
把自然语言
变成结构化命令
例如,用户输入:
text
帮我购买英语四级课程
转换:
json
{
"intent": "buy_course",
"course": "英语四级"
}
示例:
ts
class IntentEngine {
async parse(text: string) {
return await llm.chat(`
提取用户意图:
${text}
`)
}
}
整个 AI 应用最关键的一步:
不是生成答案,而是识别意图。
五、第三层:Task Center
很多开发者喜欢:
text
AI直接调用业务代码
这是错误的,正确方式:
text
AI
↓
Task
↓
业务能力
例如:
ts
class BuyCourseTask {
async run(params) {
return await courseTool.buy(
params.courseId
)
}
}
统一入口:
ts
await taskCenter.run(
"BuyCourseTask"
)
这样:
text
业务流程标准化
六、第四层:Tool Center
这是 AI Native 架构里最重要的一层,很多团队会这样写:
ts
orderStore.orders = []
AI 直接修改数据,问题:
text
无法审计
无法控制权限
正确做法:
ts
await orderTool.cancel(id)
示例:
ts
export class OrderTool {
async cancel(
orderId: string
) {
return await orderSystem
.cancel(orderId)
}
}
Tool 的本质:
text
AI 与业务之间的隔离层
七、鸿蒙 App 中如何设计 Tool
推荐目录:
text
tools/
├── user
├── order
├── payment
├── course
└── message
例如:
text
tools/
└── order/
├── CancelOrderTool
├── QueryOrderTool
└── CreateOrderTool
示例:
ts
export class QueryOrderTool {
async execute(id: string) {
return await repository.find(id)
}
}
这样:
text
AI 能力标准化
八、鸿蒙 ArkUI 接入助手
页面层应该非常轻,例如:
ts
@State question: string = ""
@State answer: string = ""
Column() {
TextInput({
text: this.question
})
Button("发送")
.onClick(async () => {
this.answer =
await assistant.run(
this.question
)
})
Text(this.answer)
}
这里页面不知道:
text
任务怎么执行
工具怎么调用
模型怎么推理
只负责:
text
输入
输出
九、增加 Memory
如果没有记忆:
text
每次都是新对话
例如,用户:
text
帮我查订单
AI:
text
哪个订单?
用户:
text
昨天那个
AI:
text
无法理解
因为:
text
上下文丢失
Memory 架构
text
Assistant
↓
Memory
↓
LLM
示例:
ts
class MemoryStore {
history: string[] = []
add(message: string) {
this.history.push(message)
}
}
调用:
ts
await assistant.run(
text,
memoryStore.history
)
十、增加 State
AI Native App 必须管理状态,例如:
text
当前任务
当前订单
当前用户
推荐:
text
AssistantState
示例:
ts
class AssistantState {
currentTask?: string
currentIntent?: string
taskStatus?: string
}
这样:
text
任务执行过程可追踪
十一、一个完整课程助手实战
用户:
text
帮我推荐专升本课程
流程:
text
Assistant
↓
Intent Engine
↓
RecommendCourseTask
↓
CourseTool
↓
CourseRepository
↓
Result
代码:
ts
const intent =
await intentEngine.parse(text)
const result =
await taskCenter.run(intent)
return result
整个系统:
text
完全任务化
十二、AI Native 鸿蒙 App 的推荐目录
text
src
├── assistant
│ ├── runtime
│ ├── intent
│ ├── memory
│ └── state
│
├── task
│ ├── order
│ ├── payment
│ └── course
│
├── tools
│ ├── order
│ ├── user
│ └── payment
│
├── system
│
├── repository
│
├── store
│
└── ui
这是比较适合的结构是:
text
AI Native 鸿蒙 App
十三、为什么未来会从页面驱动变成助手驱动
传统 App:
text
页面
↓
按钮
↓
功能
AI Native App:
text
意图
↓
Assistant
↓
Task
↓
结果
例如,过去:
text
打开订单页
点击取消
确认取消
未来:
text
帮我取消昨天的订单
AI 自动完成,这里最大的变化是:
页面不再是入口。
而是:
Assistant 成为入口。
十四、结合鸿蒙分布式能力
鸿蒙最大的优势:
text
多设备协同
例如,手机:
text
发起任务
平板:
text
查看执行过程
PC:
text
继续处理结果
因此:
text
AssistantState
应该支持:
text
分布式同步
结构:
text
Phone
↓
AssistantState
↓
Pad
↓
PC
未来:
text
AI 助手是跨设备存在的
而不是:
text
只存在某个页面
十五、总结
如果用一句话总结:
鸿蒙 App 集成 AI 助手,不是在页面里放一个聊天框,而是在应用内部增加一个新的 Runtime。
过去:
text
用户操作功能
未来:
text
用户表达意图
过去:
text
页面驱动业务
未来:
text
Assistant 驱动业务
过去:
text
App = UI + Service
未来:
text
App
= UI
+ State
+ Task
+ Tool
+ Assistant Runtime
很多开发者接入 AI 后,看到模型能够回复内容,就觉得已经完成了 AI 化。
但真正的 AI Native 鸿蒙应用,目标从来不是:
text
让 AI 会聊天
而是:
text
让 AI 会做事
记住一句话:
text
聊天框只是入口,
Assistant Runtime 才是核心。
当你的鸿蒙 App 开始拥有:
- Intent Engine
- Memory Engine
- Task Center
- Tool Center
- Assistant State
- 分布式 Assistant Runtime
你会发现:
text
AI 不再是一个功能模块,
而开始成为整个鸿蒙 App 的新基础设施。