MetaCraft 是一个 AI 驱动的应用生成平台。用户通过自然语言描述需求,系统可以完成对话、生成方案、产出可运行网页代码、保存版本,并通过 SSE 实时回传生成过程。
English README: docs/README.en.md
apps/api: Spring Boot 后端(AI 编排、认证、应用版本管理、SSE 流式接口)apps/huawei: HarmonyOS 客户端(ArkTS/ETS)docs: 补充文档(架构说明、英文 README 等)
- 统一 AI 入口,按意图路由到
chat、gen、edit流水线 - 实时 SSE 事件流,前端可边生成边展示
- 会话与消息持久化(含应用关联字段)
- 应用与版本生命周期管理(数据库 + 文件系统)
- Prompt 和工具链可持续迭代,便于能力扩展
请求主路径:POST /api/ai/agent/unified
- 客户端发起统一请求
- 后端校验用户身份
UnifiedOrchestrator处理/创建会话并落库用户消息- 意图识别后路由到对应 pipeline
- pipeline 通过 SSE 持续输出事件并在结束后持久化结果
| 事件 | 说明 |
|---|---|
intent |
意图识别结果 |
message |
AI 文本流片段 |
plan |
生成方案片段 |
app_info |
抽取到的应用信息 |
logo_generated |
logo 生成完成 |
app_generated |
应用生成并可预览 |
error |
错误事件 |
metacraft/
|- apps/
| |- api/
| | |- src/main/java/com/metacraft/api/
| | | |- config/
| | | |- modules/
| | | |- ai/
| | | |- app/
| | | |- user/
| | |- src/main/resources/
| | |- db/migration/
| | |- prompts/
| | |- public/
| |- huawei/
|- docs/
|- README.md
- Java 21
- Spring Boot 3.5.x
- Spring Security + JWT
- Spring Data JPA + PostgreSQL
- Flyway
- Reactor (
Flux) + SSE - LangChain4j
- Swagger/OpenAPI (
springdoc)
- HarmonyOS(ArkTS/ETS)
- OHPM 依赖管理
- 自定义 SSE 客户端(基于
@kit.RemoteCommunicationKit) - AGCIT 公共模块:
aggregated_login、collect_personal_info、app_setting
apps/huawei 采用分层结构,便于页面开发、API 维护和网络能力复用。
AppScope: 应用级配置(bundle、图标、label)entry: 主模块entry/src/main/ets/pages: 页面容器(Index、Explore、Preview、Profile、Setting等)entry/src/main/ets/components: 复用组件(ChatPanel、AppPreviewCard、侧边栏等)entry/src/main/ets/api: 业务 API 封装(auth、aiChat、chatSession、appApi)entry/src/main/ets/utils/http: 网络层(HttpManager、拦截器、SSEClient、ApiConfig)entry/src/main/ets/model: 类型与模型转换ohos_agcit: 登录、隐私、设置等公共能力
Index.ets挂载核心聊天组件ChatPanel- 启动时检查登录态并注册未授权回调
- 调用
aiChatApi.sendStreamMessage()请求/api/ai/agent/unified SSEClient解析intent/message/plan/app_generated/doneChatPanel汇总流式内容并渲染消息与预览卡片Preview.ets使用 HarmonyOS Web 组件加载预览页
HttpManager单例化rcp.Session,统一 header 和超时AuthInterceptor为非白名单接口自动注入 JWTResponseInterceptor统一处理401/403并触发重新登录- SSE 请求使用独立 session 管理生命周期
API_BASE_URL集中定义在utils/http/ApiConfig.ets
- JDK 21+
- PostgreSQL 14+
- Maven(或使用
./mvnw) - DevEco Studio(运行 HarmonyOS 客户端)
后端从 apps/api/src/main/resources/application.yaml 读取配置。
| 变量 | 必填 | 默认值 | 说明 |
|---|---|---|---|
SERVER_PORT |
否 | 8080 |
后端端口 |
DB_DRIVER |
否 | org.postgresql.Driver |
JDBC 驱动 |
DB_URL |
是 | - | PostgreSQL 连接串 |
DB_USERNAME |
是 | - | 数据库用户名 |
DB_PASSWORD |
是 | - | 数据库密码 |
JWT_SECRET |
是 | - | JWT 签名密钥 |
JWT_EXPIRATION |
否 | 8640000000 |
Token 过期时间(毫秒) |
APP_STORAGE_PATH |
否 | data |
生成应用存储根目录 |
API_KEY |
是 | - | DashScope 模型密钥 |
MODEL_NAME |
否 | qwen-plus |
聊天模型名 |
ZHIPU_API_KEY |
是(logo) | - | 智谱图像模型密钥 |
cd apps/api
./mvnw spring-boot:run默认访问地址:http://localhost:8080
http://localhost:8080/swagger-ui.html
cd apps/api
./mvnw clean package
./mvnw test运行单测类:
./mvnw test -Dtest=ClassNamecd apps/huawei
ohpm install然后在 DevEco Studio 中运行 entry 模块。
WebMvcConfig 为控制器统一添加 /api 前缀。
POST /api/auth/registerPOST /api/auth/loginGET /api/preview/{uuid}GET /api/preview/{uuid}/v/{versionNumber}GET /api/logo/{uuid}
GET /api/userPATCH /api/userPOST /api/ai/agent/unifiedGET /api/ai/sessionsPOST /api/ai/sessionsGET /api/ai/sessions/{sessionId}PATCH /api/ai/sessions/{sessionId}DELETE /api/ai/sessions/{sessionId}GET /api/ai/sessions/{sessionId}/messagesPOST /api/ai/messages
chat_sessions: 会话信息chat_messages: 用户/助手消息,可携带related_app_id、related_version_id
apps: 应用元数据与当前版本指针app_versions: 版本历史与存储路径- 生成产物保存在文件系统(按应用与版本分目录)
代码生成 Prompt:
apps/api/src/main/resources/prompts/gen-code.txt
当前约束:
- 使用本地 Tailwind
- 使用本地 Vue 3 运行时(
/public/js/vue.js) - 使用本地 Bootstrap Icons(
/public/css/bootstrap-icons.css+ fonts)
- 受保护接口需要 JWT
StorageService需要持续保持路径归一化与边界校验- 不要在源码中硬编码密钥
- 生产环境务必使用高强度
JWT_SECRET
- 保持
chat/gen/editpipeline 职责清晰 - 关键用户可见事件建议持久化,便于追踪与回放
- SSE 事件名和 payload 结构保持稳定
- 数据库变更一律通过 Flyway migration
- Prompt 改动建议审阅 diff 后再发布
- 检查
DB_URL、DB_USERNAME、DB_PASSWORD - 确认 PostgreSQL 可达
- 检查 Flyway migration 日志
- 检查
Authorization是否为Bearer <token> - 检查 CORS 和设备网络连通性
- 确认响应类型为
text/event-stream
- 确认加载
/public/css/bootstrap-icons.css - 确认
public/css/fonts下字体文件存在 - 确认生成页引用的是本地资源路径
docs/README.en.md: 英文版 READMEdocs/backend.md: 后端架构与演进记录CLAUDE.md: 仓库实现注意事项
本项目基于 Apache License 2.0 开源,Copyright 2026 zeroicey。
你可以自由使用、修改、分发本项目(包括商业用途),但需保留版权声明与许可声明,
并在修改过的文件中标注变更。详见根目录 LICENSE 与 NOTICE。
NOTICE 中列出了随仓库分发的第三方组件(Vue 3、Tailwind CSS、Bootstrap Icons,
均为 MIT 许可)及其版权归属。