项目简介
BuildingAI 是一款面向 AI 开发者、AI 创业者和先进组织打造的企业级开源智能体搭建平台。通过可视化配置界面(Do It Yourself)零代码搭建具备以下能力的原生企业智能体应用。
核心能力
| 能力 | 说明 |
|---|
| 🤖 AI 智能体 | 具备记忆、目标和工具使用能力的自主任务执行 |
| 🔧 MCP 协议 | 支持 SSE/StreamableHTTP 方式调用 MCP 工具 |
| 📚 RAG 管道 | 知识库构建、向量检索与 RAG 增强生成 |
| 🧠 大模型聚合 | 统一接入主流 LLM 提供商,标准化 API 调用 |
| 💡 上下文工程 | 智能对话管理、提示词优化、参数调优 |
| 💰 商业闭环 | 用户注册、会员订阅、算力计费、支付集成 |
核心特性
BuildingAI 具备以下核心特性,为企业提供完整的 AI 智能体解决方案:
| 特性 | 说明 |
|---|
| ✅ Monorepo 架构 | 基于 Turbo + pnpm 的高效现代化架构 |
| ✅ 全栈 TypeScript | 前后端统一类型安全保障 |
| ✅ 模块化设计 | 高内聚低耦合,可扩展性强 |
| ✅ 企业级安全 | JWT 认证、RBAC 权限、数据加密 |
| ✅ 生产就绪 | Docker 一键部署、PM2 进程管理、完善监控 |
| ✅ 国际化支持 | 多语言界面,全球化适配 |
快速开始
系统要求
在安装 BuildingAI 之前,请确保您的设备满足以下最低配置要求:
| 资源 | 最低要求 | 推荐配置 |
|---|
| CPU | ≥2 核 | ≥4 核 |
| 内存 | ≥4GB RAM | ≥8GB RAM |
| 存储 | ≥5GB 空闲空间 | ≥20GB 空闲空间 |
| Node.js | ≥22.20.x < 23 | 22.20.x LTS |
| 数据库 | PostgreSQL 17.x | PostgreSQL 17.6 |
| 缓存 | Redis 6.x+ | Redis 8.2.2 |
Docker 部署(推荐)
使用 Docker 部署是最简单、稳定的部署方案。
部署步骤:
-
克隆项目
git clone https://github.com/BidingCC/BuildingAI.git
cd BuildingAI
-
复制环境变量配置文件
-
修改配置(生产环境必须修改)
编辑
.env 文件,修改以下关键配置:
APP_DOMAIN:你的域名
DB_PASSWORD:数据库密码
REDIS_PASSWORD:Redis 密码
JWT_SECRET:JWT 密钥
-
启动服务
首次启动需要拉取镜像和构建项目,通常需要 5-10 分钟(取决于网络和设备性能)
本地开发部署
适合需要进行二次开发或调试的场景。
# 1. 安装依赖(使用 pnpm)
pnpm install
# 2. 复制环境变量
cp .env.example .env
# 3. 配置数据库和 Redis
# 确保本地已安装并启动 PostgreSQL 和 Redis
# 修改 .env 中的数据库连接信息
# 4. 初始化数据库
pnpm buildingai db:init
# 5. 启动开发服务器
pnpm dev
生产环境部署
# 1. 构建项目
pnpm build
# 2. 使用 PM2 启动
pnpm start
# 3. 查看运行状态
pnpm pm2:status
核心功能
AI 对话系统
- 智能对话 - 基于 LLM 模型的自然语言对话,支持流式/阻塞响应
- 多模态支持 - 支持文本、图像等多模态输入输出
- 上下文管理 - 智能会话上下文管理,支持长对话记忆
- 消息流处理 - 实时流式输出,提升用户体验
- 对话历史 - 完整的对话记录管理和导出功能
AI 智能体(Agent)
- 自主任务执行 - 具备记忆、目标和工具使用能力
- 工具调用 - 支持动态工具加载和 Function Calling
- 多智能体协作 - 支持多个智能体协同工作
- 智能体发布 - 一键发布为公开服务,支持 API Key 调用
- 配置管理 - 可视化配置角色提示、参数、工具等
- 使用统计 - 详细的使用数据和性能分析
知识库与 RAG
- 文档管理 - 支持多种格式文档上传(PDF、Word、Markdown 等)
- 向量化处理 - 自动文档分块和向量化存储
- 向量检索 - 基于语义相似度的知识检索
- RAG 增强生成 - 知识库内容增强 AI 回答准确性
- 引用溯源 - 自动标注知识来源和引用信息
- 批量导入 - 支持批量文档导入和更新
MCP 工具集成
- MCP 协议支持 - 完整实现 Model Context Protocol
- 双通信模式 - 支持 SSE 和 StreamableHTTP 两种通信方式
- 工具管理 - MCP 服务器和工具的可视化管理
- 自动连接 - 智能连接和断线重连机制
- 工具映射 - 自动将 MCP 工具转换为 OpenAI Function 格式
- 自定义 Header - 支持自定义 HTTP 请求头
大模型管理
- 多提供商支持 - 统一接入 OpenAI、Claude、通义千问等主流 LLM
- 模型配置 - 灵活的模型参数配置(temperature、top_p、max_tokens 等)
- 密钥管理 - 安全的 API Key 存储和管理
- 负载均衡 - 支持多密钥轮询和故障转移
- 使用监控 - 实时监控模型调用量和成本
- 自定义端点 - 支持自定义 API 端点和私有部署
扩展系统
- 插件机制 - 灵活的扩展插件系统
- 应用扩展 - 支持独立应用扩展(Application Extensions)
- 功能扩展 - 支持功能增强扩展(Functional Extensions)
- 版本兼容 - 自动检测和管理扩展版本兼容性
- 热加载 - 支持扩展的动态加载和卸载
- 独立路由 - 扩展拥有独立的前后端路由和布局
商业化功能
- 用户管理 - 完整的用户注册、登录、权限管理
- 会员系统 - 灵活的会员套餐配置
- 充值计费 - 支持余额充值和按量计费
- 支付集成 - 集成主流支付方式
- 订单管理 - 完整的订单和交易记录
- 财务中心 - 账户余额、消费统计、财务报表
系统管理
- 权限控制 - 基于 RBAC 的精细化权限管理
- 菜单管理 - 动态菜单配置和权限绑定
- 角色管理 - 灵活的角色定义和权限分配
- 系统配置 - 可视化系统参数配置
- 日志审计 - 完整的操作日志和审计追踪
- 监控告警 - 系统健康监控和异常告警
项目架构
技术栈
- 框架: NestJS 11.x - 企业级 Node.js 框架
- 语言: TypeScript 5.x - 类型安全保障
- 数据库: PostgreSQL 17.x - 生产级关系型数据库
- ORM: TypeORM 0.3.x - 强大的 ORM 工具
- 缓存: Redis 8.x - 高性能缓存和会话存储
- 队列: BullMQ - 可靠的任务队列系统
- 进程管理: PM2 - 生产环境进程管理
- 框架: Nuxt 4.x - Vue.js 全栈框架
- UI 库: Nuxt UI 3.x - 基于 Tailwind CSS 的组件库
- 状态管理: Pinia - Vue 官方状态管理
- 构建工具: Vite 7.x - 极速开发构建
- 样式方案: Tailwind CSS 4.x - 原子化 CSS
- 富文本: TipTap - 现代化富文本编辑器
- 图表: ECharts - 强大的数据可视化库
- LLM SDK: 自研 AI SDK - 统一 LLM 调用接口
- 向量存储: 集成多种向量数据库
- MCP 协议: 完整 MCP SDK 实现
- Embedding: 支持多种 Embedding 模型
- Monorepo: Turbo 2.x - 高效构建和任务编排
- 包管理: pnpm - 快速、节省空间的包管理
- 代码规范: ESLint + Prettier - 统一代码风格
- 容器化: Docker + Docker Compose - 一键部署
Monorepo 结构
BuildingAI/
├── packages/ # 核心包目录
│ ├── @buildingai/ # BuildingAI 核心包
│ │ ├── ai-sdk/ # AI SDK - LLM 调用、MCP 集成
│ │ ├── base/ # 基础服务类
│ │ ├── cache/ # 缓存管理
│ │ ├── config/ # 配置管理
│ │ ├── constants/ # 常量定义
│ │ ├── db/ # 数据库实体和工具
│ │ ├── decorators/ # 装饰器集合
│ │ ├── di/ # 依赖注入
│ │ ├── dict/ # 字典管理
│ │ ├── dto/ # 数据传输对象
│ │ ├── errors/ # 错误处理
│ │ ├── extension-sdk/ # 扩展 SDK
│ │ ├── logger/ # 日志系统
│ │ ├── pipe/ # 管道处理
│ │ ├── types/ # 类型定义
│ │ ├── upgrade/ # 升级脚本
│ │ ├── utils/ # 工具函数
│ │ └── wechat-sdk/ # 微信 SDK
│ ├── api/ # 后端 API 服务
│ │ └── src/
│ │ ├── modules/ # 业务模块
│ │ │ ├── ai/ # AI 相关(智能体、对话、模型、数据集、MCP)
│ │ │ ├── auth/ # 认证授权
│ │ │ ├── user/ # 用户管理
│ │ │ ├── role/ # 角色管理
│ │ │ ├── permission/ # 权限管理
│ │ │ ├── menu/ # 菜单管理
│ │ │ ├── finance/ # 财务管理
│ │ │ ├── pay/ # 支付管理
│ │ │ ├── extension/ # 扩展管理
│ │ │ └── ...
│ │ ├── common/ # 公共模块
│ │ └── core/ # 核心功能
│ ├── core/ # 核心业务逻辑
│ │ └── src/modules/
│ │ ├── billing/ # 计费系统
│ │ ├── extension/ # 扩展系统
│ │ ├── queue/ # 队列系统
│ │ ├── secret/ # 密钥管理
│ │ └── upload/ # 文件上传
│ ├── cli/ # 命令行工具
│ │ └── bin/
│ │ ├── cli.js # CLI 入口
│ │ ├── start.js # 启动脚本
│ │ └── predeploy.js # 预部署脚本
│ ├── desktop/ # 桌面应用(Tauri)
│ └── web/ # 前端包
│ ├── @buildingai/ # BuildingAI 前端核心包
│ │ ├── designer/ # 可视化设计器
│ │ ├── hooks/ # Vue Hooks
│ │ ├── http/ # HTTP 请求封装
│ │ ├── i18n-config/ # 国际化配置
│ │ ├── layouts/ # 布局组件(前台/后台)
│ │ ├── nuxt/ # Nuxt 配置预设
│ │ ├── service/ # API 服务层
│ │ ├── stores/ # Pinia 状态管理
│ │ ├── storybook/ # 组件文档
│ │ ├── ui/ # UI 组件库
│ │ └── web-config/ # Web 配置
│ └── buildingai-ui/ # 主应用
│ ├── pages/ # 页面组件
│ ├── layouts/ # 布局模板
│ ├── middleware/ # 路由中间件
│ ├── composables/ # 组合式函数
│ └── ...
├── extensions/ # 扩展插件目录
│ ├── buildingai-simple-blog/ # 示例博客扩展
│ │ ├── src/
│ │ │ ├── api/ # 后端 API
│ │ │ └── web/ # 前端页面
│ │ ├── build/ # 构建产物
│ │ └── manifest.json # 扩展清单
│ └── extensions.json # 扩展配置
├── public/ # 静态资源
├── scripts/ # 构建脚本
├── docker/ # Docker 配置
├── .env.example # 环境变量示例
├── docker-compose.yml # Docker Compose 配置
├── turbo.json # Turbo 配置
├── pnpm-workspace.yaml # pnpm 工作空间配置
└── ecosystem.config.js # PM2 配置
核心模块说明
核心包说明
BuildingAI 的核心包提供了完整的模块化能力,以下是主要核心包的说明:
@buildingai/ai-sdk
AI 能力的核心 SDK,提供:
- 统一的 LLM 调用接口
- MCP 协议完整实现(SSE/HTTP)
- 工具调用和 Function Calling
- 流式响应处理
- 多提供商适配
@buildingai/db
数据库管理核心包:
- TypeORM 实体定义
- 数据库迁移脚本
- Seeds 数据初始化
- 查询构建器封装
- 事务管理
@buildingai/ui
Vue 3 UI 组件库:
- 富文本编辑器(TipTap)
- 图表组件(ECharts)
- 文件上传组件
- 日期时间选择器
- 表单组件
- 布局组件
@buildingai/service
API 服务层封装:
- 统一的 HTTP 请求封装
- 前台 API(webapi/)
- 后台 API(consoleapi/)
- TypeScript 类型定义
- 请求/响应拦截
CLI 工具
命令行管理工具:
buildingai setup - 项目初始化
buildingai db:init - 数据库初始化
buildingai pm2:* - PM2 进程管理
buildingai update - 系统升级
开发指南
环境准备
# 安装 Node.js 22.20.x
# 推荐使用 nvm 管理 Node.js 版本
nvm install 22.20.0
nvm use 22.20.0
# 安装 pnpm
npm install -g pnpm@10.20.0
# 安装 PostgreSQL 17.x
# 安装 Redis 8.x
本地开发
# 1. 克隆项目
git clone https://github.com/BidingCC/BuildingAI.git
cd BuildingAI
# 2. 安装依赖
pnpm install
# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 配置数据库和 Redis 连接
# 4. 初始化数据库
pnpm buildingai db:init
# 5. 启动开发服务器
pnpm dev
# 或分别启动
pnpm dev:api # 启动后端 API (http://localhost:4090)
pnpm dev:web # 启动前端 (http://localhost:3000)
项目构建
# 构建所有包
pnpm build
# 构建特定包
pnpm build:api
pnpm build:web
代码规范
# 代码检查
pnpm lint
# 自动修复
pnpm lint:fix
# 格式化代码
pnpm format
# 类型检查
pnpm typecheck
开发扩展
创建新扩展的完整步骤:
-
在 extensions/ 目录创建扩展文件夹
mkdir extensions/my-extension
-
创建 manifest.json
{
"identifier": "my-extension",
"name": "My Extension",
"type": "application",
"version": "0.0.1",
"description": "My custom extension",
"author": {
"name": "Your Name",
"homepage": "https://yoursite.com"
},
"engine": {
"buildingai": ">=25.1.0"
}
}
-
创建扩展结构
my-extension/
├── src/
│ ├── api/ # 后端代码
│ └── web/ # 前端代码
├── build/ # 构建产物
└── manifest.json # 扩展清单
-
同步扩展配置
API 文档
后台管理 API
路由前缀: /consoleapi
| 模块 | 路由 | 说明 |
|---|
| 认证授权 | /consoleapi/auth/* | 用户认证和授权 |
| 用户管理 | /consoleapi/users/* | 用户 CRUD 操作 |
| 角色管理 | /consoleapi/roles/* | 角色权限管理 |
| 权限管理 | /consoleapi/permissions/* | 权限配置 |
| 智能体管理 | /consoleapi/ai/agents/* | 智能体 CRUD |
| 模型管理 | /consoleapi/ai/models/* | LLM 模型配置 |
| 知识库管理 | /consoleapi/ai/datasets/* | 知识库管理 |
| MCP 服务器 | /consoleapi/ai/mcp-servers/* | MCP 服务器管理 |
| 扩展管理 | /consoleapi/extensions/* | 扩展管理 |
前台用户 API
路由前缀: /api
| 模块 | 路由 | 说明 |
|---|
| 用户认证 | /api/auth/* | 用户登录注册 |
| 智能体使用 | /api/ai/agents/* | 智能体调用 |
| 对话管理 | /api/ai/conversations/* | 对话历史管理 |
| 对话接口 | /api/ai/chat | 对话(流式/阻塞) |
| 充值相关 | /api/recharge/* | 账户充值 |
智能体公开 API
路由前缀: /consoleapi/ai/agent-v1
鉴权方式: API Key (Bearer Token)
对话接口
请求示例(流式对话):
curl -X POST http://localhost:4090/consoleapi/ai/agent-v1/chat?response_mode=streaming \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user", "content": "你好"}
]
}'
请求参数:
| 参数 | 类型 | 必填 | 说明 |
|---|
response_mode | string | 否 | 响应模式:streaming 或 blocking |
messages | array | 是 | 消息列表 |
messages[].role | string | 是 | 角色:user 或 assistant |
messages[].content | string | 是 | 消息内容 |
截图展示
以下是 BuildingAI 的主要界面截图:
| 智能体对话 | 智能体配置 |
|---|
 |  |
| 知识库管理 | 后台管理 |
|---|
 |  |
贡献指南
我们非常欢迎社区贡献!无论是报告 Bug、提出新功能建议,还是提交代码,都是对项目的巨大帮助。
贡献方式
-
报告 Bug
-
功能建议