Browse by type
AGenUI: 同步支持 iOS、Android 和 HarmonyOS 的高性能 A2UI 渲染引擎

English | 中文
本项目正在积极开发与持续演进中,欢迎贡献代码、反馈意见和参与讨论。
发布于 2026-06-26
UICollectionView / Android RecyclerView / 鸿蒙 cell 复用),按方向分离渲染路径。新增 List Item 曝光埋点。id 字段,移除 styles 依赖。onDestroy 方法。gap 属性支持:引擎支持 CSS gap 属性,Flex 布局中子元素间距无需手动设置 margin。AGenUI 是同步支持 iOS、Android 和 HarmonyOS 三端的 A2UI SDK,它基于并完整实现了 Google 开源的 A2UI v0.9 协议,能够在移动设备上实时渲染 LLM 生成的可交互界面 UI 的流式数据。它底层由一个跨平台的共享 C++ 核心引擎驱动,三端渲染引擎则基于核心引擎下发的组件协议,使用系统原生能力完成绘制。
AGenUI 采用系统原生 UI 能力绘制可交互的卡片、表单、列表、图片、媒体播放器等,提供高性能、流畅的操作体验。

AGenUI 采用共享 C++ 核心引擎 + 三端组件渲染引擎的设计。 C++ 层实现三端通用的流式数据解析、虚拟组件树管理、绘制数据缓存、主题/样式解析、组件变化 diff 识别等能力。C++ 层将解析后的组件协议同步到三端渲染引擎触发绘制。
| 路径 | 内容 |
|---|---|
core/ |
C++ 核心引擎 — 解析器、差分算法、布局、Function Call 框架 |
core/include/ |
供平台桥接层引用的公共 C++ API |
platforms/ios/ |
iOS 组件渲染器 + Objective-C 桥接层 |
platforms/android/ |
Android 组件渲染器 + JNI 桥接层 |
platforms/harmony/ |
HarmonyOS 组件渲染器 + NAPI 桥接层 |
playground/ |
三端演示应用,用于开发与调试 |
scripts/ |
各平台构建脚本 |
以下 18 个组件实现了 A2UI 协议规范,三端均支持。
| 组件 | 说明 |
|---|---|
Text |
样式化文本,支持 h1–h5、body、caption 等变体 |
Image |
网络图片,支持缩放模式与圆角 |
Icon |
通过 Unicode / SVG 映射渲染图标 |
Divider |
水平或垂直分隔线 |
Video |
原生视频播放器,支持拖拽进度、控件自动隐藏 |
AudioPlayer |
音频播放器,含进度条 |
Button |
可点击按钮,触发 Action 事件 |
Row |
水平弹性容器 |
Column |
垂直弹性容器 |
Card |
带阴影的卡片容器 |
List |
可滚动列表,支持静态子项或模板驱动子项 |
Tabs |
标签栏,支持可切换面板 |
Modal |
原生对话框浮层 |
TextField |
文本输入框,支持可选校验 |
CheckBox |
布尔开关 |
Slider |
数值范围输入 |
ChoicePicker |
单选 / 多选选择器 |
DateTimeInput |
日期与时间选择器 |
以下 4 个组件随 SDK 捆绑发布,不属于 A2UI 协议规范。
| 组件 | 说明 |
|---|---|
Table |
数据表格,使用 Yoga 子布局 |
Carousel |
图片 / 内容轮播 |
Web |
内嵌 WebView |
RichText |
HTML 富文本渲染 |
以下 3 个组件在 Playground 中完成注册和应用,用于演示如何通过 API 接入自定义组件。
| 组件 | 说明 |
|---|---|
Chart |
柱状图、折线图、饼图 |
Markdown |
Markdown 渲染,支持流式输出 |
Lottie |
Lottie 动画播放 |
你可以在运行时使用相同的 API 注册自己的组件,参见快速上手章节。
仓库根目录提供了 agenui_catalog.json,这是一个符合 A2UI v0.9 规范的独立(freestanding)Catalog JSON Schema 文件,所有外部 $ref 均已内联,无需任何外部依赖即可独立使用。
覆盖范围:
Table、Carousel、Web、RichText),以及 3 个 Playground 示例组件(Chart、Markdown、Lottie)Styles(通用样式属性)和 TextStyles(文本专属样式属性)如何使用:
在对接 LLM Agent 时,将此文件内容或其托管 URL 作为 catalogId 写入 A2UI ClientCapabilities 的 supportedCatalogIds 字段,Agent 将以此 Schema 为约束生成严格合规的 A2UI JSON 消息,确保渲染器能够正确解析和渲染所有下发的 UI 组件。
仓库 skills/a2ui-generation/ 目录下附带了一份独立的 A2UI 协议生成 Skill,可挂载到任意支持 Agent Skills 机制的 Agent(如 Claude Code、Cursor、Codex、Gemini CLI、Windsurf、GitHub Copilot 等)中使用,让 LLM 依据 Skill 内置的设计规范与约束,将自然语言 Query 转换为 AGenUI 可直接渲染的 A2UI 协议消息(updateComponents / updateDataModel)。
一行命令安装(推荐)
npx skills add AGenUI/AGenUI
支持 Claude Code、Cursor、Codex、Gemini CLI、Windsurf、GitHub Copilot 等 55+ AI coding agent runtime。
手动安装
git clone https://github.com/AGenUI/AGenUI.git
cp -r AGenUI/skills/a2ui-generation ~/.claude/skills/
其他 runtime 请将
skills/a2ui-generation/目录复制到对应的 skills 目录(如~/.cursor/skills/、~/.codex/skills/)。
安装完成后,在 Agent 中通过 Query 描述你想要的界面,Skill 会引导 LLM 产出符合 A2UI v0.9 规范的 JSON 协议。
不同 LLM 生成的 A2UI 结果会有一定差异。建议在实际接入时试用多个模型,选择最贴合你业务场景的那一个。
| 平台 | 工具链 |
|---|---|
| Android | Android Studio Hedgehog+、NDK 27.3.13750724、API 35 SDK、JDK 11 |
| iOS | Xcode 15+、CocoaPods、CMake |
| HarmonyOS | DevEco Studio 4.0+、ohpm |
所有构建脚本位于 scripts/ 目录。core/ 中的 C++ 引擎会自动编译,无需单独准备。
Android
# Release AAR(默认)
./scripts/android/build.sh
# Debug AAR
./scripts/android/build.sh --debug
# Release AAR + native 符号文件(用于反解,详见下文「Native debug symbols」)
./scripts/android/build.sh --with-symbols
# 发布到本地 Maven(~/.m2)
./scripts/android/build.sh --publish-local
# 发布 debug AAR 到本地 Maven
./scripts/android/build.sh --debug --publish-local
# 发布到远程 Maven(需 MAVEN_URL / MAVEN_USERNAME / MAVEN_PASSWORD 环境变量)
./scripts/android/build.sh --publish-maven
# 构建前清理
./scripts/android/build.sh --clean
AAR 输出到 dist/android/release/。
Native debug symbols(Android,opt-in)
./scripts/android/build.sh --with-symbols 会在 release 构建里额外产出 native 符号文件,用于反解线上崩溃栈:
-Wl,--strip-all,让 linker 输出带 DWARF 的 .so。objcopy --only-keep-debug 把 DWARF 拆出来到 lib<name>.so.debug,再把原 .so strip 掉并用 .gnu_debuglink ELF section 关联回去。.so.debug 打包到 <rootProject.name>-symbols.aar,和 release AAR 并排放在 build/outputs/aar/。release AAR 体积不会变 —— AGP 本来就会在打包前 strip 一次。.so.debug 后缀是 GNU/LLVM 工具链约定(objcopy 默认的 debug 文件扩展名),与 Android 的 debug buildType 无关,两个 AAR 都是同一次 release 编译产物。
反解某个崩溃地址,解压 symbols AAR 后直接用标准工具:
unzip -j <name>-symbols.aar 'jni/arm64-v8a/*.so.debug' -d ./symbols/
# 单个地址
$ANDROID_NDK/toolchains/llvm/prebuilt/<host>/bin/llvm-addr2line \
-e ./symbols/lib<name>.so.debug -f -C 0xADDR
# 整段 logcat 栈
$ANDROID_NDK/toolchains/llvm/prebuilt/<host>/bin/ndk-stack \
-sym ./symbols/ -dump crash.log
开关默认 OFF —— 开源构建不会受影响,需要时显式开启。
iOS
# XCFramework(Release,默认)
./scripts/ios/build.sh
# 单架构 Framework,Debug
./scripts/ios/build.sh -t framework -c Debug
# 强制 pod install 后构建
./scripts/ios/build.sh --pod-install
HarmonyOS
# HAR 包(Release,默认)
./scripts/harmony/build.sh
# Debug 构建
./scripts/harmony/build.sh --mode debug
# 自定义输出目录
./scripts/harmony/build.sh -o /path/to/output
我们在目录 playground 中为每个平台建立了独立的 Playground 工程应用,你可以打开并运行 Playground 工程,体验完整的 A2UI 组件渲染效果。Playground 工程直接引用 AGenUI 源码,并支持进行断点调试。
Android Playground
playground/android/gradle.properties 中的配置调整依赖模式:# 源码模式:修改 c++ engine 和 Android 端渲染引擎代码时立即生效
agenui.sdk.source=true
# AAR 模式:不再引用源码,而是引用已经打包的 SDK 构建包(推荐仅调试 Playground 时使用)
agenui.sdk.source=false
iOS Playground
playground/ios/Playgroundpod install 安装依赖并生成 Xcode 工程。执行成功后,将在 playground/ios/Playground 目录生成 Playground.xcworkspacePlayground.xcworkspace,选择模拟器,触发代码编译和运行Playground.xcworkspace 已经同时包含 AGenUI 源码和 Playground target
HarmonyOS Playground
playground/harmony 目录项目通过 srcPath 引用 platforms/harmony/agenui/,因此对 AGenUI 源码的任何修改在下次构建时都会自动生效
关于如何将源码构建为可直接集成的产物(见从源码构建)以及如何接入到应用中的详细介绍,请参考:
SDK 安装与使用指南:快速开始
完整 SDK API 参考:API 参考
欢迎各种形式的贡献——Bug 修复、新组件、平台改进、文档完善和测试覆盖。
提交 Pull Request 前,请阅读 CONTRIBUTING.md 了解完整工作流、代码风格规范(C++、Swift、Java 遵循 Google Style Guide,ArkTS 遵循 OpenHarmony 规范)以及 PR 检查清单。
简要流程:
main 创建分支:fix/123-my-fix 或 feat/my-featuremain 提交 PR,清晰描述做了什么以及为什么对于较大范围的变更——新平台支持、重大引擎重构、新组件品类——请先提 Issue 对齐方案,再开始编写代码。
| 钉钉群 | 微信群 |
|---|---|
![]() |
![]() |
AGenUI 基于 Apache License, Version 2.0 发布。
$ claude mcp add AGenUI \
-- python -m otcore.mcp_server <graph>