传统 App 架构,为什么不适合 AI 应用


网罗开发 (小红书、快手、视频号同名)

大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等方向。在移动端开发、鸿蒙开发、物联网、嵌入式、云原生、开源等领域有深厚造诣。

图书作者:《ESP32-C3 物联网工程开发实战》
图书作者:《SwiftUI 入门,进阶与实战》
超级个体:COC上海社区主理人
特约讲师:大学讲师,谷歌亚马逊分享嘉宾
科技博主:华为HDE/HDG

我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用、前沿科技资讯、产品评测与使用体验 。我特别关注云服务产品评测、AI 产品对比、开发板性能测试以及技术报告,同时也会提供产品优缺点分析、横向对比,并分享技术沙龙与行业大会的参会体验。我的目标是为读者提供有深度、有实用价值的技术洞察与分析。

展菲:您的前沿技术领航员

👋 大家好,我是展菲!

📱 全网搜索"展菲",即可纵览我在各大平台的知识足迹。

📣 公众号"Swift社区",每周定时推送干货满满的技术长文,从新兴框架的剖析到运维实战的复盘,助您技术进阶之路畅通无阻。

💬 微信端添加好友"fzhanfei",与我直接交流,不管是项目瓶颈的求助,还是行业趋势的探讨,随时畅所欲言。

📅 最新动态:2025 年 3 月 17 日

快来加入技术社区,一起挖掘技术的无限潜能,携手迈向数字化新征程!

文章目录

引言

很多开发者在接入 AI 时,第一反应通常是:

"在原有 App 里加一个 AI 功能就好了。"

于是你会看到这样的实现:

复制代码
新增一个 AI 页面
↓
调用大模型接口
↓
展示结果

一开始,这种方式看起来完全没问题。但随着功能变多,很快就会出现:

  • AI 逻辑到处散落
  • 业务服务难以复用
  • 页面越来越重
  • 代码越来越难维护

这时候你才会意识到一个本质问题:

不是你写错了,而是传统 App 架构本身就不适合 AI 应用。

一、传统 App 的核心设计思想

传统 App 的设计,本质是:

以页面(UI)为中心

典型结构:

复制代码
Page → ViewModel → Service → Repository → Network

所有逻辑都是围绕:

复制代码
页面触发 → 请求数据 → 展示结果

例如:

ts 复制代码
async onClick() {
  const data = await this.userService.getUserInfo()
  this.user = data
}

特点非常明显:

  • 页面是入口
  • 用户操作驱动流程
  • 每个页面对应一个业务

这种模式在过去非常成功。

二、AI 应用的核心变化

AI 应用的核心,不再是页面,而是:

复制代码
用户意图

流程变成:

复制代码
用户输入一句话
     ↓
系统理解意图
     ↓
自动调用多个服务
     ↓
组合结果返回

例如:

复制代码
"帮我安排一个周末旅行"

背后可能发生:

复制代码
AI → 解析时间
AI → 查询天气
AI → 推荐景点
AI → 生成行程

注意一个关键点:

用户没有进入任何页面。

三、问题一:页面驱动 vs 意图驱动

传统架构:

复制代码
页面 = 功能入口

AI 架构:

复制代码
意图 = 功能入口

这两者是冲突的。

举个例子

传统方式:

复制代码
搜索页面 → 调用搜索接口
订单页面 → 调用订单接口

AI 方式:

复制代码
用户一句话:
"帮我查一下订单"

系统需要:

复制代码
AI 判断 → 调用 OrderService

问题来了: Service 不再由页面驱动,而是由 AI 调用

如果继续用传统架构

你可能会写出这样的代码:

ts 复制代码
if (intent === "order") {
  return this.orderPage.getOrder()
}

问题:

  • Service 被页面绑死
  • 逻辑混乱
  • 复用性极差

四、问题二:业务逻辑分散在页面中

传统 App 很多逻辑写在页面或 ViewModel 中:

ts 复制代码
async loadData() {
  const user = await api.getUser()
  const order = await api.getOrder(user.id)
  this.data = merge(user, order)
}

这种写法的问题,在 AI 场景下会被放大。

AI 需要"跨页面能力"

例如:

复制代码
查询用户 + 查询订单 + 推荐商品

但这些逻辑分散在:

复制代码
UserPage
OrderPage
RecommendPage

AI 无法复用。

正确的做法应该是

复制代码
Service 层独立
AI 统一调度

否则你会发现:

AI 根本无法"组合能力"。

五、问题三:流程是固定的,而 AI 是动态的

传统 App:

复制代码
流程是写死的

例如:

复制代码
点击按钮 → 请求接口 → 展示结果

代码就是流程:

ts 复制代码
step1()
step2()
step3()

AI 应用的特点

复制代码
流程是不确定的

同一句话:

复制代码
"帮我安排一下今天"

可能变成:

复制代码
查天气 → 推荐衣服 → 安排行程

也可能是:

复制代码
查日历 → 提醒会议 → 推荐路线

传统架构的问题

你没法提前写好流程:

ts 复制代码
if (...) {
  stepA()
} else {
  stepB()
}

因为:

AI 的流程是运行时决定的。

六、问题四:缺乏"能力抽象"

传统 App 通常是:

复制代码
页面 = 功能

例如:

复制代码
SearchPage
OrderPage
ProfilePage

但 AI 需要的是:

复制代码
能力(Capability)

例如:

复制代码
搜索能力
支付能力
推荐能力

如果没有能力抽象

AI 就只能:

复制代码
调用页面逻辑(错误)

而不是:

复制代码
调用服务能力(正确)

正确架构应该是

复制代码
AI → Tool → Service

示例:

ts 复制代码
export class OrderTool {
  async execute(userId: string) {
    return await orderService.getOrders(userId)
  }
}

七、问题五:UI 与逻辑强耦合

传统架构中:

复制代码
UI = 状态 + 逻辑

例如:

ts 复制代码
@State loading: boolean = false

async fetch() {
  this.loading = true
  this.data = await api.getData()
  this.loading = false
}

AI 场景的问题

AI 调用逻辑时: 不需要 UI

但你的代码:必须依赖 UI

这会导致:

  • 逻辑无法复用
  • 测试困难
  • 架构混乱

八、问题六:缺少统一调度中心

传统 App:

复制代码
每个页面自己管逻辑

AI App:

复制代码
需要一个统一调度中心

也就是:

复制代码
AI Service / Agent

示例:

ts 复制代码
export class Agent {

  async run(input: string) {
    const intent = await this.parse(input)
    return await this.dispatch(intent)
  }

}

九、本质问题总结

传统 App 架构的问题,本质可以总结为一句话:

它是"页面驱动"的,而 AI 应用是"意图驱动"的。

对比一下:

维度 传统 App AI App
入口 页面 意图
流程 固定 动态
调用方式 UI 触发 AI 调度
结构 页面分散 能力集中
复用

十、那应该怎么改?

简单来说:

1 去页面中心化

复制代码
Page → Service  错误
AI → Service  正确

2 服务能力化

把所有功能拆成:

复制代码
独立 Service

3 引入 Tool 层

复制代码
AI → Tool → Service

4 增加 Agent 层

复制代码
Agent = 调度中心

总结

很多开发者在做 AI 功能时,会遇到各种"诡异问题":

  • 代码越来越乱
  • AI 功能难扩展
  • 服务无法复用

但这些问题的根源,其实只有一个:

你还在用"传统 App 架构"做"AI 应用"。

AI 应用不是:

复制代码
App + AI

而是:

复制代码
AI + App

这意味着:

AI 不只是一个功能,而是整个系统的核心。

相关推荐
美酒没故事°17 小时前
Open WebUI安装指南。搭建自己的自托管 AI 平台
人工智能·windows·ai
云烟成雨TD17 小时前
Spring AI Alibaba 1.x 系列【6】ReactAgent 同步执行 & 流式执行
java·人工智能·spring
行乾17 小时前
鸿蒙端 IMSDK 架构探索
架构·harmonyos
石小石Orz17 小时前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
AI攻城狮17 小时前
用 Obsidian CLI + LLM 构建本地 RAG:让你的笔记真正「活」起来
人工智能·云原生·aigc
鸿乃江边鸟17 小时前
Nanobot 从onboard启动命令来看个人助理Agent的实现
人工智能·ai
lpfasd12317 小时前
基于Cloudflare生态的应用部署与开发全解
人工智能·agent·cloudflare
俞凡17 小时前
DevOps 2.0:智能体如何接管故障修复和基础设施维护
人工智能
comedate17 小时前
[OpenClaw] GLM 5 关于电影 - 人工智能 - 的思考
人工智能·电影评价
财迅通Ai17 小时前
6000万吨产能承压 卫星化学迎来战略窗口期
大数据·人工智能·物联网·卫星化学