引言
一开始,我只想在鸿蒙 App 里接一个 AI 功能,目标很朴素:做个智能搜索、加一个 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 调用。问题很快露出来了。
有些业务逻辑写死在页面里,AI 根本碰不到:
// Page 内部逻辑
async loadOrders() {
return await api.()
}


