# LunioAI **Repository Path**: saolun/lunio-ai ## Basic Information - **Project Name**: LunioAI - **Description**: LunioAI 是一套可私有化部署的企业 AI 中台:把「模型 + 智能体 + 知识库 + 工作流 + 渠道」配好、跑稳、可运维! - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-14 - **Last Updated**: 2026-08-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LunioAI 可私有化部署的**企业 AI 中台**:把模型、智能体、知识库、工作流与渠道收成一套能配、能调、能接业务、可运维的运行时。 > 后端:[Webman](https://www.workerman.net/doc/webman) 常驻进程 · 前端:Vue 3 + Naive UI(`web/apps/admin`) > 产品蓝图见 [docs/PLATFORM_BLUEPRINT.md](docs/PLATFORM_BLUEPRINT.md) --- ## 能用来干什么 | 场景 | 说明 | |------|------| | 企业助手 / 业务 Copilot | 配置智能体(提示词、模型、工具、知识库),管理端调试或经 Open API 接入自有系统 | | 知识库问答(RAG) | 文档入库、向量检索、引用溯源;支持评测集与召回指标 | | 流程自动化 | 工作流引擎(检索 / LLM / HTTP / 条件 / HITL);失败重试与死信队列 | | 多渠道接入 | Webhook / 飞书 / 企微 / 钉钉等入站,绑定智能体回复 | | 治理与运维 | 用量 / 配额 / 审计 / 任务队列 / DLQ / 看板告警,适合研发与 SI 私有化交付 | **不太适合:** 开箱即用的 C 端 ChatGPT 产品,或零运维纯 SaaS。它更接近你们机房里的 **AI 控制平面**。 --- ## 能力模块 | 模块 | 能力要点 | |------|----------| | 系统 | 用户 / 角色 / 菜单 / 租户 / RBAC / 审计 | | 模型层 | 服务商 · 模型 · API Key · 能力标签 · Fallback | | 智能体 | 配置、发布版本、回滚、工具与知识库绑定 | | 对话 | SSE 流式、会话、引用溯源、OpenAI 兼容 Open API | | 知识库 | 文档解析、分块、Qdrant 向量、检索调试 | | 工作流 | JSON 图执行、HITL 审批、重放、异步 Job | | 渠道 | 多 IM Webhook、消息记录、失败重试 | | 工具 / MCP | 内置工具总线、MCP 服务同步与调试 | | 多媒体 | 文生图 / TTS、异步队列、日配额 | | 可观测 | 用量看板、任务中心、运维 DLQ、配额将近告警 | --- ## 技术栈 | 层 | 技术 | |----|------| | 后端 | PHP ≥ 8.1(Docker 8.2)、Webman ^2.1 | | 数据 | MySQL 8、Redis 6/7、Qdrant(向量) | | 前端 | Vue 3、Vite、Naive UI、Pinia(pnpm / npm workspaces) | | 鉴权 | Redis Bearer Token + 管理端 API Key Scope(非 JWT) | | 交付 | Docker Compose(Webman + MySQL + Redis + Qdrant) | --- ## 架构一览 ``` 管理端 / Open API / 渠道 Webhook │ ▼ Auth · RBAC · RateLimit │ ┌─────────┼─────────┐ ▼ ▼ ▼ 系统 API Chat/RAG Channel │ │ │ └─────────┼─────────┘ ▼ AI Kernel(Provider · Agent · Tool · Workflow · Guard) │ MySQL · Redis · Qdrant · Queue/DLQ · Usage/Audit ``` 分层约定:`Controller → Service → Repository`,统一响应 `{ code, message, data, request_id, timestamp }`。 --- ## 快速开始(推荐 Docker) ### 前置 - Docker 20.10+、Docker Compose v2 - 可选:本机 Node ≥ 18(跑管理端开发服) ### 1. 配置 ```bash cp .env.example .env # 按需修改 DB_* / REDIS_* / AI_MASTER_KEY / QDRANT_URL 等 ``` Compose 默认会带 MySQL / Redis / Qdrant;若用外部依赖,把 `.env` 指到对应地址即可。详见 [docker/README.md](docker/README.md)。 ### 2. 启动后端依赖与 Webman ```bash make docker-up # 或 docker compose -f docker/docker-compose.yml up -d --build ``` - API 默认:**http://127.0.0.1:8787** - 健康检查:`GET /api/v1/health` ### 3. 初始化数据 ```bash # 在已配置好的 MySQL 上执行(Compose 内库名等以 .env / compose 为准) mysql -h -P -u -p < database/install.sql make seed # 或 php scripts/seed_admin.php ``` 默认管理员:**admin / admin123**(首次登录后请改密)。 ### 4. 启动管理端 ```bash make web-install # 在 web/ 安装依赖 make web-dev # http://127.0.0.1:5173 ,代理到 8787 ``` 生产构建静态资源到 `public/admin`: ```bash make web-build ``` ### 5. 冒烟验证 ```bash curl http://127.0.0.1:8787/api/v1/health curl -X POST http://127.0.0.1:8787/api/v1/auth/login \ -H 'Content-Type: application/json' \ -d '{"username":"admin","password":"admin123"}' ``` 可视化日志(独立账号,默认 **logviewer / logviewer123**): http://127.0.0.1:8787/admin/logs — 见 [docs/LOG_VIEWER.md](docs/LOG_VIEWER.md)。 --- ## 本地(非 Docker)启动 ```bash composer install # 自备 MySQL / Redis / Qdrant,并改好 .env mysql ... < database/install.sql php scripts/seed_admin.php php start.php start ``` 改 PHP 代码后若用 Docker 挂载,通常需要: ```bash docker compose -f docker/docker-compose.yml restart webman ``` --- ## 关键入口 | 入口 | 说明 | |------|------| | 管理 API | `/api/v1/*`(Bearer Token) | | Open API | `/open/v1/chat`、`/chat/stream`、`/chat/completions`、`/models`(API Key) | | 渠道 Webhook | `/webhook/feishu\|wecom\|dingtalk\|custom/{code}` | | 管理端前端 | 开发 `5173`;构建后可由网关托管 `public/admin` | 鉴权摘要: | 方式 | 请求头 | 场景 | |------|--------|------| | Bearer Token | `Authorization: Bearer ` | 管理端登录后调用 | | API Key | `X-Api-Key` 或平台约定头 | Open API / 内部集成 | 完整接口与错误码:[docs/API.md](docs/API.md)、[docs/ERROR_CODE.md](docs/ERROR_CODE.md)。 --- ## 建议试用路径 1. 登录管理端 → 配置服务商与模型(可用 local_echo 离线验收) 2. 创建并**发布**智能体 → 「对话调试」试聊 3. 建知识库上传文档 → 对话中查看引用 4. 需要自动化时:建工作流并跑一次;含 HITL 时走审批 5. 对外:发 API Key,调 `/open/v1/chat/completions`;或配渠道 Webhook --- ## 目录结构(节选) ``` app/ ├── controller/api/v1/ # 系统 + AI 域 API ├── service/ai/ # Chat / RAG / Workflow / Channel / Job … ├── service/system/ # 用户、角色、审计等 ├── repository/ # 数据访问 ├── middleware/ # CORS / Auth / RateLimit / 签名 … └── support/ # 响应、队列、Redis … config/route.php # 路由(含 /open、/webhook) database/install.sql # 建表 docker/ # Compose + Dockerfile docs/ # 蓝图、阶段说明、API 规范 web/ ├── apps/admin/ # 管理端 Vue 应用 └── packages/ # admin-kit、shared 等 public/admin/ # 前端构建产物(web-build 后) scripts/ # seed_admin 等 ``` --- ## 常用命令 ```bash make help make install / seed / start / stop / restart / status make docker-up / docker-down / docker-logs make web-install / web-dev / web-build make sign GET /api/v1/users '{"page":1}' # 可选 API 签名 ``` --- ## 环境变量(要点) 完整列表见 [.env.example](.env.example)。 | 变量 | 说明 | |------|------| | `DB_*` / `REDIS_*` | 业务库与缓存 | | `AI_MASTER_KEY` | 密钥加密主密钥(务必更换) | | `QDRANT_URL` / `QDRANT_*` | 向量库 | | `AI_QUEUE_KEY` / `AI_QUEUE_DLQ_KEY` | 异步队列与死信 | | `API_AUTH_*` / `API_KEY*` | 鉴权与服务端 Key | | `API_SIGN_*` | 可选接口签名 | | `CORS_ALLOW_ORIGIN` | 生产请改为具体前端域名 | | `LOG_VIEWER_*` | 可视化日志(生产建议关或限内网) | --- ## 生产 Checklist - [ ] `APP_DEBUG=false` - [ ] 修改 admin / logviewer 默认密码 - [ ] 设置强随机 `AI_MASTER_KEY`、`API_KEY`、签名密钥 - [ ] `LOG_VIEWER_ENABLE=false` 或仅内网 - [ ] `CORS_ALLOW_ORIGIN` 收紧;MySQL / Redis / Qdrant 不暴露公网 - [ ] HTTPS 反代到 `8787`;`runtime/` 可写与日志轮转 - [ ] `composer install --no-dev --optimize-autoloader`;前端 `make web-build` --- ## 文档索引 | 文档 | 内容 | |------|------| | [docs/PLATFORM_BLUEPRINT.md](docs/PLATFORM_BLUEPRINT.md) | 产品定位与阶段蓝图 | | [docs/API.md](docs/API.md) | 接口规范 | | [docs/ERROR_CODE.md](docs/ERROR_CODE.md) | 错误码 | | [docs/API_SIGNATURE.md](docs/API_SIGNATURE.md) | 可选签名规则 | | [docs/LOG_VIEWER.md](docs/LOG_VIEWER.md) | 日志查看器 | | [docker/README.md](docker/README.md) | Docker 运维 | --- ## License MIT