| apps | ||
| docs | ||
| packages/contracts | ||
| scripts | ||
| .env.example | ||
| .gitignore | ||
| go.work | ||
| go.work.sum | ||
| nx.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
EasyAI AI Gateway
独立的 AI 网关中台脚手架,用于把现有 integration-platform 的平台管理、模型路由、计费预估、队列执行、Chat / 生图 / 生视频等生成能力逐步从 easyai-server-main 拆成可独立运行的项目。
技术选型
- 后端:Go + PostgreSQL 18,复用 Agent memory 的
easyai-pgvector,支持本地用户、可选邀请码、API Key、余额/充值闭环,也支持复用server-main的 JWT / API Key 授权语义。 - 前端:React + TypeScript + TSX,UI 体系按
shadcn-ui/ Radix / Tailwind 方向沉淀,先提供运维控制台骨架。 - Monorepo:Nx 负责任务编排,Go 使用
go.work管理模块。 - 集成:完成后由
easyai-server-main通过内部 HTTP SDK 直连本服务;任务实时进度由 Gateway 回调server-main,再通过原 WebSocket 网关推送给业务前端。
目录
apps/
api/ Go HTTP API, auth middleware, PG store, migrations
web/ React TSX admin console
packages/
contracts/ Shared TypeScript DTO contracts
docs/
design.md Detailed architecture and migration design
本地启动
cp .env.example .env
pnpm install
pnpm dev
服务默认地址:
- API:
http://localhost:8088 - Web:
http://localhost:5178 - PostgreSQL: 目标版本 18,默认使用宿主机
localhost:5432上的easyai-pgvector实例,并使用独立库easyai_ai_gateway - 身份模式: 默认
IDENTITY_MODE=hybrid,可同时测试 Gateway 本地账号注册登录、可选邀请码和server-mainJWT / API Key 对接。
pnpm dev 会先创建数据库并执行 migration,然后并行启动:
api:dev:通过scripts/go-watch.mjs运行 Go API,监听.go、go.mod、go.sum变化并自动重启后端进程;watcher 会按进程组终止旧的go run和其子进程,避免热更新时残留进程占用 API 端口。web:dev:Vite React dev server。
后端热更新可通过 GO_WATCH_SHUTDOWN_GRACE_MS 和 GO_WATCH_RESTART_DELAY_MS 调整旧进程退出等待时间与重启间隔。
默认 EasyAI 部署里,easyai-pgvector 在容器网络内的连接串是:
AI_GATEWAY_DATABASE_URL=postgresql://easyai:easyai2025@easyai-pgvector:5432/easyai_ai_gateway?schema=public
宿主机直跑时需要使用宿主机可访问的 Postgres 地址。如果 easyai-pgvector 将 5432 映射到了本机,可使用:
AI_GATEWAY_DATABASE_URL=postgresql://easyai:easyai2025@localhost:5432/easyai_ai_gateway?sslmode=disable
如果现有 easyai-pgvector 没有把 5432 映射到宿主机,就需要补端口映射,或者把 AI Gateway 后端容器化后接入同一个 easyai Docker network。
迁移原则
- 新服务先并行运行,不直接删除
easyai-server-main内现有模块。 - 身份域支持
standalone、server-main、hybrid三种模式;独立模式由 Gateway 维护租户、用户、用户组、本地 API Key、余额和充值订单,接入模式从server-main同步租户、用户和用户组。 - OpenAPI
sk-*校验、文件上传、扣费结算在接入模式下仍由server-main承担;独立模式走 Gateway 本地闭环。 - 网关服务负责基准模型库、平台模型路由、用户组调用折扣、TPM/RPM/并发限流、任务队列、三方平台执行、任务进度事件和回调 outbox。
- 切流时优先让
server-main的OpenaiService变成薄门面,内部调用本服务。
详细设计见 docs/design.md。