HarmonyOS 上兼容 A2UI 协议的「AI 对话 + 生成式 UI」开源组件套件。 Flutter 有 GenUI,鸿蒙有 ArkGenie。
ArkGenie 让鸿蒙开发者用十几行代码,把"接大模型的智能对话界面"完整装进自己的应用:流式渲染、发送/停止/重试、多会话、建议问题、深色模式,以及 A2UI 协议驱动的生成式 UI。
| 包名 | 说明 | 状态 |
|---|---|---|
@arkgenie/core |
消息模型、流式状态机、传输抽象、SSE 客户端、OpenAI 兼容 Provider | M1 ✅ |
@arkgenie/chat-ui |
消息列表、气泡、输入区、建议问题、主题系统 | M1 ✅ |
@arkgenie/genui |
A2UI 解析/校验、Surface 状态管理、预批准组件目录和 ArkUI 渲染器 | M3 ✅ |
- HarmonyOS 5.0+(compatibleSdkVersion 6.0.0(20),targetSdkVersion 26)
- DevEco Studio 6.x(modelVersion 26.0.0)
当前以源码/本地 HAR 方式集成(OHPM 发布包可在此基础上生成):
// oh-package.json5
{
"dependencies": {
"@arkgenie/core": "file:../core",
"@arkgenie/chat-ui": "file:../chat-ui",
"@arkgenie/genui": "file:../genui"
}
}MockTransport 提供本地演示数据源,评审者可直接体验全部 UI:
import { ChatController, MockTransport } from '@arkgenie/core';
import { ChatView } from '@arkgenie/chat-ui';
@Entry
@ComponentV2
struct Index {
private controller: ChatController = new ChatController(new MockTransport());
build() {
ChatView({
controller: this.controller,
suggestedPrompts: ['ArkGenie 能做什么?']
})
}
}DeepSeek / Qwen / 智谱 / 自建网关均可:
import { ChatController, OpenAiCompatibleProvider } from '@arkgenie/core';
const provider = new OpenAiCompatibleProvider({
baseUrl: 'https://api.deepseek.com/v1/chat/completions',
apiKey: 'YOUR_API_KEY',
model: 'deepseek-chat'
});
const controller = new ChatController(provider, '你是一个简洁的助手。');模块需声明
ohos.permission.INTERNET权限。
import { ChatTheme } from '@arkgenie/chat-ui';
ChatView({ controller: this.controller, theme: ChatTheme.dark() })| 导出 | 说明 |
|---|---|
ChatController |
对话状态机:send(text) / sendWithAttachments() / stop() / regenerate() / retry(id) / clear(),支持切换 Provider |
SessionManager |
多会话创建、切换、重命名、删除,以及可插拔 SessionStore / JsonSessionStore 持久化 |
PreferencesSessionStore |
Preferences 宿主适配,合并写入、分块快照、错误反馈和显式 flush() |
ChatEventBus |
消息发送、流式增量、完成、取消、错误、工具调用事件 |
ChatMessage |
消息模型:role、content、status、contentType、attachments、metadata |
MessageStatus |
sending → streaming → done / error / cancelled |
ChatTransport |
传输抽象接口,SSE/WebSocket/Mock 均可实现 |
SseTransport |
通用 SSE 客户端(行缓冲、[DONE] 收尾、取消、心跳超时和可选重连) |
MockTransport |
本地演示数据源(逐词吐字) |
OpenAiCompatibleProvider |
OpenAI Chat Completions 协议适配,含工具调用事件 |
| 导出 | 说明 |
|---|---|
ChatView |
开箱即用的整页对话组件 |
MessageList / MessageBubble |
消息列表与气泡(可单独使用) |
Composer |
输入区(发送/停止切换) |
SuggestedPrompts |
建议问题卡片 |
ChatTheme |
主题 Token(颜色/圆角/字号),含 default() / dark() |
MarkdownRenderer |
流式友好的标题、列表、引用和代码块降级渲染器 |
| 导出 | 说明 |
|---|---|
A2uiParser / A2uiValidator |
严格解析 A2UI 消息并校验操作、组件类型和属性白名单 |
A2uiSurfaceStore |
对 surface 创建、组件 upsert、数据更新和删除操作做增量状态管理 |
ComponentCatalog |
16 类内置安全组件与自定义目录注册 |
A2uiRendererController / A2uiSurfaceView |
将声明式组件映射到 ArkUI,并通过动作事件回传 Agent |
entry/ 目录是根工程的可运行示例应用模块:DevEco Studio 打开本仓库根目录,同步后直接运行 entry 模块即可(默认 MockTransport,无需任何 API 配置)。公开仓库不包含证书、私钥或签名密码;需要安装到设备时,在 DevEco Studio 的项目签名配置中选择本机签名材料。签名配置只保存在本地 build-profile.json5,不要提交到仓库。
docs/ 是 VitePress 中文文档站源码,可在该目录执行 npm install 后运行 npm run docs:dev。
entry 已接入 Preferences 会话恢复及后台保存,宿主用法见 会话持久化指南。
仓库根目录执行 npm install、npm test,以及 npm run check:core。测试转译实际 ETS 逻辑并使用 Preferences 替身;详细范围见 测试说明。这些检查不替代 DevEco 构建或设备验收。
- 本项目采用 Apache License 2.0,详见
LICENSE。 build-profile.json5是可公开构建配置,不包含签名材料;本地签名信息请保存在未跟踪的build-profile.local.json5或由 DevEco Studio 管理。- 不要把 API Key、证书、私钥、
.p12、.p7b或.cer文件提交到仓库。
- M1:core 状态机 + SSE + Mock;chat-ui 基础对话 UI ✅
- M2:流式 Markdown 降级渲染、LazyForEach、可插拔语音/附件入口、多会话与事件总线 ✅
- M3:genui —— A2UI 解析/校验/渲染、16 类内置组件、动作回传、工具调用/引用/反馈 UI ✅
- M4:文档站与真实宿主存储适配器持续增强;DevEco 构建、设备运行和 OHPM 发布需在目标环境执行
Apache-2.0