9359ca7f628dfc462db44f47097b15beaf04a514
- 采用 Ant Design 5 作为 UI 组件库,替换自定义组件 - 集成 React Router v7 提供路由导航 - 使用 TanStack Query v5 管理数据获取和缓存 - 建立 Vitest + React Testing Library 测试体系 - 添加 Playwright E2E 测试覆盖 - 使用 MSW mock API 响应 - 配置 TypeScript strict 模式 - 采用 SCSS Modules 组织样式 - 更新 OpenSpec 规格以反映前端架构变更 - 归档 frontend-refactor 变更记录
Nex - AI Gateway
一个统一的大模型 API 网关,支持 OpenAI 和 Anthropic 双协议,让应用只需配置一个地址即可透明使用多个供应商的大模型服务。
项目结构
nex/
├── backend/ # Go 后端服务
│ ├── main.go
│ ├── go.mod
│ └── internal/
│ ├── handler/ # HTTP 处理器
│ ├── protocol/ # 协议适配器
│ ├── provider/ # 供应商客户端
│ ├── router/ # 模型路由
│ ├── stats/ # 统计记录
│ └── config/ # 配置与数据库
│
├── frontend/ # React 前端界面
│ ├── src/
│ │ ├── api/ # API 层(统一请求封装 + 字段转换)
│ │ ├── hooks/ # TanStack Query hooks
│ │ ├── components/ # 通用组件(AppLayout)
│ │ ├── pages/ # 页面(Providers, Stats, NotFound)
│ │ ├── routes/ # React Router 路由配置
│ │ ├── types/ # TypeScript 类型定义
│ │ └── __tests__/ # 测试(API、Hooks、组件)
│ ├── e2e/ # Playwright E2E 测试
│ └── package.json
│
└── README.md # 本文件
功能特性
- 双协议支持:同时支持 OpenAI 和 Anthropic 协议
- 透明代理:对 OpenAI 兼容供应商透传请求
- 流式响应:完整支持 SSE 流式传输
- Function Calling:支持工具调用(Tools)
- 多供应商管理:配置和管理多个供应商
- 用量统计:按供应商、模型、日期统计请求数量
- Web 配置界面:提供供应商和模型配置管理
技术栈
后端
- Go 1.21+
- Gin - HTTP 框架
- GORM - ORM
- SQLite - 数据库
前端
- Bun - 运行时
- Vite - 构建工具
- TypeScript (strict mode) - 类型系统
- React - UI 框架
- Ant Design 5 - UI 组件库
- React Router v7 - 路由
- TanStack Query v5 - 数据获取
- SCSS Modules - 样式方案
- Vitest + Playwright - 测试
快速开始
后端
cd backend
go mod download
go run main.go
后端服务将在 http://localhost:9826 启动。
前端
cd frontend
bun install
bun dev
前端开发服务器将在 http://localhost:5173 启动。
API 接口
代理接口(对外部应用)
POST /v1/chat/completions- OpenAI Chat Completions APIPOST /v1/messages- Anthropic Messages API
管理接口(对前端)
GET/POST/PUT/DELETE /api/providers- 供应商管理GET/POST/PUT/DELETE /api/models- 模型管理GET /api/stats- 统计查询
配置存储
配置数据存储在用户目录:~/.nex/config.db
开发规范
详见各子项目的 README.md:
许可证
MIT
Description
Languages
Go
76.9%
TypeScript
16.9%
Python
5.8%
JavaScript
0.2%
Makefile
0.1%