本项目基于 dreamhunter2333/awsl-one-api 由 AI 驱动二次开发
- 基于 Cloudflare Workers:全球分布式网络、低延迟、高性能
- 统一代理入口:支持
/v1/chat/completions、/v1/messages、/v1/responses、/v1/audio/speech、/v1/models - 负载均衡路由:支持按权重路由,单渠道多 Key,失败重试、Key 轮换和跨渠道 fallback
- 配额与计费:支持 Token 级额度控制、全局模型定价、渠道级模型定价
- 观测能力:写入 Cloudflare Analytics Engine,后台提供概览、趋势、分布和用量日志检索
- 管理后台:React + Vite 管理界面,覆盖渠道、令牌、定价、API 测试、系统设置
- 管理员安全:默认管理员令牌登录,可选 Telegram 二次验证,后台登录链路带限速与 session cookie
- API 文档:基于 Chanfana 暴露 Swagger、ReDoc、OpenAPI JSON,可在系统设置中开关
| 路由 | 说明 | 对应渠道类型 |
|---|---|---|
/v1/chat/completions |
OpenAI Chat Completions 兼容代理 | openai、azure-openai、gemini |
/v1/messages |
Anthropic Claude Messages 兼容代理 | claude、claude-to-openai |
/v1/responses |
OpenAI / Azure Responses 代理 | openai-responses、azure-openai-responses |
/v1/audio/speech |
TTS 语音生成代理 | openai-audio、azure-openai-audio |
/v1/models |
按 Token 权限和额度过滤后的模型列表 | 根据 Token 可访问渠道动态返回 |
创建 D1 数据库,获取数据库 Name、ID
启用 Analytics Engine 并创建一张数据集,获取数据集 Name
将上述数据更新入 wrangler.jsonc
# 设置生产 Secret
wrangler secret put ADMIN_TOKEN
wrangler secret put CF_API_TOKEN
wrangler secret put CF_ACCOUNT_ID
# 发布 Worker
bun run deploy当前后台页面包括:
Dashboard:总请求数、成功率、成本、耗时、Token/渠道/模型/提供商分布Usage Logs:按时间范围、维度、关键字和结果筛选明细日志Channels:渠道配置、权重、自动重试/轮换、模型映射、拉取上游模型列表Tokens:API Token 管理、渠道访问范围、额度限制、用量重置Pricing:全局模型定价编辑,支持按量和按次计费API Test:直接在后台测试/v1/chat/completions、/v1/messages、/v1/responses、/v1/audio/speechSystem Settings:Telegram 管理员验证、金额显示精度、API 文档开关
one-api-workers/
├── src/
│ ├── admin/ # 管理接口:auth / channel / token / pricing / analytics / system
│ ├── analytics/ # Analytics Engine 写入与查询
│ ├── db/ # D1 初始化与迁移
│ ├── providers/ # 各类上游代理实现
│ ├── billing.ts # 计费与金额精度
│ ├── channel-config.ts # 渠道配置归一化
│ ├── system-config.ts # 系统配置与 Telegram 安全配置
│ └── index.ts # Worker 入口
├── frontend/
│ ├── src/pages/ # Dashboard / Channels / Tokens / Pricing / Usage Logs / Settings
│ ├── src/components/ # 布局、图表、UI 组件
│ └── package.json # 前端构建与 lint
├── public/ # 前端构建产物,由 Worker 直接托管
├── docs/ # 使用文档与安全文档
├── tests/ # Mock upstream + 本地 E2E 脚本
├── wrangler.jsonc # 生产配置
├── wrangler.local.jsonc # 本地 Worker 配置
├── type.d.ts # Worker 绑定与共享类型
└── package.json # 根 workspace 与开发命令
- Bun 1.3+
- Cloudflare 账户,Workers + D1 database + Analytics Engine (
usage_events_by_token)
bun install当前仓库里的 wrangler.jsonc / wrangler.local.jsonc 已经包含运行所需绑定结构,但你需要替换成自己的环境信息:
d1_databases[].database_name/database_id:替换为自己的 D1analytics_engine_datasets[].dataset:默认使用usage_events_by_tokenvars.FRONTEND_DEV_SERVER_URL:仅本地联调时使用,默认http://127.0.0.1:5173assets:保持public/与ASSETS绑定即可
当前配置中的关键 secrets:
ADMIN_TOKEN:管理员登录令牌,必需CF_API_TOKEN:用于查询 Analytics Engine SQL,支持后台分析看板和用量日志CF_ACCOUNT_ID:与CF_API_TOKEN配套,用于 Cloudflare Analytics 查询
示例:
wrangler secret put ADMIN_TOKEN
wrangler secret put CF_API_TOKEN
wrangler secret put CF_ACCOUNT_ID本地开发可以用 .dev.vars 提供这些值;tests/ 下的脚本也会优先读取这个文件。
项目会在首次请求时自动执行 D1 schema 初始化和迁移,不需要额外手动跑 SQL。
如果你希望在部署后主动触发初始化,也可以在通过管理员认证后访问:
POST /api/admin/db_initialize
启动前后端联调:
bun run dev常用地址:
- 前端 Vite 开发服务器:
http://127.0.0.1:5173 - Worker 本地服务:
http://127.0.0.1:8787
其他常用命令:
bun run dev:worker
bun run build
bun run cf-typegen
cd frontend && bun run lint欢迎提交 Issue 和 Pull Request。
MIT License
鸣谢:dreamhunter2333/awsl-one-api
如有问题或建议,请创建 Issue 或联系维护者。