惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

J
Java Code Geeks
Martin Fowler
Martin Fowler
MongoDB | Blog
MongoDB | Blog
博客园 - Franky
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园_首页
腾讯CDC
D
Docker
The Cloudflare Blog
量子位
爱范儿
爱范儿
L
LangChain Blog
博客园 - 三生石上(FineUI控件)
博客园 - 司徒正美
aimingoo的专栏
aimingoo的专栏
Blog — PlanetScale
Blog — PlanetScale
Jina AI
Jina AI
Apple Machine Learning Research
Apple Machine Learning Research
Hugging Face - Blog
Hugging Face - Blog
博客园 - 聂微东
Vercel News
Vercel News
MyScale Blog
MyScale Blog

人人都是产品经理

为什么你的产品找不到差异化?90%的失败都卡在第一步上(下) – 人人都是产品经理, 3年从30万到1300万用户、获2200万美元融资,这个AI教育产品用“抽卡”破解了获客难题 – 人人都是产品经理, 园区招商系统怎么做才能真正帮到去化?我加了这一个功能,推广链接转发400次阅读过万 – 人人都是产品经理, AI大事件:OpenAI发完网络安全模型又搞药物研发,小鹏汽车要抓”DeepSeek时刻” – 人人都是产品经理, 电商不是卖货,是一场更残酷的产品经理实战 – 人人都是产品经理, 没想到,活动营销又回来了! – 人人都是产品经理, 为何All-in海外KOC:一场关于AI时代窗口期的豪赌 – 人人都是产品经理, 重新理解企业的内部协作 – 人人都是产品经理, 苹果的 AI 战略到底是什么? – 人人都是产品经理, 医疗智能体·第2讲——合规护城河:等保、PIPL与HIPAA的架构实战 – 人人都是产品经理, 向量知识库五步法:从“答非所问”到“精准回复” – 人人都是产品经理, 鸿蒙PC三方库构建总指挥HPKBUILD(sha)库为例 – 人人都是产品经理, 何时该用LLM?AI产品经理的LLM设计指南 – 人人都是产品经理, 医疗信息领域的需求方、决策方、准入方以及关注点(二) – 人人都是产品经理, 即梦涨价:一场被误读的「傲慢」 – 人人都是产品经理, 面试AI PM必答题:Hermes和OpenClaw的区别,如何讲清楚业务价值 – 人人都是产品经理, AI的下一张船票:世界模型——AI产品经理必须理解的技术拐点 – 人人都是产品经理, 小红书做GEO,怎么让AI信你?记住这 3 个重要信息 – 人人都是产品经理, 5 家印度 AI 初创公司,看看印度 AI 再做什么 – 人人都是产品经理, AI项目跨团队协作:产品技术业务如何不打架 – 人人都是产品经理, Agentic Workflow(智能体工作流):让AI从”答案生成器”变成”数字员工” – 人人都是产品经理, lycium_plusplus 项目全景解读:OpenHarmony 三方库构建的“大管家” – 人人都是产品经理, 从爆单救火到前置履约:两套预采策略,把生鲜大促履约效率拉满 – 人人都是产品经理, 什么时候该补货?我用一轮数据做了一个决定 – 人人都是产品经理, 从“机械兜底”到“动态分流”:AI客服重复进线治理的4大底层逻辑 – 人人都是产品经理, 抖音拼效率,红书拼洞察 – 人人都是产品经理, 全民狂欢与退潮——为什么龙虾这波热潮冷却得如此之快? – 人人都是产品经理, Stripe押注!MPP重塑全球支付 – 人人都是产品经理, 小红书GEO:AI引用你的内容,不是因为你对,而是因为你看起来可信 – 人人都是产品经理, 前百度副总裁押注办公Agent,日韩付费爆发,Manus迎来强劲对手 – 人人都是产品经理,
CodeGenie基于图片生成鸿蒙应用UI代码,提升5类应用场景UI开...
华为开发者联盟 · 2025-10-13 · via 人人都是产品经理

你是否曾遇到过这样的场景:看到一个精美的APP界面,想要借鉴实现却苦于手动编写代码的过程繁琐耗时?或者作为开发者,你拿到了产品经理发的截图,却需要从头开始编码实现?

现在,这一切都有了革命性的变化!鸿蒙AI辅助编程工具CodeGenie的最新功能——根据图片自动生成鸿蒙应用页面代码,正在重新定义应用开发流程。

一、“手敲页面代码”到“图生页面代码”

只需将你的APP截图或设计稿截图(JPG/PNG)上传至CodeGenie ,即可生成可编译运行的鸿蒙 ArkTS 页面代码,包括ArkUI 组件、布局结构、组件属性等,快速完成页面框架搭建。

这不仅仅是简单的图像识别,而是真正理解页面结构的智能生成。当上传图片后,AI会进行多层次的信息分析和处理,包括基础元素识别、布局结构解析、样式与文本提取,从而实现从“手敲页面代码”到“图生页面代码”的梦想

基础元素识别:

  • 组件类型判断:可以区分不同类型的UI组件,如按钮、输入框、列表项等
  • 图像区域划分:识别图片、图标、背景图等视觉元素,并分析尺寸与比例

布局结构解析:

  • 容器关系推断:通过元素的空间分布推断布局容器类型,识别Column、Row、Grid等布局关系
  • 间距尺寸测量:计算元素自身的尺寸及其相互间的间距关系,生成对应的布局参数
  • 对齐与分布:识别左/右/顶/底对齐、等距/两端分布等,并输出对应配置参数

样式与文本提取:

  • 样式属性解析:识别背景色、字体、边框等视觉属性,生成对应的样式代码
  • 文本内容提取:提取界面中的文字信息,包括标题、正文、按钮文字等,并尽量保持原文风格和格式

二、为什么“只靠图片也能还原”

“图生代码“业界挑战:

“图生码”即为Screenshot2code场景,比较早的研究包括基于小模型的pix2code和img2cook,以及当前基于大模型的Flame-Code-VLM和各种依托VLM/LLM构建的AI辅助产品(比如Cursor、V0等)。 当前业界的挑战主要有以下2点:

1. 视觉理解精度不足:

生成代码编译预览后,与原始输入图片进行比较可直观反映还原效果,因此视觉还原度往往是评价生成质量的首要标准。UI 页面通常涵盖组件类型、尺寸、样式、布局与相对位置等多种元素,不同于UX稿已经包含了详细的样式信息, 图片的样式是以像素承载的,需要额外去进行解析。如果图片理解准确度不高,会导致生成结果与原设计在视觉一致性上出现显著偏差。

2. 代码效果质量不稳定:

对于生成的代码,可从“可编译预览率”与“代码质量”两个维度进行评估:

可编译预览率:

对于大颗粒的工程级代码生成场景,若生成的代码无法即时预览,会比较大的影响用户体验,特别是在0-1 原型构建的场景。实时预览可使用户快速判断生成结果是否可用,也可以为后续调整提出方向。当前基于VLM/LLM的方式单次生成编译预览率低,往往需要人工调试修复,通常耗时10min以上且预览依旧难以保证。而且在鸿蒙场景下,模型更容易出现幻觉。

代码质量:

仅还原视觉布局与样式并不足以满足生产要求,代码还需符合软件工程规范(如合理使用循环结构foreach、避免变量冗余等)。当前大模型在复杂场景下,对开发框架与编码规范的理解和实现能力仍存在较大差距,制约了生成代码的实际可用性。

我们的解法:

针对以上挑战,我们在鸿蒙场景下探索了多种生成方式,考虑到当前 VLM/LLM 在端到端图片到代码生成中的可用性仍较低,我们最终选择了“先解析、后生成”的架构方案。首先基于 VLM 与目标检测模型实现高精度视觉解析,达到85%以上的元素解析准确率,然后基于鸿蒙知识库增强,构建需求分析、代码生成、验证修复三类Agent协同生成最终的ArkTS代码。目前可实现2min左右完成页面代码生成,可编译预览率接近100%,自Beta试用以来线上采纳率约40%。

1. 大小模型结合的高精度元素解析:

直接基于 VLM 执行目标检测面临输出 token 易超长、推理耗时高,以及标签体系与模型本身不匹配导致的细粒度解析不稳定等问题。综合考虑微调成本、时延,我们采取了先用小模型分块,再用VLM进行详细解析的方式。

模块划分:首先我们引入了专用 UI 元素检测小模型对图片进行初步区域识别,输出各个模块的位置和类别信息。模型输出的区域用于后续精细化解析,而标签体系一部分可以直接映射到鸿蒙容器组件。

VLM进行详细解析:在拿到一层模块后,我们用VLM每个模块进行并发解析,解析出各个模块的组件名称、大小高度、文字、字体、位置等信息,最终构建出完整的组件树。过程中还融入了鸿蒙知识库中预定义的常用字体和布局信息,以降低生成噪声和模型幻觉。

解析结果举例:

{
“global_info”: {
“app_type”: “xx…”,
“page_function”: “首页/个人中心/…”,
“color_scheme”: [“主色HEX”, “辅色HEX”]
},

“layout_structure”: [
{
“area_type”: “顶部导航栏”,
“components”: [
{
“component_type”: “返回按钮”,
“position”: [[5%,3%], [15%,10%]],
“style”: {
“icon”: “箭头方向(left)”,
“color”: “# 333333”,
“size”: “24x24pt”
},
“interaction”: {
“type”: “clickable”,
“target”: “返回上一页”
}
}
]
}
],
“detail_annotations”: {
“key_elements”: [“搜索框”, “主功能入口”],
“dynamic_area”: “轮播图(第3屏)”,
“business_flow”: “旅游酒店预订流程入口”
}
}

2. 基于 LLM + DSL2Code 的混合生成架构:

尽管当前 LLM 对 ArkTS 的生成能力已有显著提升,但在大颗粒工程代码生成中,仍存在混淆 TypeScript 语法、版本兼容性问题等挑战。为此,我们构建了融合 LLM 生成与 DSL 转换的双路径机制。

鸿蒙知识增强的LLM 生成链路:

在获取组件树后,求分析 Agent 会进一步明确页面布局与功能设计,再由 LLM 生成对应代码。为提升准确性,我们引入了鸿蒙相关组件文档与样例代码作为 RAG 知识库,增强模型对 ArkTS 的生成能力。由于单次生成仍可能存在缺陷,系统还集成了验证-修复循环机制:通过获取编译结果、报错信息让LLM进行迭代验证修复,确保输出代码具备可运行性。

DSL2Code确定型生成路径: 

考虑到基于LLM的生成任有不确定性和时延开销,对于一些比较明确的场景,我们实现了一套DSL2Code系统,直接将解析所得的组件树转换为代码。DSL2Code有高效、确定性强的优点,但生成的代码在工程规范性上可能不足,因此系统会进一步调用重构 Agent,对输出进行自动化重构与规范整理,提升代码可维护性。

三、一分钟了解工作流

如何使用“图生代码”功能?以下我们以生成“鸿蒙世界APP首页”为例,演示从截图生成鸿蒙页面代码的完整流程:

第一步:启动生成命令

在CodeGenie窗口输入框输入”/”,调出指令面板,选择Generate Page,进入页面生成界面

第二步:上传页面截图

在窗口界面中点击添加图片,上传鸿蒙世界APP首页截图,点击图标发送。

第三步:AI自动解析与生成

工具将自动完成以下任务:

  • 解析组件和布局,包括搜索框、顶部背景图、主内容区域、文章列表、底部导航栏等。
  • 还原文本内容,如标题、描述、统计数据和右侧分类图标等。
  • 提取样式信息,包括颜色、字体大小、间距等视觉属性。
  • 生成 ArkTS 代码并实时预览渲染效果,确保视觉一致性。

第四步:保存并集成至工程

点击保存到工程,工具将自动生成:

  • 完整的ArkTS代码文件
  • 配套的资源文件
  • 可直接编译运行的项目

生成所有代码文件默认保存在generated目录下,可以直接编译运行,能够有效减少调试的成本。

当前版本已对美食、旅游、购物、新闻和教育等重点垂直领域进行了深度优化,生成效果较为精准。同时,其它领域也具备一定的泛化能力,我们也会持续提升生成质量与适用范围。

结语:开发新范式已来

这不仅仅是效率提升工具,更是连接视觉设计与代码实现的智能桥梁。它将开发者从繁琐的界面编码中解放出来,让每个人都能更专注于业务逻辑和用户体验创新。

无论你是想要快速原型验证的创业者,还是需希望提升开发效率的开发者,这款工具都将为你打开新的可能性。快来试试用一张图片,生成你的第一个鸿蒙页面吧。