1279 lines
67 KiB
Markdown
1279 lines
67 KiB
Markdown
# 🧠 AI Hub 智能平台 — 总体架构设计与实施方案
|
||
|
||
> **文档版本**:v1.0
|
||
> **目标读者**:架构师 / 开发工程师 / 技术决策者
|
||
> **开发工具**:Trea / WorkBuddy / Qoder(AI 辅助编码)
|
||
> **适用对象**:非技术背景创始人 / 产品经理
|
||
|
||
---
|
||
|
||
## 一、项目愿景与核心定位
|
||
|
||
### 1.1 一句话定义
|
||
|
||
> **AI Hub 是一个「AI 能力操作系统」**——它既是用户的智能助手底座,也是开发者的技能分发市场,更是 AI 应用的一站式托管与计费平台。
|
||
|
||
### 1.2 三大支柱目标
|
||
|
||
| 支柱 | 核心命题 | 关键能力 |
|
||
|------|---------|---------|
|
||
| **🧠 智能引擎** | 越用越懂你,越用越快 | 长文本记忆、语义检索、知识自进化、个性化 Agent |
|
||
| **🏪 能力集市(Hub)** | 技能可创作、可交易、可复用 | Skills/MCP/Agent/App 发布、审核、版本、计费 |
|
||
| **🔌 应用工厂** | 任何 AI 项目可一键接入平台底座 | 统一认证、统一计费、统一模型库、SSO、Token 计量 |
|
||
|
||
### 1.3 设计哲学
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────┐
|
||
│ "Lego 式" 平台设计 │
|
||
│ │
|
||
│ 所有能力 = 标准化积木(Skill / MCP / Agent / App) │
|
||
│ 平台 = 积木的连接器 + 供电系统 + 商店 │
|
||
│ 用户 = 搭积木的人(无代码 / 低代码优先) │
|
||
└─────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 二、整体系统架构(High-Level Architecture)
|
||
|
||
### 2.1 架构全景图
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────────────────┐
|
||
│ │
|
||
│ ┌───────────────────────┐ │
|
||
│ │ 用户端(Web/移动端) │ │
|
||
│ │ Next.js 18 + TS │ │
|
||
│ └───────────┬───────────┘ │
|
||
│ │ HTTPS │
|
||
│ ▼ │
|
||
│ ┌────────────────────────────────┐ │
|
||
│ │ API Gateway(Kong/Envoy) │ ◄── 限流/鉴权/路由 │
|
||
│ └────────┬───────────────┬───────┘ │
|
||
│ │ │ │
|
||
│ ┌────────────────┼───────────────┼────────────────┐ │
|
||
│ ▼ ▼ ▼ ▼ │
|
||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||
│ │ 认证与用户服务 │ │ 智能引擎服务 │ │ Hub 集市服务 │ │ 应用托管服务 │ │
|
||
│ │ (Auth/MS) │ │ (Memory/LLM) │ │ (Marketplace)│ │ (AppFactory) │ │
|
||
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
|
||
│ │ │ │ │ │
|
||
│ ▼ ▼ ▼ ▼ │
|
||
│ ┌──────────────────────────────────────────────────────────────────────┐ │
|
||
│ │ 共享基础设施层(Shared Infrastructure) │ │
|
||
│ │ │ │
|
||
│ │ PostgreSQL 18+pgvector │ Redis 7+ │ ClickHouse │ S3 │ Message Queue │ │
|
||
│ │ Vector DB(Qdrant) │ Keycloak │ Stripe │ Docker/K8s │ │
|
||
│ └──────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 2.2 技术栈选型总表
|
||
|
||
| 层级 | 技术选型 | 选型理由 |
|
||
|------|---------|---------|
|
||
| **前端框架** | Next.js 18 (App Router) + TypeScript | 全栈一体、SSR 友好、生态成熟 |
|
||
| **UI 组件库** | Ant Design 5.x / shadcn/ui | 企业级组件丰富 / 可定制性强 |
|
||
| **状态管理** | Zustand + TanStack Query | 轻量、适合 AI 流式场景 |
|
||
| **后端框架** | NestJS (TS) + FastAPI (Python) 双栈 | TS 统一前端/后端;Python 负责 AI/ML |
|
||
| **API 协议** | REST + WebSocket + MCP (Model Context Protocol) | 兼容传统 + 实时流式 + Agent 标准协议 |
|
||
| **数据库** | PostgreSQL 18 + pgvector 扩展 | 关系数据 + 向量检索一体化 |
|
||
| **缓存/会话** | Redis 7 Cluster | 高性能缓存、会话、限流、消息队列 |
|
||
| **向量数据库** | Qdrant(主) + pgvector(轻量) | 生产级向量检索 + 多租户命名空间隔离 |
|
||
| **OLAP/分析** | ClickHouse | 日志分析、用量统计、计费报表(参考 Langfuse 架构) |
|
||
| **对象存储** | MinIO / S3 | 文件、模型、向量索引备份 |
|
||
| **消息队列** | RabbitMQ / NATS | 异步任务、Agent 编排、事件驱动 |
|
||
| **API 网关** | Kong / Envoy | 统一入口、限流、鉴权、路由 |
|
||
| **身份认证** | Keycloak (OIDC/OAuth2) | 企业级 SSO、多租户、RBAC |
|
||
| **容器编排** | Docker Compose(开发/小规模)→ Kubernetes(生产) | 渐进式演进 |
|
||
| **CI/CD** | GitHub Actions + ArgoCD (GitOps) | 自动化构建部署 |
|
||
| **可观测性** | OpenTelemetry + Prometheus + Grafana + Langfuse | 全链路追踪、Metrics、日志 |
|
||
| **支付/计费** | Stripe(海外)+ 微信/支付宝(国内) | 双轨支付 |
|
||
| **AI 模型网关** | LiteLLM Proxy | 统一接入 OpenAI/Claude/Gemini/本地模型 |
|
||
| **Agent 编排** | LangGraph(Python)+ Langflow(可视化画布) | 多 Agent 编排 + 可视化 |
|
||
| **MCP 运行时** | MCP Gateway(自研)+ Docker 沙箱 | MCP Server 托管执行 |
|
||
|
||
---
|
||
|
||
## 三、支柱一:智能引擎(越用越懂你)
|
||
|
||
### 3.1 核心问题拆解
|
||
|
||
| 问题 | 解决方案 | 技术组件 |
|
||
|------|---------|---------|
|
||
| 长文本存储 | 分层存储:热数据(Redis)+ 温数据(PostgreSQL)+ 冷数据(S3) | Redis + PG + S3 |
|
||
| 语义检索 | 多向量 + 混合检索(BM25 + 向量) + Rerank | Qdrant + pgvector + Cohere Rerank |
|
||
| 用户数据隔离 | 租户级命名空间 + Row-Level Security | Qdrant Collection per tenant + PG RLS |
|
||
| 自进化记忆 | 记忆生命周期管理(感知→巩固→遗忘) | 自研 Memory Engine |
|
||
| 个性化 Agent | 用户画像 + 行为模式学习 + 动态 Prompt 注入 | User Profile Service |
|
||
|
||
### 3.2 长文本存储与语义检索架构
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────┐
|
||
│ 用户上传/对话内容 │
|
||
└──────────────────────────┬───────────────────────────────────────┘
|
||
▼
|
||
┌─────────────────────────┐
|
||
│ 文档预处理 Pipeline │
|
||
│ ┌───────────────────┐ │
|
||
│ │ 格式解析(PDF/Word/ │ │
|
||
│ │ MD/HTML/音视频) │ │
|
||
│ └────────┬──────────┘ │
|
||
│ ┌────────▼──────────┐ │
|
||
│ │ 智能分块(10-15% │ │
|
||
│ │ 重叠+语义边界) │ │
|
||
│ └────────┬──────────┘ │
|
||
│ ┌────────▼──────────┐ │
|
||
│ │ 多模型Embedding │ │
|
||
│ │ (text-embedding-3 │ │
|
||
│ │ + bge-large等) │ │
|
||
│ └────────┬──────────┘ │
|
||
└───────────┼─────────────┘
|
||
▼
|
||
┌────────────────────────────────────┐
|
||
│ 分层存储引擎 │
|
||
├────────────────────────────────────┤
|
||
│ L1 热缓存 → Redis(最近会话) │
|
||
│ L2 向量索引 → Qdrant(租户隔离) │
|
||
│ L3 结构化 → PostgreSQL + pgvector │
|
||
│ L4 原始文件 → S3/MinIO │
|
||
└────────────────┬───────────────────┘
|
||
▼
|
||
┌───────────────────────┐
|
||
│ 混合检索引擎 │
|
||
│ • BM25 关键词检索 │
|
||
│ • 向量相似度检索 │
|
||
│ • 图谱关系检索 │
|
||
│ → RRF 融合排序 │
|
||
│ → Rerank 精排 │
|
||
└───────────────────────┘
|
||
```
|
||
|
||
### 3.3 自进化记忆系统(核心创新)
|
||
|
||
参考认知科学的 **ACT-R 架构** 与 **艾宾浩斯遗忘曲线**,设计四层记忆体系:
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ 用户记忆系统(Memory Engine) │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
|
||
│ │ 感知层 │───▶│ 提炼层 │───▶│ 关联层 │ │
|
||
│ │ (Perception)│ │ (Distill) │ │ (Association) │ │
|
||
│ │ │ │ │ │ │ │
|
||
│ │ • 对话解析 │ │ • 关键信息 │ │ • 知识图谱构建 │ │
|
||
│ │ • 意图识别 │ │ 抽取 │ │ • 跨会话关联 │ │
|
||
│ │ • 情感分析 │ │ • 实体识别 │ │ • 用户偏好建模 │ │
|
||
│ │ • 多模态 │ │ • 摘要压缩 │ │ • 行为模式学习 │ │
|
||
│ └─────────────┘ └─────────────┘ └────────┬────────┘ │
|
||
│ │ │
|
||
│ ▼ │
|
||
│ ┌─────────────────┐ │
|
||
│ │ 巩固/遗忘层 │ │
|
||
│ │ (Consolidation) │ │
|
||
│ │ │ │
|
||
│ │ • 记忆激活度评分 │ │
|
||
│ │ • 艾宾浩斯衰减 │ │
|
||
│ │ • 冲突检测解决 │ │
|
||
│ │ • 定期反思重组 │ │
|
||
│ └─────────────────┘ │
|
||
│ │
|
||
├─────────────────────────────────────────────────────────────────┤
|
||
│ 记忆类型: │
|
||
│ • 情景记忆(Episodic) → 用户说过什么、做过什么 │
|
||
│ • 语义记忆(Semantic) → 用户的知识领域、专业背景 │
|
||
│ • 程序记忆(Procedural)→ 用户习惯的交互模式、偏好工作流 │
|
||
│ • 情感记忆(Emotional) → 用户对什么话题敏感、什么风格喜欢 │
|
||
└─────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
**自进化机制详解:**
|
||
|
||
1. **每次对话后** → 自动提取关键事实写入用户知识图谱
|
||
2. **每 N 轮对话** → 触发 Reflection Agent,归纳用户偏好模式
|
||
3. **每周/月** → 运行 Memory Consolidation Job,压缩冗余、解决冲突、强化高频
|
||
4. **实时检索时** → 根据当前上下文动态加权记忆(时间衰减 + 相关度 + 使用频率)
|
||
5. **跨会话学习** → 用户纠正一次,永久生效("我不喜欢太长的回复" → 全局生效)
|
||
|
||
### 3.4 用户数据隔离方案
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────┐
|
||
│ 多租户隔离策略(Defense in Depth) │
|
||
├──────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ Layer 1: 应用层 → tenant_id 作为所有查询的强制参数 │
|
||
│ (SDK 层强制注入,无法绕过) │
|
||
│ │
|
||
│ Layer 2: 数据库层 → PostgreSQL Row-Level Security (RLS) │
|
||
│ 每个表自动附加 tenant_id 过滤策略 │
|
||
│ │
|
||
│ Layer 3: 向量层 → Qdrant 每租户独立 Collection/Namespace │
|
||
│ 物理隔离,杜绝跨租户检索 │
|
||
│ │
|
||
│ Layer 4: 缓存层 → Redis Key 前缀 = tenant_id: │
|
||
│ 缓存击穿也不泄露其他租户数据 │
|
||
│ │
|
||
│ Layer 5: 文件层 → S3 Bucket/Prefix 按租户隔离 │
|
||
│ 预签名 URL 带租户校验 │
|
||
│ │
|
||
│ Layer 6: 网络层 → K8s NetworkPolicy 限制跨命名空间访问 │
|
||
│ 生产环境可选 gVisor 沙箱 │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 3.5 智能引擎 — 自进化闭环
|
||
|
||
```
|
||
用户提问
|
||
│
|
||
▼
|
||
┌──────────────┐ 检索 ┌──────────────────┐
|
||
│ Coordinator │──────────▶│ 混合检索引擎 │
|
||
│ Agent │ │ (向量+BM25+图谱) │
|
||
└──────┬───────┘ └────────┬─────────┘
|
||
│ │
|
||
│ 注入用户画像+记忆 │ 返回相关上下文
|
||
▼ ▼
|
||
┌─────────────────────────────────────────┐
|
||
│ LLM 推理(LiteLLM 路由) │
|
||
│ • 自动选择最优模型(成本/质量/速度) │
|
||
│ • 动态注入用户记忆 + 知识库 + Skills │
|
||
└────────────┬────────────────────────────┘
|
||
│
|
||
▼
|
||
生成回复 + 触发后台记忆更新
|
||
│
|
||
┌─────────┴─────────┐
|
||
▼ ▼
|
||
返回用户 Memory Engine 异步处理
|
||
• 提取新事实
|
||
• 更新用户画像
|
||
• 刷新知识图谱
|
||
• 调整偏好权重
|
||
```
|
||
|
||
---
|
||
|
||
## 四、支柱二:Hub 能力集市
|
||
|
||
### 4.1 集市架构全景
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────────────┐
|
||
│ Hub 集市架构 │
|
||
├──────────────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌────────────────────────────────────────────────────────────────────┐ │
|
||
│ │ 用户/开发者门户 │ │
|
||
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │
|
||
│ │ │Skills商店│ │MCP市场 │ │Agent画布 │ │应用商店 │ │我的创作 │ │ │
|
||
│ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │
|
||
│ └────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌────────────────────────────────────────────────────────────────────┐ │
|
||
│ │ Hub 核心服务层 │ │
|
||
│ ├────────────┬────────────┬────────────┬────────────┬───────────────┤ │
|
||
│ │ 发布引擎 │ 审核引擎 │ 版本管理 │ 交易引擎 │ 部署引擎 │ │
|
||
│ │ Publish │ Review │ Versioning │ Billing │ Deployment │ │
|
||
│ │ │ │ │ │ │ │
|
||
│ │ • 上传/导入│ • 自动扫描 │ • SemVer │ • 免费/付费│ • GitHub URL │ │
|
||
│ │ • 元数据 │ • 沙箱测试 │ • 灰度发布 │ • 订阅制 │ • AI自动构建 │ │
|
||
│ │ • 分类标签 │ • 人工审核 │ • 回滚 │ • 分成结算 │ • Docker部署 │ │
|
||
│ │ • 搜索推荐 │ • 安全检测 │ • Changelog│ • 发票 │ • 健康检查 │ │
|
||
│ └────────────┴────────────┴────────────┴────────────┴───────────────┘ │
|
||
│ │
|
||
│ ┌────────────────────────────────────────────────────────────────────┐ │
|
||
│ │ 可交易资产类型 │ │
|
||
│ ├────────────────────────────────────────────────────────────────────┤ │
|
||
│ │ 📦 Skill → 单一能力单元(如"PDF解析""情感分析") │ │
|
||
│ │ 🔌 MCP Server → 标准协议服务(可自托管/平台托管) │ │
|
||
│ │ 🤖 Agent → 单/多Agent工作流 │ │
|
||
│ │ 🎨 Agent画布 → 可视化编排的多Agent协作流程 │ │
|
||
│ │ 📱 独立应用 → 完整AI应用(如MuMuAINovel小说助手) │ │
|
||
│ └────────────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 4.2 各类资产详细设计
|
||
|
||
#### 4.2.1 Skills(技能)
|
||
|
||
```yaml
|
||
# Skill 标准定义格式 (skill.yaml)
|
||
name: pdf-advanced-parser
|
||
version: 1.2.0
|
||
description: "支持复杂排版PDF的智能解析,保留表格/公式/图片结构"
|
||
author: user_12345
|
||
category: document-processing
|
||
tags: [pdf, ocr, table-extraction]
|
||
pricing:
|
||
model: freemium # free | freemium | paid | subscription
|
||
free_quota: 100 # 每月免费次数
|
||
paid_price: 0.05 # 每次调用价格(USD)
|
||
|
||
inputs:
|
||
- name: file_url
|
||
type: string
|
||
required: true
|
||
- name: extract_images
|
||
type: boolean
|
||
default: false
|
||
|
||
outputs:
|
||
- name: parsed_content
|
||
type: object
|
||
- name: markdown
|
||
type: string
|
||
|
||
runtime:
|
||
language: python
|
||
framework: fastapi
|
||
requirements: requirements.txt
|
||
entrypoint: main.py
|
||
resources:
|
||
cpu: "500m"
|
||
memory: "1Gi"
|
||
gpu: optional
|
||
|
||
permissions:
|
||
- file.read
|
||
- network.outbound
|
||
|
||
metadata:
|
||
avg_latency_ms: 2300
|
||
success_rate: 0.987
|
||
total_calls: 15420
|
||
rating: 4.7
|
||
```
|
||
|
||
#### 4.2.2 MCP Server(Model Context Protocol 服务)
|
||
|
||
**两种部署模式:**
|
||
|
||
```
|
||
模式A:平台托管(Platform-Hosted)
|
||
─────────────────────────────────────
|
||
开发者提交 → GitHub URL → 平台自动:
|
||
1. git clone 仓库
|
||
2. 解析 Dockerfile / docker-compose
|
||
3. 构建 Docker 镜像
|
||
4. 部署到 K8s(按租户/按需求隔离)
|
||
5. 暴露 HTTPS + SSE 端点
|
||
6. 自动健康检查 + 弹性伸缩
|
||
|
||
模式B:自托管(Self-Hosted)
|
||
─────────────────────────────────────
|
||
开发者自己部署 MCP Server
|
||
在平台注册 endpoint URL + API Key
|
||
平台作为代理路由 + 计费计量
|
||
```
|
||
|
||
**MCP Server 自动部署流水线:**
|
||
|
||
```
|
||
GitHub URL 输入
|
||
│
|
||
▼
|
||
┌─────────────────┐
|
||
│ 1. 仓库克隆 & 分析 │
|
||
│ • 检测语言/框架 │
|
||
│ • 解析依赖 │
|
||
│ • 识别 MCP 配置 │
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 2. 安全扫描 │
|
||
│ • 依赖漏洞扫描 │
|
||
│ • 代码静态分析 │
|
||
│ • 恶意行为检测 │
|
||
│ • 权限声明验证 │
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 3. 沙箱测试 │
|
||
│ • 启动临时容器 │
|
||
│ • 运行 MCP 协议 │
|
||
│ │ 握手测试 │
|
||
│ • 验证工具列表 │
|
||
│ • 性能基准测试 │
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 4. 构建 & 部署 │
|
||
│ • Docker 镜像构建│
|
||
│ • 推送到平台Registry│
|
||
│ • K8s Deployment │
|
||
│ • 配置 Ingress │
|
||
│ • 生成 API Endpoint│
|
||
└────────┬────────┘
|
||
▼
|
||
┌─────────────────┐
|
||
│ 5. 上线 & 监控 │
|
||
│ • 流量接入 │
|
||
│ • 用量计量 │
|
||
│ • 异常告警 │
|
||
│ • 自动扩缩容 │
|
||
└─────────────────┘
|
||
```
|
||
|
||
#### 4.2.3 Agent / 多 Agent 画布
|
||
|
||
**参考开源项目选型:**
|
||
|
||
| 工具 | 优势 | 适配场景 |
|
||
|------|------|---------|
|
||
| **Langflow**(推荐) | 140K+ Stars、MIT 协议、可导出为 MCP Server、Python 生态 | Agent 画布核心引擎 |
|
||
| **Flowise** | TypeScript 栈、人机协作审批节点、上手最快 | 备选/补充 |
|
||
| **n8n** | 150K+ Stars、自动化工作流最强、400+ 集成 | 复杂业务流程编排 |
|
||
|
||
**Agent 画布功能设计:**
|
||
|
||
```
|
||
┌────────────────────────────────────────────────────────────────┐
|
||
│ Agent 画布编辑器 │
|
||
├────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ ┌─ 左侧组件面板 ─────┐ ┌─ 中央画布 ──────────────────────┐ │
|
||
│ │ │ │ │ │
|
||
│ │ 📦 Skills │ │ ┌────────┐ ┌────────┐ │ │
|
||
│ │ 🔌 MCP Tools │ │ │ 用户输入│───▶│Router │ │ │
|
||
│ │ 🤖 Agent 节点 │ │ └────────┘ └───┬────┘ │ │
|
||
│ │ 📝 Prompt 模板 │ │ │ │ │
|
||
│ │ 🔀 条件分支 │ │ ┌──────────┼──────────┐ │ │
|
||
│ │ 🔄 循环/迭代 │ │ ▼ ▼ ▼ │ │
|
||
│ │ 💾 记忆节点 │ │ ┌────────┐ ┌────────┐ ┌────────┐│
|
||
│ │ 🌐 API 调用 │ │ │Agent A │ │Agent B │ │Agent C ││
|
||
│ │ ⏰ 定时触发 │ │ │(研究) │ │(写作) │ │(审核) ││
|
||
│ │ 🛡️ 人工审批 │ │ └────┬───┘ └────┬───┘ └───┬────┘│
|
||
│ │ │ │ └──────────┼──────────┘ │ │
|
||
│ └─────────────────────┘ │ ▼ │ │
|
||
│ │ ┌────────┐ │ │
|
||
│ │ │ 输出 │ │ │
|
||
│ │ └────────┘ │ │
|
||
│ └──────────────────────────────────┘ │
|
||
│ │
|
||
│ ┌─ 右侧属性面板 ──────────────────────────────────────────┐ │
|
||
│ │ 选中节点 → 配置模型/参数/Prompt/Skills/权限 │ │
|
||
│ └──────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ 功能:实时调试 | 单步执行 | 变量追踪 | 日志查看 | 性能分析 │
|
||
│ │
|
||
└────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
#### 4.2.4 独立应用接入(以 MuMuAINovel 为例)
|
||
|
||
**接入流程:**
|
||
|
||
```
|
||
步骤1:开发者在平台注册应用
|
||
┌─────────────────────────────────────────┐
|
||
│ App Name: MuMuAINovel │
|
||
│ GitHub URL: https://github.com/... │
|
||
│ Category: Creative Writing │
|
||
│ Pricing: Freemium │
|
||
└─────────────────────────────────────────┘
|
||
|
||
步骤2:平台自动注入标准化模块
|
||
┌──────────────────────────────────────────────────────────┐
|
||
│ 原应用 + 平台 SDK = 标准化接入 │
|
||
│ │
|
||
│ 注入内容: │
|
||
│ • @platform/auth-sdk → 单点登录/用户认证 │
|
||
│ • @platform/billing-sdk → Token 计量/订阅/计费 │
|
||
│ • @platform/model-router → 统一大模型库(不限原模型) │
|
||
│ • @platform/observability→ 日志/追踪/监控 │
|
||
│ • @platform/memory-sdk → 接入平台记忆系统 │
|
||
│ • docker-compose.platform.yml → 平台标准部署模板 │
|
||
└──────────────────────────────────────────────────────────┘
|
||
|
||
步骤3:审核 → 发布 → 上架应用商店
|
||
|
||
步骤4:用户一键安装/订阅 → 统一计费
|
||
```
|
||
|
||
### 4.3 审核与安全体系
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ 四层审核防线 │
|
||
├──────────────┬──────────────┬──────────────┬───────────────────┤
|
||
│ Layer 1 │ Layer 2 │ Layer 3 │ Layer 4 │
|
||
│ 自动扫描 │ 沙箱动态测试 │ 人工审核 │ 持续监控 │
|
||
│ │ │ │ │
|
||
│ • 依赖漏洞 │ • 运行时行为 │ • 功能验证 │ • 异常用量检测 │
|
||
│ • 代码静态分析│ • 网络请求监控│ • 内容合规 │ • 用户投诉响应 │
|
||
│ • 恶意代码 │ • 资源消耗 │ • 质量评估 │ • 自动下架机制 │
|
||
│ • 权限声明 │ • 输出审核 │ • 安全复核 │ • 版本更新审核 │
|
||
│ • 病毒扫描 │ • 压力测试 │ │ │
|
||
└──────────────┴──────────────┴──────────────┴───────────────────┘
|
||
```
|
||
|
||
### 4.4 交易与计费模型
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────┐
|
||
│ 交易 & 计费架构 │
|
||
├──────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 计费维度: │
|
||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||
│ │ • Token 消耗(输入 + 输出,按模型分别计价) │ │
|
||
│ │ • Skill 调用次数(按次/包月/订阅) │ │
|
||
│ │ • MCP Server 使用时长(按小时/按调用) │ │
|
||
│ │ • Agent 执行步数(按步/包月) │ │
|
||
│ │ • 应用订阅费(月费/年费/终身) │ │
|
||
│ │ • 存储用量(知识库大小) │ │
|
||
│ │ • 带宽用量(文件上传下载) │ │
|
||
│ └──────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ 分成模式: │
|
||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||
│ │ 平台 30% + 开发者 70%(标准应用商店模式) │ │
|
||
│ │ 优质开发者可降至 20/80 │ │
|
||
│ │ 平台自有 Skills 不抽成 │ │
|
||
│ └──────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ 支付集成: │
|
||
│ ┌──────────────────────────────────────────────────────────┐ │
|
||
│ │ Stripe(国际信用卡/订阅) │ │
|
||
│ │ 微信支付 + 支付宝(国内) │ │
|
||
│ │ 平台虚拟币(充值→消费,降低支付摩擦) │ │
|
||
│ └──────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 五、支柱三:平台底座与标准化
|
||
|
||
### 5.1 统一架构标准
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────────┐
|
||
│ 平台标准化体系 │
|
||
├──────────────┬──────────────┬──────────────┬───────────────────────┤
|
||
│ API 标准 │ 数据标准 │ 部署标准 │ 开发标准 │
|
||
│ │ │ │ │
|
||
│ • RESTful │ • 统一数据 │ • Docker │ • Monorepo (pnpm) │
|
||
│ • GraphQL │ Schema │ Compose │ • 代码规范 (ESLint) │
|
||
│ • WebSocket │ • 事件格式 │ • K8s Helm │ • 提交规范 (Conven) │
|
||
│ • MCP 协议 │ • 日志格式 │ Charts │ • CI/CD 模板 │
|
||
│ • OpenAPI 3 │ • 追踪格式 │ • GitOps │ • 测试标准 (Jest) │
|
||
│ • 版本管理 │ • 错误码体系 │ • IaC (Pulumi)│ • 文档规范 (JSDoc) │
|
||
│ • 限流标准 │ • 元数据规范 │ • 蓝绿部署 │ • 安全扫描 (SAST) │
|
||
└──────────────┴──────────────┴──────────────┴───────────────────────┘
|
||
```
|
||
|
||
### 5.2 统一 API 网关设计
|
||
|
||
```yaml
|
||
# 统一 API 响应格式
|
||
response:
|
||
success: boolean
|
||
code: string # 业务错误码
|
||
message: string # 人类可读消息
|
||
data: object # 业务数据
|
||
meta: # 元数据
|
||
request_id: uuid # 全链路追踪ID
|
||
latency_ms: number # 响应耗时
|
||
quota_remaining: number # 剩余配额
|
||
rate_limit:
|
||
limit: number
|
||
remaining: number
|
||
reset_at: datetime
|
||
pagination: # 分页信息
|
||
page: number
|
||
per_page: number
|
||
total: number
|
||
```
|
||
|
||
### 5.3 认证与单点登录(SSO)
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────┐
|
||
│ 统一身份认证架构 │
|
||
├──────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 认证方式: │
|
||
│ • 邮箱/密码(bcrypt + JWT) │
|
||
│ • OAuth 2.0(Google/GitHub/微信) │
|
||
│ • SSO/SAML(企业版) │
|
||
│ • Passkey/WebAuthn(无密码登录) │
|
||
│ │
|
||
│ 权限模型(RBAC + ABAC): │
|
||
│ ┌────────────────────────────────────────────────────────────┐ │
|
||
│ │ Role: Super Admin / Tenant Admin / Developer / User / Guest│ │
|
||
│ │ │ │
|
||
│ │ Policy: 基于属性(租户/项目/资源/时间/地点)的动态授权 │ │
|
||
│ │ │ │
|
||
│ │ Scope: 细粒度 API Key 权限(读写/只读/按资源/按操作) │ │
|
||
│ └────────────────────────────────────────────────────────────┘ │
|
||
│ │
|
||
│ 实现方案:Keycloak(开源 OIDC 提供商) │
|
||
│ • 支持多租户隔离 │
|
||
│ • 支持 SSO/SAML/OAuth2/OpenID │
|
||
│ • 支持社交登录 │
|
||
│ • 支持 MFA/Passkey │
|
||
│ • 支持企业 LDAP/AD 集成 │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
### 5.4 大模型统一路由层(LiteLLM Proxy)
|
||
|
||
```
|
||
┌──────────────────────────────────────────────────────────────────┐
|
||
│ LiteLLM Proxy 统一模型网关 │
|
||
├──────────────────────────────────────────────────────────────────┤
|
||
│ │
|
||
│ 应用层 │
|
||
│ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ │
|
||
│ │Chat App│ │Agent │ │Skill │ │MCP │ │
|
||
│ └───┬────┘ └───┬────┘ └───┬────┘ └───┬────┘ │
|
||
│ └────────────┴────────────┴────────────┘ │
|
||
│ │ │
|
||
│ ▼ │
|
||
│ ┌─────────────────────┐ │
|
||
│ │ LiteLLM Proxy │ │
|
||
│ │ │ │
|
||
│ │ • 统一 OpenAI 格式 │ │
|
||
│ │ • 智能路由/降级 │ │
|
||
│ │ • 重试/超时/限流 │ │
|
||
│ │ • Token 计量/计费 │ │
|
||
│ │ • 敏感信息过滤 │ │
|
||
│ │ • 请求/响应缓存 │ │
|
||
│ │ • A/B 测试 │ │
|
||
│ └──────────┬──────────┘ │
|
||
│ │ │
|
||
│ ┌────────┬───────┼───────┬────────┐ │
|
||
│ ▼ ▼ ▼ ▼ ▼ │
|
||
│ ┌──────┐┌──────┐┌──────┐┌──────┐┌──────┐ │
|
||
│ │OpenAI││Claude││Gemini││本地 ││其他 │ │
|
||
│ │GPT-4o││3.5 ││1.5Pro││vLLM ││API │ │
|
||
│ └──────┘└──────┘└──────┘└──────┘└──────┘ │
|
||
│ │
|
||
└──────────────────────────────────────────────────────────────────┘
|
||
```
|
||
|
||
---
|
||
|
||
## 六、开源项目借用清单
|
||
|
||
### 6.1 可直接借用的开源项目
|
||
|
||
| 项目 | 用途 | 协议 | 集成方式 |
|
||
|------|------|------|---------|
|
||
| **Langflow** | Agent 可视化画布 + 可导出 MCP | MIT | 嵌入平台作为 Agent 编辑器 |
|
||
| **n8n** | 复杂工作流自动化编排 | fair-code | 集成作为高级流程引擎 |
|
||
| **LiteLLM** | 统一模型网关/路由/计费 | MIT | 平台核心模型路由层 |
|
||
| **Langfuse** | LLM 可观测性/追踪/Eval | MIT | 嵌入平台作为监控面板 |
|
||
| **Keycloak** | 身份认证/SSO/RBAC | Apache 2.0 | 平台统一身份服务 |
|
||
| **Qdrant** | 向量数据库(多租户) | Apache 2.0 | 平台语义检索引擎 |
|
||
| **LangGraph** | 多 Agent 编排框架 | MIT | Python 后端 Agent 编排核心 |
|
||
| **LobeChat** | 开源 AI 聊天前端(参考 UI) | MIT | UI/UX 设计参考 + 部分组件 |
|
||
| **Flowise** | 备选可视化 Agent 构建器 | MIT | 备选/补充 |
|
||
| **Helicone** | LLM 请求代理/缓存/限流 | MIT | 备选网关方案 |
|
||
| **Dify** | 参考整体产品设计/API 设计 | Apache 2.0 | 架构参考/API 设计参考 |
|
||
| **RAGFlow** | 文档解析/分块(深度文档理解) | Apache 2.0 | 集成作为高级文档预处理 |
|
||
|
||
### 6.2 架构参考项目
|
||
|
||
| 项目 | 参考点 |
|
||
|------|--------|
|
||
| **Suna (Kortix)** | Monorepo 组织、Agent 后端架构、Docker 全栈部署 |
|
||
| **LobeHub MCP Marketplace** | MCP 集市架构、Capability Registry 设计 |
|
||
| **mipyao-ai-app-monorepo** | Next.js + NestJS + LangChain.js 全栈 RAG 架构 |
|
||
| **MuMuAINovel**(用户提供的项目) | 独立 AI 应用的标准化改造参考 |
|
||
|
||
---
|
||
|
||
## 七、数据库 Schema 设计(核心表)
|
||
|
||
### 7.1 核心数据模型
|
||
|
||
```sql
|
||
-- ============ 用户与租户 ============
|
||
CREATE TABLE tenants (
|
||
id UUID PRIMARY KEY,
|
||
name VARCHAR(255) NOT NULL,
|
||
plan VARCHAR(50) DEFAULT 'free',
|
||
quota_tokens BIGINT DEFAULT 0,
|
||
used_tokens BIGINT DEFAULT 0,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
CREATE TABLE users (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id UUID REFERENCES tenants(id),
|
||
email VARCHAR(255) UNIQUE NOT NULL,
|
||
password_hash VARCHAR(255),
|
||
display_name VARCHAR(255),
|
||
avatar_url TEXT,
|
||
preferences JSONB DEFAULT '{}',
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- ============ 记忆系统 ============
|
||
CREATE TABLE memory_episodic (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id UUID NOT NULL,
|
||
user_id UUID NOT NULL,
|
||
content TEXT NOT NULL,
|
||
embedding VECTOR(1536),
|
||
importance FLOAT DEFAULT 0.5,
|
||
decay_factor FLOAT DEFAULT 1.0,
|
||
last_accessed TIMESTAMP DEFAULT NOW(),
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
) PARTITION BY LIST (tenant_id);
|
||
|
||
CREATE TABLE memory_semantic (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id UUID NOT NULL,
|
||
user_id UUID NOT NULL,
|
||
entity_type VARCHAR(100),
|
||
entity_value TEXT,
|
||
confidence FLOAT DEFAULT 1.0,
|
||
source_conversation_id UUID,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
CREATE TABLE user_profile (
|
||
user_id UUID PRIMARY KEY,
|
||
tenant_id UUID NOT NULL,
|
||
expertise_domains TEXT[],
|
||
communication_style JSONB,
|
||
preferences JSONB,
|
||
behavior_patterns JSONB,
|
||
updated_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- ============ 知识库 ============
|
||
CREATE TABLE knowledge_bases (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id UUID NOT NULL,
|
||
user_id UUID NOT NULL,
|
||
name VARCHAR(255),
|
||
description TEXT,
|
||
chunk_strategy VARCHAR(50) DEFAULT 'semantic',
|
||
embedding_model VARCHAR(255),
|
||
total_documents INTEGER DEFAULT 0,
|
||
total_chunks INTEGER DEFAULT 0,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
CREATE TABLE documents (
|
||
id UUID PRIMARY KEY,
|
||
kb_id UUID REFERENCES knowledge_bases(id),
|
||
tenant_id UUID NOT NULL,
|
||
filename VARCHAR(500),
|
||
file_type VARCHAR(50),
|
||
storage_path TEXT,
|
||
chunk_count INTEGER,
|
||
status VARCHAR(50) DEFAULT 'processing',
|
||
metadata JSONB DEFAULT '{}',
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
CREATE TABLE document_chunks (
|
||
id UUID PRIMARY KEY,
|
||
doc_id UUID REFERENCES documents(id),
|
||
tenant_id UUID NOT NULL,
|
||
content TEXT NOT NULL,
|
||
embedding VECTOR(1536),
|
||
chunk_index INTEGER,
|
||
metadata JSONB DEFAULT '{}'
|
||
);
|
||
|
||
-- ============ Hub 集市 ============
|
||
CREATE TABLE hub_assets (
|
||
id UUID PRIMARY KEY,
|
||
type VARCHAR(50) NOT NULL, -- skill | mcp_server | agent | application
|
||
name VARCHAR(255) NOT NULL,
|
||
slug VARCHAR(255) UNIQUE,
|
||
description TEXT,
|
||
author_id UUID REFERENCES users(id),
|
||
version VARCHAR(50) DEFAULT '1.0.0',
|
||
category VARCHAR(100),
|
||
tags TEXT[],
|
||
pricing_model VARCHAR(50),
|
||
price DECIMAL(10,4) DEFAULT 0,
|
||
status VARCHAR(50) DEFAULT 'draft', -- draft | pending_review | approved | published | suspended
|
||
download_count INTEGER DEFAULT 0,
|
||
rating_avg DECIMAL(3,1) DEFAULT 0,
|
||
rating_count INTEGER DEFAULT 0,
|
||
deployment_config JSONB,
|
||
security_scan_result JSONB,
|
||
created_at TIMESTAMP DEFAULT NOW(),
|
||
published_at TIMESTAMP
|
||
);
|
||
|
||
CREATE TABLE hub_asset_versions (
|
||
id UUID PRIMARY KEY,
|
||
asset_id UUID REFERENCES hub_assets(id),
|
||
version VARCHAR(50) NOT NULL,
|
||
changelog TEXT,
|
||
artifact_url TEXT,
|
||
docker_image TEXT,
|
||
is_latest BOOLEAN DEFAULT FALSE,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
CREATE TABLE hub_transactions (
|
||
id UUID PRIMARY KEY,
|
||
buyer_id UUID REFERENCES users(id),
|
||
asset_id UUID REFERENCES hub_assets(id),
|
||
transaction_type VARCHAR(50), -- purchase | subscription | usage
|
||
amount DECIMAL(10,4),
|
||
platform_fee DECIMAL(10,4),
|
||
developer_earnings DECIMAL(10,4),
|
||
stripe_payment_id VARCHAR(255),
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- ============ 用量与计费 ============
|
||
CREATE TABLE usage_records (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id UUID NOT NULL,
|
||
user_id UUID,
|
||
service_type VARCHAR(50), -- chat | skill | mcp | agent | storage
|
||
asset_id UUID,
|
||
model_name VARCHAR(255),
|
||
input_tokens BIGINT DEFAULT 0,
|
||
output_tokens BIGINT DEFAULT 0,
|
||
cost_usd DECIMAL(10,6) DEFAULT 0,
|
||
request_id UUID,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- ============ Agent 编排 ============
|
||
CREATE TABLE agents (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id UUID NOT NULL,
|
||
creator_id UUID REFERENCES users(id),
|
||
name VARCHAR(255),
|
||
description TEXT,
|
||
graph_definition JSONB NOT NULL, -- LangGraph 状态图定义
|
||
system_prompt TEXT,
|
||
model_config JSONB,
|
||
skill_bindings UUID[],
|
||
mcp_bindings UUID[],
|
||
is_published BOOLEAN DEFAULT FALSE,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- ============ 对话 ============
|
||
CREATE TABLE conversations (
|
||
id UUID PRIMARY KEY,
|
||
tenant_id UUID NOT NULL,
|
||
user_id UUID NOT NULL,
|
||
title VARCHAR(500),
|
||
agent_id UUID REFERENCES agents(id),
|
||
context_summary TEXT, -- 长对话压缩摘要
|
||
message_count INTEGER DEFAULT 0,
|
||
total_tokens BIGINT DEFAULT 0,
|
||
created_at TIMESTAMP DEFAULT NOW(),
|
||
updated_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
CREATE TABLE messages (
|
||
id UUID PRIMARY KEY,
|
||
conversation_id UUID REFERENCES conversations(id),
|
||
tenant_id UUID NOT NULL,
|
||
role VARCHAR(20), -- user | assistant | system | tool
|
||
content TEXT,
|
||
metadata JSONB DEFAULT '{}',
|
||
token_count INTEGER DEFAULT 0,
|
||
created_at TIMESTAMP DEFAULT NOW()
|
||
);
|
||
|
||
-- ============ 行级安全策略 ============
|
||
ALTER TABLE memory_episodic ENABLE ROW LEVEL SECURITY;
|
||
CREATE POLICY tenant_isolation ON memory_episodic
|
||
USING (tenant_id = current_setting('app.current_tenant')::UUID);
|
||
|
||
-- 对所有租户表重复此模式
|
||
```
|
||
|
||
---
|
||
|
||
## 八、项目目录结构
|
||
|
||
```
|
||
ai-hub-platform/
|
||
├── apps/
|
||
│ ├── web/ # Next.js 前端
|
||
│ │ ├── app/
|
||
│ │ │ ├── (auth)/ # 登录/注册/SSO
|
||
│ │ │ ├── (dashboard)/ # 主控台
|
||
│ │ │ │ ├── chat/ # AI 对话
|
||
│ │ │ │ ├── knowledge/ # 知识库管理
|
||
│ │ │ │ ├── agents/ # Agent 管理
|
||
│ │ │ │ ├── memory/ # 记忆可视化
|
||
│ │ │ │ └── settings/ # 用户设置
|
||
│ │ │ ├── hub/ # 能力集市
|
||
│ │ │ │ ├── skills/
|
||
│ │ │ │ ├── mcp/
|
||
│ │ │ │ ├── agents/
|
||
│ │ │ │ └── apps/
|
||
│ │ │ └── studio/ # Agent 画布编辑器
|
||
│ │ ├── components/
|
||
│ │ ├── lib/
|
||
│ │ └── package.json
|
||
│ │
|
||
│ ├── api/ # NestJS 主后端
|
||
│ │ ├── src/
|
||
│ │ │ ├── modules/
|
||
│ │ │ │ ├── auth/ # 认证模块
|
||
│ │ │ │ ├── user/ # 用户管理
|
||
│ │ │ │ ├── tenant/ # 租户管理
|
||
│ │ │ │ ├── memory/ # 记忆引擎
|
||
│ │ │ │ ├── knowledge/ # 知识库
|
||
│ │ │ │ ├── conversation/ # 对话管理
|
||
│ │ │ │ ├── agent/ # Agent 编排
|
||
│ │ │ │ ├── hub/ # 集市核心
|
||
│ │ │ │ ├── billing/ # 计费
|
||
│ │ │ │ └── gateway/ # API 网关
|
||
│ │ │ ├── shared/
|
||
│ │ │ │ ├── middleware/
|
||
│ │ │ │ ├── guards/
|
||
│ │ │ │ ├── interceptors/
|
||
│ │ │ │ └── decorators/
|
||
│ │ │ └── main.ts
|
||
│ │ └── package.json
|
||
│ │
|
||
│ └── ai-engine/ # Python AI 引擎
|
||
│ ├── src/
|
||
│ │ ├── memory_engine/ # 记忆系统
|
||
│ │ │ ├── perception.py
|
||
│ │ │ ├── distillation.py
|
||
│ │ │ ├── association.py
|
||
│ │ │ ├── consolidation.py
|
||
│ │ │ └── reflection.py
|
||
│ │ ├── retrieval/ # 混合检索
|
||
│ │ │ ├── vector_store.py
|
||
│ │ │ ├── bm25_index.py
|
||
│ │ │ ├── hybrid_search.py
|
||
│ │ │ └── reranker.py
|
||
│ │ ├── agent_runtime/ # Agent 执行
|
||
│ │ │ ├── coordinator.py
|
||
│ │ │ ├── planner.py
|
||
│ │ │ ├── executor.py
|
||
│ │ │ └── tool_registry.py
|
||
│ │ ├── model_router/ # 模型路由
|
||
│ │ │ └── litellm_wrapper.py
|
||
│ │ └── pipelines/
|
||
│ │ ├── ingest.py # 文档 ingestion
|
||
│ │ └── embed.py # 向量化
|
||
│ ├── pyproject.toml
|
||
│ └── Dockerfile
|
||
│
|
||
├── packages/ # 共享包
|
||
│ ├── sdk/ # 平台 SDK(供第三方应用接入)
|
||
│ │ ├── auth/
|
||
│ │ ├── billing/
|
||
│ │ ├── memory/
|
||
│ │ └── model-router/
|
||
│ ├── ui-kit/ # 共享 UI 组件
|
||
│ ├── config/ # 共享配置/规范
|
||
│ └── types/ # 共享 TS 类型定义
|
||
│
|
||
├── infra/ # 基础设施
|
||
│ ├── docker/
|
||
│ │ ├── docker-compose.dev.yaml
|
||
│ │ ├── docker-compose.prod.yaml
|
||
│ │ └── Dockerfile.*.tpl
|
||
│ ├── k8s/
|
||
│ │ ├── helm-charts/
|
||
│ │ ├── manifests/
|
||
│ │ └── kustomize/
|
||
│ ├── pulumi/ # IaC (Pulumi)
|
||
│ │ ├── index.ts
|
||
│ │ └── Pulumi.yaml
|
||
│ └── monitoring/
|
||
│ ├── prometheus/
|
||
│ ├── grafana/
|
||
│ └── otel-collector/
|
||
│
|
||
├── services/ # 独立微服务
|
||
│ ├── mcp-gateway/ # MCP 协议网关
|
||
│ ├── deployment-engine/ # GitHub → Docker 自动部署
|
||
│ ├── review-bot/ # 自动审核服务
|
||
│ └── billing-engine/ # 计费引擎
|
||
│
|
||
├── .github/
|
||
│ └── workflows/ # CI/CD
|
||
│ ├── ci.yaml
|
||
│ ├── deploy-staging.yaml
|
||
│ └── deploy-prod.yaml
|
||
│
|
||
├── docs/ # 文档
|
||
│ ├── architecture/
|
||
│ ├── api/
|
||
│ ├── developer-guide/
|
||
│ └── sdk-docs/
|
||
│
|
||
├── pnpm-workspace.yaml
|
||
├── package.json
|
||
├── tsconfig.base.json
|
||
└── README.md
|
||
```
|
||
|
||
---
|
||
|
||
## 九、分阶段实施路线图
|
||
|
||
### Phase 1:MVP 底座(第 1-3 月)
|
||
|
||
**目标**:跑通核心闭环——用户注册 → 对话 → 知识库 → 记忆积累
|
||
|
||
| 周次 | 任务 | 产出 |
|
||
|------|------|------|
|
||
| W1-2 | 项目初始化、Monorepo 搭建、CI/CD | 可运行的空骨架 |
|
||
| W3-4 | 用户认证(Keycloak 集成)、租户隔离 | 注册/登录/SSO 可用 |
|
||
| W5-6 | 对话引擎(LiteLLM + 基础 RAG) | 可对话 + 简单知识库 |
|
||
| W7-8 | 向量检索(Qdrant 集成)、文档上传 | 知识库语义检索可用 |
|
||
| W9-10 | 记忆引擎 V1(对话摘要 + 用户画像) | 跨会话记忆生效 |
|
||
| W11-12 | 前端主控台、计费埋点 | MVP 可演示 |
|
||
|
||
**技术验证清单**:
|
||
- [ ] 用户 A 上传文档 → 对话时能检索到相关内容
|
||
- [ ] 用户 A 的对话记忆不会泄露给用户 B(租户隔离验证)
|
||
- [ ] 用户第二次对话时,AI 记得之前的偏好
|
||
- [ ] Token 消耗被正确计量并展示
|
||
|
||
### Phase 2:Hub 集市 V1(第 4-6 月)
|
||
|
||
**目标**:Skills 和 MCP Server 可发布、可发现、可调用
|
||
|
||
| 周次 | 任务 | 产出 |
|
||
|------|------|------|
|
||
| W13-14 | 集市前端(浏览/搜索/详情页) | 商店 UI 上线 |
|
||
| W15-16 | Skill 发布流程 + 审核流水线 | 开发者可上传 Skill |
|
||
| W17-18 | MCP Gateway + GitHub URL 自动部署 | 输入 GitHub URL → 自动上线 |
|
||
| W19-20 | 交易引擎 + Stripe 集成 | 付费 Skill 可购买 |
|
||
| W21-22 | 版本管理 + 评分评论 | 完整集市闭环 |
|
||
| W23-24 | 安全扫描 + 沙箱测试自动化 | 上架前自动审核 |
|
||
|
||
### Phase 3:Agent 画布 + 自进化(第 7-9 月)
|
||
|
||
**目标**:可视化 Agent 编排 + 记忆系统全面自进化
|
||
|
||
| 周次 | 任务 | 产出 |
|
||
|------|------|------|
|
||
| W25-26 | 集成 Langflow 作为 Agent 编辑器 | 拖拽式 Agent 编排 |
|
||
| W27-28 | 多 Agent 协作(LangGraph 后端) | 复杂工作流可执行 |
|
||
| W29-30 | 记忆引擎 V2(反思/巩固/遗忘) | AI 越用越懂你 |
|
||
| W31-32 | 用户认知模型(行为模式学习) | 个性化推荐生效 |
|
||
| W33-34 | Agent 画布导出为 MCP Server | 创作即可分发 |
|
||
| W35-36 | Eval 系统(Langfuse 集成) | 质量可量化 |
|
||
|
||
### Phase 4:应用工厂 + 规模化(第 10-12 月)
|
||
|
||
**目标**:第三方应用可一键接入 + 平台规模化
|
||
|
||
| 周次 | 任务 | 产出 |
|
||
|------|------|------|
|
||
| W37-38 | 平台 SDK 开发(Auth/Billing/Memory/Model) | 标准化接入工具包 |
|
||
| W39-40 | MuMuAINovel 接入示范(改造为平台应用) | 首个接入应用上线 |
|
||
| W41-42 | 应用商店 UI + 订阅管理 | 应用可上架/购买 |
|
||
| W43-44 | K8s 生产部署 + 自动扩缩容 | 可承载千级并发 |
|
||
| W45-46 | 监控告警 + SLA 保障 | 99.9% 可用性 |
|
||
| W47-48 | 文档完善 + 开发者社区启动 | 开放生态 |
|
||
|
||
---
|
||
|
||
## 十、给非技术创始人的执行建议
|
||
|
||
### 10.1 团队配置建议
|
||
|
||
| 角色 | 人数 | 职责 | 何时需要 |
|
||
|------|------|------|---------|
|
||
| **技术合伙人 / 架构师** | 1 | 整体技术决策、代码审查、关键技术攻关 | 第 1 天 |
|
||
| **全栈工程师** | 2-3 | Next.js + NestJS 前后端开发 | 第 1 月 |
|
||
| **Python/AI 工程师** | 1-2 | 记忆引擎、检索、Agent 编排 | 第 2 月 |
|
||
| **DevOps 工程师** | 1 | Docker/K8s/CI-CD/监控 | 第 3 月 |
|
||
| **UI/UX 设计师** | 1 | 产品设计、交互设计 | 第 1 月 |
|
||
| **安全工程师**(兼职) | 1 | 安全审计、渗透测试 | 第 4 月 |
|
||
|
||
### 10.2 AI 辅助开发工具使用指南
|
||
|
||
由于你使用 **Trea / WorkBuddy / Qoder**,以下是最大化效率的方法:
|
||
|
||
```
|
||
1. 每个模块给 AI 工具提供:
|
||
├── 本架构文档(让它理解全局)
|
||
├── 对应模块的详细 specs(在 docs/ 中)
|
||
├── 标准代码模板(在 packages/config/ 中)
|
||
└── 明确的验收标准(可测试的 checklist)
|
||
|
||
2. 推荐工作流:
|
||
架构师出方案 → 产品经理写 specs → AI 工具生成代码 → 工程师审查+调试
|
||
|
||
3. 关键原则:
|
||
• AI 工具生成代码后,必须人工审查安全相关代码
|
||
• 数据库 migration 必须人工确认
|
||
• 支付/计费代码必须双人审查
|
||
• 每个 PR 必须有测试覆盖
|
||
```
|
||
|
||
### 10.3 关键技术风险与应对
|
||
|
||
| 风险 | 影响 | 应对策略 |
|
||
|------|------|---------|
|
||
| 租户数据泄露 | 灾难性 | 多层隔离 + 定期渗透测试 + RLS 审计 |
|
||
| AI 成本失控 | 资金风险 | 严格限流 + 模型路由优化 + 缓存命中率监控 |
|
||
| 集市恶意代码 | 平台信誉 | 四层审核 + 沙箱隔离 + 紧急下架机制 |
|
||
| 模型依赖风险 | 业务中断 | 多模型备份 + LiteLLM 自动降级 + 本地模型兜底 |
|
||
| 自进化失控 | 用户体验 | 记忆衰减 + 用户可查看/编辑/删除记忆 + 人工审核接口 |
|
||
|
||
---
|
||
|
||
## 十一、核心 API 接口设计(示例)
|
||
|
||
### 11.1 对话接口
|
||
|
||
```typescript
|
||
// POST /api/v1/chat/completions
|
||
interface ChatRequest {
|
||
conversation_id?: string;
|
||
message: string;
|
||
agent_id?: string;
|
||
context?: {
|
||
knowledge_base_ids?: string[];
|
||
skill_ids?: string[];
|
||
memory_enabled?: boolean;
|
||
};
|
||
stream?: boolean; // SSE 流式
|
||
}
|
||
|
||
interface ChatResponse {
|
||
success: boolean;
|
||
data: {
|
||
message_id: string;
|
||
content: string;
|
||
reasoning_steps?: ReasoningStep[];
|
||
used_skills?: string[];
|
||
token_usage: {
|
||
input: number;
|
||
output: number;
|
||
total_cost_usd: number;
|
||
};
|
||
memory_updates?: MemoryUpdate[];
|
||
};
|
||
meta: {
|
||
request_id: string;
|
||
latency_ms: number;
|
||
quota_remaining: number;
|
||
};
|
||
}
|
||
```
|
||
|
||
### 11.2 Hub 发布接口
|
||
|
||
```typescript
|
||
// POST /api/v1/hub/assets/publish
|
||
interface PublishRequest {
|
||
type: 'skill' | 'mcp_server' | 'agent' | 'application';
|
||
name: string;
|
||
description: string;
|
||
source: {
|
||
type: 'github_url' | 'upload' | 'platform_built';
|
||
url?: string;
|
||
files?: UploadedFile[];
|
||
};
|
||
pricing: {
|
||
model: 'free' | 'freemium' | 'paid' | 'subscription';
|
||
price?: number;
|
||
free_quota?: number;
|
||
};
|
||
metadata: {
|
||
category: string;
|
||
tags: string[];
|
||
permissions: string[];
|
||
};
|
||
}
|
||
|
||
// 响应
|
||
interface PublishResponse {
|
||
success: boolean;
|
||
data: {
|
||
asset_id: string;
|
||
status: 'pending_review' | 'auto_approved';
|
||
review_pipeline: {
|
||
security_scan: 'queued' | 'running' | 'passed' | 'failed';
|
||
sandbox_test: 'queued' | 'running' | 'passed' | 'failed';
|
||
manual_review: 'pending' | 'approved' | 'rejected';
|
||
};
|
||
estimated_publish_time: string;
|
||
};
|
||
}
|
||
```
|
||
|
||
### 11.3 记忆检索接口
|
||
|
||
```typescript
|
||
// GET /api/v1/memory/retrieve
|
||
interface MemoryQuery {
|
||
query: string;
|
||
memory_types?: ('episodic' | 'semantic' | 'procedural')[];
|
||
top_k?: number;
|
||
time_range?: { from: string; to: string };
|
||
min_relevance?: number;
|
||
}
|
||
|
||
// 响应
|
||
interface MemoryRetrieveResponse {
|
||
success: boolean;
|
||
data: {
|
||
memories: Array<{
|
||
id: string;
|
||
type: string;
|
||
content: string;
|
||
relevance_score: number;
|
||
created_at: string;
|
||
source: string; // 来自哪次对话/哪个文档
|
||
}>;
|
||
synthesized_context: string; // AI 自动综合的上下文摘要
|
||
};
|
||
}
|
||
```
|
||
|
||
---
|
||
|
||
## 十二、总结:技术决策一览
|
||
|
||
| 决策点 | 选择 | 理由(一句话) |
|
||
|--------|------|---------------|
|
||
| 前端框架 | Next.js 18 | 全栈一体、SSR、生态最成熟 |
|
||
| 后端主框架 | NestJS (TS) | 与前端统一语言、模块化强、企业级 |
|
||
| AI/ML 引擎 | Python (FastAPI) | AI 生态几乎全是 Python |
|
||
| 数据库 | PostgreSQL 18 + pgvector | 关系 + 向量一体、RLS 天然多租户 |
|
||
| 向量数据库 | Qdrant | 多租户命名空间、Rust 性能、开源 |
|
||
| 缓存/队列 | Redis 7 Cluster | 缓存/会话/限流/消息 四位一体 |
|
||
| 分析引擎 | ClickHouse | 海量日志/用量分析、Langfuse 验证过 |
|
||
| 身份认证 | Keycloak | 企业级 SSO、多租户、开源可控 |
|
||
| 模型网关 | LiteLLM Proxy | 统一格式、智能路由、内置计费 |
|
||
| Agent 编排 | LangGraph + Langflow | 编程式 + 可视化双模式 |
|
||
| 容器编排 | Docker → K8s | 渐进式演进、行业标准 |
|
||
| 可观测性 | OpenTelemetry + Langfuse | 全链路追踪、AI 专项指标 |
|
||
| 支付 | Stripe + 微信/支付宝 | 全球覆盖 + 国内合规 |
|
||
| CI/CD | GitHub Actions + ArgoCD | GitOps 最佳实践 |
|
||
| IaC | Pulumi (TS) | 用 TypeScript 写基础设施 |
|
||
|
||
---
|
||
|
||
> **最后的话**:这份架构设计的核心理念是——**不要重复造轮子,但要掌握轮子的接口**。所有能借用的开源项目都已经标注,你的团队应该专注于**业务逻辑、用户体验和生态建设**,而不是底层基础设施的重复开发。
|
||
>
|
||
> 用 AI 编程工具(Trea/WorkBuddy/Qoder)时,把这份文档作为「系统上下文」喂给 AI,它能生成更符合整体架构的代码。每一步都先有设计、再有代码、最后有测试。
|
||
>
|
||
> **祝你的 AI Hub 平台早日上线!** 🚀
|