引言
最开始,我只是想在鸿蒙 App 里接一个 AI 功能:智能搜索、AI 助手,或者让用户能用自然语言完成一些操作。真正做起来才发现,问题不是'给 App 加 AI'这么简单,AI 会顺手把整个应用的组织方式也改掉。
一、起点很朴素:先做一个 AI 页面
一开始的实现几乎没什么特别的地方。首页加一个 AI 页面,调用大模型接口,把结果展示出来。
@Entry
@Component
struct AIPage {
@State input: string = ""
@State reply: string = ""
async send() {
this.reply = await aiService.chat(this.input)
}
}
这类做法很自然,改动小,也容易上线。问题是,它只能覆盖'问答'这种场景。
二、AI 很快绕开了页面
用户开始问的东西不再只是闲聊,而是'帮我查一下订单''推荐几个商品''看看今天有什么安排'。这些需求本来分别属于订单页、商品页、日程页,但用户并不会乖乖点进对应页面再操作。
AI 直接把结果吐出来了。页面还在,但它不再是唯一入口。
这一步变化其实挺关键:如果入口已经变成自然语言,页面就不该再假设自己掌握流程主导权。
三、Service 层突然变成了核心
以前常见的结构是 Page → Service → API。接入 AI 之后,入口多了一条线:AI → Service → Page → Service。说白了,Service 不再只服务 UI,还要服务 AI。
问题也跟着暴露出来。
有些逻辑直接写在页面里:
// Page 内部逻辑
async loadOrders() {
return await api.get("/orders")
}
这种写法对页面自己够用,但 AI 根本碰不到。
还有一些逻辑和 UI 状态绑得很死:
this.loading = true
this.orders = await api.()
. =


