当前位置: 首页 > article >正文

做了一个 AI 鸿蒙 App,我发现逻辑变了

子玥酱掘金 / 知乎 / CSDN / 简书 同名大家好我是子玥酱一名长期深耕在一线的前端程序媛 ‍。曾就职于多家知名互联网大厂目前在某国企负责前端软件研发相关工作主要聚焦于业务型系统的工程化建设与长期维护。我持续输出和沉淀前端领域的实战经验日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。技术方向前端 / 跨端 / 小程序 / 移动端工程化内容平台掘金、知乎、CSDN、简书创作特点实战导向、源码拆解、少空谈多落地文章状态长期稳定更新大量原创输出我的内容主要围绕前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读展开。文章不会停留在“API 怎么用”而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍希望能帮你在实际工作中少走弯路。子玥酱 · 前端成长记录官 ✨ 如果你正在做前端或准备长期走前端这条路 关注我第一时间获取前端行业趋势与实践总结 可领取11 类前端进阶学习资源工程化 / 框架 / 跨端 / 面试 / 架构 一起把技术学“明白”也用“到位”持续写作持续进阶。愿我们都能在代码和生活里走得更稳一点 文章目录引言一、最开始我只是加了一个“AI 页面”二、AI 开始“绕过页面”三、Service 层突然变成核心1 有些 Service 写在页面里2 有些逻辑和 UI 强绑定四、我开始把能力“服务化”五、我又加了一层Tool六、我不得不引入“Agent”七、UI 的地位明显下降了八、数据流也变了九、最大的变化其实是“思维方式”十、本质总结结语引言一开始我只是想做一件很简单的事在鸿蒙 App 里接入一个 AI 功能。比如做一个智能搜索加一个 AI 助手支持自然语言操作听起来很普通对吧但当我真的把一个AI 鸿蒙 App 从 0 做到能用之后我发现一件很不对劲的事不是我在给 App 加 AI而是 AI 在重写整个 App 的逻辑。而且这种变化不是 UI 层面的而是架构级别的变化一、最开始我只是加了一个“AI 页面”最初的实现很典型首页 ↓ 新增一个 AI 页面 ↓ 调用大模型接口 ↓ 展示结果代码大概是这样EntryComponentstruct AIPage{Stateinput:stringStatereply:stringasyncsend(){this.replyawaitaiService.chat(this.input)}}当时我以为“这不就完成了吗”但很快问题就来了。二、AI 开始“绕过页面”用户开始提一些请求帮我查一下订单 帮我推荐几个商品 帮我看看今天有什么安排这些需求本来应该对应订单页 商品页 日程页但现在用户根本没有进入这些页面AI 直接返回了结果。这时候我第一次意识到页面不再是唯一入口了。三、Service 层突然变成核心以前我的代码结构是Page → Service → API但现在变成AI → Service Page → Service也就是说Service 被两个入口调用UIAI问题马上暴露出来1 有些 Service 写在页面里// Page 内部逻辑asyncloadOrders(){returnawaitapi.get(/orders)}AI 根本调不了。2 有些逻辑和 UI 强绑定this.loadingtruethis.ordersawaitapi.get()this.loadingfalseAI 也用不了于是我不得不重构把所有业务逻辑从页面里“抽出来”。四、我开始把能力“服务化”我做的第一步是拆 Service例如exportclassOrderService{asyncgetOrders(userId:string){returnawaitapi.get(/orders)}}然后 UI 和 AI 都调用awaitorderService.getOrders(userId)这一刻变化很明显App 不再是页面集合而是能力集合。五、我又加了一层Tool很快我发现一个新问题AI 并不知道该调用哪个 Service。于是我加了一层Tool例如exportclassOrderTool{asyncexecute(params){returnawaitorderService.getOrders(params.userId)}}AI 只需要调用 Tool而不用关心底层实现这时候架构变成AI → Tool → Service六、我不得不引入“Agent”再往后问题又来了。用户输入开始变复杂帮我查订单并推荐相关商品这已经不是一个 Service 能完成的任务我需要多个步骤 多个能力 组合执行于是我引入了Agent示例exportclassAgent{asyncrun(input:string){constintentawaitthis.parse(input)if(intentorder_and_recommend){constordersawaitorderTool.execute()constgoodsawaitrecommendTool.execute()return{orders,goods}}}}这时候我才彻底意识到AI 不只是调用接口而是在“编排系统能力”。七、UI 的地位明显下降了以前UI 核心现在AI 核心 UI 展示很多操作变成用户一句话 ↓ AI 完成 ↓ UI 展示结果甚至很多时候UI 根本不参与流程八、数据流也变了传统数据流UI → Service → Data → UI现在变成用户输入 ↓ AI ↓ Service ↓ Data ↓ UI展示变化很关键数据流不再由 UI 触发而是由 AI 触发。九、最大的变化其实是“思维方式”做完这个项目后我最大的感受不是代码变了而是思维方式彻底变了。以前我在想这个页面怎么设计 这个按钮放哪 这个流程怎么走现在我在想用户会说什么 系统怎么理解 能力怎么组合 任务怎么完成十、本质总结如果用一句话总结这次变化我不再是在做“页面应用”而是在做“能力系统”。对比一下维度传统 AppAI App入口页面意图核心UIAgent逻辑固定流程动态任务结构页面集合能力系统结语一开始我只是想给鸿蒙 App 加一个 AI 功能但最后我得到的是一个完全不同的应用架构。如果你现在也在做 AI 鸿蒙 App我给你一个建议不要把 AI 当成功能而要当成系统入口来设计。否则你很快就会遇到架构混乱代码失控AI 能力无法扩展

相关文章:

做了一个 AI 鸿蒙 App,我发现逻辑变了

子玥酱 (掘金 / 知乎 / CSDN / 简书 同名) 大家好,我是 子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚…...

【暖洋葱家庭教育有效果吗】用数据说话:暖洋葱发布年度服务报告,家长满意度高达96.3%

“孩子沉迷手机,说了不听,打又没用,暖洋葱真的能帮我吗?”这是许多家长在咨询时最关心的问题。面对家长的期待,暖洋葱家庭教育坚信:教育不能仅靠口号,效果必须经得起检验。近日,暖洋…...

基于深度学习预测+MPC的车辆轨迹跟踪自动驾驶汽车预测控制Matlab仿真(带参考文献)

✅作者简介:热爱科研的Matlab仿真开发者,擅长毕业设计辅导、数学建模、数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 👇 关注我领取海量matlab电子…...

现代智能汽车系统——照明系统0

摘要:车辆灯具按功能分为四大类:1)外部照明灯(远近光灯、雾灯等),用于道路照明;2)外部信号灯(转向灯、刹车灯等),用于车辆间通信;3&am…...

UI-TARS-desktop完整指南:vLLM高性能推理+Qwen3-4B-Instruct多模态任务闭环实践

UI-TARS-desktop完整指南:vLLM高性能推理Qwen3-4B-Instruct多模态任务闭环实践 想找一个开箱即用、能看能说、还能帮你操作电脑的AI助手吗?今天要介绍的UI-TARS-desktop,就是一个集成了高性能vLLM推理引擎和强大Qwen3-4B-Instruct多模态模型…...

Laravel7.x十大核心特性解析

Laravel 7.x 版本引入了多项重要特性与优化,以下是核心特性概述: 1. 路由签名语法优化 新增 Route::signed() 和 Route::temporarySigned() 方法,简化签名 URL 的生成与验证: // 生成签名路由 Route::signed(verify, Verificati…...

无速度传感器DTC实战:让电机自己“报“转速

基于MRAS的异步电机直接转矩控制/基于转子磁链模型的MRAS转速辨识/基于反电动势模型的MRAS转速辨识/基于无功功率模型的MRAS转速辨识 在simulink搭建的异步电机模型预测转矩控制模型之上进行改进,把转速环中实际转速从测量值更换为MARS观测器的转速估计值&#xff0…...

保姆级教程:JCG Q30 Pro免拆刷OpenWrt 24.10(附常见问题排查)

JCG Q30 Pro免拆刷OpenWrt 24.10全流程指南与深度优化 为什么选择OpenWrt与JCG Q30 Pro的完美组合 在智能家居和网络设备高度发达的今天,路由器早已不再是简单的网络连接设备。对于技术爱好者而言,一台能够自由定制、性能强劲的路由器,就像…...

AI简历姬支持上传JD后逐段改写简历吗?

摘要 是的,AI简历姬支持上传JD后逐段改写简历。其核心工作流程是:上传或粘贴JD -> 解析JD关键词 -> 将你的现有经历与岗位要求逐项对齐 -> 提供匹配度评分、缺口清单和具体的改写建议。这不同于简单的文案润色,而是围绕“岗位要求 -…...

基于OpenFast联合仿真的独立变桨与统一变桨风电机组控制模型

openfast与simlink联合仿真模型,风电机组独立变桨控制与统一变桨控制。 独立变桨控制。 OpenFast联合仿真。 基于载荷反馈的独立变桨控制 风机变桨控制基于FAST与MATLAB SIMULINK联合仿真模型的非线性风力发电机的PID独立变桨和统一变桨控制下仿真模型。 5MW非线性风…...

MLX90632红外温度传感器Arduino驱动库详解

1. ProtoCentral MLX90632 非接触式红外温度传感器库深度解析1.1 项目定位与工程价值ProtoCentral MLX90632 库是专为 Melexis MLX90632 红外非接触温度传感器设计的 Arduino 兼容驱动库,面向嵌入式系统工程师、硬件开发者及电子爱好者提供开箱即用的高精度测温能力…...

VMware Workstation Pro 17 安装 VyOS 软路由保姆级教程(附镜像下载)

VMware Workstation Pro 17 安装 VyOS 软路由全流程指南 在家庭网络或小型办公环境中部署软路由正逐渐成为技术爱好者和IT从业者的新选择。VyOS作为一款基于Linux的开源网络操作系统,以其轻量级、高性能和丰富的网络功能吸引了大量用户。本文将详细介绍如何在Window…...

python+flask+vue3基于web的社区物业管理平台开题

目录技术选型与架构设计项目模块划分开发环境搭建关键API设计示例前端数据交互数据模型设计开发进度安排测试策略部署方案项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作技术选型与架构设计 后端采用PythonFlask框架&#xff…...

线性代数实战指南:从线性空间基础到高阶应用解析

1. 线性空间:从抽象定义到现实世界 第一次接触线性空间这个概念时,我也被那些抽象的定义搞得头晕眼花。直到有一天在玩3D游戏时突然意识到,游戏里角色的移动、旋转和缩放,本质上都是在操作线性空间中的向量。这才明白线性空间不是…...

【中等】将整数字符串转成整数值-Java

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程大家好!欢迎来到我的网站! 人工智能被认为是一种拯救世界、终结世界的技术。毋庸置疑&#x…...

VMware Workstation Pro 17安装openEuler24.03 LTS避坑指南:从镜像下载到网络配置

VMware Workstation Pro 17 安装 openEuler 24.03 LTS 全流程实战与深度优化 作为一款面向数字基础设施的开源操作系统,openEuler 24.03 LTS 凭借其安全稳定、高效易用的特性,正成为企业级应用的新选择。本文将基于VMware Workstation Pro 17虚拟化环境&…...

306. 累加数(dfs回溯)

链接&#xff1a;306. 累加数 题解&#xff1a; class Solution { public:bool isAdditiveNumber(string num) {if (num.size() < 2) {return false;}int begin 0;std::vector<uint64_t> path;return dfs(begin, num, path);}bool dfs(int begin, const std::strin…...

ELF文件格式解析:嵌入式ARM固件的链接、加载与执行机制

1. ELF 文件规范与嵌入式系统二进制格式演进Executable and Linking Format&#xff08;ELF&#xff09;是一种定义明确、高度可扩展的二进制文件格式规范&#xff0c;其核心目标是为不同阶段的软件生命周期——从源码编译、目标文件链接到最终程序加载执行——提供统一、可移植…...

PHP-Resque部署指南:生产环境配置与监控方案

PHP-Resque部署指南&#xff1a;生产环境配置与监控方案 【免费下载链接】php-resque PHP port of resque (Workers and Queueing) 项目地址: https://gitcode.com/gh_mirrors/ph/php-resque PHP-Resque是一个功能强大的PHP任务队列系统&#xff0c;允许开发者将耗时任务…...

SAS9.4在Win10/Win11上的完整避坑实录:从环境准备到逻辑库报错全解决

SAS9.4在Win10/Win11上的完整避坑指南&#xff1a;从环境准备到逻辑库报错全解析 作为统计分析领域的标杆软件&#xff0c;SAS9.4在学术研究和商业分析中占据重要地位。然而&#xff0c;其复杂的安装过程和频繁出现的系统兼容性问题&#xff0c;常常让初学者望而却步。本文将系…...

elasticSearch学习入门-安装使用

文章目录 1. es框架 2. es相关术语 2.1 相关概念 2.2 倒排索引 3. es安装部署 4. header 插件安装 5. es相关api使用 5.1 集群api 5.2 索引相关 5.2.1 创建索引 5.2.2 查看索引库 5.2.3 创建映射关系 5.2.4 删除索引 5.3 数据相关 5.3.1 添加数据 5.3.2 修改数据 5.3.3 删除数据…...

基于2阶RC电池建模、离线辨识参数及EKF的电池SOC估计之旅

2阶RC电池建模离线辨识参数EKF扩展卡尔曼滤波算法做电池SOC估计 采用simulink编写电池模型、EKF扩展卡尔曼滤波算法&#xff0c;在Simulink模型运行时计算SOC&#xff0c;通过仿真结果可以看出&#xff0c;估算的精度很高 注意&#xff1a;在电池管理系统&#xff08;BMS&#…...

jmeter5.6.3源代码编译运行调试

1. jmeter源码编译运行过程 1.1配置java、运行变量,idea中运行 (1)下载jmeter源码,并解压。右键点击“open folder as intellij idea project” (2) 下载gradle8.7安装包,并配置环境变量 (3)下载jdk17并安装,配置环境变量,17版本只需指定JAVA_HOME、path中增加…...

如何应对ROS2 Navigation Framework在水下机器人中的5大导航挑战

如何应对ROS2 Navigation Framework在水下机器人中的5大导航挑战 【免费下载链接】navigation2 ROS2 Navigation Framework and System 项目地址: https://gitcode.com/gh_mirrors/na/navigation2 ROS2 Navigation Framework and System作为强大的机器人导航框架&#x…...

终极指南:如何用Neorg实现太空任务级时间管理——现代笔记工具规划复杂项目全攻略

终极指南&#xff1a;如何用Neorg实现太空任务级时间管理——现代笔记工具规划复杂项目全攻略 【免费下载链接】neorg Modernity meets insane extensibility. The future of organizing your life in Neovim. 项目地址: https://gitcode.com/gh_mirrors/ne/neorg Neorg…...

新手也能看懂的MVC代码审计实战:从目录结构到RCE漏洞,手把手拆解lmxcms 1.4

新手也能看懂的MVC代码审计实战&#xff1a;从目录结构到RCE漏洞&#xff0c;手把手拆解lmxcms 1.4 第一次打开MVC框架的源码目录时&#xff0c;那种"每个文件都认识但组合起来完全看不懂"的体验&#xff0c;相信每个安全研究员都记忆犹新。本文将以lmxcms 1.4为例&a…...

Unity关于Excel表格数据自动转换ScriptableObject的插件

目录 一、插件下载和安装 1.下载链接如下 2.安装 二、使用步骤 1.环境的创建 1.表格的创建 2.创建脚本类 2.表格的导入 3.小功能 总结 一、插件下载和安装 1.下载链接如下 https://download.csdn.net/download/2302_81348032/89721457?spm1001.2014.3001.5503 2.…...

告别流氓软件!这款免费卸载神器,让电脑垃圾彻底“消失”

软件获取地址 卸载软件工具合集 你是否也有过这样的经历&#xff1f; 想卸载一个用不着的软件&#xff0c;系统自带的卸载程序跑了半天&#xff0c;最后只删了个图标。 打开硬盘一看&#xff0c;几百MB甚至几个GB的文件还躺在那里&#xff0c;注册表里更是留了一堆垃圾代码。 …...

探索协同编程新境界:AtomPair 开源项目深度解析

探索协同编程新境界&#xff1a;AtomPair 开源项目深度解析 【免费下载链接】atom-pair An Atom package that allows for epic pair programming 项目地址: https://gitcode.com/gh_mirrors/at/atom-pair 随着远程协作日益成为开发者的新常态&#xff0c;一款强大且高效…...

别再搞混了!PyTorch中net.train()和net.eval()对BatchNorm的影响,一个调试案例讲清楚

深入解析PyTorch中BatchNorm的train与eval模式差异&#xff1a;从调试案例到源码剖析 在深度学习的模型训练过程中&#xff0c;Batch Normalization&#xff08;BN&#xff09;层已经成为现代神经网络架构中不可或缺的组件。然而&#xff0c;许多PyTorch使用者在实际项目中经常…...