简介99AI 是一套开源可商用的 AI Web 平台源码面向开发者、AI 爱好者及希望落地智能化业务的企业团队帮助用户以较低门槛构建集成对话、多模态、应用广场、联网搜索等能力的私有化 AI 服务。资源共 1078 个文件压缩后 7.52MB核心以 TypeScript、JavaScript、Vue 为主配合 CSS、配置类文件与静态资源涵盖前后端完整工程结构便于二次开发与自定义部署。已有 2167 人浏览学习。通过这份源码读者可直接获得完整的平台实现包括多用户管理、AI 绘画/音乐/视频生成、稳定版功能模块等并支持 Docker 等快速部署方式。无论是个人开发者学习全栈 AI 应用架构还是团队内部快速搭建 AI 服务中台都能在此基础上减少重复开发快速进入业务实现阶段。1. 项目概述与核心价值1.1 99AI是什么99AI是一套基于开源项目源码构建的AI Web平台定位上比较接近“一站式人工智能服务解决方案”。通俗点说就是把目前主流的AI能力——对话、绘画、语音、文档分析等——集中到一个Web界面里通过统一的后台分配额度、管理用户、统计调用量。市面上这类项目不少但99AI在“可直接商用”和“私有化部署”这两个点上做得比较到位这也是我在实际选型时最终选择它的原因。我先说结论再做分析如果你是企业内部需要做AI能力中台或者团队想快速搭一套带计费能力的AI服务站点再或者个人开发者想把AI能力包装成产品做商业化尝试99AI这条路线是值得研究的。它省掉的不只是从零开发的时间更重要的是把用户管理、充值积分、对话记录、模型代理这些通用模块都提前做完了你只需要关心业务本身。1.2 为什么选择私有化部署私有很多人觉得是“为了数据安全”这个说法对但不全对。我更愿意这样理解私有化部署的本质是拿到控制权。数据控制权只是其中一部分另外几个层面更容易被忽略。第一是模型路由的控制权公网SaaS平台用哪家模型、什么时候切换、上下文多长都是平台定的私有化之后你可以自由配置多个模型之间的切换策略。第二是功能演进的控制权基于开源项目源码遇到不满意的地方直接自己改比如调整积分消耗比例、修改页面UI、接入内部账号体系主动权在自己手里。第三是成本的控制权当你的调用量达到一定量级之后自建平台的边际成本是逐年下降的而且可以按需扩容。这次我选择99AI还有一层考虑——它内置了多用户管理能力。这个对于做商业化特别重要你不需要额外开发一套用户系统就省了对前端操作不太熟悉的用户的很大麻烦。2. 环境准备与快速启动2.1 基础环境要求99AI的后端基于Node.js数据库用的是MySQL前端是Vue3整体部署对硬件要求不算高。我实际跑下来的最低配置是2核4G的云服务器可以支撑几十个并发用户日常使用如果想跑更多用户或者部署较大模型建议4核8G起步磁盘按日志增长速度预留至少40G会比较舒服。操作系统建议直接用Ubuntu 22.04 LTS或CentOS 7以上版本。90%的问题出在环境不一致上所以我强烈建议用Docker Compose部署不用在自己机器上折腾Node版本、MySQL初始化这些事。官方仓库里提供了docker-compose.yml和安装脚本先克隆即可。注意拿到源码之后先别急着配业务参数第一步是检查项目目录结构是否完整。常见问题是用GitHub桌面版下载zip包导致源码缺失前端dist目录这是特别容易踩的坑。基本的部署步骤拆解如下git clone https://github.com/你的仓库地址/99AI.git cd 99AI cp .env.example .env vim .env docker-compose up -d2.2 配置项逐项解释.env文件是整个部署的核心我逐个说明关键参数MYSQL_HOST和MYSQL_PASSWORD数据库连接配置生产环境务必使用强密码不要保留默认值。这看起来是常识但我见过不少生产环境因为默认口令被扫库的案例。JWT_SECRET用户登录态的加密密钥随便填一组足够长的随机字符串至少32位以上这个泄露的后果比数据库泄露更严重。OPENAI_API_KEY或ANTHROPIC_API_KEY如果你对接的是OpenAI兼容接口就填这个如果用的是国内中转需要同时配置中转地址。REDIS_HOST和REDIS_PASSWORDRedis主要用来做对话缓存和并发控制生产环境必须开启密码认证并在安全组里限制来源IP。配置完成后执行docker-compose up -d首次启动会构建镜像大概等3到5分钟。构建完成后访问http://服务器IP:端口就能看到登录页面了。首次注册的用户通常会被自动设为管理员或者需要在数据库里手动指定不同版本策略不同建议看一下部署文档的初始账号说明。2.3 域名与HTTPS设置没有域名的裸IP部署也能用但不适合生产环境。原因主要有两个一是部分AI接口的回调地址必须使用HTTPS否则会被上游拒绝二是商业场景下裸IP地址看起来很不可信。域名解析做好之后用Nginx做反向代理参考配置片段server { listen 80; server_name ai.example.com; return 301 https://$host$request_uri; } server { listen 443 ssl http2; server_name ai.example.com; ssl_certificate /etc/nginx/ssl/ai.example.com.crt; ssl_certificate_key /etc/nginx/ssl/ai.example.com.key; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; } client_max_body_size 20m; }3. 核心功能与代码结构拆解3.1 用户端核心页面99AI从用户视角看核心就四个模块对话、应用广场、绘画、管理后台。做二次开发前建议先把自己当用户跑一遍这个流程搞清楚哪个页面调哪个接口改起来才有方向。对话模块是门面。它响应速度的快慢直接影响用户对整套系统的第一印象所以这一块的交互优化权重最高。我后来改了流式输出逻辑通过Server-Sent Events把AI的回答逐字推送看起来更流畅也从底层减少了对服务器的瞬时压力。应用广场是这个项目的一个特色模块。管理员可以在后台预置多个专用的AI应用场景比如“周报生成器”“代码审查助手”“英文润色”用户点进来就是专用的对话界面而不是统一的Chat窗口。实际测试下来这种“开箱即用”的应用模式在获客和用户留存上的效果远比空荡荡的聊天框好。绘画模块对接了主流的图片生成接口像DALL-E、Midjourney API或者SD WebUI的接口都可以配置。这里有个开源项目源码层面的细节每个绘画渠道的调用参数格式不一样99AI抽象了一层“绘图适配器”你要扩展新渠道时只需要实现对应的Adapter接口不用改核心逻辑。3.2 管理后台功能管理后台是99AI商业化能力的集中体现也是个人开发者改代码时最关心的部分。用户管理列表支持按用户ID、邮箱、手机号搜索可以手动调整每个用户的积分余额、状态、会员等级。在实际运维中最常用的功能是异常用户排查——某个用户的调用量突然飙升直接在后台冻结账号操作路径非常短。积分计费规则支持按模型配置不同倍率。比如GPT-4抵扣100积分一次3.5只抵扣10积分这个倍率可以随时调整实时生效。这个逻辑在代码里的实现位置是src/modules/billing/rate.service.ts如果你要改计费策略核心就是动这个文件里的倍率表。渠道管理支持添加多个上游API服务商并且可以设置权重。实际效果就是同一个模型请求会根据你设定的比例分发到不同供应商既做了负载均衡也做了容灾切换。比如你配置了A服务商权重70B服务商权重30那么100个请求里大约70个分给A30个分给B代码实现用的是带权重的随机算法。3.3 关键文件与二次开发入口如果你打算基于开源项目源码做二次开发有几个文件值得优先研究src/modules/chat/chat.service.ts对话核心逻辑模型调用的编排层所有模型都在这里路由src/modules/auth/auth.service.ts认证与Token签发逻辑对接企业微信或者内部账号系统的改动点在这里src/modules/billing/payment.service.ts支付回调处理扩展支付渠道时主要改这里web/src/views/admin/后台管理前端页面Vue3写法改了之后需要重新执行前端构建并替换dist目录4. 多用户管理与商业化要点4.1 用户体系与计费设计多用户管理是这个项目的核心优势之一但如果你理解成“有个注册登录功能就算多用户管理”那格局就小了。99AI的多用户管理是围绕一条完整生命周期设计的注册、登录、额度分配、消费、续费、封禁、数据导出环环相扣。有一个设计细节我觉得特别值得学习它支持“免费额度-会员额度-充值余额”三级账户结构。免费额度用于拉新试用会员额度通过套餐订阅发放充值余额对应按量计费。这三者在数据库里是独立字段扣费顺序也是固定的——先扣免费额度再扣会员额度最后扣充值余额。作为运营方你可以在后台看到每个用户在三个池子里的消耗情况对调整拉新策略和会员定价很有参考价值。计费安全方面我提一个容易忽略的点所有计费操作必须做成数据库事务。如果扣费成功但模型调用失败余额不能丢反过来模型调用成功但扣费失败那更不行。99AI源码对这部分处理得比较规范你如果自己加功能务必沿用事务机制否则上线一段时间后账一定会对不上。4.2 套餐与推广体系商业化的核心是设计套餐。99AI支持多级会员体系每个等级可以设置不同的模型权限、并发数、每日调用上限。实际运营中我建议至少分三个梯度免费体验版有调用次数限制、专业版放开主要模型权限、企业版支持更多并发和专属通道。推广返利这个功能在商业运营中往往能带来意想不到的拉新效果。99AI自带邀请返利机制用户通过邀请链接注册邀请人可以获得一定比例的充值返佣。这个功能在后台打开之后相当于让你的用户帮你做推广比投广告划算得多。实际运营时返佣比例的设定需要综合考虑产品毛利通常建议控制在10%到20%之间。4.3 支付对接与备案合规支付是商业化绕不开的环节但这里要特别提醒99AI默认对接的支付方式是USDT或某些境外支付渠道如果你在国内运营直接使用会有资金合规风险。如果你在国内运营需结合自身资质和当地法规谨慎评估支付方案合法合规地选择合适的支付服务商。另外还有两个合规点容易被忽略。第一是生成内容的审核与日志留存如果平台开放给公众使用根据相关规定需要具备内容安全审核能力并对运行日志进行留存。第二是模型提供服务的行为规范不同模型有不同的使用条款商业化之前要认真阅读上游接口的使用协议确认是否允许转售和商用。这些细节没处理好业务做得越大风险就越高。5. 常见问题与排查技巧实录5.1 部署类问题我现在把这一路踩过的坑整理成速查表这些都是真实出现过的生产事故不是从文档里抄出来的理论问题。现象可能原因排查与解决页面能打开但登录报500数据库未初始化或表结构不完整重新执行docker-compose exec app node ace migration:run对话一直转圈无响应上游API地址未配置或网络不通在服务器上执行curl测试上游接口连通性检查环境变量中API Base URL是否正确后台统计数据为0定时任务未启动检查node ace scheduler:run进程是否在运行docker部署时确认容器内有该进程图片生成失败绘图渠道未配置或额度已用完后台“绘画渠道”新增渠道并测试查看日志确认上游返回的具体错误码支付回调不生效回调地址被防火墙拦截确认服务器安全组允许支付平台的回调IP段检查Nginx日志确认回调请求是否到达5.2 运行期性能调优部署能跑通只是第一步真正让它能长期稳定运行性能调优少不了。我这里分享三个经过实战验证的调优点。第一个是数据库连接数的配置。默认配置在并发较高时容易出现“Too many connections”报错。我把MySQL的max_connections调到500同时把后端连接池的上限调到与数据库一致的数值问题就缓解了。修改之后记得重启数据库容器。第二个是Redis的过期策略。积分充值和限流信息都存在Redis里如果内存打满会导致用户无法登录。可以在redis.conf里设置合理的maxmemory和淘汰策略我这边设置为maxmemory 512mb和allkeys-lru运行半年没再出过问题。第三个是对话历史清理。数据库里保存的对话记录会无限增长我写了一个每天凌晨3点执行的定时任务自动清理90天以前的日志数据同时保留对话内容用于统计和审计。这个数据量的控制很重要否则数据库越来越大备份和恢复都会变慢。5.3 备份与安全加固数据备份是底线工程。我这边用Crontab执行两个备份任务每天凌晨2点自动执行mysqldump备份数据库到指定目录再通过云存储工具把备份同步到异地存储保留最近30天。实际恢复过一次过程顺利也验证了备份的有效性。安全方面有几个细节建议修改默认SSH端口禁用root密码登录只保留密钥MySQL和Redis禁止对公网开放端口在后台配置登录失败次数限制防止暴力破解定期更新依赖包版本关注开源社区的安全公告。99AI作为开源项目社区会不定期发布安全补丁及时升级很重要。最后还想补充一点个人心得私有化部署也好开源项目二次开发也好本质上都是在用最小的成本换取最大的掌控力。99AI让我在三天内就跑通了从用户注册到计费结算的完整链路这在以前至少需要一到两周。对于想把AI能力落地成产品的人来说先把基础设施的成本降下来把精力放到真正的业务创新上这比什么都重要。本文还有配套的精品资源点击获取