把多个 Qoder 账号统一转换成 OpenAI 兼容接口的本地网关。
A local gateway that turns multiple Qoder accounts into one OpenAI-compatible API.
本项目思路来源于 cubk1/qoder2api,在此基础上用 Python 重写了后端并新增了 WebUI 管理控制台、SQLite 持久化、多账号池轮转和独立文档站。
This project is inspired by cubk1/qoder2api. We rewrote the backend in Python and added a WebUI management console, SQLite persistence, multi-account pool rotation, and a standalone documentation site.
- OpenAI 兼容接口 — 通过
/v1/chat/completions向客户端提供标准 Chat Completions API - 多账号池 — 导入多个 Qoder 账号,按 UID 自动去重,请求失败时自动轮转
- 两层鉴权 — 管理后台密钥与外部 API Key 分开配置
- SQLite 持久化 — 账号、API Key、全局配置全部存入本地数据库
- WebUI 控制台 — Dashboard、账号管理、API Key 管理、Playground、服务日志
- 独立文档站 —
/documents提供中英文 Wiki,支持本地搜索和目录跳转 - 自动检测语言 — 根据浏览器地区自动切换中文/英文
git clone https://github.com/bzym2/QoderGateway.git
cd QoderGateway
uv synccp .env.example .env编辑 .env,修改管理员密码:
QODER_ADMIN_PASSWORD=your-strong-password默认密码是
admin,强烈建议第一次登录后立即修改。
uv run qoder2api服务默认运行在 http://127.0.0.1:5050/。
| 路径 | 说明 |
|---|---|
/ |
Landing Page |
/console |
管理控制台 |
/documents |
文档站 / Wiki |
/v1/chat/completions |
OpenAI 兼容 API |
在控制台导入账号后:
curl http://127.0.0.1:5050/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "lite",
"messages": [{ "role": "user", "content": "Hello" }],
"stream": false
}'| 变量 | 说明 | 默认值 |
|---|---|---|
QODER_HOST |
服务绑定地址 | 127.0.0.1 |
QODER_PORT |
服务端口 | 5050 |
QODER_ADMIN_PASSWORD |
管理员密码(覆盖 SQLite 存储值) | admin |
QODER_PROXY |
出站代理地址 | 空 |
QODER_ENABLE_DOCUMENTS |
是否启用文档页 | 1 |
QODER_ENABLE_LANDING |
是否启用 Landing Page | 1 |
QODER_PAT |
首次启动时自动导入的 PAT | 空 |
├── src/qoder2api/ # Python 后端
│ ├── app.py # FastAPI 路由
│ ├── accounts.py # SQLite 账号管理
│ ├── auth.py # Qoder 鉴权与签名
│ ├── bridge.py # OpenAI 兼容响应转换
│ ├── config.py # 配置读写
│ ├── database.py # SQLite schema
│ ├── env.py # 环境变量加载
│ └── static/ # 前端构建产物
├── frontend/ # React 前端源码
│ ├── src/App.tsx # 管理控制台
│ ├── src/docs-main.tsx # 文档站
│ ├── src/landing-main.tsx# Landing Page
│ └── src/docs/ # 中英文 Markdown 文档
├── .env.example # 环境变量模板
└── pyproject.toml # 项目配置
MIT