From c859f1dc915b33a7c50d8fd14e643cd1953c9610 Mon Sep 17 00:00:00 2001 From: Zyy Date: Wed, 1 Jul 2026 18:27:45 +0800 Subject: [PATCH] docs: refresh project setup guide Co-authored-by: Codex --- .gitignore | 3 +- README.md | 175 ++++++++++++++++------------------------ frontend/vite.config.ts | 3 + 3 files changed, 74 insertions(+), 107 deletions(-) diff --git a/.gitignore b/.gitignore index da86f1ff7..7d86adca7 100644 --- a/.gitignore +++ b/.gitignore @@ -7,8 +7,7 @@ /frontend/dist/ # Application runtime state. -/backend/.runtime/ -/logs/ +*.runtime *.sqlite *.sqlite3 *.db diff --git a/README.md b/README.md index 4a9fad9a9..4435165d4 100644 --- a/README.md +++ b/README.md @@ -1,135 +1,80 @@ -

- Codex Proxy RS -

-

Codex Proxy RS

- ChatGPT / Codex 账号池网关,提供 OpenAI 兼容接口和本地管理控制台。 + OpenAI 兼容的 ChatGPT / Codex 多账号代理网关

- Rust - Axum - Vue - SQLite - License + + + + +

-

- /v1/responses - · - /v1/chat/completions - · - /v1/models - · - /api/admin -

+## 环境 -## ✦ 功能清单 +- Rust ≥ 1.95 +- Node ≥ 20,pnpm ≥ 9(仅开发管理端前端时需要) -| 部分 | 内容 | -| --- | --- | -| ⚡ OpenAI 兼容接口 | `responses`、`chat completions`、模型列表、流式输出 | -| 🔐 账号池 | OAuth、refresh token、CPR / Sub2API 导入、状态管理 | -| 🧭 调度 | 账号轮转、并发限制、请求间隔、会话亲和性 | -| 📡 上游传输 | Codex Desktop 风格 headers、HTTP SSE、WebSocket、连接池 | -| 📊 记录 | 使用记录、Token、成本、延迟、失败原因、请求轨迹 | -| 🛠 管理端 | 账号、API Key、仪表盘、使用记录、运行时设置 | -| 💾 本地持久化 | SQLite 数据库,运行数据默认写入 `.runtime` | - -## ✦ 快速启动 - -本地源码启动: +## 快速开始 ```bash cargo run --manifest-path backend/Cargo.toml ``` -默认监听: +启动后监听 `http://0.0.0.0:8080`,配置从运行目录下的 `config.yaml` 读取。首次启动会自动创建管理端账号(默认用户名密码见配置文件)。 -```text -http://0.0.0.0:8080 -``` - -默认配置文件: - -```text -config.yaml -``` - -首次启动会初始化管理端账号。默认账号来自运行目录下的 `config.yaml`。 - -Docker 首次本地构建和启动: +Docker 部署: ```bash cp deploy/config.example.yaml deploy/config.yaml +# 编辑 deploy/config.yaml,至少改掉 admin.default_password docker compose -f deploy/docker-compose.yml build docker compose -f deploy/docker-compose.yml up -d ``` -`deploy/config.example.yaml` 是 Docker 部署样例配置,复制为 `deploy/config.yaml` 后再修改。默认挂载关系: +挂载关系:`deploy/config.yaml` → `/app/config.yaml`,`deploy/data` → `/app/data`,`deploy/logs` → `/app/logs`。 -```text -deploy/config.yaml -> /app/config.yaml -deploy/data -> /app/data -deploy/logs -> /app/logs +## API + +所有接口通过 Authorization Bearer header 鉴权,API Key 在管理端创建和管理。 + +| 端点 | 说明 | +| --- | --- | +| `POST /v1/responses` | OpenAI responses 接口 | +| `POST /v1/chat/completions` | Chat completions 接口 | +| `GET /v1/models` | 模型列表 | +| `GET /v1/models/catalog` | 模型目录 | +| `/api/admin/*` | 管理端 API(前端调用) | + +```bash +curl http://127.0.0.1:8080/v1/responses \ + -H 'Authorization: Bearer ' \ + -H 'Content-Type: application/json' \ + -d '{"model": "gpt-5.5", "input": "Say hello", "stream": true}' ``` -样例配置中的默认管理端账号: +## 管理控制台 -```yaml -admin: - default_username: admin - default_password: admin -``` - -正式使用前请改掉默认密码。 - -## ✦ 管理控制台 - -前端代码在 `frontend/`。 - -开发模式: +前端是 Vue 3 单页应用,源码在 `frontend/`。开发时: ```bash pnpm --dir frontend dev ``` -生产构建: +生产构建后由后端直接托管: ```bash pnpm --dir frontend build cargo run --manifest-path backend/Cargo.toml ``` -构建后的控制台由后端直接提供,API 路由优先于静态资源。 +管理端功能包括账号管理、API Key 管理、用量仪表盘、请求记录和运行时设置。账号、Key、模型路由等运行时配置在管理端操作,不写在 YAML 里。 -## ✦ OpenAI 兼容入口 +## 配置 -```http -POST /v1/responses -POST /v1/chat/completions -GET /v1/models -GET /v1/models/catalog -``` - -示例: - -```bash -curl http://127.0.0.1:8080/v1/responses \ - -H 'Authorization: Bearer ' \ - -H 'Content-Type: application/json' \ - -d '{ - "model": "gpt-5.5", - "input": "Say hello", - "stream": true - }' -``` - -## ✦ config.yaml - -示例: +最小 `config.yaml`: ```yaml server: @@ -147,29 +92,49 @@ logging: retention_days: 14 ``` -运行数据: +完整配置项见 `deploy/config.example.yaml`,包括 TLS、WebSocket 连接池、请求指纹、账号额度策略等。 + +运行数据目录: ```text -.runtime/data/ -.runtime/logs/ +.runtime/data/ # SQLite 数据库 +.runtime/logs/ # 日志文件 ``` -账号、API Key、模型路由和运行时设置在管理端修改,不写进 YAML。 +## 架构 -## ✦ 项目结构 +```mermaid +flowchart LR + Client["客户端 / SDK"] -->|OpenAI API| Proxy["/v1/*"] + Browser["浏览器"] -->|Web| Admin["/api/admin/*"] + + subgraph Gateway["codex-proxy-rs"] + Proxy --> Auth["API Key 鉴权"] + Auth --> Dispatch["调度层
选账号 · 限并发 · 亲和性"] + Dispatch --> Transport["上游传输
HTTP SSE / WebSocket"] + Dispatch --> Pool["账号池
内存状态 + SQLite"] + Admin --> SQLite[("SQLite")] + Pool --> SQLite + end + + Transport --> Upstream["ChatGPT / Codex API"] + Proxy -.->|静态资源| SPA["Vue 3 管理端"] + Admin -.-> SPA +``` + +## 项目结构 ```text backend/ - build/ 构建脚本与版本元信息 - src/ Rust 后端源码 - tests/ 集成测试与 fixture - -frontend/ Vue 管理控制台 -deploy/ Dockerfile、Compose、部署样例配置 + src/ Rust 源码 + tests/ 集成测试 + build/ 构建脚本 +frontend/ Vue 3 管理控制台 +deploy/ Dockerfile、Compose、示例配置 docs/ 设计与迁移文档 ``` -## ✦ 开发命令 +## 开发 ```bash cargo fmt --manifest-path backend/Cargo.toml --check @@ -178,6 +143,6 @@ cargo test --manifest-path backend/Cargo.toml --test main pnpm --dir frontend build ``` -## ✦ License +## License MIT diff --git a/frontend/vite.config.ts b/frontend/vite.config.ts index 3518274f3..db6256f9e 100644 --- a/frontend/vite.config.ts +++ b/frontend/vite.config.ts @@ -26,6 +26,9 @@ export default defineConfig({ assetsDir: 'assets', chunkSizeWarningLimit: 600, rolldownOptions: { + treeshake: { + annotations: false, + }, output: { codeSplitting: { groups: [