AI写鸿蒙UI:10个跑崩8个,剩下2个看运气

AI写鸿蒙UI:10个跑崩8个,剩下2个看运气


先把结论扔出来,省得你翻半天:

让 AI 写 ArkTS 的核心 UI 组件,10 个里面 8 个跑不起来。剩下 2 个里面还有 1 个会在真机上崩溃。

我手头在做的 App 雷达鸭(鸿蒙版)就是这个测试场。三个月下来,我把 AI 自动补全在核心 UI 编码时直接关了------但 AI 写注释、写单测、写样板路由代码比人快 3 倍,这事我天天用。

这篇不是劝退 AI,是劝你把 AI 用对地方

一、AI 写 ArkTS 组件最常翻车的三个地方

我把 AI 写错的代码攒了一堆,按错误类型分了三档。看下面这段 AI 生成的「瀑布流卡片组件」,你猜错在哪:

typescript 复制代码
// AI 生成的版本(看起来没问题,跑起来崩)
@Component
struct WaterfallCard {
  @State item: CardItem = new CardItem()
  @Builder ItemBuilder() {
    Column() {
      Text(this.item.title)
      Image(this.item.cover)
    }
  }
  build() {
    List({ space: 10 }) {
      ForEach(this.dataSource, (item: CardItem) => {
        ListItem() {
          this.ItemBuilder()  // ❌ 错误 1:Builder 不能在 ListItem 里直接用
        }
      })
    }
  }
}

错误有三:

  1. Builder 装饰器的方法不能直接作为组件在 ListItem 里实例化 ,必须用 if/else 或独立组件包裹。
  2. ForEach 没传第三个参数 (item, index) => key------鸿蒙的 ForEach 第二个参数允许省略 key,但省略后无法触发 UI 刷新,这是个隐性 bug。
  3. @State item 应该是 @State @Watch('onItemChange') item,但 AI 不知道我需要监听 item 变化去请求图片清晰度。

AI 错在哪?它不知道 ArkTS 的 UI 框架是声明式 + 装饰器的复合体。它把 ArkTS 当成普通的 TypeScript 在写,语法上过得去,运行时就崩。

二、我手写的对照版本

typescript 复制代码
// 手写版
@Component
struct WaterfallCard {
  @State @Watch('onItemChange') item: CardItem = new CardItem()
  private dataSource: CardItem[] = []

  onItemChange() {
    // 触发图片高清请求
  }

  @Builder
  private itemCard(item: CardItem) {
    Column() {
      Text(item.title)
      Image(item.cover)
    }
  }

  build() {
    List({ space: 10 }) {
      ForEach(
        this.dataSource,
        (item: CardItem) => item.id.toString(),  // 显式 key
        (item: CardItem) => {
          ListItem() {
            this.itemCard(item)  // Builder 调用,但参数是 item
          }
        }
      )
    }
  }
}

区别一眼就能看出来:关键差异不在「能不能写出来」,在「为什么这么写」 。AI 没有项目上下文,不知道 onItemChange 要请求高清图,不知道 key 缺失会丢状态。

你要是把 AI 的版本直接复制粘贴进项目,跑起来没崩算你运气好。

三、为什么 ArkTS 这么特殊?训练数据少

我去 Hugging Face 搜过,开源鸿蒙 ArkTS 代码仓库数量大约是 React 的 1/200,TypeScript 的 1/500。AI 学都没学过几个,怎么写得对?

更麻烦的是,ArkTS 是个装饰器 + 状态 + 渲染三件套强耦合 的语言。@State@Prop@Link@Builder@Extend@Styles 这些装饰器互相之间的组合规则,文档里有,但代码示例不够。AI 写错不是它笨,是真没见过几个对的例子。

这也解释了为什么 Vue、React 的 AI 生成质量高很多------这几个框架的代码在 GitHub 上是海量。

四、AI 真正擅长的是这三件事

说了这么多 AI 不行的,但 AI 在雷达鸭项目里我天天用,主要在三个地方:

1. 写 JSDoc 注释

typescript 复制代码
/**
 * AI 生成的注释(30 秒)
 * @param id 案例唯一标识
 * @returns 案例详情对象,未找到时返回 null
 */
async function fetchCaseDetail(id: string): Promise<CaseDetail | null> { ... }

这种纯模板化的注释 AI 写得又快又准。我手写要 1 分钟,AI 30 秒。

2. 写单测模板

typescript 复制代码
// AI 生成的单测骨架
describe('fetchCaseDetail', () => {
  it('should return detail when id exists', async () => {
    const result = await fetchCaseDetail('valid_id')
    expect(result).toMatchObject({ id: 'valid_id' })
  })
  it('should return null when id not found', async () => {
    const result = await fetchCaseDetail('invalid')
    expect(result).toBeNull()
  })
})

骨架给出来后,我再补充业务断言。这比自己从零写快 3 倍。

3. 写样板路由/配置

比如 router 的批量注册、.hvigorfile.ts 的 build 脚本、.app.json 的页面声明------这种纯字符串拼接的活,AI 是碾压式的。

五、我现在的 AI 协作三区法则

我把自己写代码的状态分了三类:

区域 AI 接管度 典型工作
绿区(机械活) 100% 注释、单测骨架、配置、批量重命名
黄区(套路活) 50% 工具函数、数据转换、简单列表渲染
红区(决策活) 0% 状态管理、动画、复杂 UI、API 设计

绿区 AI 全权代理,黄区我写框架 AI 补细节,红区 AI 闭嘴我自己来。

三个月下来,绿黄红的工作量占比大约是 4:4:2。AI 看似只干了 40% 的活,但这 40% 是最不费脑的------相当于把每天 2 小时的重复劳动外包出去。

六、最后给你一个判断标准

下次你让 AI 写 ArkTS 代码,先问自己一个问题:

这段代码,AI 如果写错了,我能在 5 分钟内看出来吗?

能看出来,交给 AI。看不出来,自己撸。

核心 UI 组件的 bug 我可能要调半天,这种活绝不让 AI 碰。但工具函数、注释、单测------错了也不致命,AI 写得快就让它写。

这是我从三个月真实项目里总结出来的判断标准,没有银弹,但能让你少踩 80% 的坑


你用 AI 写 ArkTS 时翻过车吗?是哪类代码?留言聊聊。


关于作者:十年以上软件开发老兵,软件设计师 + 注册人工智能工程师 + agent 工程师,主要写鸿蒙 ArkTS 北向开发和 Web 前端,最近在折腾 AI 自动化提效。不定期在 CSDN 分享一些鸿蒙 / AI 方向的实战笔记。

本文遵循 MIT 协议,转载请注明出处。

相关推荐
伶俜662 小时前
鸿蒙原生应用实战(十八)ArkUI 记账本:SQLite 账单 + 图表统计 + 分类管理
jvm·sqlite·harmonyos
枫子有风2 小时前
AI编程-Vibe coding(大厂常问问题)
人工智能·ai编程
沉默王二2 小时前
别再写Prompt了!Loop Engineering让Agent自己转起来,一条命令顶你干一天!
agent·ai编程·claude
葫芦和十三3 小时前
Agent 感知|语意压缩
openai·agent·ai编程
Davina_yu3 小时前
自定义弹窗:使用CustomDialogController实现复杂交互(27)
harmonyos·鸿蒙·鸿蒙系统
Swift社区3 小时前
当 AI 接管游戏世界:鸿蒙游戏 Workspace Runtime 架构揭秘
人工智能·游戏·harmonyos
乘风gg3 小时前
手把手带你实践历时一年总结的 AI Code Review 最佳工作流!
前端·ai编程·cursor
世人万千丶3 小时前
家庭记账本小应用 - HarmonyOS ArkUI 开发实战-Tabs与List组件-PC版本
华为·list·harmonyos·鸿蒙
至乐活着3 小时前
HarmonyOS开发深度解析:网络请求与数据持久化实战全攻略
网络请求·harmonyos·arkts·数据持久化·鸿蒙开发