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

做了一个 AI 鸿蒙 App,我发现逻辑变了
在这里插入图片描述

子玥酱(掘金 / 知乎 / ZEEKLOG / 简书 同名)

大家好,我是子玥酱,一名长期深耕在一线的前端程序媛 👩‍💻。曾就职于多家知名互联网大厂,目前在某国企负责前端软件研发相关工作,主要聚焦于业务型系统的工程化建设与长期维护。

我持续输出和沉淀前端领域的实战经验,日常关注并分享的技术方向包括前端工程化、小程序、React / RN、Flutter、跨端方案,
在复杂业务落地、组件抽象、性能优化以及多端协作方面积累了大量真实项目经验。

技术方向:前端 / 跨端 / 小程序 / 移动端工程化
内容平台:掘金、知乎、ZEEKLOG、简书
创作特点:实战导向、源码拆解、少空谈多落地
文章状态:长期稳定更新,大量原创输出

我的内容主要围绕 前端技术实战、真实业务踩坑总结、框架与方案选型思考、行业趋势解读 展开。文章不会停留在“API 怎么用”,而是更关注为什么这么设计、在什么场景下容易踩坑、真实项目中如何取舍,希望能帮你在实际工作中少走弯路。

子玥酱 · 前端成长记录官 ✨
👋 如果你正在做前端,或准备长期走前端这条路
📚 关注我,第一时间获取前端行业趋势与实践总结
🎁 可领取 11 类前端进阶学习资源(工程化 / 框架 / 跨端 / 面试 / 架构)
💡 一起把技术学“明白”,也用“到位”

持续写作,持续进阶。
愿我们都能在代码和生活里,走得更稳一点 🌱

文章目录

引言

一开始,我只是想做一件很简单的事:

在鸿蒙 App 里接入一个 AI 功能。

比如:

  • 做一个智能搜索
  • 加一个 AI 助手
  • 支持自然语言操作

听起来很普通,对吧?

但当我真的把一个 AI 鸿蒙 App 从 0 做到能用之后,我发现一件很不对劲的事:

不是我在给 App 加 AI,而是 AI 在重写整个 App 的逻辑。

而且这种变化,不是 UI 层面的,而是:

架构级别的变化 

一、最开始,我只是加了一个“AI 页面”

最初的实现很典型:

首页 ↓ 新增一个 AI 页面 ↓ 调用大模型接口 ↓ 展示结果 

代码大概是这样:

@Entry@Component struct AIPage {@State input:string=""@State reply:string=""asyncsend(){this.reply =await aiService.chat(this.input)}}

当时我以为:

“这不就完成了吗?”

但很快问题就来了。

二、AI 开始“绕过页面”

用户开始提一些请求:

帮我查一下订单 帮我推荐几个商品 帮我看看今天有什么安排 

这些需求本来应该对应:

订单页 商品页 日程页 

但现在:用户根本没有进入这些页面,AI 直接返回了结果。

这时候我第一次意识到:

页面,不再是唯一入口了。

三、Service 层突然变成核心

以前我的代码结构是:

Page → Service → API 

但现在变成:

AI → Service Page → Service 

也就是说:Service 被两个入口调用:

  • UI
  • AI

问题马上暴露出来:

1 有些 Service 写在页面里

// Page 内部逻辑asyncloadOrders(){returnawait api.get("/orders")}

AI 根本调不了。

2 有些逻辑和 UI 强绑定

this.loading =truethis.orders =await api.get()this.loading =false

AI 也用不了,于是我不得不重构:

把所有业务逻辑从页面里“抽出来”。

四、我开始把能力“服务化”

我做的第一步是:

拆 Service 

例如:

exportclassOrderService{asyncgetOrders(userId:string){returnawait api.get("/orders")}}

然后 UI 和 AI 都调用:

await orderService.getOrders(userId)

这一刻变化很明显:

App 不再是页面集合,而是能力集合。

五、我又加了一层:Tool

很快我发现一个新问题,AI 并不知道该调用哪个 Service。

于是我加了一层:

Tool 

例如:

exportclassOrderTool{asyncexecute(params){returnawait orderService.getOrders(params.userId)}}

AI 只需要:

调用 Tool 

而不用关心底层实现,这时候架构变成:

AI → Tool → Service 

六、我不得不引入“Agent”

再往后,问题又来了。用户输入开始变复杂:

帮我查订单,并推荐相关商品 

这已经不是一个 Service 能完成的任务,我需要:

多个步骤 多个能力 组合执行 

于是我引入了:

Agent 

示例:

exportclassAgent{asyncrun(input:string){const intent =awaitthis.parse(input)if(intent ==="order_and_recommend"){const orders =await orderTool.execute()const goods =await recommendTool.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 能力无法扩展

Read more

Qt 正则表达式(QRegularExpression类)详解

Qt 正则表达式(QRegularExpression类)详解

Qt 正则表达式(QRegularExpression类)详解 * 一、正则表达式介绍 * 1、核心语法规则 * 2、实用示例 * 3、常用场景 * 4、常用正则表达式 * 5、工具推荐 * 二、 QRegularExpression类详解 * 1、核心功能 * 2、基本使用步骤 * 3、常用方法 * 4、全局匹配示例 * 5、模式选项 * 6、常见用例示例 * 6.1、验证电子邮件地址 (简化版) * 6.2、提取 URL 协议和域名 * 6.3、替换所有数字 * 7、注意事项 * 三、代码示例 * 1、效果展示 * 2、源码分享

最大无本体具身数据集开源!简智机器人联合百度百舸,加速具身智能应用落地

1.    简智机器人开源行业最大规模的无本体具身数据集 1 月 5 日,简智新创(北京)机器人科技有限公司(以下简称「简智机器人」)正式开源「RealOmni-Open DataSet」无本体具身数据集,数据集总计包含超过 10,000 小时、百万条以上的真实操作记录,是目前行业已知数据规模最大且每一项技能数据量最多的无本体开源数据集。 当前,简智机器人能够实现每日万小时以上级别的持续数据采集与处理,不断为数据集注入鲜度,并保障了其持续扩展的能力。 简智机器人专注于通用具身智能全链路解决方案,为行业提供标准化、自动化的数据流基础设施服务。近日,简智机器人完成第三轮融资,成为具身智能数据基建细分赛道融资进展最快的企业。 「RealOmni」属于无本体具身数据集,这类数据集的核心是将数据采集的源头从「机器人」转移到了「人」,采集场景多,数据真实性高。传统数据集需要工作人员操作机器人,依赖机器人本体在特定环境(如实验室等)中运行获取数据,场景与机器人传感器性能受限、且数据维度少、精准度低。而无本体数据集的采集不依赖于特定机器人硬件,工作人员通过穿戴 GenDas 无感设备,

OpenCowork 实测:支持本地文件、飞书机器人的 Windows AI 助手(只需配置 Token)

目的 找一款window 本地ai助手,但有如下要求 1)windows一键安装,带gui界面,操作简单 2)直接操作本地文件,能生成和写入本地文件内容 3)配置token 即可,无需绑定账号登陆 测试效果 OpenCowork 可直接操作本地电脑文件,并支持接入飞书机器人应用,实现类似 OpenClaw 的电脑操作能力; 但整体更适合本地文档生成、资料整理、代码或文本批量处理等场景。相比云端 AI,在生成速度、工具能力和复杂任务支持方面仍有差距,尤其在长文档生成和多工具协作时效率与稳定性较弱,因此更适合作为本地文件处理的辅助工具,而非替代云端 AI。 OpenCowork 很多自动化能力依赖python,你可以自己升级一下python,然后让OpenCowork 检测环境是不是最新的,并升级一下; 1 安装 OpenCowork 客户端 下载地址 https://github.com/AIDotNet/OpenCowork 找右侧侧

FPGA实现MIPI协议全解析 + MIPI协议完整时序规范

FPGA实现MIPI协议全解析 + MIPI协议完整时序规范

一、MIPI协议核心基础认知 百度网盘链接:https://pan.baidu.com/s/1rDsLAXGj8WbX82teSkhuIw?pwd=1234 提取码: 1234 包含FPGA系统学习资料,免费分享 1. MIPI协议定义与核心特点 MIPI(Mobile Industry Processor Interface,移动产业处理器接口)是由MIPI联盟制定的高速串行差分接口协议,最初为手机、平板等移动设备设计,目前广泛应用于FPGA/嵌入式的图像采集(摄像头)、显示驱动(液晶屏)、高速数据传输 场景。 核心特点: ✅ 采用差分信号传输,抗干扰能力强、EMI电磁辐射小; ✅ 支持高低速双模切换,兼顾高速大数据传输和低速控制指令传输; ✅ 串行传输,引脚数量极少(对比并行RGB的几十根引脚,MIPI仅需时钟+1~4路数据差分对),硬件设计简洁; ✅ 传输速率高:单lane(数据通道)速率可达1Gbps~