七虎AI PaaS 平台 — 架构设计与实施方案 v3.0
最后更新: 2026-08-12
版本: v3.0
用途: 平台竞争力、护城河、技术框架、功能架构、业务逻辑完整文档
维护: 随系统迭代实时更新
仓库: http://git.qihuyun.com/qyyfw/qihuaiflow
一、平台护城河 (Moat)
1.1 核心竞争壁垒
| 壁垒维度 |
具体实现 |
竞争门槛 |
| 模型聚合网关 |
LiteLLM + STORE_MODEL_IN_DB,4+ 厂商统一 OpenAI 协议,管理员 UI 一键增删模型自动同步 |
竞品需手动配置模型路由,无 admin UI 驱动 |
| 双 Claw 单引擎 |
Web SSE + IM Bot (微信) 共享 EngineCore._send_message_core,能力发现、MCP 调用、LLM 路由只实现一次 |
竞品 Web/IM 两套代码,同步成本高 |
| 技能市场闭环 |
Skills 发现-安装-搜索(Meilisearch)-执行全生命周期,支持 97+ 技能、14 类 capability |
需自建市场 + 搜索引擎 + 沙箱执行 |
| ngnix 安全纵深 |
四层防护: 限流(API 30r/s/Admin 5r/s/Login 1r/s) + 扫描器拦截(14类path/20类UA) + 自动IP黑名单(5min cron/24h TTL) + SSL终止 |
竞品大多只做限流 |
| 模型双轨制已消除 |
#965 平台→LiteLLM REST API 同步,管理员 UI 操作即生效,不再 SSH 手动改 yaml |
多数平台仍手动配置网关 |
| 设计语言系统 |
完整 qihu-design-system (53 modules, CSS 55KB, 品牌色 #5B5FED + 渐变 + 玻璃/辉光 + 暗态) |
需专业设计师 + 前端团队长期维护 |
| 可观测性 |
Prometheus+Grafana+Alloy OTel 双 Claw 标签看板 + 日志审计 |
中小企业平台通常缺监控 |
1.2 竞争策略
| 策略 |
我方 |
竞品(AI PaaS) |
竞品(垂直SaaS) |
| 模型数量 |
14+ 实时可增删 |
3-5 个 |
1 个 |
| 技能市场 |
97 个,自建生态 |
0-20 个 |
无 |
| IM Bot |
微信 + 企业微信扩展 |
无 |
自己开发 |
| 多租户 |
PG RLS 行级安全 |
应用层隔离 |
单租户 |
| 部署 |
Docker Compose 一行启动 |
Kubernetes 复杂 |
无 Docker |
| 定价 |
免费层 + 会员订阅 |
仅付费 |
固定价 |
二、部署架构
2.1 物理拓扑
2.2 容器清单 (Docker Compose)
| 容器 |
镜像 |
端口 |
用途 |
| qihu-aiflow |
qihuaiflow:with-deps |
12888/18080/8080 |
主应用: Nginx + FastAPI + React dist |
| qihu-aiflow-litellm |
berriai/litellm:main-stable |
14000→4000 |
LLM 网关 + DB 模式模型管理 |
| qihu-aiflow-pg18 |
pgvector/pgvector:pg16 |
5432 |
PostgreSQL 主库 + 向量引擎 |
| qihu-aiflow-redis |
redis:7-alpine |
6379 |
缓存/队列/会话 |
| qihu-aiflow-casdoor |
casdoor |
8000 |
统一认证 OAuth2/OIDC |
| qihu-aiflow-meilisearch |
meilisearch:v1.11 |
17700 |
技能市场搜索引擎 |
| qihu-aiflow-prometheus |
prom/prometheus |
9090 |
指标采集 |
| qihu-aiflow-grafana |
grafana/grafana |
3000 |
可视化看板 |
| qihu-aiflow-alloy |
grafana/alloy |
- |
日志采集 Agent |
| qihu-aiflow-node-exporter |
prom/node-exporter |
9100 |
宿主机指标 |
2.3 网络与域名
| 域名 |
用途 |
| ai.qihuyun.com |
主站 (React SPA + FastAPI API) |
| docs.qihuyun.com |
文档站 |
| bot.qihuyun.com |
Bot 回调地址 |
三、技术栈矩阵
| 层级 |
技术 |
版本 |
选型理由 |
| 后端框架 |
FastAPI (Python 3.11) |
0.115+ |
异步原生、SSE 流式、Pydantic 验证、自动 OpenAPI |
| ASGI 服务器 |
uvicorn |
0.30+ |
单进程事件循环、生产级 |
| 前端框架 |
React + Vite |
18.3 + 5.4 |
组件化、HMR、TypeScript 5.6 严格模式 |
| 前端构建 |
Tailwind CSS v4.3 |
@tailwindcss/vite |
utility-first, design token 驱动 |
| 状态管理 |
Zustand 5 |
persist |
轻量级,三态主题 (light/dark/system) |
| 关系数据库 |
PostgreSQL 18 |
pgvector 0.8.4 |
JSONB、向量原生命支持 |
| 向量引擎 |
pgvector |
0.8.4 |
与主库同集群、混合检索 BM25+语义 |
| 缓存/队列 |
Redis 7 |
- |
会话、工具列表缓存、事件总线 |
| 认证 |
Casdoor |
latest |
OAuth2/OIDC、自建身份提供商 |
| ORM |
SQLAlchemy 2.0 |
2.0.36 |
成熟生态、async 支持、psycopg |
| LLM 客户端 |
openai Python SDK |
1.x |
统一 OpenAI 协议接入 |
| LLM 网关 |
LiteLLM |
main-stable |
模型路由、协议转换、费用追踪、key 管理 |
| MCP 客户端 |
mcp Python SDK |
0.28.1 |
Anthropic 官方 SDK、streamable_http/SSE |
| 搜索引擎 |
Meilisearch |
v1.11 |
BM25 + jieba 中文分词、sub-50ms 响应 |
| 代理 |
Nginx |
1.25+ |
反向代理、静态文件、SSL、限流、扫描器拦截 |
| 可观测 |
Prometheus + Grafana |
latest |
指标仪表盘、双 Claw OTel 标签 |
| 容器 |
Docker Compose |
v2 |
单机部署、一行启动 |
四、功能架构
4.1 系统分层
4.2 核心功能模块
前台 (Frontend Pages)
| 模块 |
路径 |
功能 |
| 落地页 |
/ |
平台介绍 + Hero + 能力展示 |
| AI 对话 |
/chat |
SSE 流式对话、代码块渲染、Markdown、媒体预览 |
| 知识库 |
/knowledge |
文档上传、RAG 检索、向量索引管理 |
| 技能市场 |
/market |
Meilisearch 搜索、技能安装、上架审核 |
| Token 驾驶舱 |
/token |
实时用量、消耗趋势、预警告警 |
| 会员/定价 |
/pricing |
套餐对比、微信支付订阅、增值付费 |
| 个人中心 |
/profile |
用户信息、主题设置、API Key 管理 |
| 通知中心 |
/notifications |
系统消息、订单通知、告警 |
| Agent 画布 |
/agent |
可视化编排、DAG 工作流编辑 |
| App 服务 |
/apps |
第三方应用集成(小说、视频等) |
后台 (Admin Pages)
| 模块 |
路径 |
功能 |
| 平台驾驶舱 |
/admin |
用户数/模型数/调用量/营收概览 |
| 大模型库 |
/admin/models |
供应商管理、模型 CRUD、连接测试、能力默认值配置、自动同步 LiteLLM |
| Agent 管理 |
/admin/agents |
Agent 创建/编辑/状态 |
| 技能管理 |
/admin/skills |
技能审批、上架/下架、分类 |
| MCP 管理 |
/admin/mcp |
MCP Server 注册/授权 |
| 用户管理 |
/admin/users |
用户 CRUD、角色分配 |
| 会员管理 |
/admin/membership |
套餐配置、续费管理 |
| 推广系统 |
/admin/promotion |
邀请链接、佣金结算 |
| 计费管理 |
/admin/billing |
充值记录、订单、退款 |
| 应用市场 |
/admin/market |
应用审核、产品定价、webhook |
| 系统设置 |
/admin/settings |
站点配置、SMS、存储 |
| 日志审计 |
/admin/logs |
操作日志、不可删除 |
| Wechat Bot |
/admin/imbots |
微信连接状态、消息历史 |
4.3 模型能力体系
| 能力分类 |
英文标识 |
代表模型 |
用途 |
| 文本对话 |
text |
DeepSeek-V4-Flash, MiMo-v2.5 |
通用聊天、文档生成 |
| 推理思考 |
thinking |
MiMo-v2.5 |
复杂推理、逻辑分析 |
| 视觉理解 |
vision |
MiMo-v2.5 |
图片识别、OCR |
| 工具调用 |
tool |
MiMo-v2.5 |
Function Calling |
| 图像生成 |
image |
AGNES-Image-2.0-Flash |
AI 绘图 |
| 视频生成 |
video |
AGNES-Video-v2.0 |
AI 视频生成 |
| 语音合成 |
audio |
MOSS-TTSD |
TTS 文字转语音 |
| 语音识别 |
asr |
TeleSpeechASR |
语音转文字 |
| OCR 识别 |
ocr |
DeepSeek-OCR |
文档 OCR |
| 嵌入向量 |
embedding |
BAAI/bge-m3 |
文本向量化 |
| 重排序 |
rerank |
BAAI/bge-reranker-v2-m3 |
检索结果重排 |
五、核心业务逻辑
5.1 AI 对话处理流 (chat.py)
5.2 双 Claw 单引擎架构 (Dual Claw)
关键设计原则:
- 能力发现
capability_discovery.py Web/IM 共用
- MCP 命名
mcp__{safe(name,30)}__{safe(tool,50)}__{idx} 统一
tests/test_dual_claw.py R-DUAL 集成哨兵
5.3 模型同步机制 (#965 LiteLLM Sync)
5.4 媒体生成与中转 (#967 media_relay)
5.5 安全纵深防御
六、设计系统 (qihu-design-system)
6.1 设计理念
温暖科技感 + 极简主义 (Warm Tech Minimalism)。护眼雾白底,靛蓝 #5B5FED 为唯一品牌色。
6.2 技术实现
| 维度 |
值 |
| 主品牌色 |
#5B5FED (indigo) |
| 暗态品牌色 |
#8289F5 |
| 签名渐变 |
indigo → violet(#8B5CF6) → fuchsia(#D946EF) |
| 字体 |
Inter (正文/标题) + JetBrains Mono (代码) |
| CSS 框架 |
Tailwind v4.3 (@tailwindcss/vite) |
| 主题 |
light / dark / system 三态,Zustand persist + matchMedia |
| 组件库 |
53 modules,CSS 55KB / JS 244KB / 1.36s build |
6.3 组件体系
6.4 设计铁律
- ❌ 禁硬编码
bg-blue-*/bg-sky-*/bg-indigo-600
- ✅ GenUi 走 primary 语义 token
- ✅ 变体映射必须
Record<Variant, string> + cn(),禁 bg-primary-${w}
- ✅ 暗态
.dark 双写;玻璃/辉光统一 .glass/.glow
- ✅ 动效尊重
prefers-reduced-motion
- ✅ 条纹:
--chat-accent / --r-sm|md|lg / --chat-ease cubic-bezier(0.2,0.8,0.2,1) / --chat-duration 200ms
七、运维与可靠性
7.1 Safe-Align 工作流
真相源: 容器 (image := container := git)
7.2 监控
- Grafana 双 Claw 对比看板
uid: qihuaiflow-dual-claw-876
- OTel traces + metrics (alloy → Prometheus)
- 日志级别: INFO (生产) / DEBUG (开发)
7.3 备份策略
- 每 6h 自动备份 (cron)
- PG dump (不用 --ssl=0 否则 0 bytes)
- Docker image snapshot:
qihuaiflow:backup-*{TS}
- nginx logrotate 每日轮转
八、迭代路线
8.1 已完成 (2026-08-11)
| 编号 |
描述 |
commit |
| #957 |
Nginx server 级 root 修复 |
53bbbf3 |
| #959 |
Index.html no-store cache |
45b6939 |
| #961 |
React hydration error fix |
4cf910e |
| #962 |
Global ErrorBoundary |
420e0f6 |
| #963 |
safeLazy chunk load fallback |
679f23f |
| #964 |
React hooks rules fix (#321) |
fa38d2c |
| #965 |
LiteLLM platform-model sync |
fd84fec |
| #966 |
Container restart loop fix |
75be24c |
| #967 |
media_relay endpoint impl |
54b444b |
8.2 下一步候选
| 优先级 |
项目 |
工作量 |
| 🟢 P0 |
企业微信官方 Bot API 接入 |
3 天 |
| 🟢 P1 |
后端核心模块单测补全 (165→300+) |
3 天 |
| 🟡 P1 |
Alloy traces 配置 bake to image |
1 天 |
| 🟡 P1 |
多租户 PG RLS 隔离 |
5 天 |
| ⚪ P2 |
语音/视频流式响应 |
5 天 |
| ⚪ P2 |
Agent 画布可视化编排 |
7 天 |
8.3 长期方向
- 模型 → 智能体: 从简单的模型调用升级到自主 Agent + 多步推理
- 单机 → 集群: Docker Compose → Kubernetes + Helm
- 中国市场 → 国际化: 多语言 + 多区域部署
- 技能市场 → 开放生态: 第三方开发者平台 + 收入分成
- 个人微信 → 企业微信: 合规化 IM Bot 渠道
九、附录
9.1 服务器信息
9.2 关键文件路径
| 文件 |
容器路径 |
| 后端入口 |
/app/backend/python/main.py |
| AI 对话 |
/app/backend/python/app/api/chat.py |
| LLM 网关 |
/app/backend/python/app/core/llm_router.py |
| 双 Claw |
/app/backend/python/app/core/claw_adapters.py |
| 同步服务 |
/app/backend/python/app/core/litellm_sync.py |
| 前端入口 |
/app/frontend/src/main.tsx |
| Nginx 配置 |
/etc/nginx/conf.d/aiflow.conf |
| LiteLLM 配置 |
/app/config.yaml (litellm 容器) |
9.3 调试经验
| 问题 |
解决方案 |
| 容器重启循环 |
docker stop → docker cp 修复文件 → docker start |
| React #321 hooks error |
useState 必须在组件函数内,不能模块顶层 |
| Chrome 缓存旧 HTML |
index.html 加 Cache-Control: no-store |
| nginx 调测 444 |
curl 用 -A 'Mozilla/5.0' 避免被 P1-2 拦截 |
| Docker tag 短ID 报错 |
必须用完整 sha256: 格式 ID |
| SSH paramiko 掉线 |
get_ssh() 3次重试 + 指数退避 |